{"version":3,"file":"app-071f3147.xxxxxxxx.bundle.js","mappings":"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","sources":["webpack://iadviser/./src/resources/add-client-to-recent-items.ts","webpack://iadviser/./src/resources/attributes/class-attribute.ts","webpack://iadviser/./src/resources/attributes/conditional-if.ts","webpack://iadviser/./src/resources/attributes/input-mask.ts","webpack://iadviser/./src/resources/calculate-gst.ts","webpack://iadviser/./src/resources/claims-step.ts","webpack://iadviser/./src/resources/clean-qce-model.ts","webpack://iadviser/./src/resources/constants.ts","webpack://iadviser/./src/resources/decorators/has-decorator.ts","webpack://iadviser/./src/resources/device-token-manager.ts","webpack://iadviser/./src/resources/endpoints/endpoints.ts","webpack://iadviser/./src/resources/endpoints/form-endpoint.ts","webpack://iadviser/./src/resources/endpoints/json-endpoint.ts","webpack://iadviser/./src/resources/enums.ts","webpack://iadviser/./src/resources/even-round.ts","webpack://iadviser/./src/resources/form-validation-renderer.ts","webpack://iadviser/./src/resources/inactivity.ts","webpack://iadviser/./src/resources/index.ts"],"sourcesContent":["import { getAppClient, getEmailAddress } from './parse-jwt';\r\n\r\nconst EMAIL = getEmailAddress();\r\nconst APP_CLIENT = getAppClient();\r\n\r\nexport function addClientToRecentItems(client) {\r\n const RECENT_CLIENTS = JSON.parse(localStorage.getItem('ia_recent_clients')) ?? [];\r\n\r\n if (!client) {\r\n return RECENT_CLIENTS;\r\n }\r\n\r\n const CLIENT_ID = client.entityId;\r\n const CLIENT_CODE = client.entityCode;\r\n const CLIENT_NAME = client.entityName;\r\n const COMPANY_OFFICE_CODE = client.companyOfficeCode;\r\n const ADVISER_NAME = client.adviserName;\r\n\r\n const CLIENT_EXISTS = RECENT_CLIENTS.some((c: any) => c.entityId === CLIENT_ID);\r\n\r\n if (CLIENT_EXISTS) {\r\n const CLIENT_INDEX = RECENT_CLIENTS.findIndex((c: any) => c.entityId === CLIENT_ID);\r\n\r\n RECENT_CLIENTS.splice(CLIENT_INDEX, 1);\r\n RECENT_CLIENTS.unshift({\r\n appClient: APP_CLIENT,\r\n emailAddress: EMAIL,\r\n entityId: CLIENT_ID,\r\n entityCode: CLIENT_CODE,\r\n entityName: CLIENT_NAME,\r\n companyOfficeCode: COMPANY_OFFICE_CODE,\r\n adviserName: ADVISER_NAME,\r\n });\r\n } else {\r\n RECENT_CLIENTS.unshift({\r\n appClient: APP_CLIENT,\r\n emailAddress: EMAIL,\r\n entityId: CLIENT_ID,\r\n entityCode: CLIENT_CODE,\r\n entityName: CLIENT_NAME,\r\n companyOfficeCode: COMPANY_OFFICE_CODE,\r\n adviserName: ADVISER_NAME,\r\n });\r\n }\r\n\r\n localStorage.setItem('ia_recent_clients', JSON.stringify(RECENT_CLIENTS));\r\n}\r\n\r\nexport function getRecentClientsByAppClientByUserId() {\r\n const RECENT_CLIENTS = JSON.parse(localStorage.getItem('ia_recent_clients')) ?? [];\r\n return RECENT_CLIENTS.filter((x) => x.appClient === APP_CLIENT && x.emailAddress === EMAIL);\r\n}\r\n","/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { inject, Parent, getContextFor } from 'aurelia-framework';\r\n\r\nconst removeClassList = (element, val) => {\r\n if (!val) {\r\n return;\r\n }\r\n\r\n element.classList.remove(val);\r\n};\r\n\r\nconst addClassList = (element, val) => {\r\n if (!val) {\r\n return;\r\n }\r\n\r\n element.classList.add(val);\r\n};\r\n\r\n@inject(Element, Parent.of(ClassCustomAttribute))\r\nexport class ClassCustomAttribute {\r\n value: string;\r\n previousClasses: string[] = [];\r\n bindingContext;\r\n parentContext;\r\n\r\n constructor(private element: Element, private parent: any) {}\r\n\r\n bind(bindingContext, overrideContext) {\r\n this.bindingContext = bindingContext;\r\n\r\n if (this.bindingContext && typeof this.bindingContext.styles === 'undefined') {\r\n this.bindingContext = this.parent.bindingContext;\r\n\r\n if (this.bindingContext && typeof this.bindingContext.styles === 'undefined') {\r\n this.bindingContext = getContextFor('styles', { bindingContext, overrideContext }, 0);\r\n }\r\n }\r\n\r\n if (!this.bindingContext || typeof this.bindingContext.styles === 'undefined') {\r\n return;\r\n }\r\n\r\n if (!this.value) {\r\n this.value = '';\r\n }\r\n\r\n // Filter out any classes that do not have substitutes found in the bindingContext styles property\r\n // this prevents them being removed and allows for use-cases where :global {} is being used\r\n const values = this.value.split(' ').filter((val) => {\r\n return this.bindingContext.styles[val];\r\n });\r\n\r\n values.forEach((x) => removeClassList(this.element, x)); // remove the initial friendly names\r\n\r\n this.valueChanged(this.value);\r\n }\r\n\r\n addClass(className: string) {\r\n this.value = `${this.value} ${className}`;\r\n }\r\n\r\n removeClass(className: string) {\r\n this.value = this.value\r\n .split(' ')\r\n .filter((x) => x !== className)\r\n .join(' ');\r\n }\r\n\r\n valueChanged(newValue: string) {\r\n this.previousClasses.forEach((x) => removeClassList(this.element, x));\r\n\r\n this.previousClasses = newValue\r\n .split(' ')\r\n .map((x) => x.trim())\r\n .map((x) => (this.bindingContext?.styles?.[x] ? this.bindingContext.styles[x] : x))\r\n .join(' ') // lookups might map to multiple classes, so join them and then split\r\n .split(' ');\r\n\r\n this.previousClasses.forEach((x) => addClassList(this.element, x));\r\n }\r\n}\r\n","import { autoinject } from 'aurelia-dependency-injection';\r\nimport { customAttribute, bindable, TaskQueue } from 'aurelia-framework';\r\n\r\nconst INPUT_TYPES = ['INPUT', 'SELECT', 'TEXTAREA'];\r\n\r\n@autoinject()\r\n@customAttribute('conditional-if')\r\nexport class ConditionalIf {\r\n @bindable() attribute = null;\r\n @bindable() value = null;\r\n\r\n constructor(private element: Element, private taskQueue: TaskQueue) {}\r\n\r\n attached() {\r\n this.valueChanged(this.value);\r\n }\r\n\r\n valueChanged(value: string) {\r\n setTimeout(() => {\r\n if (value) {\r\n this.element.setAttribute(this.attribute, value);\r\n\r\n if (this.attribute === 'focusme' || this.attribute === 'focus') {\r\n if (INPUT_TYPES.includes(this.element.tagName)) {\r\n (this.element as HTMLElement).focus();\r\n } else {\r\n INPUT_TYPES.forEach((type) => {\r\n const search = this.element.querySelector(type) as HTMLInputElement;\r\n\r\n if (search) {\r\n search.focus();\r\n }\r\n });\r\n }\r\n }\r\n } else {\r\n this.element.removeAttribute(this.attribute);\r\n }\r\n }, 150);\r\n }\r\n}\r\n","import { inject, customAttribute, DOM } from 'aurelia-framework';\r\nimport Inputmask from 'inputmask';\r\nimport { bindable } from 'aurelia-typed-observable-plugin';\r\nimport defaultsDeep from 'lodash/defaultsDeep';\r\n\r\nexport type InputMaskOptions = Inputmask.Options;\r\n\r\n@customAttribute('input-mask')\r\n@inject(DOM.Element)\r\nexport class InputMask {\r\n @bindable public options?: InputMaskOptions;\r\n\r\n private element: HTMLInputElement;\r\n private im: Inputmask.Instance;\r\n\r\n private defaultOptions: InputMaskOptions = {\r\n alias: 'numeric',\r\n digits: '2',\r\n groupSeparator: ',',\r\n digitsOptional: false,\r\n nullable: true,\r\n };\r\n\r\n constructor(element: HTMLInputElement) {\r\n this.element = element;\r\n }\r\n\r\n attached() {\r\n this.applyOptionsAndReMask();\r\n }\r\n\r\n optionsChanged(options: InputMaskOptions) {\r\n if (!options) return;\r\n this.applyOptionsAndReMask();\r\n }\r\n\r\n private applyOptionsAndReMask() {\r\n if (typeof this.options !== 'string') {\r\n defaultsDeep(this.options, this.defaultOptions);\r\n }\r\n\r\n if (this.element.inputmask) {\r\n this.element.inputmask.remove();\r\n }\r\n\r\n this.im = new Inputmask(this.options);\r\n this.im.mask(this.element);\r\n }\r\n}\r\n","import { evenRound } from './even-round';\r\n\r\nexport function calculateGst(value: number, gstRate: number) {\r\n return evenRound((value * gstRate) / 100, 2);\r\n}\r\n","import { ClaimsService } from 'resources/services/claims-service';\r\nimport { autoinject } from 'aurelia-dependency-injection';\r\nimport { Next, NavigationInstruction, Redirect } from 'aurelia-router';\r\nimport { isProd } from 'resources/utils';\r\nimport { getEmailAddress } from './parse-jwt';\r\n\r\n@autoinject()\r\nexport class ClaimsStep {\r\n constructor(private claimsService: ClaimsService) { }\r\n\r\n async run(navigationInstruction: NavigationInstruction, next: Next) {\r\n const { config: { settings } } = navigationInstruction;\r\n\r\n // prevent diagnostics access on production to non iaanyware users\r\n if (isProd() && navigationInstruction.config.route.includes('diagnostics') && !getEmailAddress().includes('iaanyware.net')) {\r\n console.log('diagnostics only available to iaanyware users')\r\n return next.cancel(new Redirect('/'));\r\n }\r\n\r\n if (settings && settings.claims) {\r\n let { claims } = settings;\r\n\r\n // If route has claims\r\n if (claims?.length) {\r\n\r\n const isNewEditClaim = navigationInstruction.config.name === 'newClaim' || navigationInstruction.config.name === 'claimWizard';\r\n\r\n // separate claims required when routing to policy or quote wizard - ignore new/edit claim route\r\n if (navigationInstruction.params.parentEntityId > 0 && !isNewEditClaim) {\r\n claims = claims.filter(x => x.includes('Policy'));\r\n\r\n if (navigationInstruction.fragment.includes('new') || navigationInstruction.fragment.includes('edit')) {\r\n claims = claims.filter(x => x.includes('Edit'));\r\n }\r\n\r\n } else if (navigationInstruction.params.parentEntityId == 0 && !isNewEditClaim) {\r\n claims = claims.filter(x => x.includes('Quote'));\r\n\r\n if (navigationInstruction.fragment.includes('edit')) {\r\n claims = claims.filter(x => x.includes('Edit'));\r\n }\r\n } else if(isNewEditClaim){\r\n if (navigationInstruction.fragment.includes('edit')) {\r\n claims = claims.filter(x => x.includes('Edit'));\r\n }\r\n }\r\n\r\n const has = await this.claimsService.hasAsync(claims);\r\n\r\n // Does the user have the required claims?\r\n if (has) {\r\n // User has valid claims, allow route to proceed\r\n return next();\r\n } else {\r\n\r\n // User doesn't have stipulated claim\r\n const name = ['clientHome', 'app-admin', 'app-admin-view', 'app-accounts', 'app-accounts-view']\r\n if (name.includes(navigationInstruction.config.name)) {\r\n return next.cancel(new Redirect('/'));\r\n } else {\r\n return next.cancel(new Redirect(`/client/${navigationInstruction.params.id}`));\r\n }\r\n }\r\n }\r\n }\r\n\r\n return next();\r\n }\r\n}\r\n","import { IQceResponse, IQceResponseGroup } from 'components/qce/qce-typings';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport moment from 'moment';\r\nimport { generateGuidString } from './utilities/insecure-guid';\r\n\r\nexport function cleanQceModel(model: IQceResponse, saving = false) {\r\n\r\n // reset questions that have been disabled by flow \r\n const newModel = cloneDeep(model);\r\n\r\n if (newModel.guid === '00000000-0000-0000-0000-000000000000') {\r\n newModel.guid = generateGuidString();\r\n }\r\n\r\n if (newModel.groups) {\r\n newModel.groups.forEach((group) => {\r\n group.questions.forEach((question, index) => {\r\n\r\n if (question.disabledByQuestionFlowFlag) {\r\n question.currentResponse.responsePresent = false;\r\n question.currentResponse.answerId = null;\r\n question.currentResponse.anzsicOccupationInsurerId = null;\r\n question.currentResponse.glassId = null;\r\n question.currentResponse.gridResponses = null;\r\n question.currentResponse.occupationId = null;\r\n question.currentResponse.propertyOwnersAnzsicOccupationId = null;\r\n question.currentResponse.responseTypeId = null;\r\n question.currentResponse.responseValue = null;\r\n\r\n return;\r\n }\r\n\r\n if (question.currentResponse && question.currentResponse.gridResponses && question.currentResponse.gridResponses.length) {\r\n question.currentResponse.gridResponses.forEach((response: any) => {\r\n if (response.ClaimDate && response.ClaimDate.includes('/')) {\r\n response.ClaimDate = moment.utc(response.ClaimDate, 'DD/MM/YYYY').toISOString();\r\n }\r\n\r\n if (response.DateOfOffence && response.DateOfOffence.includes('/')) {\r\n response.DateOfOffence = moment.utc(response.DateOfOffence, 'DD/MM/YYYY').toISOString();\r\n }\r\n\r\n if (response.DateOfLoss && response.DateOfLoss.includes('/')) {\r\n response.DateOfLoss = moment.utc(response.DateOfLoss, 'DD/MM/YYYY').toISOString();\r\n }\r\n });\r\n }\r\n\r\n // Date format component\r\n if (question.displayTypeId === 2 || question.displayTypeId === 600000006) {\r\n question.currentResponse.responseValue = question.currentResponse.responseValue ? moment.utc(question.currentResponse.responseValue, 'DD/MM/YYYY').format('DD/MM/YYYY') : null;\r\n }\r\n\r\n // Date format free text component and date entered\r\n if (question.displayTypeId === 11 && question.currentResponse.responseTypeId === 600000003) {\r\n question.currentResponse.responseValue = moment.utc(question.currentResponse.responseValue, 'DD/MM/YYYY').format('DD/MM/YYYY');\r\n }\r\n\r\n if (question.currentResponse && question.currentResponse.gridResponses && !question.currentResponse.gridResponses.length) {\r\n question.currentResponse.gridResponses = null;\r\n }\r\n\r\n if (question.currentResponse && question.currentResponse.responsePresent === false) {\r\n question.currentResponse.responseValue = null;\r\n }\r\n });\r\n });\r\n }\r\n\r\n if (saving && newModel.groups) {\r\n newModel.groups = newModel.groups.map(group => {\r\n return {\r\n guid: group.guid,\r\n questions: group.questions.map(question => {\r\n return {\r\n guid: question.guid,\r\n currentResponse: question.currentResponse,\r\n questionId: question.questionId\r\n }\r\n })\r\n };\r\n }) as Partial;\r\n }\r\n\r\n return newModel;\r\n}\r\n\r\nexport function setupDefaultQceAnswers(model: IQceResponse) {\r\n const newModel = cloneDeep(model);\r\n\r\n if (newModel.groups) {\r\n newModel.groups.forEach((group) => {\r\n group.questions.forEach((question, index) => {\r\n if (question.disabledByQuestionFlowFlag) {\r\n if (question.defaultAnswerId) {\r\n const answer = question.answerOptions.find(a => a.answerId === question.defaultAnswerId);\r\n\r\n if (answer) {\r\n question.currentResponse.answerId = answer.answerId;\r\n question.currentResponse.responseValue = answer.answerText;\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n return newModel;\r\n}\r\n","import { CountryCode } from 'libphonenumber-js';\r\nexport const AUTH_TOKEN_KEY = 'iaAuthToken';\r\n\r\nexport const localeMap = new Map([\r\n ['AU', 'en-AU'],\r\n ['NZ', 'en-NZ'],\r\n]);\r\n\r\nexport enum eventAggregatorEvents {\r\n clientUpdated = 'client-updated',\r\n sideBarClicked = 'side-bar-clicked',\r\n clientCounts = 'client-counts',\r\n}\r\n\r\nexport const NO_TOKEN_FOUND = 'No authorization token found';\r\n\r\nexport const DEFAULT_DATE_TIME_FORMAT_OPTIONS = {\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n};\r\nexport const DEFAULT_DATE_FORMAT_OPTIONS = { year: 'numeric', month: '2-digit', day: '2-digit' };\r\n\r\nexport const MAX_INTEGER_VALUE_32_BIT = 2147483647;\r\n","import { Container } from 'aurelia-framework';\r\nimport { ClaimsService } from 'resources/services/claims-service';\r\n\r\nconst HAS_DECORATOR_SYMBOL = Symbol('has_decorated_properties');\r\n\r\nexport function has(...permissions: string[]) {\r\n return function (target: any, key: string) {\r\n const getter = async function () {\r\n const claimsService = Container.instance.get(ClaimsService);\r\n try {\r\n const hasPermission = await claimsService.hasAsync(permissions);\r\n Object.defineProperty(this, key, {\r\n value: hasPermission,\r\n writable: false,\r\n configurable: false,\r\n });\r\n return hasPermission;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n // Define the property on the target\r\n defineProperty(target, key, getter);\r\n\r\n // Record the decorated property\r\n recordDecoratedProperty(target, key);\r\n };\r\n}\r\n\r\nfunction defineProperty(target: any, key: string, getter: () => any) {\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 recordDecoratedProperty(target: any, key: string) {\r\n if (!target[HAS_DECORATOR_SYMBOL]) {\r\n target[HAS_DECORATOR_SYMBOL] = new Set();\r\n }\r\n\r\n target[HAS_DECORATOR_SYMBOL].add(key);\r\n}\r\n\r\nexport async function waitForHas(target: any): Promise {\r\n const hasDecoratedProperties = target[HAS_DECORATOR_SYMBOL];\r\n\r\n if (!hasDecoratedProperties || hasDecoratedProperties.size === 0) {\r\n return Promise.resolve([]);\r\n }\r\n\r\n const decoratedProperties = Array.from(hasDecoratedProperties);\r\n const propertyPromises = decoratedProperties.map(async (prop: string) => {\r\n try {\r\n const result = await target[prop];\r\n return result;\r\n } catch (e) {\r\n return false;\r\n }\r\n });\r\n\r\n return Promise.all(propertyPromises);\r\n}\r\n","export function addDeviceTokenForUser(emailAddress: string, deviceToken: string) { \r\n const DEVICE_TOKENS = JSON.parse(localStorage.getItem('device_tokens')) ?? [];\r\n \r\n const EMAIL_ADDRESS = emailAddress;\r\n const DEVICE_TOKEN = deviceToken;\r\n\r\n const TOKEN_EXISTS = DEVICE_TOKENS.some((dt: any) => dt.emailAddress === emailAddress);\r\n\r\n if (TOKEN_EXISTS) {\r\n const TOKEN_INDEX = DEVICE_TOKENS.findIndex((dt: any) => dt.emailAddress === emailAddress);\r\n\r\n DEVICE_TOKENS.splice(TOKEN_INDEX, 1);\r\n DEVICE_TOKENS.unshift({ emailAddress: EMAIL_ADDRESS, deviceToken: DEVICE_TOKEN });\r\n } else {\r\n DEVICE_TOKENS.unshift({ emailAddress: EMAIL_ADDRESS, deviceToken: DEVICE_TOKEN });\r\n }\r\n\r\n localStorage.setItem('device_tokens', JSON.stringify(DEVICE_TOKENS));\r\n}\r\n\r\nexport function getDeviceTokenForUser(emailAddress: string): string { \r\n const DEVICE_TOKENS = JSON.parse(localStorage.getItem('device_tokens')) ?? [];\r\n \r\n const TOKEN_EXISTS = DEVICE_TOKENS.some((dt: any) => dt.emailAddress === emailAddress);\r\n\r\n if (TOKEN_EXISTS) {\r\n const TOKEN_INDEX = DEVICE_TOKENS.findIndex((dt: any) => dt.emailAddress === emailAddress);\r\n return DEVICE_TOKENS[TOKEN_INDEX].deviceToken;\r\n }\r\n}\r\n","export enum RequestMethod {\r\n get = 'GET',\r\n post = 'POST',\r\n put = 'PUT',\r\n delete = 'DELETE',\r\n auto = 'AUTO',\r\n patch = 'PATCH',\r\n}\r\n\r\nexport enum RequestEncoding {\r\n none = '',\r\n form = 'application/x-www-form-urlencoded',\r\n json = 'application/json',\r\n}\r\n\r\nexport interface Endpoint {\r\n method: RequestMethod;\r\n uri: (input?: any[]) => string;\r\n headers?: any;\r\n mode?: string;\r\n}\r\n","import { HttpClient } from 'aurelia-fetch-client';\r\nimport { RequestEncoding, RequestMethod } from './endpoints';\r\nimport { IEndpoint } from './i-endpoint';\r\nimport { autoinject } from 'aurelia-framework';\r\n\r\n@autoinject()\r\nexport abstract class FormEndpoint\r\n implements IEndpoint, ResponseType>\r\n{\r\n protected abstract readonly method: RequestMethod;\r\n protected headers: Record = {\r\n 'Content-Type': RequestEncoding.form,\r\n };\r\n\r\n public response: Response;\r\n\r\n private readonly http: HttpClient;\r\n\r\n public constructor(http: HttpClient) {\r\n this.http = http;\r\n }\r\n\r\n protected abstract uri(routeParameters: RouteParameters): string;\r\n\r\n public async fetch(\r\n routeParameters: RouteParameters,\r\n fields: Record,\r\n additionalHeaders?: Record,\r\n ): Promise<{ data: ResponseType; response: Response }> {\r\n const searchParams = new URLSearchParams();\r\n for (const [key, value] of Object.entries(fields)) {\r\n searchParams.append(key, value as string);\r\n }\r\n\r\n const uri = this.uri(routeParameters);\r\n\r\n const combinedHeaders = {\r\n ...this.headers,\r\n ...additionalHeaders\r\n };\r\n\r\n const init: RequestInit = {\r\n method: this.method,\r\n headers: combinedHeaders,\r\n body: searchParams.toString(),\r\n };\r\n\r\n const response = await this.http.fetch(uri, init);\r\n\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n const data = (await response.json()) as ResponseType;\r\n\r\n return { data, response };\r\n }\r\n}\r\n","import { HttpClient, json } from 'aurelia-fetch-client';\r\nimport { RequestMethod } from './endpoints';\r\nimport { IEndpoint } from './i-endpoint';\r\nimport { autoinject } from 'aurelia-framework';\r\n\r\n@autoinject()\r\nexport abstract class JsonEndpoint\r\n implements IEndpoint\r\n{\r\n protected abstract readonly method: RequestMethod;\r\n protected headers: Record = {};\r\n\r\n private readonly http: HttpClient;\r\n\r\n constructor(http: HttpClient) {\r\n this.http = http;\r\n }\r\n\r\n protected abstract uri(routeParameters: RouteParameters): string;\r\n\r\n public async fetch(\r\n routeParameters: RouteParameters,\r\n body: RequestType | null,\r\n queryParams: Record | null = null,\r\n additionalHeaders: Record | null = null,\r\n ): Promise<{ data: ResponseType | null; response: Response }> {\r\n const headers = {\r\n ...this.headers,\r\n ...(additionalHeaders || {}),\r\n };\r\n\r\n const init: RequestInit = {\r\n method: this.method,\r\n headers: headers,\r\n ...(body ? { body: json(body) } : {}),\r\n };\r\n\r\n const params = queryParams ? `?${new URLSearchParams(queryParams)}` : '';\r\n const uri = `${this.uri(routeParameters)}${params}`;\r\n\r\n const response = await this.http.fetch(uri, init);\r\n if (!response.ok) {\r\n throw response;\r\n }\r\n\r\n // If the response body is empty, we don't want to try to parse it as JSON\r\n let responseBody = await response.json().catch(() => null);\r\n\r\n if (responseBody === null) {\r\n responseBody = undefined;\r\n }\r\n\r\n return { data: responseBody, response };\r\n }\r\n}\r\n","export enum AppTheme {\r\n LIGHT = 'light',\r\n BLUE = 'blue',\r\n}\r\n\r\nexport enum ProfilePages {\r\n GENERAL = 1,\r\n SALES = 2,\r\n BRANCH = 3,\r\n CONTACT = 4,\r\n FSG = 5,\r\n QUESTIONS = 6,\r\n ASSOCIATIONS = 7,\r\n NOTES = 8,\r\n}\r\n\r\nexport const enum PageMode {\r\n EDIT = 'edit',\r\n READONLY = 'readonly',\r\n}\r\n\r\nexport const enum ClientType {\r\n CLIENT = 600000000,\r\n PROSPECT = 600000001,\r\n}\r\n\r\nexport const enum EAddressType {\r\n email = 601000000,\r\n website = 2,\r\n}\r\n\r\nexport enum ButtonTranslationKeys {\r\n EDIT = 'buttonLabels:edit',\r\n CANCEL = 'buttonLabels:cancel',\r\n}\r\n\r\nexport enum ApplicationCountryCodes {\r\n AUSTRALIA = 'AU',\r\n NEW_ZEALAND = 'NZ',\r\n}\r\n\r\nexport enum TaskNotificationTypes {\r\n ALL = 0,\r\n OVERDUE = 1,\r\n DUE_TODAY = 2,\r\n UPCOMING = 3,\r\n COMPLETE = 4,\r\n}\r\n\r\nexport enum DocType {\r\n Document = 1,\r\n Task = 2,\r\n FileNote = 3,\r\n}\r\n\r\nexport enum GenerationStatus {\r\n NotFound = 0,\r\n DeQueued = 1,\r\n Queued = 2,\r\n Processing = 3,\r\n Ready = 4,\r\n Aborted = 5,\r\n Error = 6,\r\n New = 7,\r\n}\r\n\r\nexport enum PartyInstanceType {\r\n Adviser = 600000000,\r\n Bank = 600000001,\r\n BankBranch = 600000002,\r\n Client = 600000003,\r\n Company = 600000005,\r\n CompanyOffice = 600000007,\r\n Insurer = 600000008,\r\n InsurerOffice = 600000009,\r\n PremiumFunder = 600000010,\r\n Referral = 600000011,\r\n Underwriter = 600000012,\r\n InsuredName = 600000013,\r\n Prospect = 600000014,\r\n}\r\n\r\nexport enum DocCreationProgress {\r\n Error = -99,\r\n Not_Submitted = -2,\r\n Submitted = -1,\r\n New = 0,\r\n Started = 1,\r\n Fetching_Model = 2,\r\n Model_Fetched = 3,\r\n Rendering_Html = 4,\r\n Html_Rendered = 5,\r\n Rendering_Pdf = 6,\r\n Pdf_Rendered = 7,\r\n Rendering_Csv = 8,\r\n Csv_Rendered = 9,\r\n Completed = 10,\r\n}\r\n\r\nexport enum ReportType {\r\n View = 1,\r\n Pdf = 2,\r\n Csv = 4,\r\n}\r\n\r\nexport enum MandatoryDocType {\r\n Fsg = 0,\r\n Toe = 1,\r\n}\r\n","export function evenRound(num, decimalPlaces?) {\r\n const d = decimalPlaces || 0;\r\n const m = Math.pow(10, d);\r\n const n = +(d ? num * m : num).toFixed(8);\r\n const i = Math.floor(n);\r\n const f = n - i;\r\n const e = 1e-8;\r\n const r = (f > 0.5 - e && f < 0.5 + e) ?\r\n ((i % 2 === 0) ? i : i + 1) : Math.round(n);\r\n return d ? r / m : r;\r\n}\r\n","import { RenderInstruction, ValidateResult } from 'aurelia-validation';\r\n\r\nexport class FormValidationRenderer {\r\n render(instruction: RenderInstruction) {\r\n for (const { result, elements } of instruction.unrender) {\r\n for (const element of elements) {\r\n this.remove(element, result);\r\n }\r\n }\r\n\r\n for (const { result, elements } of instruction.render) {\r\n for (const element of elements) {\r\n this.add(element, result);\r\n }\r\n }\r\n }\r\n\r\n add(element: Element, result: ValidateResult) {\r\n if (result.valid) {\r\n return;\r\n }\r\n\r\n const formGroup = element.parentElement;\r\n if (!formGroup) {\r\n return;\r\n }\r\n\r\n if (formGroup['au']?.class?.viewModel) {\r\n formGroup['au'].class.viewModel.addClass('alert');\r\n } else {\r\n formGroup.classList.add('alert');\r\n }\r\n\r\n formGroup.classList.add('auFormInputError');\r\n\r\n if (element.tagName === 'IA-NUMERIC') {\r\n element.classList.add('alert--important');\r\n }\r\n\r\n // Select2\r\n if (element.getAttributeNames().includes('dynamic.bind')) {\r\n const select2SpanElement = element.getElementsByClassName('select2-selection select2-selection--single')[0];\r\n if (select2SpanElement) {\r\n select2SpanElement.classList.add('alert');\r\n }\r\n\r\n const select2SpanElement2 = element.getElementsByClassName(\r\n 'select2 select2-container select2-container--default',\r\n )[0];\r\n if (select2SpanElement2) {\r\n select2SpanElement2.classList.add('alert');\r\n }\r\n }\r\n\r\n // add the has-error class to the enclosing form-group div\r\n // formGroup.classList.add('has-error');\r\n\r\n // add help-block\r\n // const message = document.createElement('span');\r\n // message.className = 'help-block validation-message';\r\n // message.textContent = result.message;\r\n // message.id = `validation-message-${result.id}`;\r\n // formGroup.appendChild(message);\r\n }\r\n\r\n remove(element: Element, result: ValidateResult) {\r\n if (result.valid) {\r\n return;\r\n }\r\n\r\n const formGroup = element.parentElement;\r\n if (!formGroup) {\r\n return;\r\n }\r\n\r\n if (formGroup['au']?.class?.viewModel) {\r\n formGroup['au'].class.viewModel.removeClass('alert');\r\n } else {\r\n formGroup.classList.remove('alert');\r\n }\r\n\r\n formGroup.classList.remove('auFormInputError');\r\n\r\n if (element.tagName === 'IA-NUMERIC') {\r\n element.classList.remove('alert--important');\r\n }\r\n\r\n // Select2\r\n if (element.getAttributeNames().includes('dynamic.bind')) {\r\n const select2SpanElement = element.getElementsByClassName('select2-selection select2-selection--single')[0];\r\n if (select2SpanElement) {\r\n select2SpanElement.classList.remove('alert');\r\n }\r\n\r\n const select2SpanElement2 = element.getElementsByClassName(\r\n 'select2 select2-container select2-container--default',\r\n )[0];\r\n if (select2SpanElement2) {\r\n select2SpanElement2.classList.remove('alert');\r\n }\r\n }\r\n }\r\n}\r\n","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { milliseconds } from './milliseconds';\r\nimport { autoinject } from 'aurelia-dependency-injection';\r\nimport { BroadcastChannel } from 'broadcast-channel';\r\n\r\n@autoinject()\r\nexport class Inactivity {\r\n public timeoutValue;\r\n public timer;\r\n public channel;\r\n\r\n constructor(private ea: EventAggregator) {}\r\n\r\n public timedOut(): void {\r\n this.ea.publish('ia-logout');\r\n }\r\n\r\n public start(): void {\r\n if (this.timer) {\r\n window.clearTimeout(this.timer);\r\n }\r\n\r\n this.timer = window.setTimeout(this.timedOut.bind(this), this.timeoutValue);\r\n }\r\n\r\n public reset(): void {\r\n window.clearTimeout(this.timer);\r\n this.start();\r\n\r\n this.channel.postMessage('reset');\r\n }\r\n\r\n public initialise(hours: number | string, minutes: number | string, seconds: number | string): void {\r\n this.channel = new BroadcastChannel('inactivity-listener');\r\n\r\n document.addEventListener('mousemove', this.reset.bind(this), false);\r\n document.addEventListener('mousedown', this.reset.bind(this), false);\r\n document.addEventListener('keypress', this.reset.bind(this), false);\r\n document.addEventListener('touchmove', this.reset.bind(this), false);\r\n\r\n this.timeoutValue = milliseconds(hours, minutes, seconds);\r\n\r\n this.start();\r\n\r\n this.channel.onmessage = (e) => {\r\n window.clearTimeout(this.timer);\r\n this.start();\r\n };\r\n }\r\n}\r\n","import { FrameworkConfiguration, PLATFORM } from 'aurelia-framework';\r\nimport { i18tnValidation } from 'resources/startup/i18tn-validation';\r\n\r\nexport function configure(config: FrameworkConfiguration) {\r\n i18tnValidation(config.aurelia);\r\n\r\n config.globalResources([\r\n PLATFORM.moduleName('./attributes/class-attribute'),\r\n PLATFORM.moduleName('./attributes/input-mask'),\r\n PLATFORM.moduleName('./attributes/conditional-if'),\r\n PLATFORM.moduleName('./value-converters/currency-format'),\r\n PLATFORM.moduleName('./value-converters/paginate'),\r\n PLATFORM.moduleName('./value-converters/pretty-date'),\r\n PLATFORM.moduleName('./value-converters/yes-no'),\r\n PLATFORM.moduleName('./value-converters/to-upper-case'),\r\n PLATFORM.moduleName('./value-converters/variable-case'),\r\n PLATFORM.moduleName('./value-converters/slice'),\r\n // plopmarker: auto inserted global resources from yarn generate will be inserted here\r\n ]);\r\n}\r\n"],"names":["EMAIL","APP_CLIENT","addClientToRecentItems","client","RECENT_CLIENTS","JSON","parse","localStorage","getItem","CLIENT_ID","entityId","CLIENT_CODE","entityCode","CLIENT_NAME","entityName","COMPANY_OFFICE_CODE","companyOfficeCode","ADVISER_NAME","adviserName","some","c","CLIENT_INDEX","findIndex","splice","unshift","appClient","emailAddress","setItem","stringify","getRecentClientsByAppClientByUserId","filter","x","removeClassList","element","val","classList","remove","parent","previousClasses","ClassCustomAttribute","bind","bindingContext","overrideContext","this","styles","getContextFor","value","split","forEach","valueChanged","addClass","className","removeClass","join","newValue","map","trim","add","inject","Element","Parent","INPUT_TYPES","taskQueue","attribute","attached","setTimeout","setAttribute","includes","tagName","focus","type","search","querySelector","removeAttribute","bindable","autoinject","customAttribute","TaskQueue","ConditionalIf","defaultOptions","alias","digits","groupSeparator","digitsOptional","nullable","applyOptionsAndReMask","optionsChanged","options","inputmask","im","mask","DOM","HTMLInputElement","InputMask","calculateGst","gstRate","claimsService","run","navigationInstruction","next","settings","config","route","console","log","cancel","claims","length","isNewEditClaim","name","params","parentEntityId","fragment","hasAsync","id","ClaimsStep","cleanQceModel","model","saving","newModel","guid","groups","group","questions","question","index","disabledByQuestionFlowFlag","currentResponse","responsePresent","answerId","anzsicOccupationInsurerId","glassId","gridResponses","occupationId","propertyOwnersAnzsicOccupationId","responseTypeId","responseValue","response","ClaimDate","toISOString","DateOfOffence","DateOfLoss","displayTypeId","format","questionId","eventAggregatorEvents","localeMap","Map","MAX_INTEGER_VALUE_32_BIT","HAS_DECORATOR_SYMBOL","Symbol","has","target","key","getter","Object","defineProperty","get","enumerable","configurable","Container","permissions","hasPermission","writable","Set","recordDecoratedProperty","waitForHas","hasDecoratedProperties","size","decoratedProperties","Array","from","propertyPromises","prop","Promise","all","resolve","addDeviceTokenForUser","deviceToken","DEVICE_TOKENS","EMAIL_ADDRESS","DEVICE_TOKEN","dt","TOKEN_INDEX","getDeviceTokenForUser","RequestMethod","RequestEncoding","http","headers","fetch","routeParameters","fields","additionalHeaders","searchParams","URLSearchParams","entries","append","uri","combinedHeaders","init","method","body","toString","ok","json","data","FormEndpoint","queryParams","catch","responseBody","undefined","JsonEndpoint","AppTheme","ProfilePages","ButtonTranslationKeys","ApplicationCountryCodes","TaskNotificationTypes","DocType","GenerationStatus","PartyInstanceType","DocCreationProgress","ReportType","MandatoryDocType","evenRound","num","decimalPlaces","d","m","Math","pow","n","toFixed","i","floor","f","r","round","render","instruction","unrender","result","elements","valid","formGroup","parentElement","class","viewModel","getAttributeNames","select2SpanElement","getElementsByClassName","select2SpanElement2","ea","timedOut","publish","start","timer","window","clearTimeout","timeoutValue","reset","channel","postMessage","initialise","hours","minutes","seconds","document","addEventListener","onmessage","e","EventAggregator","Inactivity","configure","aurelia","globalResources"],"sourceRoot":""}