{"version":3,"file":"app-7e658b11.8e86b2872260db25.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/components/navigation/navigation.ts"],"sourcesContent":["import { AppContextService } from 'app/services/app-context-service';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport {DeviceService} from 'app/services/device-service';\r\nimport {UserSessionService} from 'app/services/user-session-service';\r\nimport {Router} from 'aurelia-router'; // , NavModel\r\nimport {ProjectDto} from 'app/models/project-dto';\r\nimport {EventAggregator, Subscription} from 'aurelia-event-aggregator';\r\nimport * as settings from 'app-settings.json';\r\nimport {autoinject, bindable} from 'aurelia-framework';\r\nimport {ModalService} from 'app/services/modal-service';\r\nimport {ErrorService} from \"../../services/error-service\";\r\nimport { ProjectRole } from 'app/models/project-role';\r\nimport { ProjectTokenService } from 'app/services/project-token-service';\r\nimport { ApiClient } from 'app/services/api-client';\r\nimport { OrgRole } from 'app/models/org-role';\r\nimport { ProjectTokenInfo } from 'app/models/project-token-info';\r\nimport { OrgTokenInfo } from 'app/models/org-token-info';\r\nimport { OrgTokenService } from 'app/services/org-token-service';\r\nimport { IRouteConfig_Child, RouteConfig_Root } from 'app/aox/RouteTypings_Ajour'; // --RouteSettingAjour, -- MenuAccessLevel, \r\nimport { AccessLevelService } from 'app/services/access-level-service';\r\n\r\n\r\n@autoinject\r\nexport class Navigation {\r\n\t@bindable public router: Router | undefined;\r\n\t@bindable public selectedProject: ProjectDto | undefined = undefined;\r\n\tpublic navCollapsed: boolean = false;\r\n\tpublic showMobileNav: boolean = false;\r\n\tpublic isDesktop: boolean = false;\r\n\tpublic ajourLogo: string = settings.ajour.logoWhiteUrl;\r\n\tpublic egPhone: string = settings.eg.phone;\r\n\tpublic ajourEmail: string = settings.ajour.email;\r\n\tpublic egWebsite: string = settings.eg.website;\r\n\tpublic isProfileMenuOpen: boolean = false;\r\n\tprivate subscriptions: Subscription[] = [];\r\n\t\r\n\tprivate projectTokenInfo:ProjectTokenInfo = {prjId: '00000000-0000-0000-0000-000000000000', prjRole: ProjectRole.Unknown, orgId:'00000000-0000-0000-0000-000000000000', orgRole: OrgRole.Unknown}\r\n\t\r\n\tprivate organizations: {id: string, name: string}[] = [];\r\n\tprivate orgTokenInfo: OrgTokenInfo = {orgId: '00000000-0000-0000-0000-000000000000', orgRole: OrgRole.Unknown};\r\n\tprivate selectedOrg: {id: string, name: string} | undefined;\r\n\r\n\tconstructor(private events: EventAggregator, private appContext: AppContextService, \r\n\t\tprivate i18n: I18N, private modal: ModalService, private userSession: UserSessionService, \r\n\t\tprivate device: DeviceService, private errorService: ErrorService, \r\n\t\tprivate projectTokenService: ProjectTokenService, private orgTokenService: OrgTokenService,\r\n\t\tprivate apiClient: ApiClient) {\t\t\r\n\t}\r\n\r\n\r\n\tactivate() {\r\n\t\tconsole.log('Navigation.activate');\r\n\r\n\t\tif (Boolean(this.routeExistsInNavigationAsChild()) || Boolean(this.router?.currentInstruction.config.nav)) {\r\n\t\t\tthis.setActiveParentOnLoad();\r\n\t\t}\r\n\t}\r\n\r\n\tasync attached() {\r\n\t\tthis.isDesktop = Boolean(this.device.getDeviceType() === 'desktop');\r\n\t\tthis.selectedProject = this.appContext.getSelectedProject();\r\n\t\tconst projectChangedHandler = () => this.handleProjectChangedEvent();\r\n\t\tawait this.getOrganizations();\r\n\t\tif (this.selectedProject == undefined) {\r\n\t\t\tawait this.updateProjectToken(undefined);\r\n\t\t}\r\n\t\tthis.updatePrjTokenInfo();\r\n\t\tthis.updateOrgTokenInfo(false);\r\n\t\tthis.subscriptions = [\r\n\t\t\tthis.events.subscribe(\"project-selector:project-changed\", projectChangedHandler),\r\n\t\t\tthis.events.subscribe(\"router:navigation:processing\", () => this.showMobileNav = false),\r\n\t\t\tthis.events.subscribe(\"overlay:clicked\", () => this.closeNav()),\r\n\t\t\tthis.events.subscribe(\"navigation:update-prj-token\", async () => await this.createAndUpdatePrjToken()),\r\n\t\t\tthis.events.subscribe(\"navigation:update-org-token\", async (orgId: string) => await this.createAndUpdateOrgToken(orgId)),\r\n\t\t\tthis.events.subscribe('project-invitation-accepted', async() => {\r\n\t\t\t\tawait this.getOrganizations();\r\n\t\t\t\tthis.updateOrgTokenInfo(false)\r\n\t\t\t})\r\n\t\t];\r\n\t}\r\n\tasync getOrganizations(): Promise {\r\n\t\tthis.organizations = await this.apiClient.global.get(\"UserInfo/GetUserOrganizations\").jsonResult();\r\n\t\tif (this.organizations.length == 1) {\r\n\t\t\tawait this.orgTokenService.createNewOrgToken(this.organizations[0].id, this.apiClient);\r\n\t\t}\r\n\t}\r\n\r\n\tdeactivate() {\r\n\t\tthis.subscriptions.forEach(subscription => (\r\n\t\t\tsubscription.dispose()\r\n\t\t));\r\n\t}\r\n\r\n\tisItemEmpty(item: any): boolean {\r\n\t\treturn Object.keys(item).length === 0;\r\n\t}\r\n\r\n\tasync selectedProjectChanged(prj: ProjectDto | undefined): Promise {\r\n\t\tawait this.updateProjectToken(prj?.id);\r\n\t}\r\n\r\n\tasync updateProjectToken(projectId: string | undefined): Promise {\r\n\t\tif (await this.projectTokenService.updatePrjTokenIfNeeded(projectId, this.apiClient)) {\r\n\t\t\tthis.updatePrjTokenInfo();\r\n\t\t}\r\n\t}\r\n\tasync createAndUpdatePrjToken(): Promise {\r\n\t\tlet projectId: string | undefined = this.appContext.getSelectedProject()?.id;\r\n\t\tif (projectId) {\r\n\t\t\tif (await this.projectTokenService.createNewProjectToken(projectId, this.apiClient)) {\r\n\t\t\t\tthis.updatePrjTokenInfo();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdatePrjTokenInfo(): void {\r\n\t\tlet prjTokenInfo: ProjectTokenInfo = this.projectTokenService.getPrjTokenInfo();\r\n\t\tthis.projectTokenInfo = prjTokenInfo;\r\n\t\tconsole.log(\"prjTokenInfo \" , this.projectTokenInfo);\r\n\t}\r\n\r\n\tasync createAndUpdateOrgToken(orgId: string): Promise {\r\n\t\tif (await this.orgTokenService.createNewOrgToken(orgId,this.apiClient)) {\r\n\t\t\tthis.updateOrgTokenInfo(true);\r\n\t\t}\r\n\t}\r\n\r\n\tupdateOrgTokenInfo(shouldSentEvent: boolean): void {\r\n\t\tlet orgTokenInfo: OrgTokenInfo = this.orgTokenService.getOrgTokenInfo();\r\n\t\tthis.orgTokenInfo = orgTokenInfo;\r\n\t\tthis.selectedOrg = this.organizations.find(org => org.id == orgTokenInfo.orgId);\r\n\t\tconsole.log(\"orgTokenInfo \" , this.orgTokenInfo);\r\n\t\tif (shouldSentEvent) {\r\n\t\t\tthis.events.publish(\"global:org-changed\");\r\n\t\t}\r\n\t}\r\n\r\n\tpublic hasAccess(route:IRouteConfig_Child | RouteConfig_Root, projectTokenInfo: ProjectTokenInfo, orgTokenInfo: OrgTokenInfo): boolean {\r\n\t\t//projectTokenInfo and orgTokenInfo parameter is a hack to reevaluate function whenever project or org has changed.\r\n\t\treturn AccessLevelService.hasAccess(this.appContext, route, projectTokenInfo, orgTokenInfo);\r\n\t\t\r\n\t}\r\n\t\r\n\tprivate routeExistsInNavigationAsChild(): Boolean {\r\n\t\tconst navChildren: any[] = [];\r\n\r\n\t\tthis.router?.navigation.forEach((section: any) => {\r\n\t\t\tsection.settings.children.forEach((children: any) => {\r\n\t\t\t\tnavChildren.push(children);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn Boolean(navChildren.some(child => child.title === this.router?.currentInstruction.config.title));\r\n\t}\r\n\r\n\tpublic toggleNav() { //For opening and closing menu.\r\n\t\tconsole.log('Navigation.toggleNav');\r\n\r\n\t\tif (!this.isDesktop) {\r\n\t\t\t//Not Desktop\r\n\t\t\tthis.showMobileNav = !this.showMobileNav;\r\n\t\t\tthis.events.publish(\"show-overlay\", !this.showMobileNav ? false : true);\r\n\t\t} else {\r\n\t\t\t//Desktop\r\n\t\t\tthis.navCollapsed = !this.navCollapsed;\r\n\t\t\tthis.events.publish(\"nav-collapsed\", this.navCollapsed);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic closeNav() {\r\n\t\tconsole.log('Navigation.closeNav');\r\n\r\n\t\tif (!this.isDesktop) {\r\n\t\t\tthis.showMobileNav = false;\r\n\t\t\tthis.events.publish(\"show-overlay\", false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic toggleSubMenu(event: any) {//Handle opening and closing of menu items\r\n\t\tconsole.log('Navigation.toggleSubMenu');\r\n\r\n\t\tlet navListItems = document.querySelectorAll('.nav-list__item');\r\n\t\tlet target = event.target.closest('.nav-list__item');\r\n\r\n\t\tif (target.classList.contains('expanded')) {\r\n\t\t\ttarget.classList.remove('expanded');\r\n\t\t} else {\r\n\t\t\tnavListItems.forEach((item) => {//Closes currently opened sub-menus\r\n\t\t\t\titem.classList.remove('expanded');\r\n\t\t\t});\r\n\t\t\ttarget.classList.add('expanded');\r\n\t\t}\r\n\t}\r\n\r\n\tpublic toggleSubSubMenu(event: any) {\r\n\t\tconsole.log('toggleSubSubMenu', event);\r\n\t\tlet navListItems = document.querySelectorAll('.sub-menu-list__sub-list');\r\n\t\tlet target = event.target.closest('.sub-menu-list__sub-list');\r\n\r\n\t\tif (target.classList.contains('expanded')) {\r\n\t\t\ttarget.classList.remove('expanded');\r\n\t\t} else {\r\n\t\t\tnavListItems.forEach((item) => { //Closes currently opened sub-sub-menus\r\n\t\t\t\titem.classList.remove('expanded');\r\n\t\t\t});\r\n\t\t\ttarget.classList.add('expanded');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setActiveParentOnLoad() {\r\n\t\tconsole.log('Navigation.setActiveParentOnLoad');\r\n\t\tdocument.querySelector('.nav-link.active')?.parentElement?.parentElement?.parentElement?.classList.add('active');\r\n\t\tdocument.querySelector('.nav-link.active')?.parentElement?.parentElement?.parentElement?.classList.add('expanded');\r\n\t\tconsole.log('CQS2');\r\n\t}\r\n\r\n\tpublic handleNavigateEventForSubItem(baseUrl: string, href: string, event: any) { \r\n\t\tconsole.log('Navigation.handleNavigateEventForSubItem');\r\n\t\t// console.log(href.substring(0, 7));\r\n\t\tlet sub = href.substring(0, Navigation.PROJECT_PART.length);\r\n\t\tif (this.handleNoSelectedProject(sub, href)) {//in-handleNavigateEventForSubSubItem\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet parent: HTMLElement = event.target.parentElement.parentElement.parentElement;\r\n\t\tthis.closeSubNavList();\r\n\t\t\r\n\t\tif (parent.classList.contains('active') === false) {\r\n\t\t\tthis.highlightParent(parent);\r\n\t\t}\r\n\t\tthis.navigateToRoute(sub, baseUrl, href);\r\n\t}\r\n\r\n\tpublic handleNavigateEventForSubSubItem(baseUrl: string, href: string, event: any) {\r\n\t\tconsole.log('handleNavigateEventForSubSubItem, baseUrl:', baseUrl, 'href:', href, 'event:', event);\r\n\t\t// console.log(href.substring(0, 7));\r\n\t\tlet sub = href.substring(0, Navigation.PROJECT_PART.length); //7);\r\n\t\tif (this.handleNoSelectedProject(sub, href)) {//in-handleNavigateEventForSubSubItem\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet parent: HTMLElement = event.target.parentElement.parentElement;\r\n\t\tthis.closeSubNavList();\r\n\t\t\r\n\t\tthis.highlightParent(parent);\r\n\t\tthis.handleParentsParent(parent);\r\n\r\n\t\tthis.navigateToRoute(sub, baseUrl, href);\r\n\t}\r\n\r\n\tpublic static PROJECT_PART = 'project';\r\n\r\n\thandleNoSelectedProject(sub: string, href: string) {\r\n\t\tconsole.log('Navigation.handleNoSelectedProject');\r\n\r\n\t\tif (sub === Navigation.PROJECT_PART && !Boolean(this.appContext.projectId) && href !== \"project/overview\") {\r\n\t\t\tthis.errorService.noProjectSelected();//in-handleNoSelectedProject\r\n\t\t\tthis.appContext.setExpectedRoute(href);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\thandleParentsParent(parent: HTMLElement) {\r\n\t\tconsole.log('Navigation.handleParentsParent');\r\n\t\tparent.parentElement?.parentElement?.parentElement?.classList.add('active');\r\n\t\tparent.parentElement?.parentElement?.parentElement?.classList.add('expanded');\r\n\t}\r\n\r\n\tcloseSubNavList() {\r\n\t\tconsole.log('Navigation.closeSubNavList');\r\n\t\tlet subNavList = document.querySelectorAll('.sub-menu-list__sub-list');\r\n\t\tsubNavList.forEach((item) => {\r\n\t\t\titem.classList.remove('active');\r\n\t\t\titem.classList.remove('expanded');\r\n\t\t});\r\n\t}\r\n\r\n\thighlightParent(parent: HTMLElement) {\r\n\t\tconsole.log('Navigation.highlightParent');\r\n\t\tdocument.querySelectorAll('.nav-list__item').forEach((item) => {\r\n\t\t\titem.classList.remove('active');\r\n\t\t\titem.classList.remove('expanded');\r\n\t\t});\r\n\t\tparent.classList.add('active');\r\n\t\tparent.classList.add('expanded');\r\n\t}\r\n\t\r\n\tnavigateToRoute(sub: string, baseUrl: string, href: string) {\r\n\t\tconsole.log('Navigation.navigateToRoute');\r\n\t\t/* JG: Beware that this kludge requires views to have this project-bla-bla prefix to work correctly,\r\n\t\tin order to get this 'support'/helping-hand. */\r\n\t\tif (sub === \"project\" && href !== \"project/overview\") {\r\n\t\t\t// JG: Hvad er det for en masse underlige hardcodede 7 og 8 taller..?\r\n\t\t\t//let url = '#' + baseUrl + sub + \"/\" + this.appContext.projectId + \"/\" + href.substring(8);\r\n\t\t\tlet newroute = `#${baseUrl}${sub}/${this.prjId()}/${href.substring(8)}`;\r\n\t\t\tconsole.log('navigateToRoute, project newroute:', newroute);\r\n\t\t\tthis.router?.navigate(newroute);\r\n\t\t} else {\r\n\t\t\tthis.router?.navigate('#' + baseUrl + href);\r\n\t\t}\r\n\t}\r\n\r\n\t// public toggleProjectSelector(element: HTMLElement) {\r\n\t// \tthis.events.publish(\"project-selector:toggle\");\r\n\t// \tthis.removeHoverEffect(element);\r\n\t// }\r\n\r\n\t//Minor hack removing hover effect from nav-list__item\r\n\tpublic removeHoverEffect(element: HTMLElement): void {\r\n\t\tlet parent: HTMLElement | null | undefined = element?.parentElement?.parentElement?.parentElement?.parentElement;\r\n\t\tif (parent) {\r\n\t\t\tparent.classList.add('noHover');\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tparent?.classList.remove('noHover');\r\n\t\t\t}, 0);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic toggleProfileMenu() {\r\n\t\tconsole.log('Navigation.toggleProfileMenu');\r\n\t\t\r\n\t\tthis.isProfileMenuOpen = !this.isProfileMenuOpen;\r\n\t}\r\n\r\n\tpublic signOut() {\r\n\t\tconsole.log('Navigation.signOut');\r\n\t\t\r\n\t\tthis.appContext.switchProjectLogic(\"\", 'signout,new-nav');\r\n\t\tthis.userSession.logOut();\r\n\t}\r\n\r\n\tpublic openNotifications() {\r\n\t\tconsole.log('Navigation.openNotifications');\r\n\t\t\r\n\t\tthis.events.publish(\"notification-center:toggle\");\r\n\t}\r\n\r\n\tprivate handleProjectChangedEvent() {\t\t\r\n\t\t// typically triggered by project-selector.selectProject().\r\n\t\tthis.selectedProject = this.appContext.getSelectedProject();\r\n\t\tconsole.log('handleProjectChangedEvent', this.selectedProject?.name);\r\n\r\n\t\tif (Boolean(this.appContext.expectedRoute)) {\r\n\t\t\tlet sub: string | undefined = this.appContext.expectedRoute?.substring(0, Navigation.PROJECT_PART.length); //7);\r\n\r\n\t\t\tif (sub === \"project\" && this.appContext.expectedRoute !== \"project/overview\") {\r\n\t\t\t\t//let url = '#' + this.router.baseUrl + sub + \"/\" + this.appContext.projectId + \"/\" + this.appContext.expectedRoute.substring(8);\r\n\t\t\t\tlet newroute = `#${this.router?.baseUrl}${sub}/${this.prjId()}/${this.appContext.expectedRoute?.substring(8)}`; // this.appContext.projectId\r\n\t\t\t\tconsole.log('handleProjectChangedEvent, project newroute:', newroute);\r\n\t\t\t\tthis.router?.navigate(newroute);\r\n\t\t\t} else {\r\n\t\t\t\tthis.router?.navigate('#' + this.router.baseUrl + this.appContext.expectedRoute);\r\n\t\t\t}\r\n\r\n\t\t\tthis.appContext.expectedRoute = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Temporary fix for updating view data when project changes\r\n\t\tlet instruction: any = this.router?.currentInstruction.config.name;\r\n\t\tlet subroutes: any = { // maps instructions to subroutes.\r\n\t\t 'project-building-parts': \t\t\t\t'building-parts',\r\n\t\t 'project/materials': \t\t\t\t'materials',\r\n\t\t 'project/parameters': \t\t\t\t'parameters',\r\n \t\t 'project/parameters/bulk-parameters': \t'bulk-parameters',\r\n\t\t 'project/manual-entry': \t\t\t\t'manual-entry',\r\n\t\t 'project/ifc-import': \t\t\t\t'ifc-import', // JG: the left part, the 'instruction', seems to be the HREF in aox.ts?\r\n\t\t 'project/ifc-fun': \t\t\t\t 'ifc-fun', // JG: the left part, the 'instruction', seems to be the HREF in aox.ts?\r\n\t\t 'project/openbim-testbed': \t\t\t'openbim-testbed', // JG: the left part, the 'instruction', seems to be the HREF in aox.ts?\r\n\t\t 'project/value-lists': \t\t\t\t'value-lists',\r\n\t\t 'project/categories': \t\t\t\t'categories',\r\n\t\t 'project/summing': \t\t\t\t'summing',\r\n\t\t 'project-whitelist': \t\t\t\t'whitelist',\r\n\t\t 'project/changelog': \t\t\t\t'changelog',\r\n\t\t 'lca-export': \t\t\t\t'lcabyg/export',\r\n\t\t 'project/model-revision': \t\t\t\t'model-revision',\t\t\r\n\t\t 'project/work-area': \t\t\t\t'work-area',\r\n\t\t 'project/tender-list': \t\t\t\t'tender-list', // YES same subroute twice!\r\n\t\t 'project/tender-settings': \t\t\t\t'tender-list', // YES same subroute twice!\r\n\t\t 'project/quantity-views': \t\t\t\t'quantity-views',\r\n\t\t 'project/quantity-filters':\t\t\t\t'quantity-filters', // den siger den ikke kan finde denne?\r\n\t\t 'project/quantity-grid': \t\t\t\t'quantity-grid',\r\n\t\t 'project/pivot-grid': \t\t\t\t'pivot-grid',\r\n\t\t 'project/quantity-takeoff': \t\t\t\t'quantity-takeoff',\r\n\t\t 'project/test-model-revision': \t\t\t'test-model-revision',\r\n\t\t 'project/dashboard': \t\t\t\t\t\t'dashboard'\r\n\t\t}\r\n\t\tlet subroute:string = subroutes[instruction];\r\n\t\tif (subroute) {\r\n\t\t\tlet newroute = `project/${this.prjId()}/${subroute}/`;\r\n\t\t\tconsole.log('handleProjectChangedEvent, newroute:', newroute);\r\n\t\t\tthis.router?.navigate(newroute);\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\thasProjectId(): boolean | string {\r\n\t\tlet prjId = this.appContext.projectId;\r\n\t\treturn prjId && (prjId != AppContextService.NO_PROJECT);\r\n\t}\r\n\r\n\tprjId():string { \r\n\t\tlet prjId = this.appContext.projectId;\r\n\t\t//console.trace('prjId!', this.appContext.projectId, typeof(this.appContext.projectId));\r\n\t\tif (prjId) {\r\n\t\t\treturn prjId;\r\n\t\t} else {\r\n\t\t\treturn AppContextService.NO_PROJECT;\r\n\t\t}\r\n\t}\r\n\t\r\n\t//prjId_old() { return this.appContext.projectId; }\r\n\r\n\tgoToProjectOverview(event: Event): boolean {\r\n\t\tevent.stopPropagation();\r\n\t\tthis.router?.navigateToRoute(\"project/overview\");\r\n\t\treturn true;\r\n\t}\r\n\t\r\n\t// changeTheme(): void {\r\n\t// \tif (document.body.classList.contains(\"theme-eg\")) {\r\n\t// \t\tdocument.body.classList.add(\"theme-ajour\");\r\n\t// \t\tdocument.body.classList.remove(\"theme-eg\");\r\n\t// \t} else {\r\n\t// \t\tdocument.body.classList.add(\"theme-eg\");\r\n\t// \t\tdocument.body.classList.remove(\"theme-ajour\");\r\n\r\n\t// \t}\r\n\t// }\r\n\r\n\tasync selectOrg(org: {id: string, name: string}): Promise {\r\n\t\tlet updated = await this.orgTokenService.updateOrgTokenIfNeeded(org.id,this.apiClient);\r\n\t\tif (updated) {\r\n\t\t\tthis.updateOrgTokenInfo(true);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n\r\n\r\n\r\n"],"names":["Navigation","constructor","events","appContext","i18n","modal","userSession","device","errorService","projectTokenService","orgTokenService","apiClient","selectedProject","undefined","navCollapsed","showMobileNav","isDesktop","ajourLogo","egPhone","ajourEmail","egWebsite","isProfileMenuOpen","subscriptions","projectTokenInfo","prjId","prjRole","orgId","orgRole","organizations","orgTokenInfo","activate","console","log","Boolean","this","routeExistsInNavigationAsChild","router","currentInstruction","config","nav","setActiveParentOnLoad","async","getDeviceType","getSelectedProject","getOrganizations","updateProjectToken","updatePrjTokenInfo","updateOrgTokenInfo","subscribe","handleProjectChangedEvent","closeNav","createAndUpdatePrjToken","createAndUpdateOrgToken","global","get","jsonResult","length","createNewOrgToken","id","deactivate","forEach","subscription","dispose","isItemEmpty","item","Object","keys","prj","projectId","updatePrjTokenIfNeeded","createNewProjectToken","prjTokenInfo","getPrjTokenInfo","shouldSentEvent","getOrgTokenInfo","selectedOrg","find","org","publish","hasAccess","route","navChildren","navigation","section","settings","children","push","some","child","title","toggleNav","toggleSubMenu","event","navListItems","document","querySelectorAll","target","closest","classList","contains","remove","add","toggleSubSubMenu","querySelector","parentElement","handleNavigateEventForSubItem","baseUrl","href","sub","substring","PROJECT_PART","handleNoSelectedProject","parent","closeSubNavList","highlightParent","navigateToRoute","handleNavigateEventForSubSubItem","handleParentsParent","noProjectSelected","setExpectedRoute","newroute","navigate","removeHoverEffect","element","setTimeout","toggleProfileMenu","signOut","switchProjectLogic","logOut","openNotifications","name","expectedRoute","subroute","hasProjectId","goToProjectOverview","stopPropagation","updateOrgTokenIfNeeded","bindable","autoinject","I18N"],"sourceRoot":""}