{"version":3,"file":"app-856d7bcd.119bcd5e75b69e55.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/project/work-area/viewer-menu/viewer-menu.scss","webpack://client-app/./src/app/project/work-area/viewer-menu/viewer-menu.html","webpack://client-app/./src/app/project/work-area/viewer-menu/viewer-menu-enums.ts","webpack://client-app/./src/app/project/work-area/viewer-menu/viewer-menu.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.viewer-menu{position:absolute;display:inline-block;left:50%;transform:translateX(-50%);bottom:0%;margin-bottom:5px;width:fit-content;height:fit-content;border-radius:5px;background-color:#fff;white-space:nowrap;z-index:1}.menu-btn-item{border:0;margin-left:2px;margin-right:2px;margin-top:5px;margin-bottom:5px;padding:6px}.menu-dropdown-item{display:inline-block}.dropdown-menu.show{min-width:inherit;display:inline-block}.crop-switch{margin:5px}.crop-switch label{display:inline-block}.menu-line{margin:0;padding:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/work-area/viewer-menu/viewer-menu.scss\"],\"names\":[],\"mappings\":\"AAAA,aACC,iBAAA,CACA,oBAAA,CACA,QAAA,CACA,0BAAA,CACA,SAAA,CACA,iBAAA,CACA,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,qBAAA,CACA,kBAAA,CACA,SAAA,CAGD,eACC,QAAA,CACA,eAAA,CACA,gBAAA,CACA,cAAA,CACA,iBAAA,CACA,WAAA,CAGD,oBACI,oBAAA,CAGJ,oBACI,iBAAA,CACA,oBAAA,CAGJ,aACI,UAAA,CACH,mBACC,oBAAA,CAIF,WACI,QAAA,CACA,SAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = ` `;\n// Exports\nexport default code;","export enum ViewerMenuEnum {\r\n VISIBLE = 0,\r\n TRANSLUCENT = 1,\r\n HIDDEN = 2\r\n}\r\n","import {autoinject,bindable} from \"aurelia-framework\";\r\nimport {EventAggregator, Subscription} from \"aurelia-event-aggregator\";\r\nimport { ContextMenuService } from \"app/services/context-menu-service\";\r\nimport { ViewerMenuEnum } from \"./viewer-menu-enums\";\r\nimport { SwitchItem } from \"./switch-item\";\r\nimport { ModalService } from \"app/services/modal-service\";\r\nimport { BaseViewerCombined } from \"app/components/base-viewer-combined/base-viewer-combined\";\r\nimport {ToolEnum} from \"../../../services/ViewerThreeDServiceIF\";\r\n\r\ndeclare let $: any;\r\n\r\n@autoinject\r\nexport class ViewerMenu {\r\n @bindable public isWorkArea:boolean = false;\r\n\r\n\t@bindable public parent:BaseViewerCombined|undefined;\r\n\r\n\t// public openbimMode:boolean = false; \r\n\r\n private isViewersLoading: boolean = false;\r\n public isSettingsVisible: boolean = false;\r\n public isModelsShowing: boolean = false;\r\n public subscriptions: Subscription[] = [];\r\n public cropAll: boolean = false;\r\n public cropItems: SwitchItem[] = [];\r\n public directionsToCrop: string[] = [];\r\n\r\n\tpublic readonly defaultTool = \"fa-solid fa-arrow-pointer\";\r\n public selectedTool = \"fa-solid fa-arrow-pointer\";\r\n\r\n public viewState: number = ViewerMenuEnum.VISIBLE;\r\n private anyItemsSelected: boolean = false;\r\n\r\n /* Bemaerk, den kommunikerer naesten udelukkende gennem EVENTS den sender og modtager.\r\n\t*/\r\n\r\n constructor(public eventAggregator: EventAggregator, public subscription: Subscription, \r\n\t\t public contextMenu: ContextMenuService, public modal: ModalService) \r\n\t{\r\n\t\tconsole.log('viewerMenu.ctor');\r\n }\r\n\r\n\tactivate() { console.log('viewerMenu.activate');}\r\n bind(): void {\r\n\t\tconsole.log('viewerMenu.bind');\r\n let self = this;\r\n this.subscriptions = [\r\n this.eventAggregator.subscribe('ViewerMenu:ChangeIsSettingsVisible', async () => {self.viewerSettingsClicked()}),\r\n this.eventAggregator.subscribe('ViewerMenu:ChangeModelToVisible', async (isVisible: boolean) => {self.changeModelsMenuVisibility(isVisible) }),\r\n this.eventAggregator.subscribe('ViewerMenu:viewers-finished-loading', async () => { this.isViewersLoading = false}),\r\n this.eventAggregator.subscribe('ViewerMenu:elements-selected', async (isElementSelected: boolean) => {this.anyItemsSelected = isElementSelected})\r\n ]\r\n this.cropItems = [\r\n {name: 'top',on: false},\r\n {name: 'bottom',on: false},\r\n {name: 'left',on: false},\r\n {name: 'right',on: false},\r\n {name: 'front',on: false},\r\n {name: 'back',on: false},\r\n ]\r\n }\r\n\tattached() { \r\n\t\tconsole.log('viewerMenu.attached', this.parent);\r\n }\r\n \r\n detached(): void {\r\n this.subscriptions.forEach((subscription: Subscription) => subscription.dispose());\r\n }\r\n\r\n\tpublic useFragments = BaseViewerCombined.useMPKFragments_Master; \r\n\tuseFragmentsCheckbox(event:any) {\r\n\t\tconsole.log('useFragmentsCheckbox', this.useFragments);\r\n\t\tBaseViewerCombined.useMPKFragments_Master = this.useFragments; // store it for later.\r\n\t\tthis.eventAggregator.publish('debug:useFragments', {useFragments:this.useFragments, reload:true});\r\n\t}\r\n\r\n async viewerSettingsClicked(): Promise {\r\n this.eventAggregator.publish('WorkAreaContainer:ViewerSettingsPressed');\r\n this.isSettingsVisible = !this.isSettingsVisible; \r\n }\r\n \r\n async modelsMenuClicked(): Promise {\r\n this.eventAggregator.publish('ModelRevision:ModelsPressed');\r\n }\r\n\r\n async changeModelsMenuVisibility(isVisible: boolean): Promise {\r\n this.isModelsShowing = isVisible;\r\n }\r\n\r\n async changeViewState(): Promise {\r\n if (this.viewState == ViewerMenuEnum.VISIBLE) {\r\n this.viewState = ViewerMenuEnum.TRANSLUCENT;\r\n this.eventAggregator.publish('3dViewer:TransluteAll');\r\n return;\r\n \r\n }\r\n if (this.viewState == ViewerMenuEnum.TRANSLUCENT) {\r\n this.viewState = ViewerMenuEnum.HIDDEN;\r\n this.eventAggregator.publish('3dViewer:HideAll');\r\n return;\r\n }\r\n if (this.viewState == ViewerMenuEnum.HIDDEN) {\r\n this.viewState = ViewerMenuEnum.VISIBLE;\r\n this.eventAggregator.publish('3dViewer:ShowAll');\r\n return;\r\n\r\n }\r\n }\r\n\r\n cropAllClicked(): boolean {\r\n\t\tconsole.log('cropAllClicked, will call sendCropPublish');\r\n\r\n if (this.isAnyElementSelected() == false && this.cropAll == false) {\r\n this.modal.OpenMessage(\"No elements Selected\", \"You must have elements selected to crop the model.\")\r\n return false;\r\n }\r\n this.cropAll = !this.cropAll\r\n this.cropItems.forEach((item: SwitchItem) => {\r\n item.on = this.cropAll;\r\n });\r\n this.sendCropPublish();\r\n return true;\r\n }\r\n\r\n cropClicked(clickedItem: SwitchItem): boolean {\r\n\t\tconsole.log('cropClicked, will call sendCropPublish');\r\n\r\n if (this.isAnyElementSelected() == false && clickedItem.on == false) {\r\n this.modal.OpenMessage(\"No elements Selected\", \"You must have elements selected to crop the model.\")\r\n return false;\r\n }\r\n if (clickedItem != undefined || clickedItem != null) {\r\n clickedItem.on = !clickedItem.on;\r\n }\r\n this.sendCropPublish();\r\n return true;\r\n }\r\n\r\n private isAnyElementSelected(): boolean {\r\n let result: boolean = false;\r\n $('#viewerContainer3d').viewer('eachSelected', function(id: number) {\r\n result = true;\r\n });\r\n return result;\r\n }\r\n\r\n sendCropPublish(): void {\r\n\t\tconsole.log('sendCropPublish, will publish 3dViewer:crop');\r\n\r\n this.directionsToCrop = [];\r\n this.cropItems.forEach((item: SwitchItem) => {\r\n if (item.on) {\r\n this.directionsToCrop.push(item.name);\r\n }\r\n });\r\n this.cropAll = this.directionsToCrop.length == 6; //All are checked\r\n this.eventAggregator.publish('3dViewer:crop', this.directionsToCrop);\r\n }\r\n \r\n async newToolSelected(tool: ToolEnum, icon: string): Promise {\r\n\t\tconsole.log('viewer-menu.newToolSelected', tool,icon, '(publishes event 3dViewer:ChangeTool)');\r\n\t\tconst alreadyEnabled = (this.selectedTool == icon);\r\n\t\tif (!alreadyEnabled) {\r\n\t\t\tthis.selectedTool = icon;\r\n\t\t\tthis.eventAggregator.publish('3dViewer:ChangeTool', tool);\t\r\n\t\t} else {\r\n\t\t\tconsole.log('toggling off, as already enabled.');\r\n\t\t\tthis.selectedTool = this.defaultTool;\r\n\t\t\tthis.eventAggregator.publish('3dViewer:ChangeTool', ToolEnum.ObjectSelection);\t\r\n\t\t}\r\n }\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","ViewerMenuEnum","ViewerMenu","constructor","eventAggregator","subscription","contextMenu","modal","isWorkArea","isViewersLoading","isSettingsVisible","isModelsShowing","subscriptions","cropAll","cropItems","directionsToCrop","defaultTool","selectedTool","viewState","VISIBLE","anyItemsSelected","useFragments","BaseViewerCombined","useMPKFragments_Master","console","log","activate","bind","self","this","subscribe","async","viewerSettingsClicked","isVisible","changeModelsMenuVisibility","isElementSelected","name","on","attached","parent","detached","forEach","dispose","useFragmentsCheckbox","event","publish","reload","modelsMenuClicked","changeViewState","TRANSLUCENT","HIDDEN","cropAllClicked","isAnyElementSelected","OpenMessage","item","sendCropPublish","cropClicked","clickedItem","undefined","result","$","viewer","length","newToolSelected","tool","icon","ObjectSelection","bindable","autoinject","EventAggregator"],"sourceRoot":""}