{"version":3,"file":"app-856d7bcd.91219481c28bf9dc.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\",\"sourcesContent\":[\".viewer-menu { \\r\\n\\tposition: absolute;\\r\\n\\tdisplay:inline-block;\\r\\n\\tleft: 50%;\\r\\n\\ttransform: translateX(-50%);\\r\\n\\tbottom: 0%;\\r\\n\\tmargin-bottom: 5px;\\r\\n\\twidth: fit-content;\\r\\n\\theight: fit-content;\\r\\n\\tborder-radius: 5px;\\r\\n\\tbackground-color: white;\\r\\n\\twhite-space: nowrap;\\r\\n\\tz-index: 1; \\r\\n}\\r\\n\\r\\n.menu-btn-item {\\r\\n\\tborder: 0;\\r\\n\\tmargin-left: 2px;\\r\\n\\tmargin-right: 2px;\\r\\n\\tmargin-top:5px;\\r\\n\\tmargin-bottom:5px;\\r\\n\\tpadding: 6px;\\r\\n}\\r\\n\\r\\n.menu-dropdown-item {\\r\\n display: inline-block;\\r\\n}\\r\\n\\r\\n.dropdown-menu.show {\\r\\n min-width: inherit;\\r\\n display: inline-block;\\r\\n}\\r\\n\\r\\n.crop-switch {\\r\\n margin: 5px;\\r\\n\\tlabel {\\r\\n\\t\\tdisplay: inline-block;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.menu-line {\\r\\n margin:0;\\r\\n padding:0;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"\\r\\n\";","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 public selectedTool = \"fa-solid fa-arrow-pointer\";\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 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 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 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 this.selectedTool = icon;\r\n this.eventAggregator.publish('3dViewer:ChangeTool', tool);\r\n }\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","ViewerMenuEnum","ViewerMenu","constructor","eventAggregator","subscription","contextMenu","modal","isWorkArea","isViewersLoading","isSettingsVisible","isModelsShowing","subscriptions","cropAll","cropItems","directionsToCrop","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","bindable","autoinject","EventAggregator"],"sourceRoot":""}