{ "version": 3, "sources": ["src/@omnial/_models/navigation/menu.model.ts", "src/@omnial/_services/navigation/menu.service.ts"], "sourcesContent": ["import { Slider } from \"../catalog/slider.model\";\r\n\r\nexport class Menu {\r\n id: number;\r\n name: string;\r\n cssClass: string;\r\n items: MenuItem[];\r\n}\r\n\r\nexport class MenuItem {\r\n id: string;\r\n link: string;\r\n name: string;\r\n imageUrl: string;\r\n children: MenuItem[];\r\n isLogo: boolean;\r\n isMega: boolean;\r\n cssClass: string;\r\n parentId: string;\r\n openInNewWindow: boolean;\r\n}\r\n\r\nexport class MenuBanner {\r\n widgetZone: string;\r\n}\r\n", "import { Injectable } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { Menu, MenuItem } from 'src/@omnial/_models/navigation/menu.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { RepositoryStaticService } from '../repository-static.service';\r\nimport { RepositoryService } from '../repository.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n\r\n@Injectable()\r\nexport class MenuService {\r\n public megaMenu: BehaviorSubject = new BehaviorSubject(new Menu());\r\n private $megaMenu: Menu = null;\r\n public menuItem: BehaviorSubject = new BehaviorSubject(null);\r\n private $menuItem: string = null;\r\n private subscriptions: Subscription[] = [];\r\n private useCache = environment.useCache;\r\n\r\n constructor(\r\n private repoService: RepositoryService,\r\n private staticService: RepositoryStaticService,\r\n private location: Location,\r\n private route: ActivatedRoute) {\r\n this.route.fragment.subscribe((fragment: string) => {\r\n if (fragment && fragment === 'CacheBust') {\r\n this.useCache = false;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscriptions && this.subscriptions.length > 0) {\r\n this.subscriptions.forEach((sub) => { sub.unsubscribe(); });\r\n }\r\n }\r\n\r\n public load(init?: Menu, bypassCache?: boolean): void {\r\n if (init && !bypassCache) {\r\n this.$megaMenu = init;\r\n this.megaMenu.next(this.$megaMenu);\r\n return;\r\n }\r\n if (environment.megaMenu) {\r\n if (this.useCache && !bypassCache) {\r\n this.subscriptions.push(this.staticService.get('Menu/Mega').subscribe({\r\n next: (staticRes) => {\r\n this.$megaMenu = staticRes as Menu;\r\n if (!this.$megaMenu) {\r\n this.subscriptions.push(this.repoService.getData('SevenSpikes/MegaMenu').subscribe({\r\n next: (apiRes) => {\r\n this.$megaMenu = apiRes as Menu;\r\n this.megaMenu.next(this.$megaMenu);\r\n }\r\n }));\r\n } else {\r\n this.megaMenu.next(this.$megaMenu);\r\n }\r\n },\r\n error: () => {\r\n this.subscriptions.push(this.repoService.getData('SevenSpikes/MegaMenu').subscribe({\r\n next: (apiRes) => {\r\n this.$megaMenu = apiRes as Menu;\r\n this.megaMenu.next(this.$megaMenu);\r\n }\r\n }));\r\n }\r\n }));\r\n } else {\r\n this.subscriptions.push(this.repoService.getData('SevenSpikes/MegaMenu').subscribe({\r\n next: (apiRes) => {\r\n this.$megaMenu = apiRes as Menu;\r\n this.megaMenu.next(this.$megaMenu);\r\n }\r\n }));\r\n }\r\n }\r\n else {\r\n if (this.useCache && !bypassCache) {\r\n this.subscriptions.push(this.staticService.getById('Menu/Mega', environment.rootCatId).subscribe({\r\n next: (staticRes) => {\r\n this.$megaMenu = staticRes as Menu;\r\n if (!this.$megaMenu) {\r\n this.subscriptions.push(this.repoService.getData(`Menu/Mega`).subscribe({\r\n next: (apiRes) => {\r\n this.$megaMenu = apiRes as Menu;\r\n this.megaMenu.next(this.$megaMenu);\r\n }\r\n }));\r\n } else {\r\n this.megaMenu.next(this.$megaMenu);\r\n }\r\n },\r\n error: () => {\r\n this.subscriptions.push(this.repoService.getData(`Menu/Mega`).subscribe({\r\n next: (apiRes) => {\r\n this.$megaMenu = apiRes as Menu;\r\n this.megaMenu.next(this.$megaMenu);\r\n }\r\n }));\r\n }\r\n }));\r\n } else {\r\n this.subscriptions.push(this.repoService.getData(`Menu/Mega`).subscribe({\r\n next: (apiRes) => {\r\n this.$megaMenu = apiRes as Menu;\r\n this.megaMenu.next(this.$megaMenu);\r\n }\r\n }));\r\n }\r\n }\r\n }\r\n\r\n public expandActiveSubMenu(): void {\r\n this.closeAllSubMenus();\r\n const url = this.location.path();\r\n let routerLink = decodeURIComponent(url);\r\n if (!url || !routerLink || !this.$megaMenu || routerLink === '/') {\r\n return\r\n }\r\n let activeMenuItem = this.$megaMenu.items.find(item => routerLink == item.link);\r\n if (!activeMenuItem) {\r\n activeMenuItem = this.checkMegaChild(routerLink, this.$megaMenu.items);\r\n }\r\n if (activeMenuItem) {\r\n this.openMenuItem(activeMenuItem.id);\r\n } else { // Look up one level in case we are at a Product page\r\n if (this.location.path()) {\r\n const parentArray = this.location.path().split('/');\r\n parentArray.pop();\r\n routerLink = parentArray.join('/');\r\n let activeMenuItem = this.$megaMenu.items.find(item => routerLink == item.link);\r\n if (!activeMenuItem) {\r\n activeMenuItem = this.checkMegaChild(routerLink, this.$megaMenu.items);\r\n }\r\n if (activeMenuItem) {\r\n this.openMenuItem(activeMenuItem.id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private checkMegaChild(routerLink: string, parents: MenuItem[]): MenuItem {\r\n const activeParent = parents.find(item => routerLink.startsWith(item.link));\r\n if (activeParent) {\r\n this.openMenuItem(activeParent.id);\r\n if (activeParent.children) {\r\n const activeMenuItem = activeParent.children.find(item => routerLink === item.link);\r\n if (!activeMenuItem) {\r\n return this.checkMegaChild(routerLink, activeParent.children)\r\n } else {\r\n return activeMenuItem;\r\n }\r\n } else return null;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public openMenuItem(menuId: string): void {\r\n const menuItem = document.getElementById('menu-item-' + menuId);\r\n const subMenu = document.getElementById('sub-menu-' + menuId);\r\n if (subMenu) {\r\n subMenu.classList.add('show');\r\n menuItem.classList.add('expanded');\r\n }\r\n }\r\n\r\n public toggleMenuItem(menuId: string): void {\r\n this.$menuItem = menuId;\r\n const menuItem = document.getElementById('menu-item-' + menuId);\r\n const subMenu = document.getElementById('sub-menu-' + menuId);\r\n if (subMenu) {\r\n if (subMenu.classList.contains('show')) {\r\n subMenu.classList.remove('show');\r\n menuItem.classList.remove('expanded');\r\n this.$menuItem = null;\r\n } else {\r\n subMenu.classList.add('show');\r\n menuItem.classList.add('expanded');\r\n this.menuItem.next(this.$menuItem);\r\n }\r\n }\r\n this.menuItem.next(this.$menuItem);\r\n }\r\n\r\n public closeOtherSubMenus(menu: Array, menuId: string): void {\r\n const currentMenuItem = menu.filter(item => item.id === menuId)[0];\r\n menu.forEach(item => {\r\n if (item && currentMenuItem) {\r\n if ((item.id !== menuId && item.parentId === currentMenuItem.parentId) ||\r\n (currentMenuItem.parentId === 'root' && item.id !== menuId)) {\r\n const subMenu = document.getElementById('sub-menu-' + item.id);\r\n const menuItem = document.getElementById('menu-item-' + item.id);\r\n if (subMenu) {\r\n if (subMenu.classList.contains('show')) {\r\n subMenu.classList.remove('show');\r\n menuItem.classList.remove('expanded');\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n public closeAllSubMenus(): void {\r\n this.$megaMenu?.items.forEach(item => {\r\n const subMenu = document.getElementById('sub-menu-' + item.id);\r\n const menuItem = document.getElementById('menu-item-' + item.id);\r\n if (subMenu) {\r\n if (subMenu.classList.contains('show')) {\r\n subMenu.classList.remove('show');\r\n menuItem.classList.remove('expanded');\r\n }\r\n }\r\n });\r\n }\r\n}\r\n"], "mappings": "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", "names": ["Menu", "MenuService", "constructor", "repoService", "staticService", "location", "route", "megaMenu", "BehaviorSubject", "Menu", "$megaMenu", "menuItem", "$menuItem", "subscriptions", "useCache", "environment", "fragment", "subscribe", "ngOnDestroy", "length", "forEach", "sub", "unsubscribe", "load", "init", "bypassCache", "next", "push", "get", "staticRes", "getData", "apiRes", "error", "getById", "rootCatId", "expandActiveSubMenu", "closeAllSubMenus", "url", "path", "routerLink", "decodeURIComponent", "activeMenuItem", "items", "find", "item", "link", "checkMegaChild", "openMenuItem", "id", "parentArray", "split", "pop", "join", "parents", "activeParent", "startsWith", "children", "menuId", "document", "getElementById", "subMenu", "classList", "add", "toggleMenuItem", "contains", "remove", "closeOtherSubMenus", "menu", "currentMenuItem", "filter", "parentId", "\u0275\u0275inject", "RepositoryService", "RepositoryStaticService", "Location", "ActivatedRoute", "factory", "\u0275fac"] }