{"version":3,"sources":["webpack:///./src/fast-icons.ts","webpack:///./src/state.ts","webpack:///./src/base/base-actions.ts","webpack:///./src/global.ts","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/icon/template.ts","webpack:///./src/components/icon/styles.ts","webpack:///./src/components/icon/index.ts","webpack:///./src/routes.ts","webpack:///./src/app.ts","webpack:///./src/base/base-app.ts","webpack:///./src/app.css","webpack:///./src/app.html","webpack:///./src/pages/account.ts","webpack:///./src/pages/account-credentials.ts","webpack:///./src/pages/account-profile.ts","webpack:///./src/pages/login-page.ts","webpack:///./src/pages/manager.ts?9dab","webpack:///./src/aurelia-components/index.ts","webpack:///./src/base/app-base.css","webpack:///./src/base/dark-base.css","webpack:///./src/components/dialogs/import-data.ts","webpack:///./src/components/dialogs/import-data.html","webpack:///./src/components/dialogs/member-dialog.ts","webpack:///./src/components/dialogs/member-dialog.html","webpack:///./src/components/index.ts","webpack:///./src/components/login.ts","webpack:///./src/components/login.css","webpack:///./src/components/login.html","webpack:///./src/components/menu.ts","webpack:///./src/components/menu.css","webpack:///./src/components/menu.html","webpack:///./src/components/user-preview.css","webpack:///./src/components/user-preview.html","webpack:///./src/dark.css","webpack:///./src/settings.js","webpack:///./src/base/base-main.ts","webpack:///./src/components/text-field-login/index.ts","webpack:///./src/components/text-field-login/template.ts","webpack:///./src/components/dialogs/dialog-styles.ts","webpack:///./src/components/dialogs/base.ts","webpack:///./src/components/dialogs/confirm.ts","webpack:///./src/components/dialogs/select.ts","webpack:///./src/components/dialogs/prompt-text.ts","webpack:///./src/components/stack/styles.ts","webpack:///./src/components/stack/template.ts","webpack:///./src/components/stack/index.ts","webpack:///./src/components/next/styles.ts","webpack:///./src/components/next/template.ts","webpack:///./src/components/next/index.ts","webpack:///./src/components/form-row/styles.ts","webpack:///./src/components/form-row/template.ts","webpack:///./src/components/form-row/index.ts","webpack:///./src/components/form/styles.ts","webpack:///./src/components/form/template.ts","webpack:///./src/components/form/index.ts","webpack:///./src/import-fast.ts","webpack:///./src/main.ts","webpack:///./src/pages/home.ts","webpack:///./src/pages/home.css","webpack:///./src/pages/home.html","webpack:///./src/resources/fast-menu-item-value-attribute.ts","webpack:///./src/resources/fast-menu-value-attribute.ts","webpack:///./src/resources/index.ts","webpack:///./src/typography.css","webpack:///./src/utilities.css"],"names":["defaultSize","defaultWeight","AureliaFastIconLoader","icon","outlineModule","solidModule","Array","isArray","i","this","load","iconName","loadIn","module","variant","then","mod","default","Error","notify","catch","error","console","warn","initialState","stateVersion","sdlogin","swissdata","authenticated","publicKey","apiKey","user","undefined","accessToken","loginStep","h","bcf","language","languages","country","countries","currentRoute","name","defaultRoutes","unauthenticated","surpriseHidden","initAppState","state","newState","Object","assign","supriseHidden","setFullState","fullState","clearState","accounts","host","store","signal","super","ready","registerAction","log","debug","bootstrap","stateStorageKey","dynamicModelSlugsForAutoLoading","subscribe","info","moment","sdLogin","logout","navigateToRoute","registerActions","roles","indexOf","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","code","keys","resolve","exports","IconTemplate","IconStyles","lightweight","accent","type","weight","size","connectedCallback","getNotifier","disconnectedCallback","unsubscribe","_source","prop","setIcon","window","requestAnimationFrame","shadowRoot","querySelector","iconSvgContent","solid","outline","innerHTML","svg","SVGElement","setAttribute","style","width","sizeInPx","height","paths","querySelectorAll","index","length","item","parseInt","toString","mode","template","styles","route","moduleId","settings","auth","ux","instance","get","design","key","global","router","styleEngine","modalService","iconLoader","toolbarTopOpened","handleResize","containerSelector","applyTheme","themeKey","borderRadius","document","body","documentElement","setProperty","three","canvasBackground","initIcons","addEventListener","withDefault","fast","designTokens","baseLayerLuminance","fill","fillColor","create","r","g","b","base","accentPalette","swatch","controlCornerRadius","removeEventListener","config","redirectUnauthenticatedTo","cordova","options","pushState","addAuthorizeStep","open","viewModel","position","openingCallback","contentWrapperElement","overlayElement","contentElement","HTMLElement","maxHeight","event","firstPath","composedPath","classList","contains","element","target","left","scrollLeft","top","scrollTop","display","elementUnderneath","elementFromPoint","pageX","pageY","Element","closest","CustomEvent","bubbles","dispatchEvent","___CSS_LOADER_API_IMPORT___","push","cb","require","configure","globalResources","ImportData","projectId","dataType","validExtention","selectedFile","progress","validatedCount","errorCount","inProgress","progressResultMessage","newAnnotation","labels","reflabels","matching","example","activeColumnEdition","activeSaveApi","activeInProgress","activeResult","tenFirstRows","allRows","finishReading","pointExamples","activeSaveAxis","axis","params","setParam","result","wasCancelled","output","inputbox","click","selectedFiles","substring","toLowerCase","loadFile","file","columnNb","rowNb","rows","row","c","reader","FileReader","onload","trans","JSON","parse","parseLoadedFile","readAsText","features","feature","setTimeout","selectedColumn","Number","reflabel","convertRowAnnotation","annotations","p","refId","title","description","tag","positionX","positionY","positionZ","km","loadAllDataFile","annotation","Math","round","addNewAnnotation","axi","addNewAxi","addAnnotation","notif","check","set","validationResult","validationController","validate","valid","firstInvalid","results","find","message","save","addAxi","geometry","properties","MemberDialog","superAdminRole","cbRoles","member","userId","role","includes","value","Login","bindingEngine","eventAggregator","routeNext","routeParams","loginWith","countriesList","step","mobile","mobilePlaceholder","regionCode","isMobileValid","email","emailPlaceholder","isEmailValid","password","isPasswordValid","validationCode","isValidationCodeValid","resetPasswordCode","isResetPasswordCodeValid","suggestAccountCreation","invalidCode","firstname","lastname","loading","subscriptions","validating","validated","createAccountMemory","publish","countryChanged","fetchQueryStringData","listenForAutoFill","fields","field","f","input","add","search","location","substr","searchParts","split","token","tokenExpiry","part","keyValue","startCreatingAnAccount","username","partMail","keyValueMail","keyMail","valueMail","decodeURIComponent","isEmail","emailChanged","forgotPassword","extraData","atob","replace","clearCreateAccountMemory","dispatch","validateCode","fetchCreateAccountMemory","continueFromCreateAccountMemory","elementOrElementId","detail","getElementById","scrollTo","behavior","scrollingElement","countryCode","getCountryCodeForRegionCode","getExample","getNumber","mobileChanged","toUpperCase","isValid","performValidation","preventAutoValidation","validateAccount","sub","dispose","manuallyRequested","preventDefault","trim","exists","checkIfUsernameExists","nextElement","goToId","HTMLInputElement","focus","emptyUsername","stopPropagation","shadowedInput","saveCreateAccountMemory","passwordStrengthRequired","createAccount","createAccountValidationToken","createAccountValidationTokenExpiry","login","afterLogin","processIdentity","forceUsername","requestResetPassword","resetPassword","backToLogin","string","btoa","stringify","localStorage","setItem","cam","getItem","isAfter","keepIdentity","removeItem","match","Menu","cancel","keywords","author","stateLog","dispatchedActions","performanceLog","devToolsStatus","primary","primaryForeground","accentForeground","primaryLight","primaryLightForeground","primaryDark","primaryDarkForeground","accentLight","accentLightForeground","accentDark","accentDarkForeground","appBackground","appForeground","surfaceBackground","surfaceForeground","disabledBackground","disabledForeground","errorForeground","userLang","navigator","userLanguage","defineProperty","version","environment","values","join","registerInstance","autocomplete","fastTextFieldLogin","compose","baseName","context","definition","x","readOnly","defaultSlottedNodes","slotted","property","filter","handleTextInput","handleChange","autofocus","disabled","list","maxlength","minlength","pattern","placeholder","required","spellcheck","ariaAtomic","ariaBusy","ariaControls","ariaCurrent","ariaDescribedby","ariaDetails","ariaDisabled","ariaErrormessage","ariaFlowto","ariaHaspopup","ariaHidden","ariaInvalid","ariaKeyshortcuts","ariaLabel","ariaLabelledby","ariaLive","ariaOwns","ariaRelevant","ariaRoledescription","ref","shadowOptions","dialogStyles","dialogTag","tagFor","buttonTag","css","dialogHeadTemplate","when","defaultTitleContent","dialogFootTemplate","cancelButtonText","defaultCancelButtonText","ok","okButtonText","defaultOKButtonText","dismissable","dialogElement","createElement","promise","Promise","initialValue","currentValue","remove","wasDismissed","once","appendChild","$emit","text","renderBaseModal","confirmDialog","defaultTextContent","autoclose","splice","option","findIndex","label","selectDialog","menuTag","menuItemTag","repeat","parent","toggleOption","ctx","textFieldInput","promptTextDialog","textFieldTag","StackStyles","StackTemplate","foundOne","nodes","forEach","node","observable","NextStyles","withBehaviors","NextTemplate","pushStateId","hasHistory","autodetectback","items","nextItems","previousOperations","changing","activeitem","changed","moving","queuedOperations","pushStateIdChanged","fastNextId","fastNextElementId","lastOperation","fastNextDirection","direction","back","url","URL","href","searchParams","activeid","queueUpdate","ensureIdInUrl","$fastController","isConnected","setItems","itemIds","activeIndex","nextIndex","itemId","getAttribute","setPositions","nextid","previd","fromPushState","previousOperation","pop","trackOperation","goToIndex","goToElement","ensureCurrentState","isPreviousId","oppositeDirection","setState","nextOperation","shift","history","replaceState","hash","attribute","FormStyles","FormTemplate","iconButtonStyles","register","def","aurelia","use","standardConfiguration","plugin","translationMemoryApiKey","translationMemoryHost","defaultLanguage","icons","logDispatchedActions","logPerformanceLog","logDevToolsStatus","logDefinitions","stripe","api","ipStack","registerMissingTranslationKeys","registerCorePlugins","extendEndpoint","ignoreDebugs","developmentLogging","start","setRoot","tags","Home","link","FastMenuItemValueAttribute","container","registerMenuItem","disposeMenuItem","newValue","computeValueFromItems","of","FastMenuValueAttribute","taskQueue","isMultiple","isQueued","applyValueToItems","valueChanged","queueMicroTask","requestProcessValue","setRolesAccordingToValueType","itemsLength","toggleAttribute","hasAttribute","twoWay"],"mappings":"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","file":"app~f075b844.376c8cecffefb4befa74.chunk.js","sourcesContent":["import { FastIcon } from './components/icon';\nimport { Observable } from '@microsoft/fast-element';\n\nFastIcon.defaultSize = 'xl';\nFastIcon.defaultWeight = 1.6;\n\nexport interface AureliaFastIconLoaderElement {\n  iconName: string;\n  outlineModule: Promise<any>,\n  solidModule: Promise<any>,\n}\n\nexport class AureliaFastIconLoader {\n  public constructor() {\n  }\n\n  //public async load(icon: AureliaFastIconLoaderElement): Promise<void>\n  //public async load(icon: AureliaFastIconLoaderElement[]): Promise<void>\n  public async load(icon: string | AureliaFastIconLoaderElement | AureliaFastIconLoaderElement[], outlineModule?: Promise<any>, solidModule?: Promise<any>): Promise<void>  {\n    if (Array.isArray(icon)) {\n      for (const i of icon) {\n        this.load(i);\n      }\n      return;\n    }\n    if (typeof icon === 'string') {\n      icon = {\n        iconName: icon,\n        outlineModule: outlineModule,\n        solidModule: solidModule\n      }\n    }\n    if (icon.outlineModule) {\n      this.loadIn(icon.iconName, icon.outlineModule, 'outline');\n    }\n    if (icon.solidModule) {\n      this.loadIn(icon.iconName, icon.solidModule, 'solid');\n    }\n  \n  }\n\n  private async loadIn(iconName: string, module: Promise<any>, variant: 'outline' | 'solid'): Promise<void> {\n    return module.then((mod) => {\n      if (typeof mod.default === 'string') {\n        FastIcon[variant][iconName] = mod.default;\n        Observable.notify(FastIcon, variant);\n      } else {\n        throw new Error('Invalid icon module');\n      }\n    }).catch((error) => {\n      console.warn('Error while loading icon', iconName, variant);\n      console.error(error);\n    });\n  }\n}\n","import { SwissdataState, AppState as SwissdataAppState, DynamicDataModel } from 'aurelia-deco';\nimport * as environment from '../config/environment.json';\nimport settings from 'settings';\nimport { State as BcfState, initialState as bcfInitialState } from 'aurelia-bcf';\n\n// DECLARE A \"AppState\" INTERFACE, EXTENDING \"SwissdataAppState\"\n// This interface must include any new key for the state of this specific app\nexport interface AppState extends SwissdataAppState, BcfState {\n  swissdata: SwissdataState;\n  surpriseHidden: boolean;\n}\n\n// DEFINE THE \"initalState\" BASED ON THE \"AppState\" INTERFACE\nexport const initialState: AppState = {\n  stateVersion: settings.stateVersion,\n  sdlogin: {},\n  swissdata: {\n    authenticated: false,\n    publicKey: environment.swissdata.apiKey,\n    user: undefined,\n    accessToken: undefined,\n    loginStep: 'login',\n    h: ''\n  },\n  bcf: bcfInitialState.bcf,\n  language: 'fr',\n  languages: ['fr', 'en'],\n  country: 'CH',\n  countries: ['CH'],\n  currentRoute: {\n    name: settings.defaultRoutes.unauthenticated\n  },\n  surpriseHidden: false\n}\n\n// DEFINE AN ACTION CALLED \"initAppState\" THAT TAKE ANY KIND OF STATE\n// AND RETURN A VALID STATE ACCORDING TO CURRENT DEFINITION (ABOVE)\n// IT MUST CHECK THE VALIDITY OF EACH KEY AND CORRECT ITS VALUE IF NECESSARY\nexport function initAppState(state: AppState) {\n  const newState = Object.assign({}, state);\n  if (typeof newState.currentRoute !== 'object') newState.currentRoute = initialState.currentRoute;\n  if (newState.supriseHidden === undefined) newState.supriseHidden = false;\n  if (newState.bcf === undefined) newState.bcf = bcfInitialState.bcf;\n  return newState;\n}\n\n","import { AppState, initialState } from 'state';\n\nexport function setFullState(state: AppState, fullState: AppState) {\n  const newState = Object.assign({}, fullState);\n  return newState;\n}\n\nexport function clearState(state: AppState) {\n  const accounts = state.sdlogin.accounts;\n  const host = state.swissdata.h;\n  const newState = Object.assign({}, initialState);\n  newState.sdlogin.accounts = accounts;\n  newState.swissdata.h = host;\n  return newState;\n}\n","import { inject, computedFrom } from 'aurelia-framework';\nimport { AppState, initAppState, initialState } from 'state';\nimport { setFullState, clearState } from 'base/base-actions';\nimport { SwissdataGlobal, ProfileHelper } from 'aurelia-deco';\nimport { errorify } from 'aurelia-resources';\nimport { Store } from 'aurelia-store';\nimport settings from 'settings';\nimport { BindingSignaler } from 'aurelia-templating-resources';\nimport * as moment from 'moment';\nimport 'moment/locale/fr'\n\n@inject(Store, BindingSignaler)\nexport class Global extends SwissdataGlobal {\n\n  public ready = false;\n\n  constructor(public store: Store<AppState>, private signal: BindingSignaler) {\n    super();\n    //let store = Container.instance.get(Store);\n    this.store.registerAction('initAppState', initAppState);\n    this.store.registerAction('setFullState', setFullState);\n    this.store.registerAction('clearState', clearState);\n    this.log.debug('bootstrap');\n    this.bootstrap({\n      stateStorageKey: settings.stateStorageKey,\n      language: settings.language,\n      languages: settings.languages,\n      dynamicModelSlugsForAutoLoading: [],\n      initialState: initialState,\n      stateVersion: settings.stateVersion\n    }).then(() => {\n      this.subscribe('language:changed', (language) => {\n        this.log.info('language:changed');\n        moment.locale(language);\n        this.signal.signal('language-changed');\n      });\n      moment.locale(this.state.language);\n      this.ready = true;\n    });\n  }\n\n  public async logout() {\n    try {\n      await this.sdLogin.logout();\n    } catch (error) {\n      errorify(error);\n    }\n    //this.swissdataApi.logout();\n    this.navigateToRoute(settings.defaultRoutes.unauthenticated);\n  }\n\n  registerActions() {\n    super.registerActions();\n    ProfileHelper.registerActions();\n  }\n\n  @computedFrom('state.swissdata.authenticated', 'state.swissdata.user.roles')\n  get hasAdminRole() {\n    if (!this.state.swissdata?.authenticated) {\n      return false;\n    }\n    if (!this.state.swissdata?.user?.roles) {\n      return false;\n    }\n    return this.state.swissdata.user.roles.indexOf('admin') !== -1;\n  }\n\n  @computedFrom('state.swissdata.authenticated', 'state.swissdata.user.roles')\n  get hasUserRole() {\n    if (!this.state.swissdata?.authenticated) {\n      return false;\n    }\n    if (!this.state.swissdata?.user?.roles) {\n      return false;\n    }\n    return this.state.swissdata.user.roles.indexOf('user') !== -1;\n  }\n\n  //\n  // Possible methods to overwrite\n  // * start() - called before anything else in the bootstrap method\n  // * beforeEnsuringAuthentication()\n  // * afterEnsuringAuthentication()\n  // * onAnyLoad() - by default: if config.useDynamicModels is true => \n  //    => load the dynamic models settings and \n  //    => autload dynamic data from dynamicModelSlugsForAutoLoading\n  // * onAuthenticatedLoad() - calls onAnyLoad by default\n  // * onUnauthenticatedLoad - calls onAnyLoad by default\n  // * onLogin() - calls onAuthenticatedLoad by default\n  // * onLogout()\n  // * registerActions() - make sure to call super.registerActions() inside\n  // \n\n}\n\n","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn-bd\": \"loYQ\",\n\t\"./bn-bd.js\": \"loYQ\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-mx\": \"tbfe\",\n\t\"./es-mx.js\": \"tbfe\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import { html } from '@microsoft/fast-element';\nimport { FastIcon } from './index';\n\nexport const IconTemplate = html<FastIcon>`<span></span>`;\n","import { css } from '@microsoft/fast-element';\n\nexport const IconStyles = css`\n  :host {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    contain: content;\n    stroke-width: 1px;\n  }\n  span {\n    display:inline-flex;\n    align-items: center;\n    justify-content: center;\n    contain: content;\n    stroke-width: 1px;\n  }\n`;","import { attr } from \"@microsoft/fast-element\";\nimport { FASTElement, customElement, Observable } from '@microsoft/fast-element';\nimport { IconTemplate as template } from './template';\nimport { IconStyles as styles } from './styles';\n\n@customElement({name: 'fast-icon', template, styles})\nexport class FastIcon extends FASTElement {\n\n  public static defaultWeight = 1;\n  public static defaultSize = 'lg';\n\n  public connectedCallback(): void {\n    super.connectedCallback();\n    Observable.getNotifier(FastIcon).subscribe(this, 'solid');\n    Observable.getNotifier(FastIcon).subscribe(this, 'outline');\n  }\n\n  public disconnectedCallback(): void {\n    super.disconnectedCallback();\n    Observable.getNotifier(FastIcon).unsubscribe(this, 'solid');\n    Observable.getNotifier(FastIcon).unsubscribe(this, 'outline');\n  }\n\n  public handleChange(_source: typeof FastIcon, prop: string): void {\n    if (prop === this.type) {\n      this.setIcon();\n    }\n  }\n\n  @attr({ mode: 'boolean' })\n  public lightweight = false;\n\n  public lightweightChanged(): void {\n    this.setIcon();\n  }\n\n  @attr({ mode: 'boolean' })\n  public accent = false;\n\n  public accentChanged(): void {\n    this.setIcon();\n  }\n\n  @attr()\n  public icon: string;\n\n  public iconChanged(): void {\n    this.setIcon();\n  }\n\n  private setIcon(): void {\n    window.requestAnimationFrame(() => {\n      if (!this.shadowRoot ||!this.shadowRoot.querySelector('span')) {\n        this.setIcon();\n        return;\n      }\n      const iconSvgContent = this.type === 'solid'\n      ? FastIcon.solid[this.icon] || ''\n      : FastIcon.outline[this.icon] || '';\n      this.shadowRoot.querySelector('span').innerHTML = iconSvgContent;\n      const svg = this.shadowRoot.querySelector('svg');\n      if (svg instanceof SVGElement) {\n        svg.setAttribute('part', 'svg');\n        svg.style.width = `${this.sizeInPx()}px`;\n        svg.style.height = `${this.sizeInPx()}px`;\n      }\n      const paths = this.shadowRoot.querySelectorAll('path');\n\n      for (let index = 0; index < paths.length; index++) {\n        const path = paths.item(index);\n        path.setAttribute('stroke-width', `${this.weight}`);\n      }\n    });\n  }\n\n  @attr()\n  public type: 'outline' | 'solid' = 'outline';\n\n  public typeChanged(): void {\n    if (this.type !== 'solid' && this.type !== 'outline') {\n      this.type = 'outline';\n    }\n    this.setIcon();\n  }\n\n  @attr()\n  public weight = FastIcon.defaultWeight;\n\n  public weightChanged(): void {\n    this.setIcon();\n  }\n\n  @attr()\n  public size = FastIcon.defaultSize;\n\n  public sizeChanged(): void {\n    this.setIcon();\n  }\n\n  // TODO: apply density / design-unit to the size value ??\n  private sizeInPx(): number {\n    if (parseInt(this.size, 10).toString() === this.size) {\n      return parseInt(this.size, 10);\n    }\n    if (this.size === 'sm' || this.size === 'small') {\n      return 16;\n    }\n    if (this.size === 'md' || this.size === 'medium') {\n      return 20;\n    }\n    if (this.size === 'lg' || this.size === 'large') {\n      return 24;\n    }\n    if (this.size === 'xl' || this.size === 'extra-large') {\n      return 28;\n    }\n    return 24;\n  }\n\n  public static solid: {[key: string]: string} = {};\n  public static outline: {[key: string]: string} = {};\n}\n","import {PLATFORM} from 'aurelia-pal';\nimport {RouteConfig} from 'aurelia-router';\n\nexport let routes: Array<RouteConfig> = [\n  { route: '',       name: 'home',       moduleId: PLATFORM.moduleName('pages/home') },\n  { route: 'home',       name: 'start',       moduleId: PLATFORM.moduleName('pages/home') },\n  { route: 'login',       name: 'login',       moduleId: PLATFORM.moduleName('pages/login-page', 'login'), settings: {auth: false} },\n  { route: 'account',       name: 'account',       moduleId: PLATFORM.moduleName('pages/account', 'account'), settings: {auth: true} },\n  { route: 'profile',       name: 'profile',       moduleId: PLATFORM.moduleName('pages/account-profile', 'account'), settings: {auth: true} },\n  { route: 'credentials',       name: 'credentials',       moduleId: PLATFORM.moduleName('pages/account-credentials', 'account'), settings: {auth: true} },\n  { route: 'manager',       name: 'manager',       moduleId: PLATFORM.moduleName('pages/manager', 'manager'), settings: {auth: true} },\n  { route: 'dico',       name: 'dico',       moduleId: PLATFORM.moduleName('aurelia-deco/components/dico2/dico', 'dico'), settings: { auth: true } },\n];\n\nexport default routes;\n","import { Global } from './global';\nimport { inject } from 'aurelia-framework';\nimport { Router, RouterConfiguration } from 'aurelia-router';\nimport { ArDrawer, addNotifyContainerAlias, setNotifyDefaults } from 'aurelia-resources';\nimport { DynamicDataModel } from 'aurelia-deco';\nimport routes from './routes';\nimport settings from './settings';\nimport { AuthorizeStep } from 'aurelia-deco';\nimport { BaseApp } from 'base/base-app';\nimport { UxModalService } from '@aurelia-ux/modal';\n// import * as FastClick from 'fastclick';\nimport { StyleEngine } from '@aurelia-ux/core';\nimport { UxInputTheme } from '@aurelia-ux/input';\nimport { AureliaFastIconLoader } from './fast-icons';\nimport { accentPalette, baseLayerLuminance, fillColor, controlCornerRadius, SwatchRGB, PaletteRGB, typeRampBaseFontSize } from '@microsoft/fast-components';\nimport { parseColor } from '@microsoft/fast-colors';\nimport { Menu } from './components/menu';\n\n@inject(Global, Router, StyleEngine, UxModalService, AureliaFastIconLoader)\nexport class App extends BaseApp {\n\n  menuDrawer: ArDrawer;\n  bottomDrawerExempleDrawer: ArDrawer;\n  \n  public toolbarTopOpened: boolean = false;\n\n  private handleResize: EventListener;\n\n  constructor(private global: Global, private router: Router, private styleEngine: StyleEngine, private modalService: UxModalService, public iconLoader: AureliaFastIconLoader) {\n    super();\n    this.handleResize = e => {\n    };\n    addNotifyContainerAlias('top', '.notify-top-host');\n    addNotifyContainerAlias('bottom', '.notify-bottom-host');\n    setNotifyDefaults({\n      containerSelector: '.notify-top-host'\n    });\n    const inputTheme: UxInputTheme = {\n      themeKey: \"input\",\n      borderRadius: '0px'\n    };\n    this.styleEngine.applyTheme(inputTheme, document.body);\n    document.documentElement.style.setProperty('--three-canvas-background', settings.three.canvasBackground);\n    this.initIcons();\n  }\n\n  public attached() {\n    this.handleResize(null);\n    window.addEventListener('resize', this.handleResize);\n    // (FastClick as any).attach(document.body);\n\n    baseLayerLuminance.withDefault(settings.fast.designTokens.baseLayerLuminance);\n    typeRampBaseFontSize.withDefault('16px');\n    // lineHeightRatio.withDefault(1.5);\n\n    const fill = parseColor(settings.fast.designTokens.fillColor);\n    fillColor.withDefault(SwatchRGB.create(fill.r, fill.g, fill.b));\n\n    const base = parseColor(settings.fast.designTokens.accentPalette);\n    const swatch = SwatchRGB.create(base.r, base.g, base.b);\n    accentPalette.withDefault(PaletteRGB.create(swatch));\n    controlCornerRadius.withDefault(settings.fast.designTokens.controlCornerRadius);\n\n  }\n\n  public detached() {\n    window.removeEventListener('resize', this.handleResize);\n  }\n\n  configureRouter(config: RouterConfiguration) {\n    AuthorizeStep.redirectUnauthenticatedTo = settings.defaultRoutes.unauthenticated;\n    if (!(window as any).cordova) config.options.pushState = true;\n    config.addAuthorizeStep(AuthorizeStep);\n    config.map(routes);\n  }\n\n  public openMenu() {\n    this.modalService.open({\n      viewModel: Menu,\n//      host: 'ecos-design-system-provider',\n      position: 'left',\n      openingCallback: ((contentWrapperElement, overlayElement) => {\n        const contentElement = contentWrapperElement.querySelector('.ux-modal__content');\n        if (contentElement instanceof HTMLElement) {\n          contentElement.style.maxHeight = 'none';\n        }\n      })\n    });\n  }\n\n  public transferClick(event: MouseEvent) {\n    const firstPath = event.composedPath()[0];\n    if (firstPath instanceof HTMLElement) {\n      if (!firstPath.classList.contains('abs-from-toolbar-top')) {\n        return true;\n      }\n    }\n    const element = event.target;\n    if (element instanceof HTMLElement) {\n      const left = element.scrollLeft;\n      const top = element.scrollTop;\n  \n      //hide the overlay for now so the document can find the underlying elements\n      element.style.display = 'none';\n      //use the current scroll position to deduct from the click position\n      const elementUnderneath = document.elementFromPoint(event.pageX - left, event.pageY - top);\n      if (elementUnderneath instanceof Element && elementUnderneath.closest('.abs-toolbar-top')) {\n        // elementUnderneath.dispatchEvent(event);\n        const event = new CustomEvent('click', {bubbles: true});\n        elementUnderneath.dispatchEvent(event);\n      }\n      //show the overlay again\n      element.style.display = 'block';\n    }\n    return true;\n  }\n\n  private async initIcons(): Promise<void> {\n    \n    this.iconLoader.load('Adjustments', import('./icons/outline/Adjustments'), import('./icons/solid/Adjustments'));\n    // this.iconLoader.load('ArrowCircleRight', import('./icons/outline/ArrowCircleRight'), import('./icons/solid/ArrowCircleRight'));\n    // this.iconLoader.load('ArrowNarrowLeft', import('./icons/outline/ArrowNarrowLeft'), import('./icons/solid/ArrowNarrowLeft'));\n    // this.iconLoader.load('ArrowNarrowRight', import('./icons/outline/ArrowNarrowRight'), import('./icons/solid/ArrowNarrowRight'));\n    // this.iconLoader.load('ArrowsCondense', import('./icons/custom/arrowsCondense'), import('./icons/custom/arrowsCondense'));\n    // this.iconLoader.load('ArrowsExpand', import('./icons/outline/ArrowsExpand'), import('./icons/solid/ArrowsExpand'));\n    this.iconLoader.load('AtSymbol', import('./icons/outline/AtSymbol'), import('./icons/solid/AtSymbol'));\n    // this.iconLoader.load('Ban', import('./icons/outline/Ban'), import('./icons/solid/Ban'));\n    // this.iconLoader.load('Calendar', import('./icons/outline/Calendar'), import('./icons/solid/Calendar'));\n    this.iconLoader.load('Check', import('./icons/outline/Check'), import('./icons/solid/Check'));\n    // this.iconLoader.load('ChevronDown', import('./icons/outline/ChevronDown'), import('./icons/solid/ChevronDown'));\n    this.iconLoader.load('ChevronLeft', import('./icons/outline/ChevronLeft'), import('./icons/solid/ChevronLeft'));\n    this.iconLoader.load('ChevronRight', import('./icons/outline/ChevronRight'), import('./icons/solid/ChevronRight'));\n    // this.iconLoader.load('ChevronUp', import('./icons/outline/ChevronUp'), import('./icons/solid/ChevronUp'));\n    // this.iconLoader.load('CloudDownload', import('./icons/outline/CloudDownload'), import('./icons/solid/CloudDownload'));\n    // this.iconLoader.load('cog', import('./icons/outline/Cog'), import('./icons/solid/Cog'));\n    this.iconLoader.load('Cog', import('./icons/outline/Cog'), import('./icons/solid/Cog'));\n    // this.iconLoader.load('ColorSwatch', import('./icons/outline/ColorSwatch'), import('./icons/solid/ColorSwatch'));\n    // this.iconLoader.load('CubeTransparent', import('./icons/outline/CubeTransparent'), import('./icons/solid/CubeTransparent'));\n    this.iconLoader.load('CursorClick', import('./icons/outline/CursorClick'), import('./icons/solid/CursorClick'));\n    // this.iconLoader.load('DotsCircleHorizontal', import('./icons/outline/DotsCircleHorizontal'), import('./icons/solid/DotsCircleHorizontal'));\n    // this.iconLoader.load('DotsHorizontal', import('./icons/outline/DotsHorizontal'), import('./icons/solid/DotsHorizontal'));\n    // this.iconLoader.load('Download', import('./icons/outline/Download'), import('./icons/solid/Download'));\n    this.iconLoader.load('Eye', import('./icons/outline/Eye'), import('./icons/solid/Eye'));\n    // this.iconLoader.load('Filter', import('./icons/outline/Filter'), import('./icons/solid/Filter'));\n    // this.iconLoader.load('Flag', import('./icons/outline/Flag'), import('./icons/solid/Flag'));\n    // this.iconLoader.load('Folder', import('./icons/outline/Folder'), import('./icons/solid/Folder'));\n    // this.iconLoader.load('FolderOpen', import('./icons/outline/FolderOpen'), import('./icons/solid/FolderOpen'));\n    this.iconLoader.load('Home', import('./icons/outline/Home'), import('./icons/solid/Home'));\n    // this.iconLoader.load('InformationCircle', import('./icons/outline/InformationCircle'), import('./icons/solid/InformationCircle'));\n    // this.iconLoader.load('LocationMarker', import('./icons/outline/LocationMarker'), import('./icons/solid/LocationMarker'));\n    this.iconLoader.load('Logout', import('./icons/outline/Logout'), import('./icons/solid/Logout'));\n    this.iconLoader.load('Menu', import('./icons/outline/Menu'), import('./icons/solid/Menu'));\n    // this.iconLoader.load('MenuAlt4', import('./icons/outline/MenuAlt4'), import('./icons/solid/MenuAlt4'));\n    // this.iconLoader.load('Minus', import('./icons/outline/Minus'), import('./icons/solid/Minus'));\n    // this.iconLoader.load('Pause', import('./icons/outline/Pause'), import('./icons/solid/Pause'));\n    // this.iconLoader.load('Pencil', import('./icons/outline/Pencil'), import('./icons/solid/Pencil'));\n    // this.iconLoader.load('Play', import('./icons/outline/Play'), import('./icons/solid/Play'));\n    // this.iconLoader.load('Plus', import('./icons/outline/Plus'), import('./icons/solid/Plus'));\n    this.iconLoader.load('Qrcode', import('./icons/outline/Qrcode'), import('./icons/solid/Qrcode'));\n    // this.iconLoader.load('Scissors', import('./icons/outline/Scissors'), import('./icons/solid/Scissors'));\n    // this.iconLoader.load('Search', import('./icons/outline/Search'), import('./icons/solid/Search'));\n    // this.iconLoader.load('Selector', import('./icons/outline/Selector'), import('./icons/solid/Selector'));\n    // this.iconLoader.load('Sparkles', import('./icons/outline/Sparkles'), import('./icons/solid/Sparkles'));\n    this.iconLoader.load('Trash', import('./icons/outline/Trash'), import('./icons/solid/Trash'));\n    this.iconLoader.load('User', import('./icons/outline/User'), import('./icons/solid/User'));\n    // this.iconLoader.load('UserGroup', import('./icons/outline/UserGroup'), import('./icons/solid/UserGroup'));\n    // this.iconLoader.load('VideoCamera', import('./icons/outline/VideoCamera'), import('./icons/solid/VideoCamera'));\n    // this.iconLoader.load('Walking', import('./icons/custom/walking'), import('./icons/custom/walking'));\n    this.iconLoader.load('X', import('./icons/outline/X'), import('./icons/solid/X'));\n  }\n\n}\n\nexport class Link extends DynamicDataModel {\n  id: string;\n  urlId: string;\n  urlTarget: string;\n  urlType: 'occurrences'|'rooms'|'items'|'systems'|'other' | undefined;\n  name?: string;\n  buildingName?: string;\n  roomNb?: string;\n}\n\n","import { Container } from 'aurelia-framework';\nimport { AureliaUX } from '@aurelia-ux/core';\nimport { settings } from 'settings';\n\nexport class BaseApp {\n\n  private ux: AureliaUX;\n\n  constructor() {\n    this.ux = Container.instance.get(AureliaUX);\n    if (settings && settings.ux) {\n      if (settings.ux.design) {\n        for (let key in settings.ux.design) {\n          this.ux.design[key] = settings.ux.design[key];\n        }\n      }\n    }\n  }\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".requesting-indicator {\\n  position: absolute;\\n  top: 0px;\\n  left: 0;\\n  right: 0;\\n  z-index: 3;\\n  display: flex;\\n}\\n\\n\\n/* Fix for Safari-mobile in gettingStarted.Email */\\nbody, button, input, optgroup, select, textarea {\\n  -webkit-overflow-scrolling: auto !important;\\n  }\\n/* Fix for Old Getting-started module */\\ngetting-started .ux-button--raised,getting-started .ux-button--flat,getting-started .ux-button--fab {\\n    background-color: var(--aurelia-ux--design-primary-dark) !important;\\n}\\n\\nbody {\\n  background-color: var(--fill-color);\\n  color: var(--neutral-foreground-rest);\\n}\\n\\n/* Fix Style ux-button */\\n.ux-button--accent > .ux-button--outline {\\n  border-color: var(--aurelia-ux--design-accent);\\n  color: var(--aurelia-ux--design-accent);\\n}\\n\\n.ux-button--text{\\n  color: var(--aurelia-ux--design-accent);\\n}\\n\\n:root {\\n  --spacing-unit: calc(var(--design-unit) * 2);\\n  --spacing-unit-lg: calc(var(--spacing-unit) * 2);\\n  --three-canvas-background: #000;\\n}\\n\\n\\n.abs-from-toolbar-top {\\n  padding-bottom: 100px;\\n}\\nar-smart-toolbar > div {\\n  box-shadow: none;\\n  border-bottom: 1px solid var(--neutral-stroke-divider-rest);\\n  background-color: #353535;\\n}\\nar-smart-toolbar > div > span.right {\\n  margin-right: 10px;\\n}\\nar-smart-toolbar fast-icon {\\n  color: white;\\n}\\n\\n.menu {\\n  height: 100%;\\n  position: relative;\\n  padding-top: 80px;\\n  overflow-y: auto;\\n}\\n\\n.menu > fast-card-row:first-of-type {\\n  position: fixed;\\n  top: 0;\\n  width: 100%;\\n  z-index: 1;\\n}\\n\\n/* Fix hide when fast-select is open */\\nfast-card {\\n  contain: none;\\n} \\n\\nfast-collection {\\n  display: block;\\n  box-sizing: border-box;\\n}\\n\\nfast-collection-row {\\n  display: flex;\\n  flex-wrap: wrap;\\n  margin: 0 calc(var(--ifm-spacing-horizontal)*-1);\\n}\\n\\n.col[class*=col--] {\\n  padding: 8px;\\n  flex: auto;\\n}\\n.margin-bottom--lg, .margin-vert--lg {\\n  margin-bottom: 2rem!important;\\n}\\n.col--6 {\\n  --ifm-col-width: 50%;\\n}\\n.col--12 {\\n  width: 100%;\\n}\\n\\nfast-dialog {\\n  --dialog-height: auto;\\n  --dialog-width: auto;\\n  color: var(--neutral-foreground-rest);\\n}\\n\\nfast-dialog::part(control) {\\n  min-width: 300px;\\n}\\n\\nfast-dialog .dialog-head {\\n  display: grid;\\n  grid-gap: calc(var(--spacing-unit-lg) * 1px);\\n  grid-template-columns: min-content 1fr min-content;\\n  align-items: center;\\n  padding: 0 calc(var(--spacing-unit) * 1px);\\n}\\n\\nfast-dialog .dialog-foot {\\n  display: grid;\\n  grid-gap: calc(var(--spacing-unit-lg) * 1px);\\n  grid-template-columns: 1fr min-content;\\n  align-items: center;\\n  padding: calc(var(--spacing-unit) * 1px);\\n}\\n\\nfast-dialog .dialog-foot > * {\\n  display: flex;\\n  gap: calc(var(--spacing-unit) * 1px);\\n}\\n\\nfast-dialog .dialog-content {\\n  padding: calc(var(--spacing-unit) * 1px);\\n  max-height: calc(100vh - 200px);\\n  overflow-y: auto;\\n}\\n\\nfast-badge {\\n  --badge-fill-primary: var(--accent-fill-rest);\\n  --badge-fill-secondary: grey;\\n  --badge-fill-transparent: transparent;\\n  --badge-color-secondary:var(--foreground-on-accent-rest); \\n  --badge-color-primary: var(--foreground-on-accent-rest);\\n  line-height: 18px;\\n  align-self: center;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = \"<template>\\n  <require from=\\\"aurelia-resources/animate.css\\\"></require>\\n  <require from=\\\"aurelia-resources/basics.css\\\"></require>\\n  <require from=\\\"aurelia-resources/dialog-card.css\\\"></require>\\n  <require from=\\\"./typography.css\\\"></require>\\n  <require from=\\\"./base/app-base.css\\\"></require>\\n  <require from=\\\"./app.css\\\"></require>\\n  <require from=\\\"./base/dark-base.css\\\"></require>\\n  <require from=\\\"./dark.css\\\"></require>\\n  <require from=\\\"./utilities.css\\\"></require>\\n\\n  <noie></noie>\\n  <div class=\\\"notify-top-host\\\"></div>\\n  <div class=\\\"notify-bottom-host\\\"></div>\\n\\n  <div class=\\\"requesting-indicator\\\" if.bind=\\\"global.swissdataApi.http.isRequesting & debounce:150\\\">\\n    <ar-spinner-line height=\\\"3px\\\" active.bind=\\\"true\\\"></ar-spinner-line>\\n  </div>\\n\\n  <!-- Smart toolbar displayed in all application, on top of router view -->\\n  <ar-smart-toolbar class=\\\"abs-toolbar-top\\\" style=\\\"background: white; z-index: 2;\\\">\\n    <!-- Left part of the toolbar -->\\n    <fast-button icon slot=\\\"left\\\" appearance=\\\"lightweight\\\" click.trigger=\\\"openMenu()\\\">\\n      <fast-icon icon=\\\"Menu\\\"></fast-icon>\\n    </fast-button>\\n    \\n    <!-- Center part of the toolbar -->\\n    <span slot=\\\"center\\\" class=\\\"click\\\" click.delegate=\\\"global.navigateToRoute('home')\\\"><img src=\\\"/images/realbuild-logo.png\\\" alt=\\\"realbuild.app\\\" height=\\\"35px\\\"></span>\\n    <fast-button icon slot=\\\"right\\\" appearance=\\\"lightweight\\\" click.trigger=\\\"global.navigateToRoute('account')\\\">\\n      <fast-icon icon=\\\"User\\\"></fast-icon>\\n    </fast-button>\\n  </ar-smart-toolbar>\\n\\n\\n  <div class=\\\"abs-from-toolbar-top vscroll\\\" if.bind=\\\"global.ready\\\" click.delegate=\\\"transferClick($event)\\\">\\n    <router-view></router-view>\\n  </div>\\n\\n</template>\\n\";","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../node_modules/ts-loader/index.js!./account.ts\"));\n\t}, \"account\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../node_modules/ts-loader/index.js!./account-credentials.ts\"));\n\t}, \"account\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../node_modules/ts-loader/index.js!./account-profile.ts\"));\n\t}, \"account\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../node_modules/ts-loader/index.js!./login-page.ts\"));\n\t}, \"login\");\n}","module.exports = function(cb) {\n\trequire.ensure([], function(require) {\n\t\tcb(require(\"!!../../node_modules/ts-loader/index.js!./manager.ts\"));\n\t}, \"manager\");\n}","\nimport { FrameworkConfiguration } from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\n\nexport function configure(config: FrameworkConfiguration) {\n  config.globalResources([\n  ]);\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* normalize all ar-drawer to same z-index position */\\nbody ar-drawer {\\n  z-index: 10;\\n}\\nbody .drawer-overlay {\\n  z-index: 9;\\n}\\n\\n\\nux-list-item {\\n  justify-content: space-between;\\n}\\n\\nux-list-item .ux-list-item__list-content {\\n  width: 100%;\\n  margin-left: 16px;\\n}\\n\\n.requesting-indicator {\\n  position: absolute;\\n  top: 49px;\\n  left: 0;\\n  right: 0;\\n  z-index: 3;\\n  display: flex;\\n}\\n\\nbody > .notify-top-host,\\nbody > .notify-bottom-host {\\n  position: absolute;\\n  width: 100%;\\n  z-index: 400;\\n  pointer-events: none;\\n}\\nbody > .notify-top-host {\\n  top: 0;\\n}\\n\\nbody > .notify-bottom-host {\\n  bottom: 0;\\n}\\nbody > .notify-top-host .ar-notification .ar-notification__message,\\nbody > .notify-bottom-host .ar-notification .ar-notification__message {\\n  pointer-events: auto;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".dark {\\n  background: var(--aurelia-ux--design-primary);\\n  --aurelia-ux--button-background: #01DF9B;\\n  --aurelia-ux--button-foreground: #fff;\\n  --aurelia-ux--input-background: rgba(0, 0, 0, 0.2);\\n  --aurelia-ux--input-foreground: #fff;\\n  --aurelia-ux--input-foreground-label: #dadada;\\n  --aurelia-ux--input-active-color: #7BE0DD;\\n  --aurelia-ux--input-background-hover: rgba(0, 0, 0, 0.3);\\n}\\n\\n.dark .ux-button--text {\\n  --aurelia-ux--button-background: #fff;\\n}\\n\\n.dark,\\n.dark h1,\\n.dark h2,\\n.dark h3,\\n.dark h4,\\n.dark h5,\\n.dark h6,\\n.dark p {\\n  color: var(--aurelia-ux--design-primary-foreground);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import { UxModalServiceResult } from '@aurelia-ux/modal';\nimport { inject } from 'aurelia-framework';\nimport { Global } from '../../global';\nimport { errorify, notify } from 'aurelia-resources';\nimport { DynamicDataModel, errorHandler } from 'aurelia-deco';\nimport { getLogger } from 'aurelia-logging';\nconst log = getLogger('member-dialog');\nimport readXlsxFile from 'read-excel-file';\n\nexport interface Annotation {\n  refId?: string;\n  title?: string;\n  description?: string;\n  projectId?: string;\n  type?: 'annotation' | 'point';\n  tag?: string;\n  code?: string;\n  positionX?: number;\n  positionY?: number;\n  positionZ?: number;\n  image?: string[];\n  externalLink?: string;\n  km?: number;\n}\n\nexport interface ReferenceColumn {\n  name: string;\n  matching: number;\n  example: string;\n}\n\n\nexport interface GeometryPoint {\n  type: 'LineString' | 'Point';\n  coordinates: number[];\n}\n\nexport interface GeometryLineString {\n  type: string;\n  coordinates: number[][];\n}\n\nexport interface Xdata {\n  appName: string;\n  data: any[];\n}\n\nexport interface Properties {\n  id: string;\n  km: number;\n  categories?: string[];\n  dxfCode?: string;\n  layer?: string;\n  space?: string;\n  color?: string;\n  rotation?: number;\n  scale?: string;\n  lineType?: string;\n  lineWeight?: string;\n  text?: string;\n  blocName?: string;\n  xdatas?: Xdata[];\n  attributes?: any;\n  dynamics?: any;\n}\n\nexport interface Feature {\n  type: string;\n  geometry: GeometryPoint | GeometryLineString;\n  properties: Properties;\n}\n\nexport interface FeatureCollection {\n  type: string;\n  features: Feature[];\n}\n\n\n\n@inject(Global)\nexport class ImportData {\n  \n  public projectId: string = undefined;\n  public dataType: 'annotation' | 'axis' = 'annotation';\n  private validExtention: string = 'xlsx';\n\n  private inputbox: HTMLElement;\n  private selectedFiles: any;\n  private selectedFile: string = \"\";\n  private progress: number = 0;\n  private validatedCount: number = 0;\n  private errorCount: number = 0;\n  private inProgress: string = \"Saving in progress\";\n  private progressResultMessage: string = undefined;\n  private newAnnotation: Annotation[] = [];\n  private labels: string[] = [];\n  private reflabels: ReferenceColumn[] = [\n    {name: 'refId', matching: -1, example: ''},\n    {name: 'title', matching: -1, example: ''},\n    {name: 'description', matching: -1, example: ''},\n    {name: 'type', matching: -1, example: ''},\n    {name: 'tag', matching: -1, example: ''},\n    {name: 'code', matching: -1, example: ''},\n    {name: 'positionX', matching: -1, example: ''},\n    {name: 'positionY', matching: -1, example: ''},\n    {name: 'positionZ', matching: -1, example: ''},\n    {name: 'km', matching: -1, example: ''},\n  ];\n\n  private activeColumnEdition: boolean = false;\n  private activeSaveApi: boolean = false;\n  private activeInProgress: boolean = false;\n  private activeResult: boolean = false;\n  private tenFirstRows = [];\n  private allRows = [];\n  private finishReading: boolean = false;\n  private pointExamples: Annotation[] = [];\n\n  private activeSaveAxis: boolean = false;\n  private axis: Feature[] = [];\n\n  constructor(private global: Global) {\n  }\n\n  public activate(params: any) {\n      if (params.projectId) {\n          this.projectId = params.projectId;\n      }\n      if (params.dataType) {\n          this.dataType = params.dataType;\n      }\n      this.setParam();\n  }\n\n  public setParam(){\n    if (this.dataType == 'annotation') {\n      this.selectedFile = \"Select Excel file (xlsx)\"\n      this.validExtention = \"xlsx\";\n    } else if (this.dataType == 'axis') {\n      this.selectedFile = \"Select Axis file (geojson)\"\n      this.validExtention = \"geojson\";\n    }\n  }\n\n  public async canDeactivate(result: UxModalServiceResult) {\n    if (result.wasCancelled) {\n      return true;\n    }\n    if (result.output === 'remove') {\n      try {\n        // const members = await this.global.shops.api.delete(`/shop/admin/${this.shopId}/members/${this.member.userId}`).then(jsonify);\n        // result.output = members;\n        // notify('Member removed');\n        return true;\n      } catch (error) {\n        errorify(error);\n      }\n    }\n    if (true) {\n      try {\n        result.output = true;\n      } catch (error) {\n        errorify(error);\n      }\n    }\n  }\n\n\n\n\n  // Import from file\n  private selectFile() {\n    this.inputbox.click();\n  }\n\n  private updateFileName() {\n    this.selectedFile = this.selectedFiles[0].name;\n\n    let extFile = this.selectedFile.substring(this.selectedFile.length - this.validExtention.length - 1, this.selectedFile.length);\n\n    if (extFile.toLowerCase() != \".\" + this.validExtention) {\n      this.selectedFile = 'Fichier incompatible';\n    }\n    else {\n      this.loadFile();\n    }\n  }\n\n  private async loadFile() {\n\n    let file = this.selectedFiles[0];\n    let columnNb: number = 0;\n    let rowNb: number = 6;\n\n    if (this.dataType == 'annotation') {\n      readXlsxFile(file).then((rows) => {\n        // `rows` is an array of rows each row being an array of cells.\n        if (rows) {\n          if (rows.length < 5) rowNb = rows.length;\n          for (let index = 0; index < rowNb; index++) {\n            const row = rows[index];\n            \n            // Max 100 columns\n            if (index == 0) {\n              for (let c = 0; c < 100; c++) {\n                if (row && row[c] == '') break;\n                if (row && row[c]) {\n                  this.labels.push(row[c].toString());\n                  columnNb = c;\n                }\n              }\n            } else {\n              this.tenFirstRows.push(row);\n            }\n  \n  \n          }\n        }\n      }).then(() => {\n        this.activeColumnEdition = true;\n      })\n\n    } else if (this.dataType == 'axis') {\n      let reader = new FileReader();\n      reader.onload = (event) => {\n        console.log('event', event);\n        let trans = JSON.parse((event as any).target.result);\n        this.parseLoadedFile(trans);\n      };\n      reader.readAsText(file, 'UTF-8');\n    }\n\n  }\n\n  parseLoadedFile(features : FeatureCollection) {\n   \n    // Search KM + Cartouche\n    if (features && features.features) {\n      for (let feature of features.features) {\n          this.axis.push(feature);\n      } \n    }\n    setTimeout( () => { \n      this.inProgress = \"Successfully completed\"; \n      this.activeSaveAxis = true;\n      this.activeSaveApi = true;\n   }, 500 );\n\n  }\n\n\n\n\n  private async loadAllDataFile() {\n    let file = this.selectedFiles[0];\n    await readXlsxFile(file).then((rows) => {\n      // `rows` is an array of rows each row being an array of cells.\n      if (rows) {\n        for (let index = 1; index < rows.length; index++) {\n          this.allRows.push(rows[index]);\n        }\n      }\n    }).then(() => {\n      this.finishReading = true;\n    })\n  }\n\n  private currentColumnChanged(index:number, selectedColumn: number) {\n    this.reflabels[index].matching = Number(selectedColumn);\n    console.log('reflabels', this.reflabels);\n    if (this.tenFirstRows) {\n      for (const row of this.tenFirstRows) {\n        for (const reflabel of this.reflabels) {\n          if (reflabel.matching != -1) reflabel.example = this.tenFirstRows[0][reflabel.matching];\n        }\n      }\n    }\n  }\n\n  private saveLabelMatching(){\n    this.pointExamples = this.convertRowAnnotation(this.tenFirstRows);\n    this.activeColumnEdition = false;\n    this.activeSaveApi = true;\n  }\n\n  private convertRowAnnotation(rows: any[]){\n    let annotations: Annotation[] = [];\n    for (const row of rows) {\n      let p = {} as Annotation;\n      for (const reflabel of this.reflabels) {\n        if (reflabel.name == 'refId' && reflabel.matching != -1) p.refId = row[reflabel.matching];\n        if (reflabel.name == 'title' && reflabel.matching != -1) p.title = row[reflabel.matching];\n        if (reflabel.name == 'description' && reflabel.matching != -1) p.description = row[reflabel.matching]\n        if (reflabel.name == 'type' && reflabel.matching != -1) p.type = row[reflabel.matching];\n        if (reflabel.name == 'tag' && reflabel.matching != -1) p.tag = row[reflabel.matching];\n        if (reflabel.name == 'code' && reflabel.matching != -1) p.code = row[reflabel.matching];\n        if (reflabel.name == 'positionX' && reflabel.matching != -1) p.positionX = row[reflabel.matching];\n        if (reflabel.name == 'positionY' && reflabel.matching != -1) p.positionY = row[reflabel.matching];\n        if (reflabel.name == 'positionZ' && reflabel.matching != -1) p.positionZ = row[reflabel.matching];\n        if (reflabel.name == 'km' && reflabel.matching != -1) p.km = row[reflabel.matching];\n      }\n      annotations.push(p);\n    }\n    return annotations;\n  }\n  \n  private async sendApi() {\n    \n    // Send\n    this.activeInProgress = true;\n\n    if (this.dataType == 'annotation') {\n      await this.loadAllDataFile();\n      let annotations =  this.convertRowAnnotation(this.allRows);\n      let i: number = 0;\n      for (const annotation of annotations) {\n        this.progress = Math.round((i / annotations.length) * 100);\n        i++;\n        await this.addNewAnnotation(annotation, false);\n      }\n      this.progress = 100;\n      this.progressResultMessage = annotations.length - this.errorCount + ' new points are saved (' + this.errorCount + ' errors)';\n    } else if (this.dataType == 'axis') {\n      let i: number = 0;\n      for (const axi of this.axis) {\n        this.progress = Math.round((i / this.axis.length) * 100);\n        i++;\n        await this.addNewAxi(axi, false);\n      }\n      this.progress = 100;\n      this.progressResultMessage = this.axis.length - this.errorCount + ' new axis are saved (' + this.errorCount + ' errors)';\n    } \n\n\n\n    notify(this.progressResultMessage, { type: 'success' });\n    this.selectedFiles = [];\n    this.setParam();\n    this.activeInProgress = false;\n    this.activeResult = true;\n\n  }\n\n  public async addNewAnnotation(addAnnotation: Annotation, notif: boolean) {\n    let annotation = new DynamicDataModel('annotation');\n    let check: boolean = true;\n\n    if (!addAnnotation.positionX || addAnnotation.positionX == 0) check = false;\n    if (!addAnnotation.positionY || addAnnotation.positionY == 0) check = false;\n    if (!addAnnotation.positionZ || addAnnotation.positionZ == 0) check = false;\n\n    if (check){\n      if (!addAnnotation.type) addAnnotation.type = 'point';\n  \n      // annotation.set('refId', addAnnotation.refId);\n      if (addAnnotation.title) annotation.set('title', addAnnotation.title);\n      if (addAnnotation.description) annotation.set('description', addAnnotation.description);\n      annotation.set('projectId', this.projectId);\n      if (addAnnotation.type) annotation.set('type', addAnnotation.type);\n      if (addAnnotation.tag) annotation.set('tag', addAnnotation.tag);\n      if (addAnnotation.code) annotation.set('code', addAnnotation.code);\n      if (addAnnotation.positionX) annotation.set('positionX', addAnnotation.positionX);\n      if (addAnnotation.positionY) annotation.set('positionY', addAnnotation.positionY);\n      if (addAnnotation.positionZ) annotation.set('positionZ', addAnnotation.positionZ);\n      // annotation.set('image', addAnnotation.image);\n      // annotation.set('externalLink', addAnnotation.externalLink);\n      if (addAnnotation.km) annotation.set('km', addAnnotation.km);\n  \n      const validationResult = await annotation.validationController.validate();\n      if (!validationResult.valid) {\n        const firstInvalid = validationResult.results.find(r => r.valid === false);\n        throw new Error(firstInvalid.message || 'Invalid form');\n      }\n      if (annotation.id) {\n      } else {\n        await annotation.save().then(() => {\n          if (notif) notify('New annotation is saved', { type: 'success' });\n        }).catch(errorify);\n      }\n    } else {\n      this.errorCount++;\n    }\n  }\n\n  public async addNewAxi(addAxi: Feature, notif: boolean) {\n    let axi = new DynamicDataModel('axis');\n\n      if (addAxi.type) axi.set('type', addAxi.type);\n      if (addAxi.geometry) axi.set('geometry', addAxi.geometry);\n      if (addAxi.properties) axi.set('properties', addAxi.properties);\n  \n      const validationResult = await axi.validationController.validate();\n      if (!validationResult.valid) {\n        const firstInvalid = validationResult.results.find(r => r.valid === false);\n        throw new Error(firstInvalid.message || 'Invalid form');\n      }\n      if (axi.id) {\n      } else {\n        await axi.save().then(() => {\n          if (notif) notify('New axis is saved', { type: 'success' });\n        }).catch(errorify);\n      }\n  }\n\n\n  public async saveEditAnnotation(addAnnotation: Annotation, notif: boolean) {\n    // const validationResult = await this.editLink.validationController.validate();\n    // if (!validationResult.valid) {\n    //   const firstInvalid = validationResult.results.find(r => r.valid === false);\n    //   throw new Error(firstInvalid.message || 'Invalid form');\n    // }\n    // if (this.editLink.id) {\n    //   await this.editLink.updateProperties('', ['urlId', 'urlTarget', 'urlType', 'name', 'buildingName', 'roomNb']);\n    // } else {\n    //   this.editLink.save().then(() => {\n    //     notify('New Link is saved', { type: 'success' });\n    //   }).catch(errorify);\n    // }\n\n    // this.editLink = {} as Link;\n    // this.getLinks();\n  }\n\n\n\n}\n","module.exports = \"<template>\\n  <section class=\\\"center\\\">\\n    <fast-card style=\\\"padding: 16px\\\">\\n          <h3 t=\\\"pcm.Import from file\\\"></h3>\\n          <p if.bind=\\\"!activeColumnEdition && !activeSaveApi\\\"><br>\\n            <input ref=\\\"inputbox\\\" id=\\\"selectFile\\\" type=\\\"file\\\" files.bind=\\\"selectedFiles\\\" change.delegate=\\\"updateFileName()\\\">\\n            <fast-button appearance=\\\"neutral\\\" click.trigger=\\\"selectFile()\\\">${selectedFile}</fast-button>\\n            <div if.bind=\\\"progress && progress != 100 \\\">\\n              <br>\\n              <ar-progress type=\\\"line\\\" label.bind=\\\"inProgress\\\" value.bind=\\\"progress\\\"></ar-progress>\\n            </div>\\n          </p>\\n          <template if.bind=\\\"activeColumnEdition && !activeSaveApi\\\">\\n            <p repeat.for=\\\"reflabel of reflabels\\\">\\n              <label t=\\\"pcm.Label ${reflabel.name}\\\"></label>\\n              <fast-select t=\\\"[placeholder]pcm.Select column\\\" value.bind=\\\"selectedColumn\\\" multiple change.trigger=\\\"currentColumnChanged($index, selectedColumn)\\\" style=\\\"width: 100%;\\\">\\n                <fast-option value=\\\"-1\\\" >none</fast-option>\\n                <fast-option value=\\\"${$index}\\\" repeat.for=\\\"label of labels\\\">${label}</fast-option>\\n              </fast-select>\\n              <template if.bind=\\\"reflabel.example\\\">\\n                <small t=\\\"pcm.Data example\\\"></small> : <small>${reflabel.example}</small>\\n              </template>\\n            </p>\\n            <p>\\n              <fast-button appearance=\\\"neutral\\\" click.trigger=\\\"saveLabelMatching()\\\" t=\\\"pcm.Save label matching\\\"></fast-button>\\n            </p>\\n          </template>\\n          <template if.bind=\\\"!activeColumnEdition && !activeSaveAxis && activeSaveApi\\\">\\n            <h6 t=\\\"Data example\\\"></h6>\\n            <p>\\n              refId; title; description; projectId; type; tag; code; positionX; positionY; positionZ; km; \\n            <p>\\n            <p repeat.for=\\\"p of pointExamples\\\">\\n              ${p.refId} ; ${p.title} ; ${p.description} ; ${p.projectId} ; ${p.type} ; ${p.tag} ; ${p.code} ; ${p.positionX} ; ${p.positionY} ; ${p.positionZ} ; ${p.km}\\n            </p>\\n            <p if.bind=\\\"!activeResult && !activeInProgress\\\">\\n              <small t=\\\"pcm.All points must have valid coordinates X Y Z\\\"></small><br>\\n              <fast-button appearance=\\\"accent\\\" click.trigger=\\\"sendApi()\\\" t=\\\"pcm.Save in DB\\\"></fast-button>\\n            </p>\\n            <p if.bind=\\\"!activeResult && activeInProgress\\\">\\n              ${inProgress} ${progress} %\\n            </p>\\n          </template>\\n          <template if.bind=\\\"activeSaveAxis && activeSaveApi\\\">\\n            <h6 t=\\\"Data founded\\\"></h6>\\n            <p repeat.for=\\\"a of axis\\\">\\n              ${a.properties.layer}\\n            </p>\\n            <p if.bind=\\\"!activeResult && !activeInProgress\\\">\\n              <fast-button appearance=\\\"accent\\\" click.trigger=\\\"sendApi()\\\" t=\\\"pcm.Save in DB\\\"></fast-button>\\n            </p>\\n            <p if.bind=\\\"!activeResult && activeInProgress\\\">\\n              ${inProgress} ${progress} %\\n            </p>\\n          </template>\\n\\n\\n\\n          <p class=\\\"primary\\\" style=\\\"max-width: 300px; margin: auto;\\\">${progressResultMessage} </p><br><br>\\n          <p>\\n            <!-- <ux-button type=\\\"text\\\" ok-modal=\\\"remove\\\" if.bind=\\\"mode === 'edit'\\\" style=\\\"margin-right: auto; --aurelia-ux--button-background: var(--aurelia-ux--design-error);\\\"><span t=\\\"Remove\\\"></span></ux-button> -->\\n            <ux-button type=\\\"text\\\" dismiss-modal><span t=\\\"Close\\\"></span></ux-button>\\n            <!-- <ux-button type=\\\"text\\\" ok-modal><span t=\\\"OK\\\"></span></ux-button> -->\\n          </p>\\n    </fast-card>\\n  </section>\\n</template>\\n\";","import { UxModalServiceResult } from '@aurelia-ux/modal';\nimport { inject } from 'aurelia-framework';\nimport { Global } from '../../global';\nimport { errorify, notify } from 'aurelia-resources';\nimport { jsonify } from 'aurelia-deco';\nimport { getLogger } from 'aurelia-logging';\nconst log = getLogger('member-dialog');\n\nexport interface CheckBoxRoles {\n  name: string;\n  value: boolean;\n}\n\n@inject(Global)\nexport class  MemberDialog {\n\n  public mode: 'create' | 'edit' = 'create';\n  public member: {userId: string, name: string, roles: string[]};\n  public roles: string[] = [];\n  public superAdminRole: string = 'manager';\n\n  private cbRoles: CheckBoxRoles[] = [];\n\n  constructor(private global: Global) {\n  }\n\n  public activate(params: any) {\n    if (params.member) {\n      this.member = params.member;\n      if (!Array.isArray(this.member.roles)) {\n        this.member.roles = [];\n      }\n      this.mode = 'edit';\n    } else {\n      this.member = {userId: '', name: '', roles: []}\n      this.mode = 'create';\n    }\n    if (params.roles && Array.isArray(params.roles)) {\n      this.roles = params.roles;\n    } else {\n      params.roles = ['manager'];\n    }\n    if (params.superAdminRole && typeof params.superAdminRole === 'string') {\n      this.superAdminRole = params.superAdminRole;\n    } else {\n      this.superAdminRole = 'manager';\n    }\n\n    if (this.member && this.roles) {\n      for (const role of this.roles) {\n        if ( this.member.roles && this.member.roles.includes(role)) {\n          this.cbRoles.push({name: role, value: true});\n        } else {\n          this.cbRoles.push({name: role, value: false});\n        }\n      }\n    }\n  }\n\n  private checkRoles(){\n    this.member.roles = [];\n    for (const r of this.cbRoles) {\n      if (r.value) {\n        this.member.roles.push(r.name);\n      } \n    }\n    console.log(this.member.roles);\n  }\n\n  public async canDeactivate(result: UxModalServiceResult) {\n    if (result.wasCancelled) {\n      return true;\n    }\n    if (result.output === 'remove') {\n      try {\n        // const members = await this.global.shops.api.delete(`/shop/admin/${this.shopId}/members/${this.member.userId}`).then(jsonify);\n        // result.output = members;\n        // notify('Member removed');\n        return true;\n      } catch (error) {\n        errorify(error);\n      }\n    }\n    if (typeof this.member === 'object' && typeof this.member.userId === 'string' && Array.isArray(this.member.roles)) {\n      try {\n        if (this.mode === 'create') {\n          result.output = this.member;\n          notify('Member added');\n        } else {\n          result.output = this.member;\n          // notify('Member edited');\n        }\n      } catch (error) {\n        errorify(error);\n      }\n    }\n  }\n  \n}\n","module.exports = \"<template>\\n  <ux-card>\\n    <ux-card-header>\\n      <ux-icon icon=\\\"clear\\\" dismiss-modal></ux-icon>\\n      <h2 if.bind=\\\"mode === 'create'\\\" t=\\\"pcm.Add New Member\\\"></h2>\\n      <h2 if.bind=\\\"mode === 'edit'\\\" t=\\\"pcm.Edit Member\\\"></h2>\\n    </ux-card-header>\\n    <ux-card-separator class=\\\"ux-card__separator--no-margin\\\"></ux-card-separator>\\n    <ux-card-content>\\n      <ux-field>\\n        <label t=\\\"User\\\"></label>\\n        <select-user-control app-id.bind=\\\"appId\\\" value.bind=\\\"member.userId\\\"></select-user-control>\\n      </ux-field>\\n      <ux-field>\\n        <label t=\\\"pcm.Roles\\\"></label>\\n        <div>\\n          <fast-checkbox repeat.for=\\\"cbRole of cbRoles\\\" checked.bind=\\\"cbRole.value\\\" click.trigger=\\\"checkRoles() & debounce:150\\\">${cbRole.name}</fast-checkbox>\\n        </div>\\n        <!-- <ux-chip-list ux-choice-container.bind=\\\"member.roles\\\">\\n          <ux-chip ux-choice.bind=\\\"superAdminRole\\\">${superAdminRole}</ux-chip>\\n          <ux-chip repeat.for=\\\"role of roles\\\" ux-choice.bind=\\\"role\\\">${role}</ux-chip>\\n        </ux-chip-list> -->\\n      </ux-field>\\n    </ux-card-content>\\n    <ux-card-separator class=\\\"ux-card__separator--no-margin\\\"></ux-card-separator>\\n    <ux-card-footer>\\n      <ux-button type=\\\"text\\\" ok-modal=\\\"remove\\\" if.bind=\\\"mode === 'edit'\\\" style=\\\"margin-right: auto; --aurelia-ux--button-background: var(--aurelia-ux--design-error);\\\"><span t=\\\"Remove\\\"></span></ux-button>\\n      <ux-button type=\\\"text\\\" dismiss-modal><span t=\\\"Cancel\\\"></span></ux-button>\\n      <ux-button type=\\\"text\\\" ok-modal><span t=\\\"OK\\\"></span></ux-button>\\n    </ux-card-footer>\\n  </ux-card>\\n</template>\\n\";","import {FrameworkConfiguration} from 'aurelia-framework';\nimport {PLATFORM} from 'aurelia-pal';\n\nexport function configure(config: FrameworkConfiguration) {\n  config.globalResources([\n    PLATFORM.moduleName('./login'),\n    PLATFORM.moduleName('./user-preview.html'),\n    PLATFORM.moduleName('./menu'),\n    PLATFORM.moduleName('./dialogs/member-dialog'),\n    PLATFORM.moduleName('./dialogs/import-data')\n  ]);\n}\n","import { FastNext } from './next/index';\n// Detect auto-fill: https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\nimport { inject, BindingEngine, bindable } from 'aurelia-framework'\nimport { Global } from 'global';\nimport { getLogger } from 'aurelia-logging';\nimport { Subscription } from 'aurelia-event-aggregator';\nimport PhoneNumber from 'awesome-phonenumber';\nimport { errorify, notify } from 'aurelia-resources';\nimport { SdLogin } from 'aurelia-deco';\nimport settings from '../settings';\nimport { EventAggregator } from 'aurelia-event-aggregator';\nimport { TextField } from '@microsoft/fast-foundation';\nimport * as moment from 'moment';\nconst log = getLogger('login');\n\n@inject(Element, Global, BindingEngine, SdLogin, EventAggregator)\nexport class Login {\n\n  @bindable public routeNext: string = 'account';\n  @bindable public routeParams: any = {};\n\n  public loginWith: 'email' | 'mobile' = 'email';\n\n  public countriesList = settings.countries;\n  public nextElement: FastNext;\n  private step: 'welcome' | 'mobile' | 'validation' | 'identity' | 'finish' = 'welcome';\n  private mobile = '';\n  public mobilePlaceholder = '';\n  private regionCode = 'ch';\n  private isMobileValid = false;\n  private email = '';\n  public emailPlaceholder = 'example@domain.com';\n  private isEmailValid = false;\n  private password = '';\n  private isPasswordValid = false;\n  private countryCode: number;\n  private validationCode = '';\n  public isValidationCodeValid = false;\n  private resetPasswordCode = '';\n  public isResetPasswordCodeValid = false;\n  public suggestAccountCreation = false;\n  \n  private invalidCode = false;\n  private firstname = '';\n  private lastname = '';\n  public preview: string;\n  private extraData: any;\n\n  private token: string;\n  private userId: string;\n  \n  private loading = false;\n\n\n  private subscriptions: Subscription[] = [];\n\n  constructor(private element: Element, private global: Global, private bindingEngine: BindingEngine, private sdLogin: SdLogin, private eventAggregator: EventAggregator) {\n    this.eventAggregator.publish('request-icon-loading', 'AtSymbol');\n    this.eventAggregator.publish('request-icon-loading', 'Key');\n    this.eventAggregator.publish('request-icon-loading', 'Check');\n  }\n\n  public attached(): void {\n    this.regionCode = this.global.state?.country?.toLowerCase() || 'ch';\n    this.countryChanged();\n    this.fetchQueryStringData();\n    this.listenForAutoFill();\n  }\n\n  public listenForAutoFill(): void {\n    const fields = this.element.querySelectorAll('ecos-text-field-login:not(.autofill-listener-ready)');\n    for (let index = 0; index < fields.length; index++) {\n      const field = fields.item(index);\n      field.addEventListener('animationstart', () => {\n        const f: any = field;\n        field.setAttribute('value', f.value);\n        const input = field.querySelector('input');\n        if (input) {\n          input.value = f.value;\n          input.dispatchEvent(new CustomEvent('keyup', {bubbles: true}));\n        }\n      });\n      field.classList.add('autofill-listener-ready');\n    }\n  }\n\n  public async fetchQueryStringData(): Promise<void> {\n    const search = location.search;\n    if (search && search.substr(0, 1) === '?') {\n      const searchParts = search.substr(1).split('&');\n      let token = '';\n      let code = '';\n      let tokenExpiry = '';\n      for (const part of searchParts) {\n        const keyValue = part.split('=');\n        const key = keyValue[0];\n        const value = keyValue[1];\n        if (key === 'step' && value === 'create-account') {\n          setTimeout(() => {\n            this.startCreatingAnAccount();\n          }, 350);\n        }\n        if (key === 'step' && value === 'reset-password') {\n          let username = '';\n          for (const partMail of searchParts) {\n            const keyValueMail = partMail.split('=');\n            const keyMail = keyValueMail[0];\n            const valueMail = keyValueMail[1];\n            if (keyMail === 'e' && valueMail) {\n              username = decodeURIComponent(valueMail);;\n              if (isEmail(username)) {\n                this.loginWith = 'email';\n                this.email = username;\n                this.createAccountMemory.username = username;\n                this.emailChanged();\n              }\n            }\n          }\n          setTimeout(() => {\n            this.forgotPassword(username);\n          }, 350);\n        }\n        if (key === 'f') {\n          this.firstname = decodeURIComponent(value);\n        }\n        if (key === 'l') {\n          this.lastname = decodeURIComponent(value);\n        }\n        if (key === 'e' && value) {\n          this.email = decodeURIComponent(value);\n        }\n        if (key === 'm' && value) {\n          this.mobile = decodeURIComponent(value);\n        }\n        if (key === 'tk' && value) {\n          token = decodeURIComponent(value);\n        }\n        if (key === 'exp' && value) {\n          tokenExpiry = decodeURIComponent(value);\n        }\n        if (key === 'c' && value) {\n          code = decodeURIComponent(value);\n        }\n        if (key === 'extra') {\n          try {\n            this.extraData = JSON.parse(atob(value));\n          } catch (error) {\n            this.extraData = value;\n          }\n        }\n        location.search.replace(part, '');\n        if (token && tokenExpiry && code) {\n\n          this.clearCreateAccountMemory();\n          // check if token is valid\n          await this.global.store.dispatch('sd-login-validateAccountStep', token, tokenExpiry);\n          try {\n            await this.sdLogin.validateCode(code, this.loginWith);\n            notify('login.Your account has been validated');\n            return;\n          } catch (error) {\n            errorify(error);\n          }\n        }\n      }\n    }\n    this.fetchCreateAccountMemory();\n    this.continueFromCreateAccountMemory();\n  }\n\n  public scrollNextContentToTop(event: CustomEvent): void {\n    const elementOrElementId = event.detail as string | HTMLElement;\n    const element: HTMLElement = typeof elementOrElementId === 'string' ? document.getElementById(elementOrElementId) : elementOrElementId;\n    element.scrollTo({top: 0, behavior: 'smooth'});\n    document.scrollingElement.scrollTo({top: 0, behavior: 'smooth'});\n  }\n\n  public async countryChanged(): Promise<void> {\n    this.countryCode = PhoneNumber.getCountryCodeForRegionCode(this.regionCode);\n    this.mobilePlaceholder = PhoneNumber.getExample(this.regionCode).getNumber('national');\n    this.mobileChanged();\n    await this.global.store.dispatch('setCountry', this.regionCode.toUpperCase());\n  }\n\n  public countryCodeNumber(regionCode: string): number {\n    return PhoneNumber.getCountryCodeForRegionCode(regionCode);\n  }\n\n  public mobileChanged(): void {\n    this.isMobileValid = new PhoneNumber(this.mobile, this.regionCode).isValid();\n  }\n\n  public emailChanged(): void {\n    this.isEmailValid = isEmail(this.email);\n  }\n  \n  public passwordChanged(performValidation: boolean): void {\n    this.isPasswordValid = this.password.length >= 8 || !performValidation;\n  }\n  \n  public validationCodeChanged(preventAutoValidation = false): void {\n    if (this.validationCode.length === 6 && !preventAutoValidation) {\n      this.validateAccount(null, false);\n    }\n    this.isValidationCodeValid = this.validationCode.length === 6;\n  }\n\n  public resetPasswordCodeChanged(): void {\n    this.isResetPasswordCodeValid = this.resetPasswordCode.length === 6;\n  }\n\n  public detached(): void {\n    for (const sub of this.subscriptions) {\n      sub.dispose();\n    }\n    this.subscriptions = [];\n  }\n\n\n  public async processIdentity(event: Event | null, manuallyRequested = true): Promise<void> {\n    if (event) {\n      event.preventDefault();\n    }\n    this.email = this.email.trim();\n    this.mobile = this.mobile.trim();\n    if (this.loginWith === 'mobile' && !this.isMobileValid) {\n      errorify(new Error('Invalid mobile number'));\n      return;\n    }\n\n    if (this.loginWith === 'email' && !this.isEmailValid) {\n      errorify(new Error('Invalid email'));\n      return;\n    }\n\n    if (this.loading) {\n      return;\n    }\n\n    const username = this.loginWith === 'mobile' ? new PhoneNumber(this.mobile, this.regionCode)?.getNumber() : this.email;\n    this.loading = true;\n    try {\n      const exists = await this.sdLogin.checkIfUsernameExists(username);\n      \n      if (!exists) {\n        if (manuallyRequested) {\n          this.suggestAccountCreation = true;\n        }\n      } else if (exists === this.loginWith) {\n        this.suggestAccountCreation = false;\n        this.nextElement.goToId('login-with-password');\n        setTimeout(() => {\n          const input = document.querySelector('ecos-next-item#login-with-password ecos-text-field-login input');\n          if (input instanceof HTMLInputElement) {\n            input.focus();\n          }\n        }, 600);\n        this.clearCreateAccountMemory();\n      }\n      this.listenForAutoFill();\n    } catch (error) {\n      errorify(error);\n    }\n    this.loading = false;\n  }\n\n  public startCreatingAnAccount(emptyUsername = true, event?: Event): void | false {\n    if (event) {\n      event.stopPropagation();\n    }\n    if (emptyUsername) {\n      this.email = '';\n      this.mobile = '';\n    }\n    this.nextElement.goToId('name');\n    setTimeout(() => {\n      const input = document.querySelector('ecos-next-item#name ecos-text-field');\n      if (input instanceof TextField) {\n        const shadowedInput = input.shadowRoot.querySelector('input');\n        if (input) {\n          shadowedInput.focus();\n        }\n      }\n    }, 600)\n    this.suggestAccountCreation = false;\n    if (event) {\n      return false;\n    }\n  }\n\n  public continueCreatingAnAccount(event: Event | null): void {\n    if (event) {\n      event.preventDefault();\n    }\n    this.nextElement.goToId('create-account');\n    setTimeout(() => {\n      const input = document.querySelector('ecos-next-item#create-account ecos-text-field-login input');\n      if (input instanceof HTMLInputElement) {\n        input.focus();\n      }\n    }, 600);\n    this.saveCreateAccountMemory();\n  }\n\n  public async requestValidationCode(event: Event | null): Promise<void> {\n    if (event) {\n      event.preventDefault();\n    }\n\n    if (this.loading) {\n      return;\n    }\n\n    const username = this.loginWith === 'mobile' ? new PhoneNumber(this.mobile, this.regionCode)?.getNumber() : this.email;\n    this.loading = true;\n    try {\n      this.sdLogin.passwordStrengthRequired = 'weak';\n      const createAccountToken = await this.sdLogin.createAccount(\n        this.firstname || '-', \n        this.lastname || '-',\n        this.loginWith === 'email' ? username : '',\n        this.loginWith === 'mobile' ? username : '',\n        this.password,\n        this.loginWith === 'email', this.loginWith === 'mobile',\n        this.extraData);\n      this.validationCode = '';\n      this.nextElement.goToId('validate-account');\n      setTimeout(() => {\n        const input = document.querySelector('ecos-next-item#validate-account ecos-text-field-login input');\n        if (input instanceof HTMLInputElement) {\n          input.focus();\n        }\n      }, 600);\n      this.saveCreateAccountMemory(this.sdLogin.state.sdlogin.createAccountValidationToken, this.sdLogin.state.sdlogin.createAccountValidationTokenExpiry);\n    } catch  (error) {\n      errorify(error);\n    }\n    this.loading = false;\n  }\n\n  private validating = false;\n  private validated = false;\n  public async validateAccount(event: Event | null, manuallyRequested = true): Promise<void> {\n    if (event) {\n      event.preventDefault();\n    }\n    if (this.loading || this.validating) {\n      return;\n    }\n\n    if (manuallyRequested) {\n      this.loading = true;\n    }\n    this.validating = true;\n    try {\n      await this.sdLogin.validateCode(this.validationCode, this.loginWith);\n      this.validated = true;\n      notify('login.Your account has been validated');\n      \n      if (this.password) {\n        // if the user did not refresh, we have the password in memory and can login\n        const username = this.loginWith === 'mobile' ? new PhoneNumber(this.mobile, this.regionCode)?.getNumber() : this.email;\n        await this.sdLogin.login(username, this.password);\n        setTimeout(() => {\n          this.afterLogin();\n        }, 500);\n      } else {\n        notify('login.You can now login with the password you choose earlier');\n        await this.processIdentity(null, false);\n      }\n      this.clearCreateAccountMemory();\n\n    } catch  (error) {\n      if (manuallyRequested) {\n        this.invalidCode = true;\n        errorify(error);\n      }\n    }\n    this.loading = false;\n    this.validating = false;\n  }\n\n  public async loginWithPassword(event: Event | null): Promise<void> {\n    if (event) {\n      event.preventDefault();\n    }\n\n    if (this.loading) {\n      return;\n    }\n\n    this.loading = true;\n    try {\n      const username = this.loginWith === 'mobile' ? new PhoneNumber(this.mobile, this.regionCode)?.getNumber() : this.email;\n      await this.sdLogin.login(username, this.password);\n      this.afterLogin();\n    } catch  (error) {\n      errorify(error);\n    }\n    this.loading = false;\n  }\n\n  public async forgotPassword(forceUsername?: string): Promise<void> {\n\n    if (this.loading) {\n      return;\n    }\n\n    this.loading = true;\n    try {\n      let username = this.loginWith === 'mobile' ? new PhoneNumber(this.mobile, this.regionCode)?.getNumber() : this.email;\n      if (forceUsername) {\n        username = forceUsername;\n      }\n      await this.sdLogin.requestResetPassword(username);\n      this.nextElement.goToId('reset-password');\n      setTimeout(() => {\n        const input = document.querySelector('ecos-next-item#reset-password ecos-text-field-login input');\n        if (input instanceof HTMLInputElement) {\n          input.focus();\n        }\n      }, 600);\n      this.email = username;\n      this.resetPasswordCode = '';\n    } catch  (error) {\n      errorify(error);\n    }\n    this.loading = false;\n  }\n\n  public async resetPassword(event: Event | null): Promise<void> {\n    if (event) {\n      event.preventDefault();\n    }\n\n    if (this.loading) {\n      return;\n    }\n\n    this.loading = true;\n    try {\n      await this.sdLogin.resetPassword(this.resetPasswordCode, this.password);\n      this.password = '';\n      this.backToLogin();\n    } catch  (error) {\n      errorify(error);\n    }\n    this.loading = false;\n  }\n\n  public backToLogin(): void {\n    this.nextElement.goToId('identity');\n    setTimeout(() => {\n      const input = document.querySelector('ecos-next-item#identity ecos-text-field-login input');\n      if (input instanceof HTMLInputElement) {\n        input.focus();\n      }\n    }, 600);\n  }\n\n  public afterLogin(): void {\n    setTimeout(() => {\n      this.global.navigateToRoute(this.routeNext, this.routeParams);\n    }, 150);\n  }\n\n  private createAccountMemory: {\n    firstname?: string;\n    lastname?: string;\n    username?: string;\n    regionCode?: string;\n    token?: string;\n    tokenExpiry?: string;\n    extraData?: any\n  } = {};\n  private saveCreateAccountMemory(token?: string, tokenExpiry?: string) {\n    this.createAccountMemory.firstname = this.firstname;\n    this.createAccountMemory.lastname = this.lastname;\n    this.createAccountMemory.username = this.loginWith === 'mobile' ? this.mobile : this.email;\n    this.createAccountMemory.regionCode = this.regionCode;\n    this.createAccountMemory.token = token || undefined;\n    this.createAccountMemory.tokenExpiry = tokenExpiry ? moment(tokenExpiry).toString() : undefined;\n    this.createAccountMemory.extraData = this.extraData;\n    const string = btoa(JSON.stringify(this.createAccountMemory));\n    localStorage.setItem('gs-cam', string);\n  }\n\n  private fetchCreateAccountMemory() {\n    const cam = localStorage.getItem('gs-cam');\n    if (cam) {\n      try {\n        this.createAccountMemory = JSON.parse(atob(cam));\n        if (this.createAccountMemory.tokenExpiry) {\n          const expires = moment(this.createAccountMemory.tokenExpiry);\n          if (expires.isAfter(moment())) {\n            this.createAccountMemory.token = undefined;\n            this.createAccountMemory.tokenExpiry = undefined;\n          }\n        }\n      } catch (error) {}\n    }\n  }\n\n  private clearCreateAccountMemory(keepIdentity = true) {\n    this.createAccountMemory = {};\n    this.firstname = '';\n    this.lastname = '';\n    if (!keepIdentity) {\n      this.email = '';\n      this.mobile = '';\n    }\n    this.password = '';\n    this.token = '';\n    this.sdLogin.store.dispatch('sd-login-validateAccountStep', '', '');\n    if (keepIdentity) {\n      this.saveCreateAccountMemory('', '');\n    } else {\n      localStorage.removeItem('gs-cam');\n    }\n  }\n\n  private async continueFromCreateAccountMemory() {\n    if (!this.createAccountMemory.username) {\n      return;\n    }\n    if (this.createAccountMemory.regionCode) {\n      this.regionCode = this.createAccountMemory.regionCode;\n    }\n    if (this.loginWith === 'email' && isEmail(this.createAccountMemory.username)) {\n      this.email = this.createAccountMemory.username;\n      this.emailChanged();\n    } else if (this.loginWith === 'mobile' && new PhoneNumber(this.mobile, this.regionCode)?.isValid()) {\n      this.mobile === this.createAccountMemory.username;\n      this.mobileChanged();\n    } else {\n      return false;\n    }\n\n    if (this.createAccountMemory.firstname) {\n      this.firstname = this.createAccountMemory.firstname;\n    }\n    if (this.createAccountMemory.lastname) {\n      this.lastname = this.createAccountMemory.lastname;\n    }\n    if (this.createAccountMemory.extraData) {\n      this.extraData = this.createAccountMemory.extraData;\n    }\n\n    if (this.createAccountMemory.token) {\n      await this.sdLogin.store.dispatch('sd-login-validateAccountStep', this.createAccountMemory.token, this.createAccountMemory.tokenExpiry);\n      this.nextElement.goToId('validate-account');\n      setTimeout(() => {\n        const input = document.querySelector('ecos-next-item#validate-account ecos-text-field-login input');\n        if (input instanceof HTMLInputElement) {\n          input.focus();\n        }\n      }, 600);\n    } else if (this.firstname || this.lastname) {\n      await this.processIdentity(new CustomEvent('none'), false);\n    }\n  }\n\n  \n}\n\nfunction isEmail(value: string): boolean {\n  if (typeof value === 'string') {\n    if (value.match(/^[a-zA-Z](.*)/g)) {\n      // username starts with a letter\n      return true;\n    }\n    if (value.indexOf('@') !== -1) {\n      // username contains the @ symbol\n      return true;\n    }\n    return false;\n  }\n  return false;\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"login fast-button fast-progress-ring {\\n  margin: 0;\\n  width: 20px;\\n  height: 20px;\\n}\\n/* FIX CONFLICTS WITH AURELIA-UX */\\nlogin fast-button[type=submit] {\\n  -webkit-appearance: none;\\n}\\nlogin fast-anchor.accent:not(:hover):not(:active) {\\n  color: var(--foreground-on-accent-rest);\\n  background-color: var(--accent-fill-rest)\\n}\\nlogin fast-anchor.accent:hover {\\n  color: var(--foreground-on-accent-hover);\\n  background-color: var(--accent-fill-hover)\\n}\\nlogin fast-anchor.accent:active {\\n  color: var(--foreground-on-accent-active);\\n  background-color: var(--accent-fill-active)\\n}\\nlogin fast-text-field-login {\\n  display: inline-block;\\n  outline: none;\\n  user-select: none;\\n}\\nlogin fast-text-field-login fast-icon[slot=\\\"start\\\"] {\\n  display: none;\\n}\\n\\n@keyframes onAutoFillStart {  from {/**/}  to {/**/}}\\n@keyframes onAutoFillCancel {  from {/**/}  to {/**/}}\\nlogin input:-webkit-autofill {\\n    animation-name: onAutoFillStart;\\n    transition: background-color 50000s ease-in-out 0s;\\n}\\nlogin input:not(:-webkit-autofill) {\\n    animation-name: onAutoFillCancel;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = \"<template>\\n  <require from=\\\"./login.css\\\"></require>\\n  <fast-next ref=\\\"nextElement\\\" changed.trigger=\\\"scrollNextContentToTop($event)\\\">\\n    <fast-next-item id=\\\"identity\\\">\\n      <form submit.trigger=\\\"processIdentity($event)\\\" novalidate>\\n        <fast-stack small>\\n          <h1 t=\\\"login.Welcome\\\"></h1>\\n          <h4 t=\\\"login.Login or create an account\\\"></h4>\\n\\n          <fast-stack style=\\\"max-width: 400px; margin-top: 32px;\\\">\\n            <template if.bind=\\\"loginWith === 'mobile'\\\">\\n              <p>\\n                <fast-select t=\\\"[placeholder]login.Your country\\\" placeholder=\\\"\\\" value.bind=\\\"regionCode\\\" change.trigger=\\\"countryChanged()\\\" style=\\\"width: 100%;\\\">\\n                  <fast-option value=\\\"${countryCode}\\\" repeat.for=\\\"countryCode of global.state.countries\\\">${countryCode | countryName | t}</fast-option>\\n                </fast-select>\\n              </p>\\n              <p if.bind=\\\"true\\\">\\n                <fast-text-field-login name=\\\"username\\\" value.bind=\\\"mobile\\\" pattern=\\\"[0-9]*\\\" placeholder=\\\"${mobilePlaceholder}\\\" change.trigger=\\\"mobileChanged()\\\" keyup.trigger=\\\"mobileChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"username\\\" autofocus>\\n                  <span class=\\\"start__region-code\\\" slot=\\\"start\\\">+${countryCode}</span>\\n                </fast-text-field-login>\\n              </p>\\n            </template>\\n            <template if.bind=\\\"loginWith === 'email'\\\">\\n              <p if.bind=\\\"true\\\">\\n                <fast-text-field-login name=\\\"username\\\" value.bind=\\\"email\\\" placeholder=\\\"${emailPlaceholder}\\\" change.trigger=\\\"emailChanged()\\\" keyup.trigger=\\\"emailChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"username\\\" autofocus>\\n                  <fast-icon slot=\\\"start\\\" icon=\\\"AtSymbol\\\"></fast-icon>\\n                </fast-text-field-login>\\n              </p>\\n            </template>\\n            <input type=\\\"password\\\" autocomplete=\\\"current-password\\\" style=\\\"display:none;\\\">\\n            <p style=\\\"display: grid; grid-template-columns: 1fr min-content;\\\">\\n              <fast-button appearance=\\\"lightweight\\\" style=\\\"justify-self: start;\\\" click.trigger=\\\"startCreatingAnAccount()\\\">\\n                <span t=\\\"login.Create an account\\\"></span>\\n              </fast-button>\\n              <fast-button disabled.bind=\\\"login || (loginWith === 'mobile' && !isMobileValid) || (loginWith === 'email' && !isEmailValid)\\\" appearance=\\\"accent\\\" type=\\\"submit\\\">\\n                <fast-progress-ring slot=\\\"start\\\" if.bind=\\\"loading\\\"></fast-progress-ring>\\n                <span t=\\\"login.Continue\\\"></span>\\n              </fast-button>\\n            </p>\\n            <p if.bind=\\\"suggestAccountCreation && ((loginWith === 'mobile' && isMobileValid) || (loginWith === 'email' && isEmailValid))\\\">\\n              <span t=\\\"login.We couldn't find any account for {{ username }} go ahead and\\\" t-params.bind=\\\"{username: loginWith === 'email' ? email : mobile }\\\"></span>\\n              <fast-anchor t=\\\"login.Create one\\\" appearance=\\\"hypertext\\\" href=\\\"#\\\" click.trigger=\\\"startCreatingAnAccount(false, $event)\\\"></fast-anchor>\\n            </p>\\n          </fast-stack>\\n        </fast-stack>\\n      </form>\\n    </fast-next-item>\\n    <fast-next-item id=\\\"name\\\">\\n      <form submit.trigger=\\\"continueCreatingAnAccount($event)\\\" novalidate>\\n        <fast-stack small>\\n          <h1 t=\\\"login.Create an account\\\"></h1>\\n          <h4 t=\\\"login.Whats your name\\\"></h4>\\n\\n          <fast-stack style=\\\"max-width: 400px; margin-top: 32px;\\\">\\n            <p if.bind=\\\"true\\\">\\n              <fast-text-field name=\\\"firstname\\\" type=\\\"text\\\" value.bind=\\\"firstname\\\" t=\\\"[placeholder]login.Firstname\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"given-name\\\">\\n                \\n              </fast-text-field>\\n            </p>\\n            <p if.bind=\\\"true\\\">\\n              <fast-text-field name=\\\"firstname\\\" type=\\\"text\\\" value.bind=\\\"lastname\\\" t=\\\"[placeholder]login.Lastname\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"family-name\\\">\\n                \\n              </fast-text-field>\\n            </p>\\n            <p style=\\\"display: grid; grid-template-columns: 1fr min-content;\\\">\\n              <fast-button appearance=\\\"lightweight\\\" style=\\\"justify-self: start;\\\" click.trigger=\\\"backToLogin()\\\" t=\\\"login.Back to login\\\"></fast-button>\\n              <fast-button appearance=\\\"accent\\\" type=\\\"submit\\\">\\n                <span t=\\\"login.Continue\\\"></span>\\n              </fast-button>\\n            </p>\\n          </fast-stack>\\n        </fast-stack>\\n\\n      </form>\\n    </fast-next-item>\\n    <fast-next-item id=\\\"create-account\\\">\\n      <form submit.trigger=\\\"requestValidationCode($event)\\\" novalidate>\\n        <fast-stack small>\\n          <h1 if.bind=\\\"loginWith === 'mobile'\\\" t=\\\"login.Enter your mobile and set a password\\\"></h1>\\n          <h1 if.bind=\\\"loginWith === 'email'\\\" t=\\\"login.Enter your email and set a password\\\"></h1>\\n\\n          <fast-stack style=\\\"max-width: 400px; margin-top: 32px;\\\">\\n            <template if.bind=\\\"loginWith === 'mobile'\\\">\\n              <p>\\n                <fast-select t=\\\"[placeholder]login.Your country\\\" placeholder=\\\"\\\" value.bind=\\\"regionCode\\\" change.trigger=\\\"countryChanged()\\\" style=\\\"width: 100%;\\\">\\n                  <fast-option value=\\\"${countryCode}\\\" repeat.for=\\\"countryCode of global.state.countries\\\">\\n                    ${countryCode | countryName | t}\\n                    +${countryCodeNumber(countryCode)}\\n                  </fast-option>\\n                </fast-select>\\n              </p>\\n              <p if.bind=\\\"true\\\">\\n                <fast-text-field-login name=\\\"username\\\" value.bind=\\\"mobile\\\" pattern=\\\"[0-9]*\\\" placeholder=\\\"${mobilePlaceholder}\\\" change.trigger=\\\"mobileChanged()\\\" keyup.trigger=\\\"mobileChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"username\\\"></fast-text-field-login>\\n              </p>\\n            </template>\\n            <template if.bind=\\\"loginWith === 'email'\\\">\\n              <p if.bind=\\\"true\\\">\\n                <fast-text-field-login name=\\\"username\\\" value.bind=\\\"email\\\" placeholder=\\\"${emailPlaceholder}\\\" change.trigger=\\\"emailChanged()\\\" keyup.trigger=\\\"emailChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"username\\\">\\n                  <fast-icon slot=\\\"start\\\" icon=\\\"AtSymbol\\\"></fast-icon>\\n                </fast-text-field-login>\\n              </p>\\n            </template>\\n            <p if.bind=\\\"true\\\">\\n              <fast-text-field-login type=\\\"password\\\" value.bind=\\\"password\\\" t=\\\"[placeholder]login.Min 8 characters\\\" change.trigger=\\\"passwordChanged()\\\" keyup.trigger=\\\"passwordChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"new-password\\\">\\n                <fast-icon slot=\\\"start\\\" icon=\\\"Key\\\"></fast-icon>\\n              </fast-text-field-login>\\n            </p>\\n\\n            <p style=\\\"display: grid; grid-template-columns: 1fr min-content;\\\">\\n              <fast-button appearance=\\\"lightweight\\\" style=\\\"justify-self: start;\\\" click.trigger=\\\"backToLogin()\\\" t=\\\"login.Back to login\\\"></fast-button>\\n              <fast-button disabled.bind=\\\"!isPasswordValid || loading\\\" appearance=\\\"accent\\\" type=\\\"submit\\\">\\n                <fast-progress-ring slot=\\\"start\\\" if.bind=\\\"loading\\\"></fast-progress-ring>\\n                <span t=\\\"login.Continue\\\"></span>\\n              </fast-button>\\n            </p>\\n\\n          </fast-stack>\\n        </fast-stack>\\n\\n      </form>\\n    </fast-next-item>\\n    <fast-next-item id=\\\"validate-account\\\">\\n      <form submit.trigger=\\\"validateAccount($event)\\\" novalidate>\\n        <fast-stack small>\\n          <h1 t=\\\"login.Validate your account\\\"></h1>\\n\\n          <fast-stack style=\\\"max-width: 400px; margin-top: 32px;\\\">\\n            <p>\\n              <label t=\\\"login.We just sent you a code to the mobile number {{ mobile }} it can take several minutes to arrive\\\" if.bind=\\\"loginWith === 'mobile'\\\" t-params.bind=\\\"{mobile: mobile}\\\"></label>\\n              <label t=\\\"login.We just sent you a code to the email {{ email }} it can take several minutes to arrive\\\" if.bind=\\\"loginWith === 'email'\\\" t-params.bind=\\\"{email: email}\\\"></label>\\n            </p>\\n            <p if.bind=\\\"true\\\">\\n              <fast-text-field-login value.bind=\\\"validationCode\\\" placeholder=\\\"1234\\\" change.trigger=\\\"validationCodeChanged()\\\" keyup.trigger=\\\"validationCodeChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"one-time-code\\\" ignore-dico>\\n                <fast-icon slot=\\\"start\\\" icon=\\\"Key\\\"></fast-icon>\\n              </fast-text-field-login>\\n            </p>\\n            \\n            <p style=\\\"display: grid; grid-template-columns: 1fr min-content;\\\">\\n              <fast-button appearance=\\\"lightweight\\\" style=\\\"justify-self: start;\\\" click.trigger=\\\"backToLogin()\\\" t=\\\"login.Back to login\\\"></fast-button>\\n              <fast-button disabled.bind=\\\"!isValidationCodeValid || validated || validating\\\" appearance=\\\"accent\\\" type=\\\"submit\\\">\\n                <fast-progress-ring slot=\\\"start\\\" if.bind=\\\"loading\\\"></fast-progress-ring>\\n                <fast-icon icon=\\\"Check\\\" slot=\\\"start\\\" if.bind=\\\"validated\\\"></fast-icon>\\n                <span t=\\\"login.Validate my account\\\"></span>\\n              </fast-button>\\n            </p>\\n\\n            <p if.bind=\\\"invalidCode\\\">\\n              <fast-button appearance=\\\"accent\\\" important click.delegate=\\\"resentValidationCode()\\\"><span t=\\\"login.Resend code\\\"></span></fast-button>\\n            </p>\\n\\n          </fast-stack>\\n        </fast-stack>\\n\\n      </form>\\n    </fast-next-item>\\n    <fast-next-item id=\\\"login-with-password\\\">\\n      <form submit.trigger=\\\"loginWithPassword($event)\\\" novalidate>\\n        <fast-stack small>\\n          <h1 t=\\\"login.We are happy to see you again\\\"></h1>\\n          <h4 if.bind=\\\"loginWith === 'mobile'\\\" t=\\\"login.You are logging in with {{ mobile }}\\\" t-params.bind=\\\"{mobile: mobile}\\\"></h4>\\n          <h4 if.bind=\\\"loginWith === 'email'\\\" t=\\\"login.You are logging in with {{ email }}\\\" t-params.bind=\\\"{email: email}\\\"></h4>\\n\\n          <fast-stack style=\\\"max-width: 400px; margin-top: 32px;\\\">\\n            <input type=\\\"text\\\" name=\\\"username\\\" value=\\\"${email || mobile}\\\" autocomplete=\\\"username\\\" style=\\\"display: none;\\\">\\n            <p if.bind=\\\"true\\\">\\n              <fast-text-field-login name=\\\"password\\\" type=\\\"password\\\" value.bind=\\\"password\\\" placeholder=\\\"********\\\" change.trigger=\\\"passwordChanged()\\\" keyup.trigger=\\\"passwordChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"current-password\\\" ignore-dico>\\n                <fast-icon slot=\\\"start\\\" icon=\\\"Key\\\"></fast-icon>\\n              </fast-text-field-login>\\n            </p>\\n\\n            <p style=\\\"display: grid; grid-template-columns: 1fr min-content;\\\">\\n              <fast-button appearance=\\\"lightweight\\\" style=\\\"justify-self: start;\\\" click.trigger=\\\"backToLogin()\\\" t=\\\"login.Back to login\\\"></fast-button>\\n              <fast-button disabled.bind=\\\"loading || !isPasswordValid\\\" appearance=\\\"accent\\\" type=\\\"submit\\\">\\n                <fast-progress-ring slot=\\\"start\\\" if.bind=\\\"loading\\\"></fast-progress-ring>\\n                <span t=\\\"login.Login\\\"></span>\\n              </fast-button>\\n            </p>\\n\\n            <p>\\n              <fast-button appearance=\\\"lightweight\\\" click.trigger=\\\"forgotPassword()\\\" t=\\\"login.I forgot my password\\\"></fast-button>\\n            </p>\\n\\n          </fast-stack>\\n        </fast-stack>\\n\\n      </form>\\n    </fast-next-item>\\n    <fast-next-item id=\\\"reset-password\\\">\\n      <form submit.trigger=\\\"resetPassword($event)\\\" novalidate>\\n        <fast-stack small>\\n          <h1 t=\\\"login.Fill in the code and choose a new password\\\"></h1>\\n\\n          <fast-stack style=\\\"max-width: 400px; margin-top: 32px;\\\">\\n            <p>\\n              <label t=\\\"login.We sent you a code to the mobile number {{ mobile }} it can take several minutes to arrive\\\" if.bind=\\\"loginWith === 'mobile'\\\" t-params.bind=\\\"{mobile: mobile}\\\"></label>\\n              <label t=\\\"login.We sent you a code to the email {{ email }} it can take several minutes to arrive\\\" if.bind=\\\"loginWith === 'email'\\\" t-params.bind=\\\"{email: email}\\\"></label>\\n            </p>\\n            <p if.bind=\\\"true\\\">\\n              <fast-text-field-login value.bind=\\\"resetPasswordCode\\\" placeholder=\\\"1234\\\" change.trigger=\\\"resetPasswordCodeChanged()\\\" keyup.trigger=\\\"resetPasswordCodeChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"one-time-code\\\" ignore-dico >\\n                <fast-icon slot=\\\"start\\\" icon=\\\"Key\\\"></fast-icon>\\n              </fast-text-field-login>\\n            </p>\\n            <p>\\n              <label t=\\\"login.Choose a new password\\\"></label>\\n            </p>\\n            <p if.bind=\\\"true\\\">\\n              <fast-text-field-login type=\\\"password\\\" value.bind=\\\"password\\\" placeholder=\\\"****\\\" change.trigger=\\\"passwordChanged()\\\" keyup.trigger=\\\"passwordChanged()\\\" style=\\\"width: 100%;\\\" autocomplete=\\\"new-password\\\" ignore-dico >\\n                <fast-icon slot=\\\"start\\\" icon=\\\"Key\\\"></fast-icon>\\n              </fast-text-field-login>\\n            </p>\\n\\n            <p style=\\\"display: grid; grid-template-columns: 1fr min-content;\\\">\\n              <fast-button appearance=\\\"lightweight\\\" style=\\\"justify-self: start;\\\" click.trigger=\\\"backToLogin()\\\" t=\\\"login.Back to login\\\"></fast-button>\\n              <fast-button disabled.bind=\\\"loading || !isPasswordValid || !isResetPasswordCodeValid\\\" appearance=\\\"accent\\\" type=\\\"submit\\\">\\n                <fast-progress-ring slot=\\\"start\\\" show.bind=\\\"loading\\\"></fast-progress-ring>\\n                <span t=\\\"login.Change my password\\\"></span>\\n              </fast-button>\\n            </p>\\n\\n          </fast-stack>\\n        </fast-stack>\\n\\n      </form>\\n    </fast-next-item>\\n\\n  </fast-next>\\n\\n</template>\\n\";","import { Global } from '../global';\nimport { inject } from 'aurelia-framework';\nimport { UxModalService } from '@aurelia-ux/modal';\n\n@inject(Global, UxModalService)\nexport class Menu {\n  public constructor(private global: Global, private modalService: UxModalService) {\n\n  }\n\n  public logout(): void {\n    this.modalService.cancel();\n    this.global.logout();\n  }\n\n  public gotoRoute(route, params?, replace = false): void {\n    this.modalService.cancel();\n    this.global.navigateToRoute(route, params, {replace});\n  }\n\n\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = \"<template>\\n  <require from=\\\"./menu.css\\\"></require>\\n  <fast-card separator fill-color=\\\"#f5f5f5\\\" class=\\\"mobile-full-bleed menu\\\" nocontain>\\n    <fast-card-row style=\\\"padding-top: 4px; padding-bottom: 4px; background-color: #ffffff; text-align: right;\\\">\\n      <!-- <label  t=\\\"Menu\\\"></label> -->\\n      <fast-button style=\\\"padding: 0 4px 0 8px;\\\" appearance=\\\"lightweight\\\" neutral hover-fill dismiss-modal><span t=\\\"Close\\\"></span><fast-icon icon=\\\"X\\\" slot=\\\"end\\\"></fast-icon>\\n      </fast-button>\\n    </fast-card-row>\\n    <fast-content>\\n      <fast-stack large>\\n        <fast-menu style=\\\"width: 100%; max-width: none;\\\" separated>\\n          <fast-menu-item click.delegate=\\\"gotoRoute('home')\\\">\\n            <fast-icon icon=\\\"Home\\\" slot=\\\"start\\\"></fast-icon><span t=\\\"menu.Home\\\"></span>\\n            <fast-icon icon=\\\"ChevronRight\\\" slot=\\\"end\\\"></fast-icon>\\n          </fast-menu-item>\\n          <fast-menu-item click.delegate=\\\"gotoRoute('manager')\\\">\\n            <fast-icon icon=\\\"Adjustments\\\" slot=\\\"start\\\"></fast-icon><span t=\\\"menu.PointCloud Manager\\\"></span>\\n            <fast-icon icon=\\\"ChevronRight\\\" slot=\\\"end\\\"></fast-icon>\\n          </fast-menu-item>\\n        </fast-menu>\\n        <div>\\n          <fast-stack small>\\n            <p><label  t=\\\"profile.My Profile\\\"></label></p>\\n            <fast-menu style=\\\"width: 100%; max-width: none;\\\" separated>\\n              <fast-menu-item if.bind=\\\"global.state.swissdata.authenticated\\\" click.trigger=\\\"gotoRoute('account', {na: 'main'}, true)\\\">\\n                <fast-icon icon=\\\"User\\\" slot=\\\"start\\\"></fast-icon>\\n                <span t=\\\"profile.My Account\\\"></span>\\n                <fast-icon icon=\\\"ChevronRight\\\" slot=\\\"end\\\"></fast-icon>\\n              </fast-menu-item>\\n              <fast-menu-item if.bind=\\\"!global.state.swissdata.authenticated\\\" click.trigger=\\\"gotoRoute('login')\\\">\\n                <fast-icon icon=\\\"User\\\" slot=\\\"start\\\"></fast-icon>\\n                Se connecter\\n                <fast-icon icon=\\\"ChevronRight\\\" slot=\\\"end\\\"></fast-icon>\\n              </fast-menu-item>\\n              <fast-menu-item if.bind=\\\"global.state.swissdata.authenticated\\\" click.trigger=\\\"logout()\\\">\\n                <fast-icon icon=\\\"Logout\\\" slot=\\\"start\\\"></fast-icon><span t=\\\"Logout\\\"></span>\\n                <fast-icon icon=\\\"ChevronRight\\\" slot=\\\"end\\\"></fast-icon></fast-menu-item>\\n            </fast-menu>\\n          </fast-stack>\\n        </div>\\n      </fast-stack>\\n    </fast-content>\\n  </fast-card>\\n</template>\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* USER PREVIEW */\\n.user-preview ux-icon {\\n  color: var(--aurelia-ux--design-primary);\\n}\\nux-icon.user-icon {\\n  background: var(--aurelia-ux--design-primary);\\n  color: var(--aurelia-ux--design-primary-foreground);\\n  border-radius: 100%;\\n  --aurelia-ux--icon-size: 32px;\\n  display: inline-flex;\\n  align-items: center;\\n  justify-content: center;\\n}\\nux-icon.user-icon > svg {\\n  --aurelia-ux--icon-size: 24px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = \"<template bindable=\\\"name,title\\\">\\n  <require from=\\\"./user-preview.css\\\"></require>\\n  <ux-list style=\\\"max-width: 300px;margin:auto;\\\" class=\\\"user-preview\\\">\\n    <ux-list-item>\\n      <div class=\\\"ux-list-item__detail\\\">\\n        <ux-icon icon=\\\"person\\\" class=\\\"user-icon\\\"></ux-icon>\\n      </div>\\n      <div class=\\\"ux-list-item__content\\\">\\n        ${name}\\n        <div class=\\\"ux-list-item__secondary-content\\\">\\n          ${title}\\n        </div>\\n      </div>\\n      <div class=\\\"ux-list-item__action-item\\\">\\n        <ux-icon icon=\\\"keyboard_arrow_down\\\"></ux-icon>\\n      </div>\\n    </ux-list-item>\\n  </ux-list>\\n</template>\\n\";","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var settings = {\n  title: 'RealBuild.app Manager',\n  description: 'Project description',\n  keywords: \"Project keywords\",\n  author: \"Project Author\",\n  stateVersion: '2.0',\n  stateLog: {\n    dispatchedActions: 'debug',\n    performanceLog: 'debug',\n    devToolsStatus: 'debug'\n  },\n  language: 'fr',\n  languages: ['fr'],\n  country: 'CH',\n  countries: ['CH'],\n  stateStorageKey: 'realbuild-manager-state',\n  defaultRoutes: {\n    unauthenticated: 'login',\n    authenticated: 'home'\n  },\n  three: {\n    canvasBackground: 'linear-gradient(#8A8A8A,#FFFFFF,#FFFFFF,#8A8A8A)'\n    //                'linear-gradient(#8bd5e3,#FFFFFF,#FFFFFF,#8A8A8A)'\n  },\n  fast: {\n    designTokens: {\n      fillColor: '#FFF', // background\n      accentPalette: '#FE5000', // primary\n      controlCornerRadius: 8, // Corner Radius\n      baseLayerLuminance: 1, // Dark mode = 0\n    },\n  },\n  ux: {\n    design: {\n      primary: '#fff',\n      primaryForeground: '#000',\n      accent:  '#FE5000',\n      accentForeground: '#fff',\n\n      primaryLight: '#7BE0DD',\n      primaryLightForeground: '#fff',\n      primaryDark: '#00989B',\n      primaryDarkForeground: '#000',\n\n      accentLight: '#8bd5e3',\n      accentLightForeground: '#fff',\n      accentDark: '#258CB1',\n      accentDarkForeground: '#000',\n\n      appBackground: '#000',\n      appForeground: '#fff',\n\n      surfaceBackground: '#FFFFFF',\n      surfaceForeground: '212121',\n\n      disabledBackground: '#EFEFEF',\n      disabledForeground: '#BBBBBB',\n      error: '#F44336',\n      errorForeground: '#FFFFFF'\n\n    }\n  }\n};\n\n// auto detection of locale\nif (typeof window !== `undefined`) {\n  var userLang = navigator.language || navigator.userLanguage; \n  var userLang = navigator.language || navigator.userLanguage; \n  for (var index in settings.languages) {\n    var language = settings.languages[index];\n    if (userLang.substr(0, 2) === language) {\n      settings.language = language;\n      break;\n    }  \n  }\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.settings = settings;\nexports.default = settings;\n\n","import { Aurelia, Container } from 'aurelia-framework'\nimport { PLATFORM } from 'aurelia-pal';\nimport { initialState } from 'state';\nimport { settings} from 'settings';\nimport * as environment from '../../config/environment.json';\nimport { i18nSetup } from 'aurelia-deco';\n// import * as icons from '@aurelia-ux/icons/sets/full.json';\n\nconst version = environment.version ? Object.values(environment.version).join('') : '';\n\nContainer.instance.registerInstance('sd-settings', settings);\n\nexport function registerCorePlugins(aurelia: Aurelia) {\n  aurelia.use\n    .plugin(PLATFORM.moduleName('aurelia-validation'))\n    .plugin(PLATFORM.moduleName('aurelia-dialog'))\n    .plugin(PLATFORM.moduleName('aurelia-i18n'),  i18nSetup({\n      aurelia: aurelia as any, // we pass as any here because otherwise we get a TS error when running in SRC mode\n      host: environment.swissdata.host, \n      apiKey: environment.swissdata.apiKey, \n      translationMemoryApiKey: environment.swissdata.translationMemoryApiKey,\n      translationMemoryHost: environment.swissdata.translationMemoryHost,\n      defaultLanguage: settings.language\n    }))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/core'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/button'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/card'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/checkbox'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/chip-input'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/datepicker'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/form'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/grid'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/icons'), {icons: []})\n    .plugin(PLATFORM.moduleName('@aurelia-ux/input'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/input-info'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/list'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/lookup'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/modal'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/positioning'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/radio'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/select'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/slider'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/switch'))\n    .plugin(PLATFORM.moduleName('@aurelia-ux/textarea'))\n    .plugin(PLATFORM.moduleName('aurelia-notify'))\n    .plugin(PLATFORM.moduleName('aurelia-store'), {\n      initialState: initialState,\n      logDispatchedActions: settings.stateLog.dispatchedActions,\n      logPerformanceLog: settings.stateLog.performanceLog,\n      logDevToolsStatus: settings.stateLog.devToolsStatus,\n      logDefinitions: {\n        dispatchedActions: settings.stateLog.dispatchedActions,\n        performanceLog: settings.stateLog.performanceLog,\n        devToolsStatus: settings.stateLog.devToolsStatus\n      }\n    })\n\n    .plugin(PLATFORM.moduleName('bcx-aurelia-reorderable-repeat'))\n    .plugin(PLATFORM.moduleName('aurelia-ui-virtualization'))\n    .plugin(PLATFORM.moduleName('aurelia-resources'), {stripe: {apiKey: environment.stripe.apiKey}})\n    .plugin(PLATFORM.moduleName('aurelia-deco'), {\n      api: {\n        ipStack: {apiKey: environment.ipstack.apiKey},\n        version,\n        host: environment.swissdata.host,\n        publicKey: environment.swissdata.apiKey\n      },\n      registerMissingTranslationKeys: true\n    })\n    .feature(PLATFORM.moduleName('components/index'));\n}\n","import { TextField, textFieldStyles } from '@microsoft/fast-components';\nimport { attr } from '@microsoft/fast-element';\nimport { textFieldTemplate as template } from './template';\n\nexport class TextFieldLogin extends TextField {\n\n  @attr() public autocomplete = '';\n  @attr() public name = '';\n\n}\n\nexport const fastTextFieldLogin = TextField.compose({\n  baseName: 'text-field-login',\n  template,\n  styles: textFieldStyles,\n  shadowOptions: null\n});\n","import { html, ref, slotted } from \"@microsoft/fast-element\";\nimport type { ViewTemplate } from \"@microsoft/fast-element\";\nimport { endSlotTemplate, startSlotTemplate } from \"@microsoft/fast-foundation\";\nimport { whitespaceFilter, ElementDefinitionContext, TextFieldOptions } from \"@microsoft/fast-foundation\";\nimport { TextFieldLogin } from './index';\n\n/**\n * The template for the {@link @microsoft/fast-foundation#(TextFieldLogin:class)} component.\n * @public\n */\nexport const textFieldTemplate: (\n    context: ElementDefinitionContext,\n    definition: TextFieldOptions\n) => ViewTemplate<TextFieldLogin> = (\n    context: ElementDefinitionContext,\n    definition: TextFieldOptions\n) => html`\n    <template\n        class=\"\n            ${x => (x.readOnly ? \"readonly\" : \"\")}\n        \"\n    >\n        <label\n            part=\"label\"\n            for=\"control\"\n            class=\"${x =>\n                x.defaultSlottedNodes && x.defaultSlottedNodes.length\n                    ? \"label\"\n                    : \"label label__hidden\"}\"\n        >\n            <slot\n                ${slotted({ property: \"defaultSlottedNodes\", filter: whitespaceFilter })}\n            ></slot>\n        </label>\n        <div class=\"root\" part=\"root\">\n            ${startSlotTemplate(context, definition)}\n            <input\n                class=\"control test\"\n                part=\"control\"\n                id=\"control\"\n                @input=\"${x => x.handleTextInput()}\"\n                @change=\"${x => x.handleChange()}\"\n                autocomplete=\"${x => x.autocomplete}\"\n                name=\"${x => x.name}\"\n                ?autofocus=\"${x => x.autofocus}\"\n                ?disabled=\"${x => x.disabled}\"\n                list=\"${x => x.list}\"\n                maxlength=\"${x => x.maxlength}\"\n                minlength=\"${x => x.minlength}\"\n                pattern=\"${x => x.pattern}\"\n                placeholder=\"${x => x.placeholder}\"\n                ?readonly=\"${x => x.readOnly}\"\n                ?required=\"${x => x.required}\"\n                size=\"${x => x.size}\"\n                ?spellcheck=\"${x => x.spellcheck}\"\n                :value=\"${x => x.value}\"\n                type=\"${x => x.type}\"\n                aria-atomic=\"${x => x.ariaAtomic}\"\n                aria-busy=\"${x => x.ariaBusy}\"\n                aria-controls=\"${x => x.ariaControls}\"\n                aria-current=\"${x => x.ariaCurrent}\"\n                aria-describedby=\"${x => x.ariaDescribedby}\"\n                aria-details=\"${x => x.ariaDetails}\"\n                aria-disabled=\"${x => x.ariaDisabled}\"\n                aria-errormessage=\"${x => x.ariaErrormessage}\"\n                aria-flowto=\"${x => x.ariaFlowto}\"\n                aria-haspopup=\"${x => x.ariaHaspopup}\"\n                aria-hidden=\"${x => x.ariaHidden}\"\n                aria-invalid=\"${x => x.ariaInvalid}\"\n                aria-keyshortcuts=\"${x => x.ariaKeyshortcuts}\"\n                aria-label=\"${x => x.ariaLabel}\"\n                aria-labelledby=\"${x => x.ariaLabelledby}\"\n                aria-live=\"${x => x.ariaLive}\"\n                aria-owns=\"${x => x.ariaOwns}\"\n                aria-relevant=\"${x => x.ariaRelevant}\"\n                aria-roledescription=\"${x => x.ariaRoledescription}\"\n                ${ref(\"control\")}\n            />\n            ${endSlotTemplate(context, definition)}\n        </div>\n    </template>\n`;\n","import { Dialog, Button, ElementDefinitionContext } from \"@microsoft/fast-foundation\";\nimport { css  } from \"@microsoft/fast-element\";\nimport { designUnit, accentFillFocus, accentFillHover, foregroundOnAccentFocus, foregroundOnAccentHover, neutralForegroundRest, neutralLayerFloating, neutralStrokeRest, strokeWidth, typeRampBaseFontSize, typeRampPlus2FontSize } from \"@microsoft/fast-components\";\n\nexport const dialogStyles = (context: ElementDefinitionContext) => {\n  const dialogTag = context.tagFor(Dialog);\n  const buttonTag = context.tagFor(Button);\n\n  return css`\n\n      :host {\n        --spacing-unit: calc(${designUnit} * 2);\n        --spacing-unit-lg: calc(var(--spacing-unit) * 2);\n      }\n\n      ${dialogTag} {\n        --dialog-width: auto;\n        --dialog-height: auto;\n      }\n\n      ${dialogTag}[prompt]::part(control) {\n        max-width: 500px;\n      }\n\n      ${dialogTag}::part(control) {\n        min-width: 300px;\n        background: ${neutralLayerFloating};\n        color: ${neutralForegroundRest};\n        font-size: ${typeRampBaseFontSize};\n      }\n      \n      ${dialogTag} .dialog-head {\n        display: grid;\n        grid-gap: calc(var(--spacing-unit-lg) * 1px);\n        grid-template-columns: 1fr min-content;\n        align-items: center;\n        padding: 0 calc(var(--spacing-unit) * 1px);\n        font-size: ${typeRampPlus2FontSize};\n        border-bottom: calc(${strokeWidth} * 1px) ${neutralStrokeRest} solid;\n        padding: calc(var(--spacing-unit) * 1px) calc(var(--spacing-unit) * 2px);\n      }\n\n      ${dialogTag} .dialog-head ${buttonTag} {\n        width: 40px;\n        height: 40px;\n      }\n      /*\n      */\n      ${dialogTag} .dialog-head ${buttonTag}::part(control) {\n        padding: 0;\n      }\n      ${dialogTag} .dialog-head ${buttonTag}::part(content) {\n        display: flex;\n      }\n      ${dialogTag} .dialog-head ${buttonTag}::part(content)::before {\n        background: transparent;\n      }\n      ${dialogTag} .dialog-head ${buttonTag}:hover {\n        background: ${accentFillHover};\n        color: ${foregroundOnAccentHover};\n      }\n      ${dialogTag} .dialog-head ${buttonTag}:focus {\n        background: ${accentFillFocus};\n        color: ${foregroundOnAccentFocus};\n      }\n      \n      ${dialogTag} .dialog-foot {\n        display: grid;\n        grid-gap: calc(var(--spacing-unit-lg) * 1px);\n        grid-template-columns: 1fr min-content;\n        align-items: center;\n        padding: calc(var(--spacing-unit) * 1px) calc(var(--spacing-unit) * 2px);\n        border-top: calc(${strokeWidth} * 1px) ${neutralStrokeRest} solid;\n      }\n      \n      ${dialogTag} .dialog-foot > * {\n        gap: calc(var(--spacing-unit) * 1px);\n      }\n      \n      ${dialogTag} .dialog-content {\n        padding: calc(var(--spacing-unit) * 3px) calc(var(--spacing-unit) * 2px);\n        max-height: calc(100vh - 200px);\n        overflow-y: auto;\n      }\n\n  `;\n}\n","import { FoundationElement, Dialog, Button, ElementDefinitionContext, FoundationElementDefinition, DesignSystem } from \"@microsoft/fast-foundation\";\nimport { html, when  } from \"@microsoft/fast-element\";\nimport { attr } from \"@microsoft/fast-element\";\n\n// Extend the configuration with custom properties\nexport interface BaseDialogDefinition extends FoundationElementDefinition {\n  defaultTitleContent?: string;\n  defaultOKButtonText?: string;\n  defaultCancelButtonText?: string;\n}\n\nexport const dialogHeadTemplate = (context: ElementDefinitionContext, definition: BaseDialogDefinition) => {\n  // const dialogTag = context.tagFor(Dialog);\n  const buttonTag = context.tagFor(Button);\n\n  return html<BaseDialog>`\n    ${when(x => x.title?.length > 0, html<BaseDialog>`\n      <div class=\"dialog-head\" part=\"dialog-head\">\n        <slot name=\"title\">${x => x.title || definition.defaultTitleContent}</slot>\n        <${buttonTag} appearance=\"lightweight\" @click=\"${x => x.cancel()}\" tabindex=\"3\">\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"/>\n          </svg>\n        </${buttonTag}>\n      </div>\n    `)}\n  `;\n};\n\nexport const dialogFootTemplate = (context: ElementDefinitionContext, definition: BaseDialogDefinition) => {\n  const dialogTag = context.tagFor(Dialog);\n  const buttonTag = context.tagFor(Button);\n\n  return html<BaseDialog>`\n    <div class=\"dialog-foot\" part=\"dialog-foot\">\n      <span>\n        <${buttonTag} tabindex=\"2\" appearance=\"lightweight\" @click=\"${x => x.cancel()}\">${x => x.cancelButtonText || definition.defaultCancelButtonText}</${buttonTag}>\n      </span>\n      <span>\n        <${buttonTag} tabindex=\"1\" appearance=\"accent\" @click=\"${x => x.ok()}\">${x => x.okButtonText || definition.defaultOKButtonText}</${buttonTag}>\n      </span>\n    </div>\n  `;\n}\n\nexport interface BaseOptions<T = any> {\n  title?: string;\n  okButtonText?: string;\n  cancelButtonText?: string;\n  dismissable?: boolean;\n  initialValue?: T;\n}\n\nexport interface BaseDialogResponse<T = any> {\n  wasDismissed: boolean;\n  value?: T;\n}\n\nexport class BaseDialog extends FoundationElement {\n\n  public currentValue: any;\n\n  protected static renderBaseModal<T extends BaseDialog = BaseDialog, R = any>(options?: BaseOptions<R>): {dialogElement: T, promise: Promise<BaseDialogResponse<R>>} {\n    const dialogTag = DesignSystem.tagFor(this);\n    const dialogElement = document.createElement(dialogTag) as T;\n    const promise = new Promise<BaseDialogResponse<R>>((resolve) => {\n\n      if (options.initialValue) {\n        dialogElement.currentValue = options.initialValue;\n      }\n\n      if (options?.title) {\n        dialogElement.title = options.title;\n      }\n\n      if (options?.okButtonText) {\n        dialogElement.okButtonText = options.okButtonText;\n      }\n\n      if (options?.cancelButtonText) {\n        dialogElement.cancelButtonText = options.cancelButtonText;\n      }\n\n      if (typeof options?.dismissable === 'boolean') {\n        dialogElement.dismissable = options.dismissable;\n      }\n\n      dialogElement.addEventListener('ok', (event: CustomEvent) => {\n        dialogElement.remove();\n        resolve({\n          wasDismissed: false,\n          value: dialogElement.currentValue\n        });\n      }, {once: true});\n\n      dialogElement.addEventListener('cancel', () => {\n        dialogElement.remove();\n        resolve({\n          wasDismissed: true,\n          value: undefined\n        });\n      }, {once: true});\n\n      if (options.dismissable) {\n        dialogElement.addEventListener('dismiss', () => {\n          dialogElement.remove();\n          resolve({\n            wasDismissed: true,\n            value: undefined\n          });\n        }, {once: true});\n      }\n      document.body.appendChild(dialogElement);\n    });\n    return {\n      dialogElement,\n      promise\n    };\n  }\n\n  @attr({ mode: \"boolean\" })\n  public dismissable = false;\n\n  @attr\n  public title = '';\n\n  @attr\n  public okButtonText = '';\n\n  @attr\n  public cancelButtonText = '';\n\n  public cancel(): void {\n    this.$emit('cancel', undefined, {bubbles: false});\n  }\n\n  public ok(): void {\n    this.$emit('ok', true, {bubbles: false});\n  }\n  \n}\n","import { Dialog, ElementDefinitionContext } from \"@microsoft/fast-foundation\";\nimport { html, when  } from \"@microsoft/fast-element\";\nimport { attr } from \"@microsoft/fast-element\";\nimport { dialogStyles } from './dialog-styles';\nimport { dialogHeadTemplate, dialogFootTemplate, BaseDialog, BaseOptions, BaseDialogDefinition, BaseDialogResponse } from './base'; \n\n// Extend the configuration with custom properties\ninterface ConfirmDialogDefinition extends BaseDialogDefinition {\n  defaultTextContent?: string;\n}\n\nconst confirmDialogTemplate = (context: ElementDefinitionContext, definition: ConfirmDialogDefinition) => {\n  const dialogTag = context.tagFor(Dialog);\n\n  return html<ConfirmDialog>`\n    <${dialogTag} prompt>\n      ${dialogHeadTemplate(context, definition)}\n      ${when(x => x.text?.length > 0 || definition.defaultTextContent?.length > 0, html<ConfirmDialog>`\n        <div class=\"dialog-content\" part=\"dialog-content\">\n          <slot name=\"text\">${x => x.text || definition.defaultTextContent}</slot>\n        </div>\n      `)}\n      ${dialogFootTemplate(context, definition)}\n    </${dialogTag}>\n  `;\n}\n\ninterface ConfirmOptions extends BaseOptions<boolean> {\n  text?: string;\n}\n\nexport class ConfirmDialog extends BaseDialog {\n\n  public static async renderModal(options: ConfirmOptions): Promise<BaseDialogResponse<boolean>> {\n    options.initialValue = true;\n    const { dialogElement, promise } = this.renderBaseModal<ConfirmDialog, boolean>(options);\n    if (options.text) {\n      dialogElement.text = options.text;\n    }\n    return promise;\n  }\n\n  @attr\n  public text = '';\n  \n}\n\nexport const confirmDialog = ConfirmDialog.compose<ConfirmDialogDefinition>({\n  baseName: 'confirm-dialog',\n  template: confirmDialogTemplate,\n  styles: dialogStyles,\n  defaultTitleContent: \"Confirm\",\n  defaultTextContent: \"\",\n  defaultOKButtonText: \"OK\",\n  defaultCancelButtonText: \"Cancel\"\n});\n","import { Dialog, Menu, MenuItem, ElementDefinitionContext } from \"@microsoft/fast-foundation\";\nimport { html, repeat, css  } from \"@microsoft/fast-element\";\nimport { attr, when } from \"@microsoft/fast-element\";\nimport { dialogStyles } from './dialog-styles';\nimport { dialogHeadTemplate, dialogFootTemplate, BaseDialog, BaseOptions, BaseDialogDefinition, BaseDialogResponse } from './base'; \n\n// Extend the configuration with custom properties\ninterface SelectDialogDefinition extends BaseDialogDefinition {\n\n}\n\nconst selectDialogStyles = (ctx: ElementDefinitionContext) => css`\n  ${dialogStyles(ctx)}\n  :host .dialog-content {\n    padding: 0;\n  }\n`;\n\nconst selectDialogTemplate = (context: ElementDefinitionContext, definition: SelectDialogDefinition) => {\n  const dialogTag = context.tagFor(Dialog);\n  const menuTag = context.tagFor(Menu);\n  const menuItemTag = context.tagFor(MenuItem);\n\n  return html<SelectDialog>`\n    <${dialogTag} prompt>\n      ${dialogHeadTemplate(context, definition)}\n      <div class=\"dialog-content\" part=\"dialog-content\">\n        <${menuTag}>\n          ${repeat((x) => x.options, html<SelectOption, SelectDialog>`\n            <${menuItemTag} @click=\"${(x, c) => c.parent.toggleOption(x)}\" class=\"${(x, c) => x.value === c.parent.currentValue ? 'expanded' : ''}\">\n              ${x => x.label}\n            </${menuItemTag}>\n          `)}\n        </${menuTag}>\n      </div>\n\n      ${dialogFootTemplate(context, definition)}\n    </${dialogTag} prompt>\n  `;\n}\n\ninterface SelectOptions extends BaseOptions<string> {\n  options: SelectOption[];\n  autoclose?: boolean;\n}\n\nexport interface SelectOption {\n  value: string;\n  label: string;\n}\n\nexport class SelectDialog extends BaseDialog {\n\n  public static async renderModal(options: SelectOptions): Promise<BaseDialogResponse<string>> {\n    const {dialogElement, promise} = this.renderBaseModal<SelectDialog, string>(options);\n    dialogElement.options.splice(0, dialogElement.options.length);\n    dialogElement.options.push(...options.options);\n    \n    if (typeof options?.autoclose === 'boolean') {\n      dialogElement.autoclose = options.autoclose;\n    }\n    return promise;\n  }\n\n  @attr({ mode: \"boolean\" })\n  public autoclose = true;\n\n  public currentValue: string = '';\n  public options: SelectOption[] = [];\n\n  public toggleOption(option: SelectOption): void {\n    if (option.value === this.currentValue) {\n      // the lines below are a way to update the item in the options list\n      // and letting fast template know that the item has changed\n      const index = this.options.findIndex(o => o.value === option.value);\n      if (index !== -1) {\n        this.options.splice(index, 1, {value: option.value, label: option.label});\n      }\n      \n      this.currentValue = '';\n    } else {\n      this.currentValue = option.value;\n    }\n    if (this.currentValue && this.autoclose) {\n      this.ok();\n    }\n  }\n\n}\n\nexport const selectDialog = SelectDialog.compose<SelectDialogDefinition>({\n  baseName: 'select-dialog',\n  template: selectDialogTemplate,\n  styles: selectDialogStyles,\n  defaultTitleContent: \"Select\",\n  defaultOKButtonText: \"OK\",\n  defaultCancelButtonText: \"Cancel\"\n});\n","import { Dialog, Menu, MenuItem, ElementDefinitionContext, TextField } from \"@microsoft/fast-foundation\";\nimport { html, repeat, css  } from \"@microsoft/fast-element\";\nimport { attr, ref } from \"@microsoft/fast-element\";\nimport { dialogStyles } from './dialog-styles';\nimport { dialogHeadTemplate, dialogFootTemplate, BaseDialog, BaseOptions, BaseDialogDefinition, BaseDialogResponse } from './base'; \n\n// Extend the configuration with custom properties\ninterface PromptTextDialogDefinition extends BaseDialogDefinition {\n\n}\n\nconst promptTextDialogStyles = (ctx: ElementDefinitionContext) => {\n  const textFieldTag = ctx.tagFor(TextField);\n\n  return css`\n    ${dialogStyles(ctx)}\n    :host .dialog-content {\n      padding: 8px;\n    }\n\n    ${textFieldTag} {\n      width: 100%;\n    }\n  }`\n};\n\nconst promptTextDialogTemplate = (context: ElementDefinitionContext, definition: PromptTextDialogDefinition) => {\n  const dialogTag = context.tagFor(Dialog);\n  const textFieldTag = context.tagFor(TextField);\n\n  return html<PromptTextDialog>`\n    <${dialogTag} prompt>\n      ${dialogHeadTemplate(context, definition)}\n      <div class=\"dialog-content\" part=\"dialog-content\">\n        <${textFieldTag} :value=\"${x => x.currentValue}\" ${ref('textFieldInput')}></${textFieldTag}>\n      </div>\n\n      ${dialogFootTemplate(context, definition)}\n    </${dialogTag} prompt>\n  `;\n}\n\ninterface PromptTextOptions extends BaseOptions<string> {\n}\n\nexport class PromptTextDialog extends BaseDialog {\n\n  public static async renderModal(options: PromptTextOptions): Promise<BaseDialogResponse<string>> {\n    const {dialogElement, promise} = this.renderBaseModal<PromptTextDialog, string>(options);\n    return promise;\n  }\n\n  @attr({ mode: \"boolean\" })\n  public autoclose = true;\n\n  public currentValue: string = '';\n\n  public textFieldInput: TextField;\n\n  public ok(): void {\n    this.currentValue = this.textFieldInput.value;\n    this.$emit('ok', true, {bubbles: false});\n  }\n}\n\nexport const promptTextDialog = PromptTextDialog.compose<PromptTextDialogDefinition>({\n  baseName: 'prompt-text-dialog',\n  template: promptTextDialogTemplate,\n  styles: promptTextDialogStyles,\n  defaultTitleContent: \"\",\n  defaultOKButtonText: \"OK\",\n  defaultCancelButtonText: \"Cancel\"\n});\n","import { css } from '@microsoft/fast-element';\n\nexport const StackStyles = css`\n  :host {\n    display: block;\n    contain: style;\n    --stack-margin-top: calc(var(--type-ramp-base-font-size) + ((var(--design-unit) * 2 * max(0, var(--density))) * 1px));\n  }\n  :host([large]) {\n    --stack-margin-top: calc((var(--type-ramp-base-font-size) * 2) + ((var(--design-unit) * 2 * max(0, var(--density))) * 1px));\n  }\n  :host([small]) {\n    --stack-margin-top: calc((var(--type-ramp-base-font-size) * 0.5) + ((var(--design-unit) * 2 * max(0, var(--density))) * 1px));  \n  }\n`;","import { html, slotted } from '@microsoft/fast-element';\nimport { FastStack } from './index';\n\nexport const StackTemplate = html<FastStack>`\n<template>\n  <slot ${slotted('nodes')}></slot>\n</template>`;\n","import { customElement, FASTElement, observable } from '@microsoft/fast-element';\nimport { StackStyles as styles } from './styles';\nimport { StackTemplate as template } from './template';\nimport './stack-item.css';\n\n@customElement({\n  name: 'fast-stack',\n  template,\n  styles,\n  shadowOptions: {\n    mode: 'open'\n  }\n})\nexport class FastStack extends FASTElement {\n\n  @observable nodes: Node[];\n\n  public nodesChanged(): void {\n    let foundOne = false;\n    this.nodes.forEach((node) => {\n      if (node instanceof HTMLElement) {\n        if (foundOne) {\n          node.classList.add('stack-item');\n        }\n        foundOne = true;\n      }\n    });\n  }\n\n}\n","import { css } from '@microsoft/fast-element';\nimport { display } from \"@microsoft/fast-foundation\";\n\nexport const NextStyles = css`\n  ${display(\"grid\")}\n\n  :host {\n    display: grid;\n    grid-template-columns: 1fr;\n    overflow: hidden;\n  }\n\n  :host([fixed]) {\n    position: relative;\n    width: 100%;\n    height: 100%;\n    display: block\n  }\n\n  ::slotted(.next-item) {\n    grid-row: 1;\n    grid-column: 1;\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n\n  :host([fixed]) ::slotted(.next-item) {\n    display: block;\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    overflow-x: hidden;\n    overflow-y: auto;\n    z-index: 1;\n  }\n\n  ::slotted(.next-item.animate) {\n    -webkit-transition: transform var(--next-animation-duration, 400ms) var(--next-animation-leave-function, ease-in);\n    transition: transform var(--next-animation-duration, 400ms) var(--next-animation-leave-function, ease-in);\n  }\n  \n  ::slotted(.next-item.prev) {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n  \n  ::slotted(.next-item.next) {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n  \n  ::slotted(.next-item.animate.current) {\n    z-index: 2;\n    transition-timing-function: var(---next-animation-enter-function, ease-in)\n  }\n`.withBehaviors(\n  \n);","import { html, slotted } from '@microsoft/fast-element';\nimport { FastNext } from './index';\n\nexport const NextTemplate = html<FastNext>`\n<template>\n  <slot part=\"next-items\" ${slotted(\"items\")}></slot>\n</template>`;\n","import { customElement, FASTElement, attr, DOM, observable } from '@microsoft/fast-element';\nimport { NextStyles as styles } from './styles';\nimport { NextTemplate as template } from './template';\n\n/**\n * @internal\n * \n * All slotted items receive either the 'prev' or 'next' class\n * according to their position compared to the activeid\n * \n * The activeid has no class\n * \n * When an animation start, the next/prev/current are set\n * before to start animation by setting the animate class\n * \n * Once the animation is finished, the current class is removed\n * as the current item is now in position\n*/\n\n@customElement({\n  name: 'fast-next',\n  template,\n  styles\n})\nexport class FastNext extends FASTElement {\n\n  public connectedCallback(): void {\n    super.connectedCallback();\n    window.addEventListener('popstate', this);\n    this.pushStateIdChanged();\n  }\n\n  public disconnectedCallback(): void {\n    super.disconnectedCallback();\n    window.removeEventListener('popstate', this);\n  }\n\n  public handleEvent(event: PopStateEvent): void {\n    if (this.pushStateId && event.state?.fastNextId === this.pushStateId && event.state?.fastNextElementId) {\n      const lastOperation = this.previousOperations[this.previousOperations.length - 1];\n      if (lastOperation && event.state?.fastNextElementId === lastOperation?.id && event.state?.fastNextDirection === lastOperation?.direction) {\n        this.back(true);\n        return;\n      }\n      this.goToId(event.state?.fastNextElementId, event.state?.fastNextDirection === 'next' ? 'next' : 'prev', true);\n    }\n  }\n\n  @attr({attribute: 'push-state-id'})\n  public pushStateId = '';\n  public pushStateIdChanged(): void {\n    if (this.pushStateId) {\n      const url = new URL(location.href);\n      if (url.searchParams.get(this.pushStateId)) {\n        this.activeid = url.searchParams.get(this.pushStateId);\n        DOM.queueUpdate(() => {\n          this.ensureIdInUrl();\n        });\n      }\n    }\n  }\n\n  public hasHistory = false;\n\n  @attr\n  public autodetectback = true;\n\n  /**\n   * The id of the active item\n   *\n   * @public\n   * @remarks\n   * HTML Attribute: activeid\n   */\n  @attr\n  public activeid: string;\n\n  /**\n   * @internal\n   */\n  public activeidChanged(): void {\n    if (\n      this.$fastController.isConnected\n    ) {\n      if (this.activeitem) {\n        this.goToId(this.activeid);\n      }\n    }\n  }\n\n  /**\n   * @internal\n   */\n  @observable\n  public items: (HTMLElement | Node)[] = [];\n  /**\n   * @internal\n   */\n  public itemsChanged(): void {\n    if (this.$fastController.isConnected) {\n      this.setItems();\n    }\n  }\n  public nextItems: HTMLElement[] = [];\n\n  /**\n   * A reference to the active item\n   * @public\n   */\n  public activeitem: HTMLElement;\n\n  private activeIndex: number;\n  private itemIds: Array<string | null>;\n  private previousOperations: Array<{id: string, direction: 'prev' | 'next'}> = [];\n\n  private changing = (): void => {\n    this.$emit(\"changing\", this.activeitem);\n  };\n\n  private changed = (): void => {\n    this.$emit(\"changed\", this.activeitem);\n  };\n\n  private setItems(): void {\n    this.itemIds = [];\n    this.nextItems = [];\n    this.activeIndex = -1;\n    let nextIndex = 0;\n    this.items.forEach((item) => {\n      if (item instanceof HTMLElement) {\n        item.classList.add('next-item');\n        this.nextItems.push(item);\n        const itemId = item.getAttribute('id') || `next-item-${nextIndex + 1}`;\n        item.setAttribute('id', itemId);\n        this.itemIds.push(itemId);\n        if (itemId === this.activeid) {\n          this.activeIndex = nextIndex;\n          this.activeitem = item;\n        }\n        nextIndex++;\n      }\n    });\n\n    if (this.activeIndex === -1) {\n      this.activeIndex = 0;\n      this.activeid = this.itemIds[0];\n      this.activeitem = this.nextItems[0];\n    }\n\n    this.setPositions();\n  }\n\n  private setPositions(): void {\n    this.nextItems.forEach((item, index) => {\n      if (index < this.activeIndex) {\n        item.classList.remove('next');\n        item.classList.remove('current');\n        item.classList.add('prev');\n      } else if (index > this.activeIndex) {\n        item.classList.remove('prev');\n        item.classList.remove('current');\n        item.classList.add('next');\n      } else {\n        item.classList.remove('prev');\n        item.classList.remove('next');\n      }\n    });\n  }\n\n  public next(): void {\n    if (this.activeIndex < this.nextItems.length - 1) {\n      const nextid = this.itemIds[this.activeIndex + 1];\n      this.goToId(nextid);\n    }\n  }\n\n  public prev(): void {\n    if (this.activeIndex > 0) {\n      const previd = this.itemIds[this.activeIndex - 1];\n      this.goToId(previd);\n    }\n  }\n\n  public back(fromPushState = false): void {\n    if (this.previousOperations.length > 0) {\n      const previousOperation = this.previousOperations.pop();\n      this.goToId(previousOperation.id, previousOperation.direction === 'prev' ? 'next' : 'prev', false, fromPushState);\n    }\n  }\n\n  private moving = false;\n  private queuedOperations: {id: string, direction: 'prev' | 'next' | 'auto', trackOperation: boolean, fromPushState: boolean}[] = [];\n  public goToId(id: string, direction: 'prev' | 'next' | 'auto' = 'auto', trackOperation = true, fromPushState = false): void {\n    // Validate the move\n    const goToIndex = this.itemIds.indexOf(id);\n    if (goToIndex === -1) {\n      return;\n    }\n    const goToElement = this.nextItems[goToIndex];\n    if (goToElement.classList.contains('current')) {\n      return;\n    }\n\n    // Once the move is validated, queue the move if one is already being processed\n    if (this.moving) {\n      this.queuedOperations.push({id, direction, trackOperation, fromPushState});\n      return;\n    }\n    this.moving = true;\n\n    if (!fromPushState) {\n      this.ensureCurrentState();\n    }\n    if (direction === 'auto') {\n      direction = goToIndex > this.activeIndex ? 'next' : 'prev';\n    }\n\n    const isPreviousId = this.previousOperations.length > 0 && id === this.previousOperations[this.previousOperations.length - 1].id;\n\n    if (direction === 'next' || !isPreviousId) {\n      // if the direction is \"next\" => we consider that it's not a \"back\" operation that should\n      // be auto detected\n      if (trackOperation && this.activeid) {\n        this.previousOperations.push({id: this.activeid, direction});\n      }\n    } else if (this.autodetectback) {\n      // here we know that we are calling gotoid with the id of the previously \n      // displayed element. Then, we can autodetect a back operation\n      this.previousOperations.pop();\n    }\n\n    this.hasHistory = this.previousOperations.length > 0;\n\n    const oppositeDirection = direction === 'next' ? 'prev' : 'next';\n\n    goToElement.classList.add(direction);\n    goToElement.classList.remove(oppositeDirection);\n\n    this.changing();\n\n    DOM.queueUpdate(() => {\n      // start animating\n      this.activeitem.classList.add('animate');\n      goToElement.classList.add('animate');\n      // start animation\n      this.activeitem.classList.add(oppositeDirection);\n      this.activeitem.classList.remove('current');\n      goToElement.classList.remove(direction);\n      goToElement.classList.add('current');\n\n      goToElement.addEventListener(\"transitionend\", () => {\n        if (this.activeitem) {\n          this.activeitem.classList.remove('animate');\n        }\n        if (goToElement) {\n          goToElement.classList.remove('animate');\n        }\n        this.activeid = id;\n        this.activeIndex = this.itemIds.indexOf(id);\n        this.activeitem = goToElement;\n        this.changed();\n        if (!fromPushState) {\n          this.setState(direction);\n        }\n        this.ensureIdInUrl();\n\n        this.moving = false;\n        if (this.queuedOperations.length > 0) {\n          const nextOperation = this.queuedOperations.shift();\n          this.goToId(nextOperation.id, nextOperation.direction, nextOperation.trackOperation, nextOperation.fromPushState);\n        }\n      }, {once: true});\n    });\n  }\n\n  private ensureCurrentState(): void {\n    if (!this.pushStateId) {\n      return;\n    }\n    if (!history.state.fastNextId || !history.state.fastNextElementId) {\n      history.replaceState(Object.assign({}, history.state, {fastNextId: this.pushStateId, fastNextElementId: this.activeid, fastNextDirection: 'auto'}), document.title);\n    } \n  }\n\n  private setState(direction: string): void {\n    if (!this.pushStateId) {\n      return;\n    }\n    history.pushState(Object.assign({}, history.state, {fastNextId: this.pushStateId, fastNextElementId: this.activeid, fastNextDirection: direction}), document.title);\n  }\n\n  private ensureIdInUrl() {\n    if (!this.pushStateId) {\n      return;\n    }\n    const url = new URL('', location.href);\n    url.hash = location.hash;\n    url.searchParams.set(this.pushStateId, this.activeid);\n    history.replaceState(history.state, document.title, url.toString());  \n  }\n}\n","import { css } from '@microsoft/fast-element';\nimport { display } from \"@microsoft/fast-foundation\";\n\nexport const FormStyles = css`\n  ${display(\"flex\")}\n\n  :host {\n    contain: style;\n    flex-direction: column;\n  }\n  ::slotted(label) {\n    margin-bottom: 4px;\n  }\n`;","import { html } from '@microsoft/fast-element';\nimport { FastFormRow } from './index';\n\nexport const FormTemplate = html<FastFormRow>`<slot></slot>`;\n","import { customElement, FASTElement } from '@microsoft/fast-element';\nimport { FormStyles as styles } from './styles';\nimport { FormTemplate as template } from './template';\n\n@customElement({\n  name: 'fast-form-row',\n  template,\n  styles\n})\nexport class FastFormRow extends FASTElement {\n  \n}\n","import { css } from '@microsoft/fast-element';\nimport { display } from \"@microsoft/fast-foundation\";\n\nexport const FormStyles = css`\n  ${display(\"grid\")}\n\n  :host {\n    contain: style;\n    grid-gap: var(--spacing-unit);\n  }\n`;","import { html } from '@microsoft/fast-element';\nimport { FastForm } from './index';\n\nexport const FormTemplate = html<FastForm>`<slot></slot>`;\n","import { customElement, FASTElement } from '@microsoft/fast-element';\nimport { FormStyles as styles } from './styles';\nimport { FormTemplate as template } from './template';\n\n@customElement({\n  name: 'fast-form',\n  template,\n  styles\n})\nexport class FastForm extends FASTElement {\n  \n}\n","import { \n  provideFASTDesignSystem, \n  fastAccordion,\n  fastAccordionItem,\n  fastAnchoredRegion,\n  fastButton,\n  fastCard, \n  fastCheckbox,\n  fastMenu,\n  fastMenuItem,\n  fastTextField,\n  fastBreadcrumb,\n  fastBreadcrumbItem,\n  fastSelect,\n  fastSlider,\n  buttonStyles,\n  accentFillHover,\n  foregroundOnAccentHover,\n  accentFillFocus,\n  foregroundOnAccentFocus,\n  fastOption,\n  fastDialog,\n  fastRadio,\n  fastTab,\n  fastTabs,\n  fastTabPanel,\n  fastSwitch,\n  fastBadge,\n  fastProgressRing,\n  fastAnchor,\n} from '@microsoft/fast-components';\nimport { css } from '@microsoft/fast-element';\nimport { focusVisible } from '@microsoft/fast-foundation';\nimport { FastIcon } from './components/icon';\n\nexport const iconButtonStyles = css`\n:host([icon]) {\n  width: 40px;\n  height: 40px;\n}\n/*\n:host([appearance=lightweight][hover-fill]) .control {\n  padding: 0 calc((10 + max(0, calc(var(--control-corner-radius) - 10)) + (var(--design-unit) * 2 * max(var(--density), 0))) * 1px);\n}\n*/\n:host([icon]) .control {\n  padding: 0;\n}\n:host([icon]) .content {\n  display: flex;\n}\n:host([appearance=lightweight][icon]) span.content::before,\n:host([appearance=lightweight][hover-fill]) span.content::before,\n:host([appearance=lightweight][icon]) .control:${focusVisible} span.content::before,\n:host([appearance=lightweight][hover-fill]) .control:${focusVisible} span.content::before {\n  background: transparent;\n}\n:host([appearance=lightweight][icon]:hover),\n:host([appearance=lightweight][hover-fill]:hover) {\n  background: ${accentFillHover};\n  color: ${foregroundOnAccentHover};\n}\n:host([appearance=lightweight][icon]:focus),\n:host([appearance=lightweight][hover-fill]:focus) {\n  background: ${accentFillFocus};\n  color: ${foregroundOnAccentFocus};\n}\n`;\n\nprovideFASTDesignSystem()\n    .register(\n        fastAccordion(),\n        fastAccordionItem(),\n        fastAnchor(),\n        fastAnchoredRegion(),\n        fastBadge(),\n        fastBreadcrumb(),\n        fastBreadcrumbItem(),\n        fastButton({\n          styles: (ctx, def) => css`\n            ${buttonStyles(ctx, def as any)}\n            ${iconButtonStyles}\n          `\n        }),\n        fastCard(),\n        fastCheckbox(),\n        fastDialog(),\n        fastMenu(),\n        fastMenuItem(),\n        fastOption(),\n        fastProgressRing(),\n        fastSelect(),\n        fastSlider(),\n        fastRadio(),\n        fastSwitch(),\n        fastTab(),\n        fastTabs(),\n        fastTabPanel(),\n        fastTextField()\n    );\n\nFastIcon;\n\n// import global custom components\nimport { fastTextFieldLogin } from './components/text-field-login';\nimport { confirmDialog } from './components/dialogs/confirm';\nimport { selectDialog } from './components/dialogs/select';\nimport { promptTextDialog } from './components/dialogs/prompt-text';\nprovideFASTDesignSystem()\n    .register(\n      fastTextFieldLogin(),\n      confirmDialog({}),\n      selectDialog({}),\n      promptTextDialog({}),\n    );\n\n\n\n// import components with the old syntax\nimport { FastStack } from './components/stack';\nimport { FastNext } from './components/next';\nimport { FastFormRow } from './components/form-row/index';\nimport { FastForm } from './components/form/index';\n\nFastStack;\nFastNext;\nFastForm;\nFastFormRow;\n","import {Aurelia} from 'aurelia-framework'\nimport * as environment from '../config/environment.json';\nimport {PLATFORM} from 'aurelia-pal';\nimport { registerCorePlugins } from 'base/base-main';\nimport './import-fast';\nimport { Aurelia1FASTAdapter } from 'aurelia1-fast-adapter';\nAurelia1FASTAdapter.tags['CALENDAR'] = ['date', 'dates', 'from', 'end'];\nAurelia1FASTAdapter.tags['DATE-FIELD'] = ['value'];\nAurelia1FASTAdapter.tags['TEXT-FIELD-LOGIN'] = ['value'];\n\nexport function configure(aurelia: Aurelia) {\n  aurelia.use\n    .standardConfiguration()\n  registerCorePlugins(aurelia);\n  aurelia.use\n    .plugin(PLATFORM.moduleName('aurelia-bcf'), {\n      host: `${environment.swissdata.host}/bcf/2.1`, // 'http://localhost:3000/bcf/2.1',\n      extendEndpoint: (url) => {\n        if (url.indexOf('?') === -1) return url + `?apiKey=${environment.swissdata.apiKey}`;\n        return url + `&apiKey=${environment.swissdata.apiKey}`;\n      },\n      ignoreDebugs: false\n    })\n    .plugin(PLATFORM.moduleName('aurelia1-fast-adapter'), 'fast')\n    .feature(PLATFORM.moduleName('aurelia-components/index'))\n    .feature(PLATFORM.moduleName('resources/index'));\n\n  aurelia.use.developmentLogging(environment.debug ? 'debug' : 'warn');\n\n  if (environment.testing) {\n    aurelia.use.plugin(PLATFORM.moduleName('aurelia-testing'));\n  }\n\n  aurelia.start().then(() => aurelia.setRoot(PLATFORM.moduleName('app')));\n}\n\n","import { inject} from 'aurelia-framework';\nimport { Global } from 'global';\nimport { getLogger } from 'aurelia-logging';\nimport { Link } from 'app';\n\nconst log = getLogger('account');\n\n@inject(Global)\nexport class Home {    \n\n  public link: Link = undefined;\n\n  constructor(private global: Global) {\n  }\n\n  \n  public activate() {\n    console.log('Start home');\n  }\n\n \n\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/* Styles for page Home */\\n\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = \"<template>\\n  <require from=\\\"./home.css\\\"></require>\\n  \\n  <section class=\\\"center\\\">\\n    <h3>Le futur de la gestion de nuages de points, maintenant accessible.</h3>\\n    <p>\\n      Simplifiez vos projets de nuages de points avec notre application\\n    </p>\\n    <img src=\\\"/images/realbuild-logo-block.svg\\\" alt=\\\"RealBuild Logo\\\" style=\\\"width: 250px; height: 150px;\\\">\\n    <p>\\n      <a href=\\\"https://viewer.realbuild.app\\\" target=\\\"_blank\\\" style=\\\"text-decoration: none;\\\">\\n        <fast-button slot=\\\"left\\\" appearance=\\\"neutral\\\" style=\\\"justify-self: start;\\\">\\n          <fast-icon icon=\\\"Eye\\\"></fast-icon><span t=\\\"app.Viewer\\\" style=\\\"vertical-align: super; margin-left: 10px;\\\"></span>\\n        </fast-button>\\n      </a>\\n      <fast-button slot=\\\"left\\\" appearance=\\\"accent\\\"  style=\\\"margin-left: 8px; justify-self: start;\\\" click.trigger=\\\"global.navigateToRoute('manager')\\\">\\n        <fast-icon icon=\\\"Cog\\\"></fast-icon><span t=\\\"app.Manager\\\" style=\\\"vertical-align: super; margin-left: 10px;\\\"></span>\\n      </fast-button>\\n    </p>\\n  </section>\\n\\n</template>\\n\";","import { FastMenuValueAttribute } from './fast-menu-value-attribute';\nimport { customAttribute, inject, observable, Optional } from 'aurelia-framework';\nimport { MenuItem } from '@microsoft/fast-components';\n\n@customAttribute('fast-menu-item-value', undefined, ['fast-menu-option'])\n@inject(Element, Optional.of(FastMenuValueAttribute))\nexport class FastMenuItemValueAttribute {\n\n  public value: any;\n\n  constructor(private element: MenuItem & {value?: any}, private container: FastMenuValueAttribute) {}\n\n  public bind() {\n    this.container.registerMenuItem(this.element);\n    this.element.value = this.value;\n  }\n\n  public detached() {\n    this.container.disposeMenuItem(this.element);\n  }\n\n  public valueChanged(newValue: any) {\n    this.element.value = newValue;\n    this.container.computeValueFromItems();\n  }\n}\n","import { customAttribute, bindingMode, bindable, inject, TaskQueue } from 'aurelia-framework';\nimport { MenuItem } from '@microsoft/fast-components';\n\n\n/*\nThis custom attribute is designed to work with <fast-menu> and <fast-menu-item> elements. It will automatically\nadd the right role (\"menuitemcheckbox\" or \"menuitemradio\") according to the bound value type in the menu element\n\nUsage for multiple selection (checkbox)\n\nViewModel:\n- The ViewModel must hold a property (exemple `value` which is in an array form: this.value = [])\n\nView:\n<fast-menu fast-menu-value.bind=\"value\">\n  <fast-menu-item fast-menu-item-value=\"value1\">Value 1</fast-menu-item>\n  <fast-menu-item fast-menu-item-value=\"value2\">Value 2</fast-menu-item>\n  <fast-menu-item fast-menu-item-value=\"value3\">Value 3</fast-menu-item>\n</fast-menu>\n\nUsage for single selection (radio)\n\nViewModel:\n- The ViewModel must hold a property (exemple `value` which is not an array: this.value = 'default_value')\n\nView:\n<fast-menu fast-menu-value.bind=\"value\">\n  <fast-menu-item fast-menu-item-value=\"default_value\">Default value</fast-menu-item>\n  <fast-menu-item fast-menu-item-value=\"other_value\">Other value</fast-menu-item>\n  <fast-menu-item fast-menu-item-value=\"another_value\">Another value</fast-menu-item>\n</fast-menu>\n\n*/\n\n@customAttribute('fast-menu-value', bindingMode.twoWay, ['fast-menu-container'])\n@inject(Element, TaskQueue)\nexport class FastMenuValueAttribute {\n\n  public value: any | any[];\n\n  private isMultiple: boolean = false;\n  private items: Array<MenuItem & {value?: any}> = [];\n\n  private isQueued: boolean = false;\n\n  constructor(private element: Element, private taskQueue: TaskQueue) {\n  }\n\n  /* Event passed on the click eventListener */\n  public handleEvent(event: Event) {\n    if (event.type === 'change') {\n      setTimeout(() => {\n        this.computeValueFromItems();\n      }, 50)\n    }\n  }\n\n  /* Callback passed on the TaskQueue when registering child items */\n  public call() {\n    this.isQueued = false;\n    this.applyValueToItems();\n  }\n\n  public bind() {\n    this.valueChanged(this.value);\n  }\n\n  private requestProcessValue() {\n    if (!this.isQueued) {\n      this.isQueued = true;\n      this.taskQueue.queueMicroTask(this);\n    }\n  }\n\n  public registerMenuItem(option: MenuItem) {\n    this.items.push(option);\n    option.addEventListener('change', this);\n    this.requestProcessValue();\n  }\n\n  public disposeMenuItem(option: MenuItem) {\n    const index = this.items.indexOf(option);\n    if (index !== -1) {\n      option.removeEventListener('change', this);\n      this.items.splice(index, 1);\n      this.requestProcessValue();\n    }\n  }\n\n  public valueChanged(newValue: string | string[]) {\n    this.isMultiple = Array.isArray(newValue);\n    // By using requestProcessValue we avoid too many\n    // process in case the value changes quickly\n    // This can happen if the value type must be fixed (above)\n    // or if there are several choice registration in a row\n    this.requestProcessValue();\n  }\n\n\n  public applyValueToItems() {\n    this.setRolesAccordingToValueType();\n    const itemsLength = this.items.length;\n    if (this.isMultiple && Array.isArray(this.value)) {\n      for (let index = 0; index < itemsLength; index++) {\n        const item = this.items[index];\n        item.toggleAttribute('checked', this.value.indexOf(item.value) !== -1);\n      }\n    } else if (!this.isMultiple && typeof this.value === 'string') {\n      for (let index = 0; index < itemsLength; index++) {\n        const item = this.items[index];\n        item.toggleAttribute('checked', this.value === item.value);\n      }\n    }\n  }\n\n  public computeValueFromItems() {\n    const itemsLength = this.items.length;\n    const newValue: any[] = [];\n    for (let index = 0; index < itemsLength; index++) {\n      const checked = this.items[index].hasAttribute('checked');\n      if (!checked) {\n        continue;\n      }\n      if (!this.isMultiple) {\n        this.value = this.items[index].value;\n        return;\n      } else {\n        newValue.push(this.items[index].value);\n      }\n    }\n    if (this.isMultiple) {\n      this.value.splice(0, this.value.length);\n      this.value.push(...newValue);\n    } else {\n      this.value = undefined;\n    }\n  }\n\n  private setRolesAccordingToValueType(): void {\n    const role = this.isMultiple ? \"menuitemcheckbox\" : \"menuitemradio\";\n    for (const item of this.items) {\n      item.setAttribute('role', role);\n    }\n  }\n\n}\n","import {FrameworkConfiguration} from 'aurelia-framework';\nimport { PLATFORM } from 'aurelia-pal';\n\nexport function configure(config: FrameworkConfiguration) {\n  config.globalResources([\n    PLATFORM.moduleName('./fast-menu-item-value-attribute'),\n    PLATFORM.moduleName('./fast-menu-value-attribute')\n  ]);\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nexports.push([module.id, \"@import url(https://fonts.googleapis.com/css2?family=Manrope:wght@300&display=swap);\"]);\n// Module\nexports.push([module.id, \"\\n.manrope-300 {\\n  font-family: \\\"Manrope\\\", serif;\\n  font-optical-sizing: auto;\\n  font-weight: 200;\\n  font-style: normal;\\n}\\n\\nbody {\\n  font-family: 'Manrope', sans-serif;\\n  font-size: 16px;\\n}\\n\\n\\nh1, h2, h3, h4, h5, h6 {\\n  font-family: 'Manrope', sans-serif;\\n}\\n\\nh1 {\\n  font-size: 2.5rem;\\n}\\nh2 {\\n  font-size: 2rem;\\n}\\nh3 {\\n  font-size: 1.75rem;\\n}\\nh4 {\\n  font-size: 1.5rem;\\n}\\nh5 {\\n  font-size: 1.25rem;\\n}\\nh6 {\\n  font-size: 1rem;\\n}\\n\\n.light {\\n  font-weight: 200;\\n}\\n\\np {\\n  line-height: 1.5em;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".text-button {\\n  display: grid;\\n  grid-gap: var(--responsive-spacing-unit-lg);\\n  grid-template-columns: 1fr min-content;\\n  align-items: center;\\n}\\n.button-text {\\n  display: grid;\\n  grid-gap: var(--responsive-spacing-unit-lg);\\n  grid-template-columns: min-content 1fr;\\n  align-items: center;\\n}\\n.button-text-button {\\n  display: grid;\\n  grid-gap: var(--responsive-spacing-unit-lg);\\n  grid-template-columns: min-content 1fr min-content;\\n  align-items: center;\\n}\\n.text-hint {\\n  color: var(--neutral-foreground-hint);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n"],"sourceRoot":""}