{"version":3,"file":"app-02610b14.bb66d4986f109f2b.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/project/work-area/work-area-container.scss","webpack://client-app/./src/app/project/work-area/work-area-container.html","webpack://client-app/./src/app/project/work-area/work-area-container.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, `.top-bar-work-area{border-bottom:1px #d3d3d3 solid}#property-button,#grid-button,#viewer-button,#color-button{box-shadow:none !important;color:#fff;width:30px}.property-button-enabled,.grid-button-enabled,.viewer-button-enabled,.color-button-enabled{background-color:#00b3c9;border-color:#00b3c9}.property-button-enabled:hover,.grid-button-enabled:hover,.viewer-button-enabled:hover,.color-button-enabled:hover{background-color:#009eb3;border-color:#009eb3}.property-button-enabled:active,.grid-button-enabled:active,.viewer-button-enabled:active,.color-button-enabled:active{background-color:#009eb3 !important;border-color:#009eb3 !important}.property-button-disabled,.grid-button-disabled,.viewer-button-disabled,.color-button-disabled{background-color:#343434;border-color:#343434}.property-button-disabled:hover,.grid-button-disabled:hover,.viewer-button-disabled:hover,.color-button-disabled:hover{background-color:#272727;border-color:#272727}.property-button-disabled:active,.grid-button-disabled:active,.viewer-button-disabled:active,.color-button-disabled:active{background-color:#272727 !important;border-color:#272727 !important}.work-area-title{display:inline;padding-left:10px}.menu-top{padding-right:10px;display:inline;float:right}.menu-top button{margin-left:2px;margin-right:2px}.panel-container{display:flex;height:calc(100vh - 50px);width:100%;max-width:100% !important;margin-top:10px;margin-bottom:10px;overflow:auto}.panel-left{overflow:hidden;border-radius:10px;position:relative;width:100%}.panel-right{width:350px;min-width:350px;border-top-left-radius:10px;border-bottom-left-radius:10px;margin-left:10px;margin-bottom:5px;overflow:auto;display:flex;flex-direction:column;position:relative}.panel-middle{position:relative;display:flex;flex-direction:column;overflow:hidden;width:100%;border-radius:10px}.top-middle-view{position:relative;z-index:1026}.tool-select{font-family:Arial,FontAwesome;margin:2px;padding:2px}.small-2d-view{position:absolute;visibility:hidden;width:30%;height:300px;right:0;bottom:0;margin-right:5px;margin-bottom:5px;z-index:0;border-radius:10px !important;overflow:hidden}.bottom-middle-view{position:relative;overflow:hidden;border-radius:10px;z-index:1000}.gutter{background-repeat:no-repeat;background-position:50%}.gutter.gutter-vertical::before{position:relative;display:flex;flex-direction:column;align-items:center;top:50%;transform:translateY(-50%);font-weight:900;font-size:30px !important;content:\"\";font:var(--fa-font-solid);z-index:0}.gutter.gutter-vertical{cursor:row-resize}.gutter.gutter.gutter-horizontal{cursor:col-resize}.gutter.gutter-horizontal::before{position:relative;display:flex;justify-content:center;top:50%;transform:translateY(-50%);font-weight:900;font-size:35px}.gutter-content::before{content:\"|\";font:var(--fa-font-solid)}.hide-box{display:none}.model-view{margin-right:0px;margin-left:2px;padding:10px;float:left;z-index:15000}#revision-container{margin-right:2px;margin-left:3px;padding:10px;float:left;width:0px}.model-revision-container{left:60%;top:30%;position:absolute;display:inline;min-width:350px;border:1px solid silver;border-radius:1%;overflow-x:hidden;visibility:hidden;z-index:1031;max-height:50%;scroll-behavior:smooth;scrollbar-width:thin}.model-button{position:absolute;top:20px;right:20px;z-index:1025;background-color:#fff}.close-button{position:absolute;text-align:center;line-height:1em;left:320px;top:3px;height:25px}.active:disabled{color:#fff;background-color:#000;opacity:.5;pointer-events:auto}.custom-button:disabled{opacity:.5;pointer-events:auto}.building-part-grid{min-width:420px;padding-top:8px}.alert-missing-model{bottom:0;width:99%;position:absolute;z-index:2000;animation:fadeIn .2s}.button-container{text-align:center;vertical-align:middle !important;padding:0px 10px;min-width:120px}.button-container .right{float:right}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.part-grid .table-container{height:calc(100vh - 130px)}.viewer-settings{background-color:#fff;position:absolute;height:99%;border-top-left-radius:10px;border-bottom-left-radius:10px;padding:10px 20px;overflow:auto;width:350px;right:0%;top:0%;z-index:1030}.property-legend-shared,.color-legend-shared,.color-legend-full,.property-legend-full{position:relative;overflow:hidden}.color-legend-full,.property-legend-full{height:100%}.property-legend-shared,.color-legend-shared{height:calc(50% - 5px)}.custom-margin{height:10px}.wrap{flex-direction:column-reverse}.wrap .move-button{transform:rotate(180deg)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/work-area/work-area-container.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".top-bar-work-area {\\r\\n\\tborder-bottom: 1px lightgray solid;\\r\\n}\\r\\n\\r\\n#property-button, #grid-button, #viewer-button, #color-button {\\r\\n\\tbox-shadow: none!important;\\r\\n\\tcolor: white;\\r\\n\\twidth: 30px;\\r\\n}\\r\\n\\r\\n.property-button-enabled, .grid-button-enabled, .viewer-button-enabled, .color-button-enabled {\\r\\n\\tbackground-color:#00b3c9;\\r\\n\\tborder-color:#00b3c9;\\r\\n\\t&:hover {\\r\\n\\t\\tbackground-color:#009eb3;\\r\\n\\t\\tborder-color:#009eb3;\\t\\r\\n\\t}\\r\\n\\t&:active {\\r\\n\\t\\tbackground-color:#009eb3!important;\\r\\n\\t\\tborder-color:#009eb3!important;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.property-button-disabled, .grid-button-disabled, .viewer-button-disabled, .color-button-disabled {\\r\\n\\tbackground-color:#343434;\\r\\n\\tborder-color:#343434;\\r\\n\\t&:hover {\\r\\n\\t\\tbackground-color:#272727;\\r\\n\\t\\tborder-color:#272727;\\t\\r\\n\\t}\\r\\n\\t&:active {\\r\\n\\t\\tbackground-color:#272727!important;\\r\\n\\t\\tborder-color:#272727!important;\\t\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.work-area-title {\\r\\n\\tdisplay: inline;\\r\\n\\tpadding-left:10px;\\r\\n}\\r\\n\\r\\n.menu-top {\\r\\n\\tpadding-right: 10px;\\r\\n\\tdisplay:inline;\\r\\n\\tfloat:right;\\r\\n\\r\\n\\tbutton {\\r\\n\\t\\tmargin-left: 2px;\\r\\n\\t\\tmargin-right: 2px;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.panel-container {\\r\\n\\tdisplay: flex;\\r\\n\\theight: calc(100vh - 50px);\\r\\n\\twidth: calc(100%);\\r\\n\\tmax-width: calc(100%) !important;\\r\\n\\tmargin-top: 10px;\\r\\n\\tmargin-bottom: 10px;\\r\\n\\toverflow: auto;\\r\\n}\\r\\n\\r\\n.panel-left {\\r\\n\\toverflow: hidden;\\r\\n\\tborder-radius: 10px;\\r\\n\\tposition: relative;\\r\\n\\twidth:100%;\\r\\n\\r\\n}\\r\\n.panel-right {\\r\\n\\twidth: 350px;\\r\\n\\tmin-width: 350px;\\r\\n\\tborder-top-left-radius: 10px;\\r\\n\\tborder-bottom-left-radius: 10px;\\r\\n\\tmargin-left: 10px;\\r\\n\\tmargin-bottom: 5px;\\r\\n\\toverflow: auto;\\r\\n\\tdisplay:flex;\\r\\n\\tflex-direction:column;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.panel-middle {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\toverflow: hidden;\\r\\n\\twidth:100%;\\r\\n\\tborder-radius: 10px;\\r\\n}\\r\\n\\r\\n.top-middle-view {\\r\\n\\tposition: relative;\\r\\n\\tz-index: 1026;\\r\\n}\\r\\n\\r\\n.tool-select {\\r\\n\\tfont-family: Arial, FontAwesome;\\r\\n\\tmargin: 2px;\\r\\n\\tpadding:2px;\\r\\n}\\r\\n\\r\\n\\r\\n.small-2d-view {\\r\\n\\tposition:absolute;\\r\\n\\tvisibility: hidden;\\r\\n\\twidth: 30%;\\r\\n\\theight: 300px;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\tmargin-right: 5px;\\r\\n\\tmargin-bottom: 5px;\\r\\n\\tz-index: 0;\\r\\n\\tborder-radius: 10px!important;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.bottom-middle-view {\\r\\n\\tposition: relative;\\r\\n\\toverflow: hidden;\\r\\n\\tborder-radius: 10px;\\r\\n\\tz-index: 1000;\\r\\n}\\r\\n\\r\\n.gutter {\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-position: 50%;\\r\\n}\\r\\n \\r\\n.gutter.gutter-vertical::before {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\talign-items: center;\\r\\n\\ttop:50%;\\r\\n\\ttransform: translateY(-50%);\\r\\n\\tfont-weight: 900;\\r\\n\\tfont-size: 30px!important; //Needs to stay.\\r\\n\\tcontent: \\\"\\\\f86c\\\";\\r\\n\\tfont: var(--fa-font-solid);\\r\\n\\tz-index: 0;\\r\\n}\\r\\n\\r\\n.gutter.gutter-vertical {\\r\\n\\tcursor: row-resize;\\r\\n}\\r\\n\\r\\n.gutter.gutter.gutter-horizontal {\\r\\n\\tcursor: col-resize;\\r\\n}\\r\\n\\r\\n.gutter.gutter-horizontal::before {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: flex;\\r\\n\\tjustify-content: center;\\r\\n\\ttop:50%;\\r\\n\\ttransform: translateY(-50%);\\r\\n\\tfont-weight: 900;\\r\\n\\tfont-size: 35px; //Needs to stay.\\r\\n}\\r\\n\\r\\n.gutter-content::before {\\r\\n\\tcontent: \\\"\\\\7c\\\";\\r\\n\\tfont: var(--fa-font-solid);\\r\\n}\\r\\n\\r\\n.hide-box {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.model-view {\\r\\n\\tmargin-right: 0px;\\r\\n\\tmargin-left: 2px;\\r\\n\\tpadding: 10px;\\r\\n\\tfloat: left;\\r\\n\\tz-index: 15000;\\r\\n}\\r\\n\\r\\n#revision-container {\\r\\n\\tmargin-right: 2px;\\r\\n\\tmargin-left: 3px;\\r\\n\\tpadding: 10px;\\r\\n\\tfloat: left;\\r\\n\\twidth: 0px;\\r\\n}\\r\\n\\r\\n.model-revision-container {\\r\\n\\tleft: 60%;\\r\\n\\ttop: 30%;\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: inline;\\r\\n\\tmin-width: 350px;\\r\\n\\tborder: 1px solid silver;\\r\\n\\tborder-radius: 1%;\\r\\n\\toverflow-x: hidden;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: 1031;\\r\\n\\tmax-height: 50%;\\r\\n\\tscroll-behavior: smooth;\\r\\n\\tscrollbar-width: thin;\\r\\n}\\r\\n\\r\\n.model-button {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 20px;\\r\\n\\tright: 20px;\\r\\n\\tz-index: 1025;\\r\\n\\tbackground-color: white;\\r\\n}\\r\\n\\r\\n.close-button {\\r\\n\\tposition: absolute;\\t\\r\\n\\ttext-align: center;\\r\\n\\tline-height: 1em;\\r\\n\\tleft: 320px;\\r\\n\\ttop:3px;\\r\\n\\theight: 25px;\\r\\n}\\r\\n\\r\\n.active:disabled {\\r\\n color: white;\\r\\n background-color: black;\\r\\n opacity: 0.5;\\r\\n pointer-events: auto;\\r\\n} \\r\\n\\r\\n\\r\\n.custom-button:disabled {\\r\\n opacity: 0.5;\\r\\n pointer-events: auto;\\r\\n} \\r\\n\\r\\n.building-part-grid {\\r\\n\\tmin-width: 420px;\\r\\n\\tpadding-top:8px;\\r\\n}\\r\\n\\r\\n.alert-missing-model {\\r\\n\\tbottom: 0;\\r\\n\\twidth: 99%;\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 2000;\\r\\n\\tanimation: fadeIn 0.2s;\\r\\n}\\r\\n\\r\\n.button-container {\\r\\n text-align: center; \\r\\n vertical-align: middle!important;\\r\\n\\tpadding: 0px 10px;\\r\\n min-width: 120px;\\r\\n\\t.right {\\r\\n\\t\\tfloat: right;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n@keyframes fadeIn {\\r\\n\\t0% {opacity:0;}\\r\\n\\t100% {opacity:1;}\\r\\n }\\r\\n\\r\\n .part-grid .table-container {\\r\\n\\t height: calc(100vh - 130px);\\r\\n }\\r\\n\\r\\n .viewer-settings {\\r\\n\\tbackground-color: white;\\r\\n\\tposition: absolute;\\r\\n\\theight: 99%;\\r\\n\\tborder-top-left-radius: 10px;\\r\\n\\tborder-bottom-left-radius: 10px;\\r\\n\\tpadding: 10px 20px;\\r\\n\\toverflow: auto;\\r\\n\\twidth: 350px;\\r\\n\\tright:0%;\\r\\n\\ttop: 0%;\\r\\n\\tz-index: 1030;\\r\\n}\\r\\n\\r\\n.property-legend-shared, .color-legend-shared, .color-legend-full, .property-legend-full {\\r\\n\\tposition: relative;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.color-legend-full, .property-legend-full {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.property-legend-shared, .color-legend-shared {\\r\\n\\theight: calc(50% - 5px);\\r\\n}\\r\\n\\r\\n.custom-margin {\\r\\n\\theight: 10px;\\r\\n}\\r\\n\\r\\n.wrap {\\r\\n\\tflex-direction:column-reverse;\\r\\n\\t.move-button {\\r\\n\\t\\ttransform: rotate(180deg);\\r\\n\\t}\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = \"\\r\\n\";","import { BimViewerFileFromModelRevision, BimViewerRevisionFromModelRevision } from \"app/models/viewer-dtos/Dtos/bimviewer-dtos\";\r\nimport { ApiClient } from \"app/services/api-client\";\r\nimport { AppContextService } from \"app/services/app-context-service\";\r\nimport { autoinject } from 'aurelia-framework';\r\nimport $ from 'jquery'; //Declaring the var instead of this import makes draggable method call fail.\r\nimport 'jquery-ui/ui/widgets/draggable';\r\nimport {EventAggregator, Subscription} from 'aurelia-event-aggregator';\r\nimport { UserService } from \"app/services/user-service\";\r\nimport { SplitViewerResizeService } from \"app/services/split-viewer-resize-service\";\r\nimport { ModalService } from \"app/services/modal-service\";\r\nimport { ProjectDto } from \"app/models/project-dto\";\r\nimport {ProjectTokenService} from \"../../services/project-token-service\";\r\nimport {NavigationInstruction, RouteConfig} from \"aurelia-router\";\r\nimport {verifyAccessOrRedirect} from \"../access-denied-page/access-redirecter\";\r\n\r\nimport * as environment from '../../../../config/environment.json';\r\nimport {Three_Sel} from \"../../components/base-viewer-three-d/Three_Sel\";\r\n\r\n@autoinject\r\nexport class WorkAreaContainer {\r\n\tthreeSel:Three_Sel = new Three_Sel();\r\n\r\n\t/* JG: Does WorkAreaContainer win,\r\n\tbecause it relates to the single .html file in the work-area folder?\r\n\t*/\r\n\tpublic projectId : string = \"I'm the default value\"; // JG: Does anyone (html views?) reference this? Shouldn't appContext.projectId suffice? (Anyway, I see it bind-referenced in work-area-container.html)\r\n\tcurProject:ProjectDto | undefined; // for displaying project name title.\r\n\t\r\n public modelToInit: BimViewerFileFromModelRevision | undefined;\r\n public revisionToInit: BimViewerRevisionFromModelRevision | undefined;\r\n public max2dDockWidth: number = 600;\r\n public middlePanelWidth: number = -1;\r\n\r\n public isSettingsVisible: boolean = false;\r\n \r\n\tprivate isViewerEnabled:boolean = environment.testing || environment.debug;\r\n private isPropertiesVisible: boolean = false;\r\n private isBuildingPartsLoaded: boolean = false;\r\n private isBuildingPartsVisible: boolean = false;\r\n private isViewerLoaded: boolean = false;\r\n private isViewerVisible: boolean = false;\r\n private isColorPickerVisible: boolean = false;\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n\t\tprivate events: EventAggregator, \r\n\t\tpublic apiClient: ApiClient, \r\n\t\tpublic appContext:AppContextService, \r\n\t\tpublic userService: UserService, \r\n\t\tpublic splitViewerResizeService: SplitViewerResizeService, \r\n\t\tpublic modalService: ModalService,\r\n\t\tprivate projectTokenService: ProjectTokenService\r\n\t) {\r\n\t\tconsole.log('WorkAreaContainer ctor');\r\n\t} \r\n\r\n async attached(): Promise {\r\n let self = this;\r\n this.events.subscribe(\"nav-collapsed\", (payload: any) => {\r\n setTimeout(() => { //setTimeout used to ensure resizing has been done before resize-event is fired.\r\n window.dispatchEvent(new Event('resize'));\r\n }, 0);\r\n });\r\n\r\n this.isBuildingPartsLoaded = this.modelToInit == undefined && this.revisionToInit == undefined;\r\n if (this.isBuildingPartsLoaded) {\r\n this.isBuildingPartsVisible = true;\r\n }\r\n this.isViewerLoaded = !this.isBuildingPartsLoaded;\r\n if (this.isViewerLoaded) {\r\n this.isViewerVisible = true;\r\n }\r\n \r\n this.subscriptions = [\r\n\t\t\tthis.events.subscribe('WorkAreaContainer:ViewerSettingsPressed', () => { self.isSettingsVisible = !self.isSettingsVisible}),\r\n this.events.subscribe('WorkAreaContainer:Move2d', (isTooSmall: boolean) => { if (isTooSmall == true) { self.handleDocked2dTooSmall()} else {self.move2dView()}}),\r\n this.events.subscribe('WorkAreaContainer:viewers-ready-to-load', async () => { await self.handleLoadedModels()}),\r\n this.events.subscribe('WorkAreaContainer:Show2dViewer', (shouldShow: boolean) => {self.showOrHide2dViewer(shouldShow)}),\r\n this.events.subscribe('WorkAreaContainer:SetupViewer', () => {\r\n self.splitViewerResizeService.setupViewerSplitter();\r\n self.splitViewerResizeService.setupMainSplitter(self.isBuildingPartsVisible && self.isViewerVisible);\r\n }),\r\n this.events.subscribe('WorkAreaContainer:BPLoaded', () => {self.splitViewerResizeService.setupMainSplitter(self.isBuildingPartsVisible && self.isViewerVisible)}),\r\n this.events.subscribe('object-properties:show', () => {self.isPropertiesVisible = true}),\r\n this.events.subscribe('WorkAreaContainer:SwitchPropertyAndColor', () => {self.switchPropertyAndColor()}),\r\n this.events.subscribe('work-area-container:set-split-view-size', (size: {top: number, bot: number}) => { \r\n this.splitViewerResizeService.setViewerSplitSize(size.top,size.bot) \r\n })\r\n\t\t];\r\n $('.model-revision-container').draggable();\r\n }\r\n\r\n async unbind(): Promise {\r\n this.splitViewerResizeService.isSettingsVisible = false;\r\n this.splitViewerResizeService.destroySplitters();\r\n }\r\n \r\n async detached(): Promise {\r\n this.subscriptions.forEach((subscription: Subscription) => subscription.dispose());\r\n }\r\n\r\n async handleLoadedModels(): Promise {\r\n if(this.modelToInit != undefined) {\r\n if(this.modelToInit.id != undefined && this.modelToInit.is2d != undefined) {\r\n this.modelToInit.id.forEach( (modelId: string) => {\r\n this.events.publish('ModelRevision:LoadModelById', {id: modelId, is2d: this.modelToInit?.is2d});\r\n });\r\n }\r\n }\r\n if(this.revisionToInit != undefined) {\r\n if(this.revisionToInit.revisionId != undefined && this.revisionToInit.is2d != undefined && this.revisionToInit.modelId != undefined) {\r\n this.events.publish('ModelRevision:LoadRevisionById', {revisionId: this.revisionToInit.revisionId, modelId: this.revisionToInit.modelId, is2d: this.revisionToInit.is2d});\r\n }\r\n }\r\n }\r\n \r\n\tasync activate(params: any): Promise {\r\n this.projectId = params.projectId;\r\n if (params.revisionId == undefined && params.modelId != undefined) {\r\n\t\t\tconsole.log('WAC.activate noticed params had modelId, so we set modelToInit');\r\n this.modelToInit = new BimViewerFileFromModelRevision(params.modelId, params.is2d == 'true');\r\n }\r\n\r\n if (params.revisionId != undefined) {\r\n\t\t\tconsole.log('WAC.activate noticed params had revisionId, so we set revisionToInit');\r\n this.revisionToInit = new BimViewerRevisionFromModelRevision(params.revisionId, params.modelId[0], params.is2d == 'true');\r\n }\r\n\r\n if (params.projectId) { \r\n\t\t\tthis.appContext.setProject(params.projectId); // in activate.\r\n\t\t\tawait this.projectTokenService.updatePrjTokenIfNeeded(params.projectId, this.apiClient);\r\n\t\t\tthis.loadProject();\r\n\t\t}\r\n await this.reloadIfNecessary();\r\n\t}\r\n\r\n\tasync canActivate(params: any, routeConfig: RouteConfig, navigationInstruction: NavigationInstruction) {\r\n\t\treturn await verifyAccessOrRedirect(params, this.projectTokenService, this.apiClient);\r\n\t}\r\n\r\n\tloadProject() { this.curProject = this.appContext.getSelectedProject(); }\r\n\r\n\t// JG: what is the relation between 'reloadIfNecessary' and 'hide2dView'?? It doesn't read as immediately obvious?\r\n async reloadIfNecessary(): Promise { this.splitViewerResizeService.hide2dView(); }\r\n\r\n async showOrHide2dViewer(shouldShow2dViewer: boolean): Promise { // reacts to event\r\n if (shouldShow2dViewer) {\r\n this.splitViewerResizeService.show2dViewOnModelLoaded();\r\n } else {\r\n this.splitViewerResizeService.hide2dViewOnModelUnLoaded();\r\n }\r\n }\r\n\r\n async buildingPartsClicked(): Promise {\r\n if (!this.isBuildingPartsLoaded) {\r\n this.isBuildingPartsLoaded = true\r\n }\r\n this.isBuildingPartsVisible = !this.isBuildingPartsVisible;\r\n if (!this.isBuildingPartsVisible) {\r\n this.isViewerLoaded = true;\r\n this.isViewerVisible = true;\r\n }\r\n\r\n await this.handleBPandViewerVisible();\r\n\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event('resize')); //It is needed to set a timeout for the bimviewer to register the resize\r\n }, 0); \r\n }\r\n \r\n async displayViewer(): Promise {\r\n if (!this.isViewerLoaded) {\r\n this.isViewerLoaded = true;\r\n }\r\n this.isViewerVisible = !this.isViewerVisible;\r\n if (!this.isViewerVisible) {\r\n this.isBuildingPartsLoaded = true;\r\n this.isBuildingPartsVisible = true;\r\n }\r\n \r\n setTimeout(() => {\r\n\t\t\tthis.handleBPandViewerVisible();\r\n window.dispatchEvent(new Event('resize')); //It is needed to set a timeout for the bimviewer to register the resize\r\n }, 0); \r\n }\r\n\r\n async handleBPandViewerVisible(): Promise {\r\n if (this.isBuildingPartsVisible && this.isViewerVisible) {\r\n await this.splitViewerResizeService.showMainSplitter();\r\n } else {\r\n await this.splitViewerResizeService.hideMainSplitter();\r\n }\r\n this.handleBPAndViewerPanels();\r\n }\r\n\r\n handleBPAndViewerPanels(): void {\r\n let panelLeft: HTMLElement | null = document.getElementById('panel-left');\r\n let panelMiddle: HTMLElement | null = document.getElementById('panel-middle');\r\n if (panelLeft && panelMiddle) {\r\n if (this.isBuildingPartsVisible && !this.isViewerVisible) {\r\n panelLeft.style.width = \"100%\";\r\n if (document.getElementById('model-revision-container')?.style.visibility == \"visible\") {\r\n this.events.publish(\"ModelRevision:CloseModelRevision\")\r\n }\r\n } else if (!this.isBuildingPartsVisible && this.isViewerVisible) {\r\n panelMiddle.style.width = \"100%\";\r\n } else {\r\n panelLeft.style.width = \"50%\";\r\n panelMiddle.style.width = \"50%\";\r\n }\r\n }\r\n }\r\n\r\n displayColorPicker(): void {\r\n this.isColorPickerVisible = !this.isColorPickerVisible;\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event('resize')); //It is needed to set a timeout for the bimviewer to register the resize\r\n this.events.publish('object-properties:setIsSwitchAvailable', this.isPropertiesVisible && this.isColorPickerVisible);\r\n }, 0); \r\n }\r\n\r\n propertyClicked(): void {\r\n this.isPropertiesVisible = !this.isPropertiesVisible;\r\n setTimeout(() => {\r\n window.dispatchEvent(new Event('resize')); //It is needed to set a timeout for the bimviewer to register the resize\r\n this.events.publish('object-properties:setIsSwitchAvailable', this.isPropertiesVisible && this.isColorPickerVisible);\r\n }, 0);\r\n }\r\n\r\n move2dView(): void {\r\n let viewer: HTMLElement | null = document.getElementById('viewer2d');\r\n let smalldiv: HTMLElement | null = document.getElementById('small-2d-view');\r\n let bigDiv: HTMLElement | null = document.getElementById('bim-viewer-2d-holder');\r\n if (smalldiv && viewer && bigDiv) {\r\n if(!smalldiv?.contains(viewer)) {\r\n smalldiv.style.visibility = \"visible\";\r\n smalldiv.appendChild(viewer);\r\n this.splitViewerResizeService.hide2dView();\r\n } else {\r\n this.handleDockToBigDiv(bigDiv,viewer,smalldiv);\r\n }\r\n }\r\n window.dispatchEvent(new Event('resize'));\r\n }\r\n\r\n handleDocked2dTooSmall(): void {\r\n let viewer: HTMLElement | null = document.getElementById('viewer2d');\r\n let smalldiv: HTMLElement | null = document.getElementById('small-2d-view');\r\n let bigDiv: HTMLElement | null = document.getElementById('bim-viewer-2d-holder');\r\n if (this.isViewerVisible) {\r\n if (smalldiv) {\r\n if(smalldiv.contains(viewer) && bigDiv && viewer) {\r\n this.handleDockToBigDiv(bigDiv,viewer,smalldiv);\r\n window.dispatchEvent(new Event('resize'));\r\n }\r\n }\r\n }\r\n }\r\n \r\n handleDockToSmallDiv(viewer: HTMLElement, smalldiv: HTMLElement): void {\r\n smalldiv.style.visibility = \"visible\";\r\n smalldiv.appendChild(viewer);\r\n this.splitViewerResizeService.hide2dView();\r\n }\r\n \r\n handleDockToBigDiv(bigDiv: HTMLElement, viewer: HTMLElement, smalldiv: HTMLElement): void {\r\n bigDiv.appendChild(viewer);\r\n smalldiv.style.visibility = \"hidden\";\r\n this.splitViewerResizeService.show2dView();\r\n }\r\n\r\n switchPropertyAndColor(): void {\r\n let panel: HTMLElement | null = document.getElementById('panel-right');\r\n if (panel) {\r\n if (panel.classList.contains('wrap')) {\r\n panel.classList.remove('wrap');\r\n } else {\r\n panel.classList.add('wrap');\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","exports","WorkAreaContainer","constructor","events","apiClient","appContext","userService","splitViewerResizeService","modalService","projectTokenService","threeSel","projectId","max2dDockWidth","middlePanelWidth","isSettingsVisible","isViewerEnabled","isPropertiesVisible","isBuildingPartsLoaded","isBuildingPartsVisible","isViewerLoaded","isViewerVisible","isColorPickerVisible","subscriptions","console","log","attached","self","this","subscribe","payload","setTimeout","window","dispatchEvent","Event","undefined","modelToInit","revisionToInit","isTooSmall","handleDocked2dTooSmall","move2dView","async","handleLoadedModels","shouldShow","showOrHide2dViewer","setupViewerSplitter","setupMainSplitter","switchPropertyAndColor","size","setViewerSplitSize","top","bot","draggable","unbind","destroySplitters","detached","forEach","subscription","dispose","is2d","modelId","publish","revisionId","activate","params","setProject","updatePrjTokenIfNeeded","loadProject","reloadIfNecessary","canActivate","routeConfig","navigationInstruction","curProject","getSelectedProject","hide2dView","shouldShow2dViewer","show2dViewOnModelLoaded","hide2dViewOnModelUnLoaded","buildingPartsClicked","handleBPandViewerVisible","displayViewer","showMainSplitter","hideMainSplitter","handleBPAndViewerPanels","panelLeft","document","getElementById","panelMiddle","style","width","visibility","displayColorPicker","propertyClicked","viewer","smalldiv","bigDiv","contains","handleDockToBigDiv","appendChild","handleDockToSmallDiv","show2dView","panel","classList","remove","add","autoinject","EventAggregator"],"sourceRoot":""}