{"version":3,"file":"app-9e164259.xxxxxxxx.bundle.js","mappings":"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","sources":["webpack://iadviser/./src/resources/plugins/aurelia-table/au-table-pagination.html","webpack://iadviser/./src/resources/plugins/aurelia-table/au-table-pagination.ts","webpack://iadviser/./src/resources/plugins/aurelia-table/au-table-select.ts","webpack://iadviser/./src/resources/plugins/aurelia-table/au-table-sort.ts","webpack://iadviser/./src/resources/plugins/aurelia-table/au-table.ts","webpack://iadviser/./src/resources/plugins/aurelia-table/index.ts","webpack://iadviser/./src/resources/plugins/easter-eggs/easter-eggs.ts","webpack://iadviser/./src/resources/plugins/feature-flags/default-feature-flags.ts","webpack://iadviser/./src/resources/plugins/feature-flags/feature-flags-service.ts","webpack://iadviser/./src/resources/plugins/feature-flags/index.ts","webpack://iadviser/./src/resources/plugins/keyboard-sequence/keyboard-sequence.ts","webpack://iadviser/./src/resources/postrender-step.ts","webpack://iadviser/./src/resources/prepareTaskModel.ts","webpack://iadviser/./src/resources/prerender-step.ts","webpack://iadviser/./src/resources/scroll-into-view.ts","webpack://iadviser/./src/resources/services/aurelia-hooks.ts","webpack://iadviser/./src/resources/services/blob-service.ts","webpack://iadviser/./src/resources/services/claims-service.ts","webpack://iadviser/./src/resources/services/client-statement-service.ts","webpack://iadviser/./src/resources/services/ia-toast-service.ts","webpack://iadviser/./src/resources/services/log-service.ts","webpack://iadviser/./src/resources/services/token-service.ts","webpack://iadviser/./src/resources/startup/console-appender.ts","webpack://iadviser/./src/resources/startup/i18tn-validation.ts","webpack://iadviser/./src/resources/tab-scroll.ts","webpack://iadviser/./src/resources/timer.ts"],"sourcesContent":["// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","import { autoinject, bindable, bindingMode, DOM } from 'aurelia-framework';\r\n\r\n@autoinject()\r\nexport class AutPaginationCustomElement {\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) currentPage;\r\n @bindable pageSize;\r\n @bindable totalItems;\r\n @bindable hideSinglePage = true;\r\n @bindable paginationSize;\r\n @bindable boundaryLinks = false;\r\n @bindable firstText = 'First';\r\n @bindable lastText = 'Last';\r\n @bindable directionLinks = true;\r\n @bindable previousText = '<';\r\n @bindable nextText = '>';\r\n @bindable disable = false;\r\n\r\n totalPages = 1;\r\n displayPages = [];\r\n\r\n static inject = [Element];\r\n constructor(private element: Element) {\r\n this.element = element;\r\n }\r\n\r\n bind() {\r\n if (this.currentPage === undefined || this.currentPage === null || this.currentPage < 1) {\r\n this.currentPage = 1;\r\n }\r\n\r\n if (this.pageSize === undefined || this.pageSize === null || this.pageSize < 1) {\r\n this.pageSize = 5;\r\n }\r\n\r\n this.calculatePages();\r\n }\r\n\r\n totalItemsChanged() {\r\n this.calculatePages();\r\n }\r\n\r\n pageSizeChanged() {\r\n this.calculatePages();\r\n }\r\n\r\n currentPageChanged() {\r\n this.calculatePages();\r\n this.dispatchPageChangedEvent();\r\n }\r\n\r\n dispatchPageChangedEvent() {\r\n const event = DOM.createCustomEvent('page-changed', {\r\n bubbles: true,\r\n detail: {\r\n currentPage: this.currentPage,\r\n },\r\n });\r\n this.element.dispatchEvent(event);\r\n }\r\n\r\n calculatePages() {\r\n this.totalPages = this.totalItems <= this.pageSize ? 1 : Math.ceil(this.totalItems / this.pageSize);\r\n\r\n if (isNaN(this.paginationSize) || this.paginationSize <= 0) {\r\n this.displayAllPages();\r\n } else {\r\n this.limitVisiblePages();\r\n }\r\n }\r\n\r\n displayAllPages() {\r\n const displayPages = [];\r\n\r\n for (let i = 1; i <= this.totalPages; i++) {\r\n displayPages.push({\r\n title: i.toString(),\r\n value: i,\r\n });\r\n }\r\n this.displayPages = displayPages;\r\n }\r\n\r\n limitVisiblePages() {\r\n const displayPages = [];\r\n\r\n const totalTiers = Math.ceil(this.totalPages / this.paginationSize);\r\n\r\n const activeTier = Math.ceil(this.currentPage / this.paginationSize);\r\n\r\n const start = (activeTier - 1) * this.paginationSize + 1;\r\n const end = start + this.paginationSize;\r\n\r\n if (activeTier > 1) {\r\n displayPages.push({\r\n title: '...',\r\n value: start - 1,\r\n });\r\n }\r\n\r\n for (let i = start; i < end; i++) {\r\n if (i > this.totalPages) {\r\n break;\r\n }\r\n\r\n displayPages.push({\r\n title: i.toString(),\r\n value: i,\r\n });\r\n }\r\n\r\n if (activeTier < totalTiers) {\r\n displayPages.push({ title: '...', value: end });\r\n }\r\n\r\n this.displayPages = displayPages;\r\n }\r\n\r\n selectPage(page) {\r\n if (page < 1 || page > this.totalPages || page === this.currentPage) {\r\n return;\r\n }\r\n\r\n this.currentPage = page;\r\n }\r\n\r\n nextPage() {\r\n if (this.currentPage < this.totalPages && !this.disable) {\r\n this.currentPage++;\r\n }\r\n }\r\n\r\n previousPage() {\r\n if (this.currentPage > 1 && !this.disable) {\r\n this.currentPage--;\r\n }\r\n }\r\n\r\n firstPage() {\r\n this.currentPage = 1;\r\n }\r\n\r\n lastPage() {\r\n this.currentPage = this.totalPages;\r\n }\r\n}\r\n","import { bindable, bindingMode, BindingEngine, DOM, autoinject } from 'aurelia-framework';\r\nimport {AureliaTableCustomAttribute} from './au-table';\r\n\r\n@autoinject()\r\nexport class AutSelectCustomAttribute {\r\n\r\n @bindable({defaultBindingMode: bindingMode.twoWay})row;\r\n @bindable mode = 'single';\r\n @bindable selectedClass = 'aut-row-selected';\r\n @bindable custom = false;\r\n\r\n selectedSubscription;\r\n rowSelectedListener;\r\n\r\n constructor(private auTable: AureliaTableCustomAttribute, private element: Element, private bindingEngine: BindingEngine) {\r\n this.rowSelectedListener = event => {\r\n this.handleRowSelected(event);\r\n };\r\n }\r\n\r\n attached() {\r\n if (!this.custom) {\r\n (this.element as HTMLElement).style.cursor = 'pointer';\r\n this\r\n .element\r\n .addEventListener('click', this.rowSelectedListener);\r\n }\r\n\r\n this.selectedSubscription = this\r\n .bindingEngine\r\n .propertyObserver(this.row, '$isSelected')\r\n .subscribe(() => this.isSelectedChanged());\r\n\r\n this.setClass();\r\n }\r\n\r\n detached() {\r\n if (!this.custom) {\r\n this\r\n .element\r\n .removeEventListener('click', this.rowSelectedListener);\r\n }\r\n\r\n this\r\n .selectedSubscription\r\n .dispose();\r\n }\r\n\r\n setClass() {\r\n if (this.row.$isSelected) {\r\n this\r\n .element\r\n .classList\r\n .add(this.selectedClass);\r\n } else {\r\n this\r\n .element\r\n .classList\r\n .remove(this.selectedClass);\r\n }\r\n }\r\n\r\n handleRowSelected(event) {\r\n const source = event.target || event.srcElement;\r\n if (source.tagName.toLowerCase() !== 'td') {\r\n return;\r\n }\r\n this.row.$isSelected = this.row.$isSelected\r\n ? false\r\n : true;\r\n }\r\n\r\n dispatchSelectedEvent() {\r\n const selectedEvent = DOM.createCustomEvent('select', {\r\n detail: {\r\n row: this.row\r\n },\r\n bubbles: true\r\n });\r\n this\r\n .element\r\n .dispatchEvent(selectedEvent);\r\n }\r\n\r\n isSelectedChanged() {\r\n this.setClass();\r\n\r\n if (this.row.$isSelected) {\r\n if (this.mode === 'single') {\r\n this.deselectAll();\r\n }\r\n\r\n this.dispatchSelectedEvent();\r\n }\r\n }\r\n\r\n deselectAll() {\r\n this\r\n .auTable\r\n .data\r\n .forEach(item => {\r\n if (item !== this.row) {\r\n item.$isSelected = false;\r\n }\r\n });\r\n }\r\n}\r\n","import { inject, bindable, autoinject } from \"aurelia-framework\";\r\nimport { AureliaTableCustomAttribute } from \"./au-table\";\r\n\r\n@autoinject\r\nexport class AutSortCustomAttribute {\r\n @bindable key;\r\n @bindable custom;\r\n @bindable default;\r\n @bindable callback = () => \"\";\r\n\r\n order = 0;\r\n orderClasses = [\"aut-desc\", \"aut-sortable\", \"aut-asc\"];\r\n\r\n ignoreEvent = false;\r\n\r\n private rowSelectedListener;\r\n private sortChangedListener;\r\n\r\n constructor(private auTable: AureliaTableCustomAttribute, private element: Element) {\r\n this.rowSelectedListener = () => {\r\n this.handleHeaderClicked();\r\n };\r\n\r\n this.sortChangedListener = () => {\r\n this.handleSortChanged();\r\n };\r\n }\r\n\r\n handleSortChanged() {\r\n if (!this.ignoreEvent) {\r\n this.order = 0;\r\n this.setClass();\r\n this.callback();\r\n } else {\r\n this.ignoreEvent = false;\r\n }\r\n }\r\n\r\n attached() {\r\n if (this.key === null && this.custom === null) {\r\n throw new Error(\"Must provide a key or a custom sort function.\");\r\n }\r\n\r\n (this.element as HTMLElement).style.cursor = \"pointer\";\r\n this.element.classList.add(\"aut-sort\");\r\n\r\n this.element.addEventListener(\"click\", this.rowSelectedListener);\r\n this.auTable.addSortChangedListener(this.sortChangedListener);\r\n\r\n this.handleDefault();\r\n this.setClass();\r\n }\r\n\r\n detached() {\r\n this.element.removeEventListener(\"click\", this.rowSelectedListener);\r\n this.auTable.removeSortChangedListener(this.sortChangedListener);\r\n }\r\n\r\n handleDefault() {\r\n if (this.default) {\r\n this.order = this.default === \"desc\" ? -1 : 1;\r\n this.doSort();\r\n }\r\n }\r\n\r\n doSort() {\r\n if (this.auTable.dataSource === \"server\") {\r\n return;\r\n }\r\n this.ignoreEvent = true;\r\n this.auTable.sortChanged(this.key, this.custom, this.order);\r\n }\r\n\r\n setClass() {\r\n this.orderClasses.forEach((next) => this.element.classList.remove(next));\r\n this.element.classList.add(this.orderClasses[this.order + 1]);\r\n }\r\n\r\n handleHeaderClicked() {\r\n this.order = this.order === 0 || this.order === -1 ? this.order + 1 : -1;\r\n this.setClass();\r\n this.doSort();\r\n }\r\n}\r\n","import {\r\n autoinject,\r\n bindable,\r\n bindingMode,\r\n BindingEngine,\r\n} from \"aurelia-framework\";\r\n\r\n@autoinject()\r\nexport class AureliaTableCustomAttribute {\r\n @bindable dataSource = \"local\"; // local, ajax and server;\r\n\r\n @bindable data;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) displayData;\r\n\r\n @bindable filters;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) currentPage;\r\n @bindable pageSize;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) totalItems;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) api;\r\n\r\n isAttached = false;\r\n\r\n sortKey;\r\n sortOrder;\r\n sortChangedListeners = [];\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) beforePagination = [];\r\n\r\n private customSort;\r\n\r\n dataObserver;\r\n filterObservers = [];\r\n\r\n constructor(private bindingEngine: BindingEngine, private element: Element) {\r\n\r\n }\r\n\r\n bind() {\r\n if (Array.isArray(this.data)) {\r\n this.dataObserver = this.bindingEngine\r\n .collectionObserver(this.data)\r\n .subscribe(() => this.applyPlugins());\r\n }\r\n\r\n this.filtersChanged();\r\n\r\n this.api = {\r\n revealItem: (item) => this.revealItem(item),\r\n };\r\n }\r\n\r\n attached() {\r\n this.isAttached = true;\r\n this.applyPlugins();\r\n }\r\n\r\n detached() {\r\n if (this.dataObserver) {\r\n this.dataObserver.dispose();\r\n }\r\n\r\n for (const observer of this.filterObservers) {\r\n observer.dispose();\r\n }\r\n }\r\n\r\n filtersChanged() {\r\n if (Array.isArray(this.filters)) {\r\n for (const observer of this.filterObservers) {\r\n observer.dispose();\r\n }\r\n\r\n for (const filter of this.filters) {\r\n const observer = this.bindingEngine\r\n .propertyObserver(filter, \"value\")\r\n .subscribe(() => this.filterChanged());\r\n this.filterObservers.push(observer);\r\n }\r\n }\r\n }\r\n\r\n filterChanged() {\r\n if (this.dataSource === \"server\") {\r\n return;\r\n }\r\n\r\n if (this.hasPagination()) {\r\n this.currentPage = 1;\r\n }\r\n this.applyPlugins();\r\n }\r\n\r\n currentPageChanged() {\r\n this.applyPlugins();\r\n }\r\n\r\n pageSizeChanged() {\r\n this.applyPlugins();\r\n }\r\n\r\n /**\r\n * Copies the data into the display data\r\n */\r\n getDataCopy() {\r\n return [].concat(this.data);\r\n }\r\n\r\n getPageData(localData) {\r\n if (this.hasPagination()) {\r\n this.beforePagination = [].concat(localData);\r\n return this.doPaginate(localData);\r\n }\r\n\r\n return localData;\r\n }\r\n\r\n /**\r\n * Applies all the plugins to the display data\r\n */\r\n applyPlugins() {\r\n if (!this.isAttached || !this.data || this.dataSource === \"server\") {\r\n return;\r\n }\r\n\r\n let localData = this.getDataCopy();\r\n\r\n if (this.hasFilter()) {\r\n localData = this.doFilter(localData);\r\n }\r\n\r\n if ((this.sortKey || this.customSort) && this.sortOrder !== 0) {\r\n this.doSort(localData);\r\n }\r\n\r\n this.totalItems = localData.length;\r\n\r\n this.displayData = this.getPageData(localData);\r\n }\r\n\r\n doFilter(toFilter) {\r\n const filteredData = [];\r\n\r\n for (const item of toFilter) {\r\n let passed = true;\r\n\r\n for (const filter of this.filters) {\r\n if (!this.passFilter(item, filter)) {\r\n passed = false;\r\n break;\r\n }\r\n }\r\n\r\n if (passed) {\r\n filteredData.push(item);\r\n }\r\n }\r\n\r\n return filteredData;\r\n }\r\n\r\n passFilter(item, filter) {\r\n if (typeof filter.custom === \"function\") {\r\n return filter.custom(filter.value, item);\r\n }\r\n\r\n // No custom filter function (or the 'value' property is invalid\r\n // Execute default filter logic\r\n if (\r\n filter.value === null ||\r\n filter.value === undefined ||\r\n filter.value === \"\" ||\r\n filter.value?.toString()?.trim() === '' ||\r\n !Array.isArray(filter.keys)\r\n ) {\r\n return true;\r\n }\r\n\r\n for (const key of filter.keys) {\r\n let value = this.getPropertyValue(item, key);\r\n\r\n if (value === null || value === undefined) {\r\n return false;\r\n }\r\n\r\n // If we have types, we are dealing with with select dropdowns\r\n if ( filter?.types ) {\r\n if (filter.value === 'true' || filter.value === 'false') {\r\n if (value.toString() === filter.value) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n if (value == filter.value) {\r\n return true;\r\n }\r\n } else {\r\n value = value.toString().toLowerCase();\r\n\r\n if (value.indexOf(filter.value.toString().toLowerCase()) > -1) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n doSort(toSort) {\r\n toSort.sort((a, b) => {\r\n if (typeof this.customSort === \"function\") {\r\n return this.customSort(a, b, this.sortOrder);\r\n }\r\n\r\n let val1;\r\n let val2;\r\n\r\n if (typeof this.sortKey === \"function\") {\r\n val1 = this.sortKey(a, this.sortOrder);\r\n val2 = this.sortKey(b, this.sortOrder);\r\n } else {\r\n val1 = this.getPropertyValue(a, this.sortKey);\r\n val2 = this.getPropertyValue(b, this.sortKey);\r\n }\r\n\r\n if (val1 === null) {\r\n val1 = \"\";\r\n }\r\n if (val2 === null) {\r\n val2 = \"\";\r\n }\r\n\r\n if (this.isNumeric(val1) && this.isNumeric(val2)) {\r\n return (val1 - val2) * this.sortOrder;\r\n }\r\n\r\n const str1 = val1?.toString() ?? '';\r\n const str2 = val2?.toString() ?? '';\r\n\r\n return str1.localeCompare(str2) * this.sortOrder;\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves the value in the object specified by the key path\r\n * @param object the object\r\n * @param keyPath the path\r\n * @returns {*} the value\r\n */\r\n getPropertyValue(object, keyPath) {\r\n keyPath = keyPath.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n keyPath = keyPath.replace(/^\\./, \"\"); // strip a leading dot\r\n const a = keyPath.split(\".\");\r\n for (let i = 0, n = a.length; i < n; ++i) {\r\n const k = a[i];\r\n if (k in object) {\r\n object = object[k];\r\n } else {\r\n return;\r\n }\r\n }\r\n return object;\r\n }\r\n\r\n isNumeric(toCheck) {\r\n return !isNaN(parseFloat(toCheck)) && isFinite(toCheck);\r\n }\r\n\r\n doPaginate(toPaginate) {\r\n if (toPaginate.length <= this.pageSize) {\r\n return toPaginate;\r\n }\r\n\r\n const start = (this.currentPage - 1) * this.pageSize;\r\n\r\n const end = start + this.pageSize;\r\n\r\n return toPaginate.slice(start, end);\r\n }\r\n\r\n hasFilter() {\r\n return Array.isArray(this.filters) && this.filters.length > 0;\r\n }\r\n\r\n hasPagination() {\r\n return this.currentPage > 0;\r\n }\r\n\r\n dataChanged() {\r\n if (this.dataObserver) {\r\n this.dataObserver.dispose();\r\n }\r\n\r\n this.dataObserver = this.bindingEngine\r\n .collectionObserver(this.data)\r\n .subscribe(() => this.applyPlugins());\r\n\r\n this.applyPlugins();\r\n }\r\n\r\n sortChanged(key, custom, order) {\r\n this.sortKey = key;\r\n this.customSort = custom;\r\n this.sortOrder = order;\r\n this.applyPlugins();\r\n this.emitSortChanged();\r\n }\r\n\r\n addSortChangedListener(callback) {\r\n this.sortChangedListeners.push(callback);\r\n }\r\n\r\n removeSortChangedListener(callback) {\r\n this.removeListener(callback, this.sortChangedListeners);\r\n }\r\n\r\n emitSortChanged() {\r\n for (const listener of this.sortChangedListeners) {\r\n listener();\r\n }\r\n }\r\n\r\n removeListener(callback, listeners) {\r\n const index = listeners.indexOf(callback);\r\n\r\n if (index > -1) {\r\n listeners.splice(index, 1);\r\n }\r\n }\r\n\r\n revealItem(item) {\r\n if (!this.hasPagination()) {\r\n return true;\r\n }\r\n\r\n const index = this.beforePagination.indexOf(item);\r\n\r\n if (index === -1) {\r\n return false;\r\n }\r\n\r\n this.currentPage = Math.ceil((index + 1) / this.pageSize);\r\n\r\n return true;\r\n }\r\n}\r\n","import { FrameworkConfiguration, PLATFORM } from 'aurelia-framework';\r\n\r\nexport function configure(config: FrameworkConfiguration) {\r\n config.globalResources([\r\n PLATFORM.moduleName('resources/plugins/aurelia-table/au-table'),\r\n PLATFORM.moduleName('resources/plugins/aurelia-table/au-table-pagination'),\r\n PLATFORM.moduleName('resources/plugins/aurelia-table/au-table-select'),\r\n PLATFORM.moduleName('resources/plugins/aurelia-table/au-table-sort'),\r\n ]);\r\n}\r\n","// Styles are injected inline via JS rather than `import './easter-eggs.css'`.\r\n// v1's webpack config runs ALL .css imports from .ts files through css-loader\r\n// with `modules: { localIdentName: '[local]____[hash:base64:5]' }`, which would\r\n// hash these class names and break the plain-string matching the JS relies on.\r\nconst STYLE_TAG_ID = 'ia-easter-eggs-styles';\r\nconst STYLE_TEXT = `\r\n.ee-rain-layer {\r\n position: fixed;\r\n inset: 0;\r\n pointer-events: none;\r\n overflow: hidden;\r\n z-index: 99999;\r\n contain: strict;\r\n}\r\n.ee-circle {\r\n position: absolute;\r\n top: -10vh;\r\n width: var(--ee-size, 28px);\r\n height: var(--ee-size, 28px);\r\n border-radius: 50%;\r\n background: var(--ee-colour, #f58767);\r\n box-shadow: 0 6px 18px rgba(245, 135, 103, 0.35);\r\n opacity: var(--ee-opacity, 0.92);\r\n will-change: transform;\r\n animation:\r\n ee-fall var(--ee-duration, 3200ms) cubic-bezier(0.45, 0, 0.55, 1) forwards,\r\n ee-drift var(--ee-drift-duration, 1400ms) ease-in-out infinite alternate;\r\n animation-delay: var(--ee-delay, 0ms), var(--ee-delay, 0ms);\r\n}\r\n@keyframes ee-fall {\r\n 0% { transform: translate3d(0, -10vh, 0) rotate(0deg); }\r\n 100% { transform: translate3d(0, 110vh, 0) rotate(360deg); }\r\n}\r\n@keyframes ee-drift {\r\n from { margin-left: calc(-1 * var(--ee-drift-px, 18px)); }\r\n to { margin-left: var(--ee-drift-px, 18px); }\r\n}\r\n.ee-shake { animation: ee-shake 600ms cubic-bezier(0.36, 0.07, 0.19, 0.97); }\r\n@keyframes ee-shake {\r\n 10%, 90% { transform: translate3d(-1px, 0, 0); }\r\n 20%, 80% { transform: translate3d(2px, 0, 0); }\r\n 30%, 50%, 70% { transform: translate3d(-4px, 0, 0); }\r\n 40%, 60% { transform: translate3d(4px, 0, 0); }\r\n}\r\n.ee-scanlines {\r\n position: fixed;\r\n inset: 0;\r\n pointer-events: none;\r\n z-index: 99998;\r\n background:\r\n repeating-linear-gradient(\r\n to bottom,\r\n rgba(0, 0, 0, 0.18) 0,\r\n rgba(0, 0, 0, 0.18) 1px,\r\n transparent 1px,\r\n transparent 3px\r\n );\r\n mix-blend-mode: multiply;\r\n opacity: 0;\r\n animation: ee-scanlines 2400ms steps(36, end) forwards;\r\n}\r\n@keyframes ee-scanlines {\r\n 0% { opacity: 0; }\r\n 8% { opacity: 0.85; }\r\n 10% { opacity: 0.4; }\r\n 14% { opacity: 0.85; }\r\n 85% { opacity: 0.6; }\r\n 100% { opacity: 0; }\r\n}\r\n.ee-snow-layer {\r\n position: absolute;\r\n inset: 0;\r\n pointer-events: none;\r\n overflow: hidden;\r\n z-index: 1;\r\n text-indent: 0;\r\n white-space: normal;\r\n}\r\n.ee-snowflake {\r\n position: absolute;\r\n top: -14px;\r\n width: var(--ee-flake-size, 8px);\r\n height: var(--ee-flake-size, 8px);\r\n font-size: var(--ee-flake-size, 8px);\r\n line-height: 1;\r\n color: #ffffff;\r\n text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);\r\n opacity: var(--ee-flake-opacity, 0.9);\r\n will-change: transform;\r\n animation: ee-snowfall var(--ee-flake-duration, 3600ms) cubic-bezier(0.45, 0.05, 0.55, 0.95) forwards;\r\n --ee-flake-drift: 0px;\r\n text-indent: 0;\r\n white-space: normal;\r\n font-family: sans-serif;\r\n}\r\n@keyframes ee-snowfall {\r\n 0% { transform: translate3d(0, 0, 0) rotate(0deg); }\r\n 100% { transform: translate3d(var(--ee-flake-drift, 0px), 64px, 0) rotate(360deg); }\r\n}\r\n.ee-snowpile {\r\n position: absolute;\r\n inset: 0;\r\n pointer-events: none;\r\n background: linear-gradient(\r\n to bottom,\r\n #ffffff 0,\r\n #f8fafc var(--ee-pile-height, 0px),\r\n rgba(255, 255, 255, 0) var(--ee-pile-height, 0px),\r\n rgba(255, 255, 255, 0) 100%\r\n );\r\n -webkit-mask-image: var(--ee-mask-url, none);\r\n mask-image: var(--ee-mask-url, none);\r\n -webkit-mask-size: 100% 100%;\r\n mask-size: 100% 100%;\r\n -webkit-mask-repeat: no-repeat;\r\n mask-repeat: no-repeat;\r\n}\r\n.ee-santa-hat {\r\n position: absolute;\r\n top: -10px;\r\n left: -6px;\r\n width: 38px;\r\n height: 26px;\r\n transform: rotate(-18deg);\r\n transform-origin: bottom right;\r\n pointer-events: none;\r\n z-index: 2;\r\n filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.25));\r\n}\r\n.ee-santa-hat-svg { width: 100%; height: 100%; display: block; }\r\n.ee-logo-frosty { filter: brightness(1.04) saturate(1.08) hue-rotate(-4deg); }\r\n@media (prefers-reduced-motion: reduce) {\r\n .ee-circle { animation-duration: var(--ee-reduced-duration, 6000ms), 0ms; }\r\n .ee-shake { animation: none; }\r\n .ee-scanlines { animation-duration: 1200ms; animation-timing-function: linear; }\r\n .ee-snowflake { animation-duration: calc(var(--ee-flake-duration, 3600ms) * 2); }\r\n}\r\n`;\r\n\r\nfunction ensureStyles(): void {\r\n if (typeof document === 'undefined') return;\r\n if (document.getElementById(STYLE_TAG_ID)) return;\r\n const tag = document.createElement('style');\r\n tag.id = STYLE_TAG_ID;\r\n tag.textContent = STYLE_TEXT;\r\n document.head.appendChild(tag);\r\n}\r\n\r\nexport interface RainOptions {\r\n count?: number;\r\n durationMs?: number;\r\n sizeRange?: [number, number];\r\n driftRange?: [number, number];\r\n}\r\n\r\nexport interface PlaySequenceOptions extends RainOptions {\r\n shake?: boolean;\r\n scanlines?: boolean;\r\n scanlinesDurationMs?: number;\r\n}\r\n\r\nconst IA_ORANGE = '#F58767';\r\n\r\nexport function rainLogos(options: RainOptions = {}): void {\r\n if (typeof document === 'undefined') return;\r\n ensureStyles();\r\n\r\n const reduced = prefersReducedMotion();\r\n const count = options.count ?? (reduced ? 8 : 32);\r\n const durationMs = options.durationMs ?? (reduced ? 5200 : 3200);\r\n const [minSize, maxSize] = options.sizeRange ?? [16, 44];\r\n const [minDrift, maxDrift] = options.driftRange ?? [8, 28];\r\n\r\n const layer = document.createElement('div');\r\n layer.className = 'ee-rain-layer';\r\n layer.setAttribute('aria-hidden', 'true');\r\n\r\n const maxDelay = Math.floor(durationMs * 0.6);\r\n\r\n for (let i = 0; i < count; i++) {\r\n const circle = document.createElement('span');\r\n circle.className = 'ee-circle';\r\n\r\n const size = randomInt(minSize, maxSize);\r\n const left = Math.random() * 100;\r\n const delay = Math.floor(Math.random() * maxDelay);\r\n const drift = randomInt(minDrift, maxDrift);\r\n const opacity = 0.7 + Math.random() * 0.3;\r\n const totalLifetimeMs = durationMs + delay + 200;\r\n\r\n circle.style.setProperty('--ee-size', `${size}px`);\r\n circle.style.setProperty('--ee-opacity', opacity.toFixed(2));\r\n circle.style.setProperty('--ee-duration', `${durationMs}ms`);\r\n circle.style.setProperty('--ee-reduced-duration', `${Math.max(durationMs, 5200)}ms`);\r\n circle.style.setProperty('--ee-delay', `${delay}ms`);\r\n circle.style.setProperty('--ee-drift-px', `${drift}px`);\r\n circle.style.setProperty('--ee-drift-duration', `${randomInt(900, 2000)}ms`);\r\n circle.style.setProperty('--ee-colour', IA_ORANGE);\r\n circle.style.left = `${left}vw`;\r\n\r\n layer.appendChild(circle);\r\n window.setTimeout(() => circle.remove(), totalLifetimeMs);\r\n }\r\n\r\n document.body.appendChild(layer);\r\n window.setTimeout(() => layer.remove(), durationMs + maxDelay + 800);\r\n}\r\n\r\nexport function shakeScreen(durationMs = 600): void {\r\n if (typeof document === 'undefined') return;\r\n if (prefersReducedMotion()) return;\r\n ensureStyles();\r\n\r\n const target = document.body;\r\n target.classList.add('ee-shake');\r\n window.setTimeout(() => target.classList.remove('ee-shake'), durationMs);\r\n}\r\n\r\nexport function scanlines(durationMs = 2400): void {\r\n if (typeof document === 'undefined') return;\r\n ensureStyles();\r\n\r\n const overlay = document.createElement('div');\r\n overlay.className = 'ee-scanlines';\r\n overlay.setAttribute('aria-hidden', 'true');\r\n overlay.style.animationDuration = `${durationMs}ms`;\r\n document.body.appendChild(overlay);\r\n window.setTimeout(() => overlay.remove(), durationMs + 100);\r\n}\r\n\r\nexport function playFullSequence(options: PlaySequenceOptions = {}): void {\r\n const {\r\n shake = true,\r\n scanlines: showScanlines = true,\r\n scanlinesDurationMs = 2400,\r\n count,\r\n durationMs,\r\n sizeRange,\r\n driftRange,\r\n } = options;\r\n\r\n if (shake) shakeScreen();\r\n if (showScanlines) scanlines(scanlinesDurationMs);\r\n rainLogos({ count: count ?? 60, durationMs: durationMs ?? 3600, sizeRange, driftRange });\r\n}\r\n\r\nfunction prefersReducedMotion(): boolean {\r\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false;\r\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n}\r\n\r\nfunction randomInt(min: number, max: number): number {\r\n return Math.floor(min + Math.random() * (max - min + 1));\r\n}\r\n\r\nexport interface ChristmasModeOptions {\r\n spawnIntervalMs?: number;\r\n reducedSpawnIntervalMs?: number;\r\n flakeDurationMs?: number;\r\n flakeSizeRange?: [number, number];\r\n driftRange?: [number, number];\r\n settleThreshold?: number;\r\n maxPilePx?: number;\r\n maxLiveFlakes?: number;\r\n}\r\n\r\nconst HAT_SVG =\r\n ''\r\n + ''\r\n + ''\r\n + ''\r\n + ''\r\n + ''\r\n + '';\r\n\r\nconst FLAKE_GLYPHS = ['❄', '❅', '❆', '*'];\r\nconst HIDDEN_TEXT_INDENT = '-9999em';\r\n\r\nconst CHRISTMAS_DEFAULTS = {\r\n spawnIntervalMs: 220,\r\n reducedSpawnIntervalMs: 1400,\r\n flakeDurationMs: 3600,\r\n flakeSizeRange: [6, 12] as [number, number],\r\n driftRange: [4, 14] as [number, number],\r\n settleThreshold: 18,\r\n maxPilePx: 10,\r\n maxLiveFlakes: 36,\r\n};\r\n\r\nexport class ChristmasMode {\r\n private readonly options: typeof CHRISTMAS_DEFAULTS;\r\n private logo: HTMLElement | null = null;\r\n private layer: HTMLElement | null = null;\r\n private pile: HTMLElement | null = null;\r\n private hat: HTMLElement | null = null;\r\n private spawnTimer: number | null = null;\r\n private settledCount = 0;\r\n private originalPosition: string | null = null;\r\n private originalOverflow: string | null = null;\r\n private originalTextIndent: string | null = null;\r\n private positionTouched = false;\r\n private overflowTouched = false;\r\n private textIndentTouched = false;\r\n private flakeTimers = new Set();\r\n private flakesInFlight = 0;\r\n\r\n constructor(options: ChristmasModeOptions = {}) {\r\n this.options = {\r\n ...CHRISTMAS_DEFAULTS,\r\n ...options,\r\n flakeSizeRange: options.flakeSizeRange ?? CHRISTMAS_DEFAULTS.flakeSizeRange,\r\n driftRange: options.driftRange ?? CHRISTMAS_DEFAULTS.driftRange,\r\n };\r\n }\r\n\r\n attach(logo: HTMLElement | null | undefined): void {\r\n if (!logo || typeof document === 'undefined') return;\r\n if (this.logo === logo) return;\r\n if (this.logo) this.dispose();\r\n\r\n ensureStyles();\r\n\r\n this.logo = logo;\r\n this.originalPosition = logo.style.position;\r\n this.originalOverflow = logo.style.overflow;\r\n this.originalTextIndent = logo.style.textIndent;\r\n\r\n const computed = getComputedStyle(logo);\r\n if (computed.position === 'static') {\r\n logo.style.position = 'relative';\r\n this.positionTouched = true;\r\n }\r\n if (computed.overflow !== 'visible') {\r\n logo.style.overflow = 'visible';\r\n this.overflowTouched = true;\r\n }\r\n if (computed.textIndent !== HIDDEN_TEXT_INDENT) {\r\n logo.style.textIndent = HIDDEN_TEXT_INDENT;\r\n this.textIndentTouched = true;\r\n }\r\n\r\n const layer = document.createElement('span');\r\n layer.className = 'ee-snow-layer';\r\n layer.setAttribute('aria-hidden', 'true');\r\n\r\n const pile = document.createElement('span');\r\n pile.className = 'ee-snowpile';\r\n pile.style.setProperty('--ee-pile-height', '0px');\r\n const maskUrl = extractBackgroundImageUrl(computed.backgroundImage);\r\n if (maskUrl) {\r\n pile.style.setProperty('--ee-mask-url', `url(\"${maskUrl}\")`);\r\n }\r\n layer.appendChild(pile);\r\n\r\n const hat = document.createElement('span');\r\n hat.className = 'ee-santa-hat';\r\n hat.setAttribute('aria-hidden', 'true');\r\n hat.innerHTML = HAT_SVG;\r\n\r\n logo.appendChild(layer);\r\n logo.appendChild(hat);\r\n logo.classList.add('ee-christmas-active');\r\n\r\n this.layer = layer;\r\n this.pile = pile;\r\n this.hat = hat;\r\n\r\n this.startSpawning();\r\n }\r\n\r\n reset(): void {\r\n this.stopSpawning();\r\n this.clearFlakeTimers();\r\n this.settledCount = 0;\r\n this.flakesInFlight = 0;\r\n if (this.pile) this.pile.style.setProperty('--ee-pile-height', '0px');\r\n if (this.layer) this.layer.querySelectorAll('.ee-snowflake').forEach((n) => n.remove());\r\n if (this.logo) {\r\n this.logo.classList.remove('ee-logo-frosty');\r\n this.startSpawning();\r\n }\r\n }\r\n\r\n dispose(): void {\r\n this.stopSpawning();\r\n this.clearFlakeTimers();\r\n\r\n if (this.logo) {\r\n this.logo.classList.remove('ee-logo-frosty');\r\n this.logo.classList.remove('ee-christmas-active');\r\n if (this.positionTouched) this.logo.style.position = this.originalPosition ?? '';\r\n if (this.overflowTouched) this.logo.style.overflow = this.originalOverflow ?? '';\r\n if (this.textIndentTouched) this.logo.style.textIndent = this.originalTextIndent ?? '';\r\n }\r\n this.layer?.remove();\r\n this.hat?.remove();\r\n\r\n this.logo = null;\r\n this.layer = null;\r\n this.pile = null;\r\n this.hat = null;\r\n this.originalPosition = null;\r\n this.originalOverflow = null;\r\n this.originalTextIndent = null;\r\n this.positionTouched = false;\r\n this.overflowTouched = false;\r\n this.textIndentTouched = false;\r\n this.settledCount = 0;\r\n this.flakesInFlight = 0;\r\n }\r\n\r\n isAttached(): boolean {\r\n return this.logo !== null;\r\n }\r\n\r\n spawnFlake(): void {\r\n if (!this.layer) return;\r\n if (this.flakesInFlight >= this.options.maxLiveFlakes) return;\r\n\r\n const flake = document.createElement('span');\r\n flake.className = 'ee-snowflake';\r\n flake.textContent = FLAKE_GLYPHS[Math.floor(Math.random() * FLAKE_GLYPHS.length)];\r\n\r\n const [minSize, maxSize] = this.options.flakeSizeRange;\r\n const [minDrift, maxDrift] = this.options.driftRange;\r\n const size = randomInt(minSize, maxSize);\r\n const drift = randomInt(minDrift, maxDrift) * (Math.random() < 0.5 ? -1 : 1);\r\n const left = Math.random() * 100;\r\n const variance = Math.floor(this.options.flakeDurationMs * 0.15);\r\n const duration = Math.max(50, this.options.flakeDurationMs + randomInt(-variance, variance));\r\n const opacity = 0.7 + Math.random() * 0.3;\r\n\r\n flake.style.setProperty('--ee-flake-size', `${size}px`);\r\n flake.style.setProperty('--ee-flake-drift', `${drift}px`);\r\n flake.style.setProperty('--ee-flake-duration', `${duration}ms`);\r\n flake.style.setProperty('--ee-flake-opacity', opacity.toFixed(2));\r\n flake.style.left = `${left}%`;\r\n\r\n this.layer.appendChild(flake);\r\n this.flakesInFlight++;\r\n\r\n const timerId = window.setTimeout(() => {\r\n this.flakeTimers.delete(timerId);\r\n flake.remove();\r\n this.flakesInFlight = Math.max(0, this.flakesInFlight - 1);\r\n this.onFlakeSettled();\r\n }, duration);\r\n this.flakeTimers.add(timerId);\r\n }\r\n\r\n private startSpawning(): void {\r\n if (this.spawnTimer !== null) return;\r\n if (typeof window === 'undefined') return;\r\n const interval = prefersReducedMotion() ? this.options.reducedSpawnIntervalMs : this.options.spawnIntervalMs;\r\n this.spawnTimer = window.setInterval(() => this.spawnFlake(), interval);\r\n }\r\n\r\n private stopSpawning(): void {\r\n if (this.spawnTimer === null) return;\r\n window.clearInterval(this.spawnTimer);\r\n this.spawnTimer = null;\r\n }\r\n\r\n private clearFlakeTimers(): void {\r\n this.flakeTimers.forEach((id) => window.clearTimeout(id));\r\n this.flakeTimers.clear();\r\n }\r\n\r\n private onFlakeSettled(): void {\r\n if (!this.logo || !this.pile) return;\r\n this.settledCount++;\r\n const ratio = Math.min(1, this.settledCount / this.options.settleThreshold);\r\n const pileHeight = Math.round(ratio * this.options.maxPilePx);\r\n this.pile.style.setProperty('--ee-pile-height', `${pileHeight}px`);\r\n if (this.settledCount >= this.options.settleThreshold) {\r\n this.logo.classList.add('ee-logo-frosty');\r\n }\r\n }\r\n}\r\n\r\nfunction extractBackgroundImageUrl(value: string | undefined): string | null {\r\n if (!value || value === 'none') return null;\r\n const match = value.match(/url\\(\\s*[\"']?([^\"')]+)[\"']?\\s*\\)/i);\r\n return match ? match[1] : null;\r\n}\r\n","import { FeatureFlag } from 'feature-flags';\r\n\r\nexport const defaultFeatureFlags: Partial> = {\r\n [FeatureFlag.christmas]: false,\r\n};\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { FeatureFlag } from 'feature-flags';\r\nimport {\r\n FeatureFlagChange,\r\n FeatureFlagChangeListener,\r\n FeatureFlagMap,\r\n FeatureFlagState,\r\n IFeatureFlagService,\r\n} from './i-feature-flag';\r\n\r\ntype HeaderSource = Headers | Record;\r\n\r\nconst STORAGE_KEY = 'featureFlags';\r\nconst CHANGE_EVENT_NAME = 'feature-flags:changed';\r\nconst COOKIE_KEYS = ['featureFlags', 'ia_feature_flags'];\r\nconst HEADER_KEYS = ['X-Feature-Flags', 'Feature-Flags', 'X-IA-Feature-Flags'];\r\nconst TRUE_VALUES = ['true', '1', 'yes', 'y', 'on', 'enabled'];\r\nconst FALSE_VALUES = ['false', '0', 'no', 'n', 'off', 'disabled'];\r\n\r\n@autoinject\r\nexport class FeatureFlagService implements IFeatureFlagService {\r\n private codeFlags: FeatureFlagMap = {};\r\n private serverFlags: FeatureFlagMap = {};\r\n private serverCookieFlags: FeatureFlagMap = {};\r\n private serverHeaderFlags: FeatureFlagMap = {};\r\n private memoryFlags: FeatureFlagMap = {};\r\n private listeners: FeatureFlagChangeListener[] = [];\r\n\r\n constructor() {\r\n this.ensureFlagsInitialized();\r\n this.load();\r\n }\r\n\r\n private ensureFlagsInitialized(): void {\r\n if (typeof window === 'undefined') {\r\n return;\r\n }\r\n\r\n if (!window.featureFlags || typeof window.featureFlags !== 'object') {\r\n window.featureFlags = {};\r\n }\r\n }\r\n\r\n public enabled(flag: FeatureFlag): boolean {\r\n this.syncEffectiveFlags();\r\n return this.flags()[flag] === true;\r\n }\r\n\r\n public add(flag: FeatureFlag): void {\r\n this.setLocalOverride(flag, true);\r\n }\r\n\r\n public remove(flag: FeatureFlag): void {\r\n this.setLocalOverride(flag, false);\r\n }\r\n\r\n public all(): FeatureFlagMap {\r\n this.syncEffectiveFlags();\r\n return { ...this.flags() };\r\n }\r\n\r\n public known(): FeatureFlag[] {\r\n return this.knownFlags();\r\n }\r\n\r\n public state(flag: FeatureFlag): FeatureFlagState {\r\n this.syncEffectiveFlags();\r\n return this.createFlagState(flag);\r\n }\r\n\r\n public snapshot(): Partial> {\r\n this.syncEffectiveFlags();\r\n return this.createSnapshot();\r\n }\r\n\r\n public onChange(listener: FeatureFlagChangeListener): () => void {\r\n this.listeners.push(listener);\r\n\r\n return () => {\r\n this.listeners = this.listeners.filter((candidate) => candidate !== listener);\r\n };\r\n }\r\n\r\n public load(defaults: FeatureFlagMap = {}): void {\r\n this.codeFlags = this.normaliseFlagRecord(defaults);\r\n this.serverCookieFlags = this.readCookieFlags();\r\n this.serverHeaderFlags = {};\r\n this.syncServerFlags();\r\n this.syncEffectiveFlags();\r\n }\r\n\r\n public refresh(): void {\r\n this.serverCookieFlags = this.readCookieFlags();\r\n this.syncServerFlags();\r\n this.syncEffectiveFlags();\r\n }\r\n\r\n public applyServerFlagsFromResponse(response: Response): void {\r\n if (!response) {\r\n return;\r\n }\r\n\r\n this.applyServerFlagsFromCookie();\r\n this.applyServerFlagsFromHeaders(response.headers);\r\n }\r\n\r\n public applyServerFlagsFromHeaders(headers?: HeaderSource | null): void {\r\n this.applyServerHeaderFlags(this.readHeaderFlags(headers));\r\n }\r\n\r\n public applyServerFlagsFromCookie(cookie?: string): void {\r\n this.applyServerCookieFlags(this.readCookieFlags(cookie));\r\n }\r\n\r\n public setLocalOverride(flag: FeatureFlag, value: boolean): void {\r\n if (!this.isKnownFlag(flag)) {\r\n return;\r\n }\r\n\r\n this.persistLocalFlag(flag, value);\r\n this.syncEffectiveFlags();\r\n }\r\n\r\n public clearLocalOverride(flag: FeatureFlag): void {\r\n if (!this.isKnownFlag(flag)) {\r\n return;\r\n }\r\n\r\n const savedFlags = this.readSavedFlags();\r\n if (!this.hasFlag(savedFlags, flag)) {\r\n return;\r\n }\r\n\r\n delete savedFlags[flag];\r\n this.writeSavedFlags(savedFlags);\r\n this.syncEffectiveFlags();\r\n }\r\n\r\n public clearLocalOverrides(): void {\r\n this.writeSavedFlags({});\r\n this.syncEffectiveFlags();\r\n }\r\n\r\n private persistLocalFlag(flag: FeatureFlag, value: boolean): void {\r\n try {\r\n if (typeof localStorage !== 'undefined') {\r\n const savedFlags = this.readSavedFlags();\r\n savedFlags[flag] = value;\r\n this.writeSavedFlags(savedFlags);\r\n }\r\n } catch {\r\n // Storage may be blocked or full; keep the in-memory flags usable.\r\n }\r\n }\r\n\r\n private writeSavedFlags(flags: FeatureFlagMap): void {\r\n try {\r\n if (typeof localStorage === 'undefined') {\r\n return;\r\n }\r\n\r\n const normalisedFlags = this.normaliseFlagRecord(flags);\r\n if (Object.keys(normalisedFlags).length === 0) {\r\n localStorage.removeItem(STORAGE_KEY);\r\n return;\r\n }\r\n\r\n localStorage.setItem(STORAGE_KEY, JSON.stringify(normalisedFlags));\r\n } catch {\r\n // Storage may be blocked or full; keep the in-memory flags usable.\r\n }\r\n }\r\n\r\n private applyServerCookieFlags(flags: FeatureFlagMap): void {\r\n if (Object.keys(flags).length === 0) {\r\n return;\r\n }\r\n\r\n this.mergeFlags(this.serverCookieFlags, flags);\r\n this.syncServerFlags();\r\n this.syncEffectiveFlags();\r\n }\r\n\r\n private applyServerHeaderFlags(flags: FeatureFlagMap): void {\r\n if (Object.keys(flags).length === 0) {\r\n return;\r\n }\r\n\r\n this.mergeFlags(this.serverHeaderFlags, flags);\r\n this.syncServerFlags();\r\n this.syncEffectiveFlags();\r\n }\r\n\r\n private syncServerFlags(): void {\r\n const flags: FeatureFlagMap = {};\r\n\r\n this.mergeFlags(flags, this.serverCookieFlags);\r\n this.mergeFlags(flags, this.serverHeaderFlags);\r\n\r\n this.serverFlags = flags;\r\n }\r\n\r\n private syncEffectiveFlags(): void {\r\n const previousFlags = this.flags();\r\n const nextFlags = this.normaliseFlagRecord(this.effectiveFlags());\r\n const changed = this.serialiseFlags(previousFlags) !== this.serialiseFlags(nextFlags);\r\n\r\n this.replaceFlags(nextFlags);\r\n\r\n if (changed) {\r\n this.notifyChange(nextFlags);\r\n }\r\n }\r\n\r\n private effectiveFlags(): FeatureFlagMap {\r\n const flags: FeatureFlagMap = {};\r\n\r\n this.mergeFlags(flags, this.codeFlags);\r\n this.mergeFlags(flags, this.serverFlags);\r\n this.mergeFlags(flags, this.readSavedFlags());\r\n\r\n return flags;\r\n }\r\n\r\n private flags(): FeatureFlagMap {\r\n if (typeof window === 'undefined') {\r\n return this.memoryFlags;\r\n }\r\n\r\n this.ensureFlagsInitialized();\r\n return window.featureFlags!;\r\n }\r\n\r\n private replaceFlags(flags: FeatureFlagMap): void {\r\n const nextFlags = this.normaliseFlagRecord(flags);\r\n\r\n if (typeof window === 'undefined') {\r\n this.memoryFlags = nextFlags;\r\n return;\r\n }\r\n\r\n window.featureFlags = nextFlags;\r\n }\r\n\r\n private readSavedFlags(): FeatureFlagMap {\r\n try {\r\n if (typeof localStorage === 'undefined') {\r\n return {};\r\n }\r\n\r\n return this.parseFlagPayload(localStorage.getItem(STORAGE_KEY));\r\n } catch {\r\n return {};\r\n }\r\n }\r\n\r\n private readHeaderFlags(headers?: HeaderSource | null): FeatureFlagMap {\r\n if (!headers) {\r\n return {};\r\n }\r\n\r\n const flags: FeatureFlagMap = {};\r\n\r\n for (const headerKey of HEADER_KEYS) {\r\n this.mergeFlags(flags, this.parseFlagPayload(this.getHeaderValue(headers, headerKey)));\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n private readCookieFlags(cookie = this.getDocumentCookie()): FeatureFlagMap {\r\n const cookies = this.parseCookieHeader(cookie);\r\n const flags: FeatureFlagMap = {};\r\n\r\n for (const cookieKey of COOKIE_KEYS) {\r\n if (cookies[cookieKey]) {\r\n this.mergeFlags(flags, this.parseFlagPayload(cookies[cookieKey]));\r\n }\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n private getHeaderValue(headers: HeaderSource, key: string): string | null {\r\n if (typeof (headers as Headers).get === 'function') {\r\n try {\r\n return (headers as Headers).get(key);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n const record = headers as Record;\r\n const targetKey = key.toLowerCase();\r\n\r\n for (const recordKey of Object.keys(record)) {\r\n if (recordKey.toLowerCase() === targetKey) {\r\n return record[recordKey] ?? null;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private getDocumentCookie(): string {\r\n try {\r\n return typeof document !== 'undefined' ? document.cookie : '';\r\n } catch {\r\n return '';\r\n }\r\n }\r\n\r\n private parseCookieHeader(cookie: string): Record {\r\n const cookies: Record = {};\r\n\r\n for (const part of (cookie || '').split(';')) {\r\n const separatorIndex = part.indexOf('=');\r\n if (separatorIndex === -1) {\r\n continue;\r\n }\r\n\r\n const key = part.slice(0, separatorIndex).trim();\r\n const value = part.slice(separatorIndex + 1).trim();\r\n\r\n if (key) {\r\n cookies[key] = this.safeDecode(value);\r\n }\r\n }\r\n\r\n return cookies;\r\n }\r\n\r\n private parseFlagPayload(payload: string | null | undefined): FeatureFlagMap {\r\n const text = this.safeDecode(payload || '').trim();\r\n if (!text) {\r\n return {};\r\n }\r\n\r\n const jsonFlags = this.parseJsonFlags(text);\r\n if (jsonFlags) {\r\n return jsonFlags;\r\n }\r\n\r\n return this.parseDelimitedFlags(text);\r\n }\r\n\r\n private parseJsonFlags(text: string): FeatureFlagMap | null {\r\n try {\r\n const parsed = JSON.parse(text);\r\n\r\n if (Array.isArray(parsed)) {\r\n const flags: FeatureFlagMap = {};\r\n for (const flagName of parsed) {\r\n const flag = this.normaliseFlagName(String(flagName));\r\n if (flag) {\r\n flags[flag] = true;\r\n }\r\n }\r\n return flags;\r\n }\r\n\r\n if (parsed && typeof parsed === 'object') {\r\n return this.normaliseFlagRecord(parsed as Record);\r\n }\r\n } catch {\r\n return null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private parseDelimitedFlags(text: string): FeatureFlagMap {\r\n const flags: FeatureFlagMap = {};\r\n\r\n for (const part of text.split(/[;,]/)) {\r\n const entry = part.trim();\r\n if (!entry) {\r\n continue;\r\n }\r\n\r\n const separatorIndex = this.findFlagValueSeparator(entry);\r\n const name = separatorIndex === -1 ? entry : entry.slice(0, separatorIndex);\r\n const rawValue = separatorIndex === -1 ? 'true' : entry.slice(separatorIndex + 1);\r\n const flag = this.normaliseFlagName(name);\r\n const value = this.parseBoolean(rawValue);\r\n\r\n if (flag && value !== null) {\r\n flags[flag] = value;\r\n }\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n private findFlagValueSeparator(entry: string): number {\r\n const equalsIndex = entry.indexOf('=');\r\n const colonIndex = entry.indexOf(':');\r\n\r\n if (equalsIndex === -1) {\r\n return colonIndex;\r\n }\r\n\r\n if (colonIndex === -1) {\r\n return equalsIndex;\r\n }\r\n\r\n return Math.min(equalsIndex, colonIndex);\r\n }\r\n\r\n private normaliseFlagRecord(record: Record): FeatureFlagMap {\r\n const flags: FeatureFlagMap = {};\r\n\r\n for (const key of Object.keys(record)) {\r\n const flag = this.normaliseFlagName(key);\r\n const value = this.parseBoolean(record[key]);\r\n\r\n if (flag && value !== null) {\r\n flags[flag] = value;\r\n }\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n private normaliseFlagName(name: string): FeatureFlag | null {\r\n const normalisedName = this.trimQuotes(name).toLowerCase();\r\n\r\n for (const flagKey of Object.keys(FeatureFlag)) {\r\n const flag = FeatureFlag[flagKey as keyof typeof FeatureFlag];\r\n if (flagKey.toLowerCase() === normalisedName || flag.toLowerCase() === normalisedName) {\r\n return flag;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private parseBoolean(value: unknown): boolean | null {\r\n if (typeof value === 'boolean') {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n if (value === 1) {\r\n return true;\r\n }\r\n\r\n if (value === 0) {\r\n return false;\r\n }\r\n }\r\n\r\n if (typeof value === 'string') {\r\n const normalisedValue = this.trimQuotes(value).toLowerCase();\r\n if (TRUE_VALUES.indexOf(normalisedValue) !== -1) {\r\n return true;\r\n }\r\n\r\n if (FALSE_VALUES.indexOf(normalisedValue) !== -1) {\r\n return false;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private mergeFlags(target: FeatureFlagMap, source: FeatureFlagMap): void {\r\n for (const flag of this.knownFlags()) {\r\n if (Object.prototype.hasOwnProperty.call(source, flag)) {\r\n target[flag] = source[flag];\r\n }\r\n }\r\n }\r\n\r\n private createSnapshot(): Partial> {\r\n const states: Partial> = {};\r\n\r\n for (const flag of this.knownFlags()) {\r\n states[flag] = this.createFlagState(flag);\r\n }\r\n\r\n return states;\r\n }\r\n\r\n private createFlagState(flag: FeatureFlag): FeatureFlagState {\r\n const localFlags = this.readSavedFlags();\r\n const hasLocalValue = this.hasFlag(localFlags, flag);\r\n const hasServerValue = this.hasFlag(this.serverFlags, flag);\r\n const hasCodeValue = this.hasFlag(this.codeFlags, flag);\r\n const value = this.flags()[flag] === true;\r\n\r\n return {\r\n flag,\r\n enabled: value,\r\n value,\r\n source: hasLocalValue ? 'local' : hasServerValue ? 'server' : hasCodeValue ? 'code' : 'none',\r\n codeValue: hasCodeValue ? this.codeFlags[flag] : undefined,\r\n serverValue: hasServerValue ? this.serverFlags[flag] : undefined,\r\n localValue: hasLocalValue ? localFlags[flag] : undefined,\r\n };\r\n }\r\n\r\n private notifyChange(flags: FeatureFlagMap): void {\r\n const change: FeatureFlagChange = {\r\n flags: { ...flags },\r\n states: this.createSnapshot(),\r\n };\r\n\r\n for (const listener of this.listeners) {\r\n try {\r\n listener(change);\r\n } catch {\r\n // Listener failures should not make feature flag state unusable.\r\n }\r\n }\r\n\r\n try {\r\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function') {\r\n window.dispatchEvent(new CustomEvent(CHANGE_EVENT_NAME, { detail: change }));\r\n }\r\n } catch {\r\n // Some test/runtime environments do not support CustomEvent.\r\n }\r\n }\r\n\r\n private serialiseFlags(flags: FeatureFlagMap): string {\r\n return this.knownFlags()\r\n .map((flag) => {\r\n if (!this.hasFlag(flags, flag)) {\r\n return `${flag}:`;\r\n }\r\n\r\n return `${flag}:${flags[flag] === true ? '1' : '0'}`;\r\n })\r\n .join('|');\r\n }\r\n\r\n private knownFlags(): FeatureFlag[] {\r\n return Object.keys(FeatureFlag).map((flagKey) => FeatureFlag[flagKey as keyof typeof FeatureFlag]);\r\n }\r\n\r\n private isKnownFlag(flag: FeatureFlag): boolean {\r\n return this.knownFlags().indexOf(flag) !== -1;\r\n }\r\n\r\n private hasFlag(flags: FeatureFlagMap, flag: FeatureFlag): boolean {\r\n return Object.prototype.hasOwnProperty.call(flags, flag);\r\n }\r\n\r\n private trimQuotes(value: string): string {\r\n return value.trim().replace(/^['\"]|['\"]$/g, '');\r\n }\r\n\r\n private safeDecode(value: string): string {\r\n try {\r\n return decodeURIComponent(value);\r\n } catch {\r\n return value;\r\n }\r\n }\r\n}\r\n","import { Container, FrameworkConfiguration } from 'aurelia-framework';\r\nimport { FeatureFlag as FeatureFlags } from 'feature-flags';\r\nimport { FeatureFlagService } from './feature-flags-service';\r\nimport { FeatureFlagMap, FeatureFlagState, IFeatureFlagService } from './i-feature-flag';\r\n\r\ninterface FeatureFlagsPluginConfiguration {\r\n defaultFlags?: Partial>;\r\n}\r\n\r\ninterface FeatureFlagGuardOptions {\r\n whenDisabled?: (this: This, ...args: Args) => Return;\r\n}\r\n\r\nlet configuredContainer: Container | null = null;\r\n\r\nexport function configure(config: FrameworkConfiguration, options: FeatureFlagsPluginConfiguration = {}) {\r\n const featureFlagService = config.container.get(FeatureFlagService);\r\n configuredContainer = config.container;\r\n\r\n // Register handlers for feature flags\r\n for (const flagKey in FeatureFlags) {\r\n if (Object.prototype.hasOwnProperty.call(FeatureFlags, flagKey)) {\r\n const flagIdentifier = FeatureFlags[flagKey];\r\n\r\n config.container.registerHandler(flagIdentifier, () => {\r\n return featureFlagService.enabled(flagIdentifier);\r\n });\r\n }\r\n }\r\n\r\n // Load default feature flags if provided\r\n if (options.defaultFlags) {\r\n featureFlagService.load(options.defaultFlags);\r\n }\r\n}\r\n\r\nexport function featureFlag(flagIdentifier: FeatureFlags) {\r\n return function featureFlagPropertyDecorator(target: unknown, key: string | symbol): void {\r\n if (typeof key === 'undefined') {\r\n throw new TypeError('@featureFlag requires a property key.');\r\n }\r\n\r\n defineFlagBackedProperty(target as Record, key, () =>\r\n resolveFeatureFlagService().enabled(flagIdentifier)\r\n );\r\n };\r\n}\r\n\r\nexport function featureFlagState(flagIdentifier: FeatureFlags) {\r\n return function featureFlagStatePropertyDecorator(target: unknown, key: string | symbol): void {\r\n if (typeof key === 'undefined') {\r\n throw new TypeError('@featureFlagState requires a property key.');\r\n }\r\n\r\n defineFlagBackedProperty(target as Record, key, () =>\r\n resolveFeatureFlagService().state(flagIdentifier)\r\n );\r\n };\r\n}\r\n\r\nexport function featureFlagsSnapshot() {\r\n return function featureFlagsSnapshotPropertyDecorator(target: unknown, key: string | symbol): void {\r\n if (typeof key === 'undefined') {\r\n throw new TypeError('@featureFlagsSnapshot requires a property key.');\r\n }\r\n\r\n defineFlagBackedProperty(target as Record, key, () =>\r\n resolveFeatureFlagService().snapshot()\r\n );\r\n };\r\n}\r\n\r\nexport function requiresFeatureFlag(\r\n flagIdentifier: FeatureFlags,\r\n options: FeatureFlagGuardOptions = {},\r\n) {\r\n return function requiresFeatureFlagMethodDecorator(\r\n target: unknown,\r\n key: string | symbol,\r\n descriptor: PropertyDescriptor,\r\n ): PropertyDescriptor {\r\n if (!descriptor || typeof descriptor.value !== 'function') {\r\n throw new TypeError('@requiresFeatureFlag can only decorate methods.');\r\n }\r\n\r\n const originalMethod = descriptor.value;\r\n descriptor.value = function (...args: unknown[]) {\r\n if (resolveFeatureFlagService().enabled(flagIdentifier)) {\r\n return originalMethod.apply(this, args);\r\n }\r\n\r\n return options.whenDisabled?.apply(this, args);\r\n };\r\n\r\n return descriptor;\r\n };\r\n}\r\n\r\nfunction defineFlagBackedProperty(\r\n target: Record,\r\n key: string | symbol,\r\n getter: () => TValue,\r\n): void {\r\n if (!Reflect.deleteProperty(target, key)) {\r\n // ensure property cleared even if configurable false\r\n delete target[key];\r\n }\r\n\r\n Object.defineProperty(target, key, {\r\n get: getter,\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n}\r\n\r\nfunction resolveFeatureFlagService(): IFeatureFlagService {\r\n const container = Container.instance ?? configuredContainer;\r\n\r\n if (!container) {\r\n throw new Error('No Aurelia container is available. Ensure the feature flag plugin is configured before use.');\r\n }\r\n\r\n return container.get(FeatureFlagService);\r\n}\r\n\r\nexport type {\r\n FeatureFlagGuardOptions,\r\n FeatureFlagMap,\r\n FeatureFlagState,\r\n};\r\n","type SequenceCallback = () => void;\r\n\r\nexport class KeyboardSequenceDetector {\r\n private sequences: Map = new Map();\r\n private listenerAttached = false;\r\n\r\n constructor() {\r\n // The constructor no longer automatically calls listenForKeySequence to allow for lazy loading\r\n }\r\n\r\n public registerSequence(label: string, keySequence: string[], callback: SequenceCallback): void {\r\n if (!this.listenerAttached) {\r\n this.listenForKeySequence();\r\n this.listenerAttached = true;\r\n }\r\n this.sequences.set(label, { sequence: keySequence, callback: callback, currentIndex: 0 });\r\n }\r\n\r\n public removeSequence(label: string): void {\r\n if (this.sequences.delete(label) && this.sequences.size === 0 && this.listenerAttached) {\r\n document.removeEventListener('keydown', this.handleKeydownBound);\r\n this.listenerAttached = false;\r\n }\r\n }\r\n\r\n private listenForKeySequence(): void {\r\n this.handleKeydownBound = this.handleKeydown.bind(this); // Store the bound function for removal\r\n document.addEventListener('keydown', this.handleKeydownBound);\r\n }\r\n\r\n private handleKeydownBound: (this: this, ev: KeyboardEvent) => any; // Define the type for the bound function\r\n\r\n private handleKeydown(event: KeyboardEvent): void {\r\n this.sequences.forEach((value, key) => {\r\n if (event.key === value.sequence[value.currentIndex]) {\r\n value.currentIndex++;\r\n\r\n if (value.currentIndex === value.sequence.length) {\r\n value.callback();\r\n value.currentIndex = 0; // Reset index to allow the sequence to be entered again.\r\n }\r\n } else {\r\n if (value.sequence.includes(event.key)) {\r\n value.currentIndex = 0; // Reset index if the sequence is broken.\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\n// Usage\r\n// const detector = new KeyboardSequenceDetector();\r\n\r\n// // Register the Konami Code with a label\r\n// detector.registerSequence('konami', ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'], () => {\r\n// console.log('Konami Code entered!');\r\n// // Trigger any action here\r\n// });\r\n\r\n// Remove the Konami Code sequence by its label\r\n// detector.removeSequence('konami');\r\n","/* istanbul ignore file */\r\n\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { autoinject } from 'aurelia-dependency-injection';\r\nimport { Next, NavigationInstruction } from 'aurelia-router';\r\nimport { TaskQueue } from 'aurelia-framework';\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { getAppClientType, getAppClientInstance } from './parse-jwt';\r\n\r\n@autoinject()\r\nexport class PostRenderStep {\r\n constructor(private taskQueue: TaskQueue, private http: HttpClient, private ea: EventAggregator) {}\r\n\r\n async run(navigationInstruction: NavigationInstruction, next: Next) {\r\n this.taskQueue.queueMicroTask(() => {\r\n PLATFORM.global.scrollTo(0, 0);\r\n });\r\n\r\n if (!window.location.href.includes('localhost')) {\r\n const appClientType = getAppClientType();\r\n const appClientInstance = getAppClientInstance();\r\n const url = `/index_${appClientType.toLowerCase()}_${appClientInstance.toLowerCase()}.html`;\r\n\r\n await this.http\r\n .fetch(url, {\r\n method: 'HEAD',\r\n headers: {\r\n 'If-Modified-Since': localStorage.getItem('indexLastModified'),\r\n },\r\n })\r\n .then((response) => {\r\n if (response.headers.get('Last-modified')) {\r\n localStorage.setItem('indexLastModified', response.headers.get('Last-modified'));\r\n }\r\n\r\n if (response.status === 200) {\r\n this.ea.publish('promptForRefresh');\r\n }\r\n });\r\n }\r\n\r\n return next();\r\n }\r\n}\r\n","/* istanbul ignore file */\r\n\r\nimport { TaskNotificationTypes } from './enums';\r\nimport moment from 'moment';\r\n\r\nexport function prepareTasks(taskNotificationTypeId, tasks){\r\n switch (taskNotificationTypeId) {\r\n case TaskNotificationTypes.ALL:\r\n\r\n break;\r\n case TaskNotificationTypes.OVERDUE:\r\n tasks.forEach(x => {\r\n x.overdue=true;\r\n if(x.dueDate.split('T')[0] === moment().subtract('1', 'day').format('YYYY-MM-DD')){\r\n x.yesterday = true;\r\n x.dueDateLabel = 'Yesterday'\r\n }\r\n });\r\n break;\r\n case TaskNotificationTypes.DUE_TODAY:\r\n tasks.forEach(x => {\r\n x.duetoday=true;\r\n x.dueDateLabel = 'Today'\r\n });\r\n break;\r\n case TaskNotificationTypes.UPCOMING:\r\n tasks.forEach(x => {\r\n x.upcoming=true;\r\n\r\n if(x.dueDate.split('T')[0] === moment().add('1', 'day').format('YYYY-MM-DD')){\r\n x.tomorrow = true;\r\n x.dueDateLabel = 'Tomorrow'\r\n }\r\n });\r\n break;\r\n case TaskNotificationTypes.COMPLETE:\r\n tasks.forEach(x => {\r\n x.isCompletedTask=true;\r\n });\r\n // const result = (await response.json()).map(x => {\r\n // return {\r\n // isCompletedTask: true,\r\n // ...x, }\r\n // } );\r\n break;\r\n }\r\n\r\n return tasks;\r\n}\r\n","/* istanbul ignore file */\r\n\r\nexport class PreRenderStep {\r\n run(navigationInstruction, next) {\r\n const currentRoute = navigationInstruction.config;\r\n\r\n const currentRouteName = currentRoute.name;\r\n\r\n document.body.className = '';\r\n document.body.classList.add(`route--${currentRouteName}`);\r\n\r\n return next();\r\n }\r\n}\r\n","/* istanbul ignore file */\r\n\r\nexport function scrollIntoView(tableClassName, rowClassName = 'table-row-selected_') {\r\n setTimeout(() => {\r\n const tables = Array.from(document.querySelectorAll('table:not(.aurelia-hide)'));\r\n const table = tables.find((x) => x.className.includes(tableClassName)) as HTMLElement;\r\n if (table) {\r\n const tableRows = Array.from(table.querySelectorAll('tbody>tr'));\r\n const selectedTr = tableRows.find((x) => x.className.includes(rowClassName)) as HTMLElement;\r\n selectedTr?.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n }\r\n }, 0);\r\n}\r\n\r\nexport function scrollQCEErrorIntoView() {\r\n setTimeout(() => {\r\n const errors = document.querySelectorAll('qce .auFormInputError');\r\n if (errors.length) {\r\n errors[0].scrollIntoView({behavior: \"smooth\", block: \"center\", });\r\n }\r\n }, 0);\r\n}\r\n","import { ActionCallback, FilterCallback, Hook } from 'interfaces/i-aurelia-hooks';\r\n\r\nexport class AureliaHooks {\r\n private actions: Record = {};\r\n private filters: Record = {};\r\n\r\n addAction(name: string, callback: ActionCallback, priority = 10): void {\r\n this.actions[name] = this.actions[name] ?? [];\r\n const newHook = { priority, callback };\r\n this.actions[name] = [...this.actions[name], newHook].sort((a, b) => a.priority - b.priority);\r\n }\r\n\r\n addFilter(name: string, callback: FilterCallback, priority = 10): void {\r\n this.filters[name] = this.filters[name] ?? [];\r\n const newHook = { priority, callback };\r\n this.filters[name] = [...this.filters[name], newHook].sort((a, b) => a.priority - b.priority);\r\n }\r\n\r\n hasAction(name: string): boolean {\r\n return this.actions[name] !== undefined;\r\n }\r\n\r\n hasFilter(name: string): boolean {\r\n return this.filters[name] !== undefined;\r\n }\r\n\r\n getActions(name: string): Hook[] {\r\n return this.actions[name] ?? [];\r\n }\r\n\r\n getFilters(name: string): Hook[] {\r\n return this.filters[name] ?? [];\r\n }\r\n\r\n removeAction(name: string, callback: ActionCallback): void {\r\n if (this.actions[name]) {\r\n this.actions[name] = this.actions[name].filter((val) => val.callback !== callback);\r\n\r\n if (this.actions[name].length === 0) {\r\n delete this.actions[name];\r\n }\r\n }\r\n }\r\n\r\n removeAllActions(name: string): void {\r\n if (this.actions[name]) {\r\n delete this.actions[name];\r\n }\r\n }\r\n\r\n removeFilter(name: string, callback: FilterCallback): void {\r\n if (this.filters[name]) {\r\n this.filters[name] = this.filters[name].filter((val) => val.callback !== callback);\r\n\r\n if (this.filters[name].length === 0) {\r\n delete this.filters[name];\r\n }\r\n }\r\n }\r\n\r\n removeAllFilters(name: string): void {\r\n if (this.filters[name]) {\r\n delete this.filters[name];\r\n }\r\n }\r\n\r\n doAction(name: string, ...args: unknown[]): void {\r\n if (this.actions[name] && this.actions[name].length) {\r\n this.actions[name].forEach((hook) => {\r\n try {\r\n (hook.callback as ActionCallback)(...args);\r\n } catch (error) {\r\n console.error(`Error in action \"${name}\":`, error);\r\n }\r\n });\r\n }\r\n }\r\n\r\n async applyFilter(name: string, value: T, ...args: unknown[]): Promise {\r\n if (this.filters[name] && this.filters[name].length) {\r\n for (const hook of this.filters[name]) {\r\n try {\r\n const result = (hook.callback as FilterCallback)(value, ...args);\r\n\r\n // Check if the result is a promise or not\r\n if (result instanceof Promise) {\r\n value = await result;\r\n } else {\r\n value = result as T;\r\n }\r\n } catch (error) {\r\n console.error(`Error in filter \"${name}\":`, error);\r\n throw error; // Re-throw the error to propagate it\r\n }\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient, json } from 'aurelia-fetch-client';\r\nimport { environment } from 'environment';\r\n\r\n@autoinject()\r\nexport class BlobService {\r\n constructor(private http: HttpClient) {}\r\n\r\n async downloadBlobFromUrl(fileName: string, url: string): Promise {\r\n if (this.isValidParams(fileName, url)) {\r\n const blob = await this.urlToBlob({ fileName, blobUrl: url });\r\n if (blob) {\r\n this.downloadFile(blob, fileName);\r\n }\r\n } else {\r\n console.error('Invalid params passed to BlobService');\r\n }\r\n }\r\n\r\n private isValidParams(fileName: string, url: string): boolean {\r\n return typeof url === 'string' && url.includes('http') && typeof fileName === 'string' && fileName.length > 0;\r\n }\r\n\r\n downloadFile(blob: Blob, fileName: string): void {\r\n const a = document.createElement('a');\r\n a.download = fileName;\r\n a.href = window.URL.createObjectURL(blob);\r\n document.body.appendChild(a);\r\n a.click();\r\n a.remove();\r\n }\r\n\r\n private async urlToBlob(body): Promise {\r\n const endpoint = environment.utils.urlToOctetStrem;\r\n const uri = endpoint.uri();\r\n\r\n try {\r\n const result = await this.http.fetch(uri, {\r\n body: json(body),\r\n headers: endpoint.headers,\r\n method: endpoint.method,\r\n });\r\n\r\n if (result.ok) {\r\n return result.blob();\r\n }\r\n } catch (error) {\r\n console.error(error.message);\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-framework';\r\nimport { HttpClient } from 'aurelia-fetch-client';\r\nimport { Store } from 'aurelia-store';\r\nimport { State } from 'store/state';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { environment } from 'environment';\r\n\r\n@autoinject()\r\nexport class ClaimsService {\r\n subscription: Subscription;\r\n claims: string[] = [];\r\n\r\n constructor(public store: Store, public http: HttpClient) {\r\n this.subscription = this.store.state.subscribe((state: State) => {\r\n if (state && Array.isArray(state.userClaims)) {\r\n this.claims = state.userClaims;\r\n }\r\n });\r\n }\r\n\r\n async getClaims() {\r\n try {\r\n const response = await this.http.fetch(`${environment.apiHost}/api/users/current/claims`);\r\n\r\n const { claims } = await response.json();\r\n const expiry = response.headers.get('X-Expiry');\r\n const expiryDate = new Date(expiry).getTime();\r\n\r\n return { claims: Array.isArray(claims) ? claims : [], expiryDate };\r\n } catch (e) {\r\n return { claims: [], expiryDate: null };\r\n }\r\n }\r\n\r\n /**\r\n * Returns true or false if the user has one or more claims\r\n *\r\n * @param claim string || string[]\r\n */\r\n has(claim: string | string[]): boolean {\r\n if (!Array.isArray(this.claims)) {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(claim)) {\r\n return claim.every((value) => this.claims.includes(value));\r\n }\r\n\r\n return this.claims.includes(claim);\r\n }\r\n\r\n async hasAsync(claim: string | string[]): Promise {\r\n if (!Array.isArray(this.claims) || !this.claims.length) {\r\n const { expiryDate, claims } = await this.getClaims();\r\n this.claims = Array.isArray(claims) ? claims : [];\r\n localStorage.setItem('iadviserClaimsExpiry', expiryDate?.toString() ?? '');\r\n localStorage.setItem('iAdviserUserClaims', JSON.stringify(this.claims));\r\n }\r\n\r\n const dateNow = new Date().getTime();\r\n const expiry = parseInt(localStorage.getItem('iadviserClaimsExpiry') ?? '');\r\n\r\n if (isNaN(expiry) || dateNow > expiry) {\r\n const { expiryDate, claims } = await this.getClaims();\r\n this.claims = Array.isArray(claims) ? claims : [];\r\n localStorage.setItem('iadviserClaimsExpiry', expiryDate?.toString() ?? '');\r\n localStorage.setItem('iAdviserUserClaims', JSON.stringify(this.claims));\r\n }\r\n\r\n if (!Array.isArray(this.claims)) {\r\n return false;\r\n }\r\n\r\n if (Array.isArray(claim)) {\r\n return claim.some((value) => this.claims.includes(value));\r\n }\r\n\r\n return this.claims.includes(claim);\r\n }\r\n}\r\n","import { HttpClient, json } from 'aurelia-fetch-client';\r\nimport { autoinject } from 'aurelia-framework';\r\nimport { environment } from 'environment';\r\nimport { RequestMethod } from 'resources/endpoints/endpoints';\r\nimport { PLATFORM } from 'aurelia-pal';\r\nimport { log } from './log-service';\r\nimport { BlobService } from 'resources/services/blob-service';\r\nimport { DistributionType } from 'components/document-pack/constants';\r\nimport { AppRouter } from 'aurelia-router';\r\nimport { ModalService } from 'components/modal/modal-service';\r\nimport { IaMailtoModal } from 'components/ia-mailto-modal/ia-mailto-modal';\r\nexport interface StatusResult {\r\n entityId: number;\r\n reportId: number;\r\n reportSystemKey: string;\r\n generationStatus: number;\r\n docCreationProgress: number;\r\n reportCategory: number;\r\n statusMessage: string;\r\n lastException: {\r\n message: string;\r\n };\r\n isCompletedState: boolean;\r\n GenerationStatusString: string;\r\n reportCreationProgress: string;\r\n index: number;\r\n id: string;\r\n}\r\n\r\n@autoinject()\r\nexport class ClientStatementService {\r\n public processingBrowserPopupsDisabled: boolean;\r\n public processingError: string;\r\n private isProcessing = false;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private blobService: BlobService,\r\n private router: AppRouter,\r\n private modal: ModalService,\r\n ) {}\r\n\r\n async getDocument(params, distributionType: DistributionType) {\r\n if (!this.isProcessing) {\r\n this.beginProcessing();\r\n try {\r\n const documentUrl = await this.postDocumentGeneration(params);\r\n\r\n if (typeof documentUrl !== 'undefined') {\r\n this.processDocumentUrl(documentUrl, distributionType, params);\r\n } else {\r\n log.error('The requested document failed to generate, please try again.');\r\n }\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n this.endProcessing();\r\n }\r\n }\r\n\r\n beginProcessing() {\r\n this.isProcessing = true;\r\n this.processingError = '';\r\n this.processingBrowserPopupsDisabled = false;\r\n }\r\n\r\n endProcessing() {\r\n this.isProcessing = false;\r\n }\r\n\r\n async processDocumentUrl(documentUrl: string, distributionType: DistributionType, params: any) {\r\n switch (distributionType) {\r\n case DistributionType.Preview:\r\n await this.openPreview(documentUrl);\r\n break;\r\n case DistributionType.Print:\r\n await this.fetchAndPrintDocument(documentUrl);\r\n break;\r\n case DistributionType.Download:\r\n case DistributionType.DownloadEmail:\r\n await this.downloadAndEmailDocument(documentUrl, distributionType, params.ClientId);\r\n break;\r\n }\r\n }\r\n\r\n async openPreview(documentUrl: string) {\r\n const clientName = document.title.split('|')[0].trim();\r\n\r\n const routeFragment = this.router.generate('pdfPreview', {\r\n title: `Statement | ${clientName}`,\r\n url: documentUrl,\r\n });\r\n\r\n const newWindow = PLATFORM.global.open(routeFragment, '_blank');\r\n if (newWindow === null) {\r\n this.processingBrowserPopupsDisabled = true;\r\n }\r\n }\r\n\r\n async fetchAndPrintDocument(documentUrl: string) {\r\n const response = await fetch(documentUrl);\r\n const fileBlob = await response.blob();\r\n const documentUrlFromBlob = URL.createObjectURL(fileBlob);\r\n const iframeContainer = document.getElementById('iframe-container') as HTMLIFrameElement;\r\n const iframe = this.getOrCreateIframe(iframeContainer, 'iframe-print-preview');\r\n\r\n iframe.src = documentUrlFromBlob;\r\n iframe.onload = async () => {\r\n iframe.focus();\r\n iframe.contentWindow.print();\r\n };\r\n\r\n if (iframeContainer.childElementCount === 0) {\r\n iframeContainer.appendChild(iframe);\r\n }\r\n }\r\n\r\n getOrCreateIframe(iframeContainer: HTMLIFrameElement, iframeId: string): HTMLIFrameElement {\r\n if (iframeContainer.childElementCount === 0) {\r\n const iframe = document.createElement('iframe');\r\n iframe.id = iframeId;\r\n return iframe;\r\n }\r\n\r\n return document.getElementById(iframeId) as HTMLIFrameElement;\r\n }\r\n\r\n async downloadAndEmailDocument(documentUrl: string, distributionType: DistributionType, clientId: number) {\r\n const clientName = document.title.split('|')[0].replace(' - ', '_').replace(' ', '_').trim();\r\n\r\n this.blobService.downloadBlobFromUrl(`Client_Statement_${clientName}.pdf`, documentUrl);\r\n\r\n if (distributionType === DistributionType.DownloadEmail) {\r\n const model = { clientId };\r\n this.modal.show().content(IaMailtoModal, { mode: 'client-statement', model }).withOptions({ type: 'wide-lg' });\r\n }\r\n }\r\n\r\n async postDocumentGeneration(params) {\r\n try {\r\n const queue = await this.http.fetch(`${environment.apiHost}/reportapi/reports/generate/queue`, {\r\n method: RequestMethod.post,\r\n body: json(params),\r\n });\r\n\r\n const queueGuid = await queue.json();\r\n\r\n if (queue.status === 200) {\r\n const statusResult = await this.pollDocumentStatus(queueGuid, 50, 2000);\r\n let documentUrl;\r\n\r\n if (statusResult.GenerationStatusString === 'Ready') {\r\n documentUrl = await this.getDocumentUrl(queueGuid);\r\n }\r\n\r\n if (statusResult.GenerationStatusString === 'Error') {\r\n this.processError(statusResult.lastException.message);\r\n }\r\n\r\n return documentUrl;\r\n } else {\r\n throw new Error(queueGuid.ExceptionMessage);\r\n }\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n }\r\n\r\n processError(errorMessage: string) {\r\n this.processingError = errorMessage;\r\n\r\n if (errorMessage.toLowerCase() === 'no data') {\r\n this.processingError = 'No data returned for client statement.';\r\n }\r\n }\r\n\r\n async pollDocumentStatus(queueGuid, attempts, delayInMs) {\r\n let completed = false;\r\n let statusResult: StatusResult;\r\n let counter = 0;\r\n\r\n while (!completed && counter < attempts) {\r\n await this.timer(delayInMs); // delay status check\r\n statusResult = await this.getDocumentCreationStatus(queueGuid);\r\n completed = statusResult.isCompletedState;\r\n counter++;\r\n }\r\n\r\n return statusResult;\r\n }\r\n\r\n async getDocumentCreationStatus(queueGuid) {\r\n try {\r\n const result = await this.http.fetch(`${environment.apiHost}/reportapi/reports/generate/${queueGuid}/status`, {\r\n method: RequestMethod.get,\r\n });\r\n return await result.json();\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n }\r\n\r\n async getDocumentUrl(queueGuid) {\r\n try {\r\n const result = await this.http.fetch(`${environment.apiHost}/reportapi/reports/generate/${queueGuid}/url/pdf`, {\r\n method: RequestMethod.get,\r\n });\r\n return await result.json();\r\n } catch (error) {\r\n log.error(error);\r\n }\r\n }\r\n\r\n async timer(msec): Promise {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve();\r\n }, msec);\r\n });\r\n }\r\n}\r\n","import '!style-loader!css-loader!izitoast/dist/css/iziToast.css';\r\nimport '!style-loader!css-loader!styles/ia-toast.css';\r\nimport { computedFrom } from 'aurelia-binding';\r\nimport { autoinject } from 'aurelia-dependency-injection';\r\nimport { TaskQueue } from 'aurelia-framework';\r\nimport izitoast, { IziToastProgress, IziToastSettings } from 'izitoast';\r\n\r\n/**\r\n * `iaAnyware` toast messenger service for global/component user messages\r\n *\r\n * Message types include success, error, warning, info, progress and question\r\n *\r\n * @see {@link IaToast} interface for available functionality (methods and options)\r\n * @see {@link router-layouts/client-nav/components.ClientDetails ClientDetails} component for an example usage\r\n */\r\n@autoinject()\r\nexport class IaToastService implements IaToast {\r\n private defaultOptions: IaToastOptions = {\r\n class: 'ia-toast',\r\n position: 'bottomRight',\r\n theme: 'light',\r\n layout: 1,\r\n title: '',\r\n titleColor: '#FFFFFF',\r\n messageColor: '#FFFFFF',\r\n iconColor: '#FFFFFF',\r\n backgroundColor: '#09A47A',\r\n close: true,\r\n closeOnEscape: false,\r\n closeOnClick: false,\r\n timeout: 3000,\r\n overlay: false,\r\n overlayClose: false,\r\n overlayColor: 'rgba(255,255,255,0.24)',\r\n transitionIn: 'fadeInUp',\r\n transitionOut: 'fadeOutDown',\r\n animateInside: false,\r\n progressBar: true,\r\n image: '',\r\n imageWidth: 50,\r\n maxWidth: null,\r\n displayMode: 0,\r\n drag: false,\r\n };\r\n\r\n private loader: IaToastMessage;\r\n private loaderOpen = false;\r\n\r\n constructor(private taskQueue: TaskQueue) {\r\n if (!izitoast)\r\n throw new Error('IziToast: Sorry but it seems the IziToast plugin is not available for the IaToastService!');\r\n izitoast.settings(this.defaultOptions);\r\n if (this.loader && this.loader.overrideOptions) return;\r\n this.bootstrapLoader();\r\n }\r\n\r\n setDefaultOptions(options: IaToastOptions): void {\r\n this.defaultOptions = { ...this.defaultOptions, ...options };\r\n izitoast.settings(this.defaultOptions);\r\n }\r\n\r\n getDefaultOptions(): IaToastOptions {\r\n return this.defaultOptions;\r\n }\r\n\r\n destroyAllToasts(): void {\r\n izitoast.destroy();\r\n }\r\n\r\n @computedFrom('loaderOpen')\r\n get isLoaderOpen() {\r\n return this.loaderOpen;\r\n }\r\n\r\n show(toast: IaToastMessage, toastMessageIsRequired = true): boolean | void {\r\n return izitoast.show(this.mergeToastSettings(toast, toastMessageIsRequired));\r\n }\r\n\r\n hide(toastRef: string | HTMLDivElement, toast?: IaToastMessage, closedBy?: string): void {\r\n let toastElement: HTMLDivElement;\r\n\r\n if (typeof toastRef === 'string' || toastRef instanceof String) {\r\n toastElement = document.querySelector(toastRef.toString());\r\n } else {\r\n toastElement = toastRef;\r\n }\r\n\r\n if (!toastElement) return;\r\n izitoast.hide(this.mergeToastSettings(toast, false), toastElement, closedBy);\r\n }\r\n\r\n public info(toast: IaToastMessage): void {\r\n toast.overrideOptions.timeout = toast.overrideOptions.timeout == undefined ? false : toast.overrideOptions.timeout;\r\n toast.overrideOptions.layout = 2;\r\n\r\n izitoast.info(this.mergeToastSettings(toast));\r\n }\r\n\r\n progress(toastRef: HTMLDivElement, toast?: IaToastMessage, callback?: () => void): IaToastProgress {\r\n return izitoast.progress(this.mergeToastSettings(toast, false), toastRef, callback);\r\n }\r\n\r\n success(toast: IaToastMessage): void {\r\n toast.overrideOptions.layout = 2;\r\n\r\n izitoast.success(this.mergeToastSettings(toast));\r\n }\r\n\r\n warning(toast: IaToastMessage): void {\r\n toast.overrideOptions.timeout = toast.overrideOptions.timeout == undefined ? false : toast.overrideOptions.timeout;\r\n toast.overrideOptions.layout = 2;\r\n\r\n izitoast.warning(this.mergeToastSettings(toast));\r\n }\r\n\r\n error(toast: IaToastMessage): void {\r\n toast.overrideOptions.timeout = toast.overrideOptions.timeout == undefined ? false : toast.overrideOptions.timeout;\r\n toast.overrideOptions.layout = 2;\r\n\r\n izitoast.error(this.mergeToastSettings(toast));\r\n\r\n this.restoreDefaultSettings(toast);\r\n }\r\n\r\n question(toast: IaToastMessage): void {\r\n izitoast.question(this.mergeToastSettings(toast));\r\n }\r\n\r\n getLoaderPath(loader: Loader) {\r\n return require(`img/loaders/${loader}`);\r\n }\r\n\r\n showLoader(loader?: Loader, loaderText = '') {\r\n this.taskQueue.queueMicroTask(() => {\r\n if (this.loaderOpen) return;\r\n\r\n if (loader) {\r\n this.loader.overrideOptions.image = this.getLoaderPath(loader);\r\n }\r\n this.loader.overrideOptions.$loaderText = loaderText;\r\n\r\n this.show(this.loader, false);\r\n this.loaderOpen = true;\r\n });\r\n }\r\n\r\n hideLoader(showStatusIcon = false, statusSuccess = true, statusIconTimeout = 1000) {\r\n this.taskQueue.queueMicroTask(() => {\r\n if (!this.loaderOpen) return;\r\n\r\n this.hide(`.${this.loader.overrideOptions.class}`);\r\n this.loaderOpen = false;\r\n\r\n if (showStatusIcon) {\r\n this.showStatusIcon(statusSuccess, statusIconTimeout);\r\n }\r\n });\r\n }\r\n\r\n private showStatusIcon(statusSuccess: boolean, statusIconTimeout: number) {\r\n const existingImage = this.loader.overrideOptions.image;\r\n const existingTransIn = this.loader.overrideOptions.transitionIn;\r\n const existingTimeout = this.loader.overrideOptions.timeout;\r\n const existingOnClosed = this.loader.overrideOptions.onClosed;\r\n\r\n this.loader.overrideOptions.timeout = statusIconTimeout;\r\n this.loader.overrideOptions.transitionIn = statusSuccess ? 'bounceInUp' : 'bounceInDown';\r\n\r\n this.loader.overrideOptions.onClosed = () => {\r\n this.hide(`.${this.loader.overrideOptions.class}`);\r\n this.loader.overrideOptions.image = existingImage;\r\n this.loader.overrideOptions.transitionIn = existingTransIn;\r\n this.loader.overrideOptions.timeout = existingTimeout;\r\n this.loader.overrideOptions.onClosed = existingOnClosed;\r\n };\r\n\r\n this.showLoader(statusSuccess ? Loader.GreenTick : Loader.RedCross);\r\n }\r\n\r\n private bootstrapLoader(loader = Loader.TailSpin) {\r\n this.loader = new IaToastMessage();\r\n\r\n this.loader.overrideOptions = {\r\n id: 'iaToastLoader',\r\n overlay: true,\r\n overlayClose: false,\r\n overlayColor: 'rgba(255,255,255,0.84)',\r\n close: false,\r\n class: 'ia-loader-toast',\r\n timeout: false,\r\n closeOnClick: false,\r\n closeOnEscape: false,\r\n position: 'center',\r\n transitionIn: 'fadeIn',\r\n transitionOut: 'fadeOut',\r\n animateInside: false,\r\n drag: false,\r\n backgroundColor: 'transparent',\r\n progressBar: false,\r\n image: this.getLoaderPath(loader),\r\n imageWidth: 50,\r\n maxWidth: 50,\r\n displayMode: 1,\r\n $loaderText: '',\r\n $loaderTextClass: 'ia-loader-text',\r\n };\r\n\r\n this.loader.overrideOptions.onOpening = () => {\r\n this.addLoaderText();\r\n this.loaderOpen = true;\r\n };\r\n\r\n this.loader.overrideOptions.onClosing = () => {\r\n this.removeLoaderText();\r\n this.loaderOpen = false;\r\n };\r\n }\r\n\r\n private addLoaderText() {\r\n if (!this.loader.overrideOptions.$loaderText) return;\r\n\r\n const loaderText = document.createElement('h3');\r\n loaderText.classList.add(this.loader.overrideOptions.$loaderTextClass);\r\n\r\n loaderText.appendChild(document.createTextNode(this.loader.overrideOptions.$loaderText));\r\n document.querySelector(`.${this.loader.overrideOptions.class}`)?.parentNode?.appendChild(loaderText);\r\n }\r\n\r\n private removeLoaderText() {\r\n if (!this.loader.overrideOptions.$loaderText) return;\r\n\r\n document.querySelector(`.${this.loader.overrideOptions.$loaderTextClass}`)?.remove();\r\n this.loader.overrideOptions.$loaderText = '';\r\n }\r\n\r\n private restoreDefaultSettings(toast: IaToastMessage) {\r\n toast.overrideOptions = { ...this.defaultOptions };\r\n }\r\n\r\n private mergeToastSettings(toast: IaToastMessage, toastMessageIsRequired = true): IziToastSettings {\r\n if (toastMessageIsRequired && (!toast || !toast.message || !toast.message.length)) {\r\n throw new Error('IA Toast: Toast message cannot be empty if \"toastMessageIsRequired\" is true!');\r\n }\r\n return toast ? { ...toast.overrideOptions, ...{ message: toast.message || '', title: toast.title || '' } } : {};\r\n }\r\n}\r\n\r\n/**\r\n * From `T` pick all properties except the set of properties `K`\r\n */\r\nexport type Omit = Pick>;\r\n/**\r\n * Various toast options available to change the toast behaviour\r\n */\r\nexport type IaToastOptions = Omit;\r\n/**\r\n * Toast progress bar interface\r\n */\r\nexport type IaToastProgress = IziToastProgress;\r\n\r\n/**\r\n * Method parameters object for different types of toast messages\r\n */\r\nexport class IaToastMessage {\r\n constructor(\r\n /**\r\n * Toast message body - required except for `progress` and `hide`\r\n */\r\n public message?: string,\r\n /**\r\n * Toast message title (optional)\r\n */\r\n public title?: string,\r\n /**\r\n * Toast message override options (optional)\r\n */\r\n public overrideOptions: IaToastOptions & { $loaderText?: string; $loaderTextClass?: string } = {},\r\n ) {}\r\n}\r\n\r\n/**\r\n * iaAnyware toast messenger interface for various message types\r\n */\r\nexport interface IaToast {\r\n /**\r\n * Sets the default options object for all toast messages\r\n *\r\n * Merges the provided options with existing standard defaults\r\n *\r\n * @param options default option values\r\n */\r\n setDefaultOptions(options: IaToastOptions): void;\r\n /**\r\n * Gets the current default options object for all toast messages\r\n */\r\n getDefaultOptions(): IaToastOptions;\r\n /**\r\n * Destroys all toast messages\r\n */\r\n destroyAllToasts(): void;\r\n /**\r\n * Opens a generic toast message; returns false if toast cannot be opened\r\n */\r\n show(toast: IaToastMessage): void | boolean;\r\n /**\r\n * Closes the specific toast message identified by `toastRef`\r\n *\r\n * Toast parameter `IaToastMessage` is optional and defaults to `{}`\r\n *\r\n * Set new `hide` options by passing `IaToastMessage.overrideOptions`\r\n *\r\n * @param toastRef Toast html element or string selector to close\r\n * @param toast toast message params (optional); default = `{}`\r\n * @param closedBy Custom closed by meta information (optional)\r\n */\r\n hide(toastRef: HTMLDivElement | string, toast?: IaToastMessage, closedBy?: string): void;\r\n /**\r\n * Toast control progress bar time identified by `toastRef`\r\n *\r\n * Toast parameter `IaToastMessage` is optional and defaults to `{}`\r\n *\r\n * Set `progress` options by passing `IaToastMessage.overrideOptions`\r\n *\r\n * @param toastRef Toast html element\r\n * @param toast toast message params (optional); default = `{}`\r\n * @param callback handler triggered for `IaToast.progress(...)`\r\n */\r\n progress(toastRef: HTMLDivElement, toast?: IaToastMessage, callback?: () => void): IaToastProgress;\r\n /**\r\n * Shows an information toast message\r\n */\r\n info(toast: IaToastMessage): void;\r\n /**\r\n * Shows a success toast message\r\n */\r\n success(toast: IaToastMessage): void;\r\n /**\r\n * Shows a warning toast message\r\n */\r\n warning(toast: IaToastMessage): void;\r\n /**\r\n * Shows an error toast message\r\n *\r\n * Message remains open until user dismisses it\r\n */\r\n error(toast: IaToastMessage): void;\r\n /**\r\n * Shows a question toast message\r\n */\r\n question(toast: IaToastMessage): void;\r\n}\r\n\r\n/**\r\n * All available loading indicators\r\n */\r\nexport enum Loader {\r\n Audio = 'audio.svg',\r\n BallTriangle = 'ball-triangle.svg',\r\n Bars = 'bars.svg',\r\n Circles = 'circles.svg',\r\n Grid = 'grid.svg',\r\n Hearts = 'hearts.svg',\r\n Oval = 'oval.svg',\r\n Puff = 'puff.svg',\r\n Rings = 'rings.svg',\r\n SpinningCircles = 'spinning-circles.svg',\r\n TailSpin = 'tail-spin.svg',\r\n ThreeDots = 'three-dots.svg',\r\n GreenTick = 'green-tick.svg',\r\n RedCross = 'red-cross.svg',\r\n}\r\n","import { LogManager } from 'aurelia-framework';\r\n\r\nexport const log = LogManager.getLogger('iAdviser');\r\n","import { inject } from 'aurelia-framework';\r\nimport { AuthTokenEndpoint, ITokenResponse } from 'endpoints/auth/token-endpoint';\r\nimport { environment } from 'environment';\r\nimport { addDeviceTokenForUser, getDeviceTokenForUser } from 'resources/device-token-manager';\r\nimport { User } from '../models/user';\r\n\r\n@inject(AuthTokenEndpoint)\r\nexport class TokenService {\r\n constructor(private endpoint: AuthTokenEndpoint) {}\r\n\r\n async createAuthToken(user: User): Promise {\r\n const params = {};\r\n params['grant_type'] = user.webFormLinkCode ? 'web_form' : 'password';\r\n params['password_hashed'] = 'false';\r\n params['username'] = user.username;\r\n params['password'] = user.password;\r\n params['app_client_type'] = user.appClientType;\r\n params['app_client_instance'] = user.appClientInstance;\r\n params['client_id'] = environment.client;\r\n params['web_form_link_code'] = user.webFormLinkCode;\r\n\r\n const headers: Record = {};\r\n\r\n const deviceToken = getDeviceTokenForUser(user.username);\r\n if (deviceToken) {\r\n headers['X-Device-Token'] = deviceToken;\r\n }\r\n\r\n const { data, response } = await this.endpoint.fetch(undefined, params, null, headers);\r\n\r\n this.saveToken(data, user.webFormLinkCode ? sessionStorage : localStorage);\r\n\r\n if (response.headers.has('X-Password-Requires-Changing')) {\r\n const passwordRequiresChanging = response.headers.get('X-Password-Requires-Changing');\r\n localStorage.setItem('userRequiresPasswordChange', passwordRequiresChanging);\r\n }\r\n\r\n if (response.headers.has('X-Device-Id')) {\r\n const deviceId = response.headers.get('X-Device-Id');\r\n localStorage.setItem('deviceId', deviceId);\r\n }\r\n\r\n if (response.headers.has('X-Device-Token')) {\r\n const returnedDeviceToken = response.headers.get('X-Device-Token');\r\n addDeviceTokenForUser(user.username, returnedDeviceToken);\r\n }\r\n\r\n if (response.headers.has('X-2FA-Setup-Reqd')) {\r\n const twoFactorSetupRequired = response.headers.get('X-2FA-Setup-Reqd');\r\n localStorage.setItem('twoFactorSetupRequired', twoFactorSetupRequired);\r\n } else {\r\n /* istanbul ignore next */\r\n localStorage.removeItem('twoFactorSetupRequired');\r\n }\r\n\r\n if (response.headers.has('X-2FA-Code-Reqd')) {\r\n const twoFactorCodeRequired = response.headers.get('X-2FA-Code-Reqd');\r\n localStorage.setItem('twoFactorCodeRequired', twoFactorCodeRequired);\r\n } else {\r\n /* istanbul ignore next */\r\n localStorage.removeItem('twoFactorCodeRequired');\r\n }\r\n\r\n if (response.headers.has('X-Password-Expiry-Days')) {\r\n localStorage.setItem('daysUntilPasswordExpiry', response.headers.get('X-Password-Expiry-Days'));\r\n }\r\n\r\n if (response.headers.has('X-Licence-Acceptance-Reqd')) {\r\n localStorage.setItem('acceptLicenceAgreement', response.headers.get('X-Licence-Acceptance-Reqd'));\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /* istanbul ignore next */\r\n getAuthToken() {\r\n return this.getLocation('access_token').getItem('access_token');\r\n }\r\n\r\n /* istanbul ignore next */\r\n getRefreshToken() {\r\n return this.getLocation('refresh_token').getItem('refresh_token');\r\n }\r\n\r\n /* istanbul ignore next */\r\n getDeviceId() {\r\n return localStorage.getItem('deviceId');\r\n }\r\n\r\n /* istanbul ignore next */\r\n getDeviceTokens() {\r\n return localStorage.getItem('device_tokens');\r\n }\r\n\r\n /* istanbul ignore next */\r\n async refreshAuthToken() {\r\n const storage = this.getLocation('refresh_token');\r\n\r\n const params = {};\r\n params['grant_type'] = 'refresh_token';\r\n params['client_id'] = environment.client;\r\n params['refresh_token'] = storage.getItem('refresh_token');\r\n\r\n const result = (await this.endpoint.fetch(null, params)).data;\r\n\r\n this.saveToken(result, storage);\r\n\r\n return result;\r\n }\r\n\r\n saveToken(token, storage) {\r\n storage.setItem('access_token', token.access_token);\r\n storage.setItem('refresh_token', token.refresh_token);\r\n storage.setItem('access_token_expiry', token['.expires']);\r\n }\r\n\r\n removeToken() {\r\n const storage = this.getLocation('access_token');\r\n\r\n storage.removeItem('access_token');\r\n storage.removeItem('refresh_token');\r\n storage.removeItem('access_token_expiry');\r\n }\r\n\r\n getLocation(key: string) {\r\n let storage = localStorage;\r\n\r\n if (sessionStorage.getItem(key)) {\r\n storage = sessionStorage;\r\n }\r\n\r\n return storage;\r\n }\r\n}\r\n","/*\r\n * An implementation of the Appender interface.\r\n */\r\nexport class ConsoleAppender {\r\n /**\r\n * Appends a debug log.\r\n *\r\n * @param logger The source logger.\r\n * @param rest The data to log.\r\n */\r\n debug(logger: { id: string }, ...rest: any[]): void {\r\n console.debug(`DEBUG [${logger.id}]`, ...rest);\r\n }\r\n\r\n /**\r\n * Appends an info log.\r\n *\r\n * @param logger The source logger.\r\n * @param rest The data to log.\r\n */\r\n info(logger: { id: string }, ...rest: any[]): void {\r\n console.info(`INFO [${logger.id}]`, ...rest);\r\n }\r\n\r\n /**\r\n * Appends a warning log.\r\n *\r\n * @param logger The source logger.\r\n * @param rest The data to log.\r\n */\r\n warn(logger: { id: string }, ...rest: any[]): void {\r\n console.warn(`WARN [${logger.id}]`, ...rest);\r\n }\r\n\r\n /**\r\n * Appends an error log.\r\n *\r\n * @param logger The source logger.\r\n * @param rest The data to log.\r\n */\r\n error(logger: { id: string }, ...rest: any[]): void {\r\n console.error(`ERROR [${logger.id}]`, ...rest);\r\n }\r\n}\r\n","import { Aurelia } from 'aurelia-framework';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { ValidationMessageProvider } from 'aurelia-validation';\r\n\r\nexport function i18tnValidation(aurelia: Aurelia) {\r\n const originalGetMessage = ValidationMessageProvider.prototype.getMessage;\r\n const originalGetDisplayName = ValidationMessageProvider.prototype.getDisplayName;\r\n ValidationMessageProvider.prototype.getMessage = function (key) {\r\n const i18n = aurelia.container.get(I18N);\r\n const translation = i18n.tr(`errorMessages.${key}`);\r\n const message = this.parser.parse(translation);\r\n\r\n if (message.value === translation) {\r\n return originalGetMessage.call(this, key);\r\n }\r\n return message;\r\n };\r\n\r\n ValidationMessageProvider.prototype.getDisplayName = function (propertyName, displayName) {\r\n const i18n = aurelia.container.get(I18N);\r\n\r\n if (displayName !== null && displayName !== undefined) {\r\n const translation = i18n.tr(displayName as string);\r\n\r\n if (translation === displayName) {\r\n return originalGetDisplayName.call(this, propertyName, displayName);\r\n }\r\n\r\n return translation;\r\n }\r\n const translation = i18n.tr(propertyName as string);\r\n\r\n if (translation === propertyName) {\r\n return originalGetDisplayName.call(this, propertyName, displayName);\r\n }\r\n\r\n return translation;\r\n };\r\n}\r\n","/* istanbul ignore file */\r\n\r\nimport { throttle } from 'lodash';\r\n\r\nconst SCROLL_ADJUSTMENT = 200;\r\n\r\nexport enum ScrollDirection {\r\n Leading = 'left',\r\n Trailing = 'right',\r\n}\r\n\r\nexport interface ITabScrollComponent {\r\n isLeftChevronDisabled: boolean;\r\n isRightChevronDisabled: boolean;\r\n styles: any;\r\n tabClass: string;\r\n tabUI: HTMLElement;\r\n _tabScroll_currentPosition: number;\r\n _tabScroll_initialised?: boolean;\r\n _tabScroll_isScrolling: boolean;\r\n _tabScroll_lastTab: HTMLElement;\r\n _tabScroll_startPosition: number;\r\n _tabScroll_tabUIMutationObserver: MutationObserver | null;\r\n _tabScroll_tabUIResizeObserver: ResizeObserver | null;\r\n _tabScroll_tabUIWheelHandler?: ((event: WheelEvent) => void) | null;\r\n\r\n scrollTabs(direction: ScrollDirection | string): void;\r\n}\r\n\r\nexport function initScrollTabs(context: ITabScrollComponent | any) {\r\n // Prevent multiple initialization without dispose\r\n if (context._tabScroll_initialised) {\r\n return;\r\n }\r\n\r\n // Prevent initialization without tabUI\r\n if (!context.tabUI) {\r\n return;\r\n }\r\n\r\n // setup initial state\r\n context.isRightChevronDisabled = false;\r\n context._tabScroll_startPosition =\r\n context.tabUI\r\n .querySelector(\r\n `${(context.styles && context.styles['btn--tab-overflow-left']) || 'btn--tab-overflow-left'}`\r\n .split(' ')\r\n .map((c) => '.' + c)\r\n .join(''),\r\n )\r\n ?.getBoundingClientRect().width || 0;\r\n context._tabScroll_currentPosition = context._tabScroll_startPosition;\r\n\r\n // set initial tab positions and chevron states\r\n updateTabPositions(context);\r\n setLastTab(context);\r\n\r\n // setup event listeners and observers\r\n context._tabScroll_tabUIWheelHandler = onTabUIWheel.bind(null, context);\r\n context.tabUI.addEventListener('wheel', context._tabScroll_tabUIWheelHandler, { passive: false });\r\n\r\n context._tabScroll_tabUIMutationObserver = new MutationObserver(() => {\r\n // Update tab positions, then set last tab reference (which also updates chevron states)\r\n updateTabPositions(context);\r\n setLastTab(context);\r\n });\r\n context._tabScroll_tabUIMutationObserver.observe(context.tabUI, { childList: true, subtree: false });\r\n\r\n context._tabScroll_tabUIResizeObserver = new ResizeObserver(\r\n throttle(() => {\r\n // Make sure tab positions and chevron states are updated on resize\r\n setChevronStates(context);\r\n }, 100),\r\n );\r\n context._tabScroll_tabUIResizeObserver.observe(context.tabUI);\r\n\r\n context._tabScroll_initialised = true;\r\n}\r\n\r\nexport function disposeScrollTabs(context: ITabScrollComponent | any) {\r\n if (!context._tabScroll_initialised) {\r\n return;\r\n }\r\n\r\n // remove observers\r\n const observerKeys = ['_tabScroll_tabUIMutationObserver', '_tabScroll_tabUIResizeObserver'];\r\n observerKeys.forEach((key) => {\r\n if (context[key]) {\r\n context[key].disconnect();\r\n context[key] = null;\r\n }\r\n });\r\n\r\n // remove event listeners\r\n const eventKeys = ['_tabScroll_tabUIWheelHandler'];\r\n eventKeys.forEach((key) => {\r\n if (context.tabUI && context[key]) {\r\n context.tabUI.removeEventListener('wheel', context[key]);\r\n context[key] = null;\r\n }\r\n });\r\n\r\n context._tabScroll_lastTab = null;\r\n context._tabScroll_initialised = false;\r\n}\r\n\r\nexport function scrollTabs(context: ITabScrollComponent | any, direction: ScrollDirection) {\r\n if (!context.tabUI) {\r\n return;\r\n }\r\n\r\n // Debounce: prevent scrolling while transitions are in progress\r\n if (context._tabScroll_isScrolling) {\r\n return;\r\n }\r\n\r\n const allTabs = getTabs(context);\r\n if (!allTabs.length) {\r\n return;\r\n }\r\n\r\n if (\r\n (direction === ScrollDirection.Leading && context.isLeftChevronDisabled) ||\r\n (direction === ScrollDirection.Trailing && context.isRightChevronDisabled)\r\n ) {\r\n return;\r\n }\r\n\r\n context._tabScroll_isScrolling = true;\r\n const scrollAmount = direction === ScrollDirection.Leading ? SCROLL_ADJUSTMENT : -SCROLL_ADJUSTMENT;\r\n context._tabScroll_currentPosition = context._tabScroll_currentPosition + scrollAmount;\r\n updateTabPositions(context);\r\n\r\n // Update chevron states after transition to ensure accurate state\r\n afterTransition(context._tabScroll_lastTab, () => {\r\n setChevronStates(context);\r\n context._tabScroll_isScrolling = false;\r\n });\r\n}\r\n\r\n//#region Event Handlers\r\n\r\nfunction onTabUIWheel(context: ITabScrollComponent | any, event: WheelEvent) {\r\n event.preventDefault();\r\n const direction = event.deltaY < 0 ? ScrollDirection.Leading : ScrollDirection.Trailing;\r\n context.scrollTabs(direction);\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Helper Functions\r\n\r\n/**\r\n * Execute a callback either after transition completes or immediately if no transition\r\n * @param element The element to check for transitions\r\n * @param callback The function to execute\r\n */\r\nfunction afterTransition(element: Element, callback: () => void): void {\r\n if (!element) {\r\n callback();\r\n return;\r\n }\r\n\r\n const style = window.getComputedStyle(element);\r\n const duration = parseFloat(style.transitionDuration) || 0;\r\n\r\n if (duration > 0) {\r\n element.addEventListener('transitionend', callback, { once: true });\r\n } else {\r\n callback();\r\n }\r\n}\r\n\r\nfunction getTabs(context: ITabScrollComponent | any): HTMLElement[] {\r\n if (!context.tabUI) {\r\n return [];\r\n }\r\n return Array.from(context.tabUI.querySelectorAll(context.tabClass)) || [];\r\n}\r\n\r\nfunction isLastTabVisible(context: ITabScrollComponent | any): boolean {\r\n if (!context._tabScroll_lastTab) {\r\n return true;\r\n }\r\n\r\n const tabUIRect = context.tabUI.getBoundingClientRect();\r\n const lastTabRect = context._tabScroll_lastTab.getBoundingClientRect();\r\n\r\n // Calculate the effective right boundary by accounting for absolutely positioned children\r\n let effectiveRightBoundary = tabUIRect.right;\r\n\r\n const rightOverflowBtn = context.tabUI.querySelector(`.${(context.styles && context.styles['btn--tab-overflow-right']) || 'btn--tab-overflow-right'}`);\r\n if (rightOverflowBtn) {\r\n const childRect = rightOverflowBtn.getBoundingClientRect();\r\n effectiveRightBoundary = effectiveRightBoundary - childRect.width;\r\n }\r\n\r\n // Check if the last tab's right edge is fully visible within the effective area\r\n const isFullyVisible = lastTabRect.right <= effectiveRightBoundary;\r\n return isFullyVisible;\r\n}\r\n\r\nfunction setChevronStates(context: ITabScrollComponent | any): void {\r\n context.isLeftChevronDisabled = context._tabScroll_currentPosition === context._tabScroll_startPosition;\r\n context.isRightChevronDisabled = isLastTabVisible(context);\r\n}\r\n\r\nfunction setLastTab(context: ITabScrollComponent | any) {\r\n const allTabs = getTabs(context);\r\n context._tabScroll_lastTab = allTabs[allTabs.length - 1];\r\n setChevronStates(context);\r\n}\r\n\r\nfunction updateTabPositions(context: ITabScrollComponent | any) {\r\n const allTabs = getTabs(context);\r\n if (!allTabs.length) {\r\n return;\r\n }\r\n\r\n // Set position for all tabs\r\n allTabs.forEach((element: HTMLElement) => {\r\n element.style.position = 'relative';\r\n element.style.left = `${context._tabScroll_currentPosition}px`;\r\n });\r\n}\r\n\r\n//#endregion\r\n","export async function timer(msec): Promise {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve();\r\n }, msec);\r\n });\r\n}\r\n"],"names":["__webpack_exports__","AutPaginationCustomElement","element","this","hideSinglePage","boundaryLinks","firstText","lastText","directionLinks","previousText","nextText","disable","totalPages","displayPages","prototype","bind","undefined","currentPage","pageSize","calculatePages","totalItemsChanged","pageSizeChanged","currentPageChanged","dispatchPageChangedEvent","event","aurelia_framework__WEBPACK_IMPORTED_MODULE_0__","DOM","createCustomEvent","bubbles","detail","dispatchEvent","totalItems","Math","ceil","isNaN","paginationSize","displayAllPages","limitVisiblePages","i","push","title","toString","value","totalTiers","activeTier","start","end","selectPage","page","nextPage","previousPage","firstPage","lastPage","inject","Element","__decorate","bindable","defaultBindingMode","bindingMode","twoWay","autoinject","_a","Object","AutSelectCustomAttribute","auTable","bindingEngine","_this","mode","selectedClass","custom","rowSelectedListener","handleRowSelected","attached","style","cursor","addEventListener","selectedSubscription","propertyObserver","row","subscribe","isSelectedChanged","setClass","detached","removeEventListener","dispose","$isSelected","classList","add","remove","target","srcElement","tagName","toLowerCase","dispatchSelectedEvent","selectedEvent","deselectAll","data","forEach","item","_au_table__WEBPACK_IMPORTED_MODULE_1__","AureliaTableCustomAttribute","_b","_c","BindingEngine","AutSortCustomAttribute","callback","order","orderClasses","ignoreEvent","handleHeaderClicked","sortChangedListener","handleSortChanged","key","Error","addSortChangedListener","handleDefault","removeSortChangedListener","default","doSort","dataSource","sortChanged","next","isAttached","sortChangedListeners","beforePagination","filterObservers","Array","isArray","dataObserver","collectionObserver","applyPlugins","filtersChanged","api","revealItem","__values","done","filters","_d","observer","_e","_f","filter","filterChanged","hasPagination","getDataCopy","concat","getPageData","localData","doPaginate","hasFilter","doFilter","sortKey","customSort","sortOrder","length","displayData","toFilter","filteredData","toFilter_1","toFilter_1_1","passed","e_5","passFilter","trim","keys","getPropertyValue","types","indexOf","toSort","sort","a","b","val1","val2","isNumeric","str1","str2","localeCompare","object","keyPath","replace","split","n","k","toCheck","parseFloat","isFinite","toPaginate","slice","dataChanged","emitSortChanged","removeListener","listener","listeners","index","splice","configure","config","globalResources","STYLE_TAG_ID","STYLE_TEXT","ensureStyles","document","getElementById","tag","createElement","id","textContent","head","appendChild","IA_ORANGE","playFullSequence","options","shake","scanlines","showScanlines","scanlinesDurationMs","count","durationMs","sizeRange","driftRange","prefersReducedMotion","body","window","setTimeout","shakeScreen","overlay","className","setAttribute","animationDuration","reduced","__read","minSize","maxSize","minDrift","maxDrift","layer","maxDelay","floor","circle","size","randomInt","left","random","delay","drift","opacity","totalLifetimeMs","setProperty","toFixed","max","rainLogos","matchMedia","matches","min","FLAKE_GLYPHS","HIDDEN_TEXT_INDENT","CHRISTMAS_DEFAULTS","spawnIntervalMs","reducedSpawnIntervalMs","flakeDurationMs","flakeSizeRange","settleThreshold","maxPilePx","maxLiveFlakes","ChristmasMode","logo","pile","hat","spawnTimer","settledCount","originalPosition","originalOverflow","originalTextIndent","positionTouched","overflowTouched","textIndentTouched","flakeTimers","Set","flakesInFlight","__assign","attach","position","overflow","textIndent","computed","getComputedStyle","maskUrl","match","extractBackgroundImageUrl","backgroundImage","innerHTML","startSpawning","reset","stopSpawning","clearFlakeTimers","querySelectorAll","spawnFlake","flake","variance","duration","timerId","delete","onFlakeSettled","interval","setInterval","clearInterval","clearTimeout","clear","ratio","pileHeight","round","defaultFeatureFlags","T","christmas","STORAGE_KEY","COOKIE_KEYS","HEADER_KEYS","TRUE_VALUES","FALSE_VALUES","FeatureFlagService","codeFlags","serverFlags","serverCookieFlags","serverHeaderFlags","memoryFlags","ensureFlagsInitialized","load","featureFlags","enabled","flag","syncEffectiveFlags","flags","setLocalOverride","all","known","knownFlags","state","createFlagState","snapshot","createSnapshot","onChange","candidate","defaults","normaliseFlagRecord","readCookieFlags","syncServerFlags","refresh","applyServerFlagsFromResponse","response","applyServerFlagsFromCookie","applyServerFlagsFromHeaders","headers","applyServerHeaderFlags","readHeaderFlags","cookie","applyServerCookieFlags","isKnownFlag","persistLocalFlag","clearLocalOverride","savedFlags","readSavedFlags","hasFlag","writeSavedFlags","clearLocalOverrides","localStorage","normalisedFlags","removeItem","setItem","JSON","stringify","mergeFlags","previousFlags","nextFlags","effectiveFlags","changed","serialiseFlags","replaceFlags","notifyChange","parseFlagPayload","getItem","HEADER_KEYS_1","HEADER_KEYS_1_1","headerKey","getHeaderValue","getDocumentCookie","cookies","parseCookieHeader","COOKIE_KEYS_1","COOKIE_KEYS_1_1","cookieKey","get","record","targetKey","recordKey","part","separatorIndex","safeDecode","payload","text","parseJsonFlags","parseDelimitedFlags","parsed","parse","parsed_1","parsed_1_1","flagName","normaliseFlagName","String","entry","findFlagValueSeparator","name","rawValue","parseBoolean","equalsIndex","colonIndex","normalisedName","trimQuotes","feature_flags__WEBPACK_IMPORTED_MODULE_1__","flagKey","normalisedValue","source","hasOwnProperty","call","states","localFlags","hasLocalValue","hasServerValue","hasCodeValue","codeValue","serverValue","localValue","change","CustomEvent","map","join","decodeURIComponent","configuredContainer","featureFlagService","container","_feature_flags_service__WEBPACK_IMPORTED_MODULE_2__","y","flagIdentifier_1","registerHandler","defaultFlags","featureFlag","flagIdentifier","TypeError","defineFlagBackedProperty","resolveFeatureFlagService","featureFlagState","featureFlagsSnapshot","requiresFeatureFlag","descriptor","originalMethod","args","_i","arguments","apply","whenDisabled","getter","Reflect","deleteProperty","defineProperty","enumerable","configurable","Container","instance","KeyboardSequenceDetector","sequences","Map","listenerAttached","registerSequence","label","keySequence","listenForKeySequence","set","sequence","currentIndex","removeSequence","handleKeydownBound","handleKeydown","includes","PostRenderStep","taskQueue","http","ea","run","navigationInstruction","queueMicroTask","aurelia_pal__WEBPACK_IMPORTED_MODULE_3__","i9","global","scrollTo","location","href","appClientType","_parse_jwt__WEBPACK_IMPORTED_MODULE_5__","jl","appClientInstance","Ye","url","fetch","method","then","status","publish","sent","aurelia_dependency_injection__WEBPACK_IMPORTED_MODULE_1__","aurelia_framework__WEBPACK_IMPORTED_MODULE_2__","TaskQueue","aurelia_fetch_client__WEBPACK_IMPORTED_MODULE_4__","Qq","aurelia_event_aggregator__WEBPACK_IMPORTED_MODULE_0__","EventAggregator","prepareTasks","taskNotificationTypeId","tasks","_enums__WEBPACK_IMPORTED_MODULE_0__","O","ALL","OVERDUE","x","overdue","dueDate","moment__WEBPACK_IMPORTED_MODULE_1___default","subtract","format","yesterday","dueDateLabel","DUE_TODAY","duetoday","UPCOMING","upcoming","tomorrow","COMPLETE","isCompletedTask","PreRenderStep","currentRouteName","scrollIntoView","tableClassName","rowClassName","table","from","find","selectedTr","behavior","block","scrollQCEErrorIntoView","errors","AureliaHooks","actions","addAction","priority","newHook","__spreadArray","addFilter","hasAction","getActions","getFilters","removeAction","val","removeAllActions","removeFilter","removeAllFilters","doAction","hook","error","console","applyFilter","result","Promise","error_1","BlobService","downloadBlobFromUrl","fileName","isValidParams","urlToBlob","blobUrl","blob","downloadFile","download","URL","createObjectURL","click","endpoint","environment__WEBPACK_IMPORTED_MODULE_2__","c","utils","urlToOctetStrem","uri","aurelia_fetch_client__WEBPACK_IMPORTED_MODULE_1__","Pq","ok","message","ClaimsService","store","claims","subscription","userClaims","getClaims","environment__WEBPACK_IMPORTED_MODULE_3__","apiHost","json","expiry","expiryDate","Date","getTime","has","claim","every","hasAsync","dateNow","parseInt","some","aurelia_store__WEBPACK_IMPORTED_MODULE_2__","Store","ClientStatementService","blobService","router","modal","isProcessing","getDocument","params","distributionType","beginProcessing","postDocumentGeneration","documentUrl","processDocumentUrl","_log_service__WEBPACK_IMPORTED_MODULE_5__","R","endProcessing","processingError","processingBrowserPopupsDisabled","components_document_pack_constants__WEBPACK_IMPORTED_MODULE_7__","J","Preview","Print","Download","DownloadEmail","openPreview","fetchAndPrintDocument","downloadAndEmailDocument","ClientId","clientName","routeFragment","generate","aurelia_pal__WEBPACK_IMPORTED_MODULE_4__","open","fileBlob","documentUrlFromBlob","iframeContainer","iframe","getOrCreateIframe","src","onload","__awaiter","focus","contentWindow","print","childElementCount","iframeId","clientId","model","show","content","components_ia_mailto_modal_ia_mailto_modal__WEBPACK_IMPORTED_MODULE_10__","s","withOptions","type","resources_endpoints_endpoints__WEBPACK_IMPORTED_MODULE_3__","d","post","aurelia_fetch_client__WEBPACK_IMPORTED_MODULE_0__","queue","queueGuid","pollDocumentStatus","statusResult","GenerationStatusString","getDocumentUrl","processError","lastException","ExceptionMessage","error_2","errorMessage","attempts","delayInMs","completed","counter","timer","getDocumentCreationStatus","isCompletedState","error_3","error_4","msec","resolve","aurelia_framework__WEBPACK_IMPORTED_MODULE_1__","resources_services_blob_service__WEBPACK_IMPORTED_MODULE_6__","aurelia_router__WEBPACK_IMPORTED_MODULE_8__","Lz","components_modal_modal_service__WEBPACK_IMPORTED_MODULE_9__","B","Loader","IaToastService","defaultOptions","class","theme","layout","titleColor","messageColor","iconColor","backgroundColor","close","closeOnEscape","closeOnClick","timeout","overlayClose","overlayColor","transitionIn","transitionOut","animateInside","progressBar","image","imageWidth","maxWidth","displayMode","drag","loaderOpen","izitoast__WEBPACK_IMPORTED_MODULE_5___default","settings","loader","overrideOptions","bootstrapLoader","setDefaultOptions","getDefaultOptions","destroyAllToasts","destroy","toast","toastMessageIsRequired","mergeToastSettings","hide","toastRef","closedBy","toastElement","querySelector","info","progress","success","warning","restoreDefaultSettings","question","getLoaderPath","__webpack_require__","showLoader","loaderText","$loaderText","hideLoader","showStatusIcon","statusSuccess","statusIconTimeout","existingImage","existingTransIn","existingTimeout","existingOnClosed","onClosed","GreenTick","RedCross","TailSpin","IaToastMessage","$loaderTextClass","onOpening","addLoaderText","onClosing","removeLoaderText","createTextNode","parentNode","aurelia_binding__WEBPACK_IMPORTED_MODULE_2__","Kj","aurelia_dependency_injection__WEBPACK_IMPORTED_MODULE_3__","aurelia_framework__WEBPACK_IMPORTED_MODULE_4__","log","LogManager","getLogger","TokenService","createAuthToken","user","webFormLinkCode","username","password","client","deviceToken","resources_device_token_manager__WEBPACK_IMPORTED_MODULE_3__","W","saveToken","sessionStorage","passwordRequiresChanging","deviceId","returnedDeviceToken","twoFactorSetupRequired","twoFactorCodeRequired","getAuthToken","getLocation","getRefreshToken","getDeviceId","getDeviceTokens","refreshAuthToken","storage","token","access_token","refresh_token","removeToken","endpoints_auth_token_endpoint__WEBPACK_IMPORTED_MODULE_1__","L","ConsoleAppender","debug","logger","rest","warn","i18tnValidation","aurelia","originalGetMessage","aurelia_validation__WEBPACK_IMPORTED_MODULE_1__","ValidationMessageProvider","getMessage","originalGetDisplayName","getDisplayName","translation","aurelia_i18n__WEBPACK_IMPORTED_MODULE_0__","I18N","tr","parser","propertyName","displayName","i18n","translation_1","ScrollDirection","SCROLL_ADJUSTMENT","initScrollTabs","context","_tabScroll_initialised","tabUI","isRightChevronDisabled","_tabScroll_startPosition","styles","getBoundingClientRect","width","_tabScroll_currentPosition","updateTabPositions","setLastTab","_tabScroll_tabUIWheelHandler","onTabUIWheel","passive","_tabScroll_tabUIMutationObserver","MutationObserver","observe","childList","subtree","_tabScroll_tabUIResizeObserver","ResizeObserver","lodash__WEBPACK_IMPORTED_MODULE_0__","throttle","setChevronStates","disposeScrollTabs","disconnect","_tabScroll_lastTab","scrollTabs","direction","_tabScroll_isScrolling","getTabs","Leading","isLeftChevronDisabled","Trailing","scrollAmount","transitionDuration","once","afterTransition","preventDefault","deltaY","tabClass","tabUIRect","lastTabRect","effectiveRightBoundary","right","rightOverflowBtn","isLastTabVisible","allTabs"],"sourceRoot":""}