{"version":3,"sources":["webpack:///./src/resources/pipeline-steps/postrender.ts","webpack:///./src/resources/bootstrap-form-renderer.ts","webpack:///./src/resources/pipeline-steps/prerender.ts","webpack:///./src/resources/pipeline-steps/maintenance.ts","webpack:///./src/resources/index.ts","webpack:///./src/resources/value-converters/auth-filter.ts","webpack:///./src/resources/value-converters/capitalise.ts","webpack:///./src/resources/value-converters/to-fixed.ts","webpack:///./src/resources/value-converters/usd-format.ts","webpack:///./src/routes/dashboard/dashboard.html"],"names":["PostRenderStep","navigationInstruction","next","window","scrollTo","top","behavior","BootstrapFormRenderer","instruction","result","elements","unrender","element","this","remove","render","add","valid","classList","formGroup","closest","message","document","createElement","className","textContent","id","appendChild","querySelector","removeChild","querySelectorAll","length","PreRenderStep","currentRouteName","config","name","body","ALLOWED_TO_BYPASS_MAINTENANCE","MaintenanceStep","inMaintenance","token","auth","currentUser","getIdTokenResult","claims","Object","keys","some","c","includes","cancel","configure","globalResources","AuthFilter","routes","loggedIn","filter","r","publicOnly","r2","settings","roles","Capitalise","value","s","charAt","toUpperCase","slice","ToFixedValueConverter","precision","parsed","parseFloat","isNaN","toFixed","UsdFormatValueConverter","decimalLimit","module","exports"],"mappings":"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","file":"app~ce58d926.0ce8cba1966ad03b2cfd.chunk.js","sourcesContent":["export class PostRenderStep {\r\n run(navigationInstruction, next) {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n return next();\r\n }\r\n}\r\n","import { RenderInstruction, ValidateResult } from 'aurelia-validation';\r\n\r\nexport class BootstrapFormRenderer {\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 element.classList.add('is-invalid');\r\n\r\n const formGroup = element.closest('.form-group');\r\n if (!formGroup) {\r\n return;\r\n }\r\n\r\n // add help-block\r\n const message = document.createElement('div');\r\n message.className = 'invalid-feedback';\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.closest('.form-group');\r\n if (!formGroup) {\r\n return;\r\n }\r\n\r\n // remove help-block\r\n const message = formGroup.querySelector(`#validation-message-${result.id}`);\r\n if (message) {\r\n formGroup.removeChild(message);\r\n\r\n // remove the is-invalid class from the enclosing form-group div\r\n if (formGroup.querySelectorAll('.invalid-feedback').length === 0) {\r\n element.classList.remove('is-invalid');\r\n }\r\n }\r\n }\r\n}\r\n","export 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","/* eslint-disable no-undef */\r\nimport firebase from 'firebase/app';\r\nimport { Redirect } from 'aurelia-router';\r\n\r\nconst ALLOWED_TO_BYPASS_MAINTENANCE = ['super', 'admin', 'moderator'];\r\n\r\nexport class MaintenanceStep {\r\n static inMaintenance = false;\r\n async run(navigationInstruction, next) {\r\n if (MaintenanceStep.inMaintenance && navigationInstruction.config.name !== 'maintenance') {\r\n const token = await firebase.auth()?.currentUser?.getIdTokenResult() ?? { claims: {} };\r\n const claims = Object.keys(token.claims);\r\n\r\n const hasClaims = claims.some(c => ALLOWED_TO_BYPASS_MAINTENANCE.includes(c));\r\n\r\n if (!hasClaims) {\r\n return next.cancel(new Redirect('maintenance'));\r\n }\r\n }\r\n\r\n return next();\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-pal';\r\nimport {FrameworkConfiguration} from 'aurelia-framework';\r\n\r\nexport function configure(config: FrameworkConfiguration) {\r\n config.globalResources([\r\n PLATFORM.moduleName('./value-converters/auth-filter'),\r\n PLATFORM.moduleName('./value-converters/capitalise'),\r\n PLATFORM.moduleName('./value-converters/to-fixed'),\r\n PLATFORM.moduleName('./value-converters/usd-format')\r\n ]);\r\n}\r\n","import { RouteConfig } from 'aurelia-router';\r\nimport { valueConverter } from 'aurelia-binding';\r\n\r\n@valueConverter('authFilter')\r\nexport class AuthFilter {\r\n toView(routes: RouteConfig[], loggedIn: boolean, claims) {\r\n if (loggedIn) {\r\n return routes.filter(r => !r.config.publicOnly).filter((r2) => {\r\n // eslint-disable-next-line no-undef\r\n if (r2?.settings?.roles) {\r\n return claims ? (Object.keys(claims).some(r => r2.settings.roles.includes(r))) : false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n return routes.filter(r => !r.config.auth);\r\n }\r\n}\r\n","import { valueConverter } from 'aurelia-binding';\r\n\r\nconst capitalise = (s: string) => {\r\n if (typeof s !== 'string') {\r\n return '';\r\n }\r\n\r\n return s.charAt(0).toUpperCase() + s.slice(1);\r\n}\r\n\r\n@valueConverter('capitalise')\r\nexport class Capitalise {\r\n toView(value: string) {\r\n if (!value) {\r\n return value;\r\n }\r\n\r\n return capitalise(value);\r\n }\r\n}\r\n","export class ToFixedValueConverter {\r\n toView(value, precision) {\r\n const parsed = parseFloat(value);\r\n\r\n return !isNaN(parsed) ? parsed.toFixed(precision) : value;\r\n }\r\n}\r\n","import { usdFormat } from 'common/functions';\r\n\r\nexport class UsdFormatValueConverter {\r\n toView(value, decimalLimit) {\r\n if (!value) {\r\n return value;\r\n }\r\n\r\n return usdFormat(value, decimalLimit);\r\n }\r\n}\r\n","module.exports = \"\\n\";"],"sourceRoot":""}