{"version":3,"sources":["webpack:///./WebApp/utility/tools/ele.js","webpack:///./WebApp/libs/google-maps-api.js","webpack:///./WebApp/utility/dom.js","webpack:///./WebApp/polyfills/requirements.js","webpack:///./WebApp/assets/icons.js","webpack:///./WebApp/app/session.js","webpack:///./WebApp/utility/tools.js","webpack:///./WebApp/libs/big.js","webpack:///./WebApp/api/auth-transfer.js","webpack:///./WebApp/utility/tools/url.js","webpack:///./WebApp/utility/tools/date.js","webpack:///./WebApp/utility/wait.js","webpack:///./WebApp/api/api.js","webpack:///./WebApp/libs/tesseract.js","webpack:///./WebApp/app/router.js","webpack:///./WebApp/assets/icons.html.js","webpack:///./WebApp/utility/tools/convert.js","webpack:///./WebApp/utility/tools/file.js","webpack:///./WebApp/utility/dialog.js","webpack:///./WebApp/utility/tools/template.js","webpack:///./WebApp/polyfills/polyfills.js","webpack:///./WebApp/utility/format.js","webpack:///./WebApp/api/auth.js","webpack:///./WebApp/utility/enqueue.js","webpack:///./WebApp/app/log.js","webpack:///./WebApp/utility/tools/validate.js","webpack:///./WebApp/utility/tools/obj.js","webpack:///./WebApp/app/config.js","webpack:///./WebApp/utility/defineElement.js","webpack:///./WebApp/libs/StoredGlobal.js","webpack:///./WebApp/utility/patterns.js","webpack:///./WebApp/utility/toast.js","webpack:///./WebApp/utility/debounce.js"],"names":["ele","path","elementNode","node","parentNode","name","tagName","nodeName","toLowerCase","startsWith","host","push","_nameOfInitCallback","_srcMapsApi","config","serviceKeys","googleAPI","loader","Promise","resolve","window","google","api","maps","script","document","createElement","src","container","querySelector","body","insertBefore","dom","deepTargetFind","x","y","elementFromPoint","next","shadowRoot","ShadyDOM","oldNext","hasIn","keys","i","length","allSatisfied","Array","prototype","Function","Math","Number","Object","RegExp","String","requirements","innerHTML","template","appendChild","STORAGEKEY_USERREFRESHED","MINIMUM_REFRESHPERIOD","hUserRefreshTimeout","session","user","StoredGlobal","constructor","uniqueID","_cachedData","accountID","isSuper","displayName","preferences","checkPermission","lookup","logWhenDenied","granted","_checkPermission","permissions","log","warning","refresh","params","_refreshUser","signOut","auth","finally","_","set","signInTransferToken","userId","transferToken","then","_handleSignInResponse","catch","_handleSignInException","signInAdmin","username","password","signIn","addEventListener","result","ok","data","ex","forceRefresh","valid","localStorage","removeItem","currentMS","Date","now","ellapsedMS","getItem","refreshWhenEllapsed","refreshPeriodMS","setItem","error","_refreshUserOnInterval","clearInterval","period","setInterval","addChangeListener","match","permissionAllowed","p","Big","DP","RM","phoenixAdminAuthApi","endpoints","phoenixAdmin","isAuthAlreadyOnPhoenixAdmin","fetch","method","mode","cache","credentials","text","resultText","getTransferTokenPromise","putTransferTokenOnPhoenixAdmin","createFormData","id","token","response","status","fieldsObject","formFields","FormData","k","append","transfer","toPhoenixAdmin","alreadyAuthenticated","_cached","query","raw","hash","_cachedParse","rawParamsStr","_parse","input","split","map","pair","trim","reduce","results","key","val","values","cleanVal","decodeURIComponent","replaceAll","_filterCopy","_mutate","mutator","_castValue","type","Boolean","JSON","parse","_getParams","parsedKeyValues","opts","multival","cast","vals","v","url","getAllParams","getParams","getParam","Error","location","search","slice","getAllHashParams","getHashParams","getHashParam","assemble","isArray","filter","element","undefined","hasOwnProperty","join","paramKeys","indexOf","value","encodeURIComponent","stringify","substring","createFriendlyUrl","code","words","replace","fromUTC","utcDate","endsWith","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","toStringUTC","localDate","asTwoDigits","n","year","getUTCFullYear","month","getUTCMonth","date","getUTCDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","addMilliseconds","differenceInMilliseconds","isBefore","isAfter","isEqual","isFuture","isPast","distanceInWords","distanceInWordsStrict","distanceInWordsToNow","format","dateFormat","formatToString","whenVisible","callback","maxWaitPeriodMS","startMS","afterNextRender","clientWidth","style","visibility","remainingMS","FetchOptions","options","assign","headers","Headers","includeAuth","addAuthorizationHeader","resultPromise","contentType","get","contentDisposition","exJson","critical","message","exText","request","endpoint","route","allowRefresh","dataInvalid","exceptions","ForbiddenException","UnauthorizedException","postLog","commonAPI","console","_get","urlTool","_post","_put","_del","_getAdmin","adminAPI","_postAdmin","_putAdmin","_delAdmin","post","put","del","admin","TesseractPromise","URLPARAM_RETURNURL","router","init","settings","base","page","ctx","_tryTypifyProperties","start","stop","onLoad","_len","arguments","callbacks","_key","_wrapCallbacks","onLoadReplace","replacementPath","redirect","onExit","_len2","_key2","exit","current","test","end","rxPath","getReturnPath","fallback","_getReturnPath","navigate","returnPath","pathname","newUrl","href","goto","_cleanReturnPath","show","return","fallbackPath","back","fallbackState","noRouting","history","replaceState","state","pushState","pushback","currentState","currentPath","RX_TYPIFY_NUMBER","props","isNaN","wrappedCallbacks","f","context","_wrapCallbacks_next","r","matches","origin","RegEx","convert","toDecimal","defaultValue","err","base64ToArrayBuffer","base64","binaryString","atob","binaryLen","bytes","Uint8Array","ascii","charCodeAt","base64ToBlob","content","sliceSize","byteCharacters","byteArrays","offset","byteNumbers","byteArray","blob","Blob","urlToBlobXHR","reject","xhr","XMLHttpRequest","open","responseType","onerror","onload","statusText","send","dataURItoBlob","dataURI","byteString","unescape","mimeString","ia","file","save","fileData","fileName","wurl","URL","webkitURL","createObjectURL","objectUrl","anchor","setAttribute","click","revokeObjectURL","reduceFileSize","acceptFileSize","maxWidth","maxHeight","quality","_initializeToBlob","size","img","Image","_getExifOrientation","orientation","w","width","h","height","scale","min","round","canvas","_imgToCanvasWithOrientation","toBlob","HTMLCanvasElement","defineProperty","binStr","toDataURL","len","arr","webkitSlice","reader","FileReader","e","view","DataView","target","getUint16","byteLength","marker","getUint32","little","tags","readAsArrayBuffer","rawWidth","rawHeight","getContext","transform","drawImage","_elements","dialog","header","actions","_currentActionKeys","actionKeys","init_createDialog","init_setHeader","init_setContent","init_setActions","init_setActionKeys","classList","add","tabIndex","handleKeydown","firstChild","dialogPolyfill","registerDialog","innerText","hidden","root","DocumentFragment","Element","init_addAction","primaryButton","lastElementChild","index","button","_ev","close","splice","openDialog","showModal","querySelectorAll","forEach","blur","ev","includes","preventDefault","_callback","res","choice","reopen","stampAndReplace","templateElement","initData","templateInstance","templatize","templateStamp","frag","replaceWith","resolveIf","b","promiseScript","async","s","head","WebComponents","polyfills","es5","all","waitFor","vaadinDatePickerI18N_parseDate","parts","today","parseInt","day","vaadinDatePickerI18N","monthNames","weekdays","weekdaysShort","firstDayOfWeek","week","calendar","clear","cancel","formatDate","toISOString","yearStr","substr","parseDate","formatTitle","monthName","fullYear","address","addressParts","part","phone","phoneNumber","reverse","str","revNumber","digitsOnly","string","numberWithCommas","toString","currency","amount","removeCommas","minFractionDigits","maxFractionDigits","negativeAsBrackets","parseFloat","toFixed","formattedCurrency","toLocaleString","minimumFractionDigits","maximumFractionDigits","rate","dealRate","rates","Format","RangeStart","RangeEnd","IsPercent","Rate","rateSeperator","dateWMDY","dateString","toDateString","d","dateUTC","timeZone","dateTime","vaadinDatePicker","dateMMDDYYYY","dateRange","startDate","endDate","separator","format_date","lot","alot","showNegativeLot","lotWithSession","sessionDate","lotWithSessionTooltip","sessionTitle","jmWood_Description","make","companyAttribute","model","categoryID","categoryNameSingular","categoryName","vin","serialNumber","inventoryDescription","mileage","additionalInfo1","additionalInfo2","notes","showTilde","richTextFormat","boldYearCompanyMakeModel","filterCategoryIDs","category","toUpperCase","yearMakeCompanyModelCategory","tilde","startBold","endBold","desc","bidderName","salutation","fname","mname","lname","suffix","withoutHtml","inputStringWithHtml","brTagReplacement","ArgumentsInvalidException","UnexpectedException","dispatchEvent","Event","has","clearToken","storageKeys","authToken","getToken","storeToken","_ref","transferTokenCallback","authAPI","handleAuthResponse","processAuthResult","pass","isAdmin","payload","User","Pass","IsAdmin","SiteId","siteId","UserId","TransferToken","json","transferAdmin","_globalQueues","enqueue","queueKey","task","queue","EnQueue","_queue","_promiseDone","_promiseDoneResolver","shift","_add","_start","prevValue","resultVal","_next","SEVERITY","DEBUG","WARNING","ERROR","CRITICAL","_outputLog","severity","_recordLog","Severity","Name","Message","Path","_performLog","isDebug","_logDebug","_logWarning","_logError","_logCritical","debug","validate","isValidDate","monthLength","isNumeric","isFinite","isEmail","email","obj","is","alike","v1","v2","propsToCompare","p1","p2","deepCopy","inObject","outObject","environment","maxRequestSizeMB","isDevelopment","lag","isProduction","isStaging","otherEnvironment","addHelperMembers","prototypeObject","membersMap","defineElement","elementClass","helpers","asBool","isNull","isSame","isSimilar","isAny","args","a","isAll","ifThen","vIf","vThen","vElse","ifSameThen","vSame","patterns","customElements","define","initialValue","_storageKey","_changeListeners","_load","_initStorageChangeListenerAndAddInstance","isKeyValid","_getValueCopy","_triggerChangeListeners","listener","removeChangeListener","c","storedData","dataCopy","instance","_instances","sg","phoneAllowed","dateAllowed","currencyAllowed","currencyWithCommas","SHARED","containerID","timeout","fadeout","color","background","boxShadow","STYLES","_getContainer","getElementById","createTextNode","_addToast","msg","eleContainer","eleBlock","eleToast","setTimeout","remove","toast","defaults","_globalLookup","_getGlobalDebouncer","debouncer","_createDebouncer","_deleteGlobalDebouncer","Debouncer","_final","debounce","immediateTask","isActive","_result","resolver","_finalResolver","timeOut","after"],"mappings":"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","file":"common._7f1e062c6e9ce5cc0177.js","sourcesContent":["export const ele = {\r\n /* ele.path(elementNode)\r\n * Gets an array of the element's path hierarchy, similar to Event.prototype.composedPath()\r\n * except without needing an Event. This supports traversing 'meta nodes'\r\n * such as #shadow-root, #document-fragement, and #text.\r\n * Results in an array with each normal (not 'meta') element's tagName||nodeName in lower-case.\r\n * The array does NOT include the initial element's name.\r\n * eg: ['thisElementsParent', 'thisElementsParentsParent', ...]\r\n * An empty array will be returned if no parents exist.\r\n */\r\n path(elementNode) {\r\n let path = [],\r\n node = elementNode.parentNode;\r\n\r\n while (node) {\r\n let name = node.tagName || node.nodeName;\r\n name = name && name.toLowerCase();\r\n\r\n if (!name || name.startsWith('#')) // #document-fragment, #shadow-root, #text etc\r\n node = node.host;\r\n else { // otherwise 'normal' element, add to path array and continue with parent\r\n path.push(name);\r\n node = node.parentNode;\r\n }\r\n }\r\n\r\n return path;\r\n }\r\n};","import { config } from '../app/config.js';\r\n\r\nconst _nameOfInitCallback = 'lagweblibs_googlemapsapi_init';\r\nconst _srcMapsApi = 'https://maps.googleapis.com/maps/api/js?key=' + config.serviceKeys.googleAPI + '&libraries=places&callback=' + _nameOfInitCallback;\r\n// To obtain an API key, see https://developers.google.com/maps/documentation/javascript/tutorial#api_key.\r\n\r\nexport const loader = new Promise((resolve) => {\r\n // If already loaded then just resolve.\r\n if (window.google && window.google.api)\r\n resolve(window.google.api);\r\n else {\r\n // Create google maps api callback (when ready), which triggers promise resolution.\r\n window[_nameOfInitCallback] = function () {\r\n resolve(window.google.maps);\r\n };\r\n\r\n // Inject script tag into document to load maps api.\r\n const script = document.createElement('script');\r\n script.src = _srcMapsApi;\r\n const container = document.querySelector('script') || document.body;\r\n container.parentNode.insertBefore(script, container);\r\n }\r\n});","export const dom = {\r\n /**\r\n * Finds the element rendered on the screen at the provided coordinates.\r\n * Similar to document.elementFromPoint, but pierces through shadow roots.\r\n * \r\n * @param {number} x The X coordinate of the element (horizontal)\r\n * @param {number} y The Y coordinate of the element (vertical)\r\n * Returns the element rendered at the point\r\n */\r\n deepTargetFind(x, y) {\r\n let node = document.elementFromPoint(x, y);\r\n let next = node;\r\n // this code path is only taken when native ShadowDOM is used\r\n // if there is a shadowroot, it may have a node at x/y\r\n // if there is not a shadowroot, exit the loop\r\n while (next && next.shadowRoot && !window.ShadyDOM) {\r\n // if there is a node at x/y in the shadowroot, look deeper\r\n let oldNext = next;\r\n next = next.shadowRoot.elementFromPoint(x, y);\r\n // on Safari, elementFromPoint may return the shadowRoot host\r\n if (oldNext === next) {\r\n break;\r\n }\r\n if (next) {\r\n node = next;\r\n }\r\n }\r\n return node;\r\n }\r\n};","/* eslint-disable */\r\n\r\nconst hasIn = (keys, container) => {\r\n for (var i = 0; i < keys.length; ++i) {\r\n if (!(keys[i] in container))\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst allSatisfied =\r\n hasIn(['ArrayBuffer', 'Array', 'Map', 'Promise', 'Reflect', 'Set', 'Symbol', 'WeakMap', 'WeakSet'], window) &&\r\n hasIn(['from', 'of'], Array) &&\r\n hasIn(['copyWithin', 'fill', 'find', 'findIndex'], Array.prototype) &&\r\n hasIn(['name'], Function) &&\r\n hasIn(['acosh', 'hypot', 'imul'], Math) &&\r\n hasIn(['isNaN', 'isInteger'], Number) &&\r\n hasIn(['assign', 'getOwnPropertyDescriptors', 'is', 'entries', 'values', 'setPrototypeOf'], Object) &&\r\n hasIn(['flags'], RegExp.prototype) &&\r\n hasIn(['fromCodePoint', 'raw'], String) &&\r\n hasIn(['codePointAt', 'endsWith', 'includes', 'repeat', 'startsWith', 'padStart', 'padEnd'], String.prototype);\r\n\r\nexport const requirements = {\r\n allSatisfied\r\n};","import { template } from './icons.html.js';\r\n\r\n// ============================================================================\r\n// Add the markup to the document.\r\n\r\nimport '@polymer/iron-iconset-svg/iron-iconset-svg.js';\r\n\r\n// Add the markup to the document so it can be consumed by iron-iconset-svg (via iron-icon elements).\r\nconst container = document.createElement('div');\r\ncontainer.innerHTML = template;\r\ndocument.body.appendChild(container);","/* Global session/user data access manager/container.\r\n * ============================================================================\r\n *\r\n * This contains general session data across apps. Other app-specific globals\r\n * should be put in their respective app's globals file instead.\r\n *\r\n * Note that we use the StoredGlobal's \"private\" _cachedData member in this code\r\n * to get direct access to values for efficiency reasons, otherwise we'd have to\r\n * call get() which creates a copy. This is ok here because we know what the\r\n * data is and we wont let it be mutated directly (we just use the values).\r\n */\r\n\r\nimport { StoredGlobal } from '../libs/StoredGlobal.js';\r\nimport { api } from '../api/api.js';\r\nimport { log } from './log.js';\r\n\r\nconst STORAGEKEY_USERREFRESHED = 'lag:session.userRefreshedMS';\r\nconst MINIMUM_REFRESHPERIOD = 60000; // 60s\r\n\r\nlet hUserRefreshTimeout; // Handle/ID of refresh timeout.\r\n\r\nexport const session = {\r\n user: new class extends StoredGlobal {\r\n constructor() { super('user'); }\r\n\r\n get uniqueID() { return this._cachedData && this._cachedData.uniqueID; }\r\n get accountID() { return this._cachedData && this._cachedData.accountID; }\r\n get isSuper() { return !!(this._cachedData && this._cachedData.isSuper); }\r\n get displayName() { return this._cachedData && this._cachedData.displayName; }\r\n get preferences() { return (this._cachedData && this._cachedData.preferences) || {}; }\r\n // refreshPeriodMS: don't need app to access this piece of data, it is handled in code below.\r\n // permissions: don't need app to access this piece of data directly, but can use checkPermission method.\r\n\r\n /**\r\n * Check if the specified permission lookup is allowed for the current user.\r\n * This call should NOT be considered authorative, nor secure.\r\n * Any secure operation must be checked server side (and possibly in Database),\r\n * this check method simply allows us to avoid going to the server by knowing if permission is denied.\r\n * @param {String} lookup - The permission lookup to check for this current user.\r\n * @param {Boolean} [logWhenDenied] - If true specified then a denial will be logged to error log.\r\n */\r\n checkPermission(lookup, logWhenDenied) {\r\n const granted = _checkPermission(lookup, this._cachedData && this._cachedData.permissions);\r\n\r\n if (logWhenDenied && !granted) {\r\n log.warning(`session.user.checkPermission:DENIED (${lookup})`);\r\n }\r\n\r\n return granted;\r\n }\r\n },\r\n\r\n /**\r\n * Refresh the user session with provided parameters.\r\n * This is useful to set certain preferences (via params) such as accountID (for superAdmins).\r\n * @param {Object} params - Bag of params to pass to the auth refresh API.\r\n */\r\n refresh(params) {\r\n return _refreshUser(true, params);\r\n },\r\n /**\r\n * Sign-out (via API) and clear the stored session user data,\r\n * this will cause any change event listeners on the user to be triggered (assuming user isn't already signed-out).\r\n */\r\n signOut() {\r\n api.auth.signOut()\r\n .finally(_ => { session.user.set(null); });\r\n },\r\n signInTransferToken(userId, transferToken) {\r\n return api.auth.signInTransferToken(userId, transferToken)\r\n .then(_handleSignInResponse)\r\n .catch(_handleSignInException);\r\n },\r\n signInAdmin(username, password) {\r\n return api.auth.signInAdmin(username, password)\r\n .then(_handleSignInResponse)\r\n .catch(_handleSignInException);\r\n },\r\n signIn(username, password) {\r\n return api.auth.signInAdmin(username, password)\r\n .then(_handleSignInResponse)\r\n .catch(_handleSignInException);\r\n }\r\n};\r\n\r\n// Handle unauthorized event which is fired by api.auth.\r\nwindow.addEventListener('api.auth.exceptions.UnauthorizedException', () => { session.user.set(null); });\r\n\r\nfunction _handleSignInResponse(result) {\r\n if (result.ok) {\r\n session.user.set(result.data);\r\n }\r\n else {\r\n session.user.set(null);\r\n }\r\n\r\n return result;\r\n}\r\nfunction _handleSignInException(ex) {\r\n api.auth.signOut();\r\n session.user.set(null);\r\n throw ex;\r\n}\r\n\r\nfunction _refreshUser(forceRefresh, params) {\r\n // No user info, no point in trying to refresh, just resolve.\r\n if (!session.user.valid) {\r\n localStorage.removeItem(STORAGEKEY_USERREFRESHED);\r\n return Promise.resolve(false);\r\n }\r\n else if (forceRefresh) {\r\n localStorage.removeItem(STORAGEKEY_USERREFRESHED);\r\n }\r\n\r\n // Calculate ellapsed time since last refresh.\r\n const currentMS = Date.now();\r\n const ellapsedMS = currentMS - (localStorage.getItem(STORAGEKEY_USERREFRESHED) || 0);\r\n\r\n // The threshold when we want to refresh. We use the half the refresh period as specified by AuthAPI.\r\n let refreshWhenEllapsed = (session.user._cachedData.refreshPeriodMS || 0) / 2;\r\n // Check refresh threshold is not below some small period just to protect against refreshPeriodMS being\r\n // super small by accident and causing crazy refresh cycles.\r\n if (refreshWhenEllapsed < MINIMUM_REFRESHPERIOD) {\r\n refreshWhenEllapsed = MINIMUM_REFRESHPERIOD;\r\n }\r\n\r\n // If the ellapsedTime is below the refresh period then no need to refresh, exit.\r\n if (ellapsedMS < refreshWhenEllapsed) {\r\n return Promise.resolve(false); // No need to refresh now.\r\n }\r\n\r\n // Otherwise we will refresh...\r\n\r\n // Update refreshed time for future refresh period checks, so we don't call refresh too often.\r\n localStorage.setItem(STORAGEKEY_USERREFRESHED, currentMS);\r\n\r\n // Do the refresh.\r\n return api.auth.refresh(params).then(result => {\r\n if (!result.ok) {\r\n // Clear data.\r\n session.user.set(null);\r\n return false;\r\n }\r\n else {\r\n // Save user data.\r\n session.user.set(result.data);\r\n return true;\r\n }\r\n }).catch(ex => {\r\n log.error('lag.app.session._refreshUser{refresh-catch}', ex);\r\n session.user.set(null);\r\n return false;\r\n });\r\n}\r\n\r\n// Refresh the user data from API if a certain period of time has passed, to make sure the session data isn't stale.\r\nfunction _refreshUserOnInterval() {\r\n clearInterval(hUserRefreshTimeout);\r\n\r\n // If no user then abort, there is no point in refreshing nothing.\r\n if (!session.user.valid)\r\n return;\r\n\r\n const period = session.user._cachedData.refreshPeriodMS;\r\n\r\n if (period < MINIMUM_REFRESHPERIOD) {\r\n log.error('lag.app.session._refreshUserOnInterval{small period}', period);\r\n }\r\n\r\n hUserRefreshTimeout = setInterval(_refreshUser, period);\r\n}\r\n\r\n// If the user changes (ie user signs-in/etc) then re-call _refreshUserOnInterval to reset the interval appropriately.\r\nsession.user.addChangeListener(_refreshUserOnInterval);\r\n// If the user is already valid then start-up the refresh interval immediately.\r\nif (session.user.valid) {\r\n _refreshUserOnInterval();\r\n}\r\n\r\nfunction _checkPermission(lookup, permissions) {\r\n // No permissions or invalid lookup, so deny.\r\n if (!permissions || !lookup || !lookup.length || !lookup.match(/^[a-z]+:([a-z][a-z0-9_]*[a-z0-9]\\/?)+/)) {\r\n return false;\r\n }\r\n\r\n // Checks the specified permission lookup (should be similar to PermissionsSet.Check code),\r\n // the permission must exist, must be allowed (true), and must not have another entry of same lookup value or higher-level lookup value with deny (false)...\r\n\r\n let permissionAllowed = false; // Default to false (deny).\r\n\r\n for (const p in permissions)\r\n {\r\n // Check if the lookup is a match (exactly or as a child of the current permission), if not then ignore and continue to next permissions.\r\n if (!lookup.match(`^${p}(\\/.+)?$`)) { continue; }\r\n\r\n // If it is a Deny permissions then deny, no need to check anymore permissions.\r\n // Deny permissions always superceed any allow permissions.\r\n if (permissions[p] == false) { return false; }\r\n else // Otherwise we have an allow permission, remember that but keep looping in case there is a deny permission that will superceed it.\r\n { permissionAllowed = true; }\r\n }\r\n\r\n // An allow was found without any superceeding deny or no matching permission was found and we default to deny.\r\n return permissionAllowed;\r\n}","export { file } from './tools/file.js';\r\nexport { url } from './tools/url.js';\r\nexport { date } from './tools/date.js';\r\nexport { obj } from './tools/obj.js';\r\nexport { ele } from './tools/ele.js';\r\nexport { convert } from './tools/convert.js';\r\nexport { validate } from './tools/validate.js';\r\nexport { template } from './tools/template.js';","import { default as Big } from 'big.js';\r\n\r\n/* Use Big object to create and manage decimal values, see: https://github.com/MikeMcl/big.js\r\n * This file is a proxy for the actual big.js file but ensures it is configured in a standard way for our apps.\r\n */\r\n\r\n// Division precision. The precision (decimal places) to round at when doing a division operation.\r\nBig.DP = 20; // Max allowed by Big.js is 20.\r\n\r\n// Rounding mode. How to round (ie up or down when 1/2 of rounding precision).\r\n// See: http://mikemcl.github.io/big.js/#rm\r\nBig.RM = 2; // 2: Half-even-rounding, aka banker's rounding. Least biased rounding, good for financial applications.\r\n\r\nexport { Big };","/*************************************************************************\\\r\nProvides 'special' auth transfer functionality (via transfer tokens),\r\nwhere a single-use 'transfer token' is created using the current (griffin)\r\nauth session and sent to another origin (domain) which will then verify the\r\ntoken and (if valid) create an auth session on that other domain.\r\n\r\nThis functionality allows for the user to avoid having to sign-in multiple\r\ntimes when transfering between origins (domains).\r\n\r\nThis functionality should (hopefully) only be needed while legacy systems\r\nare operating (ie phoenix), once everything uses (griffin) APIs then we\r\nshouldn't need these except possibly for special purpose scenarios.\r\n\\*************************************************************************/\r\n\r\nimport { config } from '../app/config.js';\r\nimport { log } from '../app/log.js';\r\n\r\nconst phoenixAdminAuthApi = config.endpoints.phoenixAdmin + 'auth.api';\r\n\r\nfunction isAuthAlreadyOnPhoenixAdmin() {\r\n // Get the current auth status on phoenix/admin, if already auth'd then don't need to do it again.\r\n return fetch(phoenixAdminAuthApi, {\r\n method: 'get',\r\n mode: 'cors',\r\n cache: 'no-store',\r\n credentials: 'include'\r\n })\r\n // Either null (if failure) or a promise to get result data as a string.\r\n .then(function (result) { return !result.ok ? null : result.text() })\r\n // Return if already is authenticated on phoenix/admin, or if not.\r\n .then(function (resultText) { return resultText && resultText.match(/\"AuthSuccess\"/i); }); // See phoenix/libauth/AuthHandler.cs (AuthSuccess & AuthFailure)\r\n};\r\n\r\nfunction getTransferTokenPromise(refresh) {\r\n return new Promise(function (resolve) {\r\n // Refresh our current (griffin) auth session AND specify a transferTokenCallback\r\n // which will cause the refresh to create a transfer token and call the callback once ready.\r\n refresh(resolve);\r\n });\r\n}\r\nfunction putTransferTokenOnPhoenixAdmin(data) {\r\n if (!data || !data.uniqueID || !data.transferToken) {\r\n log.error('auth-transfer.authTransferTokenOnPhoenixAdmin{token failure}', data);\r\n return false; // Failure\r\n }\r\n else {\r\n // Otherwise the transfer token was retrieved so we can now\r\n // put it on phoenix/admin to create the auth session there.\r\n return fetch(phoenixAdminAuthApi, {\r\n method: 'put',\r\n mode: 'cors',\r\n cache: 'no-store',\r\n credentials: 'include',\r\n body: createFormData({\r\n id: data.uniqueID,\r\n token: data.transferToken\r\n })\r\n })\r\n .then(function (response) {\r\n if (response.ok)\r\n return true;\r\n else {\r\n log.error('auth-transfer.authTransferTokenOnPhoenixAdmin{put failure}', response.status);\r\n return false;\r\n }\r\n });\r\n }\r\n}\r\nfunction createFormData(fieldsObject) {\r\n const formFields = new FormData();\r\n for (const k in fieldsObject) {\r\n formFields.append(k, fieldsObject[k]);\r\n }\r\n return formFields;\r\n}\r\n\r\nexport const transfer = {\r\n toPhoenixAdmin(refresh) {\r\n return isAuthAlreadyOnPhoenixAdmin()\r\n .then(function (alreadyAuthenticated) {\r\n if (alreadyAuthenticated)\r\n return true;\r\n else\r\n return getTransferTokenPromise(refresh)\r\n .then(putTransferTokenOnPhoenixAdmin);\r\n })\r\n .catch(function (ex) {\r\n log.error('auth-transfer.transfer.toPhoenixAdmin{exception}', ex);\r\n return false;\r\n });\r\n }\r\n};","/**\r\n * Supported types for URL param value casting.\r\n * @typedef {!(StringConstructor|NumberConstructor|BooleanConstructor|ObjectConstructor)} SupportedParamCastType\r\n * @typedef {(String|Number|Boolean|Object)} SupportedParamValueType\r\n */\r\n\r\n/**\r\n * Global cached (query & hash) param values which can be re-used instead of parsing every time.\r\n * raw: The original input string before being parsed (eg location.search or location.hash), used to detect if we need to reparse.\r\n * params: The object containing parsed params (eg: { 'k1':['v1'], 'k2':['v2'], 'k3':['v3a','v3b',v3c'] }).\r\n */\r\nconst _cached = {\r\n query: {\r\n raw: null,\r\n params: null\r\n },\r\n hash: {\r\n raw: null,\r\n params: null\r\n }\r\n};\r\n\r\nfunction _cachedParse(cache, rawParamsStr) {\r\n // URL has not changed since last call, just use what we already have.\r\n if (cache.raw === rawParamsStr)\r\n return cache.params;\r\n // else need to re-parse.\r\n\r\n cache.raw = rawParamsStr;\r\n cache.params = _parse(rawParamsStr);\r\n\r\n return cache.params;\r\n}\r\nfunction _parse(input) {\r\n // Parse the input string (query/hash) and store as an array of key:[values,...] pairs.\r\n // The values are stored as an array to support multiple values: k1=v1&k1=v2&k1=v3 -> k1=[v1,v2,v3].\r\n return input // \"k1=v1&k2=v2\"\r\n .split('&') // Split on ampersands (['k1=v1', 'k2=v2']).\r\n .map((p) => {\r\n const pair =\r\n p.split('=') // Split to pairs 'k1=v1' -> ['k1','v1'].\r\n .map((x) => x.trim()); // Trim whitespace.\r\n\r\n // Make sure there is a pair and the first (key) is not empty.\r\n if (pair.length <= 0 || pair[0].length === 0) {\r\n return null;\r\n }\r\n\r\n // If only one element in the pair then no value was specified, add null value.\r\n if (pair.length === 1) {\r\n pair.push(null);\r\n }\r\n\r\n return pair;\r\n })\r\n .reduce((results, p) => {\r\n // Check if p is valid, it might be null if the param was invalid (see map above).\r\n if (p) {\r\n const key = p[0].toLowerCase(),\r\n val = p[1];\r\n\r\n let values = results[key]; // Get existing values for the key.\r\n\r\n // No existing values for the key, yet.\r\n if (!values) {\r\n values = results[key] = []; // Create empty array and set as values for the key in results.\r\n }\r\n\r\n // Add the value to the key's values (decodeURIComponent will stringify null => 'null' which we dont want).\r\n if (val === null) values.push(val);\r\n else {\r\n const cleanVal = decodeURIComponent(val).replaceAll('+', ' ').trim(); // Manually convert '+' to space, not sure why decodeURIComponent does not do it automatically.\r\n values.push(cleanVal);\r\n }\r\n }\r\n // else don't add the invalid param.\r\n\r\n return results;\r\n }, {});\r\n}\r\n\r\nfunction _filterCopy(params, key) {\r\n if (key)\r\n return { [key]: params[key] };\r\n else\r\n return { ...params };\r\n}\r\n\r\nfunction _mutate(params, mutator) {\r\n for (const key in params) {\r\n params[key] = mutator(params[key]);\r\n }\r\n}\r\n\r\nfunction _castValue(val, type) {\r\n switch (type) {\r\n case Number:\r\n return Number(val);\r\n\r\n case Boolean:\r\n return val === 'true' || (val !== '0' && val !== 'false' && Boolean(val));\r\n\r\n case Object:\r\n return val ? JSON.parse(val) : val;\r\n\r\n case String:\r\n default:\r\n return val;\r\n }\r\n}\r\n\r\nfunction _getParams(parsedKeyValues, key, opts) {\r\n // Argument overloading (opts) without key, ie get all params.\r\n if (typeof key === 'object' && !opts) {\r\n opts = key;\r\n key = null;\r\n }\r\n\r\n // Default opts.\r\n opts = {\r\n multival: true,\r\n cast: null,\r\n ...opts\r\n };\r\n\r\n // Copy the params and filter per the specified key (or all if no key specified).\r\n // A copy is necessary so we can mutate it without changing the global.\r\n const params = _filterCopy(parsedKeyValues, key); // { k1: [k1v1, k1v2], k2: [k2v1], ... }\r\n\r\n // If a cast is specified then attempt to cast all the values.\r\n if (opts.cast) {\r\n _mutate(params, vals => vals && vals.length ? vals.map(v => _castValue(v, opts.cast)) : null);\r\n }\r\n\r\n // If multival is falsey then we discard multiple values.\r\n if (!opts.multival) {\r\n _mutate(params, vals => vals && vals.length ? vals[0] : null); // [1,2,3] => 1\r\n }\r\n\r\n // If a specific key was specified then we should already just have that {key:value} due to the above filtering,\r\n // but no need for the container object or the key, just return the value.\r\n if (key)\r\n return params[key];\r\n else\r\n return params; // Otherwise we return all the params.\r\n}\r\n\r\nexport const url = {\r\n /**\r\n * Get all URL query params as a dictionary (object of key-value pairs).\r\n * \r\n * @param {object} [opts] Parsing options, see getParams function for more info.\r\n */\r\n getAllParams(opts) {\r\n return this.getParams(null, opts);\r\n },\r\n /**\r\n * Get a single value for a specific query param (per the specified key).\r\n * \r\n * @param {string} key The name of the query param you want the value for.\r\n * @param {object} [opts] Parsing options, see getParams function for more info. This call forces opts.multivar=false.\r\n */\r\n getParam(key, opts) {\r\n if (!key || !key.length)\r\n throw new Error('Invalid Argument: tools.url.getParam(key) argument \"key\" not provided.');\r\n\r\n return this.getParams(key, { ...opts, multival: false });\r\n },\r\n /**\r\n * Get an array of value(s) for a specific query param (per the specified key).\r\n * \r\n * Although not common, multiple values can be specified for a query param.\r\n * If multiple values are passed as separate params with the same name (eg: ?p=1&p=2&p=3)\r\n * this function will get them all and return them in an array ([1,2,3]).\r\n * If multiple values are passed as a list of values for a single param (eg: ?p=1,2,3)\r\n * this is considered a single value and is left for you to parse as desired (eg: \"1,2,3\").\r\n * \r\n * This function can be called without the key, and only the opts argument (which is itself optional)\r\n * and it will output an object of all params, this behaviour is identical to getAllParams.\r\n * \r\n * Optional parsing options include:\r\n * {\r\n * multival:boolean = If false then the array of values will be replaced with the first value, eg [1,2,3] => 1\r\n * cast:type = If a type is specified (Number,Boolean,etc) then an attempt to cast all the values into that type will be made.\r\n * }\r\n * \r\n * @param {string} key The name of the query param you want the value(s) for.\r\n * @param {object} [opts] Parsing options, see above for more info.\r\n */\r\n getParams(key, opts) {\r\n // Get the parsed params (caches the values and re-use when possible).\r\n const params = _cachedParse(_cached.query, location.search.slice(1)); // Slice off the first char (?).\r\n return _getParams(params, key, opts);\r\n },\r\n\r\n /**\r\n * Get all URL hash params as a dictionary (object of key-value pairs).\r\n * \r\n * @param {object} [opts] Parsing options, see getHashParams function for more info.\r\n */\r\n getAllHashParams(opts) {\r\n return this.getHashParams(null, opts);\r\n },\r\n /**\r\n * Get a single value for a specific hash param (per the specified key).\r\n * \r\n * @param {string} key The name of the hash param you want the value for.\r\n * @param {object} [opts] Parsing options, see getHashParams function for more info. This call forces opts.multivar=false.\r\n */\r\n getHashParam(key, opts) {\r\n if (!key || !key.length)\r\n throw new Error('Invalid Argument: tools.url.getHashParam(key) argument \"key\" not provided.');\r\n\r\n return this.getHashParams(key, { ...opts, multival: false });\r\n },\r\n /**\r\n * Get an array of value(s) for a specific hash param (per the specified key).\r\n * \r\n * Although not common, multiple values can be specified for a hash param.\r\n * If multiple values are passed as separate params with the same name (eg: #p=1&p=2&p=3)\r\n * this function will get them all and return them in an array ([1,2,3]).\r\n * If multiple values are passed as a list of values for a single param (eg: #p=1,2,3)\r\n * this is considered a single value and is left for you to parse as desired (eg: \"1,2,3\").\r\n * \r\n * This function can be called without the key, and only the opts argument (which is itself optional)\r\n * and it will output an object of all params, this behaviour is identical to getAllHashParams.\r\n * \r\n * Optional parsing options include:\r\n * {\r\n * multival:boolean = If false then the array of values will be replaced with the first value, eg [1,2,3] => 1\r\n * cast:type = If a type is specified (Number,Boolean,etc) then an attempt to cast all the values into that type will be made.\r\n * }\r\n * \r\n * @param {string} key The name of the hash param you want the value(s) for.\r\n * @param {object} [opts] Parsing options, see above for more info.\r\n */\r\n getHashParams(key, opts) {\r\n // Get the parsed params (caches the values and re-use when possible).\r\n const params = _cachedParse(_cached.hash, location.hash.slice(1)); // Slice off the first char (#).\r\n return _getParams(params, key, opts);\r\n },\r\n\r\n /**\r\n * Convenience function that takes an object of properties (key:value pairs) representing query params\r\n * and intelligently appending them onto an existing base URL. The base URL is checked appropriatley for\r\n * query '?' and '&' so the specified properties are appended correctly, however the base URL is not\r\n * modified itself, ie if a param already exists it is not replaced.\r\n * \r\n * EXAMPLE:\r\n * assemble('base/url.html?a=1', { x: 5, y: '6', z: true, v: null }) == 'base/url.html?a=1&x=5&y=6&z=true'\r\n * \r\n * @param {string|Array} url The base URL that will be appended to, can be a string or an array.\r\n * If an array it will be stripped of null/undefined elements and joined into a string separated by slashes.\r\n * Eg: ['a', null, 3, 'foo', '', 'bar'] -> 'a/3/foo//bar'\r\n * If an array and one (or more) of the elements is an Object (including Array) then the object's properties/elements\r\n * will be added to the params object as query string parameters.\r\n * Eg: ['a', 3, 'foo', { x:1, y:2, z:[4,5,6] }] -> 'a/3/foo?x=1&y=2&z=4&z=5&z=6\r\n * @param {object} params The object of (key:value) properties that will be appended as URL query params,\r\n * if values are null/undefined then they will be ignored.\r\n */\r\n assemble(url, params) {\r\n if (!url || !url.length)\r\n return null;\r\n else if (!params && typeof (url) === 'string') // Short-circuit for common situations where we don't need to do anything complicated.\r\n return url;\r\n\r\n // If url is an array then we process its elements into url segments and params.\r\n if (Array.isArray(url)) {\r\n params = params || {}; // Ensure params exists, as we may be adding key-values below.\r\n\r\n url = url.filter(element => {\r\n if (element === null || element === undefined)\r\n return false; // DO NOT use null/undefined values (filtered out).\r\n else if (element instanceof Object) {\r\n for (const k in element) {\r\n if (element.hasOwnProperty(k)) {\r\n params[k] = element[k];\r\n }\r\n }\r\n\r\n return false; // Has been processed into params, DO NOT use in url (filtered out).\r\n }\r\n\r\n return true; // Otherwise use the value in the url (filtered in).\r\n });\r\n\r\n // Join the filtered url parts into path segments.\r\n url = url.join('/');\r\n }\r\n\r\n const paramKeys = params && Object.keys(params);\r\n if (paramKeys && paramKeys.length) {\r\n // Add query-string separator.\r\n if (url.indexOf('?') < 0)\r\n url += '?';\r\n else if (url[url.length - 1] !== '&')\r\n url += '&';\r\n\r\n // Add query-string params.\r\n for (const name of paramKeys) {\r\n if (params.hasOwnProperty(name)) {\r\n let value = params[name];\r\n\r\n // Don't include properties without values.\r\n if (value !== null && value !== void 0) {\r\n if (Array.isArray(value))\r\n value = value.map(encodeURIComponent).join(`&${name}=`);\r\n else if (value instanceof Object)\r\n value = encodeURIComponent(JSON.stringify(value));\r\n else\r\n value = encodeURIComponent(value);\r\n\r\n url += `${name}=${value}&`;\r\n }\r\n }\r\n }\r\n\r\n // Trim off trailing ampersand.\r\n if (url[url.length - 1] === '&') {\r\n url = url.substring(0, url.length - 1);\r\n }\r\n }\r\n\r\n return url;\r\n },\r\n\r\n /**\r\n * Convenience function to format a root-relative URL in our standardized 'friendly' format.\r\n * \r\n * EXAMPLE\r\n * createFriendlyUrl('auctioneer', 123, 'EZ Auctions') == '/auctioneer/123/EZ+Auctions'\r\n * \r\n * @param {string} code The application specific view 'code', ie the first portion of the path (generally the view name).\r\n * @param {number} id The view object identifier, ie the primary key for the object the view will display/represent.\r\n * @param {string} words The SEO (and user) friendly words to append to the URL.\r\n */\r\n createFriendlyUrl(code, id, words) {\r\n // IMPORTANT: This 'friendly' url assembly/formatting should be the same as in LAG.Utility.URL.Friendly \r\n if (words)\r\n {\r\n // Normalize to lowercase.\r\n words = words.toLowerCase();\r\n\r\n // Eliminate anything that is NOT letters, numbers, spaces or dashes (replace with spaces)\r\n words = words.replace(/[^-a-zA-Z0-9\\s]/g, ' ');\r\n\r\n // Remove leading/tailing spaces.\r\n words = words.trim();\r\n\r\n // Replace (one or more) spaces with a single dash.\r\n words = words.replace(/\\s+/g, '-');\r\n\r\n // Replace (one or more) dashes with a single dash.\r\n words = words.replace(/-+/g, '-');\r\n }\r\n\r\n // Return generated 'friendly' (root-relative) url: ///\r\n return `/${code}/${id}/${words}`;\r\n }\r\n};","// REFERENCE: https://date-fns.org\r\nimport addMilliseconds from 'date-fns/add_milliseconds';\r\nimport differenceInMilliseconds from 'date-fns/difference_in_milliseconds';\r\nimport distanceInWords from 'date-fns/distance_in_words';\r\nimport distanceInWordsStrict from 'date-fns/distance_in_words_strict';\r\nimport distanceInWordsToNow from 'date-fns/distance_in_words_to_now';\r\nimport isBefore from 'date-fns/is_before';\r\nimport isAfter from 'date-fns/is_after';\r\nimport isEqual from 'date-fns/is_equal';\r\nimport isFuture from 'date-fns/is_future';\r\nimport isPast from 'date-fns/is_past';\r\nimport formatToString from 'date-fns/format';\r\n\r\n/**\r\n * Accepts either a Date object or a date string in ISO format (eg '2018-12-30T16:45'),\r\n * the provided date is considered to be a UTC date/time representation (even though Date objects are in local timezone).\r\n * \r\n * The provided date/time values are used to create and return a new Date object which represents the date/time\r\n * in your local timezone for the provided UTC date/time. JS Date objects are always in local timezone.\r\n * \r\n * Eg: for \"UTC\" input of '2018-12-30T16:45' will become '2018-12-30T8:45' (assuming a local timezone of UTC-8).\r\n * \r\n * Other functionality, including the built in date.toUTCString can be used to output in UTC if needed.\r\n * \r\n * @param {string|Date} utcDate The date representation of your UTC date/time value.\r\n */\r\nfunction fromUTC(utcDate) {\r\n if (typeof utcDate === 'string') {\r\n // Append 'Z' onto the ISO formatted datetime to turn it into UTC (unless Z already exists).\r\n if (!utcDate.endsWith('Z'))\r\n utcDate = utcDate + 'Z';\r\n\r\n return new Date(utcDate);\r\n }\r\n if (utcDate instanceof Date) {\r\n // Use the date/time values from the provided date object as if they are UTC (even though internally JS reports as locale timezone),\r\n // with those values we calculate the UTC timestamp and use that to create a new Date object with the UTC time accordingly.\r\n // Note we call getHours / etc rather than getUTCHours / etc since that would negate the conversion we're doing.\r\n return new Date(Date.UTC(\r\n utcDate.getFullYear(), utcDate.getMonth(), utcDate.getDate(),\r\n utcDate.getHours(), utcDate.getMinutes(), utcDate.getSeconds(), utcDate.getMilliseconds()));\r\n }\r\n\r\n throw new Error('Invalid Argument: tools.date.fromUTC(' + utcDate + ')');\r\n}\r\n\r\n/**\r\n * Uses the provided Date object (which, as always, is in local timezone) and outputs the equivalent UTC date/time\r\n * in ISO standard format. The local to UTC conversion is done by the built-in Date methods (eg getUTCMonth()).\r\n * \r\n * Eg: input localDate of 2018-12-30 8:45 would output '2018-12-30T16:45:00Z'.\r\n * \r\n * If you DO NOT want to convert to UTC but want to output in ISO standard format (what our APIs accept)\r\n * then you can use the built-in localDate.toISOString() instead.\r\n * \r\n * @param {Date} localDate\r\n */\r\nfunction toStringUTC(localDate) {\r\n if (!localDate) return null;\r\n\r\n const asTwoDigits = (n,p) => n < 10 ? '0' + n : n;\r\n\r\n const year = localDate.getUTCFullYear(),\r\n month = asTwoDigits(localDate.getUTCMonth()),\r\n date = asTwoDigits(localDate.getUTCDate()),\r\n hours = asTwoDigits(localDate.getUTCHours()),\r\n minutes = asTwoDigits(localDate.getUTCMinutes()),\r\n seconds = asTwoDigits(localDate.getUTCSeconds());\r\n\r\n return `${year}-${month}-${date}T${hours}:${minutes}:${seconds}Z`;\r\n}\r\n\r\nexport const date = {\r\n fromUTC,\r\n toStringUTC,\r\n\r\n addMilliseconds,\r\n differenceInMilliseconds,\r\n\r\n isBefore,\r\n isAfter,\r\n isEqual,\r\n isFuture,\r\n isPast,\r\n\r\n distanceInWords,\r\n distanceInWordsStrict,\r\n distanceInWordsToNow,\r\n\r\n format: (value, dateFormat) => {\r\n if (!dateFormat) dateFormat = 'MMM Do YYYY, HH:mm';\r\n else if (dateFormat === 'date') dateFormat = 'MMM Do YYYY';\r\n else if (dateFormat === 'time') dateFormat = 'HH:mm';\r\n // else custom format\r\n\r\n if (!value) return null;\r\n else if (!(value instanceof Date)) value = fromUTC(value);\r\n\r\n return formatToString(value, dateFormat);\r\n }\r\n};","import { afterNextRender } from \"@polymer/polymer/lib/utils/render-status\";\r\n\r\n/**\r\n * Wait until the specified element is visible or the timeout period ellapses.\r\n * @param {HTMLElement} element\r\n * @param {Function} callback - Called with a single arg indicating if visible (true) or timed-out (false).\r\n * @param {int} [maxWaitPeriodMS=1000] - Milliseconds timeout, minimum = 10,000.\r\n */\r\nexport function whenVisible(element, callback, maxWaitPeriodMS) {\r\n if (typeof maxWaitPeriodMS !== 'number') maxWaitPeriodMS = 1000; // 1 second default\r\n else if (maxWaitPeriodMS > 10000) maxWaitPeriodMS = 10000; // max\r\n\r\n const startMS = Date.now();\r\n\r\n afterNextRender(element, () => {\r\n if (element.clientWidth && element.style.visibility !== 'hidden')\r\n callback(true);\r\n else {\r\n const ellapsedMS = Date.now() - startMS;\r\n const remainingMS = maxWaitPeriodMS - ellapsedMS;\r\n\r\n if (remainingMS <= 0)\r\n callback(false);\r\n else\r\n whenVisible(element, callback, remainingMS);\r\n }\r\n });\r\n};","/*************************************************************************\\\r\nProvides a client side interface for interacting with CommonAPI & AdminAPI\r\nand indirectly it will automatically interact with AuthAPI if necessary.\r\n\r\nGeneral methods available:\r\n\r\n api.get(route, includeAuth:false)\r\n api.post(route, data:null)\r\n api.put(route, data:null)\r\n api.del(route, data:null)\r\n\r\n api.admin.get(route) // always includes auth\r\n api.admin.post(route, data:null)\r\n api.admin.put(route, data:null)\r\n api.admin.del(route, data:null)\r\n\r\nThe \"route\" argument can be a simple string route (relative to the API\r\nbase path provided in config) - or it can be an array of strings/objects.\r\nIf it is an array then strings used as path segments and are joined\r\ntogether (separated by slashes), whereas objects are used as bags of\r\nquery-string key/value pairs. Eg:\r\n\r\n // \"the/api/route?a=1&foo=bar\"\r\n api.post(['the', 'api', 'route', { a: 1, foo: 'bar' }], data)\r\n .then(...);\r\n\r\nGetting the returned data from the above calls can be done using the\r\nreturned promise containing the response data. Eg:\r\n\r\n api.get('the/api/route')\r\n .then(function({ ok, status, data }) {\r\n if (ok) doSomethingWith(data);\r\n else if (status === 400) dealWithBadRequestResponse(data);\r\n // else other status codes...\r\n })\r\n\r\nOptionally you may catch exceptions (which can include auth failures),\r\nbut uncaught exceptions (including auth exceptions) will be handled\r\nby a global app-scope exception handler; this allows for the app to\r\nautomatically handle general exceptions that specific code would either\r\nnot know how to deal with or would have to repeat handler code everywhere.\r\n\r\n .catch(function(ex) {\r\n if (ex instanceof api.auth.exceptions.UnauthorizedException)\r\n console.log('Not signed-in.');\r\n else if (ex instanceof api.auth.exceptions.ForbiddenException)\r\n console.log('Permission denied.');\r\n else\r\n console.log('Some unexpected exception: ' + ex);\r\n });\r\n\r\nNote that 'get' requests cannot send data (payload) apart from url params.\r\nNote that 'post','put', and 'del' requests must always be authenticated.\r\n\r\nNormal exceptions that may be thrown by the API auth checking system include:\r\n - api.exceptions.UnauthorizedException\r\n Indicating the user is not signed in, or their sign-in session is invalid.\r\n Anonymous API calls would never get this.\r\n - api.exceptions.ForbiddenException\r\n Indicating the user is denied permission for the specific request.\r\n This is used for admin users (I don't think we would send this for bidder calls).\r\n\r\nSee export at bottom of file for all public properties.\r\n\\*************************************************************************/\r\n\r\n/* eslint no-console: off */\r\n\r\nimport { config } from '../app/config.js';\r\nimport { log } from '../app/log.js';\r\nimport { auth } from './auth.js';\r\nimport { url as urlTool } from '../utility/tools/url.js';\r\n\r\n/* Private Classes *******************************************************/\r\n\r\nclass FetchOptions {\r\n constructor(options) {\r\n // Defaults.\r\n this.method = 'get';\r\n this.mode = 'cors';\r\n this.cache = 'no-store';\r\n\r\n // Apply custom values (possibly adding values and/or overiding defaults).\r\n Object.assign(this, options);\r\n\r\n // If headers hasn't been provided then create the default headers set,\r\n // or if headers isn't of the correct type then create a new Headers object\r\n // and init with the provided headers data (assume it is valid).\r\n if (!this.headers) {\r\n // Add correct content-type header for api calls.\r\n // We used to specify 'text/plain' so as to avoid CORS pre-flight requests (OPTIONS),\r\n // however dotnet 3.1 introduced System.Text.Json which didn't support lots of stuff\r\n // so we had to use their fallback AddNewtonsoftJson feature, which in turn screwed\r\n // up our ability to accept 'text/plain' content-types... so now we're just using the\r\n // more normal 'application/json' content-type (which is maybe better?).\r\n this.headers = new Headers({ 'content-type': 'application/json' });\r\n }\r\n else if (!(this.headers instanceof Headers)) {\r\n this.headers = new Headers(this.headers || {});\r\n }\r\n\r\n // Options indicate we should include the Authorization header (default to not include).\r\n if (this.includeAuth) {\r\n auth.addAuthorizationHeader(this.headers);\r\n }\r\n }\r\n}\r\n\r\n/* Private Functions *****************************************************/\r\n\r\nfunction resultPromise(response) {\r\n return response.text().then(data => {\r\n if (data && data.length) {\r\n const contentType = response.headers.get('content-type'),\r\n contentDisposition = response.headers.get('content-disposition');\r\n\r\n if (contentType === 'application/octet-stream' || (contentDisposition && contentDisposition.indexOf('attachement') >= 0)) {\r\n // File, just leave as raw string.\r\n }\r\n else if (data[0] === '{' && data[data.length - 1] === '}') {\r\n // Looks like JSON so try to parse.\r\n // Note that we dont accept root level arrays [...] as JSON due to a potential vunerability in allowing raw Arrays as JSON.\r\n try {\r\n // Decode into json (we generally expect all/most result data to be json, apart from errors sometimes).\r\n data = JSON.parse(data);\r\n }\r\n catch (exJson) {\r\n log.critical('api.resultPromise{catch-json}', `${response.status}: ${exJson.message}`);\r\n }\r\n }\r\n // No match so just leave as raw string.\r\n }\r\n\r\n // Return a resolved promise including the output (either parsed JSON or just a text string).\r\n return Promise.resolve({\r\n ok: response.ok,\r\n status: response.status,\r\n data: data\r\n });\r\n })\r\n .catch(exText => {\r\n log.critical('api.resultPromise{catch-text}', `${response.status}: ${exText.message}`);\r\n\r\n // Return response with no data since decoding json and text failed.\r\n return Promise.resolve({\r\n ok: response.ok,\r\n status: response.status,\r\n data: null\r\n });\r\n });\r\n}\r\n\r\nfunction request(endpoint, method, route, data, options, includeAuth, allowRefresh) {\r\n const dataInvalid = data === null || typeof data === 'undefined' || (data.hasOwnProperty && data.hasOwnProperty('length') && !data.length);\r\n\r\n // Check/serialize outgoing data.\r\n if (method === 'get' || dataInvalid) {\r\n data = void 0; // undefined\r\n }\r\n else if (data instanceof FormData) {\r\n // No need to do anything to data, it is already good.\r\n\r\n // FetchOptions will default the content-type to 'text/plain' which is good for the normal case were we\r\n // are sending JSON data, however for FormData this will not work. FormData needs the content-type to be\r\n // 'multipart/form-data' + boundary identifier, this will be automatically added by the browser if we don't\r\n // specify a content-type ourselves.. so therefore we need to provide a headers object to FetchOptions so\r\n // that it does NOT add the default content-type.\r\n options = options || {};\r\n options.headers = options.headers || {};\r\n }\r\n else if (typeof data === 'object') {\r\n data = JSON.stringify(data);\r\n }\r\n\r\n return fetch(\r\n endpoint + route,\r\n new FetchOptions({\r\n includeAuth: includeAuth,\r\n method: method,\r\n body: data,\r\n headers: options && options.headers ? options.headers : void 0\r\n }))\r\n .then(function (response) {\r\n if (response.status === 403) {\r\n // 403: Forbidden\r\n throw new auth.exceptions.ForbiddenException(`api:request:${method}:${response.url}`);\r\n }\r\n else if (response.status === 401) {\r\n // 401: Unauthorized (either invalid/expired token, or token needs to be refreshed).\r\n\r\n // If we allow auto refresh AND we're including auth then we try to get a refreshed token\r\n // and if we succeed then automatically retry the original request.\r\n if (allowRefresh && includeAuth) {\r\n // Try to get a fresh token from the auth API.\r\n return auth.refresh().then(result => {\r\n // Successfully refreshed token.\r\n if (result.ok) {\r\n // Retry the original request.\r\n // NOTE: The new token is automatically included in the request (see FetchOptions).\r\n // IMPORTANT: allowRefresh = false so we don't have infinite recursion.\r\n return request(endpoint, method, route, data, options, includeAuth, false);\r\n }\r\n else throw new auth.exceptions.UnauthorizedException(`api:request{refreshed}:${method}:${response.url}`);\r\n })\r\n .catch((ex) => {\r\n log.critical(`api.${method}:request{refreshed}`, ex);\r\n throw ex;\r\n });\r\n }\r\n else throw new auth.exceptions.UnauthorizedException(`api:request:${method}:${response.url}`);\r\n }\r\n else { // Otherwise nothing else to do here, just return result.\r\n return resultPromise(response);\r\n }\r\n })\r\n .catch((ex) => {\r\n log.critical(`api.${method}:request{catch}`, ex);\r\n throw ex;\r\n });\r\n}\r\n\r\nfunction postLog(data) {\r\n if (typeof data === 'object') {\r\n data = JSON.stringify(data);\r\n }\r\n\r\n return fetch(\r\n `${config.endpoints.commonAPI}logging`,\r\n new FetchOptions({\r\n includeAuth: true,\r\n method: 'post',\r\n body: data\r\n }))\r\n .then(function (response) {\r\n if (response.status === 403) {\r\n // 403: Forbidden\r\n // Don't log or throw exception to avoid inifinite logging recursion.\r\n console.log('api:log{forbidden}');\r\n }\r\n else if (response.status === 401) {\r\n // 401: Unauthorized (either invalid/expired token, or token needs to be refreshed).\r\n // Don't log or throw exception to avoid inifinite logging recursion.\r\n console.log('api:log{unauthorized}');\r\n }\r\n // Otherwise nothing else to do here, just return without doing anything (there shouldn't be any results data).\r\n })\r\n .catch((ex) => {\r\n // Don't log or throw exception to avoid inifinite logging recursion.\r\n console.log(`api:log{catch}: ${ex.message}`);\r\n });\r\n}\r\n\r\n/* Public Interface ******************************************************/\r\n\r\n/**\r\n * Call the CommonAPI using GET method.\r\n * GET calls should be used to retrieve records, not modify them.\r\n * \r\n * @param {!string|Array} route The API URL route/path/values?query to fetch.\r\n * @param {Boolean} [includeAuth] GET requests don't include the user auth session token by default, if needed specify true here.\r\n * @param {Object} [options] Optional request options, eg headers.\r\n * @returns {Promise} A promise that will return once the fetch has completed, the result argument has: { ok:boolean, status:string, data:(object|string) }\r\n */\r\nfunction _get(route, includeAuth, options) {\r\n return request(config.endpoints.commonAPI, 'get', urlTool.assemble(route), void 0, options, includeAuth === true, true);\r\n}\r\n/**\r\n * Call the CommonAPI using POST method.\r\n * POST calls should be used to create new records, not update records (nor create/update), nor delete or only-retrieve records.\r\n * \r\n * @param {!string|Array} route The API URL route/path/values?query to fetch.\r\n * @param {(string|object|FormData)} data The data (body) you want to send in the POST.\r\n * @param {Object} [options] Optional request options, eg headers.\r\n * @returns {Promise} A promise that will return once the fetch has completed, the result argument has: { ok:boolean, status:string, data:(object|string) }\r\n */\r\nfunction _post(route, data, options) {\r\n return request(config.endpoints.commonAPI, 'post', urlTool.assemble(route), data, options, true, true);\r\n}\r\n/**\r\n * Call the CommonAPI using PUT method.\r\n * PUT calls should be used to update records (or create/update), not when a new record is always created, nor delete or only-retrieve records.\r\n * \r\n * @param {!string|Array} route The API URL route/path/values?query to fetch.\r\n * @param {(string|object|FormData)} data The data (body) you want to send in the PUT.\r\n * @param {Object} [options] Optional request options, eg headers.\r\n * @returns {Promise} A promise that will return once the fetch has completed, the result argument has: { ok:boolean, status:string, data:(object|string) }\r\n */\r\nfunction _put(route, data, options) {\r\n return request(config.endpoints.commonAPI, 'put', urlTool.assemble(route), data, options, true, true);\r\n}\r\n/**\r\n * Call the CommonAPI using DELETE method.\r\n * DELETE calls should be used to delete records, not create or update or retrieve records.\r\n * \r\n * @param {!string|Array} route The API URL route/path/values?query to fetch.\r\n * @param {(string|object|FormData)} data The data (body) you want to send in the DELETE.\r\n * @param {Object} [options] Optional request options, eg headers.\r\n * @returns {Promise} A promise that will return once the fetch has completed, the result argument has: { ok:boolean, status:string, data:(object|string) }\r\n */\r\nfunction _del(route, data, options) {\r\n return request(config.endpoints.commonAPI, 'delete', urlTool.assemble(route), data, options, true, true);\r\n}\r\n\r\n/**\r\n * Call the AdminAPI using GET method.\r\n * GET calls should be used to retrieve records, not modify them.\r\n * \r\n * @param {!string|Array} route The API URL route/path/values?query to fetch.\r\n * @param {Boolean} [includeAuth] GET requests don't include the user auth session token by default, if needed specify true here.\r\n * @param {Object} [options] Optional request options, eg headers.\r\n * @returns {Promise} A promise that will return once the fetch has completed, the result argument has: { ok:boolean, status:string, data:(object|string) }\r\n */\r\nfunction _getAdmin(route, options) {\r\n return request(config.endpoints.adminAPI, 'get', urlTool.assemble(route), void 0, options, true, true);\r\n}\r\n/**\r\n * Call the AdminAPI using POST method.\r\n * POST calls should be used to create new records, not update records (nor create/update), nor delete or only-retrieve records.\r\n * \r\n * @param {!string|Array} route The API URL route/path/values?query to fetch.\r\n * @param {(string|object|FormData)} data The data (body) you want to send in the POST.\r\n * @param {Object} [options] Optional request options, eg headers.\r\n * @returns {Promise} A promise that will return once the fetch has completed, the result argument has: { ok:boolean, status:string, data:(object|string) }\r\n */\r\nfunction _postAdmin(route, data, options) {\r\n return request(config.endpoints.adminAPI, 'post', urlTool.assemble(route), data, options, true, true);\r\n}\r\n/**\r\n * Call the AdminAPI using PUT method.\r\n * PUT calls should be used to update records (or create/update), not when a new record is always created, nor delete or only-retrieve records.\r\n * \r\n * @param {!string|Array} route The API URL route/path/values?query to fetch.\r\n * @param {(string|object|FormData)} data The data (body) you want to send in the PUT.\r\n * @param {Object} [options] Optional request options, eg headers.\r\n * @returns {Promise} A promise that will return once the fetch has completed, the result argument has: { ok:boolean, status:string, data:(object|string) }\r\n */\r\nfunction _putAdmin(route, data, options) {\r\n return request(config.endpoints.adminAPI, 'put', urlTool.assemble(route), data, options, true, true);\r\n}\r\n/**\r\n * Call the AdminAPI using DELETE method.\r\n * DELETE calls should be used to delete records, not create or update or retrieve records.\r\n * \r\n * @param {!string|Array} route The API URL route/path/values?query to fetch.\r\n * @param {(string|object|FormData)} data The data (body) you want to send in the DELETE.\r\n * @param {Object} [options] Optional request options, eg headers.\r\n * @returns {Promise} A promise that will return once the fetch has completed, the result argument has: { ok:boolean, status:string, data:(object|string) }\r\n */\r\nfunction _delAdmin(route, data, options) {\r\n return request(config.endpoints.adminAPI, 'delete', urlTool.assemble(route), data, options, true, true);\r\n}\r\n\r\nexport const api = {\r\n auth: auth,\r\n\r\n // This api.log call should only be used from within log,\r\n // special functionality that is necessary(rather than just using post) so as to avoid infinite recursion.\r\n log: (data) => postLog(data),\r\n\r\n get: _get,\r\n post: _post,\r\n put: _put,\r\n del: _del,\r\n\r\n admin: {\r\n get: _getAdmin,\r\n post: _postAdmin,\r\n put: _putAdmin,\r\n del: _delAdmin\r\n }\r\n};","const TesseractPromise = import(/* webpackIgnore:true */\"https://unpkg.com/tesseract.js@4.0.2/dist/tesseract.min.js\").then(() => {\r\n return window[\"Tesseract\"];\r\n});\r\n\r\n/*\r\nconst tesseractScript = document.createElement('script');\r\nconst TesseractPromise = new Promise(res => {\r\n tesseractScript.addEventListener('load', () => res(window[\"Tesseract\"]));\r\n});\r\ntesseractScript.src = \"https://unpkg.com/tesseract.js@4.0.2/dist/tesseract.min.js\";\r\ndocument.body.appendChild(tesseractScript);\r\n*/\r\n\r\nexport { TesseractPromise };","import page from 'page/page.mjs'; // https://visionmedia.github.io/page.js/\r\n// Other libs that looked interesting (but didn't use):\r\n// https://github.com/arboleya/ways\r\n// https://github.com/TehShrike/abstract-state-router\r\n// https://github.com/foxdonut/meiosis/tree/master/helpers/routing\r\n// https://github.com/andreasbm/web-router\r\n\r\nimport { url as urlTool } from '../utility/tools/url.js';\r\nimport { log } from './log.js';\r\n\r\nconst URLPARAM_RETURNURL = 'returnurl';\r\n\r\n/**\r\n * lag.app.router:\r\n * init([settings])\r\n * start()\r\n * stop()\r\n *\r\n * onLoad(path, ...callbacks)\r\n * onLoadReplace(path, replacementPath)\r\n * onExit(path, ...callbacks)\r\n *\r\n * current(path)\r\n * getReturnPath()\r\n * \r\n * goto(path, [returnPath])\r\n * return([fallbackPath])\r\n * back([fallbackPath], [state])\r\n * \r\n * replace(replacementPath, [noRouting])\r\n * push(path, [state])\r\n * pushback(path, [state])\r\n *\r\n * callback(context):\r\n * context.handled // bool[false]: set as true to indicate route has been handled,\r\n * if false and final callback calls next() then a final/default callback will be invoked which does a GET request for the page\r\n * context.title // history state's page title\r\n * context.state // history state's data\r\n * context.save() // save/replace history state with whatever is in context.state (uses history.replaceState)\r\n * context.canonicalPath // full relative path with base, eg: \"/base/some/path?with=query\"\r\n * context.path // full relative path, eg: \"/some/path?with=query\"\r\n * context.pathname // relative path, eg: \"/some/path\"\r\n * context.querystring // query string, eg: \"with=query\"\r\n * context.query // parsed query string, eg: { with: \"query\" } // this functionality is not native to page.js, it is added in our custom router.init\r\n * context. // other properties can be added to context as a way to pass values to subsequent callbacks for the current route execution\r\n */\r\nexport const router = {\r\n /**\r\n * Initialize page.js with optional settings, by default page.js default settings are used, in addition to a\r\n * settings.base property which specifies the root of the app (this defaults to '/').\r\n * After initializing settings this init call will start the page.js link interception/handling,\r\n * and wire-up our default route handling 'middleware' which adds query-string auto-parsing into context.query properties.\r\n * @param {Object} [settings=null]\r\n */\r\n init(settings) {\r\n settings = {\r\n base: '',\r\n ...settings\r\n };\r\n\r\n // Init/start page.js system.\r\n page.base(settings.base);\r\n page(settings);\r\n\r\n // Default handling/functionality executed for all routes.\r\n page('*', (ctx, next) => {\r\n // Try to typify (eg into Numbers) values, otherwise leaves as strings.\r\n _tryTypifyProperties(ctx.params);\r\n\r\n next(); // Continue executing any registered route callbacks.\r\n });\r\n\r\n return this;\r\n },\r\n start() {\r\n page.start();\r\n return this;\r\n },\r\n stop() {\r\n page.stop();\r\n return this;\r\n },\r\n\r\n // == Route Configuration Methods =========================================\r\n\r\n /**\r\n * When the specified route path is loaded then the callback(s) will be executed. Callbacks are added in the order they are added (whether in single or multiple calls to onLoad).\r\n * @param {String|Object} path - Usually a path for the route, but can be a collection of { :, ... } instead.\r\n * @param {...Function} callbacks - Single/multiple callbacks to add for the path. Must not be specified if path is a collection (object) of path/callbacks.\r\n * Callbacks will be passed a 'context' argument containing information about the request, including:\r\n * params: A collection of the variable segements in the path (URL) pattern, eg 'some/:id/view' would parse out the ':id' segment and place it in the params.id property.\r\n * query: A collection of the URL query string parameters (ie the stuff after the ? mark), these are named as per their query string naming.\r\n * Callbacks can return true/other, false, or a Promise:\r\n * true/other: Continue executing callbacks for this route.\r\n * false: Dont execute any more callabacks for this route, don't run default (href) action either.\r\n * Promise: Wait for promise to resolve (if it does) and then use its resolved value as the callback return value (with same logic as stated here/above).\r\n */\r\n onLoad(path, ...callbacks) {\r\n if (!path || !path.length)\r\n throw new Error(`lag.app.router.onLoad{missing-path}`);\r\n\r\n // If collection (object) of path/callbacks then loop them and add appropriately\r\n if (typeof path === 'object') {\r\n if (callbacks)\r\n throw new Error(`lag.app.router.onLoad{single-arg-only-for-multipath}`);\r\n\r\n for (const k in path) {\r\n if (path.hasOwnProperty(k))\r\n this.onLoad(k, path[k]);\r\n }\r\n }\r\n else if (typeof path !== 'string')\r\n throw new Error(`lag.app.router.onLoad{path-type-invalid}`);\r\n else if (!callbacks || !callbacks.length)\r\n throw new Error(`lag.app.router.onLoad{callbacks-invalid}`);\r\n else {\r\n callbacks = _wrapCallbacks(callbacks);\r\n // Add the wrapped callbacks to the handled routes.\r\n page(path, ...callbacks);\r\n }\r\n\r\n return this;\r\n },\r\n /**\r\n * When the specified route path is loaded then replace the current route path with the replacement one (aka redirect).\r\n * @param {String} path - Replacement/redirect is triggered on this path match.\r\n * @param {String} replacementPath - The replacement path that will be loaded.\r\n */\r\n onLoadReplace(path, replacementPath) {\r\n if (!path || !path.length)\r\n throw new Error(`lag.app.router.onLoadReplace{missing-path}`);\r\n if (!replacementPath || !replacementPath.length)\r\n throw new Error(`lag.app.router.onLoadReplace{missing-replacementPath}`);\r\n\r\n // Setup a redirection route.\r\n page.redirect(path, replacementPath);\r\n\r\n return this;\r\n },\r\n /**\r\n * When the specified route path is exited (was loaded and then leaving to go elsewhere) then the callback(s) will be executed.\r\n * @param {String} path - See router.onLoad path info for details.\r\n * @param {...Function} callbacks - See router.onLoad callbacks info for details.\r\n */\r\n onExit(path, ...callbacks) {\r\n if (!path || !path.length)\r\n throw new Error(`lag.app.router.onExit{missing-path}`);\r\n\r\n // If collection (object) of path/callbacks then loop them and add appropriately\r\n if (typeof path === 'object') {\r\n if (callbacks)\r\n throw new Error(`lag.app.router.onExit{single-arg-only-for-multipath}`);\r\n\r\n for (const k in path) {\r\n if (path.hasOwnProperty(k))\r\n this.onExit(k, path[k]);\r\n }\r\n }\r\n else if (typeof path !== 'string')\r\n throw new Error(`lag.app.router.onExit{path-type-invalid}`);\r\n else if (!callbacks || !callbacks.length)\r\n throw new Error(`lag.app.router.onExit{callbacks-invalid}`);\r\n else {\r\n callbacks = _wrapCallbacks(callbacks);\r\n // Add the wrapped callbacks to the handled routes.\r\n page.exit(path, ...callbacks);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n // == Informational Methods ===============================================\r\n\r\n /**\r\n * Get or check the current route's path. Useful to know if your route is currently active.\r\n * Depending on path argument the return value is either a regex match object or a boolean.\r\n * @param {String|RegExp} [path=null]\r\n * - If falsy (default) then the current route (with query string) will be returned (String).\r\n * - If regex then it will be matched against the current route and returns a bool indicating match or not, same as regex.test(router.current()).\r\n * - If string with ? or # then it will do an exact match against the current route path (with query string).\r\n * - If string without ? or # then it will do an exact match against the current route path (without query string).\r\n * @returns {String|Boolean}\r\n * - If no param (or falsy) was provided for path then the current route's path (with query string) will be returned.\r\n * - If a string or regex was provided for path then a bool will be returned indicating if it was a match.\r\n */\r\n current(path) {\r\n if (!path)\r\n return page.current;\r\n else if (path instanceof RegExp)\r\n return path.test(page.current);\r\n\r\n // Should always start with a slash, cause exception here so we know if someone has mistakenly forgotten the slash.\r\n if (!path.startsWith('/'))\r\n throw new Error('lag.app.router.current{path-not-rel}:' + path);\r\n\r\n if (path.indexOf('?') >= 0 || path.indexOf('#') >= 0)\r\n return !!page.current.match(path);\r\n else { // Match path without query string or hash.\r\n let end = page.current.indexOf('?');\r\n if (end < 0) end = page.current.indexOf('#');\r\n if (end < 0) end = page.current.length;\r\n\r\n const rxPath = new RegExp(`^${path}$`);\r\n return rxPath.test(page.current.substring(0, end));\r\n }\r\n },\r\n getReturnPath(fallback) {\r\n return _getReturnPath() || fallback || '/';\r\n },\r\n\r\n // == Navigation Methods ==================================================\r\n\r\n /**\r\n * Navigate is a convenience method to do a 'hard' navigate, ie location.href=url rather than router.goto,\r\n * this doesn't have anything to do with the router system, it is simply for convenience, esp for returnurl usage.\r\n * @param {any} url\r\n * @param {any} returnurl - If window.location is provided then it will auto format the current relative url (and search query).\r\n */\r\n navigate(url, returnPath) {\r\n if (returnPath === window.location) {\r\n returnPath = window.location.pathname + window.location.search;\r\n }\r\n const params = returnPath ? { [URLPARAM_RETURNURL]: returnPath } : undefined;\r\n const newUrl = urlTool.assemble(url, params);\r\n if (window.location.href === newUrl)\r\n log.error('router.navigate:same-url', newUrl);\r\n else\r\n window.location.href = newUrl;\r\n },\r\n /**\r\n * Go to the specified route path.\r\n * @param {String} path - Path to load.\r\n * @param {String|Boolean} [returnPath] - Return path to add as a query parameter to path (?returnurl=),\r\n * or true to auto use the current route as the return path (only use this if you want to add on history entries rather than having the page use the history.back functionality),\r\n * falsy means no return path should be added (default).\r\n */\r\n goto(path, returnPath) {\r\n if (returnPath) {\r\n if (returnPath === true) {\r\n returnPath = page.current;\r\n }\r\n\r\n // Add the return path as a url param (?returnurl=), clean it to ensure same origin.\r\n path = urlTool.assemble(path, { [URLPARAM_RETURNURL]: _cleanReturnPath(returnPath) });\r\n }\r\n // else no return path.\r\n\r\n if (!path.startsWith('/'))\r\n throw new Error(`lag.app.router.goto{path-not-rel}:${path}`);\r\n\r\n page.show(path);\r\n },\r\n /**\r\n * Go to the return path if one exists (query param ?returnurl=...), otherwise execute back(fallbackPath) functionality.\r\n * Note: if the return path is for a different origin then it will be ignored, this is for security (phishing prevention) reasons.\r\n * @param {String} fallbackPath\r\n */\r\n return(fallbackPath) {\r\n // Make sure a fallback is specified and it starts with a slash.\r\n // Issues can occur if no fallback specified as then the route can default to \"\" (blank)\r\n // and history pushState can fail even though the pagejs route will be activated.\r\n if (!fallbackPath || !fallbackPath.length || !fallbackPath.startsWith('/'))\r\n throw new Error('adminapp/app/router.return{invalid-fallbackPath}');\r\n\r\n const returnPath = _getReturnPath();\r\n\r\n if (returnPath) page.show(returnPath);\r\n else page.back(fallbackPath);\r\n },\r\n /**\r\n * NOTICE: You probably want to use return(...) instead so as to get the special return path functionality.\r\n * This call will simply go to the previous entry in the browser history (for this app's routing session),\r\n * if there isn't any more history entries or the history entries are prior to the current routing 'session'\r\n * (ie on a different origin/app, or a fresh reload was executed in-between) then it will use the fallbackPath instead.\r\n * When the fallbackPath is used it will goto the path, which will add it as a history entry.\r\n * If you want to go back to the previous history entry no-matter-what (even if on a different origin) then use history.back() instead.\r\n * @param {String} [fallbackPath=null]\r\n * @param {Object} [fallbackState]\r\n */\r\n back(fallbackPath, fallbackState) {\r\n // Make sure a fallback is specified and it starts with a slash.\r\n // Issues can occur if no fallback specified as then the route can default to \"\" (blank)\r\n // and history pushState can fail even though the pagejs route will be activated.\r\n if (!fallbackPath || !fallbackPath.length || !fallbackPath.startsWith('/'))\r\n throw new Error('adminapp/app/router.back{invalid-fallbackPath}');\r\n\r\n page.back(fallbackPath, fallbackState);\r\n },\r\n\r\n // == History Modification Methods ========================================\r\n\r\n /**\r\n * Replaces the current route with the new route (and loads the new route as normal, triggering any appropriate callbacks).\r\n * Similar to history.replaceState except will trigger callbacks appropriately, if you don't want callbacks to trigger then\r\n * you can specify true for the second parameter and it will simply call history.replaceState directly to modify history.\r\n * @param {String} replacementPath - Path that will replace the current route path.\r\n * @param {Boolean} [noRouting=false] - If routing callbacks should NOT be called, default is to execute any route callbacks as normal.\r\n */\r\n replace(replacementPath, noRouting) {\r\n if (noRouting)\r\n history.replaceState(null, replacementPath, replacementPath);\r\n else\r\n page.redirect(replacementPath); // When called with single arg it will do an immediate redirect (route replacement).\r\n },\r\n /**\r\n * Convenience method for history.pushState which adds/injects a history entry.\r\n * Unlike the replace method this push method will ADD a history entry rather than REPLACE the current entry.\r\n * It will NOT trigger callbacks, if you want it to trigger callbacks then you should probably be using goto(...) method instead.\r\n * If this is called from within a route callback it will add the specified path BEFORE the excuting route's path is added into the history.\r\n * @param {String} path\r\n * @param {Object} [state] - Optional history state data.\r\n */\r\n push(path, state) {\r\n history.pushState(state, path, path);\r\n },\r\n /**\r\n * Functionally similar to the push(...) method except effectively \"pushes\" the path into the history immediatley before the current page.\r\n * This is accomplished by replacing the current history entry with the new path/state and then pushing a new entry with the actual current path/state.\r\n * @param {String} path - The path to \"push\" into the previous (back) history entry.\r\n * @param {Object} [state] - Optional history state data.\r\n */\r\n pushback(path, state) {\r\n const currentState = history.state;\r\n const currentPath = page.current;\r\n\r\n history.replaceState(state, path, path); // Replace the current route's history entry with our 'back' path.\r\n history.pushState(currentState, currentPath, currentPath); // Then push the current route's entry so it is like before (but with the 'back' path before it).\r\n }\r\n};\r\n\r\n// == Private Methods =========================================================\r\n\r\nconst RX_TYPIFY_NUMBER = /^\\d+\\.?\\d*$/;\r\nfunction _tryTypifyProperties(props) {\r\n if (!props) return props;\r\n\r\n // Check if properties are parsable into Numbers.\r\n for (const k in props) {\r\n const p = props[k];\r\n\r\n // Only if looks like a number, otherwise we might accidentally parse something like \"123abc\".\r\n if (!p || !RX_TYPIFY_NUMBER.test(p))\r\n continue;\r\n\r\n // Try to parse as Number.\r\n const n = Number(p);\r\n // If successfully parsed as a number then replace the original (string) with the number.\r\n if (!isNaN(n))\r\n props[k] = n;\r\n }\r\n}\r\n\r\nfunction _wrapCallbacks(callbacks) {\r\n if (!callbacks || !callbacks.length)\r\n throw new Error(`lag.app.router._wrapCallbacks{no-callbacks}`);\r\n\r\n const wrappedCallbacks = [];\r\n\r\n for (let i = 0; i < callbacks.length; ++i) {\r\n const f = callbacks[i];\r\n\r\n if (typeof f !== 'function')\r\n throw new Error(`lag.app.router._wrapCallbacks{callback-not-func}`);\r\n\r\n // Wrap the provided callback function so that 'next' (the next callback) is automatically executed\r\n // unless an explicit false is returned by the callback, or if the callback returns a Promise then only execute 'next' once that has completed.\r\n wrappedCallbacks.push((context, next) => {\r\n const result = f(context); // We only pass the context to the callback, not the 'next' function as page.js would normally have (which we deal with below).\r\n _wrapCallbacks_next(result, next);\r\n });\r\n }\r\n\r\n return wrappedCallbacks;\r\n}\r\n\r\nfunction _wrapCallbacks_next(result, next) {\r\n if (result !== false) {\r\n // If a promise then defer until the promise resolves,\r\n // then use the promise's result instead (recursive).\r\n if (result instanceof Promise)\r\n result.then(r => _wrapCallbacks_next(r));\r\n else\r\n next(); // Not false and not a Promise so continue to next callback (if one exists).\r\n }\r\n // Otherwise if result IS false (explicitly false, not just falsy) then we DONT continue executing callbacks.\r\n}\r\n\r\nfunction _getReturnPath() {\r\n // Grab ?returnurl param (if exists).\r\n const path = urlTool.getParam(URLPARAM_RETURNURL);\r\n\r\n // Fail, no return path exists.\r\n if (!path || !path.length)\r\n return;\r\n\r\n // Fail, return path invalid (must be relative path for security reasons).\r\n if (path.indexOf('//') >= 0) // Absolute path, which we don't want, so ignore.\r\n return;\r\n\r\n return path;\r\n}\r\n\r\nfunction _cleanReturnPath(path) {\r\n if (!path || !path.length)\r\n return;\r\n else\r\n path = path.trim();\r\n\r\n // If absolute URL then we need to ensure it is same as current (app) origin, for security reasons.\r\n // Also we need to turn it into a relative url for consistency and security.\r\n const matches = path.match(/(https?:\\/\\/[^/]+)\\/(.*)/i); // Is absolute url, no trailing slash necessary.\r\n if (matches) {\r\n const origin = matches[1];\r\n if (origin !== document.location.origin)\r\n return; // Fail, different origin.\r\n\r\n path = matches[2].trim(); // Path & query, without origin (ie relative).\r\n\r\n // If the app is being hosted within a sub-dir (eg /projects/myapp) then we need to accomodate for that.\r\n const base = page.base();\r\n if (base && base.length) {\r\n path = path.replace(new RegEx(`^${base}`), ''); // Remove base from start of path (if it exists).\r\n }\r\n }\r\n\r\n if (path && path.length)\r\n return path;\r\n // else no good path.\r\n}","export const template = ' ';","import { Big } from '../../libs/big.js';\r\n\r\nexport const convert = {\r\n /**\r\n * Converts a string (or JS Number) to a \"Big.js\" object.\r\n * This is useful when dealing with precision values (such as money),\r\n * since JS Number types are floating-point and therefore bad for precise amounts.\r\n * For info on using Big.js objects see: https://mikemcl.github.io/big.js/\r\n */\r\n toDecimal(val, defaultValue) {\r\n try {\r\n return new Big(val);\r\n }\r\n catch (err) {\r\n if (defaultValue)\r\n return new Big(defaultValue);\r\n else\r\n throw err;\r\n }\r\n },\r\n\r\n /**\r\n * Converts a base64string to an array buffer.\r\n * This can be used in combination with file.save to download a file.\r\n * @param {any} base64\r\n */\r\n base64ToArrayBuffer(base64) {\r\n var binaryString = window.atob(base64);\r\n var binaryLen = binaryString.length;\r\n var bytes = new Uint8Array(binaryLen);\r\n for (var i = 0; i < binaryLen; i++) {\r\n var ascii = binaryString.charCodeAt(i);\r\n bytes[i] = ascii;\r\n }\r\n return bytes;\r\n },\r\n\r\n base64ToBlob(content, contentType) {\r\n contentType = contentType || '';\r\n const sliceSize = 512;\r\n // method which converts base64 to binary\r\n const byteCharacters = window.atob(content);\r\n\r\n const byteArrays = [];\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n const blob = new Blob(byteArrays, {\r\n type: contentType\r\n }); // statement which creates the blob\r\n return blob;\r\n },\r\n\r\n urlToBlobXHR(url) {\r\n return new Promise(function (resolve, reject) {\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\"GET\", url);\r\n xhr.responseType = \"blob\";\r\n xhr.onerror = function () { reject(\"Network error.\") };\r\n xhr.onload = function () {\r\n if (xhr.status === 200) { resolve(xhr.response) }\r\n else { reject(\"Loading error:\" + xhr.statusText) }\r\n };\r\n xhr.send();\r\n }\r\n catch (err) { reject(err.message) }\r\n });\r\n },\r\n\r\n dataURItoBlob(dataURI) {\r\n // convert base64/URLEncoded data component to raw binary data held in a string\r\n var byteString;\r\n if (dataURI.split(',')[0].indexOf('base64') >= 0)\r\n byteString = atob(dataURI.split(',')[1]);\r\n else\r\n byteString = unescape(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n // write the bytes of the string to a typed array\r\n var ia = new Uint8Array(byteString.length);\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n return new Blob([ia], { type: mimeString });\r\n }\r\n};","export const file = {\r\n /**\r\n * Save data as a file, ie invokes the browser's save/download file dialog box\r\n * so the user can save the specified data on their computer as a file.\r\n * \r\n * @param {!(string|Array)} fileData The file data to be saved.\r\n * @param {string} fileName The name of the file that the save dialog will have as default, user can change this. If not specified then will default to \"data.txt\".\r\n * @param {string} contentType A standard content-type (aka MIME type) designation indicating the file type. This can help the save dialog show the appropriate file type filter.\r\n */\r\n save(fileData, fileName, contentType) {\r\n if (!fileData) throw new Error('No data provided.');\r\n fileName = fileName || 'data.txt';\r\n\r\n // Check that Object URLs are supported.\r\n const wurl = window.URL || window.webkitURL;\r\n if (typeof wurl.createObjectURL !== 'function')\r\n throw new Error('Object URL not supported.');\r\n\r\n // Blob expects an array.\r\n if (!(fileData instanceof Array)) {\r\n fileData = [fileData];\r\n }\r\n\r\n // Create Object URL from Blob from data.\r\n const blob = new Blob(fileData, contentType ? { type: contentType } : void 0);\r\n const objectUrl = wurl.createObjectURL(blob);\r\n\r\n // Create anchor to use in order to make the save dialog show.\r\n const anchor = document.createElement('a');\r\n\r\n // Assign Object URL to anchor.\r\n anchor.setAttribute('href', objectUrl);\r\n anchor.setAttribute('download', fileName);\r\n\r\n // Invoke click (showing save dialog).\r\n anchor.click();\r\n\r\n // Cleanup memory (after the click/save is finished).\r\n wurl.revokeObjectURL(objectUrl);\r\n },\r\n reduceFileSize(fileData, acceptFileSize, maxWidth, maxHeight, quality, callback) {\r\n if (!fileData) {\r\n callback(null);\r\n return;\r\n }\r\n\r\n this._initializeToBlob();\r\n\r\n if (fileData.size <= acceptFileSize) {\r\n callback(fileData);\r\n return;\r\n }\r\n var img = new Image();\r\n img.onerror = function () {\r\n URL.revokeObjectURL(this.src);\r\n callback(fileData);\r\n };\r\n img.onload = function () {\r\n URL.revokeObjectURL(this.src);\r\n file._getExifOrientation(fileData, function (orientation) {\r\n var w = img.width, h = img.height;\r\n var scale = (orientation > 4 ?\r\n Math.min(maxHeight / w, maxWidth / h, 1) :\r\n Math.min(maxWidth / w, maxHeight / h, 1));\r\n h = Math.round(h * scale);\r\n w = Math.round(w * scale);\r\n\r\n var canvas = file._imgToCanvasWithOrientation(img, w, h, orientation);\r\n canvas.toBlob(function (blob) {\r\n //If file is still too large, lets compress it some more.\r\n if (blob.size > acceptFileSize) {\r\n file.reduceFileSize(blob, acceptFileSize, maxWidth, maxHeight, quality, callback);\r\n return;\r\n }\r\n\r\n //console.log(\"Resized image to \" + w + \"x\" + h + \", \" + (blob.size >> 10) + \"kB\");\r\n callback(blob);\r\n }, 'image/jpeg', quality);\r\n });\r\n };\r\n img.src = URL.createObjectURL(fileData);\r\n },\r\n\r\n // #region Private Helpers\r\n\r\n //Taken from https://stackoverflow.com/questions/14672746/how-to-compress-an-image-via-javascript-in-the-browser\r\n _initializeToBlob() {\r\n // From https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob, needed for Safari:\r\n if (!HTMLCanvasElement.prototype.toBlob) {\r\n Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\r\n value: function (callback, type, quality) {\r\n\r\n var binStr = atob(this.toDataURL(type, quality).split(',')[1]),\r\n len = binStr.length,\r\n arr = new Uint8Array(len);\r\n\r\n for (var i = 0; i < len; i++) {\r\n arr[i] = binStr.charCodeAt(i);\r\n }\r\n\r\n callback(new Blob([arr], { type: type || 'image/png' }));\r\n }\r\n });\r\n }\r\n\r\n //window.URL = window.URL || window.webkitURL;\r\n },\r\n\r\n // Modified from https://stackoverflow.com/a/32490603, cc by-sa 3.0\r\n // -2 = not jpeg, -1 = no data, 1..8 = orientations\r\n _getExifOrientation(fileData, callback) {\r\n // Suggestion from http://code.flickr.net/2012/06/01/parsing-exif-client-side-using-javascript-2/:\r\n if (fileData.slice) {\r\n fileData = fileData.slice(0, 131072);\r\n } else if (fileData.webkitSlice) {\r\n fileData = fileData.webkitSlice(0, 131072);\r\n }\r\n\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n var view = new DataView(e.target.result);\r\n if (view.getUint16(0, false) != 0xFFD8) {\r\n callback(-2);\r\n return;\r\n }\r\n var length = view.byteLength, offset = 2;\r\n while (offset < length) {\r\n var marker = view.getUint16(offset, false);\r\n offset += 2;\r\n if (marker == 0xFFE1) {\r\n if (view.getUint32(offset += 2, false) != 0x45786966) {\r\n callback(-1);\r\n return;\r\n }\r\n var little = view.getUint16(offset += 6, false) == 0x4949;\r\n offset += view.getUint32(offset + 4, little);\r\n var tags = view.getUint16(offset, little);\r\n offset += 2;\r\n for (var i = 0; i < tags; i++)\r\n if (view.getUint16(offset + (i * 12), little) == 0x0112) {\r\n callback(view.getUint16(offset + (i * 12) + 8, little));\r\n return;\r\n }\r\n }\r\n else if ((marker & 0xFF00) != 0xFF00) break;\r\n else offset += view.getUint16(offset, false);\r\n }\r\n callback(-1);\r\n };\r\n reader.readAsArrayBuffer(fileData);\r\n },\r\n\r\n // Derived from https://stackoverflow.com/a/40867559, cc by-sa\r\n _imgToCanvasWithOrientation(img, rawWidth, rawHeight, orientation) {\r\n var canvas = document.createElement('canvas');\r\n if (orientation > 4) {\r\n canvas.width = rawHeight;\r\n canvas.height = rawWidth;\r\n } else {\r\n canvas.width = rawWidth;\r\n canvas.height = rawHeight;\r\n }\r\n\r\n if (orientation > 1) {\r\n console.log(\"EXIF orientation = \" + orientation + \", rotating picture\");\r\n }\r\n\r\n var ctx = canvas.getContext('2d');\r\n switch (orientation) {\r\n case 2: ctx.transform(-1, 0, 0, 1, rawWidth, 0); break;\r\n case 3: ctx.transform(-1, 0, 0, -1, rawWidth, rawHeight); break;\r\n case 4: ctx.transform(1, 0, 0, -1, 0, rawHeight); break;\r\n case 5: ctx.transform(0, 1, 1, 0, 0, 0); break;\r\n case 6: ctx.transform(0, 1, -1, 0, rawHeight, 0); break;\r\n case 7: ctx.transform(0, -1, -1, 0, rawHeight, rawWidth); break;\r\n case 8: ctx.transform(0, -1, 1, 0, 0, rawWidth); break;\r\n }\r\n ctx.drawImage(img, 0, 0, rawWidth, rawHeight);\r\n return canvas;\r\n }\r\n\r\n //#endregion\r\n};","import dialogPolyfill from 'dialog-polyfill';\r\n\r\nconst _elements = {\r\n dialog: null, // The dialog instance which will be reused.\r\n header: null,\r\n content: null,\r\n actions: null\r\n};\r\nconst _currentActionKeys = []; // Keyboard keys that we'll react to, set on init.\r\n\r\nfunction init(header, content, actions, actionKeys) {\r\n // If the dialog hasn't been created yet then do so now.\r\n if (!_elements.dialog) {\r\n init_createDialog();\r\n }\r\n\r\n // Dialog was (or has now) been created, so now we can set the content appropriately...\r\n\r\n init_setHeader(header);\r\n init_setContent(content);\r\n init_setActions(actions);\r\n init_setActionKeys(actionKeys);\r\n}\r\nfunction init_createDialog(){\r\n // Create the dialog.\r\n _elements.dialog = document.createElement('dialog');\r\n _elements.dialog.classList.add('lag-dialog');\r\n _elements.dialog.tabIndex = -1; // Needed so dialog is a focusable element and therefore keydown works, while -1 makes it so user CANT tab focus it.\r\n\r\n // Add keyboard handler or optional action keys.\r\n _elements.dialog.addEventListener('keydown', handleKeydown);\r\n\r\n // Create and append child elements...\r\n\r\n _elements.header = document.createElement('header');\r\n _elements.header.classList.add('lag-dialog-header');\r\n _elements.dialog.appendChild(_elements.header);\r\n\r\n _elements.content = document.createElement('div');\r\n _elements.content.classList.add('lag-dialog-content');\r\n _elements.dialog.appendChild(_elements.content);\r\n\r\n _elements.actions = document.createElement('div');\r\n _elements.actions.classList.add('lag-dialog-actions');\r\n _elements.dialog.appendChild(_elements.actions);\r\n\r\n // Append dialog to body (first position).\r\n document.body.insertBefore(_elements.dialog, document.body.firstChild);\r\n // Polyfill the dialog, is not supported everywhere (as of this writing).\r\n dialogPolyfill.registerDialog(_elements.dialog);\r\n}\r\nfunction init_setHeader(header) {\r\n _elements.header.innerText = header;\r\n _elements.header.hidden = !header;\r\n}\r\nfunction init_setContent(content) {\r\n _elements.content.innerHTML = ''; // Clear content.\r\n _elements.content.hidden = !content;\r\n if (!content) return;\r\n if (content.root && content.root instanceof DocumentFragment) content = content.root; // When content is a TemplateInstance produced by templatizer.\r\n\r\n if (typeof content === 'string') {\r\n _elements.content.innerText = content; // innerText will turn \\n chars into
(unlike textContent)\r\n }\r\n else if (content instanceof Element || content instanceof DocumentFragment) {\r\n _elements.content.appendChild(content);\r\n }\r\n else { // Invalid type for content.\r\n _elements.content.hidden = true;\r\n }\r\n}\r\nfunction init_setActions(actions) {\r\n _elements.actions.innerHTML = '';\r\n _elements.actions.hidden = !actions;\r\n\r\n if (typeof actions === 'string') {\r\n init_addAction(0, actions);\r\n }\r\n else if (actions instanceof Array) {\r\n // For each action we want to add a button.\r\n for (let i = 0; i < actions.length; ++i) {\r\n init_addAction(i, actions[i]);\r\n }\r\n }\r\n else { // Invalid type for actions.\r\n _elements.actions.hidden = true;\r\n }\r\n\r\n const primaryButton = _elements.actions.lastElementChild;\r\n if (primaryButton) primaryButton.classList.add('lag-dialog-actions-primary');\r\n}\r\nfunction init_addAction(index, text) {\r\n // If no text then don't add a button, but don't error either as we want to allow\r\n // gaps in the indexes if desired, this allows buttons to be conditionally omitted without changing the indexes.\r\n if (!text) return;\r\n\r\n const button = document.createElement('button');\r\n button.innerText = text;\r\n\r\n button.addEventListener('click', _ev => context.close(index));\r\n\r\n _elements.actions.appendChild(button);\r\n}\r\nfunction init_setActionKeys(actionKeys) {\r\n if (!actionKeys) { return; } // No actionKeys, abort.\r\n\r\n if (typeof actionKeys === 'string') {\r\n actionKeys = [actionKeys]; // Just a single value, normalize to array.\r\n }\r\n\r\n if (actionKeys instanceof Array) {\r\n _currentActionKeys.splice(0, _currentActionKeys.length, ...actionKeys); // Replace with new actionKeys.\r\n }\r\n else { // Invalid type for actionKeys.\r\n _currentActionKeys.splice(0, _currentActionKeys.length); // Clear.\r\n }\r\n}\r\n\r\nfunction openDialog() {\r\n // If already open then don't do it again (errors in chrome if you do).\r\n if (!_elements.dialog.open) {\r\n _elements.dialog.showModal();\r\n _elements.actions.querySelectorAll('button').forEach(ele => ele.blur());\r\n }\r\n}\r\n\r\nfunction handleKeydown(ev) {\r\n if (ev && ev.key && _currentActionKeys.includes(ev.key)) {\r\n ev.preventDefault(); // The native/polyfilled dialog will handle some events (eg Escape), so prevent that.\r\n\r\n context.close(ev.key);\r\n }\r\n}\r\n\r\nconst context = {\r\n _callback: null,\r\n\r\n then(callback) {\r\n if (!callback || typeof callback !== 'function') {\r\n this._callback = null;\r\n return;\r\n }\r\n\r\n return new Promise(res => {\r\n this._callback = (choice) => {\r\n const val = callback ? callback(choice, _elements.content, this) : choice;\r\n\r\n // If val is defined but NOT a promise but DOES have a 'then' method,\r\n // then resolve with that then call's result rather than the val (thenable object) itself.\r\n // This allows 'thenable' objects to behave like a promise.\r\n if (val && !(val instanceof Promise) && val.then instanceof Function)\r\n val.then(v => res(v));\r\n else\r\n res(val);\r\n };\r\n });\r\n },\r\n\r\n /**\r\n * Manually close the dialog. Normally the user would click one of the action buttons which will close the dialog,\r\n * however you can forceably close the dialog via this close method.\r\n */\r\n close(choice) {\r\n _elements.dialog.close();\r\n\r\n if (this._callback) {\r\n return this._callback(choice);\r\n }\r\n else return choice;\r\n },\r\n\r\n /**\r\n * Manually re-open the dialog. This is generally not used since calling the dialog(...) function will automatically\r\n * open the dialog anyways, but this method is useful to re-open a dialog without having to re-initialize it from scratch.\r\n *\r\n * IMPORTANT: The 'then' method of dialog takes a callback, this callback WILL be called each time the dialog is closed,\r\n * even if you use this reopen call. HOWEVER, the promise returned by the 'then' method will ONLY RESOLVE ONCE, as promises\r\n * cannot resolve more than one time. So if you're relying on the promise's resolution it will only occur the first time the dialog closes.\r\n * Eg: dialog(...).then(dialogCallback).then(promiseCallback); // The dialogCallback will execute every close, but the promiseCallback will only execute on the first time.\r\n */\r\n reopen() {\r\n openDialog();\r\n }\r\n}\r\n\r\n/**\r\n * Shows a dialog according to provided arguments. You may omit content argument if desired, eg:\r\n * dialog('Hello', 'Close')\r\n * dialog('Hello', ['No', 'Yes'])\r\n * dialog('Hello', 'Hope you are well', 'Close')\r\n * dialog('Hello', 'Hope you are well', ['No', 'Yes'])\r\n * dialog('Hello', 'Hope you are well', ['No', 'Yes'], ['Enter', 'Escape'])\r\n *\r\n * @param {String} header - Mandatory header text.\r\n * @param {String} [content] - Optional content displayed below the header. Usually a string but an Element or DocumentFragment can also be provided.\r\n * @param {Object} actions - Actions string/array/null. Buttons will be created with the specified text(s).\r\n * All buttons will close the dialog automatically and trigger the dialog's then method (if provided).\r\n * @param {Object} actionKeys - Key events to handle where the values provided match event.key, eg event.key === 'Enter'.\r\n *\r\n * Note that the dialog call doesnt actually return a Promise object, the then method is a custom implementation which itself returns a Promise.\r\n * That Promise will return your callback's return value (which was passed into the then method), or if no callback then it will return the choice value.\r\n * The callback specified to the then method takes one parameter receiving the resulting button choice (ie button's index as per the actions array)\r\n * or the event.key value on key event if the key value was specified in actionKeys. Eg:\r\n *\r\n * dialog('Hello', 'Hope you are well', ['Cancel', 'Panic', 'Confirm'], ['Enter']).then(choice => {\r\n * switch(choice) { case 0: cancel(); break; case 1: panic(); break; case 2: confirm(); break; case 'Enter': enterTheDragon(); break; default: break; }\r\n * });\r\n */\r\nexport function dialog(header, content, actions, actionKeys) {\r\n // Overload logic - if dialog(header, actions) then need to adjust argument values accordingly.\r\n if (actions === undefined && content && (typeof content === 'string' || content instanceof Array)) {\r\n actions = content;\r\n content = null;\r\n }\r\n\r\n context._callback = null; // Clear any previous callback.\r\n\r\n init(header, content, actions, actionKeys);\r\n\r\n openDialog();\r\n\r\n return context;\r\n}","import { templatize } from '@polymer/polymer/lib/utils/templatize.js';\r\n\r\nexport const template = {\r\n stampAndReplace: (templateElement, initData) => {\r\n if (!templateElement) return null;\r\n\r\n const templateInstance = templatize(templateElement);\r\n const templateStamp = new templateInstance(initData);\r\n const frag = templateStamp.root;\r\n\r\n // Replace the