@bimplus/navigation 0.0.238 → 0.0.239-angular22-1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"bimplus-navigation.mjs","sources":["../../../../projects/@bimplus/navigation/src/lib/navigation.service.ts","../../../../projects/@bimplus/navigation/src/lib/navigation.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.ts","../../../../projects/@bimplus/navigation/src/lib/utils/utils.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-contact/bimplus-contact.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-contact/bimplus-contact.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-navbar/logo-state.enum.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-navbar/bimplus-navbar.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-navbar/bimplus-navbar.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-notify/bimplus-notify.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-notify/bimplus-notify.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-upgrade-link/bimplus-upgrade-link.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-upgrade-link/bimplus-upgrade-link.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-zoom/bimplus-zoom.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-zoom/bimplus-zoom.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/services/language-strings.service.ts","../../../../projects/@bimplus/navigation/src/public-api.ts","../../../../projects/@bimplus/navigation/src/bimplus-navigation.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NavigationService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-navigation',\r\n imports: [],\r\n template: `\r\n <p>\r\n navigation works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class NavigationComponent {\r\n\r\n}\r\n","\r\nimport { Component, ViewEncapsulation, Input, signal, WritableSignal, inject } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { LocalizedStrings } from './../../types/types'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-localized-widget',\r\n imports: [TranslateModule],\r\n providers: [TranslateService],\r\n template: `\r\n <p>\r\n localized widget works!\r\n </p>\r\n `,\r\n styles: [],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLocalizedWidgetComponent {\r\n translateService = inject(TranslateService);\r\n\r\n\r\n _selectedLanguage: WritableSignal<string> = signal('en');\r\n get selectedLanguage(): string {\r\n return this._selectedLanguage();\r\n }\r\n @Input() set selectedLanguage(value: string) {\r\n this._selectedLanguage.set(value);\r\n this.translateService.use(value);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, this._localizedStrings());\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n _localizedStrings: WritableSignal<LocalizedStrings> = signal({} as LocalizedStrings);\r\n get localizedStrings(): LocalizedStrings {\r\n return this._localizedStrings();\r\n }\r\n @Input() set localizedStrings(value: LocalizedStrings) {\r\n this._localizedStrings.set(value);\r\n this.translateService.use(this.selectedLanguage);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, value);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","// Define the type of the window.BimPlus object\r\nexport interface BimPlusObject {\r\n [key: string]: (dataDetail: { detail: unknown }) => void;\r\n}\r\nexport interface Source {\r\n[key: string]: { emit: (arg0: unknown) => void; };\r\n}\r\n\r\n\r\n/**--------------------------------------------------------------------------\r\n* fire event from component in two ways : \r\n- fire custom event from component in standard recommended way via. this.eventName.emit function\r\n\r\n- call window.BimPlus.eventName function directly on window object (eventName is name\r\n of the event we want to fire e.g. bimplusNavbarClicked so it will be window.BimPlus.bimplusNavbarClicked).\r\n Function must be defined in app. where we are using our components.\r\n This was implemented because MS Edge browser has problems with custom events and in some \r\n situations(e.g. after file download) it stops handling custom events.\r\n Disadvantage is that we can have only one event handler which is shared between the multiple components.\r\n--------------------------------------------------------------------------*/\r\nexport function fireEvent(source: unknown, eventName: string, data: unknown = null){\r\n if ( !eventName ) {\r\n console.error(\"ERROR: Missing event name in fireEvent function in Bimplus components!\");\r\n return;\r\n }\r\n // Check if eventName exists on window.BimPlus and if it's a function\r\n const bimPlus = ('BimPlus' in window) && typeof window.BimPlus === 'object' && (window.BimPlus as BimPlusObject);\r\n if (bimPlus && typeof bimPlus[eventName] === 'function') {\r\n bimPlus[eventName]({detail: data});\r\n }\r\n\r\n const _source = (source as Source);\r\n if (eventName in _source) {\r\n _source[eventName].emit(data);\r\n }\r\n}","\r\nimport { Component, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../../components/bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-contact',\r\n imports: [TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-contact.component.html',\r\n styleUrl: './bimplus-contact.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusContactComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(){\r\n super();\r\n }\r\n \r\n @Output() bimplusContactClicked = new EventEmitter<string>();\r\n\r\n _contactClicked(){\r\n fireEvent(this, \"bimplusContactClicked\", \"contact\");\r\n }\r\n}\r\n","<a\r\n href=\"https://connect.allplan.com/support/contact.ct?SSO=1&autolang\"\r\n class=\"bimplus-contact-link\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n (click)=\"_contactClicked()\"\r\n [title]=\"'_BimplusContactTitle' | translate\"\r\n>\r\n <div class=\"bimplus-contact\"></div>\r\n</a>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-language-menu',\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-language-menu.component.html',\r\n styleUrl: './bimplus-language-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLanguageMenuComponent {\r\n\r\n _languagesList = [\r\n { symbol: \"cs\", text: \"Čeština\"},\r\n { symbol: \"de\", text: \"Deutsch\"},\r\n { symbol: \"en\", text: \"English (UK)\"},\r\n { symbol: \"us\", text: \"English (US)\"},\r\n { symbol: \"es\", text: \"Español\"},\r\n { symbol: \"fr\", text: \"Français\"},\r\n { symbol: \"it\", text: \"Italiano\"},\r\n { symbol: \"ru\", text: \"Русский\"},\r\n { symbol: \"ro\", text: \"Romana\"},\r\n { symbol: \"tr\", text: \"Türkçe\"}\r\n ];\r\n\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Input({ transform: booleanAttribute }) expandUp : boolean = false;\r\n _menuOpened : boolean = false;\r\n\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n _switchLanguage( language: string ){\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n</div>\r\n<div data-test=\"language-menu-dropdown\"\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\" [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\" >\r\n <div class='main-icon icon-languages'></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n\r\n <ul class= \"bimcomp-dropdown-menu\" [ngClass]=\"{'open':_menuOpened, 'expand-up':expandUp }\">\r\n @for (languageItem of _languagesList; track languageItem) {\r\n <li [attr.data-test]=\"'langmenu_item_' + languageItem.text\"\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"selectedLanguage === languageItem.symbol ? 'selected' : ''\"\r\n (click)=\"_switchLanguage(languageItem.symbol)\"\r\n (keypress)=\"_switchLanguage(languageItem.symbol)\"\r\n >\r\n <span>{{languageItem.text}}</span>\r\n </li>\r\n }\r\n </ul>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, booleanAttribute } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { MenuListType } from '../../types/types';\r\n\r\nexport interface BimplusProjectMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-project-menu',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-project-menu.component.html',\r\n styleUrl: './bimplus-project-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusProjectMenuComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(){\r\n super()\r\n }\r\n\r\n @Input() projectName: string = \"\";\r\n @Input() projectImageUrl: string = \"\";\r\n @Input() projectExplorerUrl: string = \"\";\r\n @Input() projectActiveItem: string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute }) projectmembersVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible: boolean = true;\r\n\r\n @Input({ transform: booleanAttribute }) isCollapsed: boolean = false;\r\n @Input({ transform: booleanAttribute }) isMiniMode: boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch: boolean = false;\r\n @Input({ transform: booleanAttribute }) hideMenuIcons: boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons: boolean = false;\r\n @Input() menuItemsOrder : string[] = [];\r\n @Input({ transform: booleanAttribute }) showCoworkBackups: boolean = false;\r\n\r\n get prjImgUrl() {\r\n return this.projectImageUrl ? this.projectImageUrl : \"./assets/@bimplus/navigation/assets/bimplus_Components_Project_Pic_Default.webp\";\r\n }\r\n get backgroundValue() {\r\n return `linear-gradient(rgba(245, 245, 245, 0.8),rgba(245, 245, 245, 0.5) 25%, 75%, rgba(245, 245, 245, 0.8)), url(${this.projectImageUrl ? this.projectImageUrl : './assets/@bimplus/navigation/assets/bimplus_Components_Project_Pic_Default.webp'})`;\r\n }\r\n\r\n get prjImageOverlayStyle() {\r\n return { 'background': `${this.backgroundValue}` };\r\n }\r\n\r\n get prjImageStyle() {\r\n return { 'background': `url(${this.prjImgUrl})` };\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n * and also it serves as info topic id\r\n --------------------------------------------------------------------------*/\r\n _menuPrjList: MenuListType[] = [\r\n { action: \"projectmembers\", id: \"portalBimUsers\", type: \"\", class: \"bim-pm-icon-users\", textId: \"_Project_members_tooltip\", textIdDisabled: \"_Insufficient rights title\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"models\", id: \"portalBimModels\", type: \"\", class: \"bim-pm-icon-models\", textId: \"_Models_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"documents\", id: \"portalBimDocuments\", type: \"\", class: \"bim-pm-icon-documents\", textId: \"_Documents_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"projectsettings\", id: \"portalBimProjectSettings\", type: \"\", class: \"bim-pm-icon-project-settings\", textId: \"_Project_settings_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"processes\", id: \"portalBimProcesses\", type: \"\", class: \"bim-pm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" }\r\n ];\r\n\r\n get menuItems() : MenuListType[] {\r\n const items = this._menuPrjList.sort((a, b) => this.menuItemsOrder.indexOf(a.id) - this.menuItemsOrder.indexOf(b.id));\r\n \r\n const docs = items.find(item => item.id === \"portalBimDocuments\");\r\n if(docs) {\r\n docs.textId = this.showCoworkBackups ? \"_Backups_Tooltip\" : \"_Documents_tooltip\";\r\n }\r\n\r\n return items;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuListType): boolean {\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n\r\n return !((this as unknown as BimplusProjectMenuComponentAttribute)[key]);\r\n }\r\n return false;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item: MenuListType): boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Disabled`;\r\n return !!(this as unknown as BimplusProjectMenuComponentAttribute)[key];\r\n }\r\n return false;\r\n }\r\n\r\n\r\n _projectMenuItemClicked(action: string, param: string) {\r\n console.log(action, param);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n* item clicked\r\n--------------------------------------------------------------------------*/\r\n _menuItemClicked(item: MenuListType, type: string, event: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n console.log(item, type, event);\r\n\r\n\r\n if (type != \"info\") {\r\n if (this._isDisabled(item)) {\r\n return;\r\n }\r\n }\r\n const action = item.action;\r\n fireEvent(this, \"bimplusProjectMenuClicked\", { action, type });\r\n }\r\n\r\n _menuItemIgnoreAction(event: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n _getPrjItemClassAttributes(item: MenuListType, isTouch: boolean) {\r\n const retval: string = `${this._isDisabled(item) ? 'disabled' : ''} ${isTouch ? '' : 'hover-show-info'}`;\r\n return retval;\r\n }\r\n\r\n _getPrjIconClassAttributes(item: MenuListType) {\r\n const retval: string = `${item.class} ${item.action === this.projectActiveItem ? 'active' : ''} ${this._isDisabled(item) ? 'disabled' : ''}`;\r\n return retval;\r\n }\r\n}\r\n","<ng-template #navigationPrjList>\r\n@for(item of menuItems; track item.id){\r\n @if (!_isHidden(item)){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\"\r\n (click)=\"_menuItemClicked(item, 'normal',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'normal',$event)\"\r\n >\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'info',$event)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<ng-template #navigationPrjListThumbnail>\r\n@for(item of menuItems; track item.id){\r\n @if (!_isHidden(item) && (isCollapsed || item.action !== 'processes' )){\r\n <!--* navigationPrjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\"\r\n (click)=\"_menuItemClicked(item, 'normal',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'normal',$event)\"\r\n >\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'info',$event)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<div class=\"bim-pm-prj-container\"\r\n [ngClass]=\"{ collapsed: isCollapsed, 'mini-mode': isMiniMode, 'is-touch': isTouch }\"\r\n >\r\n @if (isMiniMode && !isCollapsed) {\r\n <div class=\"bim-pm-prj-details-mini\">\r\n <div class=\"bim-pm-prj-image-bkg-mini\"\r\n [ngStyle]=\"prjImageOverlayStyle\">\r\n <div class=\"bim-pm-prj-image-thumbnail\" [ngStyle]=\"prjImageStyle\"></div>\r\n </div>\r\n <div class=\"bim-pm-prj-name-mini\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass]=\"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"navigationPrjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n <a href={{projectExplorerUrl}} class=\"bim-pm-prj-details\"\r\n [ngStyle]=\"prjImageOverlayStyle\"\r\n (dblclick)=\"_projectMenuItemClicked('prjimagedblclick','normal')\"\r\n (click)=\"_projectMenuItemClicked('prjimageclick','normal')\"\r\n [title]=\"'_ModelThumbnailTooltip' | translate\">\r\n\r\n <div class=\"bim-pm-prj-image\" [ngStyle]=\"prjImageStyle\">\r\n <div class=\"bim-pm-prj-items-overlay\" [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\">\r\n </div>\r\n <div\r\n class=\"bim-pm-prj-items-list\"\r\n [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\"\r\n >\r\n @if (!hideMenuIcons && !showHorizontalMenuIcons){\r\n <ng-container *ngTemplateOutlet=\"navigationPrjListThumbnail\">\r\n </ng-container>\r\n }\r\n </div>\r\n <div class=\"bim-pm-prj-name\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass] = \"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"navigationPrjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusProjectMenuComponent} from './../bimplus-project-menu/bimplus-project-menu.component';\r\nimport {BimplusLocalizedWidgetComponent} from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {MenuListType} from '../../types/types';\r\n\r\nconst MenuListTypeId = {\r\n PORTAL_TEAM_MANAGEMENT_BTN: 'portalTeamManagementBtn',\r\n PORTAL_PROPERTY_MANAGER_BTN: 'portalPropertyManagerBtn',\r\n PORTAL_BIM_USERS: 'portalBimUsers',\r\n PORTAL_BIM_MODELS: 'portalBimModels',\r\n PORTAL_BIM_DOCUMENTS: 'portalBimDocuments',\r\n PORTAL_BIM_PROJECT_SETTINGS: 'portalBimProjectSettings',\r\n PORTAL_BIM_PROCESSES: 'portalBimProcesses',\r\n DIVIDER_PROJECT_MANAGEMENT: 'dividerprojectmanagement',\r\n PORTAL_BIM_VIEWER_BTN: 'portalBimViewerBtn',\r\n PORTAL_CLOUD_VIEWER_BTN: 'portalCloudViewerBtn',\r\n PORTAL_CONNEXIS_BTN: 'portalConnexisBtn',\r\n PORTAL_BIM_AUTOCONVERTER_BTN: 'portalBimAutoconverterBtn',\r\n DIVIDERAPPS: 'dividerapps',\r\n PORTAL_ADD_INS_BTN: 'portalAddInsBtn',\r\n PORTAL_SHOP_BTN: 'portalShopBtn',\r\n PORTAL_GET_YOUR_TEAM_BTN: 'portalGetYourTeamBtn',\r\n PORTAL_TRY_BIMPLUS_PRO_BTN: 'portalTryBimplusProBtn',\r\n} as const;\r\n\r\nexport interface BimplusMainMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-main-menu',\r\n imports: [CommonModule, TranslateModule, BimplusProjectMenuComponent],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-main-menu.component.html',\r\n styleUrl: './bimplus-main-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges {\r\n constructor(){\r\n super();\r\n }\r\n\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isIpadApp : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input({ transform: booleanAttribute }) hideProjectMenuIcons : boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons : boolean = false;\r\n @Input() projectName : string = \"\";\r\n @Input() projectImageUrl : string = \"\";\r\n @Input() projectExplorerUrl : string = \"\";\r\n @Input() projectActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled : boolean = false;\r\n @Input() footerActiveItem : string = \"\";\r\n @Input() menuActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) isCollapsed : boolean = false;\r\n @Input({ transform: booleanAttribute }) showOverlay : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) autoconverterSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) bimexplorerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) autoconverterDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) shopDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) addinsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimplusProjectMenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectmembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimexplorerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) autoconverterVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) teammembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) propertymanagerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) shopVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) addinsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerprojectmanagementVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerappsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) getYourTeamVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) tryBimplusProVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) cloudviewerVisible : boolean = true;\r\n @Input() appsWithInfo : string[] = [];\r\n @Input() appsOrder : string[] = [];\r\n @Input() menuItemsOrder : string[] = [];\r\n @Input({ transform: booleanAttribute }) showCoworkBackups: boolean = false;\r\n\r\n @Output() bimplusMainMenuClicked = new EventEmitter<{ action: string, type: string }>();\r\n @Output() bimplusMainMenuOverlayClicked = new EventEmitter<void>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue);\r\n }\r\n }\r\n\r\n get apps(): MenuListType[] {\r\n let appsList = this.appsList.slice().sort((a, b) => this.appsOrder.indexOf(a.id) - this.appsOrder.indexOf(b.id));\r\n\r\n // if not modelsVisible remove PORTAL_BIM_MODELS.\r\n if (!this.modelsVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_BIM_MODELS);\r\n }\r\n\r\n // if not processesVisible remove PORTAL_BIM_PROCESSES.\r\n if (!this.processesVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_BIM_PROCESSES);\r\n }\r\n\r\n // if not cloudviewerVisible remove PORTAL_CLOUD_VIEWER_BTN.\r\n if (!this.cloudviewerVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_CLOUD_VIEWER_BTN);\r\n }\r\n\r\n // if not bimexplorerVisible remove PORTAL_BIM_VIEWER_BTN.\r\n if (!this.bimexplorerVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_BIM_VIEWER_BTN);\r\n }\r\n\r\n // if not autoconverterVisible remove PORTAL_AUTOCONVERTER_BTN.\r\n if (!this.autoconverterVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_BIM_AUTOCONVERTER_BTN);\r\n }\r\n\r\n // if not dividerappsVisible remove DIVIDERAPPS divider.\r\n if (!this.dividerappsVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n // if teammembersDisabled remove PORTAL_TEAM_MANAGEMENT_BTN.\r\n if (this.teammembersDisabled) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN);\r\n }\r\n\r\n // if propertymanagerDisabled remove PORTAL_PROPERTY_MANAGER_BTN.\r\n if (this.propertymanagerDisabled) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN);\r\n }\r\n\r\n // if isTouch remove property manager btn. & approvals btn.\r\n if(this.isTouch) {\r\n appsList = appsList.filter(({ id }) => \r\n id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN && \r\n id !== MenuListTypeId.PORTAL_BIM_PROCESSES\r\n );\r\n }\r\n\r\n const docs = appsList.find(item => item.id === MenuListTypeId.PORTAL_BIM_DOCUMENTS);\r\n if(docs) {\r\n docs.textId = this.showCoworkBackups ? \"_Backups\" : \"_Files\";\r\n }\r\n\r\n\r\n return appsList;\r\n }\r\n\r\n get footerList(): MenuListType[] {\r\n let footerList = this._menuFooterList.filter(item => this._isSubscribed(item) && !this._isHidden(item));\r\n\r\n // in case that \"Get Your Team\" is not visible and teammembers are disabled then remove divider first, or is not isTouch mode\r\n if (this.teammembersDisabled || !this.isTouch) {\r\n footerList = footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n // if team is assigned then remove \"Get Your Team\" button\r\n if (!this.getYourTeamVisible) {\r\n return footerList.filter(({ id }) => id !== MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN);\r\n }\r\n\r\n // remove divider if there is no \"Get Your Team\" button\r\n return footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed\r\n --------------------------------------------------------------------------*/\r\n _isSubscribed(item:MenuListType):boolean {\r\n\r\n if (item.checkSubscription) {\r\n const key = `${item.action}Subscribed`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return true;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is clickable\r\n --------------------------------------------------------------------------*/\r\n _isClickable(item:MenuListType):boolean {\r\n\r\n if (item.clickPolicy === \"noProjectNoSubscription\") {\r\n return this.projectName !== \"\";\r\n }\r\n return true;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item:MenuListType):boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n return !((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return false;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is disabled\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item:MenuListType) {\r\n const key = `${item.action}Disabled`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n\r\n _getContextData(item: MenuListType, active: boolean, disabled: boolean, clickable: boolean, selected: boolean) {\r\n return {\r\n item: item,\r\n active: active,\r\n disabled: disabled,\r\n clickable: clickable,\r\n selected: selected,\r\n showInfoIcon: this.appsWithInfo.includes(item.id)\r\n };\r\n }\r\n\r\n _openPrjBtn:MenuListType = { action:\"openProject\", id:\"portalSelectProjectBtn\",type:\"\", class: \"bim-mm-icon-folder\", textId: \"_Portal_Menu_Open_Project\", textIdDisabled: \"_Portal_Menu_Open_Project\",disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"};\r\n\r\n contextData = {item:\"haha\",active:true,disabled:true,clickable:true,selected:true};\r\n\r\n\r\n appsList: MenuListType[] = [\r\n { action:\"projectmembers\", id: MenuListTypeId.PORTAL_BIM_USERS, type:\"\", class: \"bim-mm-icon-users\", textId: \"_projectStatisticsMembers\", textIdDisabled: \"_projectStatisticsMembers\", disabledTitle:\"_Insufficient rights title\",checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"models\", id: MenuListTypeId.PORTAL_BIM_MODELS, type:\"\",class: \"bim-mm-icon-models\", textId: \"_Divisions\", textIdDisabled: \"_Divisions\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"documents\", id: MenuListTypeId.PORTAL_BIM_DOCUMENTS, type:\"\",class: \"bim-mm-icon-documents\", textId: \"_Files\", textIdDisabled: \"_Files\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"projectsettings\", id: MenuListTypeId.PORTAL_BIM_PROJECT_SETTINGS, type:\"\",class: \"bim-mm-icon-project-settings\", textId: \"_Settings\", textIdDisabled: \"_Settings\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"processes\", id: MenuListTypeId.PORTAL_BIM_PROCESSES, type:\"\",class: \"bim-mm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"_Approvals\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"\",id: MenuListTypeId.DIVIDER_PROJECT_MANAGEMENT, type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"bimexplorer\", id: MenuListTypeId.PORTAL_BIM_VIEWER_BTN, type:\"\",class: \"bim-mm-icon-bim-explorer\", textId: \"BIM Explorer\", textIdDisabled: \"BIM Explorer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"cloudviewer\", id: MenuListTypeId.PORTAL_CLOUD_VIEWER_BTN, type:\"\",class: \"bim-mm-icon-cloud-viewer\", textId: \"Model Viewer\", textIdDisabled: \"Model Viewer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"autoconverter\", id: MenuListTypeId.PORTAL_BIM_AUTOCONVERTER_BTN, type:\"\",class: \"bim-mm-icon-autoconverter\", textId: \"Autoconverter\", textIdDisabled: \"Autoconverter\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false, clickPolicy: \"noProjectNoSubscription\"},\r\n\r\n { action:\"\",id: MenuListTypeId.DIVIDERAPPS, type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"teammembers\", id: MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN, type:\"\", class: \"bim-mm-icon-team-members\", textId: \"_Portal_Menu_Team_Members\", textIdDisabled: \"_Portal_Menu_Team_Members\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"propertymanager\", id: MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN, type:\"\",class: \"bim-mm-icon-property-manager\", textId: \"_Portal_Menu_Properties\", textIdDisabled: \"_Portal_Menu_Properties\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n ];\r\n\r\n _menuFooterList: MenuListType[] = [\r\n { action:\"\",id: MenuListTypeId.DIVIDERAPPS, type:\"divider\", class: \"bim-mm-app-item-divider\",checkSubscription: false,devOrStageOnly : false } as MenuListType,\r\n { action:\"addins\", id: MenuListTypeId.PORTAL_ADD_INS_BTN, type:\"\", class: \"bim-mm-icon-add-ins\", textId: \"_AddIns\", textIdDisabled: \"_AddIns\", disabledTitle:'', checkSubscription: false, devOrStageOnly : false, clickPolicy: \"\"},\r\n { \r\n action:\"getYourTeam\", \r\n id: MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN,\r\n class: \"bim-mm-icon-get-your-team\", \r\n textId: \"_Get_Your_Team\", \r\n textIdDisabled: \"_Get_Your_Team\",\r\n } as MenuListType,\r\n { \r\n action:\"tryBimplusPro\", \r\n id: MenuListTypeId.PORTAL_TRY_BIMPLUS_PRO_BTN,\r\n class: \"bim-mm-icon-try-bimplus-pro\", \r\n textId: \"_Try_Bimplus_Pro\", \r\n textIdDisabled: \"_Try_Bimplus_Pro\",\r\n } as MenuListType, \r\n { action:\"shop\", id: MenuListTypeId.PORTAL_SHOP_BTN, type:\"\",class: \"bim-mm-icon-shop\", textId: \"_Get_More\", textIdDisabled: \"_Get_More\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"}\r\n ];\r\n\r\n _overlayClicked(){\r\n fireEvent(this, \"bimplusMainMenuOverlayClicked\");\r\n }\r\n\r\n _mainMenuItemClicked(item: MenuListType,type:string,event: Event | undefined ){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n if(type != \"info\") {\r\n if (this._isDisabled(item)){\r\n return;\r\n }\r\n }\r\n\r\n const action = item.action;\r\n fireEvent(this,\"bimplusMainMenuClicked\", {action,type:type } );\r\n }\r\n}\r\n","<ng-template #appNavigationItemContent let-contextData>\r\n @if (contextData.item.type === 'divider') {\r\n <div class=\"bim-mm-app-item\" [class]=\"contextData.item.class\" [id]=\"contextData.item.id\"></div>\r\n } @else {\r\n <div class=\"bim-mm-app-item\" [id]=\"contextData.item.id\"\r\n [ngClass]=\"isTouch?'':'hover-show-info '+(contextData.active?'active ':' ') +(contextData.disabled?'disabled ':' ')+(contextData.clickable?' ':'not-clickable ')+(contextData.selected?'selected ':' ')\"\r\n [title] =\"((contextData.disabled) ? (contextData.item.disabledTitle | translate) : '' )\"\r\n >\r\n <div class=\"bim-mm-app-item-details\"\r\n [ngClass] = \" contextData.clickable ? '' : 'not-clickable' \"\r\n (click)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\"\r\n (keypress)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\">\r\n <div class=\"bim-mm-icon\"\r\n [ngClass]=\"contextData.item.class + (contextData.active?' active':'') + (contextData.disabled?' disabled ':'')\">\r\n </div>\r\n <span>{{(contextData.isDisabled && (contextData.item.textIdDisabled !==\"\") ? contextData.item.textIdDisabled : contextData.item.textId) | translate}}</span>\r\n </div>\r\n @if(contextData.showInfoIcon){\r\n <div class=\"bim-mm-app-item-info bim-mm-icon bim-mm-icon-info\"\r\n (click)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\"\r\n (keypress)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\">\r\n </div>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n<div\r\n class=\"bim-mm-wrapper\"\r\n [ngClass]=\"showOverlay ? 'bim-mm-overlay' : ''\"\r\n (click)=\"_overlayClicked()\"\r\n (keypress)=\"_overlayClicked()\"\r\n >\r\n <div class= \"bim-mm-container\">\r\n @if(!_isHidden(_openPrjBtn)){\r\n <ng-container\r\n *ngTemplateOutlet=\"appNavigationItemContent; context: { $implicit: _getContextData(_openPrjBtn,projectActiveItem === 'projectlist',_isDisabled(_openPrjBtn),true,projectActiveItem === 'projectlist') }\"\r\n ></ng-container>\r\n }\r\n\r\n @if(bimplusProjectMenuVisible){\r\n <lib-bimplus-project-menu\r\n projectName = {{projectName}}\r\n projectImageUrl = {{projectImageUrl}}\r\n projectExplorerUrl = {{projectExplorerUrl}}\r\n projectActiveItem = {{projectActiveItem}}\r\n projectmembersDisabled = {{projectmembersDisabled}}\r\n modelsDisabled = {{modelsDisabled}}\r\n documentsDisabled = {{documentsDisabled}}\r\n projectsettingsDisabled = {{projectsettingsDisabled}}\r\n processesDisabled = {{processesDisabled}}\r\n projectmembersVisible = {{projectmembersVisible}}\r\n modelsVisible = {{modelsVisible}}\r\n documentsVisible = {{documentsVisible}}\r\n projectsettingsVisible = {{projectsettingsVisible}}\r\n processesVisible = {{processesVisible}}\r\n isCollapsed = {{isCollapsed}}\r\n isMiniMode = {{isTouch}}\r\n isTouch = {{isTouch}}\r\n hideMenuIcons = {{hideProjectMenuIcons}}\r\n showHorizontalMenuIcons = {{showHorizontalMenuIcons}}\r\n [menuItemsOrder]=\"menuItemsOrder\"\r\n ></lib-bimplus-project-menu>\r\n }\r\n <div [ngClass]=\"apps.length || footerList.length ? 'bim-mm-apps-container' : ''\">\r\n <div class=\"bim-mm-apps-list\">\r\n @for (appItem of apps; track appItem) {\r\n <div>\r\n <ng-container\r\n *ngTemplateOutlet=\"appNavigationItemContent; context: { $implicit: _getContextData(appItem,!_isSubscribed(appItem),_isDisabled(appItem),_isClickable(appItem),menuActiveItem === appItem.action)}\"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"bim-mm-footer-container\">\r\n @for (footerItem of footerList; track footerItem) {\r\n <div>\r\n <ng-container\r\n *ngTemplateOutlet=\"appNavigationItemContent; context: { $implicit: _getContextData(footerItem,footerActiveItem === footerItem.action,_isDisabled(footerItem),true,false)}\"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","export enum LogoState {\r\n BimplusViewer = 'bimplusViewer', // Bimplus logo\r\n ModelViewerBlack = 'modelViewerBlack', // Model viewer black logo\r\n ModelViewer = 'modelViewer', // Cloud viewer logo\r\n ConnexisViewer = 'connexisViewer', // Connexis viewer logo\r\n ConnexisViewerBlack = 'connexisViewerBlack' // Connexis viewer logo (black)\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, computed, input } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { LogoState } from './logo-state.enum';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-navbar',\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './bimplus-navbar.component.html',\r\n styleUrl: './bimplus-navbar.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusNavbarComponent extends BimplusLocalizedWidgetComponent {\r\n @Input() projectInfo : string = \"\";\r\n @Input() teamInfo : string = \"\";\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input() teamInfoOffset : string = \"\";\r\n @Input({ transform: booleanAttribute }) isNavbarMenuVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarInfoVisible : boolean = false;\r\n logoState = input<LogoState>(LogoState.BimplusViewer);\r\n isModelViewerActive = input(false , { transform: booleanAttribute });\r\n @Input({ transform: booleanAttribute }) isNavbarMessageVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuEnabled : boolean = true;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDashboardTooltipEnabled: boolean = true;\r\n\r\n @Output() bimplusNavbarClicked = new EventEmitter<string>();\r\n\r\n // Make the enum available in the template\r\n public LogoState = LogoState;\r\n\r\n public readonly logoTooltipSignal = computed<string>(() => {\r\n if (this.isModelViewerActive()) {\r\n return \"_Open_new_file\";\r\n }\r\n\r\n return (this.isDashboardTooltipEnabled ? '_dashboard_tooltip' : '');\r\n });\r\n\r\n protected readonly logoStateSignal = computed<LogoState>(() => {\r\n if (this.isModelViewerActive()) {\r\n return LogoState.ModelViewerBlack;\r\n }\r\n\r\n return this.logoState();\r\n });\r\n\r\n _menuClicked() {\r\n if ( this.isNavbarMenuEnabled ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"menu\");\r\n }\r\n }\r\n\r\n _logoClicked() {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"logo\");\r\n }\r\n\r\n _projectInfoClicked() {\r\n if ( this.isDev ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"project\");\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"bimplus-navbar\"\r\n [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n >\r\n <div class=\"bimplus-navbar-logo-container\">\r\n <div\r\n class=\"bimplus-logo\"\r\n [ngClass]=\"{\r\n 'model-viewer': logoStateSignal() === LogoState.ModelViewer,\r\n 'model-viewer-black': logoStateSignal() === LogoState.ModelViewerBlack,\r\n 'connexis-viewer': logoStateSignal() === LogoState.ConnexisViewer,\r\n 'connexis-viewer-black': logoStateSignal() === LogoState.ConnexisViewerBlack,\r\n 'burger-menu-not-visible': !isNavbarMenuVisible\r\n }\"\r\n (click)=\"_logoClicked()\"\r\n (keypress)=\"_logoClicked()\"\r\n [title]=\"logoTooltipSignal() | translate\"\r\n ></div>\r\n\r\n <div\r\n class=\"bimplus-navbar-menu icon\"\r\n [ngClass]=\"{'active':isNavbarMenuActive, 'hidden': !isNavbarMenuVisible, 'disabled': !isNavbarMenuEnabled}\"\r\n (click)=\"_menuClicked()\"\r\n (keypress)=\"_menuClicked()\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-container\">\r\n <div\r\n class=\"bimplus-navbar-info\"\r\n [ngClass]=\"{'hidden': !isNavbarInfoVisible}\"\r\n [style.margin-left]=\"teamInfoOffset\"\r\n >\r\n <span class=\"team\">{{teamInfo}}</span>\r\n @if (projectInfo && !isTouch) {\r\n <span>&nbsp;&nbsp; -&nbsp;&nbsp;</span>\r\n }\r\n <span\r\n class=\"project\"\r\n [ngClass]=\"isDev ? 'clickable' : ''\"\r\n (click)=\"_projectInfoClicked()\"\r\n (keypress)=\"_projectInfoClicked()\"\r\n >\r\n {{projectInfo}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-slot\">\r\n <slot></slot>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation, ElementRef, AfterViewInit, AfterViewChecked, inject } from '@angular/core';\r\n\r\nimport SimpleBar from 'simplebar';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-scrollable-container',\r\n imports: [],\r\n templateUrl: './bimplus-scrollable-container.component.html',\r\n styleUrl: './bimplus-scrollable-container.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class BimplusScrollableContainerComponent implements AfterViewInit, AfterViewChecked {\r\n private readonly elementRef = inject(ElementRef);\r\n\r\n _simpleBar!: SimpleBar;\r\n _element: HTMLElement;\r\n protected _scrollableContainerClassName: string = '.scrollable-container';\r\n\r\n constructor(){\r\n this._element = this.elementRef.nativeElement;\r\n }\r\n\r\n private _initializationSimpleScrollBar(): void {\r\n // init simple bar scrollbar\r\n const scrollableContainer: HTMLElement | null = this._element?.querySelector(this._scrollableContainerClassName);\r\n if (!scrollableContainer) {\r\n console.error('No scrollable container found in the element.');\r\n return;\r\n }\r\n this._simpleBar = new SimpleBar(scrollableContainer);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._initializationSimpleScrollBar();\r\n }\r\n\r\n private _recalculateScrollbar(): void {\r\n if(!this._element) {\r\n return;\r\n }\r\n const _element = this._element;\r\n const barElem = _element?.querySelector(this._scrollableContainerClassName);\r\n if (!barElem){\r\n return;\r\n }\r\n\r\n if (!this._simpleBar) {\r\n console.error('No scrollable container found in the element.');\r\n return;\r\n }\r\n\r\n this._simpleBar.recalculate();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this._recalculateScrollbar();\r\n }\r\n}\r\n","<div class=\"scrollable-container\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges, OnInit, HostBinding } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { BimplusLocalizedWidgetComponent } from './../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { BimplusScrollableContainerComponent } from './../bimplus-scrollable-container/bimplus-scrollable-container.component';\r\n\r\nconst BIMPLUS_NOTIFY_MESSAGES = \"bimplus-notify-messages\";\r\ninterface MessageModel {\r\n 'id': string | undefined,\r\n 'type': string | undefined,\r\n 'title': string | undefined,\r\n 'text': string | undefined,\r\n 'link': string | undefined,\r\n 'linkText': string | string[] | undefined,\r\n 'links': string[] | undefined,\r\n 'actionId': number | undefined,\r\n 'capitalizedTitle': string | boolean | undefined\r\n}\r\n@Component({\r\n selector: 'lib-bimplus-notify',\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n BimplusScrollableContainerComponent\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-notify.component.html',\r\n styleUrl: './bimplus-notify.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class BimplusNotifyComponent extends BimplusLocalizedWidgetComponent implements OnChanges, OnInit{\r\n constructor(){\r\n super();\r\n }\r\n\r\n // Expose Array constructor as a property\r\n Array = Array;\r\n \r\n @HostBinding('class.new-messages')\r\n get newMessages() {\r\n return this._alertActive;\r\n }\r\n\r\n @HostBinding('class.bim-notify')\r\n get bimNotify() {\r\n return true; // Or you can use a condition here if needed\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of messages\r\n --------------------------------------------------------------------------*/\r\n _messagesList: MessageModel[] = [];\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messagePreviewTime : number = 3000; // in ms\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) showMessagePreview : boolean = true;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesLimit : number = 3;\r\n\r\n /**--------------------------------------------------------------------------\r\n * offset of preview messages from main icon\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesOffsetY : string = '2.7em';\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messages : string = '';\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['messages']) {\r\n const newValue = changes['messages'].currentValue;\r\n this.updateMessages(newValue);\r\n }\r\n }\r\n\r\n updateMessages(newValue: string /*, oldValue: string*/) {\r\n const isOk = newValue && typeof newValue === 'string';\r\n if (!isOk) {\r\n this._messagesList = [];\r\n this._previewMessagesList = [];\r\n this._alertActive = false;\r\n return;\r\n }\r\n\r\n const msgData = JSON.parse(newValue);\r\n this._messagesList = msgData.messages;\r\n\r\n // filter new messages into the list for preview\r\n let newMessagesList = this._messagesList.filter( (msg) => this._oldMessagesList.findIndex( (oldMsg) => oldMsg.id === msg.id ) < 0 );\r\n newMessagesList = newMessagesList.filter( (item) => this._messageNotReadYet(item)); // filtering out allready read messages (stored in localstorage)\r\n\r\n // setup preview for new messages\r\n newMessagesList.slice().reverse().forEach( (newMsg) => {\r\n if ( this._previewMessagesList.findIndex( (item) => newMsg.id === item.id ) < 0){\r\n this._previewMessagesList.unshift(newMsg);\r\n\r\n if( this.messagePreviewTime > 0 ) {\r\n setTimeout(() => {\r\n this._closePreviewMessage(newMsg.id, false);\r\n }, this.messagePreviewTime);\r\n }\r\n }\r\n })\r\n\r\n // limit preview messages count\r\n this._previewMessagesList.length = this._previewMessagesList.length > this.previewMessagesLimit ? this.previewMessagesLimit : this._previewMessagesList.length;\r\n\r\n // set old state and alert\r\n this._oldMessagesList = this._messagesList;\r\n this._alertActive = this._messagesList.length != 0;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened: boolean = false;\r\n _alertActive: boolean = false;\r\n _oldMessagesList: MessageModel[] = [];\r\n // list of messages for preview\r\n _previewMessagesList: MessageModel[] = [];\r\n\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteMessage = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete all item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteAllMessages = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Message action event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyMessageAction = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * initial component load\r\n --------------------------------------------------------------------------*/\r\n ngOnInit(): void {\r\n this.updateMessages(this.messages);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close single message\r\n --------------------------------------------------------------------------*/\r\n _closeMessage( item: MessageModel, preview: boolean, event: Event | undefined ){\r\n if (preview) {\r\n return this._closePreviewMessage(item.id);\r\n }\r\n\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n fireEvent(this, \"bimplusNotifyDeleteMessage\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close preview message\r\n --------------------------------------------------------------------------*/\r\n _closePreviewMessage( msgId: string | undefined, closedByUser = true ){\r\n if (!msgId) {\r\n return;\r\n }\r\n\r\n this._previewMessagesList = this._previewMessagesList.filter( (msg) => msg.id !== msgId );\r\n this.storeMessagesAsRead([msgId]);\r\n if ( closedByUser && this._previewMessagesList.length === 0 ){\r\n this._alertActive = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close all messages\r\n --------------------------------------------------------------------------*/\r\n _deleteAllMessages(){\r\n fireEvent(this, \"bimplusNotifyDeleteAllMessages\");\r\n this.clearAllLocalStorageMessages();\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * message clicked\r\n --------------------------------------------------------------------------*/\r\n _messageAction( item: MessageModel, index: number ){\r\n item.actionId = index;\r\n fireEvent(this, \"bimplusNotifyMessageAction\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n this._alertActive = false;\r\n this._previewMessagesList = [];\r\n }\r\n\r\n _messageNotReadYet(message: MessageModel){\r\n if(!message?.id){\r\n return true;\r\n }\r\n const messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n if(!messageListString){\r\n return true;\r\n }\r\n return !messageListString.includes(message.id);\r\n }\r\n\r\n storeMessagesAsRead(messageList: string[]){\r\n if(!messageList || messageList.length <1){\r\n return;\r\n }\r\n let messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n messageListString ??= \"\";\r\n messageList.forEach((item: string)=>{\r\n if(!messageListString?.includes(item)){\r\n messageListString+=(item+\";\");\r\n }\r\n })\r\n window.localStorage.setItem(BIMPLUS_NOTIFY_MESSAGES,messageListString);\r\n }\r\n\r\n clearAllLocalStorageMessages(){\r\n window.localStorage.removeItem(BIMPLUS_NOTIFY_MESSAGES);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * get item link title\r\n --------------------------------------------------------------------------*/\r\n _getItemLinkTitle( item: MessageModel, index: number ){\r\n let itemLinksTitles: (string | undefined)[] = [];\r\n if ( item.linkText && (item.links || item.link)) {\r\n itemLinksTitles = Array.isArray(item.links) ? item.links : [item.link];\r\n }\r\n return itemLinksTitles[index] ?? '';\r\n }\r\n}\r\n","<div\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n [title]=\"'_BimplusNotifyTitle' | translate\"\r\n >\r\n <div class=\"dropdown-toggle\" >\r\n <div\r\n class=\"main-icon\"\r\n [ngClass]=\"'icon-notify' + (this._alertActive ? '-alert notify' : '')\"\r\n ></div>\r\n </div>\r\n\r\n <div\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"notify-tick\"></div>\r\n <div class=\"messages-title\">\r\n <div class=\"messages-count\">\r\n ({{this._messagesList.length}})\r\n </div>\r\n <div\r\n class=\"messages-delete-all\"\r\n (click)=\"_deleteAllMessages()\"\r\n (keypress)=\"_deleteAllMessages()\"\r\n >\r\n {{\"_Notify_Mark_All\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"messages-container\">\r\n @if (_messagesList.length) {\r\n <lib-bimplus-scrollable-container>\r\n @for (item of _messagesList; track item) {\r\n <div\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, false, $event)\"\r\n (keypress)=\"_closeMessage(item, false, $event)\"\r\n ></div>\r\n </div>\r\n <div class=\"message-item-body-text\">{{item.text}}</div>\r\n @if (item.linkText) {\r\n @for (link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); track link; let i = $index) {\r\n <div\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n (keypress)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n </lib-bimplus-scrollable-container>\r\n } @else {\r\n <div class=\"message-item-empty\">\r\n <div class=\"message-item-empty-icon\"></div>\r\n <div class=\"message-item-empty-text\">{{\"_Notify_No_Messages\" | translate}}</div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n\r\n<div\r\n class=\"bimcomp-messages-preview\"\r\n [ngClass]=\"(showMessagePreview && !_menuOpened && _previewMessagesList.length > 0) ? 'visible' : ''\"\r\n [style.top]=\"previewMessagesOffsetY\"\r\n >\r\n <div class=\"messages-container-preview\">\r\n @for (item of _previewMessagesList; track item) {\r\n <div\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, true, $event)\"\r\n (keypress)=\"_closeMessage(item, true, $event)\"\r\n ></div>\r\n </div>\r\n <div class=\"message-item-body-text\">\r\n {{item.text}}\r\n </div>\r\n @if (item.linkText) {\r\n @for (link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); track link; let i = $index) {\r\n <div\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n (keypress)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Output, EventEmitter, input } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-storage-info',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-storage-info.component.html',\r\n styleUrl: './bimplus-storage-info.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusStorageInfoComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(){\r\n super()\r\n }\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n usedStorage = input<number>(0);\r\n\r\n\r\n @Output() bimplusStorageInfoClicked = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * clicked storage info container\r\n --------------------------------------------------------------------------*/\r\n _infoClicked( action: string ){\r\n fireEvent(this, \"bimplusStorageInfoClicked\", action);\r\n }\r\n}\r\n","<div\r\n class=\"storage-info\"\r\n (click)=\"_infoClicked('storageInfo')\"\r\n (keypress)=\"_infoClicked('storageInfo')\"\r\n>\r\n <span class=\"progress-title\">\r\n {{\"_Common_Data_Environment_Quota\" | translate}}\r\n <span class=\"progress-text\" data-test=\"used-storage\">\r\n {{usedStorage()}}%\r\n </span>\r\n </span>\r\n <div class=\"storage-info-bar-container\">\r\n <div \r\n class=\"storage-info-bar\"\r\n [ngClass]=\"{\r\n 'red': usedStorage() >= 90,\r\n 'yellow': usedStorage() >= 80 && usedStorage() < 90,\r\n 'green': usedStorage() < 80\r\n }\"\r\n [style.width]=\"usedStorage() + '%'\"\r\n [style.max-width]=\"usedStorage() + '%'\"\r\n ></div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Output, EventEmitter, Input, booleanAttribute } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-upgrade-link',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-upgrade-link.component.html',\r\n styleUrl: './bimplus-upgrade-link.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusUpgradeLinkComponent extends BimplusLocalizedWidgetComponent {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private _getLangParamValue(symbol: string) {\r\n const langMap: Record<string, string> = {\r\n en: '1',\r\n fr: '2',\r\n de: '3',\r\n cs: '1', // only in English, so use fallback\r\n es: '1', // only in English, so use fallback\r\n it: '1', // only in English, so use fallback\r\n ru: '1', // only in English, so use fallback\r\n ro: '1', // only in English, so use fallback\r\n tr: '1', // only in English, so use fallback\r\n };\r\n\r\n const lang = langMap[symbol];\r\n return `&lang=${lang ? lang : \"1\"}`;\r\n }\r\n\r\n private _getCountryIsoParam(symbol: string): string {\r\n const countryIsoMap: Record<string, string> = {\r\n en: 'gb', // English (UK) - currency is GBP\r\n us: 'us', // English (US) - currency is USD\r\n fr: 'fr', // French - currency is EUR\r\n de: 'de', // German - currency is EUR\r\n cs: 'cz', // Czech - currency is CZK\r\n es: 'es', // Spanish - currency is EUR\r\n it: 'it', // Italian - currency is EUR\r\n ru: 'ru', // Russian - currency is RUB\r\n ro: 'ro', // Romanian - currency is RON\r\n tr: 'tr' // Turkish - currency is TRY\r\n // all other countries are not supported\r\n // no pages are defined, so use fallback (don't add ap_country_iso param)\r\n };\r\n\r\n const iso = countryIsoMap[symbol];\r\n return iso ? `&ap_country_iso=${iso}` : '';\r\n }\r\n\r\n // New define for shop URLs\r\n // ACDC-31229 ==> ACDC-31560 Update the link of UPGARDE TO BIMPLUS\r\n // private defaultShopUrl = 'https://shop.allplan.com/?cl=details&anid=b34666d77706b644b8f19e6504f9a69f';\r\n private defaultShopUrl = 'https://www.bimplus.net/';\r\n @Input() shopUrl: string = this.defaultShopUrl;\r\n @Input() country: string = \"\";\r\n @Input({ transform: booleanAttribute }) isTouch: boolean = false;\r\n @Output() bimplusUpgradeLinkClicked = new EventEmitter<string>();\r\n\r\n _linkClicked() {\r\n // Determine the domain link based on your environment\r\n const domainLink = this.shopUrl || this.defaultShopUrl;\r\n console.debug(`Opening upgrade to Bimplus link`);\r\n\r\n window.open(domainLink, '_blank' /* Opens the link in a new tab or new window (depends on browser) */);\r\n // Emit to parent\r\n fireEvent(this, \"bimplusUpgradeLinkClicked\", domainLink);\r\n }\r\n\r\n // ACDC-31229 ==> ACDC-31560 Update the link of UPGARDE TO BIMPLUS\r\n // _linkClicked() {\r\n // // Get current language symbol from your base class or TranslateService\r\n // const currentLanguage = this.selectedLanguage;\r\n // const langValue = this._getLangParamValue(currentLanguage);\r\n // let countryIso = '';\r\n // if (!this.country || this.country === \"\") {\r\n // // If no country is provided, calculate country ISO based on the language\r\n // // console.debug(`No country provided, using default country ISO for language: ${currentLanguage}`);\r\n // countryIso = this._getCountryIsoParam(currentLanguage);\r\n // } else {\r\n // countryIso = `&ap_country_iso=${this.country}`;\r\n // }\r\n // // Determine the domain link based on your environment\r\n // const domainLink = this.shopUrl || this.defaultShopUrl;\r\n // console.debug(`Opening upgrade link with params: langauge=${currentLanguage} langValue=${langValue}, countryIso=${countryIso}`);\r\n // // Build the final URL with query params\r\n // // const url = new URL(domainLink);\r\n // // url.searchParams.set('lang', langValue);\r\n // const finalUrl = domainLink + langValue + countryIso;\r\n // window.open(finalUrl, '_blank' /* Opens the link in a new tab or new window (depends on browser) */);\r\n // // Emit to parent\r\n // fireEvent(this, \"bimplusUpgradeLinkClicked\", finalUrl);\r\n // }\r\n}\r\n\r\n"," <div\r\n class=\"bimplus-upgrade-link secondary-button body-text-mixin\"\r\n [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n (click)=\"_linkClicked()\"\r\n (keypress)=\"_linkClicked()\"\r\n >\r\n {{ \"_Upgrade_to_Bimplus\" | translate }}\r\n </div>\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface MenuItem {\r\n id: string,\r\n action: string,\r\n class: string,\r\n textId: string,\r\n type: string,\r\n checkState: string,\r\n url: string,\r\n _url?: () => string; // Function that takes no arguments and returns a string\r\n textClass: string,\r\n queryParams: string\r\n}\r\nexport interface MenuItemEventData {\r\n index: number,\r\n action: string\r\n}\r\nexport interface LangItem {\r\n symbol: string,\r\n text: string,\r\n lCode: string | undefined\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-user-menu',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-user-menu.component.html',\r\n styleUrl: './bimplus-user-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusUserMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(){\r\n super();\r\n }\r\n\r\n _languagesList: LangItem[] = [\r\n { symbol: \"cs\", text: \"Čeština\", lCode: \"3\" },\r\n { symbol: \"de\", text: \"Deutsch\", lCode: \"1\" },\r\n { symbol: \"en\", text: \"English (UK)\", lCode: \"0\" },\r\n { symbol: \"us\", text: \"English (US)\", lCode: undefined },\r\n { symbol: \"es\", text: \"Español\", lCode: \"18\" },\r\n { symbol: \"fr\", text: \"Français\", lCode: \"4\" },\r\n { symbol: \"it\", text: \"Italiano\", lCode: \"2\" },\r\n { symbol: \"ru\", text: \"Русский\", lCode: \"14\" },\r\n { symbol: \"ro\", text: \"Romana\", lCode: undefined },\r\n { symbol: \"tr\", text: \"Türkçe\", lCode: undefined }\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n _languagesMenuOpened = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) accountSettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) removeConnectedAppsVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) userGuideVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) contactFormVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) forumVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) releaseNotesVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) submenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) clearCacheVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerLoggedInVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) logoutVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) allowRcaItem : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() buttonTitle : string = '';\r\n @Input() userName : string = 'Unknown user';\r\n @Input() userPhotoUrl : string = '';\r\n @Input() userGuideLinkUrl : string = 'https://bimplus-help.allplan.com/welcome.htm';\r\n @Input() contactFormLinkUrl : string = 'https://www.allplan.com/info/contact';\r\n @Input() forumLinkUrl : string = 'https://connect.allplan.com/de/forum/themen/bim-benutzer-forum.ct';\r\n /**--------------------------------------------------------------------------\r\n * Component events\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusUserMenuClicked = new EventEmitter<MenuItemEventData>();\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue);\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList: MenuItem[] = [\r\n { id:\"accountSettingsPage\", action:\"accountSettings\", class: \"icon-account-settings\", textId: \"_Edit_profile\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\", url: \"\"},\r\n { id:\"removeConnectedApps\", action:\"removeConnectedApps\", checkState: \"allowRcaItem\", class: \"icon-rca\", textClass: \"text-capitalized\", textId: \"_Remove_connected_apps\", type: \"\", url: \"\", queryParams: \"\"},\r\n { id:\"userGuideLink\", action:\"userGuide\", class: \"icon-user-guide\", textId: \"_UserGuide\", get url() { return this._url?.() ?? ''; }, _url: () => this.userGuideLinkUrl, type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"contactFormLink\", action:\"contactForm\", class: \"icon-contact-form\", textId: \"_Contact_form\", get url() { return this._url?.() ?? ''; }, _url: () => this.contactFormLinkUrl, queryParams: \"\", type: \"\", checkState: \"\", textClass: \"\"},\r\n { id:\"forumLink\", action:\"forum\", class: \"icon-forum\", textId: \"_Forum\", get url() { return this._url?.() ?? ''; }, _url: () => this.forumLinkUrl, type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"releaseNotesLink\", action:\"releaseNotes\", class: \"icon-release-notes\", textId: \"_Release_notes\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\", url: \"\"},\r\n { id:\"languagesSubmenu\", action:\"submenu\", class: \"icon-languages\", textId: \"_Languages\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"clearCache\", action:\"clearCache\", class: \"icon-clear-cache\", textId: \"_Clear cache\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"dividerLoggedIn\", type: \"divider\", action: \"\", class: \"\", textId: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"logout\", action:\"logout\", class: \"icon-log-out\", textId: \"_Logout\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( item: MenuItem, index : number ){\r\n if (!item || item.type === 'divider') {\r\n return;\r\n }\r\n\r\n\r\n if (item.action === 'submenu') {\r\n this._toggleLanguagesSubmenuOpened();\r\n }\r\n else {\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusUserMenuClicked\", { index, action: item.action ? item.action : '' });\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * language submenu item clicked\r\n --------------------------------------------------------------------------*/\r\n _switchLanguage( language: string ){\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n if(!this._menuOpened) {\r\n this._languagesMenuOpened = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle language submenu open\r\n --------------------------------------------------------------------------*/\r\n _toggleLanguagesSubmenuOpened(){\r\n if(!this._menuOpened) {\r\n return;\r\n }\r\n this._languagesMenuOpened = !this._languagesMenuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if item is visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuItem) {\r\n\r\n if (item) {\r\n return !this[(`${item.action ? item.action : item.id}Visible` as keyof BimplusUserMenuComponent)];\r\n }\r\n\r\n return false;\r\n }\r\n\r\n //--- add lang code and additional query params to supported urls\r\n _buildUrl(item: MenuItem | undefined) {\r\n let itemUrl = item?.url;\r\n const actualLang = this._languagesList.find(lang=> lang.symbol === this.selectedLanguage);\r\n const langCode = actualLang?.lCode;\r\n const supportsLangCode = itemUrl?.endsWith?.('.ct') && langCode;\r\n if (item?.queryParams || supportsLangCode) {\r\n itemUrl = itemUrl + '?';\r\n if (supportsLangCode) {\r\n itemUrl = itemUrl + 'L=' + langCode;\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + '&';\r\n }\r\n }\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + item.queryParams;\r\n }\r\n }\r\n return itemUrl;\r\n }\r\n\r\n _getMenuItems() {\r\n const menuItemsListFiltered = this.isEmbedded ? this._menuItemsList.slice(0,-3) : this._menuItemsList;\r\n return menuItemsListFiltered.map( (item) => {\r\n\r\n if (this._isHidden(item) || (item.checkState && !this[(item.checkState as keyof BimplusUserMenuComponent)])) {\r\n return;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n _getLangId(lang: LangItem | undefined) {\r\n return \"portalLanguage\" + lang?.symbol.charAt(0).toUpperCase() + lang?.symbol.slice(1);\r\n }\r\n}\r\n","<div\r\n [attr.key]=\"'bimcompOverlay'\"\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n<div\r\n [attr.key]=\"'userMenu'\"\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <div\r\n class=\"dropdown-toggle\"\r\n [title]=\"buttonTitle ? buttonTitle : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <img\r\n class=\"user-photo\"\r\n src=\"{{ userPhotoUrl ? userPhotoUrl : '' }}\"\r\n alt=\"{{ buttonTitle ? buttonTitle : '' }}\"\r\n />\r\n <div class=\"user-name\">\r\n @if (!isTouch) {\r\n {{ userName }}\r\n }\r\n </div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul class=\"bimcomp-dropdown-menu\" [ngClass]=\"_menuOpened ? 'open' : ''\">\r\n @for (item of _getMenuItems(); track item; let i = $index) {\r\n @if (item) {\r\n <li\r\n [attr.key]=\"item.id\"\r\n [attr.role]=\"item.type === 'divider' ? 'separator' : ''\"\r\n [ngClass]=\"{\r\n divider: item.type === 'divider',\r\n languageMenuItem: item.action === 'submenu',\r\n 'submenu-hidden':\r\n (!item.url || item.url.slice(0, 2) === '#/') &&\r\n item.action !== 'submenu'\r\n }\"\r\n (click)=\"_menuItemClicked(item, i)\"\r\n (keypress)=\"_menuItemClicked(item, i)\"\r\n >\r\n @if (item.action === 'submenu') {\r\n <div class=\"submenu arrow\"></div>\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n <div\r\n class=\"languagesSubmenu\"\r\n [ngClass]=\"_languagesMenuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"languageSubmenuItems\">\r\n @for (lang of _languagesList; track lang) {\r\n <div\r\n [attr.key]=\"_getLangId(lang)\"\r\n id=\"{{ _getLangId(lang) }}\"\r\n class=\"languageSubmenuItem\"\r\n [ngClass]=\"\r\n lang.symbol === this.selectedLanguage ? 'selected' : ''\r\n \"\r\n (click)=\"_switchLanguage(lang.symbol)\"\r\n (keypress)=\"_switchLanguage(lang.symbol)\"\r\n >\r\n {{ lang.text }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else if (!item.url || item.url.slice(0,2) === \"#/\") {\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n } @else if (!item.type || item.type !== \"divider\") {\r\n <a\r\n href=\"{{ _buildUrl(item) }}\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n class=\"submenu-hidden\"\r\n >\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n }\r\n }\r\n </ul>\r\n </div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-zoom',\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-zoom.component.html',\r\n styleUrl: './bimplus-zoom.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusZoomComponent{\r\n /**--------------------------------------------------------------------------\r\n * List of available zoom\r\n --------------------------------------------------------------------------*/\r\n _zoomList = [\r\n { symbol: \"100\", text: \"100%\"},\r\n { symbol: \"105\", text: \"105%\"},\r\n { symbol: \"110\", text: \"110%\"},\r\n { symbol: \"115\", text: \"115%\"},\r\n { symbol: \"120\", text: \"120%\"},\r\n { symbol: \"125\", text: \"125%\"},\r\n { symbol: \"130\", text: \"130%\"},\r\n { symbol: \"135\", text: \"135%\"},\r\n { symbol: \"140\", text: \"140%\"},\r\n { symbol: \"145\", text: \"145%\"},\r\n { symbol: \"150\", text: \"150%\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedZoom : string = '125';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusZoomSelected = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selection\r\n --------------------------------------------------------------------------*/\r\n _switchZoom( zoom: string ){\r\n fireEvent(this, \"bimplusZoomSelected\", zoom);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * setup dynamic classes for zoom item\r\n --------------------------------------------------------------------------*/\r\n _getZoomClassObject( symbol: string ){\r\n return {\r\n 'selected': this.selectedZoom === symbol,\r\n ['bimzoom-' + symbol]: true\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n<div\r\n class=\"dropdown\"\r\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\">\r\n <div class=\"main-icon icon-zoom\"></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n @for (zoom of _zoomList; track zoom) {\r\n <li\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"_getZoomClassObject(zoom.symbol)\"\r\n (click)=\"_switchZoom(zoom.symbol)\"\r\n (keypress)=\"_switchZoom(zoom.symbol)\"\r\n >\r\n <span>{{zoom.text}}</span>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-touch-menu',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-touch-menu.component.html',\r\n styleUrl: './bimplus-touch-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusTouchMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(){\r\n super()\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList = [\r\n { mode:\"touch\", class: \"icon-touch-mode-toolbar\", textId: \"_Touch_Mode\"},\r\n { mode:\"desktop\", class: \"icon-desktop-mode-toolbar\", textId: \"_Desktop_Mode\"},\r\n ];\r\n\r\n get _selectedItem() {\r\n return this._menuItemsList.find(item => item.mode == this.selectedMode);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedMode : string = 'desktop';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusTouchModeSelected = new EventEmitter<string>();\r\n\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue); \r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( mode: string ){\r\n fireEvent(this, \"bimplusTouchModeSelected\", mode);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n</div>\r\n<div\r\n class=\"dropdown\"\r\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\">\r\n <div\r\n class=\"main-icon\"\r\n [ngClass]=\"this._selectedItem?.class ? this._selectedItem?.class : ''\"\r\n ></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"{'open':this._menuOpened}\">\r\n @for (item of _menuItemsList; track item) {\r\n <li\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"{'selected':this.selectedMode === item.mode}\"\r\n (click)=\"_menuItemClicked(item.mode)\"\r\n (keypress)=\"_menuItemClicked(item.mode)\"\r\n >\r\n <div\r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span>{{item.textId | translate}}</span>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { LocalizedStrings } from './../types/types'\r\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageStringsService {\r\n\r\n // #region public fields\r\n set languageFilesUri(uri : string){\r\n this._languageFilesUri = uri;\r\n }\r\n private readonly defaultLang: string = 'en';\r\n currentLanguage$ = new BehaviorSubject<string> (this.defaultLang);\r\n currentLanguageStrings$ = new BehaviorSubject<LocalizedStrings>({});\r\n\r\n get currentLanguage() : string {\r\n return this.currentLanguage$.getValue();\r\n }\r\n\r\n set currentLanguageStrings(langStrings : LocalizedStrings){\r\n this.currentLanguageStrings$.next(langStrings);\r\n }\r\n\r\n get currentLanguageStrings() : LocalizedStrings {\r\n return this.currentLanguageStrings$.getValue();\r\n }\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n async setCurrentLanguage(lang : string){\r\n this.currentLanguage$.next(lang);\r\n await this.fetchLanguageStrings(lang); \r\n }\r\n\r\n extractLocalizedStrings(stringIds : Array<string>) : LocalizedStrings {\r\n const obj : LocalizedStrings = {};\r\n for (const [key, value] of Object.entries(this.currentLanguageStrings)) {\r\n if(typeof value == 'string' && stringIds.find(x=>x === key)){\r\n obj[key] = value;\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n async fetchLanguageStrings(lang : string){\r\n const data = await fetch(`${this._languageFilesUri}/strings_${lang}.json`);\r\n console.log(`Language strings loaded from: ${this._languageFilesUri}/strings_${lang}.json`);\r\n console.log(data);\r\n const dataJSON = await data.json();\r\n // add missing translations from default language translations\r\n if (lang !== this.defaultLang) {\r\n const fallbackData = await fetch(`${this._languageFilesUri}/strings_en.json`);\r\n const fallbackDataJSON = await fallbackData?.json?.();\r\n const fallbackDataJSONIndexes = fallbackDataJSON && Object.keys(fallbackDataJSON);\r\n if (fallbackDataJSONIndexes?.length) {\r\n for (const index in fallbackDataJSONIndexes) {\r\n const indexName = fallbackDataJSONIndexes[index];\r\n dataJSON[indexName] ??= fallbackDataJSON[indexName];\r\n }\r\n }\r\n }\r\n this.currentLanguageStrings$.next(dataJSON); \r\n }\r\n // #endregion public methods\r\n\r\n // #region private fields \r\n private _languageFilesUri : string = \"/assets\"\r\n // #endregion private fields\r\n}\r\n","/*\r\n * Public API Surface of navigation\r\n */\r\n\r\nexport * from './lib/navigation.service';\r\nexport * from './lib/navigation.component';\r\nexport * from './lib/components/bimplus-contact/bimplus-contact.component';\r\nexport * from './lib/components/bimplus-language-menu/bimplus-language-menu.component';\r\nexport * from './lib/components/bimplus-localized-widget/bimplus-localized-widget.component';\r\nexport * from './lib/components/bimplus-main-menu/bimplus-main-menu.component';\r\nexport * from './lib/components/bimplus-navbar/bimplus-navbar.component';\r\nexport * from './lib/components/bimplus-navbar/logo-state.enum';\r\nexport * from './lib/components/bimplus-notify/bimplus-notify.component';\r\nexport * from './lib/components/bimplus-storage-info/bimplus-storage-info.component';\r\nexport * from './lib/components/bimplus-upgrade-link/bimplus-upgrade-link.component';\r\nexport * from './lib/components/bimplus-user-menu/bimplus-user-menu.component';\r\nexport * from './lib/components/bimplus-zoom/bimplus-zoom.component';\r\nexport * from './lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component';\r\nexport * from './lib/components/bimplus-touch-menu/bimplus-touch-menu.component';\r\nexport * from './lib/components/bimplus-project-menu/bimplus-project-menu.component';\r\nexport * from './lib/services/language-strings.service';\r\nexport * from './lib/types/types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"bimplus-navigation.mjs","names":[],"sources":["../../../../projects/@bimplus/navigation/src/lib/navigation.service.ts","../../../../projects/@bimplus/navigation/src/lib/navigation.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.ts","../../../../projects/@bimplus/navigation/src/lib/utils/utils.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-contact/bimplus-contact.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-contact/bimplus-contact.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-navbar/logo-state.enum.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-navbar/bimplus-navbar.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-navbar/bimplus-navbar.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-notify/bimplus-notify.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-notify/bimplus-notify.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-upgrade-link/bimplus-upgrade-link.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-upgrade-link/bimplus-upgrade-link.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-zoom/bimplus-zoom.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-zoom/bimplus-zoom.component.html","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.ts","../../../../projects/@bimplus/navigation/src/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.html","../../../../projects/@bimplus/navigation/src/lib/services/language-strings.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NavigationService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-navigation',\r\n imports: [],\r\n template: `\r\n <p>\r\n navigation works!\r\n </p>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.Eager,\n styles: ``\r\n})\r\nexport class NavigationComponent {\r\n\r\n}\r\n","\r\nimport { Component, ViewEncapsulation, Input, signal, WritableSignal, inject, ChangeDetectionStrategy } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { LocalizedStrings } from './../../types/types'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-localized-widget',\r\n imports: [TranslateModule],\r\n providers: [TranslateService],\r\n template: `\r\n <p>\r\n localized widget works!\r\n </p>\r\n `,\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLocalizedWidgetComponent {\r\n translateService = inject(TranslateService);\r\n\r\n\r\n _selectedLanguage: WritableSignal<string> = signal('en');\r\n get selectedLanguage(): string {\r\n return this._selectedLanguage();\r\n }\r\n @Input() set selectedLanguage(value: string) {\r\n this._selectedLanguage.set(value);\r\n this.translateService.use(value);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, this._localizedStrings());\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n _localizedStrings: WritableSignal<LocalizedStrings> = signal({} as LocalizedStrings);\r\n get localizedStrings(): LocalizedStrings {\r\n return this._localizedStrings();\r\n }\r\n @Input() set localizedStrings(value: LocalizedStrings) {\r\n this._localizedStrings.set(value);\r\n this.translateService.use(this.selectedLanguage);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, value);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","// Define the type of the window.BimPlus object\r\nexport interface BimPlusObject {\r\n [key: string]: (dataDetail: { detail: unknown }) => void;\r\n}\r\nexport interface Source {\r\n[key: string]: { emit: (arg0: unknown) => void; };\r\n}\r\n\r\n\r\n/**--------------------------------------------------------------------------\r\n* fire event from component in two ways : \r\n- fire custom event from component in standard recommended way via. this.eventName.emit function\r\n\r\n- call window.BimPlus.eventName function directly on window object (eventName is name\r\n of the event we want to fire e.g. bimplusNavbarClicked so it will be window.BimPlus.bimplusNavbarClicked).\r\n Function must be defined in app. where we are using our components.\r\n This was implemented because MS Edge browser has problems with custom events and in some \r\n situations(e.g. after file download) it stops handling custom events.\r\n Disadvantage is that we can have only one event handler which is shared between the multiple components.\r\n--------------------------------------------------------------------------*/\r\nexport function fireEvent(source: unknown, eventName: string, data: unknown = null){\r\n if ( !eventName ) {\r\n console.error(\"ERROR: Missing event name in fireEvent function in Bimplus components!\");\r\n return;\r\n }\r\n // Check if eventName exists on window.BimPlus and if it's a function\r\n const bimPlus = ('BimPlus' in window) && typeof window.BimPlus === 'object' && (window.BimPlus as BimPlusObject);\r\n if (bimPlus && typeof bimPlus[eventName] === 'function') {\r\n bimPlus[eventName]({detail: data});\r\n }\r\n\r\n const _source = (source as Source);\r\n if (eventName in _source) {\r\n _source[eventName].emit(data);\r\n }\r\n}","\r\nimport { Component, ViewEncapsulation, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../../components/bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-contact',\r\n imports: [TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-contact.component.html',\r\n styleUrl: './bimplus-contact.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusContactComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(){\r\n super();\r\n }\r\n \r\n @Output() bimplusContactClicked = new EventEmitter<string>();\r\n\r\n _contactClicked(){\r\n fireEvent(this, \"bimplusContactClicked\", \"contact\");\r\n }\r\n}\r\n","<a\r\n href=\"https://connect.allplan.com/support/contact.ct?SSO=1&autolang\"\r\n class=\"bimplus-contact-link\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n (click)=\"_contactClicked()\"\r\n [title]=\"'_BimplusContactTitle' | translate\"\r\n>\r\n <div class=\"bimplus-contact\"></div>\r\n</a>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, ChangeDetectionStrategy } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-language-menu',\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-language-menu.component.html',\r\n styleUrl: './bimplus-language-menu.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLanguageMenuComponent {\r\n\r\n _languagesList = [\r\n { symbol: \"cs\", text: \"Čeština\"},\r\n { symbol: \"de\", text: \"Deutsch\"},\r\n { symbol: \"en\", text: \"English (UK)\"},\r\n { symbol: \"us\", text: \"English (US)\"},\r\n { symbol: \"es\", text: \"Español\"},\r\n { symbol: \"fr\", text: \"Français\"},\r\n { symbol: \"it\", text: \"Italiano\"},\r\n { symbol: \"ru\", text: \"Русский\"},\r\n { symbol: \"ro\", text: \"Romana\"},\r\n { symbol: \"tr\", text: \"Türkçe\"}\r\n ];\r\n\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Input({ transform: booleanAttribute }) expandUp : boolean = false;\r\n _menuOpened : boolean = false;\r\n\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n _switchLanguage( language: string ){\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n</div>\r\n<div data-test=\"language-menu-dropdown\"\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\" [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\" >\r\n <div class='main-icon icon-languages'></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n\r\n <ul class= \"bimcomp-dropdown-menu\" [ngClass]=\"{'open':_menuOpened, 'expand-up':expandUp }\">\r\n @for (languageItem of _languagesList; track languageItem) {\r\n <li [attr.data-test]=\"'langmenu_item_' + languageItem.text\"\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"selectedLanguage === languageItem.symbol ? 'selected' : ''\"\r\n (click)=\"_switchLanguage(languageItem.symbol)\"\r\n (keypress)=\"_switchLanguage(languageItem.symbol)\"\r\n >\r\n <span>{{languageItem.text}}</span>\r\n </li>\r\n }\r\n </ul>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, booleanAttribute, ChangeDetectionStrategy } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { MenuListType } from '../../types/types';\r\n\r\nexport interface BimplusProjectMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-project-menu',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-project-menu.component.html',\r\n styleUrl: './bimplus-project-menu.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusProjectMenuComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(){\r\n super()\r\n }\r\n\r\n @Input() projectName: string = \"\";\r\n @Input() projectImageUrl: string = \"\";\r\n @Input() projectExplorerUrl: string = \"\";\r\n @Input() projectActiveItem: string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute }) projectmembersVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible: boolean = true;\r\n\r\n @Input({ transform: booleanAttribute }) isCollapsed: boolean = false;\r\n @Input({ transform: booleanAttribute }) isMiniMode: boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch: boolean = false;\r\n @Input({ transform: booleanAttribute }) hideMenuIcons: boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons: boolean = false;\r\n @Input() menuItemsOrder : string[] = [];\r\n @Input({ transform: booleanAttribute }) showCoworkBackups: boolean = false;\r\n\r\n get prjImgUrl() {\r\n return this.projectImageUrl ? this.projectImageUrl : \"./assets/@bimplus/navigation/assets/bimplus_Components_Project_Pic_Default.webp\";\r\n }\r\n get backgroundValue() {\r\n return `linear-gradient(rgba(245, 245, 245, 0.8),rgba(245, 245, 245, 0.5) 25%, 75%, rgba(245, 245, 245, 0.8)), url(${this.projectImageUrl ? this.projectImageUrl : './assets/@bimplus/navigation/assets/bimplus_Components_Project_Pic_Default.webp'})`;\r\n }\r\n\r\n get prjImageOverlayStyle() {\r\n return { 'background': `${this.backgroundValue}` };\r\n }\r\n\r\n get prjImageStyle() {\r\n return { 'background': `url(${this.prjImgUrl})` };\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n * and also it serves as info topic id\r\n --------------------------------------------------------------------------*/\r\n _menuPrjList: MenuListType[] = [\r\n { action: \"projectmembers\", id: \"portalBimUsers\", type: \"\", class: \"bim-pm-icon-users\", textId: \"_Project_members_tooltip\", textIdDisabled: \"_Insufficient rights title\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"models\", id: \"portalBimModels\", type: \"\", class: \"bim-pm-icon-models\", textId: \"_Models_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"documents\", id: \"portalBimDocuments\", type: \"\", class: \"bim-pm-icon-documents\", textId: \"_Documents_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"projectsettings\", id: \"portalBimProjectSettings\", type: \"\", class: \"bim-pm-icon-project-settings\", textId: \"_Project_settings_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"processes\", id: \"portalBimProcesses\", type: \"\", class: \"bim-pm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" }\r\n ];\r\n\r\n get menuItems() : MenuListType[] {\r\n const items = this._menuPrjList.sort((a, b) => this.menuItemsOrder.indexOf(a.id) - this.menuItemsOrder.indexOf(b.id));\r\n \r\n const docs = items.find(item => item.id === \"portalBimDocuments\");\r\n if(docs) {\r\n docs.textId = this.showCoworkBackups ? \"_Backups_Tooltip\" : \"_Documents_tooltip\";\r\n }\r\n\r\n return items;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuListType): boolean {\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n\r\n return !((this as unknown as BimplusProjectMenuComponentAttribute)[key]);\r\n }\r\n return false;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item: MenuListType): boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Disabled`;\r\n return !!(this as unknown as BimplusProjectMenuComponentAttribute)[key];\r\n }\r\n return false;\r\n }\r\n\r\n\r\n _projectMenuItemClicked(action: string, param: string) {\r\n console.log(action, param);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n* item clicked\r\n--------------------------------------------------------------------------*/\r\n _menuItemClicked(item: MenuListType, type: string, event: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n console.log(item, type, event);\r\n\r\n\r\n if (type != \"info\") {\r\n if (this._isDisabled(item)) {\r\n return;\r\n }\r\n }\r\n const action = item.action;\r\n fireEvent(this, \"bimplusProjectMenuClicked\", { action, type });\r\n }\r\n\r\n _menuItemIgnoreAction(event: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n _getPrjItemClassAttributes(item: MenuListType, isTouch: boolean) {\r\n const retval: string = `${this._isDisabled(item) ? 'disabled' : ''} ${isTouch ? '' : 'hover-show-info'}`;\r\n return retval;\r\n }\r\n\r\n _getPrjIconClassAttributes(item: MenuListType) {\r\n const retval: string = `${item.class} ${item.action === this.projectActiveItem ? 'active' : ''} ${this._isDisabled(item) ? 'disabled' : ''}`;\r\n return retval;\r\n }\r\n}\r\n","<ng-template #navigationPrjList>\r\n@for(item of menuItems; track item.id){\r\n @if (!_isHidden(item)){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\"\r\n (click)=\"_menuItemClicked(item, 'normal',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'normal',$event)\"\r\n >\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'info',$event)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<ng-template #navigationPrjListThumbnail>\r\n@for(item of menuItems; track item.id){\r\n @if (!_isHidden(item) && (isCollapsed || item.action !== 'processes' )){\r\n <!--* navigationPrjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\"\r\n (click)=\"_menuItemClicked(item, 'normal',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'normal',$event)\"\r\n >\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'info',$event)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<div class=\"bim-pm-prj-container\"\r\n [ngClass]=\"{ collapsed: isCollapsed, 'mini-mode': isMiniMode, 'is-touch': isTouch }\"\r\n >\r\n @if (isMiniMode && !isCollapsed) {\r\n <div class=\"bim-pm-prj-details-mini\">\r\n <div class=\"bim-pm-prj-image-bkg-mini\"\r\n [ngStyle]=\"prjImageOverlayStyle\">\r\n <div class=\"bim-pm-prj-image-thumbnail\" [ngStyle]=\"prjImageStyle\"></div>\r\n </div>\r\n <div class=\"bim-pm-prj-name-mini\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass]=\"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"navigationPrjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n <a href={{projectExplorerUrl}} class=\"bim-pm-prj-details\"\r\n [ngStyle]=\"prjImageOverlayStyle\"\r\n (dblclick)=\"_projectMenuItemClicked('prjimagedblclick','normal')\"\r\n (click)=\"_projectMenuItemClicked('prjimageclick','normal')\"\r\n [title]=\"'_ModelThumbnailTooltip' | translate\">\r\n\r\n <div class=\"bim-pm-prj-image\" [ngStyle]=\"prjImageStyle\">\r\n <div class=\"bim-pm-prj-items-overlay\" [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\">\r\n </div>\r\n <div\r\n class=\"bim-pm-prj-items-list\"\r\n [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\"\r\n >\r\n @if (!hideMenuIcons && !showHorizontalMenuIcons){\r\n <ng-container *ngTemplateOutlet=\"navigationPrjListThumbnail\">\r\n </ng-container>\r\n }\r\n </div>\r\n <div class=\"bim-pm-prj-name\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass] = \"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"navigationPrjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusProjectMenuComponent} from './../bimplus-project-menu/bimplus-project-menu.component';\r\nimport {BimplusLocalizedWidgetComponent} from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {MenuListType} from '../../types/types';\r\n\r\nconst MenuListTypeId = {\r\n PORTAL_TEAM_MANAGEMENT_BTN: 'portalTeamManagementBtn',\r\n PORTAL_PROPERTY_MANAGER_BTN: 'portalPropertyManagerBtn',\r\n PORTAL_BIM_USERS: 'portalBimUsers',\r\n PORTAL_BIM_MODELS: 'portalBimModels',\r\n PORTAL_BIM_DOCUMENTS: 'portalBimDocuments',\r\n PORTAL_BIM_PROJECT_SETTINGS: 'portalBimProjectSettings',\r\n PORTAL_BIM_PROCESSES: 'portalBimProcesses',\r\n DIVIDER_PROJECT_MANAGEMENT: 'dividerprojectmanagement',\r\n PORTAL_BIM_VIEWER_BTN: 'portalBimViewerBtn',\r\n PORTAL_CLOUD_VIEWER_BTN: 'portalCloudViewerBtn',\r\n PORTAL_CONNEXIS_BTN: 'portalConnexisBtn',\r\n PORTAL_BIM_AUTOCONVERTER_BTN: 'portalBimAutoconverterBtn',\r\n DIVIDERAPPS: 'dividerapps',\r\n PORTAL_ADD_INS_BTN: 'portalAddInsBtn',\r\n PORTAL_SHOP_BTN: 'portalShopBtn',\r\n PORTAL_GET_YOUR_TEAM_BTN: 'portalGetYourTeamBtn',\r\n PORTAL_TRY_BIMPLUS_PRO_BTN: 'portalTryBimplusProBtn',\r\n} as const;\r\n\r\nexport interface BimplusMainMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-main-menu',\r\n imports: [CommonModule, TranslateModule, BimplusProjectMenuComponent],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-main-menu.component.html',\r\n styleUrl: './bimplus-main-menu.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges {\r\n constructor(){\r\n super();\r\n }\r\n\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isIpadApp : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input({ transform: booleanAttribute }) hideProjectMenuIcons : boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons : boolean = false;\r\n @Input() projectName : string = \"\";\r\n @Input() projectImageUrl : string = \"\";\r\n @Input() projectExplorerUrl : string = \"\";\r\n @Input() projectActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled : boolean = false;\r\n @Input() footerActiveItem : string = \"\";\r\n @Input() menuActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) isCollapsed : boolean = false;\r\n @Input({ transform: booleanAttribute }) showOverlay : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) autoconverterSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) bimexplorerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) autoconverterDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) shopDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) addinsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimplusProjectMenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectmembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimexplorerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) autoconverterVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) teammembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) propertymanagerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) shopVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) addinsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerprojectmanagementVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerappsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) getYourTeamVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) tryBimplusProVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) cloudviewerVisible : boolean = true;\r\n @Input() appsWithInfo : string[] = [];\r\n @Input() appsOrder : string[] = [];\r\n @Input() menuItemsOrder : string[] = [];\r\n @Input({ transform: booleanAttribute }) showCoworkBackups: boolean = false;\r\n\r\n @Output() bimplusMainMenuClicked = new EventEmitter<{ action: string, type: string }>();\r\n @Output() bimplusMainMenuOverlayClicked = new EventEmitter<void>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue);\r\n }\r\n }\r\n\r\n get apps(): MenuListType[] {\r\n let appsList = this.appsList.slice().sort((a, b) => this.appsOrder.indexOf(a.id) - this.appsOrder.indexOf(b.id));\r\n\r\n // if not modelsVisible remove PORTAL_BIM_MODELS.\r\n if (!this.modelsVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_BIM_MODELS);\r\n }\r\n\r\n // if not processesVisible remove PORTAL_BIM_PROCESSES.\r\n if (!this.processesVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_BIM_PROCESSES);\r\n }\r\n\r\n // if not cloudviewerVisible remove PORTAL_CLOUD_VIEWER_BTN.\r\n if (!this.cloudviewerVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_CLOUD_VIEWER_BTN);\r\n }\r\n\r\n // if not bimexplorerVisible remove PORTAL_BIM_VIEWER_BTN.\r\n if (!this.bimexplorerVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_BIM_VIEWER_BTN);\r\n }\r\n\r\n // if not autoconverterVisible remove PORTAL_AUTOCONVERTER_BTN.\r\n if (!this.autoconverterVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_BIM_AUTOCONVERTER_BTN);\r\n }\r\n\r\n // if not dividerappsVisible remove DIVIDERAPPS divider.\r\n if (!this.dividerappsVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n // if teammembersDisabled remove PORTAL_TEAM_MANAGEMENT_BTN.\r\n if (this.teammembersDisabled) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN);\r\n }\r\n\r\n // if propertymanagerDisabled remove PORTAL_PROPERTY_MANAGER_BTN.\r\n if (this.propertymanagerDisabled) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN);\r\n }\r\n\r\n // if isTouch remove property manager btn. & approvals btn.\r\n if(this.isTouch) {\r\n appsList = appsList.filter(({ id }) => \r\n id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN && \r\n id !== MenuListTypeId.PORTAL_BIM_PROCESSES\r\n );\r\n }\r\n\r\n const docs = appsList.find(item => item.id === MenuListTypeId.PORTAL_BIM_DOCUMENTS);\r\n if(docs) {\r\n docs.textId = this.showCoworkBackups ? \"_Backups\" : \"_Files\";\r\n }\r\n\r\n\r\n return appsList;\r\n }\r\n\r\n get footerList(): MenuListType[] {\r\n let footerList = this._menuFooterList.filter(item => this._isSubscribed(item) && !this._isHidden(item));\r\n\r\n // in case that \"Get Your Team\" is not visible and teammembers are disabled then remove divider first, or is not isTouch mode\r\n if (this.teammembersDisabled || !this.isTouch) {\r\n footerList = footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n // if team is assigned then remove \"Get Your Team\" button\r\n if (!this.getYourTeamVisible) {\r\n return footerList.filter(({ id }) => id !== MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN);\r\n }\r\n\r\n // remove divider if there is no \"Get Your Team\" button\r\n return footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed\r\n --------------------------------------------------------------------------*/\r\n _isSubscribed(item:MenuListType):boolean {\r\n\r\n if (item.checkSubscription) {\r\n const key = `${item.action}Subscribed`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return true;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is clickable\r\n --------------------------------------------------------------------------*/\r\n _isClickable(item:MenuListType):boolean {\r\n\r\n if (item.clickPolicy === \"noProjectNoSubscription\") {\r\n return this.projectName !== \"\";\r\n }\r\n return true;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item:MenuListType):boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n return !((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return false;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is disabled\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item:MenuListType) {\r\n const key = `${item.action}Disabled`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n\r\n _getContextData(item: MenuListType, active: boolean, disabled: boolean, clickable: boolean, selected: boolean) {\r\n return {\r\n item: item,\r\n active: active,\r\n disabled: disabled,\r\n clickable: clickable,\r\n selected: selected,\r\n showInfoIcon: this.appsWithInfo.includes(item.id)\r\n };\r\n }\r\n\r\n _openPrjBtn:MenuListType = { action:\"openProject\", id:\"portalSelectProjectBtn\",type:\"\", class: \"bim-mm-icon-folder\", textId: \"_Portal_Menu_Open_Project\", textIdDisabled: \"_Portal_Menu_Open_Project\",disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"};\r\n\r\n contextData = {item:\"haha\",active:true,disabled:true,clickable:true,selected:true};\r\n\r\n\r\n appsList: MenuListType[] = [\r\n { action:\"projectmembers\", id: MenuListTypeId.PORTAL_BIM_USERS, type:\"\", class: \"bim-mm-icon-users\", textId: \"_projectStatisticsMembers\", textIdDisabled: \"_projectStatisticsMembers\", disabledTitle:\"_Insufficient rights title\",checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"models\", id: MenuListTypeId.PORTAL_BIM_MODELS, type:\"\",class: \"bim-mm-icon-models\", textId: \"_Divisions\", textIdDisabled: \"_Divisions\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"documents\", id: MenuListTypeId.PORTAL_BIM_DOCUMENTS, type:\"\",class: \"bim-mm-icon-documents\", textId: \"_Files\", textIdDisabled: \"_Files\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"projectsettings\", id: MenuListTypeId.PORTAL_BIM_PROJECT_SETTINGS, type:\"\",class: \"bim-mm-icon-project-settings\", textId: \"_Settings\", textIdDisabled: \"_Settings\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"processes\", id: MenuListTypeId.PORTAL_BIM_PROCESSES, type:\"\",class: \"bim-mm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"_Approvals\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"\",id: MenuListTypeId.DIVIDER_PROJECT_MANAGEMENT, type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"bimexplorer\", id: MenuListTypeId.PORTAL_BIM_VIEWER_BTN, type:\"\",class: \"bim-mm-icon-bim-explorer\", textId: \"BIM Explorer\", textIdDisabled: \"BIM Explorer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"cloudviewer\", id: MenuListTypeId.PORTAL_CLOUD_VIEWER_BTN, type:\"\",class: \"bim-mm-icon-cloud-viewer\", textId: \"Model Viewer\", textIdDisabled: \"Model Viewer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"autoconverter\", id: MenuListTypeId.PORTAL_BIM_AUTOCONVERTER_BTN, type:\"\",class: \"bim-mm-icon-autoconverter\", textId: \"Autoconverter\", textIdDisabled: \"Autoconverter\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false, clickPolicy: \"noProjectNoSubscription\"},\r\n\r\n { action:\"\",id: MenuListTypeId.DIVIDERAPPS, type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"teammembers\", id: MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN, type:\"\", class: \"bim-mm-icon-team-members\", textId: \"_Portal_Menu_Team_Members\", textIdDisabled: \"_Portal_Menu_Team_Members\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"propertymanager\", id: MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN, type:\"\",class: \"bim-mm-icon-property-manager\", textId: \"_Portal_Menu_Properties\", textIdDisabled: \"_Portal_Menu_Properties\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n ];\r\n\r\n _menuFooterList: MenuListType[] = [\r\n { action:\"\",id: MenuListTypeId.DIVIDERAPPS, type:\"divider\", class: \"bim-mm-app-item-divider\",checkSubscription: false,devOrStageOnly : false } as MenuListType,\r\n { action:\"addins\", id: MenuListTypeId.PORTAL_ADD_INS_BTN, type:\"\", class: \"bim-mm-icon-add-ins\", textId: \"_AddIns\", textIdDisabled: \"_AddIns\", disabledTitle:'', checkSubscription: false, devOrStageOnly : false, clickPolicy: \"\"},\r\n { \r\n action:\"getYourTeam\", \r\n id: MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN,\r\n class: \"bim-mm-icon-get-your-team\", \r\n textId: \"_Get_Your_Team\", \r\n textIdDisabled: \"_Get_Your_Team\",\r\n } as MenuListType,\r\n { \r\n action:\"tryBimplusPro\", \r\n id: MenuListTypeId.PORTAL_TRY_BIMPLUS_PRO_BTN,\r\n class: \"bim-mm-icon-try-bimplus-pro\", \r\n textId: \"_Try_Bimplus_Pro\", \r\n textIdDisabled: \"_Try_Bimplus_Pro\",\r\n } as MenuListType, \r\n { action:\"shop\", id: MenuListTypeId.PORTAL_SHOP_BTN, type:\"\",class: \"bim-mm-icon-shop\", textId: \"_Get_More\", textIdDisabled: \"_Get_More\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"}\r\n ];\r\n\r\n _overlayClicked(){\r\n fireEvent(this, \"bimplusMainMenuOverlayClicked\");\r\n }\r\n\r\n _mainMenuItemClicked(item: MenuListType,type:string,event: Event | undefined ){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n if(type != \"info\") {\r\n if (this._isDisabled(item)){\r\n return;\r\n }\r\n }\r\n\r\n const action = item.action;\r\n fireEvent(this,\"bimplusMainMenuClicked\", {action,type:type } );\r\n }\r\n}\r\n","<ng-template #appNavigationItemContent let-contextData>\r\n @if (contextData.item.type === 'divider') {\r\n <div class=\"bim-mm-app-item\" [class]=\"contextData.item.class\" [id]=\"contextData.item.id\"></div>\r\n } @else {\r\n <div class=\"bim-mm-app-item\" [id]=\"contextData.item.id\"\r\n [ngClass]=\"isTouch?'':'hover-show-info '+(contextData.active?'active ':' ') +(contextData.disabled?'disabled ':' ')+(contextData.clickable?' ':'not-clickable ')+(contextData.selected?'selected ':' ')\"\r\n [title] =\"((contextData.disabled) ? (contextData.item.disabledTitle | translate) : '' )\"\r\n >\r\n <div class=\"bim-mm-app-item-details\"\r\n [ngClass] = \" contextData.clickable ? '' : 'not-clickable' \"\r\n (click)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\"\r\n (keypress)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\">\r\n <div class=\"bim-mm-icon\"\r\n [ngClass]=\"contextData.item.class + (contextData.active?' active':'') + (contextData.disabled?' disabled ':'')\">\r\n </div>\r\n <span>{{(contextData.isDisabled && (contextData.item.textIdDisabled !==\"\") ? contextData.item.textIdDisabled : contextData.item.textId) | translate}}</span>\r\n </div>\r\n @if(contextData.showInfoIcon){\r\n <div class=\"bim-mm-app-item-info bim-mm-icon bim-mm-icon-info\"\r\n (click)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\"\r\n (keypress)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\">\r\n </div>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n<div\r\n class=\"bim-mm-wrapper\"\r\n [ngClass]=\"showOverlay ? 'bim-mm-overlay' : ''\"\r\n (click)=\"_overlayClicked()\"\r\n (keypress)=\"_overlayClicked()\"\r\n >\r\n <div class= \"bim-mm-container\">\r\n @if(!_isHidden(_openPrjBtn)){\r\n <ng-container\r\n *ngTemplateOutlet=\"appNavigationItemContent; context: { $implicit: _getContextData(_openPrjBtn,projectActiveItem === 'projectlist',_isDisabled(_openPrjBtn),true,projectActiveItem === 'projectlist') }\"\r\n ></ng-container>\r\n }\r\n\r\n @if(bimplusProjectMenuVisible){\r\n <lib-bimplus-project-menu\r\n projectName = {{projectName}}\r\n projectImageUrl = {{projectImageUrl}}\r\n projectExplorerUrl = {{projectExplorerUrl}}\r\n projectActiveItem = {{projectActiveItem}}\r\n projectmembersDisabled = {{projectmembersDisabled}}\r\n modelsDisabled = {{modelsDisabled}}\r\n documentsDisabled = {{documentsDisabled}}\r\n projectsettingsDisabled = {{projectsettingsDisabled}}\r\n processesDisabled = {{processesDisabled}}\r\n projectmembersVisible = {{projectmembersVisible}}\r\n modelsVisible = {{modelsVisible}}\r\n documentsVisible = {{documentsVisible}}\r\n projectsettingsVisible = {{projectsettingsVisible}}\r\n processesVisible = {{processesVisible}}\r\n isCollapsed = {{isCollapsed}}\r\n isMiniMode = {{isTouch}}\r\n isTouch = {{isTouch}}\r\n hideMenuIcons = {{hideProjectMenuIcons}}\r\n showHorizontalMenuIcons = {{showHorizontalMenuIcons}}\r\n [menuItemsOrder]=\"menuItemsOrder\"\r\n ></lib-bimplus-project-menu>\r\n }\r\n <div [ngClass]=\"apps.length || footerList.length ? 'bim-mm-apps-container' : ''\">\r\n <div class=\"bim-mm-apps-list\">\r\n @for (appItem of apps; track appItem) {\r\n <div>\r\n <ng-container\r\n *ngTemplateOutlet=\"appNavigationItemContent; context: { $implicit: _getContextData(appItem,!_isSubscribed(appItem),_isDisabled(appItem),_isClickable(appItem),menuActiveItem === appItem.action)}\"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"bim-mm-footer-container\">\r\n @for (footerItem of footerList; track footerItem) {\r\n <div>\r\n <ng-container\r\n *ngTemplateOutlet=\"appNavigationItemContent; context: { $implicit: _getContextData(footerItem,footerActiveItem === footerItem.action,_isDisabled(footerItem),true,false)}\"\r\n ></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","export enum LogoState {\r\n BimplusViewer = 'bimplusViewer', // Bimplus logo\r\n ModelViewerBlack = 'modelViewerBlack', // Model viewer black logo\r\n ModelViewer = 'modelViewer', // Cloud viewer logo\r\n ConnexisViewer = 'connexisViewer', // Connexis viewer logo\r\n ConnexisViewerBlack = 'connexisViewerBlack' // Connexis viewer logo (black)\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, computed, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { LogoState } from './logo-state.enum';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-navbar',\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './bimplus-navbar.component.html',\r\n styleUrl: './bimplus-navbar.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusNavbarComponent extends BimplusLocalizedWidgetComponent {\r\n @Input() projectInfo : string = \"\";\r\n @Input() teamInfo : string = \"\";\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input() teamInfoOffset : string = \"\";\r\n @Input({ transform: booleanAttribute }) isNavbarMenuVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarInfoVisible : boolean = false;\r\n logoState = input<LogoState>(LogoState.BimplusViewer);\r\n isModelViewerActive = input(false , { transform: booleanAttribute });\r\n @Input({ transform: booleanAttribute }) isNavbarMessageVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuEnabled : boolean = true;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDashboardTooltipEnabled: boolean = true;\r\n\r\n @Output() bimplusNavbarClicked = new EventEmitter<string>();\r\n\r\n // Make the enum available in the template\r\n public LogoState = LogoState;\r\n\r\n public readonly logoTooltipSignal = computed<string>(() => {\r\n if (this.isModelViewerActive()) {\r\n return \"_Open_new_file\";\r\n }\r\n\r\n return (this.isDashboardTooltipEnabled ? '_dashboard_tooltip' : '');\r\n });\r\n\r\n protected readonly logoStateSignal = computed<LogoState>(() => {\r\n if (this.isModelViewerActive()) {\r\n return LogoState.ModelViewerBlack;\r\n }\r\n\r\n return this.logoState();\r\n });\r\n\r\n _menuClicked() {\r\n if ( this.isNavbarMenuEnabled ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"menu\");\r\n }\r\n }\r\n\r\n _logoClicked() {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"logo\");\r\n }\r\n\r\n _projectInfoClicked() {\r\n if ( this.isDev ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"project\");\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"bimplus-navbar\"\r\n [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n >\r\n <div class=\"bimplus-navbar-logo-container\">\r\n <div\r\n class=\"bimplus-logo\"\r\n [ngClass]=\"{\r\n 'model-viewer': logoStateSignal() === LogoState.ModelViewer,\r\n 'model-viewer-black': logoStateSignal() === LogoState.ModelViewerBlack,\r\n 'connexis-viewer': logoStateSignal() === LogoState.ConnexisViewer,\r\n 'connexis-viewer-black': logoStateSignal() === LogoState.ConnexisViewerBlack,\r\n 'burger-menu-not-visible': !isNavbarMenuVisible\r\n }\"\r\n (click)=\"_logoClicked()\"\r\n (keypress)=\"_logoClicked()\"\r\n [title]=\"logoTooltipSignal() | translate\"\r\n ></div>\r\n\r\n <div\r\n class=\"bimplus-navbar-menu icon\"\r\n [ngClass]=\"{'active':isNavbarMenuActive, 'hidden': !isNavbarMenuVisible, 'disabled': !isNavbarMenuEnabled}\"\r\n (click)=\"_menuClicked()\"\r\n (keypress)=\"_menuClicked()\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-container\">\r\n <div\r\n class=\"bimplus-navbar-info\"\r\n [ngClass]=\"{'hidden': !isNavbarInfoVisible}\"\r\n [style.margin-left]=\"teamInfoOffset\"\r\n >\r\n <span class=\"team\">{{teamInfo}}</span>\r\n @if (projectInfo && !isTouch) {\r\n <span>&nbsp;&nbsp; -&nbsp;&nbsp;</span>\r\n }\r\n <span\r\n class=\"project\"\r\n [ngClass]=\"isDev ? 'clickable' : ''\"\r\n (click)=\"_projectInfoClicked()\"\r\n (keypress)=\"_projectInfoClicked()\"\r\n >\r\n {{projectInfo}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-slot\">\r\n <slot></slot>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation, ElementRef, AfterViewInit, AfterViewChecked, inject, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport SimpleBar from 'simplebar';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-scrollable-container',\r\n imports: [],\r\n templateUrl: './bimplus-scrollable-container.component.html',\r\n styleUrl: './bimplus-scrollable-container.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class BimplusScrollableContainerComponent implements AfterViewInit, AfterViewChecked {\r\n private readonly elementRef = inject(ElementRef);\r\n\r\n _simpleBar!: SimpleBar;\r\n _element: HTMLElement;\r\n protected _scrollableContainerClassName: string = '.scrollable-container';\r\n\r\n constructor(){\r\n this._element = this.elementRef.nativeElement;\r\n }\r\n\r\n private _initializationSimpleScrollBar(): void {\r\n // init simple bar scrollbar\r\n const scrollableContainer: HTMLElement | null = this._element?.querySelector(this._scrollableContainerClassName);\r\n if (!scrollableContainer) {\r\n console.error('No scrollable container found in the element.');\r\n return;\r\n }\r\n this._simpleBar = new SimpleBar(scrollableContainer);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._initializationSimpleScrollBar();\r\n }\r\n\r\n private _recalculateScrollbar(): void {\r\n if(!this._element) {\r\n return;\r\n }\r\n const _element = this._element;\r\n const barElem = _element?.querySelector(this._scrollableContainerClassName);\r\n if (!barElem){\r\n return;\r\n }\r\n\r\n if (!this._simpleBar) {\r\n console.error('No scrollable container found in the element.');\r\n return;\r\n }\r\n\r\n this._simpleBar.recalculate();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this._recalculateScrollbar();\r\n }\r\n}\r\n","<div class=\"scrollable-container\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges, OnInit, HostBinding, ChangeDetectionStrategy } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { BimplusLocalizedWidgetComponent } from './../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { BimplusScrollableContainerComponent } from './../bimplus-scrollable-container/bimplus-scrollable-container.component';\r\n\r\nconst BIMPLUS_NOTIFY_MESSAGES = \"bimplus-notify-messages\";\r\ninterface MessageModel {\r\n 'id': string | undefined,\r\n 'type': string | undefined,\r\n 'title': string | undefined,\r\n 'text': string | undefined,\r\n 'link': string | undefined,\r\n 'linkText': string | string[] | undefined,\r\n 'links': string[] | undefined,\r\n 'actionId': number | undefined,\r\n 'capitalizedTitle': string | boolean | undefined\r\n}\r\n@Component({\r\n selector: 'lib-bimplus-notify',\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n BimplusScrollableContainerComponent\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-notify.component.html',\r\n styleUrl: './bimplus-notify.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class BimplusNotifyComponent extends BimplusLocalizedWidgetComponent implements OnChanges, OnInit{\r\n constructor(){\r\n super();\r\n }\r\n\r\n // Expose Array constructor as a property\r\n Array = Array;\r\n \r\n @HostBinding('class.new-messages')\r\n get newMessages() {\r\n return this._alertActive;\r\n }\r\n\r\n @HostBinding('class.bim-notify')\r\n get bimNotify() {\r\n return true; // Or you can use a condition here if needed\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of messages\r\n --------------------------------------------------------------------------*/\r\n _messagesList: MessageModel[] = [];\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messagePreviewTime : number = 3000; // in ms\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) showMessagePreview : boolean = true;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesLimit : number = 3;\r\n\r\n /**--------------------------------------------------------------------------\r\n * offset of preview messages from main icon\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesOffsetY : string = '2.7em';\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messages : string = '';\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['messages']) {\r\n const newValue = changes['messages'].currentValue;\r\n this.updateMessages(newValue);\r\n }\r\n }\r\n\r\n updateMessages(newValue: string /*, oldValue: string*/) {\r\n const isOk = newValue && typeof newValue === 'string';\r\n if (!isOk) {\r\n this._messagesList = [];\r\n this._previewMessagesList = [];\r\n this._alertActive = false;\r\n return;\r\n }\r\n\r\n const msgData = JSON.parse(newValue);\r\n this._messagesList = msgData.messages;\r\n\r\n // filter new messages into the list for preview\r\n let newMessagesList = this._messagesList.filter( (msg) => this._oldMessagesList.findIndex( (oldMsg) => oldMsg.id === msg.id ) < 0 );\r\n newMessagesList = newMessagesList.filter( (item) => this._messageNotReadYet(item)); // filtering out allready read messages (stored in localstorage)\r\n\r\n // setup preview for new messages\r\n newMessagesList.slice().reverse().forEach( (newMsg) => {\r\n if ( this._previewMessagesList.findIndex( (item) => newMsg.id === item.id ) < 0){\r\n this._previewMessagesList.unshift(newMsg);\r\n\r\n if( this.messagePreviewTime > 0 ) {\r\n setTimeout(() => {\r\n this._closePreviewMessage(newMsg.id, false);\r\n }, this.messagePreviewTime);\r\n }\r\n }\r\n })\r\n\r\n // limit preview messages count\r\n this._previewMessagesList.length = this._previewMessagesList.length > this.previewMessagesLimit ? this.previewMessagesLimit : this._previewMessagesList.length;\r\n\r\n // set old state and alert\r\n this._oldMessagesList = this._messagesList;\r\n this._alertActive = this._messagesList.length != 0;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened: boolean = false;\r\n _alertActive: boolean = false;\r\n _oldMessagesList: MessageModel[] = [];\r\n // list of messages for preview\r\n _previewMessagesList: MessageModel[] = [];\r\n\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteMessage = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete all item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteAllMessages = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Message action event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyMessageAction = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * initial component load\r\n --------------------------------------------------------------------------*/\r\n ngOnInit(): void {\r\n this.updateMessages(this.messages);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close single message\r\n --------------------------------------------------------------------------*/\r\n _closeMessage( item: MessageModel, preview: boolean, event: Event | undefined ){\r\n if (preview) {\r\n return this._closePreviewMessage(item.id);\r\n }\r\n\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n fireEvent(this, \"bimplusNotifyDeleteMessage\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close preview message\r\n --------------------------------------------------------------------------*/\r\n _closePreviewMessage( msgId: string | undefined, closedByUser = true ){\r\n if (!msgId) {\r\n return;\r\n }\r\n\r\n this._previewMessagesList = this._previewMessagesList.filter( (msg) => msg.id !== msgId );\r\n this.storeMessagesAsRead([msgId]);\r\n if ( closedByUser && this._previewMessagesList.length === 0 ){\r\n this._alertActive = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close all messages\r\n --------------------------------------------------------------------------*/\r\n _deleteAllMessages(){\r\n fireEvent(this, \"bimplusNotifyDeleteAllMessages\");\r\n this.clearAllLocalStorageMessages();\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * message clicked\r\n --------------------------------------------------------------------------*/\r\n _messageAction( item: MessageModel, index: number ){\r\n item.actionId = index;\r\n fireEvent(this, \"bimplusNotifyMessageAction\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n this._alertActive = false;\r\n this._previewMessagesList = [];\r\n }\r\n\r\n _messageNotReadYet(message: MessageModel){\r\n if(!message?.id){\r\n return true;\r\n }\r\n const messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n if(!messageListString){\r\n return true;\r\n }\r\n return !messageListString.includes(message.id);\r\n }\r\n\r\n storeMessagesAsRead(messageList: string[]){\r\n if(!messageList || messageList.length <1){\r\n return;\r\n }\r\n let messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n messageListString ??= \"\";\r\n messageList.forEach((item: string)=>{\r\n if(!messageListString?.includes(item)){\r\n messageListString+=(item+\";\");\r\n }\r\n })\r\n window.localStorage.setItem(BIMPLUS_NOTIFY_MESSAGES,messageListString);\r\n }\r\n\r\n clearAllLocalStorageMessages(){\r\n window.localStorage.removeItem(BIMPLUS_NOTIFY_MESSAGES);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * get item link title\r\n --------------------------------------------------------------------------*/\r\n _getItemLinkTitle( item: MessageModel, index: number ){\r\n let itemLinksTitles: (string | undefined)[] = [];\r\n if ( item.linkText && (item.links || item.link)) {\r\n itemLinksTitles = Array.isArray(item.links) ? item.links : [item.link];\r\n }\r\n return itemLinksTitles[index] ?? '';\r\n }\r\n}\r\n","<div\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n [title]=\"'_BimplusNotifyTitle' | translate\"\r\n >\r\n <div class=\"dropdown-toggle\" >\r\n <div\r\n class=\"main-icon\"\r\n [ngClass]=\"'icon-notify' + (this._alertActive ? '-alert notify' : '')\"\r\n ></div>\r\n </div>\r\n\r\n <div\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"notify-tick\"></div>\r\n <div class=\"messages-title\">\r\n <div class=\"messages-count\">\r\n ({{this._messagesList.length}})\r\n </div>\r\n <div\r\n class=\"messages-delete-all\"\r\n (click)=\"_deleteAllMessages()\"\r\n (keypress)=\"_deleteAllMessages()\"\r\n >\r\n {{\"_Notify_Mark_All\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"messages-container\">\r\n @if (_messagesList.length) {\r\n <lib-bimplus-scrollable-container>\r\n @for (item of _messagesList; track item) {\r\n <div\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, false, $event)\"\r\n (keypress)=\"_closeMessage(item, false, $event)\"\r\n ></div>\r\n </div>\r\n <div class=\"message-item-body-text\">{{item.text}}</div>\r\n @if (item.linkText) {\r\n @for (link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); track link; let i = $index) {\r\n <div\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n (keypress)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n </lib-bimplus-scrollable-container>\r\n } @else {\r\n <div class=\"message-item-empty\">\r\n <div class=\"message-item-empty-icon\"></div>\r\n <div class=\"message-item-empty-text\">{{\"_Notify_No_Messages\" | translate}}</div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n\r\n<div\r\n class=\"bimcomp-messages-preview\"\r\n [ngClass]=\"(showMessagePreview && !_menuOpened && _previewMessagesList.length > 0) ? 'visible' : ''\"\r\n [style.top]=\"previewMessagesOffsetY\"\r\n >\r\n <div class=\"messages-container-preview\">\r\n @for (item of _previewMessagesList; track item) {\r\n <div\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, true, $event)\"\r\n (keypress)=\"_closeMessage(item, true, $event)\"\r\n ></div>\r\n </div>\r\n <div class=\"message-item-body-text\">\r\n {{item.text}}\r\n </div>\r\n @if (item.linkText) {\r\n @for (link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); track link; let i = $index) {\r\n <div\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n (keypress)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Output, EventEmitter, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-storage-info',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-storage-info.component.html',\r\n styleUrl: './bimplus-storage-info.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusStorageInfoComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(){\r\n super()\r\n }\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n usedStorage = input<number>(0);\r\n\r\n\r\n @Output() bimplusStorageInfoClicked = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * clicked storage info container\r\n --------------------------------------------------------------------------*/\r\n _infoClicked( action: string ){\r\n fireEvent(this, \"bimplusStorageInfoClicked\", action);\r\n }\r\n}\r\n","<div\r\n class=\"storage-info\"\r\n (click)=\"_infoClicked('storageInfo')\"\r\n (keypress)=\"_infoClicked('storageInfo')\"\r\n>\r\n <span class=\"progress-title\">\r\n {{\"_Common_Data_Environment_Quota\" | translate}}\r\n <span class=\"progress-text\" data-test=\"used-storage\">\r\n {{usedStorage()}}%\r\n </span>\r\n </span>\r\n <div class=\"storage-info-bar-container\">\r\n <div \r\n class=\"storage-info-bar\"\r\n [ngClass]=\"{\r\n 'red': usedStorage() >= 90,\r\n 'yellow': usedStorage() >= 80 && usedStorage() < 90,\r\n 'green': usedStorage() < 80\r\n }\"\r\n [style.width]=\"usedStorage() + '%'\"\r\n [style.max-width]=\"usedStorage() + '%'\"\r\n ></div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Output, EventEmitter, Input, booleanAttribute, ChangeDetectionStrategy } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-upgrade-link',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-upgrade-link.component.html',\r\n styleUrl: './bimplus-upgrade-link.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusUpgradeLinkComponent extends BimplusLocalizedWidgetComponent {\r\n constructor() {\r\n super();\r\n }\r\n\r\n private _getLangParamValue(symbol: string) {\r\n const langMap: Record<string, string> = {\r\n en: '1',\r\n fr: '2',\r\n de: '3',\r\n cs: '1', // only in English, so use fallback\r\n es: '1', // only in English, so use fallback\r\n it: '1', // only in English, so use fallback\r\n ru: '1', // only in English, so use fallback\r\n ro: '1', // only in English, so use fallback\r\n tr: '1', // only in English, so use fallback\r\n };\r\n\r\n const lang = langMap[symbol];\r\n return `&lang=${lang ? lang : \"1\"}`;\r\n }\r\n\r\n private _getCountryIsoParam(symbol: string): string {\r\n const countryIsoMap: Record<string, string> = {\r\n en: 'gb', // English (UK) - currency is GBP\r\n us: 'us', // English (US) - currency is USD\r\n fr: 'fr', // French - currency is EUR\r\n de: 'de', // German - currency is EUR\r\n cs: 'cz', // Czech - currency is CZK\r\n es: 'es', // Spanish - currency is EUR\r\n it: 'it', // Italian - currency is EUR\r\n ru: 'ru', // Russian - currency is RUB\r\n ro: 'ro', // Romanian - currency is RON\r\n tr: 'tr' // Turkish - currency is TRY\r\n // all other countries are not supported\r\n // no pages are defined, so use fallback (don't add ap_country_iso param)\r\n };\r\n\r\n const iso = countryIsoMap[symbol];\r\n return iso ? `&ap_country_iso=${iso}` : '';\r\n }\r\n\r\n // New define for shop URLs\r\n // ACDC-31229 ==> ACDC-31560 Update the link of UPGARDE TO BIMPLUS\r\n // private defaultShopUrl = 'https://shop.allplan.com/?cl=details&anid=b34666d77706b644b8f19e6504f9a69f';\r\n private defaultShopUrl = 'https://www.bimplus.net/';\r\n @Input() shopUrl: string = this.defaultShopUrl;\r\n @Input() country: string = \"\";\r\n @Input({ transform: booleanAttribute }) isTouch: boolean = false;\r\n @Output() bimplusUpgradeLinkClicked = new EventEmitter<string>();\r\n\r\n _linkClicked() {\r\n // Determine the domain link based on your environment\r\n const domainLink = this.shopUrl || this.defaultShopUrl;\r\n console.debug(`Opening upgrade to Bimplus link`);\r\n\r\n window.open(domainLink, '_blank' /* Opens the link in a new tab or new window (depends on browser) */);\r\n // Emit to parent\r\n fireEvent(this, \"bimplusUpgradeLinkClicked\", domainLink);\r\n }\r\n\r\n // ACDC-31229 ==> ACDC-31560 Update the link of UPGARDE TO BIMPLUS\r\n // _linkClicked() {\r\n // // Get current language symbol from your base class or TranslateService\r\n // const currentLanguage = this.selectedLanguage;\r\n // const langValue = this._getLangParamValue(currentLanguage);\r\n // let countryIso = '';\r\n // if (!this.country || this.country === \"\") {\r\n // // If no country is provided, calculate country ISO based on the language\r\n // // console.debug(`No country provided, using default country ISO for language: ${currentLanguage}`);\r\n // countryIso = this._getCountryIsoParam(currentLanguage);\r\n // } else {\r\n // countryIso = `&ap_country_iso=${this.country}`;\r\n // }\r\n // // Determine the domain link based on your environment\r\n // const domainLink = this.shopUrl || this.defaultShopUrl;\r\n // console.debug(`Opening upgrade link with params: langauge=${currentLanguage} langValue=${langValue}, countryIso=${countryIso}`);\r\n // // Build the final URL with query params\r\n // // const url = new URL(domainLink);\r\n // // url.searchParams.set('lang', langValue);\r\n // const finalUrl = domainLink + langValue + countryIso;\r\n // window.open(finalUrl, '_blank' /* Opens the link in a new tab or new window (depends on browser) */);\r\n // // Emit to parent\r\n // fireEvent(this, \"bimplusUpgradeLinkClicked\", finalUrl);\r\n // }\r\n}\r\n\r\n"," <div\r\n class=\"bimplus-upgrade-link secondary-button body-text-mixin\"\r\n [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n (click)=\"_linkClicked()\"\r\n (keypress)=\"_linkClicked()\"\r\n >\r\n {{ \"_Upgrade_to_Bimplus\" | translate }}\r\n </div>\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface MenuItem {\r\n id: string,\r\n action: string,\r\n class: string,\r\n textId: string,\r\n type: string,\r\n checkState: string,\r\n url: string,\r\n _url?: () => string; // Function that takes no arguments and returns a string\r\n textClass: string,\r\n queryParams: string\r\n}\r\nexport interface MenuItemEventData {\r\n index: number,\r\n action: string\r\n}\r\nexport interface LangItem {\r\n symbol: string,\r\n text: string,\r\n lCode: string | undefined\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-user-menu',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-user-menu.component.html',\r\n styleUrl: './bimplus-user-menu.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusUserMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(){\r\n super();\r\n }\r\n\r\n _languagesList: LangItem[] = [\r\n { symbol: \"cs\", text: \"Čeština\", lCode: \"3\" },\r\n { symbol: \"de\", text: \"Deutsch\", lCode: \"1\" },\r\n { symbol: \"en\", text: \"English (UK)\", lCode: \"0\" },\r\n { symbol: \"us\", text: \"English (US)\", lCode: undefined },\r\n { symbol: \"es\", text: \"Español\", lCode: \"18\" },\r\n { symbol: \"fr\", text: \"Français\", lCode: \"4\" },\r\n { symbol: \"it\", text: \"Italiano\", lCode: \"2\" },\r\n { symbol: \"ru\", text: \"Русский\", lCode: \"14\" },\r\n { symbol: \"ro\", text: \"Romana\", lCode: undefined },\r\n { symbol: \"tr\", text: \"Türkçe\", lCode: undefined }\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n _languagesMenuOpened = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) accountSettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) removeConnectedAppsVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) userGuideVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) contactFormVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) forumVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) releaseNotesVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) submenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) clearCacheVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerLoggedInVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) logoutVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) allowRcaItem : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() buttonTitle : string = '';\r\n @Input() userName : string = 'Unknown user';\r\n @Input() userPhotoUrl : string = '';\r\n @Input() userGuideLinkUrl : string = 'https://bimplus-help.allplan.com/welcome.htm';\r\n @Input() contactFormLinkUrl : string = 'https://www.allplan.com/info/contact';\r\n @Input() forumLinkUrl : string = 'https://connect.allplan.com/de/forum/themen/bim-benutzer-forum.ct';\r\n /**--------------------------------------------------------------------------\r\n * Component events\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusUserMenuClicked = new EventEmitter<MenuItemEventData>();\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue);\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList: MenuItem[] = [\r\n { id:\"accountSettingsPage\", action:\"accountSettings\", class: \"icon-account-settings\", textId: \"_Edit_profile\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\", url: \"\"},\r\n { id:\"removeConnectedApps\", action:\"removeConnectedApps\", checkState: \"allowRcaItem\", class: \"icon-rca\", textClass: \"text-capitalized\", textId: \"_Remove_connected_apps\", type: \"\", url: \"\", queryParams: \"\"},\r\n { id:\"userGuideLink\", action:\"userGuide\", class: \"icon-user-guide\", textId: \"_UserGuide\", get url() { return this._url?.() ?? ''; }, _url: () => this.userGuideLinkUrl, type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"contactFormLink\", action:\"contactForm\", class: \"icon-contact-form\", textId: \"_Contact_form\", get url() { return this._url?.() ?? ''; }, _url: () => this.contactFormLinkUrl, queryParams: \"\", type: \"\", checkState: \"\", textClass: \"\"},\r\n { id:\"forumLink\", action:\"forum\", class: \"icon-forum\", textId: \"_Forum\", get url() { return this._url?.() ?? ''; }, _url: () => this.forumLinkUrl, type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"releaseNotesLink\", action:\"releaseNotes\", class: \"icon-release-notes\", textId: \"_Release_notes\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\", url: \"\"},\r\n { id:\"languagesSubmenu\", action:\"submenu\", class: \"icon-languages\", textId: \"_Languages\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"clearCache\", action:\"clearCache\", class: \"icon-clear-cache\", textId: \"_Clear cache\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"dividerLoggedIn\", type: \"divider\", action: \"\", class: \"\", textId: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"logout\", action:\"logout\", class: \"icon-log-out\", textId: \"_Logout\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( item: MenuItem, index : number ){\r\n if (!item || item.type === 'divider') {\r\n return;\r\n }\r\n\r\n\r\n if (item.action === 'submenu') {\r\n this._toggleLanguagesSubmenuOpened();\r\n }\r\n else {\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusUserMenuClicked\", { index, action: item.action ? item.action : '' });\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * language submenu item clicked\r\n --------------------------------------------------------------------------*/\r\n _switchLanguage( language: string ){\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n if(!this._menuOpened) {\r\n this._languagesMenuOpened = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle language submenu open\r\n --------------------------------------------------------------------------*/\r\n _toggleLanguagesSubmenuOpened(){\r\n if(!this._menuOpened) {\r\n return;\r\n }\r\n this._languagesMenuOpened = !this._languagesMenuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if item is visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuItem) {\r\n\r\n if (item) {\r\n return !this[(`${item.action ? item.action : item.id}Visible` as keyof BimplusUserMenuComponent)];\r\n }\r\n\r\n return false;\r\n }\r\n\r\n //--- add lang code and additional query params to supported urls\r\n _buildUrl(item: MenuItem | undefined) {\r\n let itemUrl = item?.url;\r\n const actualLang = this._languagesList.find(lang=> lang.symbol === this.selectedLanguage);\r\n const langCode = actualLang?.lCode;\r\n const supportsLangCode = itemUrl?.endsWith?.('.ct') && langCode;\r\n if (item?.queryParams || supportsLangCode) {\r\n itemUrl = itemUrl + '?';\r\n if (supportsLangCode) {\r\n itemUrl = itemUrl + 'L=' + langCode;\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + '&';\r\n }\r\n }\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + item.queryParams;\r\n }\r\n }\r\n return itemUrl;\r\n }\r\n\r\n _getMenuItems() {\r\n const menuItemsListFiltered = this.isEmbedded ? this._menuItemsList.slice(0,-3) : this._menuItemsList;\r\n return menuItemsListFiltered.map( (item) => {\r\n\r\n if (this._isHidden(item) || (item.checkState && !this[(item.checkState as keyof BimplusUserMenuComponent)])) {\r\n return;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n _getLangId(lang: LangItem | undefined) {\r\n return \"portalLanguage\" + lang?.symbol.charAt(0).toUpperCase() + lang?.symbol.slice(1);\r\n }\r\n}\r\n","<div\r\n [attr.key]=\"'bimcompOverlay'\"\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n<div\r\n [attr.key]=\"'userMenu'\"\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <div\r\n class=\"dropdown-toggle\"\r\n [title]=\"buttonTitle ? buttonTitle : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <img\r\n class=\"user-photo\"\r\n src=\"{{ userPhotoUrl ? userPhotoUrl : '' }}\"\r\n alt=\"{{ buttonTitle ? buttonTitle : '' }}\"\r\n />\r\n <div class=\"user-name\">\r\n @if (!isTouch) {\r\n {{ userName }}\r\n }\r\n </div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul class=\"bimcomp-dropdown-menu\" [ngClass]=\"_menuOpened ? 'open' : ''\">\r\n @for (item of _getMenuItems(); track item; let i = $index) {\r\n @if (item) {\r\n <li\r\n [attr.key]=\"item.id\"\r\n [attr.role]=\"item.type === 'divider' ? 'separator' : ''\"\r\n [ngClass]=\"{\r\n divider: item.type === 'divider',\r\n languageMenuItem: item.action === 'submenu',\r\n 'submenu-hidden':\r\n (!item.url || item.url.slice(0, 2) === '#/') &&\r\n item.action !== 'submenu'\r\n }\"\r\n (click)=\"_menuItemClicked(item, i)\"\r\n (keypress)=\"_menuItemClicked(item, i)\"\r\n >\r\n @if (item.action === 'submenu') {\r\n <div class=\"submenu arrow\"></div>\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n <div\r\n class=\"languagesSubmenu\"\r\n [ngClass]=\"_languagesMenuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"languageSubmenuItems\">\r\n @for (lang of _languagesList; track lang) {\r\n <div\r\n [attr.key]=\"_getLangId(lang)\"\r\n id=\"{{ _getLangId(lang) }}\"\r\n class=\"languageSubmenuItem\"\r\n [ngClass]=\"\r\n lang.symbol === this.selectedLanguage ? 'selected' : ''\r\n \"\r\n (click)=\"_switchLanguage(lang.symbol)\"\r\n (keypress)=\"_switchLanguage(lang.symbol)\"\r\n >\r\n {{ lang.text }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else if (!item.url || item.url.slice(0,2) === \"#/\") {\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n } @else if (!item.type || item.type !== \"divider\") {\r\n <a\r\n href=\"{{ _buildUrl(item) }}\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n class=\"submenu-hidden\"\r\n >\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n }\r\n }\r\n </ul>\r\n </div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, ChangeDetectionStrategy } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-zoom',\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-zoom.component.html',\r\n styleUrl: './bimplus-zoom.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusZoomComponent{\r\n /**--------------------------------------------------------------------------\r\n * List of available zoom\r\n --------------------------------------------------------------------------*/\r\n _zoomList = [\r\n { symbol: \"100\", text: \"100%\"},\r\n { symbol: \"105\", text: \"105%\"},\r\n { symbol: \"110\", text: \"110%\"},\r\n { symbol: \"115\", text: \"115%\"},\r\n { symbol: \"120\", text: \"120%\"},\r\n { symbol: \"125\", text: \"125%\"},\r\n { symbol: \"130\", text: \"130%\"},\r\n { symbol: \"135\", text: \"135%\"},\r\n { symbol: \"140\", text: \"140%\"},\r\n { symbol: \"145\", text: \"145%\"},\r\n { symbol: \"150\", text: \"150%\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedZoom : string = '125';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusZoomSelected = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selection\r\n --------------------------------------------------------------------------*/\r\n _switchZoom( zoom: string ){\r\n fireEvent(this, \"bimplusZoomSelected\", zoom);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * setup dynamic classes for zoom item\r\n --------------------------------------------------------------------------*/\r\n _getZoomClassObject( symbol: string ){\r\n return {\r\n 'selected': this.selectedZoom === symbol,\r\n ['bimzoom-' + symbol]: true\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n<div\r\n class=\"dropdown\"\r\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\">\r\n <div class=\"main-icon icon-zoom\"></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n @for (zoom of _zoomList; track zoom) {\r\n <li\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"_getZoomClassObject(zoom.symbol)\"\r\n (click)=\"_switchZoom(zoom.symbol)\"\r\n (keypress)=\"_switchZoom(zoom.symbol)\"\r\n >\r\n <span>{{zoom.text}}</span>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../../components/bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-touch-menu',\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-touch-menu.component.html',\r\n styleUrl: './bimplus-touch-menu.component.less',\r\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusTouchMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(){\r\n super()\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList = [\r\n { mode:\"touch\", class: \"icon-touch-mode-toolbar\", textId: \"_Touch_Mode\"},\r\n { mode:\"desktop\", class: \"icon-desktop-mode-toolbar\", textId: \"_Desktop_Mode\"},\r\n ];\r\n\r\n get _selectedItem() {\r\n return this._menuItemsList.find(item => item.mode == this.selectedMode);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedMode : string = 'desktop';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusTouchModeSelected = new EventEmitter<string>();\r\n\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue); \r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( mode: string ){\r\n fireEvent(this, \"bimplusTouchModeSelected\", mode);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n</div>\r\n<div\r\n class=\"dropdown\"\r\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\">\r\n <div\r\n class=\"main-icon\"\r\n [ngClass]=\"this._selectedItem?.class ? $safeNavigationMigration(this._selectedItem?.class) : ''\"\r\n ></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"{'open':this._menuOpened}\">\r\n @for (item of _menuItemsList; track item) {\r\n <li\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"{'selected':this.selectedMode === item.mode}\"\r\n (click)=\"_menuItemClicked(item.mode)\"\r\n (keypress)=\"_menuItemClicked(item.mode)\"\r\n >\r\n <div\r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span>{{item.textId | translate}}</span>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { LocalizedStrings } from './../types/types'\r\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageStringsService {\r\n\r\n // #region public fields\r\n set languageFilesUri(uri : string){\r\n this._languageFilesUri = uri;\r\n }\r\n private readonly defaultLang: string = 'en';\r\n currentLanguage$ = new BehaviorSubject<string> (this.defaultLang);\r\n currentLanguageStrings$ = new BehaviorSubject<LocalizedStrings>({});\r\n\r\n get currentLanguage() : string {\r\n return this.currentLanguage$.getValue();\r\n }\r\n\r\n set currentLanguageStrings(langStrings : LocalizedStrings){\r\n this.currentLanguageStrings$.next(langStrings);\r\n }\r\n\r\n get currentLanguageStrings() : LocalizedStrings {\r\n return this.currentLanguageStrings$.getValue();\r\n }\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n async setCurrentLanguage(lang : string){\r\n this.currentLanguage$.next(lang);\r\n await this.fetchLanguageStrings(lang); \r\n }\r\n\r\n extractLocalizedStrings(stringIds : Array<string>) : LocalizedStrings {\r\n const obj : LocalizedStrings = {};\r\n for (const [key, value] of Object.entries(this.currentLanguageStrings)) {\r\n if(typeof value == 'string' && stringIds.find(x=>x === key)){\r\n obj[key] = value;\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n async fetchLanguageStrings(lang : string){\r\n const data = await fetch(`${this._languageFilesUri}/strings_${lang}.json`);\r\n console.log(`Language strings loaded from: ${this._languageFilesUri}/strings_${lang}.json`);\r\n console.log(data);\r\n const dataJSON = await data.json();\r\n // add missing translations from default language translations\r\n if (lang !== this.defaultLang) {\r\n const fallbackData = await fetch(`${this._languageFilesUri}/strings_en.json`);\r\n const fallbackDataJSON = await fallbackData?.json?.();\r\n const fallbackDataJSONIndexes = fallbackDataJSON && Object.keys(fallbackDataJSON);\r\n if (fallbackDataJSONIndexes?.length) {\r\n for (const index in fallbackDataJSONIndexes) {\r\n const indexName = fallbackDataJSONIndexes[index];\r\n dataJSON[indexName] ??= fallbackDataJSON[indexName];\r\n }\r\n }\r\n }\r\n this.currentLanguageStrings$.next(dataJSON); \r\n }\r\n // #endregion public methods\r\n\r\n // #region private fields \r\n private _languageFilesUri : string = \"/assets\"\r\n // #endregion private fields\r\n}\r\n"],"mappings":";;;;;;;;AAKA,IAAa,oBAAb,MAAa,kBAAiB;CAE5B,cAAA,CAAgB;CAFL;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAjB;EAAA,KAAA,QAAA,GAAA,sBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAiB,YAFhB;EAAM,CAAA;CAAA;;AAEP,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAiB,YAAA,CAAA;EAH7B,MAAA;EAAW,MAAA,CAAA,EACV,YAAY,OACb,CAAA;;;;ACSD,IAAa,sBAAb,MAAa,oBAAmB;CAAnB;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAmB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAnB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAmB,cAAA;GAAA,UAAA;GAAA,UAAA;GAAA,UARpB;;;;;GAIT,UAAA;GAAA,QAAA,CAAA,EAAA;GAAA,iBAAA,GAAA,wBAAA;EAAA,CAAA;CAAA;;AAIU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EAX/B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAgB,SACjB,CAAA;GAAE,UACD;;;;;GAIT,iBACgB,wBAAwB;EAAK,CAAA;;;ACQhD,IAAa,kCAAb,MAAa,gCAA+B;CAb5C,cAAA;EAcE,KAAA,mBAAmB,OAAO,gBAAgB;EAG1C,KAAA,oBAA4C,OAAO,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,oBAAA,CAAA,+BAAA,CAAA,CAAA;EAcxD,KAAA,oBAAsD,OAAO,CAAA,GAAuB,GAAA,YAAA,CAAA,EAAA,WAAA,oBAAA,CAAA,+BAAA,CAAA,CAAA;CAarF;CA1BC,IAAI,mBAAgB;EAClB,OAAO,KAAK,kBAAiB;CAC/B;CACA,IAAa,iBAAiB,OAAa;EACzC,KAAK,kBAAkB,IAAI,KAAK;EAChC,KAAK,iBAAiB,IAAI,KAAK;EAC/B,IAAI;GACF,KAAK,iBAAiB,eAAe,KAAK,kBAAkB,KAAK,kBAAiB,CAAE;EACtF,SAAS,OAAO;GACd,QAAQ,MAAM,KAAK;EACrB;CACF;CAGA,IAAI,mBAAgB;EAClB,OAAO,KAAK,kBAAiB;CAC/B;CACA,IAAa,iBAAiB,OAAuB;EACnD,KAAK,kBAAkB,IAAI,KAAK;EAChC,KAAK,iBAAiB,IAAI,KAAK,gBAAgB;EAC/C,IAAI;GACF,KAAK,iBAAiB,eAAe,KAAK,kBAAkB,KAAK;EACnE,SAAS,OAAO;GACd,QAAQ,MAAM,KAAK;EACrB;CACF;CA9BW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA+B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA/B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA+B,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,kBAAA;IAAA,kBAAA;GAAA;GAAA,WAV/B,CAAC,gBAAgB;GAAC,UAAA;GAAA,UACnB;;;;;GAIT,UAAA;GAAA,cAAA,CAAA;IAAA,MAAA;IAAA,MANS;GAAe,CAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAWd,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA+B,YAAA,CAAA;EAb3C,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAA8B,SAC/B,CAAC,eAAe;GAAC,WACf,CAAC,gBAAgB;GAAC,UACnB;;;;;GAIT,iBAEgB,wBAAwB;GAAK,eAC/B,kBAAkB;EAAS,CAAA;;;EAUzC,kBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAcA,kBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;;ACpBH,SAAgB,UAAU,QAAiB,WAAmB,OAAgB,MAAI;CAChF,IAAK,CAAC,WAAY;EACd,QAAQ,MAAM,wEAAwE;EACtF;CACJ;CAEA,MAAM,UAAW,aAAa,UAAW,OAAO,OAAO,YAAY,YAAa,OAAO;CACvF,IAAI,WAAW,OAAO,QAAQ,eAAe,YAC1C,QAAQ,UAAU,CAAC,EAAC,QAAQ,KAAI,CAAC;CAGpC,MAAM,UAAW;CACjB,IAAI,aAAa,SACb,QAAQ,UAAU,CAAC,KAAK,IAAI;AAElC;ACpBA,IAAa,0BAAb,MAAa,gCAAgC,gCAA+B;CAC1E,cAAA;EACE,MAAK;EAGG,KAAA,wBAAwB,IAAI,aAAY;CAFlD;CAIA,kBAAe;EACb,UAAU,MAAM,yBAAyB,SAAS;CACpD;CATW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAuB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAvB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAuB,cAAA;GAAA,UAAA;GAAA,SAAA,EAAA,uBAAA,wBAAA;GAAA,WANvB,CAAC,gBAAgB;GAAC,iBAAA;GAAA,UAAA;GAAA,UCT/B;GAUA,QAAA,CAAA,y2CAAA;GAAA,cAAA,CAAA;IAAA,MAAA;IAAA,MDFY;GAAe,GAAA;IAAA,MAAA;IAAA,MAAA,KAAA;IAAA,MAAA;GAAA,CAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAOd,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAuB,YAAA,CAAA;EATnC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAqB,SACtB,CAAC,eAAe;GAAC,WACf,CAAC,gBAAgB;GAAC,iBAGZ,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,y2CAAA;EAAA,CAAA;;;CAOzC,gBAAA,EAAA,uBAAA,CAAA,EAAA,MAAA,OAAA,CAAA,EAAA;;AERH,IAAa,+BAAb,MAAa,6BAA4B;CARzC,cAAA;EAUG,KAAA,iBAAiB;GAChB;IAAE,QAAQ;IAAM,MAAM;GAAS;GAC/B;IAAE,QAAQ;IAAM,MAAM;GAAS;GAC/B;IAAE,QAAQ;IAAM,MAAM;GAAc;GACpC;IAAE,QAAQ;IAAM,MAAM;GAAc;GACpC;IAAE,QAAQ;IAAM,MAAM;GAAS;GAC/B;IAAE,QAAQ;IAAM,MAAM;GAAU;GAChC;IAAE,QAAQ;IAAM,MAAM;GAAU;GAChC;IAAE,QAAQ;IAAM,MAAM;GAAS;GAC/B;IAAE,QAAQ;IAAM,MAAM;GAAQ;GAC9B;IAAE,QAAQ;IAAM,MAAM;GAAQ;EAC/B;EAEuC,KAAA,UAAoB;EACnD,KAAA,mBAA4B;EACG,KAAA,WAAqB;EAC7D,KAAA,cAAwB;EAEd,KAAA,0BAA0B,IAAI,aAAY;CASrD;CAPC,gBAAiB,UAAgB;EAC/B,UAAU,MAAM,2BAA2B,QAAQ;CACrD;CAEA,gBAAa;EACX,KAAK,cAAc,CAAC,KAAK;CAC3B;CA5BW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA4B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA5B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA4B,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,SAAA;KAAA;KAAA;KAenB;IAAgB;IAAA,kBAAA;IAAA,UAAA;KAAA;KAAA;KAEhB;IAAgB;GAAA;GAAA,SAAA,EAAA,yBAAA,0BAAA;GAAA,UAAA;GAAA,UC7BtC;GA8BM,QAAA,CAAA,uzHAAA;GAAA,cAAA,CAAA;IAAA,MAAA;IAAA,MDxBM;GAAY,GAAA;IAAA,MAAA;IAAA,MAAA,GAAA;IAAA,UAAA;IAAA,QAAA,CAAA,SAAA,SAAA;GAAA,CAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAMX,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA4B,YAAA,CAAA;EARxC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAA2B,SAC5B,CAAC,YAAY;GAAC,iBAGN,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,uzHAAA;EAAA,CAAA;;;;GAiBzC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EACrC,kBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EAGrC,yBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AEXH,IAAa,8BAAb,MAAa,oCAAoC,gCAA+B;CAC9E,cAAA;EACE,MAAK;EAGE,KAAA,cAAsB;EACtB,KAAA,kBAA0B;EAC1B,KAAA,qBAA6B;EAC7B,KAAA,oBAA4B;EACG,KAAA,yBAAkC;EAClC,KAAA,iBAA0B;EAC1B,KAAA,oBAA6B;EAC7B,KAAA,0BAAmC;EACnC,KAAA,oBAA6B;EAE7B,KAAA,wBAAiC;EACjC,KAAA,gBAAyB;EACzB,KAAA,mBAA4B;EAC5B,KAAA,yBAAkC;EAClC,KAAA,mBAA4B;EAE5B,KAAA,cAAuB;EACvB,KAAA,aAAsB;EACtB,KAAA,UAAmB;EACnB,KAAA,gBAAyB;EACzB,KAAA,0BAAmC;EAClE,KAAA,iBAA4B,CAAA;EACG,KAAA,oBAA6B;EAsBrE,KAAA,eAA+B;GAC7B;IAAE,QAAQ;IAAkB,IAAI;IAAkB,MAAM;IAAI,OAAO;IAAqB,QAAQ;IAA4B,gBAAgB;IAA8B,eAAe;IAAI,mBAAmB;IAAO,gBAAgB;IAAO,aAAa;GAAE;GAC7P;IAAE,QAAQ;IAAU,IAAI;IAAmB,MAAM;IAAI,OAAO;IAAsB,QAAQ;IAAmB,gBAAgB;IAAI,eAAe;IAAI,mBAAmB;IAAO,gBAAgB;IAAO,aAAa;GAAE;GACpN;IAAE,QAAQ;IAAa,IAAI;IAAsB,MAAM;IAAI,OAAO;IAAyB,QAAQ;IAAsB,gBAAgB;IAAI,eAAe;IAAI,mBAAmB;IAAO,gBAAgB;IAAO,aAAa;GAAE;GAChO;IAAE,QAAQ;IAAmB,IAAI;IAA4B,MAAM;IAAI,OAAO;IAAgC,QAAQ;IAA6B,gBAAgB;IAAI,eAAe;IAAI,mBAAmB;IAAO,gBAAgB;IAAO,aAAa;GAAE;GAC1P;IAAE,QAAQ;IAAa,IAAI;IAAsB,MAAM;IAAI,OAAO;IAAyB,QAAQ;IAAc,gBAAgB;IAAI,eAAe;IAAI,mBAAmB;IAAO,gBAAgB;IAAO,aAAa;GAAE;EACzN;CApDD;CA0BA,IAAI,YAAS;EACX,OAAO,KAAK,kBAAkB,KAAK,kBAAkB;CACvD;CACA,IAAI,kBAAe;EACjB,OAAO,8GAA8G,KAAK,kBAAkB,KAAK,kBAAkB,kFAAiF;CACtP;CAEA,IAAI,uBAAoB;EACtB,OAAO,EAAE,cAAc,GAAG,KAAK,kBAAiB;CAClD;CAEA,IAAI,gBAAa;EACf,OAAO,EAAE,cAAc,OAAO,KAAK,UAAS,GAAG;CACjD;CAeA,IAAI,YAAS;EACX,MAAM,QAAQ,KAAK,aAAa,MAAM,GAAG,MAAM,KAAK,eAAe,QAAQ,EAAE,EAAE,IAAI,KAAK,eAAe,QAAQ,EAAE,EAAE,CAAC;EAEpH,MAAM,OAAO,MAAM,MAAK,SAAQ,KAAK,OAAO,oBAAoB;EAChE,IAAG,MACD,KAAK,SAAS,KAAK,oBAAoB,qBAAqB;EAG9D,OAAO;CACT;CAKA,UAAU,MAAkB;EAC1B,IAAI,MAAM;GACR,MAAM,MAAM,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK,GAAE;GAElD,OAAO,CAAG,KAAyD;EACrE;EACA,OAAO;CACT;CAIA,YAAY,MAAkB;EAE5B,IAAI,MAAM;GACR,MAAM,MAAM,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK,GAAE;GAClD,OAAO,CAAC,CAAE,KAAyD;EACrE;EACA,OAAO;CACT;CAGA,wBAAwB,QAAgB,OAAa;EACnD,QAAQ,IAAI,QAAQ,KAAK;CAC3B;CAKA,iBAAiB,MAAoB,MAAc,OAAY;EAC7D,IAAI,OAAO;GACT,MAAM,gBAAe;GACrB,MAAM,eAAc;EACtB;EACA,QAAQ,IAAI,MAAM,MAAM,KAAK;EAG7B,IAAI,QAAQ,QACV;OAAI,KAAK,YAAY,IAAI,GACvB;EACF;EAEF,MAAM,SAAS,KAAK;EACpB,UAAU,MAAM,6BAA6B;GAAE;GAAQ;EAAI,CAAE;CAC/D;CAEA,sBAAsB,OAAY;EAChC,IAAI,OAAO;GACT,MAAM,gBAAe;GACrB,MAAM,eAAc;EACtB;CACF;CAEA,2BAA2B,MAAoB,SAAgB;EAE7D,OAAO,GADmB,KAAK,YAAY,IAAI,IAAI,aAAa,GAAE,GAAI,UAAU,KAAK;CAEvF;CAEA,2BAA2B,MAAkB;EAE3C,OAAO,GADmB,KAAK,MAAK,GAAI,KAAK,WAAW,KAAK,oBAAoB,WAAW,GAAE,GAAI,KAAK,YAAY,IAAI,IAAI,aAAa;CAE1I;CAnIW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA2B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA3B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA2B,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,aAAA;IAAA,iBAAA;IAAA,oBAAA;IAAA,mBAAA;IAAA,wBAAA;KAAA;KAAA;KASlB;IAAgB;IAAA,gBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,mBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,yBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,mBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,uBAAA;KAAA;KAAA;KAEhB;IAAgB;IAAA,eAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,kBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,wBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,kBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,aAAA;KAAA;KAAA;KAEhB;IAAgB;IAAA,YAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,SAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,eAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,yBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,gBAAA;IAAA,mBAAA;KAAA;KAAA;KAEhB;IAAgB;GAAA;GAAA,WAjCzB,CAAC,gBAAgB;GAAC,iBAAA;GAAA,UAAA;GAAA,UCf/B;GA6GA,QAAA,CAAA,sqsBAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MD/FY;IAAY;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;IAAe;IAAA;KAAA,MAAA;KAAA,MAAA,KAAA;KAAA,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAO5B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA2B,YAAA,CAAA;EATvC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAA0B,SAC3B,CAAC,cAAc,eAAe;GAAC,WAC7B,CAAC,gBAAgB;GAAC,iBAGZ,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,sqsBAAA;EAAA,CAAA;;;;EAOzC,aAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,iBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,oBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,mBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GAErC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GAErC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EACrC,gBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;;AExCxC,MAAM,iBAAiB;CACrB,4BAA4B;CAC5B,6BAA6B;CAC7B,kBAAkB;CAClB,mBAAmB;CACnB,sBAAsB;CACtB,6BAA6B;CAC7B,sBAAsB;CACtB,4BAA4B;CAC5B,uBAAuB;CACvB,yBAAyB;CACzB,qBAAqB;CACrB,8BAA8B;CAC9B,aAAa;CACb,oBAAoB;CACpB,iBAAiB;CACjB,0BAA0B;CAC1B,4BAA4B;AACpB;AAiBV,IAAa,2BAAb,MAAa,iCAAiC,gCAA+B;CAC3E,cAAA;EACE,MAAK;EAGiC,KAAA,aAAuB;EACvB,KAAA,UAAoB;EACpB,KAAA,YAAsB;EACtB,KAAA,QAAkB;EAClB,KAAA,UAAoB;EACpB,KAAA,uBAAiC;EACjC,KAAA,0BAAoC;EACnE,KAAA,cAAuB;EACvB,KAAA,kBAA2B;EAC3B,KAAA,qBAA8B;EAC9B,KAAA,oBAA6B;EACE,KAAA,yBAAmC;EACnC,KAAA,iBAA2B;EAC3B,KAAA,oBAA8B;EAC9B,KAAA,0BAAoC;EACpC,KAAA,oBAA8B;EAC7D,KAAA,mBAA4B;EAC5B,KAAA,iBAA0B;EACK,KAAA,cAAwB;EACxB,KAAA,cAAwB;EACxB,KAAA,wBAAkC;EAClC,KAAA,4BAAsC;EACtC,KAAA,0BAAoC;EACpC,KAAA,sBAAgC;EAChC,KAAA,sBAAgC;EAChC,KAAA,wBAAkC;EAClC,KAAA,sBAAgC;EAChC,KAAA,0BAAoC;EACpC,KAAA,eAAyB;EACzB,KAAA,iBAA2B;EAC3B,KAAA,qBAA+B;EAC/B,KAAA,4BAAsC;EACtC,KAAA,wBAAkC;EAClC,KAAA,gBAA0B;EAC1B,KAAA,mBAA6B;EAC7B,KAAA,yBAAmC;EACnC,KAAA,mBAA6B;EAC7B,KAAA,qBAA+B;EAC/B,KAAA,uBAAiC;EACjC,KAAA,qBAA+B;EAC/B,KAAA,yBAAmC;EACnC,KAAA,cAAwB;EACxB,KAAA,gBAA0B;EAC1B,KAAA,kCAA4C;EAC5C,KAAA,qBAA+B;EAC/B,KAAA,qBAA+B;EAC/B,KAAA,uBAAiC;EACjC,KAAA,qBAA+B;EAC9D,KAAA,eAA0B,CAAA;EAC1B,KAAA,YAAuB,CAAA;EACvB,KAAA,iBAA4B,CAAA;EACG,KAAA,oBAA6B;EAE3D,KAAA,yBAAyB,IAAI,aAAY;EACzC,KAAA,gCAAgC,IAAI,aAAY;EA0I1D,KAAA,cAA2B;GAAE,QAAO;GAAe,IAAG;GAAyB,MAAK;GAAI,OAAO;GAAsB,QAAQ;GAA6B,gBAAgB;GAA4B,eAAc;GAAG,mBAAmB;GAAM,gBAAiB;GAAM,aAAa;EAAE;EAEtR,KAAA,cAAc;GAAC,MAAK;GAAO,QAAO;GAAK,UAAS;GAAK,WAAU;GAAK,UAAS;EAAI;EAGjF,KAAA,WAA2B;GACzB;IAAE,QAAO;IAAkB,IAAI,eAAe;IAAkB,MAAK;IAAI,OAAO;IAAqB,QAAQ;IAA6B,gBAAgB;IAA6B,eAAc;IAA6B,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;GACjS;IAAE,QAAO;IAAU,IAAI,eAAe;IAAmB,MAAK;IAAG,OAAO;IAAsB,QAAQ;IAAc,gBAAgB;IAAa,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;GACjO;IAAE,QAAO;IAAa,IAAI,eAAe;IAAsB,MAAK;IAAG,OAAO;IAAyB,QAAQ;IAAU,gBAAgB;IAAS,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;GAClO;IAAE,QAAO;IAAmB,IAAI,eAAe;IAA6B,MAAK;IAAG,OAAO;IAAgC,QAAQ;IAAa,gBAAgB;IAAY,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;GAC5P;IAAE,QAAO;IAAa,IAAI,eAAe;IAAsB,MAAK;IAAG,OAAO;IAAyB,QAAQ;IAAc,gBAAgB;IAAa,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;GAC1O;IAAE,QAAO;IAAG,IAAI,eAAe;IAA4B,MAAK;IAAW,OAAO;IAA2B,QAAQ;IAAG,gBAAe;IAAG,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;GAE1N;IAAE,QAAO;IAAe,IAAI,eAAe;IAAuB,MAAK;IAAG,OAAO;IAA4B,QAAQ;IAAgB,gBAAgB;IAAgB,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAyB;GAC5Q;IAAE,QAAO;IAAe,IAAI,eAAe;IAAyB,MAAK;IAAG,OAAO;IAA4B,QAAQ;IAAgB,gBAAgB;IAAgB,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAyB;GAC9Q;IAAE,QAAO;IAAiB,IAAI,eAAe;IAA8B,MAAK;IAAG,OAAO;IAA6B,QAAQ;IAAiB,gBAAgB;IAAiB,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAO,aAAa;GAAyB;GAEzR;IAAE,QAAO;IAAG,IAAI,eAAe;IAAa,MAAK;IAAW,OAAO;IAA2B,QAAQ;IAAG,gBAAe;IAAG,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;GAE3M;IAAE,QAAO;IAAe,IAAI,eAAe;IAA4B,MAAK;IAAI,OAAO;IAA4B,QAAQ;IAA6B,gBAAgB;IAA6B,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;GACrR;IAAE,QAAO;IAAmB,IAAI,eAAe;IAA6B,MAAK;IAAG,OAAO;IAAgC,QAAQ;IAA2B,gBAAgB;IAA2B,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;EAC1R;EAED,KAAA,kBAAkC;GAChC;IAAE,QAAO;IAAG,IAAI,eAAe;IAAa,MAAK;IAAW,OAAO;IAA0B,mBAAmB;IAAM,gBAAiB;GAAK;GAC5I;IAAE,QAAO;IAAU,IAAI,eAAe;IAAoB,MAAK;IAAI,OAAO;IAAuB,QAAQ;IAAW,gBAAgB;IAAW,eAAc;IAAI,mBAAmB;IAAO,gBAAiB;IAAO,aAAa;GAAE;GAClO;IACE,QAAO;IACP,IAAI,eAAe;IACnB,OAAO;IACP,QAAQ;IACR,gBAAgB;GACD;GACjB;IACE,QAAO;IACP,IAAI,eAAe;IACnB,OAAO;IACP,QAAQ;IACR,gBAAgB;GACD;GACjB;IAAE,QAAO;IAAQ,IAAI,eAAe;IAAiB,MAAK;IAAG,OAAO;IAAoB,QAAQ;IAAa,gBAAgB;IAAY,eAAc;IAAG,mBAAmB;IAAM,gBAAiB;IAAM,aAAa;GAAE;EAC1N;CA3OD;CA0DA,YAAY,SAAsB;EAChC,IAAI,QAAQ,qBACV,KAAK,kBAAkB,IAAI,QAAQ,mBAAmB,CAAC,YAAY;CAEvE;CAEA,IAAI,OAAI;EACN,IAAI,WAAW,KAAK,SAAS,MAAK,CAAE,CAAC,MAAM,GAAG,MAAM,KAAK,UAAU,QAAQ,EAAE,EAAE,IAAI,KAAK,UAAU,QAAQ,EAAE,EAAE,CAAC;EAG/G,IAAI,CAAC,KAAK,eACR,WAAW,SAAS,QAAQ,EAAE,SAAS,OAAO,eAAe,iBAAiB;EAIhF,IAAI,CAAC,KAAK,kBACR,WAAW,SAAS,QAAQ,EAAE,SAAS,OAAO,eAAe,oBAAoB;EAInF,IAAI,CAAC,KAAK,oBACR,WAAW,SAAS,QAAQ,EAAE,SAAS,OAAO,eAAe,uBAAuB;EAItF,IAAI,CAAC,KAAK,oBACR,WAAW,SAAS,QAAQ,EAAE,SAAS,OAAO,eAAe,qBAAqB;EAIpF,IAAI,CAAC,KAAK,sBACR,WAAW,SAAS,QAAQ,EAAE,SAAS,OAAO,eAAe,4BAA4B;EAI3F,IAAI,CAAC,KAAK,oBACR,WAAW,SAAS,QAAQ,EAAE,SAAS,OAAO,eAAe,WAAW;EAI1E,IAAI,KAAK,qBACP,WAAW,SAAS,QAAQ,EAAE,SAAS,OAAO,eAAe,0BAA0B;EAIzF,IAAI,KAAK,yBACP,WAAW,SAAS,QAAQ,EAAE,SAAS,OAAO,eAAe,2BAA2B;EAI1F,IAAG,KAAK,SACN,WAAW,SAAS,QAAQ,EAAE,SAC5B,OAAO,eAAe,+BACtB,OAAO,eAAe,oBAAoB;EAI9C,MAAM,OAAO,SAAS,MAAK,SAAQ,KAAK,OAAO,eAAe,oBAAoB;EAClF,IAAG,MACD,KAAK,SAAS,KAAK,oBAAoB,aAAa;EAItD,OAAO;CACT;CAEA,IAAI,aAAU;EACZ,IAAI,aAAa,KAAK,gBAAgB,QAAO,SAAQ,KAAK,cAAc,IAAI,KAAK,CAAC,KAAK,UAAU,IAAI,CAAC;EAGtG,IAAI,KAAK,uBAAuB,CAAC,KAAK,SACpC,aAAa,WAAW,QAAQ,EAAE,SAAS,OAAO,eAAe,WAAW;EAI9E,IAAI,CAAC,KAAK,oBACR,OAAO,WAAW,QAAQ,EAAE,SAAS,OAAO,eAAe,wBAAwB;EAIrF,OAAO,WAAW,QAAQ,EAAE,SAAS,OAAO,eAAe,WAAW;CACxE;CAKA,cAAc,MAAiB;EAE7B,IAAI,KAAK,mBAAmB;GAC1B,MAAM,MAAM,GAAG,KAAK,OAAM;GAC1B,OAAO,CAAC,CAAG,KAAuD;EACpE;EACA,OAAO;CACT;CAIA,aAAa,MAAiB;EAE5B,IAAI,KAAK,gBAAgB,2BACvB,OAAO,KAAK,gBAAgB;EAE9B,OAAO;CACT;CAKA,UAAU,MAAiB;EAEzB,IAAI,MAAM;GACR,MAAM,MAAM,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK,GAAE;GAClD,OAAO,CAAG,KAAuD;EACnE;EACA,OAAO;CACT;CAKA,YAAY,MAAiB;EAC3B,MAAM,MAAM,GAAG,KAAK,OAAM;EAC1B,OAAO,CAAC,CAAG,KAAuD;CACpE;CAEA,gBAAgB,MAAoB,QAAiB,UAAmB,WAAoB,UAAiB;EAC3G,OAAO;GACC;GACE;GACE;GACC;GACD;GACV,cAAc,KAAK,aAAa,SAAS,KAAK,EAAE;EACjD;CACH;CA6CA,kBAAe;EACb,UAAU,MAAM,+BAA+B;CACjD;CAEA,qBAAqB,MAAmB,MAAY,OAAwB;EAC1E,IAAI,OAAO;GACT,MAAM,gBAAe;GACrB,MAAM,eAAc;EACtB;EAEA,IAAG,QAAQ,QACT;OAAI,KAAK,YAAY,IAAI,GACvB;EACF;EAGF,MAAM,SAAS,KAAK;EACpB,UAAU,MAAK,0BAA0B;GAAC;GAAY;EAAI,CAAE;CAC9D;CAlQW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAwB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAxB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAwB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,YAAA;KAAA;KAAA;KAKf;IAAgB;IAAA,SAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,WAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,OAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,SAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,sBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,yBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,aAAA;IAAA,iBAAA;IAAA,oBAAA;IAAA,mBAAA;IAAA,wBAAA;KAAA;KAAA;KAKhB;IAAgB;IAAA,gBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,mBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,yBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,mBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,kBAAA;IAAA,gBAAA;IAAA,aAAA;KAAA;KAAA;KAGhB;IAAgB;IAAA,aAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,uBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,2BAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,yBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,qBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,qBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,uBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,qBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,yBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,cAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,gBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,oBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,2BAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,uBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,eAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,kBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,wBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,kBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,oBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,sBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,oBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,wBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,aAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,eAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,iCAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,oBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,oBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,sBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,oBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,cAAA;IAAA,WAAA;IAAA,gBAAA;IAAA,mBAAA;KAAA;KAAA;KAIhB;IAAgB;GAAA;GAAA,SAAA;IAAA,wBAAA;IAAA,+BAAA;GAAA;GAAA,WA/DzB,CAAC,gBAAgB;GAAC,iBAAA;GAAA,eAAA;GAAA,UAAA;GAAA,UCpC/B;GAwFA,QAAA,CAAA,+17EAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDrDY;IAAY;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;IAAe;IAAA;KAAA,MAAA;KAAA,MAAE;KAA2B,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,KAAA;KAAA,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAQzD,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAwB,YAAA,CAAA;EAVpC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAuB,SACxB;IAAC;IAAc;IAAiB;GAA2B;GAAC,WAC1D,CAAC,gBAAgB;GAAC,iBAGZ,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,+17EAAA;EAAA,CAAA;;;;;GAQzC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EACrC,aAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,iBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,oBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,mBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EACrC,kBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,gBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EACrC,cAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,WAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,gBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EAErC,wBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,+BAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AEtGH,IAAY;CAAZ,SAAY,WAAS;CACnB,UAAA,mBAAA;CACA,UAAA,sBAAA;CACA,UAAA,iBAAA;CACA,UAAA,oBAAA;CACA,UAAA,yBAAA;AACF,EAAA,CANY,cAAA,YAAS,CAAA,EAAA;ACerB,IAAa,yBAAb,MAAa,+BAA+B,gCAA+B;CAR3E,cAAA;;EASW,KAAA,cAAuB;EACvB,KAAA,WAAoB;EACW,KAAA,QAAkB;EAClB,KAAA,UAAoB;EACnD,KAAA,iBAA0B;EACK,KAAA,sBAAgC;EAChC,KAAA,sBAAgC;EACxE,KAAA,YAAY,MAAiB,UAAU,eAAc,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EACrD,KAAA,sBAAsB,MAAM,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,sBAAA,+BAAA,CAAA;GAAK,WAAW;EAAgB,CAAA;EACzB,KAAA,yBAAmC;EACnC,KAAA,qBAA+B;EAC/B,KAAA,sBAAgC;EAChC,KAAA,UAAoB;EACpB,KAAA,4BAAqC;EAEnE,KAAA,uBAAuB,IAAI,aAAY;EAG1C,KAAA,YAAY;EAEH,KAAA,oBAAoB,eAAsB;GACxD,IAAI,KAAK,oBAAmB,GAC1B,OAAO;GAGT,OAAQ,KAAK,4BAA4B,uBAAwB;EACnE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,oBAAA,CAAA,+BAAA,CAAA,CAAA;EAEiB,KAAA,kBAAkB,eAAyB;GAC5D,IAAI,KAAK,oBAAmB,GAC1B,OAAO,UAAU;GAGnB,OAAO,KAAK,UAAS;EACvB,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;CAiBH;CAfC,eAAY;EACV,IAAK,KAAK,qBACR,UAAU,MAAM,wBAAwB,MAAM;CAElD;CAEA,eAAY;EACR,UAAU,MAAM,wBAAwB,MAAM;CAClD;CAEA,sBAAmB;EACjB,IAAK,KAAK,OACR,UAAU,MAAM,wBAAwB,SAAS;CAErD;CAnDW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,MAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAtB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAsB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,aAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAGb;IAAgB;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAChB;IAAgB;IAAA,gBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,qBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAEhB;IAAgB;IAAA,qBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAChB;IAAgB;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,qBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,wBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAGhB;IAAgB;IAAA,oBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAChB;IAAgB;IAAA,qBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAChB;IAAgB;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAChB;IAAgB;IAAA,2BAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAChB;IAAgB;GAAA;GAAA,SAAA,EAAA,sBAAA,uBAAA;GAAA,iBAAA;GAAA,UAAA;GAAA,UC7BtC;GAqDA,QAAA,CAAA,08xBAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MD5CY;IAAY;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;IAAe;IAAA;KAAA,MAAA;KAAA,MAAA,KAAA;KAAA,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAM5B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EARlC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,SACrB,CAAC,cAAc,eAAe;GAAC,iBAGvB,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,08xBAAA;EAAA,CAAA;;;EAGzC,aAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,UAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EACrC,gBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;;;;;;;;;;;;;;;;;GAGrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EAErC,sBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AElBH,IAAa,sCAAb,MAAa,oCAAmC;CAO9C,cAAA;EANiB,KAAA,aAAa,OAAO,UAAU;EAIrC,KAAA,gCAAwC;EAGhD,KAAK,WAAW,KAAK,WAAW;CAClC;CAEQ,iCAA8B;EAEpC,MAAM,sBAA0C,KAAK,UAAU,cAAc,KAAK,6BAA6B;EAC/G,IAAI,CAAC,qBAAqB;GACxB,QAAQ,MAAM,+CAA+C;GAC7D;EACF;EACA,KAAK,aAAa,IAAI,UAAU,mBAAmB;CACrD;CAEA,kBAAe;EACb,KAAK,+BAA8B;CACrC;CAEQ,wBAAqB;EAC3B,IAAG,CAAC,KAAK,UACP;EAIF,IAAI,CAFa,KAAK,UACI,cAAc,KAAK,6BAA6B,GAExE;EAGF,IAAI,CAAC,KAAK,YAAY;GACpB,QAAQ,MAAM,+CAA+C;GAC7D;EACF;EAEA,KAAK,WAAW,YAAW;CAC7B;CAEA,qBAAkB;EAChB,KAAK,sBAAqB;CAC5B;CA7CW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAmC,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAnC;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAmC,cAAA;GAAA,UAAA;GAAA,UAAA;GAAA,UCbhD;GAGA,QAAA,CAAA,wkGAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;ADUa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmC,YAAA,CAAA;EAT/C,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkC,SACnC,CAAA;GAAE,iBAGM,wBAAwB;GAAK,eAC/B,kBAAkB;GAAI,UAAA;GAAA,QAAA,CAAA,wkGAAA;EAAA,CAAA;;;;AEHvC,MAAM,0BAA0B;AAyBhC,IAAa,yBAAb,MAAa,+BAA+B,gCAA+B;CACzE,cAAA;EACE,MAAK;EAIP,KAAA,QAAQ;EAeR,KAAA,gBAAgC,CAAA;EAKvB,KAAA,qBAA8B;EAKC,KAAA,qBAA+B;EAK9D,KAAA,uBAAgC;EAKhC,KAAA,yBAAkC;EAKlC,KAAA,WAAoB;EAiD7B,KAAA,cAAuB;EACvB,KAAA,eAAwB;EACxB,KAAA,mBAAmC,CAAA;EAEnC,KAAA,uBAAuC,CAAA;EAM7B,KAAA,6BAA6B,IAAI,aAAY;EAK7C,KAAA,iCAAiC,IAAI,aAAY;EAKjD,KAAA,6BAA6B,IAAI,aAAY;CAhHvD;CAKA,IACI,cAAW;EACb,OAAO,KAAK;CACd;CAEA,IACI,YAAS;EACX,OAAO;CACT;CAgCA,YAAY,SAAsB;EAChC,IAAI,QAAQ,aAAa;GACvB,MAAM,WAAW,QAAQ,WAAW,CAAC;GACrC,KAAK,eAAe,QAAQ;EAC9B;CACF;CAEA,eAAe,UAAuC;EAEpD,IAAI,EADS,YAAa,OAAO,aAAa,WACnC;GACT,KAAK,gBAAgB,CAAA;GACrB,KAAK,uBAAuB,CAAA;GAC5B,KAAK,eAAe;GACpB;EACF;EAEA,MAAM,UAAU,KAAK,MAAM,QAAQ;EACnC,KAAK,gBAAgB,QAAQ;EAG7B,IAAI,kBAAkB,KAAK,cAAc,QAAS,QAAQ,KAAK,iBAAiB,WAAY,WAAW,OAAO,OAAO,IAAI,EAAE,IAAK,CAAC;EACjI,kBAAkB,gBAAgB,QAAS,SAAS,KAAK,mBAAmB,IAAI,CAAC;EAGjF,gBAAgB,MAAK,CAAE,CAAC,QAAO,CAAE,CAAC,SAAU,WAAU;GACpD,IAAK,KAAK,qBAAqB,WAAY,SAAS,OAAO,OAAO,KAAK,EAAE,IAAK,GAAE;IAC9E,KAAK,qBAAqB,QAAQ,MAAM;IAExC,IAAI,KAAK,qBAAqB,GAC5B,iBAAgB;KACd,KAAK,qBAAqB,OAAO,IAAI,KAAK;IAC5C,GAAG,KAAK,kBAAkB;GAE9B;EACF,CAAC;EAGD,KAAK,qBAAqB,SAAS,KAAK,qBAAqB,SAAS,KAAK,uBAAuB,KAAK,uBAAuB,KAAK,qBAAqB;EAGxJ,KAAK,mBAAoB,KAAK;EAC9B,KAAK,eAAe,KAAK,cAAc,UAAU;CACnD;CA8BA,WAAQ;EACN,KAAK,eAAe,KAAK,QAAQ;CACnC;CAKA,cAAe,MAAoB,SAAkB,OAAwB;EAC3E,IAAI,SACF,OAAO,KAAK,qBAAqB,KAAK,EAAE;EAG1C,IAAI,OAAO;GACT,MAAM,gBAAe;GACrB,MAAM,eAAc;EACtB;EAEA,UAAU,MAAM,8BAA8B,KAAK,UAAU,IAAI,CAAC;CACpE;CAKA,qBAAsB,OAA2B,eAAe,MAAI;EAClE,IAAI,CAAC,OACH;EAGF,KAAK,uBAAuB,KAAK,qBAAqB,QAAS,QAAQ,IAAI,OAAO,KAAK;EACvF,KAAK,oBAAoB,CAAC,KAAK,CAAC;EAChC,IAAK,gBAAgB,KAAK,qBAAqB,WAAW,GACxD,KAAK,eAAe;CAExB;CAKA,qBAAkB;EAChB,UAAU,MAAM,gCAAgC;EAChD,KAAK,6BAA4B;CACnC;CAKA,eAAgB,MAAoB,OAAa;EAC/C,KAAK,WAAW;EAChB,UAAU,MAAM,8BAA8B,KAAK,UAAU,IAAI,CAAC;CACpE;CAKA,gBAAa;EACX,KAAK,cAAc,CAAC,KAAK;EACzB,KAAK,eAAe;EACpB,KAAK,uBAAuB,CAAA;CAC9B;CAEA,mBAAmB,SAAqB;EACtC,IAAG,CAAC,SAAS,IACX,OAAO;EAET,MAAM,oBAAoB,OAAO,aAAa,QAAQ,uBAAuB;EAC7E,IAAG,CAAC,mBACF,OAAO;EAET,OAAO,CAAC,kBAAkB,SAAS,QAAQ,EAAE;CAC/C;CAEA,oBAAoB,aAAqB;EACvC,IAAG,CAAC,eAAe,YAAY,SAAQ,GACrC;EAEF,IAAI,oBAAoB,OAAO,aAAa,QAAQ,uBAAuB;EAC3E,sBAAsB;EACtB,YAAY,SAAS,SAAe;GAClC,IAAG,CAAC,mBAAmB,SAAS,IAAI,GAClC,qBAAoB,OAAK;EAE7B,CAAC;EACD,OAAO,aAAa,QAAQ,yBAAwB,iBAAiB;CACvE;CAEA,+BAA4B;EAC1B,OAAO,aAAa,WAAW,uBAAuB;CACxD;CAKA,kBAAmB,MAAoB,OAAa;EAClD,IAAI,kBAA0C,CAAA;EAC9C,IAAK,KAAK,aAAa,KAAK,SAAS,KAAK,OACxC,kBAAkB,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI;EAEvE,OAAO,gBAAgB,UAAU;CACnC;CA1NW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAtB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAsB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,oBAAA;IAAA,oBAAA;KAAA;KAAA;KA+Bb;IAAgB;IAAA,sBAAA;IAAA,wBAAA;IAAA,UAAA;GAAA;GAAA,SAAA;IAAA,4BAAA;IAAA,gCAAA;IAAA,4BAAA;GAAA;GAAA,MAAA,EAAA,YAAA;IAAA,sBAAA;IAAA,oBAAA;GAAA,EAAA;GAAA,WArCzB,CAAC,gBAAgB;GAAC,iBAAA;GAAA,eAAA;GAAA,UAAA;GAAA,UC1B/B;GA2HM,QAAA,CAAA,iveAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDrGF;IAAY;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACZ;IAAe;IAAA;KAAA,MAAA;KAAA,MACf;KAAmC,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAA,KAAA;KAAA,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAQ1B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAblC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,SACrB;IACP;IACA;IACA;GACD;GAAA,WACU,CAAC,gBAAgB;GAAC,iBAGZ,wBAAwB;GAAK,eAC/B,kBAAkB;GAAI,UAAA;GAAA,QAAA,CAAA,iveAAA;EAAA,CAAA;;;;;GAUpC,MAAA;GAAY,MAAA,CAAA,oBAAoB;;;GAKhC,MAAA;GAAY,MAAA,CAAA,kBAAkB;;EAa9B,oBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GAKA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EAKrC,sBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAKA,wBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAKA,UAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EA2DA,4BAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EAKA,gCAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EAKA,4BAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AEpIH,IAAa,8BAAb,MAAa,oCAAoC,gCAA+B;CAC9E,cAAA;EACE,MAAK;EAMP,KAAA,cAAc,MAAc,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;EAGpB,KAAA,4BAA4B,IAAI,aAAY;CARtD;CAaA,aAAc,QAAc;EAC1B,UAAU,MAAM,6BAA6B,MAAM;CACrD;CAlBW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA2B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA3B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA2B,cAAA;GAAA,UAAA;GAAA,QAAA,EAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA,EAAA;GAAA,SAAA,EAAA,2BAAA,4BAAA;GAAA,WAN3B,CAAC,gBAAgB;GAAC,iBAAA;GAAA,UAAA;GAAA,UCT/B;GAuBM,QAAA,CAAA,oxCAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDfM;IAAY;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;IAAe;IAAA;KAAA,MAAA;KAAA,MAAA,KAAA;KAAA,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAO5B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA2B,YAAA,CAAA;EATvC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAA0B,SAC3B,CAAC,cAAc,eAAe;GAAC,WAC7B,CAAC,gBAAgB;GAAC,iBAGZ,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,oxCAAA;EAAA,CAAA;;;;;;;;;;;;EAazC,2BAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AEXH,IAAa,8BAAb,MAAa,oCAAoC,gCAA+B;CAC9E,cAAA;EACE,MAAK;EA2CC,KAAA,iBAAiB;EAChB,KAAA,UAAkB,KAAK;EACvB,KAAA,UAAkB;EACa,KAAA,UAAmB;EACjD,KAAA,4BAA4B,IAAI,aAAY;CA9CtD;CAEQ,mBAAmB,QAAc;EAavC,MAAM,OAAO;GAXX,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;EAGO,EAAQ;EACrB,OAAO,SAAS,OAAO,OAAO;CAChC;CAEQ,oBAAoB,QAAc;EAgBxC,MAAM,MAAM;GAdV,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;EAKM,EAAc;EAC1B,OAAO,MAAM,mBAAmB,QAAQ;CAC1C;CAWA,eAAY;EAEV,MAAM,aAAa,KAAK,WAAW,KAAK;EACxC,QAAQ,MAAM,iCAAiC;EAE/C,OAAO,KAAK,YAAY,QAA6E;EAErG,UAAU,MAAM,6BAA6B,UAAU;CACzD;CA3DW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA2B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA3B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA2B,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,SAAA;IAAA,SAAA;IAAA,SAAA;KAAA;KAAA;KAgDlB;IAAgB;GAAA;GAAA,SAAA,EAAA,2BAAA,4BAAA;GAAA,WAtDzB,CAAC,gBAAgB;GAAC,iBAAA;GAAA,UAAA;GAAA,UCT/B;GASA,QAAA,CAAA,2kBAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDDY;IAAY;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;IAAe;IAAA;KAAA,MAAA;KAAA,MAAA,KAAA;KAAA,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAO5B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA2B,YAAA,CAAA;EATvC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAA0B,SAC3B,CAAC,cAAc,eAAe;GAAC,WAC7B,CAAC,gBAAgB;GAAC,iBAGZ,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,2kBAAA;EAAA,CAAA;;;;EAgDzC,SAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,SAAA,CAAA,EAAA,MAAA,MAAA,CAAA;;GACA,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EACrC,2BAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AE1BH,IAAa,2BAAb,MAAa,iCAAiC,gCAA+B;CAC3E,cAAA;EACE,MAAK;EAGP,KAAA,iBAA6B;GAC3B;IAAE,QAAQ;IAAM,MAAM;IAAW,OAAO;GAAG;GAC3C;IAAE,QAAQ;IAAM,MAAM;IAAW,OAAO;GAAG;GAC3C;IAAE,QAAQ;IAAM,MAAM;IAAgB,OAAO;GAAG;GAChD;IAAE,QAAQ;IAAM,MAAM;IAAgB,OAAO;GAAS;GACtD;IAAE,QAAQ;IAAM,MAAM;IAAW,OAAO;GAAI;GAC5C;IAAE,QAAQ;IAAM,MAAM;IAAY,OAAO;GAAG;GAC5C;IAAE,QAAQ;IAAM,MAAM;IAAY,OAAO;GAAG;GAC5C;IAAE,QAAQ;IAAM,MAAM;IAAW,OAAO;GAAI;GAC5C;IAAE,QAAQ;IAAM,MAAM;IAAU,OAAO;GAAS;GAChD;IAAE,QAAQ;IAAM,MAAM;IAAU,OAAO;GAAS;EACjD;EAKD,KAAA,cAAc;EACd,KAAA,uBAAuB;EAKiB,KAAA,yBAAmC;EACnC,KAAA,6BAAuC;EACvC,KAAA,mBAA6B;EAC7B,KAAA,qBAA+B;EAC/B,KAAA,eAAyB;EACzB,KAAA,sBAAgC;EAChC,KAAA,iBAA2B;EAC3B,KAAA,oBAA8B;EAC9B,KAAA,yBAAmC;EACnC,KAAA,gBAA0B;EAC1B,KAAA,aAAuB;EACvB,KAAA,UAAoB;EACpB,KAAA,eAAyB;EAKxD,KAAA,cAAuB;EACvB,KAAA,WAAoB;EACpB,KAAA,eAAwB;EACxB,KAAA,mBAA4B;EAC5B,KAAA,qBAA8B;EAC9B,KAAA,eAAwB;EAIvB,KAAA,yBAAyB,IAAI,aAAY;EACzC,KAAA,0BAA0B,IAAI,aAAY;EAapD,KAAA,iBAA6B;GAC3B;IAAE,IAAG;IAAuB,QAAO;IAAmB,OAAO;IAAyB,QAAQ;IAAiB,MAAM;IAAI,YAAY;IAAI,WAAW;IAAI,aAAa;IAAI,KAAK;GAAE;GAChL;IAAE,IAAG;IAAuB,QAAO;IAAuB,YAAY;IAAgB,OAAO;IAAY,WAAW;IAAoB,QAAQ;IAA0B,MAAM;IAAI,KAAK;IAAI,aAAa;GAAE;GAC5M;IAAE,IAAG;IAAiB,QAAO;IAAa,OAAO;IAAmB,QAAQ;IAAc,IAAI,MAAG;KAAK,OAAO,KAAK,OAAM,KAAM;IAAI;IAAG,YAAY,KAAK;IAAkB,MAAM;IAAI,YAAY;IAAI,WAAW;IAAI,aAAa;GAAE;GAChO;IAAE,IAAG;IAAmB,QAAO;IAAe,OAAO;IAAqB,QAAQ;IAAiB,IAAI,MAAG;KAAK,OAAO,KAAK,OAAM,KAAM;IAAI;IAAG,YAAY,KAAK;IAAoB,aAAa;IAAI,MAAM;IAAI,YAAY;IAAI,WAAW;GAAE;GAC3O;IAAE,IAAG;IAAa,QAAO;IAAS,OAAO;IAAc,QAAQ;IAAU,IAAI,MAAG;KAAK,OAAO,KAAK,OAAM,KAAM;IAAI;IAAG,YAAY,KAAK;IAAc,MAAM;IAAI,YAAY;IAAI,WAAW;IAAI,aAAa;GAAE;GAC3M;IAAE,IAAG;IAAoB,QAAO;IAAgB,OAAO;IAAsB,QAAQ;IAAkB,MAAM;IAAI,YAAY;IAAI,WAAW;IAAI,aAAa;IAAI,KAAK;GAAE;GACxK;IAAE,IAAG;IAAoB,QAAO;IAAW,OAAO;IAAkB,QAAQ;IAAc,MAAM;IAAI,YAAY;IAAI,KAAK;IAAI,WAAW;IAAI,aAAa;GAAE;GAC3J;IAAE,IAAG;IAAc,QAAO;IAAc,OAAO;IAAoB,QAAQ;IAAgB,MAAM;IAAI,YAAY;IAAI,KAAK;IAAI,WAAW;IAAI,aAAa;GAAE;GAC5J;IAAE,IAAG;IAAmB,MAAM;IAAW,QAAQ;IAAI,OAAO;IAAI,QAAQ;IAAI,YAAY;IAAI,KAAK;IAAI,WAAW;IAAI,aAAa;GAAE;GACnI;IAAE,IAAG;IAAU,QAAO;IAAU,OAAO;IAAgB,QAAQ;IAAW,MAAM;IAAI,YAAY;IAAI,KAAK;IAAI,WAAW;IAAI,aAAa;GAAE;EAC5I;CA3ED;CAsDA,YAAY,SAAsB;EAChC,IAAI,QAAQ,qBACV,KAAK,kBAAkB,IAAI,QAAQ,mBAAmB,CAAC,YAAY;CAEvE;CAsBA,iBAAkB,MAAgB,OAAc;EAC9C,IAAI,CAAC,QAAQ,KAAK,SAAS,WACzB;EAIF,IAAI,KAAK,WAAW,WAClB,KAAK,8BAA6B;OAE/B;GACH,KAAK,uBAAuB;GAC5B,KAAK,cAAc;GACnB,UAAU,MAAM,0BAA0B;IAAE;IAAO,QAAQ,KAAK,SAAS,KAAK,SAAS;GAAE,CAAE;EAC7F;CACF;CAKA,gBAAiB,UAAgB;EAC/B,KAAK,uBAAuB;EAC5B,KAAK,cAAc;EACnB,UAAU,MAAM,2BAA2B,QAAQ;CACrD;CAKA,gBAAa;EACX,KAAK,cAAc,CAAC,KAAK;EACzB,IAAG,CAAC,KAAK,aACP,KAAK,uBAAuB;CAEhC;CAKA,gCAA6B;EAC3B,IAAG,CAAC,KAAK,aACP;EAEF,KAAK,uBAAuB,CAAC,KAAK;CACpC;CAKA,UAAU,MAAc;EAEtB,IAAI,MACF,OAAO,CAAC,KAAM,GAAG,KAAK,SAAS,KAAK,SAAS,KAAK,GAAE;EAGtD,OAAO;CACT;CAGA,UAAU,MAA0B;EAClC,IAAI,UAAU,MAAM;EAEpB,MAAM,WADa,KAAK,eAAe,MAAK,SAAO,KAAK,WAAW,KAAK,gBACvD,CAAA,EAAY;EAC7B,MAAM,mBAAmB,SAAS,WAAW,KAAK,KAAK;EACvD,IAAI,MAAM,eAAe,kBAAkB;GACzC,UAAU,UAAU;GACpB,IAAI,kBAAkB;IACpB,UAAU,UAAU,OAAO;IAC3B,IAAI,MAAM,aACR,UAAU,UAAU;GAExB;GACA,IAAI,MAAM,aACR,UAAU,UAAU,KAAK;EAE7B;EACA,OAAO;CACT;CAEA,gBAAa;EAEX,QAD8B,KAAK,aAAa,KAAK,eAAe,MAAM,GAAE,EAAE,IAAI,KAAK,eAChF,CAAsB,KAAM,SAAQ;GAEzC,IAAI,KAAK,UAAU,IAAI,KAAM,KAAK,cAAc,CAAC,KAAM,KAAK,aAC1D;GAEF,OAAO;EACT,CAAC;CACH;CAEA,WAAW,MAA0B;EACnC,OAAO,mBAAmB,MAAM,OAAO,OAAO,CAAC,CAAC,CAAC,YAAW,IAAK,MAAM,OAAO,MAAM,CAAC;CACvF;CA9KW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAwB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAxB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAwB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,wBAAA;KAAA;KAAA;KA2Bf;IAAgB;IAAA,4BAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,kBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,oBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,cAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,qBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,gBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,mBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,wBAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,eAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,YAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,SAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,cAAA;KAAA;KAAA;KAChB;IAAgB;IAAA,aAAA;IAAA,UAAA;IAAA,cAAA;IAAA,kBAAA;IAAA,oBAAA;IAAA,cAAA;GAAA;GAAA,SAAA;IAAA,wBAAA;IAAA,yBAAA;GAAA;GAAA,WA9CzB,CAAC,gBAAgB;GAAC,iBAAA;GAAA,eAAA;GAAA,UAAA;GAAA,UC/B/B;GAyGA,QAAA,CAAA,8qgBAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MD3EY;IAAY;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;IAAe;IAAA;KAAA,MAAA;KAAA,MAAA,KAAA;KAAA,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAQ5B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAwB,YAAA,CAAA;EAVpC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAuB,SACxB,CAAC,cAAc,eAAe;GAAC,WAC7B,CAAC,gBAAgB;GAAC,iBAGZ,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,8qgBAAA;EAAA,CAAA;;;;;GA8BzC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;;GACrC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EAKrC,aAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,UAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,kBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,oBAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EACA,cAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAIA,wBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;EACA,yBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AEhFH,IAAa,uBAAb,MAAa,qBAAoB;CARjC,cAAA;EAYE,KAAA,YAAY;GACV;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;GAC7B;IAAE,QAAQ;IAAO,MAAM;GAAM;EAC9B;EAKD,KAAA,cAAc;EAK0B,KAAA,UAAoB;EAKnD,KAAA,eAAwB;EAKvB,KAAA,sBAAsB,IAAI,aAAY;CAyBjD;CApBC,YAAa,MAAY;EACvB,UAAU,MAAM,uBAAuB,IAAI;CAC7C;CAKA,gBAAa;EACX,KAAK,cAAc,CAAC,KAAK;CAC3B;CAKA,oBAAqB,QAAc;EACjC,OAAO;GACL,YAAY,KAAK,iBAAiB;IACjC,aAAa,SAAS;EACxB;CACH;CA5DW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAoB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAApB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAoB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,SAAA;KAAA;KAAA;KA0BX;IAAgB;IAAA,cAAA;GAAA;GAAA,SAAA,EAAA,qBAAA,sBAAA;GAAA,UAAA;GAAA,UCtCtC;GAgCA,QAAA,CAAA,o2HAAA;GAAA,cAAA,CAAA;IAAA,MAAA;IAAA,MD1BY;GAAY,GAAA;IAAA,MAAA;IAAA,MAAA,GAAA;IAAA,UAAA;IAAA,QAAA,CAAA,SAAA,SAAA;GAAA,CAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAMX,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EARhC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkB,SACnB,CAAC,YAAY;GAAC,iBAGN,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,o2HAAA;EAAA,CAAA;;;;GA4BzC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EAKrC,cAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAKA,qBAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AEhCH,IAAa,4BAAb,MAAa,kCAAkC,gCAA+B;CAC5E,cAAA;EACE,MAAK;EAOP,KAAA,iBAAiB,CACf;GAAE,MAAK;GAAS,OAAO;GAA2B,QAAQ;EAAa,GACvE;GAAE,MAAK;GAAW,OAAO;GAA6B,QAAQ;EAAe,CAC9E;EASD,KAAA,cAAc;EAK0B,KAAA,UAAoB;EAKnD,KAAA,eAAwB;EAKvB,KAAA,2BAA2B,IAAI,aAAY;CAjCrD;CAWA,IAAI,gBAAa;EACf,OAAO,KAAK,eAAe,MAAK,SAAQ,KAAK,QAAQ,KAAK,YAAY;CACxE;CAuBA,YAAY,SAAsB;EAChC,IAAI,QAAQ,qBACV,KAAK,kBAAkB,IAAI,QAAQ,mBAAmB,CAAC,YAAY;CAEvE;CAKA,iBAAkB,MAAY;EAC5B,UAAU,MAAM,4BAA4B,IAAI;CAClD;CAKA,gBAAa;EACX,KAAK,cAAc,CAAC,KAAK;CAC3B;CAzDW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAyB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAzB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAyB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,SAAA;KAAA;KAAA;KA0BhB;IAAgB;IAAA,cAAA;GAAA;GAAA,SAAA,EAAA,0BAAA,2BAAA;GAAA,WAjCzB,CAAC,gBAAgB;GAAC,iBAAA;GAAA,eAAA;GAAA,UAAA;GAAA,UCT/B;GAuCA,QAAA,CAAA,u+KAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MD/BY;IAAY;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA,CAAA,SAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;IAAe;IAAA;KAAA,MAAA;KAAA,MAAA,KAAA;KAAA,MAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAQ5B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAyB,YAAA,CAAA;EAVrC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAwB,SACzB,CAAC,cAAc,eAAe;GAAC,WAC7B,CAAC,gBAAgB;GAAC,iBAGZ,wBAAwB;GAAK,eAC/B,kBAAkB;GAAS,UAAA;GAAA,QAAA,CAAA,u+KAAA;EAAA,CAAA;;;;;GA6BzC,MAAA;GAAM,MAAA,CAAA,EAAE,WAAW,iBAAgB,CAAE;;EAKrC,cAAA,CAAA,EAAA,MAAA,MAAA,CAAA;EAKA,0BAAA,CAAA,EAAA,MAAA,OAAA,CAAA;;;AE7CH,IAAa,yBAAb,MAAa,uBAAsB;CAHnC,cAAA;EASmB,KAAA,cAAsB;EACvC,KAAA,mBAAmB,IAAI,gBAAyB,KAAK,WAAW;EAChE,KAAA,0BAA0B,IAAI,gBAAkC,CAAA,CAAE;EAsD1D,KAAA,oBAA6B;CAEtC;CA7DC,IAAI,iBAAiB,KAAY;EAC/B,KAAK,oBAAoB;CAC3B;CAKA,IAAI,kBAAe;EACjB,OAAO,KAAK,iBAAiB,SAAQ;CACvC;CAEA,IAAI,uBAAuB,aAA8B;EACvD,KAAK,wBAAwB,KAAK,WAAW;CAC/C;CAEA,IAAI,yBAAsB;EACxB,OAAO,KAAK,wBAAwB,SAAQ;CAC9C;CAIA,MAAM,mBAAmB,MAAa;EACpC,KAAK,iBAAiB,KAAK,IAAI;EAC/B,MAAM,KAAK,qBAAqB,IAAI;CACtC;CAEA,wBAAwB,WAAyB;EAC/C,MAAM,MAAyB,CAAA;EAC/B,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,sBAAsB,GACnE,IAAG,OAAO,SAAS,YAAY,UAAU,MAAK,MAAG,MAAM,GAAG,GACxD,IAAI,OAAO;EAIf,OAAO;CACT;CAEA,MAAM,qBAAqB,MAAa;EACtC,MAAM,OAAO,MAAM,MAAM,GAAG,KAAK,kBAAiB,WAAY,KAAI,MAAO;EACzE,QAAQ,IAAI,iCAAiC,KAAK,kBAAiB,WAAY,KAAI,MAAO;EAC1F,QAAQ,IAAI,IAAI;EAChB,MAAM,WAAW,MAAM,KAAK,KAAI;EAEhC,IAAI,SAAS,KAAK,aAAa;GAE7B,MAAM,mBAAmB,OAAM,MADJ,MAAM,GAAG,KAAK,kBAAiB,iBAAkB,EAC7C,EAAc,OAAM;GACnD,MAAM,0BAA0B,oBAAoB,OAAO,KAAK,gBAAgB;GAChF,IAAI,yBAAyB,QAC3B,KAAK,MAAM,SAAS,yBAAyB;IAC3C,MAAM,YAAY,wBAAwB;IAC1C,SAAS,eAAe,iBAAiB;GAC3C;EAEJ;EACA,KAAK,wBAAwB,KAAK,QAAQ;CAC5C;CA1DW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAtB;EAAA,KAAA,QAAA,GAAA,sBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,YAFrB;EAAM,CAAA;CAAA;;AAEP,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAHlC,MAAA;EAAW,MAAA,CAAA,EACV,YAAY,OACb,CAAA"}