kitchen-simulator 5.0.0-test.4 → 5.0.0-test.6
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.
- package/package.json +23 -41
- package/es/@history.js +0 -3
- package/es/@history.js.map +0 -1
- package/es/AppContext.js +0 -4
- package/es/AppContext.js.map +0 -1
- package/es/KitchenConfigurator.js +0 -1345
- package/es/KitchenConfigurator.js.map +0 -1
- package/es/KitchenConfiguratorApp.js +0 -532
- package/es/KitchenConfiguratorApp.js.map +0 -1
- package/es/actions/area-actions.js +0 -15
- package/es/actions/area-actions.js.map +0 -1
- package/es/actions/export.js +0 -26
- package/es/actions/export.js.map +0 -1
- package/es/actions/groups-actions.js +0 -90
- package/es/actions/groups-actions.js.map +0 -1
- package/es/actions/holes-actions.js +0 -120
- package/es/actions/holes-actions.js.map +0 -1
- package/es/actions/items-actions.js +0 -314
- package/es/actions/items-actions.js.map +0 -1
- package/es/actions/lines-actions.js +0 -83
- package/es/actions/lines-actions.js.map +0 -1
- package/es/actions/project-actions.js +0 -282
- package/es/actions/project-actions.js.map +0 -1
- package/es/actions/scene-actions.js +0 -34
- package/es/actions/scene-actions.js.map +0 -1
- package/es/actions/user-actions.js +0 -59
- package/es/actions/user-actions.js.map +0 -1
- package/es/actions/vertices-actions.js +0 -28
- package/es/actions/vertices-actions.js.map +0 -1
- package/es/actions/viewer2d-actions.js +0 -59
- package/es/actions/viewer2d-actions.js.map +0 -1
- package/es/actions/viewer3d-actions.js +0 -24
- package/es/actions/viewer3d-actions.js.map +0 -1
- package/es/catalog/areas/area/planner-element.js +0 -41
- package/es/catalog/areas/area/planner-element.js.map +0 -1
- package/es/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
- package/es/catalog/areas/area/textures/grass.jpg +0 -0
- package/es/catalog/areas/area/textures/parquet.jpg +0 -0
- package/es/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
- package/es/catalog/areas/area/textures/tile1.jpg +0 -0
- package/es/catalog/back.png +0 -0
- package/es/catalog/catalog.js +0 -278
- package/es/catalog/catalog.js.map +0 -1
- package/es/catalog/doors.png +0 -0
- package/es/catalog/doorways.png +0 -0
- package/es/catalog/envMap/nx.hdr +0 -0
- package/es/catalog/envMap/ny.hdr +0 -0
- package/es/catalog/envMap/nz.hdr +0 -0
- package/es/catalog/envMap/px.hdr +0 -0
- package/es/catalog/envMap/py.hdr +0 -0
- package/es/catalog/envMap/pz.hdr +0 -0
- package/es/catalog/factories/area-factory-3d.js +0 -183
- package/es/catalog/factories/area-factory-3d.js.map +0 -1
- package/es/catalog/factories/area-factory.js +0 -82
- package/es/catalog/factories/area-factory.js.map +0 -1
- package/es/catalog/factories/export.js +0 -8
- package/es/catalog/factories/export.js.map +0 -1
- package/es/catalog/factories/wall-factory-3d.js +0 -203
- package/es/catalog/factories/wall-factory-3d.js.map +0 -1
- package/es/catalog/factories/wall-factory.js +0 -269
- package/es/catalog/factories/wall-factory.js.map +0 -1
- package/es/catalog/holes/door-closet/planner-element.js +0 -223
- package/es/catalog/holes/door-closet/planner-element.js.map +0 -1
- package/es/catalog/holes/door-double/door_double.png +0 -0
- package/es/catalog/holes/door-double/planner-element.js +0 -316
- package/es/catalog/holes/door-double/planner-element.js.map +0 -1
- package/es/catalog/holes/door-exterior/planner-element.js +0 -216
- package/es/catalog/holes/door-exterior/planner-element.js.map +0 -1
- package/es/catalog/holes/door-interior/planner-element.js +0 -228
- package/es/catalog/holes/door-interior/planner-element.js.map +0 -1
- package/es/catalog/holes/door-panic/panicDoor.png +0 -0
- package/es/catalog/holes/door-panic/planner-element.js +0 -504
- package/es/catalog/holes/door-panic/planner-element.js.map +0 -1
- package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
- package/es/catalog/holes/door-panic-double/planner-element.js +0 -464
- package/es/catalog/holes/door-panic-double/planner-element.js.map +0 -1
- package/es/catalog/holes/door-sliding/planner-element.js +0 -226
- package/es/catalog/holes/door-sliding/planner-element.js.map +0 -1
- package/es/catalog/holes/doorway-framed/planner-element.js +0 -146
- package/es/catalog/holes/doorway-framed/planner-element.js.map +0 -1
- package/es/catalog/holes/doorway-frameless/planner-element.js +0 -105
- package/es/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
- package/es/catalog/holes/gate/gate.jpg +0 -0
- package/es/catalog/holes/window-clear/planner-element.js +0 -167
- package/es/catalog/holes/window-clear/planner-element.js.map +0 -1
- package/es/catalog/holes/window-clear/texture.png +0 -0
- package/es/catalog/holes/window-cross/planner-element.js +0 -166
- package/es/catalog/holes/window-cross/planner-element.js.map +0 -1
- package/es/catalog/holes/window-cross/texture.png +0 -0
- package/es/catalog/holes/window-double-hung/planner-element.js +0 -304
- package/es/catalog/holes/window-double-hung/planner-element.js.map +0 -1
- package/es/catalog/holes/window-double-hung/texture.png +0 -0
- package/es/catalog/holes/window-vertical/planner-element.js +0 -277
- package/es/catalog/holes/window-vertical/planner-element.js.map +0 -1
- package/es/catalog/holes/window-vertical/texture.png +0 -0
- package/es/catalog/lines/wall/planner-element.js +0 -71
- package/es/catalog/lines/wall/planner-element.js.map +0 -1
- package/es/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks2.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks3.jpg +0 -0
- package/es/catalog/lines/wall/textures/morden-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/morden.jpg +0 -0
- package/es/catalog/lines/wall/textures/painted-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/painted.jpg +0 -0
- package/es/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/plaster.jpg +0 -0
- package/es/catalog/lines/wall/wall.png +0 -0
- package/es/catalog/molding/molding-dcm/planner-element.js +0 -30
- package/es/catalog/molding/molding-dcm/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-dcm/texture.png +0 -0
- package/es/catalog/molding/molding-fbm/planner-element.js +0 -30
- package/es/catalog/molding/molding-fbm/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-fbm/texture.png +0 -0
- package/es/catalog/molding/molding-lrm/planner-element.js +0 -30
- package/es/catalog/molding/molding-lrm/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-lrm/texture.png +0 -0
- package/es/catalog/properties/export.js +0 -22
- package/es/catalog/properties/export.js.map +0 -1
- package/es/catalog/properties/property-checkbox.js +0 -72
- package/es/catalog/properties/property-checkbox.js.map +0 -1
- package/es/catalog/properties/property-color.js +0 -40
- package/es/catalog/properties/property-color.js.map +0 -1
- package/es/catalog/properties/property-enum.js +0 -56
- package/es/catalog/properties/property-enum.js.map +0 -1
- package/es/catalog/properties/property-hidden.js +0 -20
- package/es/catalog/properties/property-hidden.js.map +0 -1
- package/es/catalog/properties/property-lenght-measure.js +0 -102
- package/es/catalog/properties/property-lenght-measure.js.map +0 -1
- package/es/catalog/properties/property-length-measure.js +0 -86
- package/es/catalog/properties/property-length-measure.js.map +0 -1
- package/es/catalog/properties/property-length-measure_hole.js +0 -102
- package/es/catalog/properties/property-length-measure_hole.js.map +0 -1
- package/es/catalog/properties/property-number.js +0 -49
- package/es/catalog/properties/property-number.js.map +0 -1
- package/es/catalog/properties/property-read-only.js +0 -27
- package/es/catalog/properties/property-read-only.js.map +0 -1
- package/es/catalog/properties/property-string.js +0 -49
- package/es/catalog/properties/property-string.js.map +0 -1
- package/es/catalog/properties/property-toggle.js +0 -40
- package/es/catalog/properties/property-toggle.js.map +0 -1
- package/es/catalog/properties/shared-property-style.js +0 -15
- package/es/catalog/properties/shared-property-style.js.map +0 -1
- package/es/catalog/utils/FuseUtils.js +0 -83
- package/es/catalog/utils/FuseUtils.js.map +0 -1
- package/es/catalog/utils/exporter.js +0 -149
- package/es/catalog/utils/exporter.js.map +0 -1
- package/es/catalog/utils/geom-utils.js +0 -190
- package/es/catalog/utils/geom-utils.js.map +0 -1
- package/es/catalog/utils/item-loader.js +0 -1522
- package/es/catalog/utils/item-loader.js.map +0 -1
- package/es/catalog/utils/load-obj.js +0 -92
- package/es/catalog/utils/load-obj.js.map +0 -1
- package/es/catalog/utils/mtl-loader.js +0 -358
- package/es/catalog/utils/mtl-loader.js.map +0 -1
- package/es/catalog/utils/obj-loader.js +0 -477
- package/es/catalog/utils/obj-loader.js.map +0 -1
- package/es/catalog/windows.png +0 -0
- package/es/class/FuseUtils.js +0 -83
- package/es/class/FuseUtils.js.map +0 -1
- package/es/class/area.js +0 -146
- package/es/class/area.js.map +0 -1
- package/es/class/export.js +0 -25
- package/es/class/export.js.map +0 -1
- package/es/class/group.js +0 -441
- package/es/class/group.js.map +0 -1
- package/es/class/guide.js +0 -63
- package/es/class/guide.js.map +0 -1
- package/es/class/hole.js +0 -931
- package/es/class/hole.js.map +0 -1
- package/es/class/item.js +0 -1888
- package/es/class/item.js.map +0 -1
- package/es/class/layer.js +0 -668
- package/es/class/layer.js.map +0 -1
- package/es/class/line.js +0 -1290
- package/es/class/line.js.map +0 -1
- package/es/class/project.js +0 -823
- package/es/class/project.js.map +0 -1
- package/es/class/vertex.js +0 -267
- package/es/class/vertex.js.map +0 -1
- package/es/components/atoms/Snackbar/index.js +0 -50
- package/es/components/atoms/Snackbar/index.js.map +0 -1
- package/es/components/atoms/radio-button/index.js +0 -26
- package/es/components/atoms/radio-button/index.js.map +0 -1
- package/es/components/atoms/radio-button/styles.js +0 -5
- package/es/components/atoms/radio-button/styles.js.map +0 -1
- package/es/components/button/MainButton.js +0 -92
- package/es/components/button/MainButton.js.map +0 -1
- package/es/components/button/ToggleMeasureButton.js +0 -56
- package/es/components/button/ToggleMeasureButton.js.map +0 -1
- package/es/components/catalog-view/catalog-breadcrumb.js +0 -53
- package/es/components/catalog-view/catalog-breadcrumb.js.map +0 -1
- package/es/components/catalog-view/catalog-item.js +0 -226
- package/es/components/catalog-view/catalog-item.js.map +0 -1
- package/es/components/catalog-view/catalog-list.js +0 -182
- package/es/components/catalog-view/catalog-list.js.map +0 -1
- package/es/components/catalog-view/catalog-page-item.js +0 -130
- package/es/components/catalog-view/catalog-page-item.js.map +0 -1
- package/es/components/catalog-view/catalog-turn-back-page-item.js +0 -106
- package/es/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
- package/es/components/configurator/custom-configurator.js +0 -94
- package/es/components/configurator/custom-configurator.js.map +0 -1
- package/es/components/configurator/project-configurator.js +0 -131
- package/es/components/configurator/project-configurator.js.map +0 -1
- package/es/components/content.js +0 -123
- package/es/components/content.js.map +0 -1
- package/es/components/export.js +0 -24
- package/es/components/export.js.map +0 -1
- package/es/components/firstsetting/button/styles.js +0 -27
- package/es/components/firstsetting/button/styles.js.map +0 -1
- package/es/components/firstsetting/export.js +0 -9
- package/es/components/firstsetting/export.js.map +0 -1
- package/es/components/firstsetting/firstsetting-content-button.js +0 -217
- package/es/components/firstsetting/firstsetting-content-button.js.map +0 -1
- package/es/components/firstsetting/firstsetting-toggle-button.js +0 -126
- package/es/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
- package/es/components/firstsetting/firstsetting.js +0 -626
- package/es/components/firstsetting/firstsetting.js.map +0 -1
- package/es/components/footerbar/button/ControlButton.js +0 -72
- package/es/components/footerbar/button/ControlButton.js.map +0 -1
- package/es/components/footerbar/button/DirectionButton.js +0 -69
- package/es/components/footerbar/button/DirectionButton.js.map +0 -1
- package/es/components/footerbar/button/DirectionPanSpinButton.js +0 -50
- package/es/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleButton.js +0 -76
- package/es/components/footerbar/button/ToggleButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleConvertButton.js +0 -73
- package/es/components/footerbar/button/ToggleConvertButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleMeasureButton.js +0 -52
- package/es/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
- package/es/components/footerbar/button/styles.js +0 -22
- package/es/components/footerbar/button/styles.js.map +0 -1
- package/es/components/footerbar/export.js +0 -9
- package/es/components/footerbar/export.js.map +0 -1
- package/es/components/footerbar/footer-content-button.js +0 -217
- package/es/components/footerbar/footer-content-button.js.map +0 -1
- package/es/components/footerbar/footer-toggle-button.js +0 -126
- package/es/components/footerbar/footer-toggle-button.js.map +0 -1
- package/es/components/footerbar/footerbar.js +0 -801
- package/es/components/footerbar/footerbar.js.map +0 -1
- package/es/components/footerbar/styles.js +0 -34
- package/es/components/footerbar/styles.js.map +0 -1
- package/es/components/header/button/MenuButton.js +0 -70
- package/es/components/header/button/MenuButton.js.map +0 -1
- package/es/components/header/button/SaveButton.js +0 -48
- package/es/components/header/button/SaveButton.js.map +0 -1
- package/es/components/header/button/styles.js +0 -59
- package/es/components/header/button/styles.js.map +0 -1
- package/es/components/header/export.js +0 -5
- package/es/components/header/export.js.map +0 -1
- package/es/components/header/header.js +0 -550
- package/es/components/header/header.js.map +0 -1
- package/es/components/header/header.style.css +0 -47
- package/es/components/header/styles.js +0 -41
- package/es/components/header/styles.js.map +0 -1
- package/es/components/login/Login.js +0 -86
- package/es/components/login/Login.js.map +0 -1
- package/es/components/login/LoginForm/index.js +0 -132
- package/es/components/login/LoginForm/index.js.map +0 -1
- package/es/components/login/Register.js +0 -96
- package/es/components/login/Register.js.map +0 -1
- package/es/components/login/RegisterForm/index.js +0 -230
- package/es/components/login/RegisterForm/index.js.map +0 -1
- package/es/components/login/jwtService.js +0 -232
- package/es/components/login/jwtService.js.map +0 -1
- package/es/components/login/style.css +0 -158
- package/es/components/login/style.scss +0 -260
- package/es/components/molecules/slider/index.js +0 -13
- package/es/components/molecules/slider/index.js.map +0 -1
- package/es/components/molecules/slider/styles.js +0 -2
- package/es/components/molecules/slider/styles.js.map +0 -1
- package/es/components/molecules/slider/styles.scss +0 -3
- package/es/components/myprojects/export.js +0 -5
- package/es/components/myprojects/export.js.map +0 -1
- package/es/components/myprojects/index.js +0 -446
- package/es/components/myprojects/index.js.map +0 -1
- package/es/components/myprojects/styles.js +0 -24
- package/es/components/myprojects/styles.js.map +0 -1
- package/es/components/sidebar/custom-accordion.js +0 -38
- package/es/components/sidebar/custom-accordion.js.map +0 -1
- package/es/components/sidebar/export.js +0 -14
- package/es/components/sidebar/export.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -65
- package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -116
- package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -126
- package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -251
- package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -75
- package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/element-editor.js +0 -878
- package/es/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
- package/es/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/panel-element-editor.js +0 -49
- package/es/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -118
- package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
- package/es/components/sidebar/panel-group-editor.js +0 -211
- package/es/components/sidebar/panel-group-editor.js.map +0 -1
- package/es/components/sidebar/panel-groups.js +0 -267
- package/es/components/sidebar/panel-groups.js.map +0 -1
- package/es/components/sidebar/panel-guides.js +0 -185
- package/es/components/sidebar/panel-guides.js.map +0 -1
- package/es/components/sidebar/panel-layer-elements.js +0 -251
- package/es/components/sidebar/panel-layer-elements.js.map +0 -1
- package/es/components/sidebar/panel-layers.js +0 -340
- package/es/components/sidebar/panel-layers.js.map +0 -1
- package/es/components/sidebar/panel.js +0 -103
- package/es/components/sidebar/panel.js.map +0 -1
- package/es/components/sidebar/sidebar.js +0 -109
- package/es/components/sidebar/sidebar.js.map +0 -1
- package/es/components/sidebar/toolbar-panel.js +0 -164
- package/es/components/sidebar/toolbar-panel.js.map +0 -1
- package/es/components/sign/export.js +0 -6
- package/es/components/sign/export.js.map +0 -1
- package/es/components/sign/main/index.js +0 -560
- package/es/components/sign/main/index.js.map +0 -1
- package/es/components/sign/main/styles.js +0 -20
- package/es/components/sign/main/styles.js.map +0 -1
- package/es/components/style/button.js +0 -114
- package/es/components/style/button.js.map +0 -1
- package/es/components/style/cancel-button.js +0 -23
- package/es/components/style/cancel-button.js.map +0 -1
- package/es/components/style/content-container.js +0 -34
- package/es/components/style/content-container.js.map +0 -1
- package/es/components/style/content-title.js +0 -30
- package/es/components/style/content-title.js.map +0 -1
- package/es/components/style/delete-button.js +0 -26
- package/es/components/style/delete-button.js.map +0 -1
- package/es/components/style/export.js +0 -32
- package/es/components/style/export.js.map +0 -1
- package/es/components/style/form-block.js +0 -25
- package/es/components/style/form-block.js.map +0 -1
- package/es/components/style/form-color-input.js +0 -28
- package/es/components/style/form-color-input.js.map +0 -1
- package/es/components/style/form-label.js +0 -27
- package/es/components/style/form-label.js.map +0 -1
- package/es/components/style/form-number-input.js +0 -190
- package/es/components/style/form-number-input.js.map +0 -1
- package/es/components/style/form-number-input_2.js +0 -207
- package/es/components/style/form-number-input_2.js.map +0 -1
- package/es/components/style/form-select.js +0 -21
- package/es/components/style/form-select.js.map +0 -1
- package/es/components/style/form-slider.js +0 -46
- package/es/components/style/form-slider.js.map +0 -1
- package/es/components/style/form-submit-button.js +0 -27
- package/es/components/style/form-submit-button.js.map +0 -1
- package/es/components/style/form-text-input.js +0 -77
- package/es/components/style/form-text-input.js.map +0 -1
- package/es/components/toolbar/button/ControlButton.js +0 -69
- package/es/components/toolbar/button/ControlButton.js.map +0 -1
- package/es/components/toolbar/button/DirectionButton.js +0 -50
- package/es/components/toolbar/button/DirectionButton.js.map +0 -1
- package/es/components/toolbar/button/RightButton.js +0 -133
- package/es/components/toolbar/button/RightButton.js.map +0 -1
- package/es/components/toolbar/button/ToggleButton.js +0 -59
- package/es/components/toolbar/button/ToggleButton.js.map +0 -1
- package/es/components/toolbar/button/index.js +0 -88
- package/es/components/toolbar/button/index.js.map +0 -1
- package/es/components/toolbar/button/styles.js +0 -14
- package/es/components/toolbar/button/styles.js.map +0 -1
- package/es/components/toolbar/components/DoorStyleMenu.js +0 -105
- package/es/components/toolbar/components/DoorStyleMenu.js.map +0 -1
- package/es/components/toolbar/components/Pricing.js +0 -101
- package/es/components/toolbar/components/Pricing.js.map +0 -1
- package/es/components/toolbar/components/ReviewForQuote.js +0 -476
- package/es/components/toolbar/components/ReviewForQuote.js.map +0 -1
- package/es/components/toolbar/export.js +0 -14
- package/es/components/toolbar/export.js.map +0 -1
- package/es/components/toolbar/main/Alert.js +0 -125
- package/es/components/toolbar/main/Alert.js.map +0 -1
- package/es/components/toolbar/main/TakePictureModal.js +0 -100
- package/es/components/toolbar/main/TakePictureModal.js.map +0 -1
- package/es/components/toolbar/main/confirm-popup.js +0 -88
- package/es/components/toolbar/main/confirm-popup.js.map +0 -1
- package/es/components/toolbar/main/index.js +0 -4612
- package/es/components/toolbar/main/index.js.map +0 -1
- package/es/components/toolbar/main/lShaped.json +0 -311
- package/es/components/toolbar/main/longNarrow.json +0 -238
- package/es/components/toolbar/main/myComponents.js +0 -118
- package/es/components/toolbar/main/myComponents.js.map +0 -1
- package/es/components/toolbar/main/oRectangle.json +0 -220
- package/es/components/toolbar/main/rectangle.json +0 -238
- package/es/components/toolbar/main/style.css +0 -107
- package/es/components/toolbar/main/styles.js +0 -64
- package/es/components/toolbar/main/styles.js.map +0 -1
- package/es/components/toolbar/plugin-item.js +0 -150
- package/es/components/toolbar/plugin-item.js.map +0 -1
- package/es/components/toolbar/popup/appliance/appliance-category/index.js +0 -77
- package/es/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
- package/es/components/toolbar/popup/appliance/choose-appliance/index.js +0 -76
- package/es/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
- package/es/components/toolbar/popup/appliance/index.js +0 -81
- package/es/components/toolbar/popup/appliance/index.js.map +0 -1
- package/es/components/toolbar/popup/autosaveprompt/index.js +0 -91
- package/es/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
- package/es/components/toolbar/popup/autosaveprompt/styles.css +0 -64
- package/es/components/toolbar/popup/autosaveprompt/styles.js +0 -9
- package/es/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -77
- package/es/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/choose-product/index.js +0 -98
- package/es/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/index.js +0 -83
- package/es/components/toolbar/popup/cabinet/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/choose-style/index.js +0 -50
- package/es/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/index.js +0 -61
- package/es/components/toolbar/popup/doorStyle/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/style-category/index.js +0 -143
- package/es/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -3
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -119
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/index.js +0 -564
- package/es/components/toolbar/popup/downloadsummary/index.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -51
- package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -191
- package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -245
- package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1758
- package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -87
- package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -116
- package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1710
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -175
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showWarranty.js +0 -106
- package/es/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/styles.css +0 -177
- package/es/components/toolbar/popup/downloadsummary/styles.js +0 -40
- package/es/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/category/index.js +0 -35
- package/es/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/index.js +0 -47
- package/es/components/toolbar/popup/finishingtouch/index.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/material-edit.js +0 -156
- package/es/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/product/index.js +0 -56
- package/es/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -116
- package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/index.js +0 -246
- package/es/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -311
- package/es/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -238
- package/es/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -220
- package/es/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -238
- package/es/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -11
- package/es/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/floor-category/index.js +0 -90
- package/es/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/index.js +0 -49
- package/es/components/toolbar/popup/floorplan/index.js.map +0 -1
- package/es/components/toolbar/popup/index.js +0 -188
- package/es/components/toolbar/popup/index.js.map +0 -1
- package/es/components/toolbar/popup/newproject/index.js +0 -67
- package/es/components/toolbar/popup/newproject/index.js.map +0 -1
- package/es/components/toolbar/popup/newproject/styles.css +0 -64
- package/es/components/toolbar/popup/newproject/styles.js +0 -9
- package/es/components/toolbar/popup/newproject/styles.js.map +0 -1
- package/es/components/toolbar/popup/product/appliance.js +0 -65
- package/es/components/toolbar/popup/product/appliance.js.map +0 -1
- package/es/components/toolbar/popup/product/cabinetproduct.js +0 -25
- package/es/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/doorstyle.js +0 -50
- package/es/components/toolbar/popup/product/doorstyle.js.map +0 -1
- package/es/components/toolbar/popup/product/doorstyleproduct.js +0 -51
- package/es/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/floor.js +0 -52
- package/es/components/toolbar/popup/product/floor.js.map +0 -1
- package/es/components/toolbar/popup/product/floorproduct.js +0 -61
- package/es/components/toolbar/popup/product/floorproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/index.js +0 -52
- package/es/components/toolbar/popup/product/index.js.map +0 -1
- package/es/components/toolbar/popup/product/primary.js +0 -63
- package/es/components/toolbar/popup/product/primary.js.map +0 -1
- package/es/components/toolbar/popup/product/productline.js +0 -120
- package/es/components/toolbar/popup/product/productline.js.map +0 -1
- package/es/components/toolbar/popup/product/reviewItem.js +0 -338
- package/es/components/toolbar/popup/product/reviewItem.js.map +0 -1
- package/es/components/toolbar/popup/product/reviewMolding.js +0 -282
- package/es/components/toolbar/popup/product/reviewMolding.js.map +0 -1
- package/es/components/toolbar/popup/product/style.css +0 -54
- package/es/components/toolbar/popup/product/styles.js +0 -71
- package/es/components/toolbar/popup/product/styles.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/FullPictureForm.js +0 -161
- package/es/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/index.js +0 -508
- package/es/components/toolbar/popup/savedesign/index.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/savedesign.style.css +0 -16
- package/es/components/toolbar/popup/savedesign/styles.js +0 -19
- package/es/components/toolbar/popup/savedesign/styles.js.map +0 -1
- package/es/components/toolbar/popup/setDoorStyleOption/index.js +0 -57
- package/es/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
- package/es/components/toolbar/popup/styles.js +0 -98
- package/es/components/toolbar/popup/styles.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -157
- package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -85
- package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -36
- package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/StepDots.js +0 -33
- package/es/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/cart-choice.js +0 -132
- package/es/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -43
- package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/index.js +0 -690
- package/es/components/toolbar/popup/submitforquote/index.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/styles.css +0 -105
- package/es/components/toolbar/popup/submitforquote/styles.js +0 -31
- package/es/components/toolbar/popup/submitforquote/styles.js.map +0 -1
- package/es/components/toolbar/popup/submitprompt/index.js +0 -71
- package/es/components/toolbar/popup/submitprompt/index.js.map +0 -1
- package/es/components/toolbar/popup/submitprompt/styles.css +0 -64
- package/es/components/toolbar/popup/submitprompt/styles.js +0 -9
- package/es/components/toolbar/popup/submitprompt/styles.js.map +0 -1
- package/es/components/toolbar/toolbar-button.js +0 -105
- package/es/components/toolbar/toolbar-button.js.map +0 -1
- package/es/components/toolbar/toolbar-load-button.js +0 -29
- package/es/components/toolbar/toolbar-load-button.js.map +0 -1
- package/es/components/toolbar/toolbar-save-button.js +0 -27
- package/es/components/toolbar/toolbar-save-button.js.map +0 -1
- package/es/components/tutorial-view/Modal.js +0 -498
- package/es/components/tutorial-view/Modal.js.map +0 -1
- package/es/components/tutorial-view/style.css +0 -111
- package/es/components/tutorial-view/styles.js +0 -6
- package/es/components/tutorial-view/styles.js.map +0 -1
- package/es/components/viewer2d/area.js +0 -83
- package/es/components/viewer2d/area.js.map +0 -1
- package/es/components/viewer2d/export.js +0 -32
- package/es/components/viewer2d/export.js.map +0 -1
- package/es/components/viewer2d/grids/grid-horizontal-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grid-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grid-vertical-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grids.js +0 -36
- package/es/components/viewer2d/grids/grids.js.map +0 -1
- package/es/components/viewer2d/group.js +0 -54
- package/es/components/viewer2d/group.js.map +0 -1
- package/es/components/viewer2d/item.js +0 -514
- package/es/components/viewer2d/item.js.map +0 -1
- package/es/components/viewer2d/layer.js +0 -165
- package/es/components/viewer2d/layer.js.map +0 -1
- package/es/components/viewer2d/line.js +0 -889
- package/es/components/viewer2d/line.js.map +0 -1
- package/es/components/viewer2d/ruler.js +0 -101
- package/es/components/viewer2d/ruler.js.map +0 -1
- package/es/components/viewer2d/rulerDist.js +0 -147
- package/es/components/viewer2d/rulerDist.js.map +0 -1
- package/es/components/viewer2d/rulerX.js +0 -152
- package/es/components/viewer2d/rulerX.js.map +0 -1
- package/es/components/viewer2d/rulerY.js +0 -154
- package/es/components/viewer2d/rulerY.js.map +0 -1
- package/es/components/viewer2d/scene.js +0 -141
- package/es/components/viewer2d/scene.js.map +0 -1
- package/es/components/viewer2d/snap.js +0 -75
- package/es/components/viewer2d/snap.js.map +0 -1
- package/es/components/viewer2d/state.js +0 -79
- package/es/components/viewer2d/state.js.map +0 -1
- package/es/components/viewer2d/utils.js +0 -163
- package/es/components/viewer2d/utils.js.map +0 -1
- package/es/components/viewer2d/vertex.js +0 -67
- package/es/components/viewer2d/vertex.js.map +0 -1
- package/es/components/viewer2d/viewer2d.js +0 -1402
- package/es/components/viewer2d/viewer2d.js.map +0 -1
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2593
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
- package/es/components/viewer3d/dcm.js +0 -402
- package/es/components/viewer3d/dcm.js.map +0 -1
- package/es/components/viewer3d/fbm.js +0 -415
- package/es/components/viewer3d/fbm.js.map +0 -1
- package/es/components/viewer3d/front3D.js +0 -67
- package/es/components/viewer3d/front3D.js.map +0 -1
- package/es/components/viewer3d/grid-creator.js +0 -26
- package/es/components/viewer3d/grid-creator.js.map +0 -1
- package/es/components/viewer3d/grids/grid-horizontal-streak.js +0 -37
- package/es/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
- package/es/components/viewer3d/grids/grid-streak.js +0 -28
- package/es/components/viewer3d/grids/grid-streak.js.map +0 -1
- package/es/components/viewer3d/grids/grid-vertical-streak.js +0 -37
- package/es/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
- package/es/components/viewer3d/libs/first-person-controls.js +0 -68
- package/es/components/viewer3d/libs/first-person-controls.js.map +0 -1
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1282
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
- package/es/components/viewer3d/libs/mtl-loader.js +0 -358
- package/es/components/viewer3d/libs/mtl-loader.js.map +0 -1
- package/es/components/viewer3d/libs/obj-loader.js +0 -463
- package/es/components/viewer3d/libs/obj-loader.js.map +0 -1
- package/es/components/viewer3d/libs/orbit-controls.js +0 -699
- package/es/components/viewer3d/libs/orbit-controls.js.map +0 -1
- package/es/components/viewer3d/libs/pointer-lock-controls.js +0 -46
- package/es/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
- package/es/components/viewer3d/lrm.js +0 -306
- package/es/components/viewer3d/lrm.js.map +0 -1
- package/es/components/viewer3d/model.js +0 -709
- package/es/components/viewer3d/model.js.map +0 -1
- package/es/components/viewer3d/pointer-lock-navigation.js +0 -116
- package/es/components/viewer3d/pointer-lock-navigation.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/itemRect.js +0 -62
- package/es/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/layer3D.js +0 -496
- package/es/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/ruler3D.js +0 -228
- package/es/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/scene3D.js +0 -62
- package/es/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/state3D.js +0 -19
- package/es/components/viewer3d/ruler-utils/state3D.js.map +0 -1
- package/es/components/viewer3d/scene-creator.js +0 -3607
- package/es/components/viewer3d/scene-creator.js.map +0 -1
- package/es/components/viewer3d/three-memory-cleaner.js +0 -52
- package/es/components/viewer3d/three-memory-cleaner.js.map +0 -1
- package/es/components/viewer3d/viewer3d-first-person.js +0 -316
- package/es/components/viewer3d/viewer3d-first-person.js.map +0 -1
- package/es/components/viewer3d/viewer3d.js +0 -2504
- package/es/components/viewer3d/viewer3d.js.map +0 -1
- package/es/components/wizardstep/button/styles.js +0 -60
- package/es/components/wizardstep/button/styles.js.map +0 -1
- package/es/components/wizardstep/export.js +0 -5
- package/es/components/wizardstep/export.js.map +0 -1
- package/es/components/wizardstep/index.js +0 -971
- package/es/components/wizardstep/index.js.map +0 -1
- package/es/components/wizardstep/styles.js +0 -61
- package/es/components/wizardstep/styles.js.map +0 -1
- package/es/components/wizardstep/wizardstep-content-button.js +0 -217
- package/es/components/wizardstep/wizardstep-content-button.js.map +0 -1
- package/es/components/wizardstep/wizardstep-toggle-button.js +0 -126
- package/es/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
- package/es/constants.js +0 -637
- package/es/constants.js.map +0 -1
- package/es/hooks/useCheckCart.js +0 -53
- package/es/hooks/useCheckCart.js.map +0 -1
- package/es/hooks/useGetPricesBySku.js +0 -74
- package/es/hooks/useGetPricesBySku.js.map +0 -1
- package/es/hooks/useValidateToken.js +0 -201
- package/es/hooks/useValidateToken.js.map +0 -1
- package/es/index.js +0 -17
- package/es/index.js.map +0 -1
- package/es/models.js +0 -511
- package/es/models.js.map +0 -1
- package/es/plugins/SVGLoader.js +0 -1413
- package/es/plugins/SVGLoader.js.map +0 -1
- package/es/plugins/autosave.js +0 -34
- package/es/plugins/autosave.js.map +0 -1
- package/es/plugins/console-debugger.js +0 -38
- package/es/plugins/console-debugger.js.map +0 -1
- package/es/plugins/export.js +0 -10
- package/es/plugins/export.js.map +0 -1
- package/es/plugins/keyboard.js +0 -102
- package/es/plugins/keyboard.js.map +0 -1
- package/es/reducers/areas-reducer.js +0 -13
- package/es/reducers/areas-reducer.js.map +0 -1
- package/es/reducers/export.js +0 -26
- package/es/reducers/export.js.map +0 -1
- package/es/reducers/groups-reducer.js +0 -39
- package/es/reducers/groups-reducer.js.map +0 -1
- package/es/reducers/holes-reducer.js +0 -63
- package/es/reducers/holes-reducer.js.map +0 -1
- package/es/reducers/items-reducer.js +0 -144
- package/es/reducers/items-reducer.js.map +0 -1
- package/es/reducers/lines-reducer.js +0 -46
- package/es/reducers/lines-reducer.js.map +0 -1
- package/es/reducers/project-reducer.js +0 -130
- package/es/reducers/project-reducer.js.map +0 -1
- package/es/reducers/reducer.js +0 -20
- package/es/reducers/reducer.js.map +0 -1
- package/es/reducers/scene-reducer.js +0 -29
- package/es/reducers/scene-reducer.js.map +0 -1
- package/es/reducers/user-reducer.js +0 -42
- package/es/reducers/user-reducer.js.map +0 -1
- package/es/reducers/vertices-reducer.js +0 -20
- package/es/reducers/vertices-reducer.js.map +0 -1
- package/es/reducers/viewer2d-reducer.js +0 -76
- package/es/reducers/viewer2d-reducer.js.map +0 -1
- package/es/reducers/viewer3d-reducer.js +0 -57
- package/es/reducers/viewer3d-reducer.js.map +0 -1
- package/es/shared-style.js +0 -67
- package/es/shared-style.js.map +0 -1
- package/es/styles/export.js +0 -6
- package/es/styles/export.js.map +0 -1
- package/es/styles/tabs.css +0 -40
- package/es/translator/en.js +0 -105
- package/es/translator/en.js.map +0 -1
- package/es/translator/it.js +0 -80
- package/es/translator/it.js.map +0 -1
- package/es/translator/ru.js +0 -80
- package/es/translator/ru.js.map +0 -1
- package/es/translator/translator.js +0 -85
- package/es/translator/translator.js.map +0 -1
- package/es/utils/browser.js +0 -34
- package/es/utils/browser.js.map +0 -1
- package/es/utils/email-validator.js +0 -5
- package/es/utils/email-validator.js.map +0 -1
- package/es/utils/export.js +0 -26
- package/es/utils/export.js.map +0 -1
- package/es/utils/geometry.js +0 -2237
- package/es/utils/geometry.js.map +0 -1
- package/es/utils/get-edges-of-subgraphs.js +0 -27
- package/es/utils/get-edges-of-subgraphs.js.map +0 -1
- package/es/utils/graph-cycles.js +0 -239
- package/es/utils/graph-cycles.js.map +0 -1
- package/es/utils/graph-inner-cycles.js +0 -47
- package/es/utils/graph-inner-cycles.js.map +0 -1
- package/es/utils/graph.js +0 -150
- package/es/utils/graph.js.map +0 -1
- package/es/utils/helper.js +0 -337
- package/es/utils/helper.js.map +0 -1
- package/es/utils/history.js +0 -30
- package/es/utils/history.js.map +0 -1
- package/es/utils/id-broker.js +0 -20
- package/es/utils/id-broker.js.map +0 -1
- package/es/utils/logger.js +0 -9
- package/es/utils/logger.js.map +0 -1
- package/es/utils/math.js +0 -51
- package/es/utils/math.js.map +0 -1
- package/es/utils/molding.js +0 -840
- package/es/utils/molding.js.map +0 -1
- package/es/utils/name-generator.js +0 -19
- package/es/utils/name-generator.js.map +0 -1
- package/es/utils/objects-utils.js +0 -51
- package/es/utils/objects-utils.js.map +0 -1
- package/es/utils/phone-validator.js +0 -5
- package/es/utils/phone-validator.js.map +0 -1
- package/es/utils/process-black-list.js +0 -19
- package/es/utils/process-black-list.js.map +0 -1
- package/es/utils/react-if.js +0 -19
- package/es/utils/react-if.js.map +0 -1
- package/es/utils/snap-scene.js +0 -100
- package/es/utils/snap-scene.js.map +0 -1
- package/es/utils/snap.js +0 -238
- package/es/utils/snap.js.map +0 -1
- package/es/utils/threeCSG.es6.js +0 -499
- package/es/utils/threeCSG.es6.js.map +0 -1
- package/es/version.js +0 -2
- package/es/version.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scene-creator.js","names":["Three","createGrid","disposeObject","Color","Group","isUndefined","MODE_DRAWING_ITEM_3D","EPSILON","DISTANCE_EPSILON","OBJTYPE_MESH","ARROW_TEXT_FORECOLOR","ARROW_TEXT_BACKCOLOR","ARROW_TEXT_FONTFACE","UNIT_CENTIMETER","SHADE_DARK_PURPLE_COLOR","MODE_DRAGGING_ITEM_3D","MODE_ROTATING_ITEM_3D","ANIMATE_STEP_MAX","ANIMATE_STEP_MIN","ANIMATE_OBJECT_OPEN_DOOR_ROTATION_UNIT","TOP_MOLDING_LOCATION","MIDDLE_MOLDING_LOCATION","BOTTOM_MOLDING_LOCATION","BASE_CABINET_LAYOUTPOS","TALL_CABINET_LAYOUTPOS","WALL_CABINET_LAYOUTPOS","DECIMAL_PLACES_2","DIFFERENT_VALUES_PATH_LENGTH","MODE_IDLE_3D","ARRAY_3D_MODES","MODE_IDLE","IDBroker","GeometryUtils","MoldingUtils","convert","verticesDistance","GeomUtils","loadTexture","returnReplaceableDeepSearchType","replaceMeshesWithLineSegments","isElevationView","isEmpty","animateDoor","translateDrawer","formatNumber","transformBox","fVLine","scene_mode","parseData","sceneData","actions","catalog","camera","renderer","mode","planData","window","sceneGraph","unit","layers","busyResources","width","height","LODs","plan","Object3D","name","cam","grid","boundingBox","Box3","setFromObject","promises","forEach","layer","id","selectedLayer","visible","concat","createLayerObjects","p1","Promise","resolve","all","then","value","parent","children","length","updateBoundingBox","buildElevationScene","promise","visibleTransformBox","flag","scene","updateMatrixWorld","ELEV_GRP","oldElevationGroup","getObjectByName","remove","elevationGroup","traverse","obj","clone","applyMatrix4","matrixWorld","add","moldingGroups","getAllMoldingGroups","lines","holes","areas","items","countertops","backsplashes","altitude","line","push","addLine","linesActions","holeID","addHole","holesActions","area","addArea","areaActions","item","addItem","itemsActions","canvas","document","createElement","style","ctx","getContext","fillStyle","strokeStyle","beginPath","arc","Math","PI","fill","stroke","img1","Image","crossOrigin","src","onload","drawImage","lineWidth","img2","createWarningObject","warningTexture","Texture","needsUpdate","warningObj","Sprite","SpriteMaterial","map","sizeAttenuation","material","transparent","depthTest","scale","set","renderOrder","updateScene","oldSceneData","diffArray","_draggingItem$toJS","_filteredDiffs","_filteredDiffs2","arguments","undefined","toolObj","angleObj","draggingItem","result","splitted","el","op","path","split","filteredDiffs","filterDiffs","filter","_ref","_ref2","isEndDragging","toJS","call","includes","_draggingItem$getIn","_draggingItem$getIn2","layerID","getIn","itemID","_sceneData$getIn","_sceneData$getIn$toJS","_selLayer$items","selLayer","distArray","isSettingDoorStyle","isUpdateMolding","_ref3","_ref4","_ref5","removeLayer","promiseValue","replaceObject","addObject","deleteSpecifiedMeshObjects","deleteCountertop","removeObject","layerSelectedID","layerSelected","layerGraph","lineID","removeLine","areaID","removeArea","removeItem","removeHole","replaceValue","animate_objects","myAnimRotate","open_doors","isCorner","animateStep","clearInterval","animate_intervalID","offset","myAnimTranslate","modifiedPath","matchStr","vertex","lineHoles","newHoleData","getElement","type","updateRender3D","updateHole","slice","updateLine","updateArea","tmpMoldings","_toConsumableArray","updateItem","item3D","err","console","log","keyIndex","rotation","setTimeout","getDistances","removeSelItemMesh","position","x","z","itemType","elements","item3DElement","pop","mBoxColor","_item","doorStyle","doorStyles","cds","showYelloBox","mBox","makeMBoxfromObject","properties","get","temp_MGArray","object","scalevec","Vector3","y","posVec","newAltitude","newUnit","from","to","newWidth","newWidthUnit","newHeight","newHeightUnit","newDepth","newDepthUnit","sizeinfo","info","depth","box","baseBoxHelper","baseBox3FromObject","max","min","radius","sqrt","moveBox","BoxGeometry","controlGeom","rotGeom","rotGeoms","upwardsGeom","vLineGeom","BufferGeometry","vertices","setAttribute","BufferAttribute","Float32Array","attributes","vLineGeom1","vertices1","vLineGeom2","vertices2","vLineGeom3","vertices3","rotFillObj","Mesh","rotFill","MeshPhongMaterial","color","side","DoubleSide","colorWrite","rotStrokeObj","Line","rotStroke","LineBasicMaterial","upObj","MeshBasicMaterial","upwardbox","BoxHelper","opacity","vLine","vLine1","vLine2","vLine3","uVec","blLighting","translateY","translateOnAxis","rotFillObj1","rotStrokeObj1","rotateY","asrtObj","applyInteract","getElementById","display","selectItem","prevPos","updateDoorHandleMesh","door_animate_offset","userData","_loop","it","elem","door_match","match","rotate_match_text","flip_doorhandle","child","endsWith","moveObjectChildrens","selectedItem","selected","idx","object_match","temp","_object3$userData$doo","element","_animate_objects$elem","_animate_objects$elem2","_animate_objects$elem3","_userData$door_animat","_element$obj","_offset$x","_offset$y","_offset$z","_element$obj2","warn","setInterval","rItem","rItemElement","removeItemWithoutItem","addCountertop","category","addMolding","values","isCalcWall","index","getLineDistance","positionAttribute","geometry","wPoint0","fromBufferAttribute","wPoint1","raycaster","Raycaster","rayDirection","ray","direction","Camera","normalize","meshes","isMesh","intersects","intersectObjects","lx","ly","lz","extrudeSettings","steps","bevelEnabled","w","h","shape","Shape","moveTo","lineTo","geom","ExtrudeGeometry","center","i","distance","target","originPoint","array","newVec","computeBoundingSphere","computeBoundingBox","dist","getTextCanvas","wid","innerWidth","hei","innerHeight","texture","minFilter","LinearFilter","PlaneGeometry","textMesh","sprite1","objW","objL","triangle","triangle1","sin","cos","real_target","tX","tZ","tX1","tZ1","data","px","py","opX","opY","vec","getIntersectPoint","pX","pY","oA","A","oB","B","iX","iY","gcd","a","b","text","parameters","fontSize","integral","String","fontName","font","italic","bold","textMetrics","measureText","textBaseline","baseline","r","arcTo","fillColor","fillText","strokeColor","strokeText","layerId","hole3D","line3D","area3D","oldSceneLayer","newSceneLayer","deleteAllMolding","addPromise","addAction","holeData","render3D","LOD","castShadow","MeshPhysicalMaterial","roughness","transmission","thickness","transparency","Number","isFinite","transGroup","bevelSegments","bevelSize","bevelThickness","triangleShape","transHole_Right","addShape","transHole_Left","pivot","vertex0","vertex1","tmp","pow","alpha","asin","holeAltitude","holeHeight","holeId","childLen","selectHole","applyOpacity","differences","selfDestroy","selfBuild","hole","oldHole","mesh","stateMode","lineVisible","lineId","selectLine","oldLine","interactFunction","selectArea","floorSupport","onBeforeRender","group","floorMesh","normal","computeVertexNormals","normals","pos","Vector4","matrixWorldInverse","dot","ceil","ceilMaterial","MeshStandardMaterial","BackSide","metalness","_loop2","realVec","ceilHeight","translateZ","oldArea","bAddMolding","loadFlag","toggleLoadingCabinet","catalogElement","pivotElement","tranformControl","TransformGizmo","itemId","getItemVisible","itemRect","selectedLine","itemVisible","l0","l1","r0","rect","r1","r2","r3","delta12","distancePointFromLineSegment","delta23","delta30","val","rotRad","catid","cat","size","layoutpos","is_corner","calcrect","getCalcRectFromItem3D","itemPos","some","endLoading","oldItem","interact","Array","isArray","maxOpacity","newBoundingBox","newCenter","sub","minimizeRemoveDiffsWhenSwitchingLayers","minimizeChangePropertiesAfterSelectionsDiffs","minimizeChangePropertiesDiffs","foundDiff","_ref6","indexOf","idsFound","_ref7","_ref8","_ref9","createCTFromItem","createCTFromItems","item0","item1","CTId","acquireID","ct3d","widthUnit","depthUnit","heightUnit","createMDFromItem","molding","MDId","zUnit","location_type","pointGroups","tryAdjacent","ct1","ct2","totalwidth","abs","newpos","newsize","compareVertices","isParallelLines","line1","line2","isParallel","tryAdjacentMD","md1","md2","id1","hasOwnProperty","id2","newLines","isMerge","findIndex","disLine1","disLine2","sameMDistances","sameMPoints","samePointNum","floor","_objectSpread","pointNum","k","showItemCT","CT","normalMap","counterTop","uri","interiortexture","applyTexture","repeat","getCountertopMesh","countertop","getDoorStyleMaterial","tempItem","door_mesh","addCTMesh","ctMesh","quaternion","setFromAxisAngle","copy","updateMatrix","ctmeshMat","matrix","objMat","pivotMat","setPosition","find","ct","unit_width","finalMat","premultiply","getArea","c","isSingleQuadrilateral","groupCount","pointGroup","moldingVertices","mPointGroup","mdGeo","MDV","model","svg_width","svg_height","isSnap","o","Vector2","samePoints","verticesArray","t","tmp_pos","point","cur","prev","next","vecPC","vecNC","vecNorm","multiplyScalar","lenPN","lenNC","lenPC","acos","isNaN","rotateAround","p","mdGeo1","dcmFace","leng","f_a1","f_b1","f_c1","f_a2","f_b2","f_c2","indices","setIndex","faces","fbmFace","total_leng","assignUVs","_geometry$boundingBox","range","faceVertexUvs","face","v1","v2","v3","uvsNeedUpdate","assignUVsA","_geometry$boundingBox2","getMeshesFromScene","threedfabs","getDistanceBetweenLineSegment","pos1","pos2","pos3","pos4","_doorStyle","isItemCabinet","hasItemCDS","isSimilar","sameSign","ch1","ch2","getTotalDistance","sum","wrapS","RepeatWrapping","wrapT","normalScale","normalScaleX","normalScaleY","lengthRepeatScale","heightRepeatScale","createBacksplash","backsplashApplied","itemInfo","backsplash","itemToSave","backsplashVisible","splice","wallItems","allWallItems","getAllItemSpecified","others","altitudeUnit","altItems","wallItem","altItem","posX","posY","posZ","rotY","posX1","posY1","posZ1","rotY1","splashWidth","splashHeight","splashDepth","wholeWidth","factor","halfWidth","centerFactor","_iterator","_createForOfIteratorHelper","_step","s","n","done","back","hypot","e","f","areaMaterial","allLines","getAllLines","allLineRects","buildRectFromLines","isSnappedSideLine","geometry1","backsplash1","newBacksplash","addMGMesh","_molding$molding","paths","j","jl","subPaths","subPath","Path","fromJSON","getPoints","_addMGMesh","isBaseCabinet","parseInt","temp_unit","height_unit","width_unit","length_unit","total","count","len","toNonIndexed","sumDistance","sumDistanceArray","finalDistance","uvs_element_array","posDistance","uvs","uvs_item","apply","all_uvs","fbm3d","deleteCTMesh","deleteMGMesh","_planData$plan$childr","CTArray","long_name","newCT","oldCT","extCT","extCTIndex","tryMergeCT","delItem","delCT","delItemIndex","delCTIndex","cts","MGArray","tempMGArray","mg","snappedItems","toArray","oItem","isItemSnappedItem","updateMoldingGroupArray","itemActions","moldingMesh","selItem","cnt","isEnableMolding","isEnableItemForMolding","itemsForGroup","curItem","isSameMoldingLayoutpos","new_MGArray","changeMoldings","destItem","destMolding","md","regenMGItemList","oldMG","filteredNewMGList","_loop3","newMG","oIt","nIt","rIt","nItem","v","_ret","mol","points","createMonldingGroup","chMolding","setMolding","_","flip","error","doorReg","doorHandleReg","doorRegResult","exec","phDoor","doorHandle","phRight","phLeft","childOfDoor","addWarningBox","altitudeLength","sBounding","warnBoxGeom","warnBoxObj","blending","MultiplyBlending","linewidth","checkCabinetOverlap","holeItems","holeAlti"],"sources":["../../../src/components/viewer3d/scene-creator.js"],"sourcesContent":["import * as Three from 'three';\r\nimport createGrid from './grid-creator';\r\nimport { disposeObject } from './three-memory-cleaner';\r\nimport { Color, Group } from 'three';\r\nimport { isUndefined } from 'util';\r\nimport {\r\n MODE_DRAWING_ITEM_3D,\r\n EPSILON,\r\n DISTANCE_EPSILON,\r\n OBJTYPE_MESH,\r\n ARROW_TEXT_FORECOLOR,\r\n ARROW_TEXT_BACKCOLOR,\r\n ARROW_TEXT_FONTFACE,\r\n UNIT_CENTIMETER,\r\n SHADE_DARK_PURPLE_COLOR,\r\n MODE_DRAGGING_ITEM_3D,\r\n MODE_ROTATING_ITEM_3D,\r\n ANIMATE_STEP_MAX,\r\n ANIMATE_STEP_MIN,\r\n ANIMATE_OBJECT_OPEN_DOOR_ROTATION_UNIT,\r\n TOP_MOLDING_LOCATION,\r\n MIDDLE_MOLDING_LOCATION,\r\n BOTTOM_MOLDING_LOCATION,\r\n BASE_CABINET_LAYOUTPOS,\r\n TALL_CABINET_LAYOUTPOS,\r\n WALL_CABINET_LAYOUTPOS,\r\n DECIMAL_PLACES_2,\r\n DIFFERENT_VALUES_PATH_LENGTH,\r\n MODE_IDLE_3D,\r\n ARRAY_3D_MODES,\r\n MODE_IDLE\r\n} from '../../constants';\r\nimport { IDBroker, GeometryUtils, MoldingUtils } from '../../utils/export';\r\nimport convert from 'convert-units';\r\nimport { verticesDistance } from '../../utils/geometry';\r\nimport * as GeomUtils from '../../../demo/src/catalog/utils/geom-utils';\r\nimport { loadTexture } from '../../../demo/src/catalog/utils/item-loader';\r\nimport { returnReplaceableDeepSearchType } from '../viewer2d/utils';\r\nimport {\r\n replaceMeshesWithLineSegments,\r\n isElevationView,\r\n isEmpty,\r\n animateDoor,\r\n translateDrawer\r\n} from '../../../src/utils/helper';\r\nimport { formatNumber } from '../../utils/math';\r\n\r\nlet transformBox;\r\nexport var fVLine = [];\r\nlet scene_mode = null;\r\n\r\nexport function parseData(sceneData, actions, catalog, camera, renderer, mode) {\r\n let planData = { catalog, sceneData };\r\n\r\n window.planData = planData;\r\n\r\n planData.sceneGraph = {\r\n unit: sceneData.unit,\r\n layers: {},\r\n busyResources: { layers: {} },\r\n width: sceneData.width,\r\n height: sceneData.height,\r\n LODs: {}\r\n };\r\n\r\n planData.plan = new Three.Object3D();\r\n planData.plan.name = 'plan';\r\n\r\n planData.cam = new Three.Object3D();\r\n planData.cam.name = 'cam';\r\n\r\n // Add a grid to the plan\r\n planData.grid = createGrid(sceneData);\r\n planData.grid.name = 'grid';\r\n\r\n planData.boundingBox = new Three.Box3().setFromObject(planData.grid);\r\n planData.boundingBox.name = 'boundingBox';\r\n\r\n let promises = [];\r\n\r\n sceneData.layers.forEach(layer => {\r\n if (layer.id === sceneData.selectedLayer || layer.visible) {\r\n promises = promises.concat(\r\n createLayerObjects(\r\n layer,\r\n planData,\r\n sceneData,\r\n actions,\r\n catalog,\r\n mode,\r\n camera,\r\n renderer\r\n )\r\n );\r\n }\r\n });\r\n\r\n var p1 = new Promise(resolve => {\r\n Promise.all(promises).then(value => {\r\n if (\r\n planData.plan.parent !== null &&\r\n planData.plan.children.length !== 0\r\n ) {\r\n updateBoundingBox(planData, false, mode);\r\n\r\n // if mode is elevation, build elevation scene\r\n if (isElevationView(mode)) buildElevationScene(planData, mode);\r\n }\r\n resolve('success');\r\n });\r\n });\r\n\r\n return { promise: p1, planData: planData };\r\n\r\n // return planData;\r\n}\r\n\r\nexport function visibleTransformBox(flag) {\r\n // if (transformBox instanceof Three.Mesh)\r\n // transformBox.visible = flag;\r\n}\r\n\r\nconst buildElevationScene = (planData, mode) => {\r\n let scene = planData.plan.parent;\r\n scene.updateMatrixWorld();\r\n const ELEV_GRP = 'ELEV_GRP';\r\n let oldElevationGroup = scene.getObjectByName(ELEV_GRP);\r\n if (oldElevationGroup) oldElevationGroup.parent.remove(oldElevationGroup);\r\n let elevationGroup = new Three.Group();\r\n scene.traverse(obj => {\r\n if (obj.name == 'MainObject') {\r\n let clone = obj.clone();\r\n clone.name = '';\r\n clone.visible = obj.parent.visible;\r\n clone.applyMatrix4(obj.parent.matrixWorld);\r\n elevationGroup.add(clone);\r\n }\r\n });\r\n elevationGroup.name = ELEV_GRP;\r\n elevationGroup.visible = false;\r\n\r\n planData.elevationGroup = elevationGroup;\r\n scene.traverse(obj => {\r\n if (obj.name == 'MainObject') {\r\n replaceMeshesWithLineSegments(obj);\r\n }\r\n });\r\n\r\n scene.add(elevationGroup);\r\n};\r\n\r\nfunction createLayerObjects(\r\n layer,\r\n planData,\r\n sceneData,\r\n actions,\r\n catalog,\r\n mode,\r\n camera,\r\n renderer\r\n) {\r\n let promises = [];\r\n\r\n let moldingGroups = MoldingUtils.getAllMoldingGroups(layer);\r\n\r\n planData.sceneGraph.layers[layer.id] = {\r\n id: layer.id,\r\n lines: {},\r\n holes: {},\r\n areas: {},\r\n items: {},\r\n countertops: [],\r\n moldingGroups: moldingGroups,\r\n backsplashes: [],\r\n\r\n visible: layer.visible,\r\n altitude: layer.altitude\r\n };\r\n\r\n planData.sceneGraph.busyResources.layers[layer.id] = {\r\n id: layer.id,\r\n lines: {},\r\n holes: {},\r\n areas: {},\r\n items: {},\r\n moldingGroups: {}\r\n };\r\n // Import lines\r\n layer.lines.forEach(line => {\r\n promises.push(\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n line.id,\r\n catalog,\r\n actions.linesActions,\r\n mode\r\n )\r\n );\r\n line.holes.forEach(holeID => {\r\n promises.push(\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n );\r\n });\r\n });\r\n\r\n // Import areas\r\n layer.areas.forEach(area => {\r\n promises.push(\r\n addArea(\r\n sceneData,\r\n planData,\r\n layer,\r\n area.id,\r\n catalog,\r\n actions.areaActions,\r\n mode\r\n )\r\n );\r\n });\r\n // Import items\r\n layer.items.forEach(item => {\r\n promises.push(\r\n addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n item.id,\r\n catalog,\r\n actions.itemsActions,\r\n mode,\r\n null,\r\n null\r\n // false\r\n )\r\n );\r\n });\r\n\r\n return promises;\r\n}\r\n\r\nvar canvas = document.createElement('canvas');\r\ncanvas.width = 50;\r\ncanvas.height = 100;\r\ncanvas.style.width = 50 + 'px';\r\ncanvas.style.height = 100 + 'px';\r\nconst ctx = canvas.getContext('2d');\r\nctx.fillStyle = '#FFFFFF';\r\nctx.strokeStyle = '#ff7400';\r\nctx.beginPath();\r\nctx.arc(25, 25, 20, 0, 2 * Math.PI);\r\nctx.fill();\r\nctx.stroke();\r\nlet img1 = new Image();\r\nimg1.crossOrigin = 'anonymous';\r\nimg1.src = '/assets/img/svg/3d_item_warning_info.svg';\r\nimg1.onload = function () {\r\n ctx.drawImage(img1, 0, 0, 50, 50);\r\n};\r\n\r\nctx.lineWidth = 4;\r\nctx.beginPath();\r\nctx.arc(25, 75, 20, 0, 2 * Math.PI);\r\nctx.fill();\r\nctx.stroke();\r\nlet img2 = new Image();\r\nimg2.crossOrigin = 'anonymous';\r\nimg2.src = '/assets/img/svg/3d_item_warning_edit.svg';\r\nimg2.onload = function () {\r\n ctx.drawImage(img2, 8, 58, 34, 34);\r\n};\r\n\r\nexport function createWarningObject() {\r\n let warningTexture = new Three.Texture(canvas);\r\n warningTexture.needsUpdate = true;\r\n\r\n let warningObj = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: warningTexture, sizeAttenuation: true })\r\n );\r\n warningObj.material.transparent = true;\r\n warningObj.material.depthTest = false;\r\n warningObj.scale.set(20, 40, 20);\r\n warningObj.renderOrder = 3;\r\n warningObj.name = 'warningObj';\r\n\r\n return warningObj;\r\n}\r\n\r\nexport function updateScene(\r\n planData,\r\n sceneData,\r\n oldSceneData,\r\n diffArray,\r\n actions,\r\n catalog,\r\n mode = null,\r\n toolObj = null,\r\n angleObj = null,\r\n draggingItem = null\r\n) {\r\n var result = [];\r\n if (mode != null) {\r\n scene_mode = mode;\r\n }\r\n let splitted = diffArray.map(el => {\r\n return { op: el.op, path: el.path.split('/'), value: el.value };\r\n });\r\n let filteredDiffs = filterDiffs(splitted, sceneData, oldSceneData);\r\n //***testing additional filter***\r\n filteredDiffs = filteredDiffs.filter(({ path }) => path[3] !== 'selected');\r\n filteredDiffs = filteredDiffs.filter(({ path }) => path[1] !== 'groups');\r\n //*******************************\r\n //This is executed when dragging item is end and performs the updateing filteredDiffs.\r\n if (\r\n sceneData?.isEndDragging === true &&\r\n draggingItem &&\r\n !isEmpty(draggingItem.toJS?.()) &&\r\n filteredDiffs?.[0]?.path?.length < DIFFERENT_VALUES_PATH_LENGTH &&\r\n filteredDiffs?.[0]?.path?.includes('showfg')\r\n ) {\r\n const layerID = draggingItem.getIn?.(['layerID']);\r\n const itemID = draggingItem.getIn?.(['itemID']);\r\n\r\n if (layerID && itemID) {\r\n filteredDiffs[0].path = [\r\n '',\r\n 'layers',\r\n layerID,\r\n 'items',\r\n itemID,\r\n 'distArray'\r\n ];\r\n\r\n const selLayer = sceneData.getIn?.(['layers', layerID])?.toJS?.();\r\n const distArray = selLayer?.items?.[itemID]?.distArray;\r\n\r\n filteredDiffs[0].value = distArray;\r\n }\r\n }\r\n\r\n // Check to see if diffs includes changes associated with doorStyle and global molding simultaneously.\r\n let isSettingDoorStyle = false; // If it includes any doorStyle change\r\n let isUpdateMolding = false; // If it includes any global molding change\r\n filteredDiffs.forEach(({ path }) => {\r\n /**\r\n * Every 'doorStyle' change has a 'door_style_id' change.\r\n * So, if door_style_id changes, it indicates 'doorStyle' change.\r\n */\r\n if (['id'].includes(path[path.length - 1])) isSettingDoorStyle = true;\r\n\r\n // If there are any molding change of layer\r\n if (path[1] === 'layers' && path[3] === 'molding') isUpdateMolding = true;\r\n });\r\n\r\n if (isSettingDoorStyle && isUpdateMolding)\r\n /**\r\n * If so, any other changes could be ignored.\r\n * Because the molding change of layer invokes 'createLayerObject()'\r\n * and that function re-renders an whole layer.\r\n */\r\n filteredDiffs = filteredDiffs.filter(({ path }) => {\r\n return path[1] === 'layers' && path[3] === 'molding';\r\n });\r\n\r\n filteredDiffs.forEach(({ op, path, value }) => {\r\n /* First of all I need to find the object I need to update */\r\n if (path[1] === 'layers') {\r\n let layer = sceneData.getIn(['layers', path[2]]);\r\n\r\n if (path.length === 3 && op === 'remove') {\r\n removeLayer(path[2], planData);\r\n } else if (path.length > 3) {\r\n if (path.length > 5)\r\n if (\r\n path[5] === 'submodule' ||\r\n path[5] === 'doorStyle' ||\r\n path[5] === 'properties'\r\n )\r\n op = 'replace';\r\n switch (op) {\r\n case 'replace':\r\n var promiseValue = replaceObject(\r\n path,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode,\r\n value\r\n );\r\n if (promiseValue !== undefined) {\r\n result.push(promiseValue.promise);\r\n }\r\n break;\r\n case 'add':\r\n addObject(\r\n path,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode,\r\n toolObj\r\n );\r\n break;\r\n case 'remove':\r\n if (angleObj) planData.plan.parent.remove(angleObj);\r\n if (toolObj) planData.plan.parent.remove(toolObj);\r\n deleteSpecifiedMeshObjects('WarningBox' + path[4]);\r\n deleteSpecifiedMeshObjects('backsplash' + path[4]);\r\n let item = oldSceneData\r\n .getIn(['layers', path[2]])\r\n .getIn(['items', path[4]]);\r\n deleteCountertop(\r\n planData.sceneGraph.layers[layer.id].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n removeObject(\r\n path,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog\r\n );\r\n break;\r\n }\r\n }\r\n } else if (path[1] === 'selectedLayer') {\r\n let layerSelectedID = value;\r\n let layerSelected = sceneData.getIn(['layers', layerSelectedID]);\r\n // First of all I check if the new selected layer is not visible\r\n if (!layerSelected.visible) {\r\n // I need to create the objects for this layer\r\n let promises = createLayerObjects(\r\n layerSelected,\r\n planData,\r\n sceneData,\r\n actions,\r\n catalog,\r\n mode\r\n );\r\n Promise.all(promises).then(() =>\r\n updateBoundingBox(planData, false, mode)\r\n );\r\n }\r\n\r\n let layerGraph = planData.sceneGraph.layers[oldSceneData.selectedLayer];\r\n\r\n if (layerGraph) {\r\n if (!layerGraph.visible) {\r\n // I need to remove the objects for this layer\r\n for (let lineID in layerGraph.lines)\r\n removeLine(planData, layerGraph.id, lineID);\r\n for (let areaID in layerGraph.areas)\r\n removeArea(planData, layerGraph.id, areaID);\r\n for (let itemID in layerGraph.items)\r\n removeItem(planData, layerGraph.id, itemID);\r\n for (let holeID in layerGraph.holes)\r\n removeHole(planData, layerGraph.id, holeID);\r\n }\r\n }\r\n }\r\n });\r\n var p1 = new Promise(resolve => {\r\n Promise.all(result).then(replaceValue => {\r\n // if mode is elevation, build elevation scene\r\n // When scene is updated, replaceValue is not empty.\r\n if (isElevationView(mode) && !isEmpty(replaceValue))\r\n buildElevationScene(planData, mode);\r\n resolve('successPromise');\r\n });\r\n });\r\n\r\n return { promise: p1, planData };\r\n}\r\n\r\nlet animate_objects = {};\r\n\r\nfunction myAnimRotate(obj, open_doors, item, isCorner) {\r\n let animateStep = animate_objects[obj.name].animateStep;\r\n\r\n // if open the door, animateStep increases to ANIMATE_STEP_MAX and if close the door, animateStep decreases to ANIMATE_STEP_MIN\r\n animateStep = open_doors ? animateStep + 1 : animateStep - 1;\r\n\r\n // clear interval when the opening or closing door is ended.\r\n if (animateStep > ANIMATE_STEP_MAX || animateStep < ANIMATE_STEP_MIN) {\r\n clearInterval(animate_objects[obj.name].animate_intervalID);\r\n return;\r\n }\r\n animate_objects[obj.name].animateStep = animateStep;\r\n\r\n animateDoor(\r\n animate_objects[obj.name].offset,\r\n obj,\r\n open_doors,\r\n item,\r\n isCorner,\r\n 'Opened3D'\r\n );\r\n}\r\n\r\nfunction myAnimTranslate(obj, open_doors, item) {\r\n let animateStep = animate_objects[obj.name].animateStep;\r\n animateStep = open_doors ? animateStep + 1 : animateStep - 1;\r\n\r\n if (animateStep > ANIMATE_STEP_MAX || animateStep < ANIMATE_STEP_MIN) {\r\n clearInterval(animate_objects[obj.name].animate_intervalID);\r\n return;\r\n }\r\n\r\n animate_objects[obj.name].animateStep = animateStep;\r\n\r\n translateDrawer(item, obj, open_doors, 'Opened3D');\r\n}\r\n\r\nfunction replaceObject(\r\n modifiedPath,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode = null,\r\n value = null\r\n) {\r\n let promises = [];\r\n const matchStr = /\\d_(door[^LR1-9]*)(_[LR])?(_[1-9])?$/;\r\n switch (modifiedPath[3]) {\r\n case 'vertices':\r\n if (modifiedPath[5] !== 'selected') {\r\n let vertex = layer.getIn(['vertices', modifiedPath[4]]);\r\n\r\n if (modifiedPath[5] === 'x' || modifiedPath[5] === 'y') {\r\n vertex.lines.forEach(lineID => {\r\n let lineHoles = oldSceneData.getIn([\r\n 'layers',\r\n layer.id,\r\n 'lines',\r\n lineID,\r\n 'holes'\r\n ]);\r\n if (lineHoles)\r\n lineHoles.forEach(holeID => {\r\n replaceObject(\r\n [0, 0, 0, 'holes', holeID, 'selected'],\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode\r\n );\r\n });\r\n return replaceObject(\r\n [0, 0, 0, 'lines', lineID],\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode\r\n );\r\n });\r\n vertex.areas.forEach(areaID =>\r\n replaceObject(\r\n [0, 0, 0, 'areas', areaID],\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode\r\n )\r\n );\r\n }\r\n\r\n if (modifiedPath[5] === 'areas') {\r\n let areaID = vertex.getIn(['areas', ~~modifiedPath[6]]);\r\n replaceObject(\r\n [0, 0, 0, 'areas', areaID],\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode\r\n );\r\n }\r\n }\r\n break;\r\n case 'holes':\r\n let newHoleData = layer.getIn(['holes', modifiedPath[4]]);\r\n\r\n if (catalog.getElement(newHoleData.type).updateRender3D) {\r\n promises.push(\r\n updateHole(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n modifiedPath.slice(5),\r\n catalog,\r\n actions.holesActions,\r\n () => removeHole(planData, layer.id, newHoleData.id),\r\n () =>\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n newHoleData.id,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n )\r\n );\r\n } else {\r\n let lineID = newHoleData.line;\r\n if (\r\n modifiedPath[5] === 'selected' ||\r\n scene_mode === 'MODE_DRAWING_HOLE_3D' ||\r\n scene_mode === 'MODE_DRAGGING_HOLE_3D'\r\n ) {\r\n // I remove only the hole without removing the wall\r\n removeHole(planData, layer.id, newHoleData.id);\r\n promises.push(\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n newHoleData.id,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n );\r\n } else {\r\n layer.getIn(['lines', lineID, 'holes']).forEach(holeID => {\r\n removeHole(planData, layer.id, holeID);\r\n });\r\n removeLine(planData, layer.id, lineID);\r\n promises.push(\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n catalog,\r\n actions.linesActions\r\n )\r\n );\r\n layer.getIn(['lines', lineID, 'holes']).forEach(holeID => {\r\n promises.push(\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n );\r\n });\r\n }\r\n }\r\n break;\r\n case 'lines':\r\n let line = layer.getIn(['lines', modifiedPath[4]]);\r\n\r\n if (catalog.getElement(line.type).updateRender3D) {\r\n promises.push(\r\n updateLine(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n modifiedPath.slice(5),\r\n catalog,\r\n actions.linesActions,\r\n () => removeLine(planData, layer.id, modifiedPath[4]),\r\n () =>\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.linesActions\r\n )\r\n )\r\n );\r\n } else {\r\n removeLine(planData, layer.id, modifiedPath[4]);\r\n promises.push(\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.linesActions\r\n )\r\n );\r\n }\r\n break;\r\n case 'areas':\r\n let area = layer.getIn(['areas', modifiedPath[4]]);\r\n\r\n if (catalog.getElement(area.type).updateRender3D) {\r\n promises.push(\r\n updateArea(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n modifiedPath.slice(5),\r\n catalog,\r\n actions.areaActions,\r\n () => removeArea(planData, layer.id, modifiedPath[4]),\r\n () =>\r\n addArea(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.areaActions\r\n )\r\n )\r\n );\r\n } else {\r\n if (planData.sceneGraph.layers[layer.id].areas[modifiedPath[4]]) {\r\n removeArea(planData, layer.id, modifiedPath[4]);\r\n }\r\n promises.push(\r\n addArea(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.areaActions\r\n )\r\n );\r\n }\r\n break;\r\n case 'items':\r\n let item = layer.getIn(['items', modifiedPath[4]]);\r\n deleteCountertop(\r\n planData.sceneGraph.layers[layer.id].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n let tmpMoldings = [...planData.sceneGraph.layers[layer.id].moldingGroups];\r\n if (catalog.getElement(item.type).updateRender3D) {\r\n promises.push(\r\n updateItem(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n modifiedPath.slice(5),\r\n catalog,\r\n actions.itemsActions,\r\n () =>\r\n removeItem(\r\n planData,\r\n layer.id,\r\n modifiedPath[4],\r\n oldSceneData.getIn(['layers', layer.id]),\r\n layer\r\n ),\r\n () =>\r\n addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.itemsActions,\r\n mode\r\n )\r\n )\r\n );\r\n } else {\r\n let item3D = null;\r\n try {\r\n item3D = planData.sceneGraph.layers[layer.id].items[modifiedPath[4]];\r\n } catch (err) {\r\n console.log('modifiedPath: ', modifiedPath, '\\nError: ', err);\r\n return;\r\n }\r\n\r\n if (!item3D) return;\r\n let keyIndex = modifiedPath.length - 1;\r\n if (modifiedPath[keyIndex] == 'rotation') {\r\n item3D.rotation.set(0, (value * Math.PI) / 180 + Math.PI, 0);\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 50);\r\n removeSelItemMesh(tmpMoldings, item, planData, mode);\r\n } else if (modifiedPath[keyIndex] == 'x') {\r\n item3D.position.x = value;\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 50);\r\n removeSelItemMesh(tmpMoldings, item, planData, mode);\r\n } else if (modifiedPath[keyIndex] == 'y') {\r\n item3D.position.z = -value;\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 50);\r\n removeSelItemMesh(tmpMoldings, item, planData, mode);\r\n } else if (modifiedPath[keyIndex] == 'selected') {\r\n const itemType = !!catalog.elements[item.type]\r\n ? catalog.elements[item.type].type\r\n : catalog.elements[returnReplaceableDeepSearchType(item.type)].type;\r\n\r\n if (value == false) {\r\n item3D.children[0].children = item3D.children[0].children.filter(\r\n item3DElement =>\r\n item3DElement.name !== 'TransformBox' &&\r\n item3DElement.name !== 'TransformGizmo'\r\n );\r\n if (item3D) {\r\n if (item3D.children.length > 1) {\r\n item3D.children.pop();\r\n }\r\n let mBoxColor = 0x99c3fb;\r\n let _item = item.toJS();\r\n if (\r\n _item.doorStyle.doorStyles !== undefined &&\r\n _item.doorStyle.doorStyles.cds\r\n ) {\r\n if (showYelloBox(_item)) {\r\n mBoxColor = 'rgba(232,187,47,1)';\r\n let mBox = GeomUtils.makeMBoxfromObject(item3D, mBoxColor);\r\n let warningObj = createWarningObject();\r\n warningObj.position.set(\r\n 0,\r\n item.properties.get('height').get('length') / 3,\r\n 0\r\n );\r\n if (mBox) {\r\n mBox.add(warningObj);\r\n item3D.add(mBox);\r\n }\r\n }\r\n }\r\n }\r\n let temp_MGArray =\r\n planData.sceneGraph.layers[layer.id].moldingGroups;\r\n } else {\r\n if (\r\n item3D.name !== 'pivot' &&\r\n item3D.children[0].children[\r\n item3D.children[0].children.length - 1\r\n ].name == 'TransformGizmo'\r\n )\r\n return;\r\n if (\r\n item3D.children[0].children[\r\n item3D.children[0].children.length - 1\r\n ].name == 'TransformGizmo'\r\n ) {\r\n item3D.children[0].children.pop();\r\n }\r\n let object = item3D.children[0].clone();\r\n if (item3D.children.length > 1) {\r\n item3D.children.pop();\r\n }\r\n item3D.children.pop();\r\n let altitude = item.properties.get('altitude').get('length');\r\n let scalevec = new Three.Vector3(\r\n object.scale.x,\r\n object.scale.y,\r\n object.scale.z\r\n );\r\n let posVec = new Three.Vector3(\r\n object.position.x,\r\n object.position.y,\r\n object.position.z\r\n );\r\n let newAltitude = item.properties.get('altitude').get('_length');\r\n let newUnit = item.properties.get('altitude').get('_unit') || 'in';\r\n newAltitude = convert(newAltitude).from(newUnit).to(sceneData.unit);\r\n\r\n let newWidth = item.properties.get('width').get('_length');\r\n let newWidthUnit =\r\n item.properties.get('width').get('_unit') || 'in';\r\n newWidth = convert(newWidth).from(newWidthUnit).to('in');\r\n\r\n let newHeight = item.properties.get('height').get('_length');\r\n let newHeightUnit =\r\n item.properties.get('height').get('_unit') || 'in';\r\n newHeight = convert(newHeight).from(newHeightUnit).to('in');\r\n\r\n let newDepth = item.properties.get('depth').get('_length');\r\n let newDepthUnit =\r\n item.properties.get('depth').get('_unit') || 'in';\r\n newDepth = convert(newDepth).from(newDepthUnit).to('in');\r\n let sizeinfo = !!catalog.elements[item.type]\r\n ? catalog.elements[item.type].info.sizeinfo\r\n : catalog.elements[returnReplaceableDeepSearchType(item.type)]\r\n .info.sizeinfo;\r\n object.scale.set(\r\n (1 * newWidth) / sizeinfo.width,\r\n (1 * newHeight) / sizeinfo.height,\r\n (1 * newDepth) / sizeinfo.depth\r\n );\r\n object.position.set(0, 0, 0);\r\n object.rotation.set(0, 0, 0);\r\n\r\n let box = GeomUtils.baseBoxHelper(object, 0xffffff);\r\n box.material.lineWidth = 0.01;\r\n let boundingBox = GeomUtils.baseBox3FromObject(object);\r\n let max = boundingBox.max;\r\n let min = boundingBox.min;\r\n let radius =\r\n Math.sqrt(\r\n (boundingBox.max.x - boundingBox.min.x) *\r\n (boundingBox.max.x - boundingBox.min.x) +\r\n (boundingBox.max.z - boundingBox.min.z) *\r\n (boundingBox.max.z - boundingBox.min.z)\r\n ) / 2;\r\n let moveBox = new Three.BoxGeometry(\r\n max.x - min.x,\r\n max.y - min.y,\r\n max.z - min.z\r\n );\r\n\r\n // translate Object\r\n let controlGeom = GeomUtils.controlGeom();\r\n\r\n // rotate Object //////////\r\n let rotGeom = GeomUtils.rotGeoms(radius + 0.05);\r\n // //////////////////////////////////\r\n // upwards Geometry///////////\r\n let upwardsGeom = GeomUtils.upwardsGeom();\r\n\r\n let vLineGeom = new Three.BufferGeometry();\r\n let vertices = [\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n max.z,\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n max.z + 1.3\r\n ];\r\n vLineGeom.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices), 3)\r\n );\r\n vLineGeom.attributes.position.needsUpdate = true;\r\n\r\n let vLineGeom1 = new Three.BufferGeometry();\r\n let vertices1 = [\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n min.z,\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n min.z - 1.3\r\n ];\r\n vLineGeom1.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices1), 3)\r\n );\r\n vLineGeom1.attributes.position.needsUpdate = true;\r\n\r\n let vLineGeom2 = new Three.BufferGeometry();\r\n let vertices2 = [\r\n max.x,\r\n 0,\r\n max.z - (max.z - min.z) / 2,\r\n max.x + 1.3,\r\n 0,\r\n max.z - (max.z - min.z) / 2\r\n ];\r\n vLineGeom2.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices2), 3)\r\n );\r\n\r\n let vLineGeom3 = new Three.BufferGeometry();\r\n\r\n let vertices3 = [\r\n min.x,\r\n 0,\r\n max.z - (max.z - min.z) / 2,\r\n min.x - 1.3,\r\n 0,\r\n max.z - (max.z - min.z) / 2\r\n ];\r\n vLineGeom3.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices3), 3)\r\n );\r\n // ///////////////////////////////////////\r\n\r\n // set names of transform object\r\n let rotFillObj = new Three.Mesh(\r\n rotGeom.rotFill,\r\n new Three.MeshPhongMaterial({\r\n color: 0x000000,\r\n side: Three.DoubleSide,\r\n colorWrite: true\r\n })\r\n );\r\n let rotStrokeObj = new Three.Line(\r\n rotGeom.rotStroke,\r\n new Three.LineBasicMaterial({ color: 0xffffff, colorWrite: true })\r\n );\r\n rotFillObj.name = 'rotate';\r\n let upObj = new Three.Mesh(\r\n upwardsGeom,\r\n new Three.MeshBasicMaterial({\r\n color: 0x000000,\r\n side: Three.DoubleSide\r\n })\r\n );\r\n // let upLine = new Three.Line(upwardsGeom, new Three.LineBasicMaterial({ color: 0x000000 }));\r\n // upLine.name = \"transUp\";\r\n // upObj.add(upLine);\r\n upObj.name = 'transUp';\r\n let upwardbox = new Three.BoxHelper(upObj, 0x326780);\r\n upwardbox.material.lineWidth = 0.01;\r\n fVLine = [];\r\n // let obj = new Three.Mesh(controlGeom, new Three.MeshPhongMaterial({ color: 0xffffff, side: Three.DoubleSide, colorWrite: true }));\r\n // obj.name = \"translateX\";\r\n let color = SHADE_DARK_PURPLE_COLOR;\r\n let mBox = new Three.Mesh(\r\n moveBox,\r\n new Three.MeshBasicMaterial({\r\n color: 0xdd6699,\r\n side: Three.DoubleSide,\r\n transparent: true,\r\n opacity: 0.4\r\n })\r\n );\r\n let vLine = new Three.Line(\r\n vLineGeom,\r\n new Three.LineBasicMaterial({ color })\r\n );\r\n let vLine1 = new Three.Line(\r\n vLineGeom1,\r\n new Three.LineBasicMaterial({ color })\r\n );\r\n let vLine2 = new Three.Line(\r\n vLineGeom2,\r\n new Three.LineBasicMaterial({ color })\r\n );\r\n let vLine3 = new Three.Line(\r\n vLineGeom3,\r\n new Three.LineBasicMaterial({ color })\r\n );\r\n fVLine.push(vLine);\r\n fVLine.push(vLine1);\r\n fVLine.push(vLine2);\r\n fVLine.push(vLine3);\r\n vLine.renderOrder = 1;\r\n vLine1.renderOrder = 1;\r\n vLine2.renderOrder = 1;\r\n vLine3.renderOrder = 1;\r\n vLine.material.transparent = true;\r\n vLine1.material.transparent = true;\r\n vLine2.material.transparent = true;\r\n vLine3.material.transparent = true;\r\n vLine.material.depthTest = false;\r\n vLine1.material.depthTest = false;\r\n vLine2.material.depthTest = false;\r\n vLine3.material.depthTest = false;\r\n let uVec = new Three.Vector3(\r\n -posVec.x / scalevec.x,\r\n -posVec.y / scalevec.y,\r\n -posVec.z / scalevec.z\r\n );\r\n let blLighting = item.type.includes('Light');\r\n vLine.translateY(blLighting ? 1.6 : 0.1);\r\n vLine1.translateY(blLighting ? 1.6 : 0.1);\r\n vLine2.translateY(blLighting ? 1.6 : 0.1);\r\n vLine3.translateY(blLighting ? 1.6 : 0.1);\r\n upObj.translateOnAxis(uVec, 1);\r\n upObj.translateY(max.y - min.y);\r\n mBox.name = 'TransformBox';\r\n mBox.translateOnAxis(\r\n new Three.Vector3(uVec.x, uVec.y + (max.y - min.y) / 2, uVec.z),\r\n 1\r\n );\r\n mBox.scale.set(1.01, 1.01, 1.01);\r\n let rotFillObj1 = rotFillObj.clone();\r\n let rotStrokeObj1 = rotStrokeObj.clone();\r\n rotFillObj1.rotateY(Math.PI);\r\n rotStrokeObj1.rotateY(Math.PI);\r\n let asrtObj = new Three.Group();\r\n // let asrtObj1 = new Three.Group();\r\n // asrtObj.add(obj);\r\n // asrtObj.add(obj1);\r\n rotFillObj.translateY(blLighting ? 1.6 : 0.1);\r\n rotFillObj1.translateY(blLighting ? 1.6 : 0.1);\r\n rotStrokeObj.translateY(blLighting ? 1.6 : 0.1);\r\n rotStrokeObj1.translateY(blLighting ? 1.6 : 0.1);\r\n upObj.translateY(posVec.y / scalevec.y);\r\n upObj.add(upwardbox);\r\n //asrtObj.add(upObj);\r\n // vLine.translateY(posVec.y / scalevec.y);\r\n // vLine1.translateY(posVec.y / scalevec.y);\r\n // vLine2.translateY(posVec.y / scalevec.y);\r\n // vLine3.translateY(posVec.y / scalevec.y);\r\n\r\n mBox.translateY(posVec.y / scalevec.y);\r\n // asrtObj.add(rotFillObj);\r\n // asrtObj.add(rotFillObj1);\r\n // asrtObj.add(rotStrokeObj);\r\n // asrtObj.add(rotStrokeObj1);\r\n asrtObj.add(vLine);\r\n asrtObj.add(vLine1);\r\n asrtObj.add(vLine2);\r\n asrtObj.add(vLine3);\r\n asrtObj.add(box);\r\n asrtObj.scale.set(\r\n 1 / object.scale.x,\r\n object.scale.y,\r\n 1 / object.scale.z\r\n );\r\n mBox.visible = false;\r\n // transformBox = mBox;\r\n // asrtObj.add(mBox);\r\n asrtObj.name = 'TransformGizmo';\r\n object.add(asrtObj);\r\n object.position.x = posVec.x;\r\n object.position.y = posVec.y;\r\n object.position.z = posVec.z;\r\n // object.rotation.y = Math.PI;\r\n object.scale.set(scalevec.x, scalevec.y, scalevec.z);\r\n item3D.add(object);\r\n if (item3D) {\r\n let mBoxColor = 0x99c3fb;\r\n let _item = item.toJS();\r\n if (\r\n _item.doorStyle.doorStyles !== undefined &&\r\n _item.doorStyle.doorStyles.cds\r\n ) {\r\n if (showYelloBox(_item)) {\r\n mBoxColor = 'rgba(232,187,47,1)';\r\n let mBox = GeomUtils.makeMBoxfromObject(item3D, mBoxColor);\r\n let warningObj = createWarningObject();\r\n warningObj.position.set(\r\n 0,\r\n item.properties.get('height').get('length') / 3,\r\n 0\r\n );\r\n if (mBox) {\r\n mBox.add(warningObj);\r\n item3D.add(mBox);\r\n }\r\n }\r\n }\r\n }\r\n applyInteract(item3D, () => {\r\n // closes the setting dialog\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return actions.itemsActions.selectItem(layer.id, modifiedPath[4]);\r\n });\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 100);\r\n }\r\n } else if (modifiedPath[keyIndex] == 'length') {\r\n let object = item3D.children[0];\r\n let prevPos = object.position;\r\n object.position.set(prevPos.x, value, prevPos.z);\r\n } else if (modifiedPath[keyIndex] == 'flip_doorhandle') {\r\n updateDoorHandleMesh(item, item3D, value);\r\n const object = item3D.children[0];\r\n let door_animate_offset = object.userData.door_animate_offset;\r\n for (let it in door_animate_offset) {\r\n if (object.children.filter(elem => elem.name === it).length) {\r\n let door_match = it.match(matchStr);\r\n let rotate_match_text = item.properties.toJS().flip_doorhandle\r\n ? 'rotate_L'\r\n : 'rotate_R';\r\n if (door_match[2] === '_L') {\r\n rotate_match_text = item.properties.toJS().flip_doorhandle\r\n ? 'rotate_R'\r\n : 'rotate_L';\r\n }\r\n object.children\r\n .filter(elem => elem.name === it)[0]\r\n .children[0].children.forEach(child => {\r\n if (child.name.endsWith(rotate_match_text)) {\r\n door_animate_offset[it] = {\r\n x: child.position.x,\r\n y: child.position.y,\r\n z: child.position.z\r\n };\r\n }\r\n });\r\n }\r\n }\r\n object.userData.door_animate_offset = door_animate_offset;\r\n } else if (modifiedPath[keyIndex] == 'animValue') {\r\n return;\r\n } else if (modifiedPath[keyIndex] == 'open_doors') {\r\n const object = item3D.children[0];\r\n const userData = item3D.children[0].userData;\r\n let moveObjectChildrens = [];\r\n const selectedItem = layer\r\n .getIn(['items', layer.selected.toJS().items[0]])\r\n .toJS();\r\n object.children.forEach((child, idx) => {\r\n let object_match =\r\n child.name.match(/\\d_(interior_drawer[^LR1-9]*)(_[LR1-9])?$/) ||\r\n child.name.match(matchStr);\r\n if (object_match && object_match.length > 2) {\r\n moveObjectChildrens.push({\r\n type: object_match[1],\r\n obj: child\r\n });\r\n animate_objects[child.name] = animate_objects[child.name] || {};\r\n }\r\n });\r\n\r\n let temp = moveObjectChildrens.filter(item => {\r\n return object.userData.door_animate_offset[item.obj.name]?.isCorner;\r\n });\r\n let isCorner = temp.length > 0;\r\n moveObjectChildrens.forEach(element => {\r\n if (animate_objects[element.obj.name]?.animateStep === undefined) {\r\n animate_objects[element.obj.name].animateStep = selectedItem\r\n .properties.open_doors\r\n ? ANIMATE_STEP_MIN\r\n : ANIMATE_STEP_MAX;\r\n }\r\n\r\n // clear origin Interval.\r\n if (animate_objects[element.obj.name]?.animate_intervalID) {\r\n clearInterval(\r\n animate_objects[element.obj.name]?.animate_intervalID\r\n );\r\n }\r\n\r\n if (element.type === 'door') {\r\n // This is excuted when item has door.\r\n const offset =\r\n userData?.door_animate_offset?.[element?.obj?.name];\r\n\r\n if (offset) {\r\n animate_objects[element.obj.name].offset = {\r\n x: offset.x ?? 0,\r\n y: offset.y ?? 0,\r\n z: offset.z ?? 0\r\n };\r\n } else {\r\n console.warn(\r\n '⚠ Missing door_animate_offset for',\r\n element?.obj?.name\r\n );\r\n animate_objects[element.obj.name].offset = { x: 0, y: 0, z: 0 };\r\n }\r\n\r\n // Set the interval ID to new interval ID\r\n animate_objects[element.obj.name].animate_intervalID =\r\n setInterval(() => {\r\n myAnimRotate(\r\n element.obj,\r\n selectedItem.properties.open_doors,\r\n selectedItem,\r\n isCorner\r\n );\r\n }, 30);\r\n } else {\r\n // This is excuted when item has drawer box\r\n // Set the interval ID to new interval ID\r\n animate_objects[element.obj.name].animate_intervalID =\r\n setInterval(() => {\r\n myAnimTranslate(\r\n element.obj,\r\n selectedItem.properties.open_doors,\r\n selectedItem\r\n );\r\n }, 30);\r\n }\r\n });\r\n } else if (\r\n [\r\n '_length',\r\n 'doorStyle',\r\n 'cabinet_door_style_id',\r\n 'counterTop',\r\n 'texture',\r\n 'drawer_door_handle_1_gltf'\r\n ].includes(modifiedPath[keyIndex])\r\n ) {\r\n let rItem =\r\n planData.sceneGraph.layers[layer.id].items[modifiedPath[4]];\r\n if (rItem) {\r\n if (rItem.children.length > 1) {\r\n rItem.children.pop();\r\n }\r\n let mBoxColor = 0x99c3fb;\r\n let _item = item.toJS();\r\n if (\r\n _item.doorStyle.doorStyles !== undefined &&\r\n _item.doorStyle.doorStyles.cds\r\n ) {\r\n if (showYelloBox(_item)) {\r\n mBoxColor = 'rgba(232,187,47,1)';\r\n }\r\n }\r\n rItem.children[0].children.forEach(rItemElement => {\r\n rItemElement.visible = false;\r\n });\r\n let mBox = GeomUtils.makeMBoxfromObject(rItem, mBoxColor);\r\n if (mBox) {\r\n //rItem.add (mBox);\r\n }\r\n }\r\n if (rItem != null) {\r\n removeItemWithoutItem(planData, layer.id, modifiedPath[4]);\r\n promises.push(\r\n addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n actions.itemsActions,\r\n mode,\r\n null,\r\n rItem\r\n )\r\n );\r\n setTimeout(() => {\r\n getDistances(layer);\r\n }, 100);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n item = layer.getIn(['items', modifiedPath[4]]);\r\n addCountertop(\r\n planData.sceneGraph.layers[layer.id].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n // Toggle selection should not update molding\r\n if (\r\n item.category === 'cabinet' &&\r\n modifiedPath[modifiedPath.length - 1] !== 'selected'\r\n ) {\r\n planData.sceneGraph.layers[layer.id].moldingGroups = addMolding(\r\n tmpMoldings,\r\n item,\r\n planData,\r\n layer,\r\n actions.itemsActions,\r\n mode\r\n ) || [...tmpMoldings];\r\n }\r\n break;\r\n\r\n case 'visible':\r\n if (!layer.visible) {\r\n let layerGraph = planData.sceneGraph.layers[layer.id];\r\n\r\n for (let lineID in layerGraph.lines)\r\n removeLine(planData, layer.id, lineID);\r\n for (let areaID in layerGraph.areas)\r\n removeArea(planData, layer.id, areaID);\r\n for (let itemID in layerGraph.items)\r\n removeItem(planData, layer.id, itemID);\r\n for (let holeID in layerGraph.holes)\r\n removeHole(planData, layer.id, holeID);\r\n } else {\r\n promises = promises.concat(\r\n createLayerObjects(layer, planData, sceneData, actions, catalog, mode)\r\n );\r\n }\r\n\r\n break;\r\n\r\n case 'unit':\r\n case 'ceilHeight':\r\n case 'opacity':\r\n case 'altitude':\r\n case 'molding':\r\n let layerGraph = planData.sceneGraph.layers[layer.id];\r\n for (let lineID in layerGraph.lines)\r\n removeLine(planData, layer.id, lineID);\r\n for (let areaID in layerGraph.areas)\r\n removeArea(planData, layer.id, areaID);\r\n for (let itemID in layerGraph.items)\r\n removeItem(planData, layer.id, itemID);\r\n for (let holeID in layerGraph.holes)\r\n removeHole(planData, layer.id, holeID);\r\n\r\n promises = promises.concat(\r\n createLayerObjects(layer, planData, sceneData, actions, catalog, mode)\r\n );\r\n }\r\n var p1 = new Promise(resolve => {\r\n Promise.all(promises).then(values => {\r\n updateBoundingBox(planData, true, mode);\r\n resolve('replaceObject');\r\n });\r\n });\r\n return { promise: p1 };\r\n}\r\n\r\nexport function getDistances(layer, isCalcWall) {\r\n fVLine.forEach((line, index) => {\r\n getLineDistance(\r\n line,\r\n layer,\r\n isCalcWall === undefined ? false : isCalcWall,\r\n index\r\n );\r\n });\r\n}\r\n\r\nfunction getLineDistance(obj, layer, isCalcWall, index) {\r\n if (obj === undefined) return;\r\n const positionAttribute = obj.geometry.attributes.position;\r\n if (positionAttribute === undefined) return;\r\n let wPoint0 = new Three.Vector3()\r\n .fromBufferAttribute(positionAttribute, 0)\r\n .applyMatrix4(obj.matrixWorld);\r\n let wPoint1 = new Three.Vector3()\r\n .fromBufferAttribute(positionAttribute, 1)\r\n .applyMatrix4(obj.matrixWorld);\r\n let raycaster = new Three.Raycaster(\r\n wPoint0,\r\n new Three.Vector3(\r\n wPoint1.x - wPoint0.x,\r\n wPoint1.y - wPoint0.y,\r\n wPoint1.z - wPoint0.z\r\n )\r\n );\r\n let rayDirection = raycaster.ray.direction;\r\n raycaster.camera = new Three.Camera();\r\n rayDirection.normalize();\r\n const meshes = [];\r\n planData.plan.traverse(child => {\r\n if (child.isMesh && child.geometry) {\r\n meshes.push(child);\r\n }\r\n });\r\n let intersects = raycaster.intersectObjects(meshes, true);\r\n\r\n let lx = wPoint0.x - wPoint1.x;\r\n let ly = wPoint0.y - wPoint1.y;\r\n let lz = wPoint0.z - wPoint1.z;\r\n let length = Math.sqrt(lx * lx + ly * ly + lz * lz);\r\n let scale = 1;\r\n\r\n var extrudeSettings = {\r\n steps: 2,\r\n depth: 0.01,\r\n bevelEnabled: false\r\n };\r\n var w = 0.2;\r\n var h = w * (Math.sqrt(3) / 2);\r\n var shape = new Three.Shape();\r\n shape.moveTo(0, 0);\r\n shape.lineTo(-w / 4, h / 2);\r\n shape.lineTo(w / 4, h / 2);\r\n var geom = new Three.ExtrudeGeometry(shape, extrudeSettings);\r\n geom.center();\r\n\r\n if (!isCalcWall) {\r\n for (let i = 0; i < intersects.length; i++) {\r\n if (\r\n intersects[i].object.name != 'TransformBox' &&\r\n !intersects[i].object.name.includes('WarningBox') &&\r\n intersects[i].object.type != 'Line' &&\r\n intersects[i].object.name != 'rotate' &&\r\n intersects[i].object.name != 'lineText' &&\r\n intersects[i].object.type != 'BoxHelper' &&\r\n !intersects[i].object.name.includes('molding') &&\r\n intersects[i].object.name != 'soul'\r\n ) {\r\n scale = intersects[i].distance / length;\r\n if (intersects[i].distance <= 0.1) {\r\n scale = 0.1 / length;\r\n }\r\n obj.userData.distance = intersects[i].distance;\r\n obj.userData.target = intersects[i].object;\r\n let originPoint = obj.geometry.attributes.position.array.slice(0, 3);\r\n let lx =\r\n obj.geometry.attributes.position.array[3] -\r\n obj.geometry.attributes.position.array[0];\r\n let ly =\r\n obj.geometry.attributes.position.array[4] -\r\n obj.geometry.attributes.position.array[1];\r\n let lz =\r\n obj.geometry.attributes.position.array[5] -\r\n obj.geometry.attributes.position.array[2];\r\n let newVec = new Three.Vector3(\r\n originPoint[0] + lx * scale,\r\n originPoint[1] + ly * scale,\r\n originPoint[2] + lz * scale\r\n );\r\n\r\n obj.geometry.attributes.position.array[3] = newVec.x;\r\n obj.geometry.attributes.position.array[4] = newVec.y;\r\n obj.geometry.attributes.position.array[5] = newVec.z;\r\n obj.geometry.attributes.position.needsUpdate = true;\r\n obj.geometry.computeBoundingSphere();\r\n obj.geometry.computeBoundingBox();\r\n\r\n let dist = formatNumber(\r\n convert(intersects[i].distance).from('cm').to('in'),\r\n DECIMAL_PLACES_2\r\n );\r\n if (dist > 3) {\r\n let canvas = getTextCanvas(dist);\r\n let wid = (canvas.width / window.innerWidth) * 30;\r\n let hei = (canvas.height / window.innerHeight) * 30;\r\n let texture = new Three.Texture(canvas);\r\n texture.minFilter = Three.LinearFilter;\r\n texture.needsUpdate = true;\r\n let geometry = new Three.PlaneGeometry(wid / 5, hei / 5);\r\n geometry.computeBoundingBox();\r\n const material = new Three.MeshBasicMaterial({\r\n map: texture,\r\n side: Three.DoubleSide\r\n });\r\n let textMesh = new Three.Mesh(geometry, material);\r\n for (; obj.children.length != 0; ) {\r\n let temp = obj.children.pop();\r\n disposeObject(temp);\r\n }\r\n textMesh.rotation.set(Math.PI / 2, Math.PI, 0);\r\n // obj.add(textMesh);\r\n textMesh.position.set(\r\n (obj.geometry.attributes.position.array[0] +\r\n obj.geometry.attributes.position.array[3]) /\r\n 2,\r\n 0.01,\r\n (obj.geometry.attributes.position.array[2] +\r\n obj.geometry.attributes.position.array[5]) /\r\n 2\r\n );\r\n textMesh.name = 'lineText';\r\n textMesh.renderOrder = 2;\r\n textMesh.material.depthTest = false;\r\n textMesh.material.transparent = true;\r\n\r\n let sprite1 = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: texture })\r\n );\r\n sprite1.position.set(\r\n (obj.geometry.attributes.position.array[0] +\r\n obj.geometry.attributes.position.array[3]) /\r\n 2,\r\n 0.01,\r\n (obj.geometry.attributes.position.array[2] +\r\n obj.geometry.attributes.position.array[5]) /\r\n 2\r\n );\r\n sprite1.name = 'lineText';\r\n sprite1.renderOrder = 2;\r\n sprite1.scale.set(0.2, 0.1, 0.2);\r\n sprite1.layers.set(1);\r\n obj.add(sprite1);\r\n\r\n if (obj.parent != null) {\r\n // is not lighting\r\n let item3D = obj.parent.parent.parent;\r\n let max = item3D.children[0].userData.max;\r\n let min = item3D.children[0].userData.min;\r\n let objW = (max.x - min.x) / 100,\r\n objL = (max.z - min.z) / 100;\r\n var triangle = new Three.Mesh(\r\n geom,\r\n new Three.MeshBasicMaterial({ color: SHADE_DARK_PURPLE_COLOR })\r\n );\r\n var triangle1 = new Three.Mesh(\r\n geom,\r\n new Three.MeshBasicMaterial({ color: SHADE_DARK_PURPLE_COLOR })\r\n );\r\n triangle.position.set(\r\n (index < 2\r\n ? 0\r\n : Math.sin(((index === 2 ? 1 : -1) * Math.PI) / 2)) *\r\n (obj.geometry.attributes.position.array[0] +\r\n h / 4 +\r\n (index % 2 === 0 ? 0 : objW)),\r\n newVec.y,\r\n (index < 2 ? Math.cos(index * Math.PI) : 0) *\r\n (obj.geometry.attributes.position.array[2] +\r\n h / 4 +\r\n (index % 2 === 0 ? 0 : objL))\r\n );\r\n triangle1.position.set(\r\n newVec.x -\r\n ((index < 2\r\n ? 0\r\n : Math.sin(((index === 2 ? 1 : -1) * Math.PI) / 2)) *\r\n h) /\r\n 4,\r\n newVec.y,\r\n newVec.z - ((index < 2 ? Math.cos(index * Math.PI) : 0) * h) / 4\r\n );\r\n if (index < 2) {\r\n triangle.rotation.x = (Math.cos(index * Math.PI) * Math.PI) / 2;\r\n triangle1.rotation.x = (-Math.cos(index * Math.PI) * Math.PI) / 2;\r\n } else {\r\n triangle.rotation.x = -Math.PI / 2;\r\n triangle.rotation.z = (-(index === 2 ? 1 : -1) * Math.PI) / 2;\r\n triangle1.rotation.x = Math.PI / 2;\r\n triangle1.rotation.z = ((index === 2 ? 1 : -1) * Math.PI) / 2;\r\n }\r\n triangle.name = 'lineText';\r\n triangle1.name = 'lineText';\r\n triangle.renderOrder = 2;\r\n triangle1.renderOrder = 2;\r\n triangle.material.transparent = true;\r\n triangle1.material.transparent = true;\r\n triangle.material.depthTest = false;\r\n triangle1.material.depthTest = false;\r\n obj.add(triangle);\r\n obj.add(triangle1);\r\n }\r\n }\r\n\r\n // if (obj.userData.distance <= 50 && obj.userData.distance >= 0.5) {\r\n let real_target = obj.userData.target;\r\n for (; real_target.name != 'pivot'; ) {\r\n if (real_target.parent == null) break;\r\n real_target = real_target.parent;\r\n }\r\n // let item3D = obj.parent.parent.parent;\r\n // let origin = obj.geometry.vertices[0].clone().applyMatrix4(obj.matrixWorld);\r\n // let target = obj.geometry.vertices[1].clone().applyMatrix4(obj.matrixWorld);\r\n // let uVec = new Three.Vector3(target.x - origin.x - 0.2, target.y - origin.y - 0.2, target.z - origin.z - 0.2);\r\n obj.visible = true;\r\n if (dist < 3) obj.visible = false;\r\n return obj;\r\n }\r\n }\r\n }\r\n let tX = wPoint0.x - planData.plan.position.x;\r\n let tZ = wPoint0.z - planData.plan.position.z;\r\n tZ = -tZ;\r\n let tX1 = wPoint1.x - planData.plan.position.x;\r\n let tZ1 = wPoint1.z - planData.plan.position.z;\r\n tZ1 = -tZ1;\r\n if (!layer) return;\r\n layer.lines.forEach(function (data) {\r\n let px = [];\r\n let py = [];\r\n let opX = [tX, tX1];\r\n let opY = [tZ, tZ1];\r\n data.vertices.forEach(vec => {\r\n let vertices = layer.vertices.get(vec);\r\n px.push(vertices.x);\r\n py.push(vertices.y);\r\n });\r\n let distance = getIntersectPoint(opX, opY, px, py);\r\n if (distance != null) {\r\n obj.userData.distance = distance;\r\n obj.userData.target =\r\n planData.sceneGraph.layers[layer.id].lines[data.get('id')];\r\n scale = distance / length;\r\n if (distance <= 0.1) {\r\n scale = 0.1 / length;\r\n }\r\n let originPoint = obj.geometry.attributes.position.array.slice(0, 3);\r\n lx =\r\n obj.geometry.attributes.position.array[3] -\r\n obj.geometry.attributes.position.array[0];\r\n ly =\r\n obj.geometry.attributes.position.array[4] -\r\n obj.geometry.attributes.position.array[1];\r\n lz =\r\n obj.geometry.attributes.position.array[5] -\r\n obj.geometry.attributes.position.array[2];\r\n let newVec = new Three.Vector3(\r\n originPoint.x + lx * scale,\r\n originPoint.y + ly * scale,\r\n originPoint.z + lz * scale\r\n );\r\n obj.geometry.attributes.position.array[3] = newVec.x;\r\n obj.geometry.attributes.position.array[4] = newVec.y;\r\n obj.geometry.attributes.position.array[5] = newVec.z;\r\n obj.geometry.attributes.position.needsUpdate = true;\r\n let dist = formatNumber(distance, DECIMAL_PLACES_2);\r\n if (dist > 3) {\r\n let canvas = getTextCanvas(dist);\r\n let wid = (canvas.width / window.innerWidth) * 30;\r\n let hei = (canvas.height / window.innerHeight) * 30;\r\n let texture = new Three.Texture(canvas);\r\n texture.needsUpdate = true;\r\n let geometry = new Three.PlaneGeometry(wid / 2, hei / 2);\r\n geometry.computeBoundingBox();\r\n const material = new Three.MeshBasicMaterial({\r\n map: texture,\r\n side: Three.DoubleSide\r\n });\r\n let textMesh = new Three.Mesh(geometry, material);\r\n for (; obj.children.length != 0; ) {\r\n let temp = obj.children.pop();\r\n disposeObject(temp);\r\n }\r\n textMesh.rotation.set(Math.PI / 2, Math.PI, 0);\r\n // obj.add(textMesh);\r\n textMesh.position.set(\r\n (obj.geometry.attributes.position.array[0] +\r\n obj.geometry.attributes.position.array[3]) /\r\n 2,\r\n 0.01,\r\n (obj.geometry.attributes.position.array[2] +\r\n obj.geometry.attributes.position.array[5]) /\r\n 2\r\n );\r\n textMesh.name = 'lineText';\r\n textMesh.renderOrder = 2;\r\n textMesh.material.depthTest = false;\r\n textMesh.material.transparent = true;\r\n\r\n let sprite1 = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: texture })\r\n );\r\n sprite1.position.set(\r\n (obj.geometry.attributes.position.array[0] +\r\n obj.geometry.attributes.position.array[3]) /\r\n 2,\r\n 0.01,\r\n (obj.geometry.attributes.position.array[2] +\r\n obj.geometry.attributes.position.array[5]) /\r\n 2\r\n );\r\n sprite1.name = 'lineText';\r\n sprite1.scale.set(0.2, 0.1, 0.2);\r\n sprite1.layers.set(1);\r\n obj.add(sprite1);\r\n\r\n let item3D = obj.parent.parent.parent;\r\n let max = item3D.children[0].userData.max;\r\n let min = item3D.children[0].userData.min;\r\n let objW = (max.x - min.x) / 100,\r\n objL = (max.z - min.z) / 100;\r\n var triangle = new Three.Mesh(\r\n geom,\r\n new Three.MeshBasicMaterial({ color: SHADE_DARK_PURPLE_COLOR })\r\n );\r\n var triangle1 = new Three.Mesh(\r\n geom,\r\n new Three.MeshBasicMaterial({ color: SHADE_DARK_PURPLE_COLOR })\r\n );\r\n triangle.position.set(\r\n (index < 2 ? 0 : Math.sin(((index === 2 ? 1 : -1) * Math.PI) / 2)) *\r\n (obj.geometry.attributes.position.array[0] +\r\n h / 4 +\r\n (index % 2 === 0 ? 0 : objW)),\r\n newVec.y,\r\n (index < 2 ? Math.cos(index * Math.PI) : 0) *\r\n (obj.geometry.attributes.position.array[2] +\r\n h / 4 +\r\n (index % 2 === 0 ? 0 : objL)) -\r\n 0.02\r\n );\r\n triangle1.position.set(\r\n newVec.x -\r\n ((index < 2\r\n ? 0\r\n : Math.sin(((index === 2 ? 1 : -1) * Math.PI) / 2)) *\r\n h) /\r\n 4,\r\n newVec.y,\r\n newVec.z - ((index < 2 ? Math.cos(index * Math.PI) : 0) * h) / 4\r\n );\r\n if (index < 2) {\r\n triangle.rotation.x = (Math.cos(index * Math.PI) * Math.PI) / 2;\r\n triangle1.rotation.x = (-Math.cos(index * Math.PI) * Math.PI) / 2;\r\n } else {\r\n triangle.rotation.x = -Math.PI / 2;\r\n triangle.rotation.z = (-(index === 2 ? 1 : -1) * Math.PI) / 2;\r\n triangle1.rotation.x = Math.PI / 2;\r\n triangle1.rotation.z = ((index === 2 ? 1 : -1) * Math.PI) / 2;\r\n }\r\n triangle.name = 'lineText';\r\n triangle1.name = 'lineText';\r\n triangle.renderOrder = 2;\r\n triangle1.renderOrder = 2;\r\n triangle.material.transparent = true;\r\n triangle1.material.transparent = true;\r\n triangle.material.depthTest = false;\r\n triangle1.material.depthTest = false;\r\n obj.add(triangle);\r\n obj.add(triangle1);\r\n }\r\n // if (obj.userData.distance <= 50 && obj.userData.distance >= 0.5) {\r\n // let item3D = obj.parent.parent.parent;\r\n // let pos = item3D.position.clone();\r\n // let origin = obj.geometry.vertices[0].clone().applyMatrix4(obj.matrixWorld);\r\n // let target = obj.geometry.vertices[1].clone().applyMatrix4(obj.matrixWorld);\r\n // let uVec = new Three.Vector3(target.x - origin.x - 0.2, target.y - origin.y - 0.2, target.z - origin.z - 0.2);\r\n obj.visible = true;\r\n if (dist > 3) obj.visible = false;\r\n return obj;\r\n // itemsActions.updateDraggingItemChanged(pos.x - uVec.x, -pos.z + uVec.z);\r\n // }\r\n }\r\n });\r\n obj.visible = false;\r\n return obj;\r\n}\r\n\r\nexport function getIntersectPoint(opX, opY, pX, pY) {\r\n let oA;\r\n if (opX[1] == opX[0]) oA = null;\r\n else oA = (opY[1] - opY[0]) / (opX[1] - opX[0]);\r\n let A;\r\n if (pX[1] == pX[0]) A = null;\r\n else A = (pY[1] - pY[0]) / (pX[1] - pX[0]);\r\n if (oA == A) return null;\r\n if (oA != null && A != null) {\r\n let oB = opY[0] - oA * opX[0];\r\n let B = pY[0] - A * pX[0];\r\n let iX = (B - oB) / (oA - A);\r\n if ((pX[0] <= iX && iX <= pX[1]) || (pX[0] >= iX && iX >= pX[1])) {\r\n if (\r\n (opX[0] <= opX[1] && opX[0] <= iX) ||\r\n (opX[0] >= opX[1] && opX[0] >= iX)\r\n ) {\r\n let iY = pY[0] + A * (iX - pX[0]);\r\n let distance = Math.sqrt(\r\n (opX[0] - iX) * (opX[0] - iX) + (opY[0] - iY) * (opY[0] - iY)\r\n );\r\n return distance;\r\n }\r\n return null;\r\n }\r\n }\r\n if (oA == null) {\r\n let iX = opX[0];\r\n if (A != null) {\r\n if ((pX[0] <= iX && iX <= pX[1]) || (pX[0] >= iX && iX >= pX[1])) {\r\n let iY = pY[0] + A * (iX - pX[0]);\r\n if (\r\n (opY[0] <= iY && opY[0] <= opY[1]) ||\r\n (opY[0] >= iY && opY[0] >= opY[1])\r\n ) {\r\n let distance = Math.sqrt(\r\n (opX[0] - iX) * (opX[0] - iX) + (opY[0] - iY) * (opY[0] - iY)\r\n );\r\n return distance;\r\n }\r\n }\r\n }\r\n }\r\n if (A == null) {\r\n let iX = pX[0];\r\n if (oA != null) {\r\n let iY = iX * oA + opY[0] - oA * opX[0];\r\n if ((pY[0] <= iY && iY <= pY[1]) || (pY[0] >= iY && iY >= pY[1])) {\r\n if (\r\n (opY[0] <= iY && opY[0] <= opY[1]) ||\r\n (opY[0] >= iY && opY[0] >= opY[1])\r\n ) {\r\n let distance = Math.sqrt(\r\n (opX[0] - iX) * (opX[0] - iX) + (opY[0] - iY) * (opY[0] - iY)\r\n );\r\n return distance;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction gcd(a, b) {\r\n return a % b ? gcd(b, a % b) : b;\r\n}\r\nfunction getTextCanvas(text, parameters = {}) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n\r\n let fontSize = 16;\r\n let integral = String(text) + \"''\";\r\n\r\n parameters.fontName = parameters.fontName || ARROW_TEXT_FONTFACE;\r\n\r\n // Prepare the font to be able to measure\r\n ctx.font = `${fontSize}px ` + parameters.fontName;\r\n if (parameters.italic) {\r\n ctx.font = `italic ${fontSize}px ` + parameters.fontName;\r\n }\r\n if (parameters.bold) {\r\n ctx.font = `bold ${fontSize}px ` + parameters.fontName;\r\n }\r\n if (parameters.bold && parameters.italic) {\r\n ctx.font = `italic bold ${fontSize}px ` + parameters.fontName;\r\n }\r\n const textMetrics = ctx.measureText(integral);\r\n\r\n let width = 70;\r\n let height = fontSize + 20;\r\n\r\n // Resize canvas to match text size\r\n canvas.width = width;\r\n canvas.height = height;\r\n canvas.style.width = width + 'px';\r\n canvas.style.height = height + 'px';\r\n\r\n // Re-apply font since canvas is resized.\r\n ctx.font = `${fontSize}px ` + parameters.fontName;\r\n if (parameters.italic) {\r\n ctx.font = `italic ${fontSize}px ` + parameters.fontName;\r\n }\r\n if (parameters.bold) {\r\n ctx.font = `bold ${fontSize}px ` + parameters.fontName;\r\n }\r\n if (parameters.bold && parameters.italic) {\r\n ctx.font = `italic bold ${fontSize}px ` + parameters.fontName;\r\n }\r\n //ctx.textAlign = parameters.align || \"center\";\r\n ctx.textBaseline = parameters.baseline || 'middle';\r\n const r = 10;\r\n // Make the canvas transparent for simplicity\r\n ctx.fillStyle = ARROW_TEXT_BACKCOLOR;\r\n // ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);\r\n const w = ctx.canvas.width;\r\n const h = ctx.canvas.height;\r\n ctx.beginPath();\r\n ctx.moveTo(r, 0);\r\n ctx.lineTo(w - r, 0);\r\n ctx.arcTo(w, 0, w, r, r);\r\n ctx.lineTo(w, h - r);\r\n ctx.arcTo(w, h, w - r, h, r);\r\n ctx.lineTo(r, h);\r\n ctx.arcTo(0, h, 0, h - r, r);\r\n ctx.lineTo(0, r);\r\n ctx.arcTo(0, 0, r, 0, r);\r\n // ctx.arcTo(w+r, h+2*r, w+r, 0, r);\r\n ctx.fill();\r\n\r\n ctx.fillStyle = parameters.fillColor || ARROW_TEXT_FORECOLOR;\r\n ctx.fillText(integral, (width - textMetrics.width) / 2, height / 2);\r\n ctx.strokeStyle = parameters.strokeColor || ARROW_TEXT_FORECOLOR;\r\n ctx.strokeText(integral, (width - textMetrics.width) / 2, height / 2);\r\n\r\n // ctx.font = `${fontSize - 5}px ` + parameters.fontName;\r\n // const denoMetrics = ctx.measureText(deno);\r\n // const numoMetrics = ctx.measureText(numo);\r\n // ctx.fillStyle = ARROW_TEXT_FORECOLOR;\r\n // ctx.fillRect(\r\n // ctx.canvas.width / 2 + 3,\r\n // ctx.canvas.height / 2 - 2,\r\n // denoMetrics.width,\r\n // 1\r\n // );\r\n\r\n // const denoMetrics = ctx.measureText(deno);\r\n // ctx.fillStyle = ARROW_TEXT_FORECOLOR;\r\n // ctx.fillRect(\r\n // ctx.canvas.width / 2 + 3,\r\n // ctx.canvas.height / 2 - 2,\r\n // denoMetrics.width,\r\n // 1\r\n // );\r\n\r\n // ctx.fillStyle = parameters.fillColor || ARROW_TEXT_FORECOLOR;\r\n // ctx.fillText(\r\n // numo,\r\n // ctx.canvas.width / 2 + 3 + (denoMetrics.width - numoMetrics.width) / 2,\r\n // height / 2 - 8\r\n // );\r\n // ctx.font = `${fontSize}px ` + parameters.fontName;\r\n // ctx.fillText(\r\n // \"''\",\r\n // ctx.canvas.width / 2 + 4 + denoMetrics.width,\r\n // height / 2 - 7\r\n // );\r\n // ctx.font = `${fontSize - 5}px ` + parameters.fontName;\r\n\r\n // ctx.strokeStyle = parameters.strokeColor || ARROW_TEXT_FORECOLOR;\r\n // ctx.strokeText(\r\n // numo,\r\n // ctx.canvas.width / 2 + 3 + (denoMetrics.width - numoMetrics.width) / 2,\r\n // height / 2 - 8\r\n // );\r\n\r\n // ctx.fillStyle = parameters.fillColor || ARROW_TEXT_FORECOLOR;\r\n // ctx.fillText(deno, ctx.canvas.width / 2 + 3, height / 2 + 8);\r\n // ctx.strokeStyle = parameters.strokeColor || ARROW_TEXT_FORECOLOR;\r\n // ctx.strokeText(deno, ctx.canvas.width / 2 + 3, height / 2 + 8);\r\n return canvas;\r\n}\r\n\r\nfunction removeObject(\r\n modifiedPath,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog\r\n) {\r\n let promises = [];\r\n switch (modifiedPath[3]) {\r\n case 'lines':\r\n // Here I remove the line with all its holes\r\n let lineID = modifiedPath[4];\r\n oldSceneData\r\n .getIn(['layers', layer.id, 'lines', lineID, 'holes'])\r\n .forEach(holeID => {\r\n removeHole(planData, layer.id, holeID);\r\n });\r\n removeLine(planData, layer.id, lineID);\r\n let mode = oldSceneData.mode;\r\n if (ARRAY_3D_MODES.includes(mode)) mode = MODE_IDLE_3D;\r\n else mode = MODE_IDLE;\r\n if (modifiedPath.length > 5) {\r\n // I removed an hole, so I should add the new line\r\n promises.push(\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n catalog,\r\n actions.linesActions\r\n )\r\n );\r\n layer.getIn(['lines', lineID, 'holes']).forEach(holeID => {\r\n promises.push(\r\n addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n catalog,\r\n actions.holesActions,\r\n mode\r\n )\r\n );\r\n });\r\n }\r\n break;\r\n case 'areas':\r\n if (modifiedPath.length === 5) {\r\n // I am removing an entire area\r\n removeArea(planData, layer.id, modifiedPath[4]);\r\n }\r\n break;\r\n case 'items':\r\n if (modifiedPath.length === 5) {\r\n // I am removing an item\r\n removeItem(\r\n planData,\r\n layer.id,\r\n modifiedPath[4],\r\n oldSceneData.getIn(['layers', layer.id]),\r\n layer\r\n );\r\n }\r\n break;\r\n }\r\n\r\n Promise.all(promises).then(values => updateBoundingBox(planData));\r\n}\r\n\r\nfunction removeLayer(layerId, planData) {\r\n let layerGraph = planData.sceneGraph.layers[layerId];\r\n\r\n for (let lineID in layerGraph.lines) removeLine(planData, layerId, lineID);\r\n for (let areaID in layerGraph.areas) removeArea(planData, layerId, areaID);\r\n for (let itemID in layerGraph.items) removeItem(planData, layerId, itemID);\r\n for (let holeID in layerGraph.holes) removeHole(planData, layerId, holeID);\r\n\r\n delete planData.sceneGraph.layers[layerId];\r\n}\r\n\r\nfunction removeHole(planData, layerId, holeID) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].holes[holeID]) {\r\n setTimeout(() => removeHole(planData, layerId, holeID), 100);\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].holes[holeID] = true;\r\n\r\n let hole3D = planData.sceneGraph.layers[layerId].holes[holeID];\r\n\r\n if (hole3D) {\r\n planData.plan.remove(hole3D);\r\n disposeObject(hole3D);\r\n delete planData.sceneGraph.layers[layerId].holes[holeID];\r\n delete planData.sceneGraph.LODs[holeID];\r\n hole3D = null;\r\n updateBoundingBox(planData, true);\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].holes[holeID] = false;\r\n}\r\n\r\nfunction removeLine(planData, layerId, lineID) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].lines[lineID]) {\r\n setTimeout(() => removeLine(planData, layerId, lineID), 100);\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].lines[lineID] = true;\r\n\r\n let line3D = planData.sceneGraph.layers[layerId].lines[lineID];\r\n\r\n if (line3D) {\r\n planData.plan.remove(line3D);\r\n disposeObject(line3D);\r\n delete planData.sceneGraph.layers[layerId].lines[lineID];\r\n delete planData.sceneGraph.LODs[lineID];\r\n line3D = null;\r\n updateBoundingBox(planData, true);\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].lines[lineID] = false;\r\n}\r\n\r\nfunction removeArea(planData, layerId, areaID) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].areas[areaID]) {\r\n setTimeout(() => removeArea(planData, layerId, areaID), 100);\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].areas[areaID] = true;\r\n\r\n let area3D = planData.sceneGraph.layers[layerId].areas[areaID];\r\n\r\n if (area3D) {\r\n planData.plan.remove(area3D);\r\n disposeObject(area3D);\r\n delete planData.sceneGraph.layers[layerId].areas[areaID];\r\n delete planData.sceneGraph.LODs[areaID];\r\n area3D = null;\r\n updateBoundingBox(planData, true);\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].areas[areaID] = false;\r\n}\r\n\r\nexport function removeItem(\r\n planData,\r\n layerId,\r\n itemID,\r\n oldSceneLayer = null,\r\n newSceneLayer = null\r\n) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].items[itemID]) {\r\n setTimeout(\r\n () => removeItem(planData, layerId, itemID, oldSceneLayer, newSceneLayer),\r\n 100\r\n );\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].items[itemID] = true;\r\n\r\n // The layer variable is layer that contains the deleted item.\r\n let layer = oldSceneLayer\r\n ? oldSceneLayer\r\n : planData.sceneData.getIn(['layers', layerId]);\r\n let item = layer.getIn(['items', itemID]); // deleted item.\r\n deleteCountertop(\r\n planData.sceneGraph.layers[layerId].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n planData.sceneGraph.layers[layerId].moldingGroups = deleteAllMolding(\r\n planData.sceneGraph.layers[layerId].moldingGroups,\r\n item,\r\n planData,\r\n layer,\r\n newSceneLayer\r\n );\r\n\r\n let item3D = planData.sceneGraph.layers[layerId].items[itemID];\r\n\r\n if (item3D) {\r\n planData.plan.remove(item3D);\r\n disposeObject(item3D);\r\n delete planData.sceneGraph.layers[layerId].items[itemID];\r\n delete planData.sceneGraph.LODs[itemID];\r\n item3D = null;\r\n updateBoundingBox(planData, true);\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].items[itemID] = false;\r\n}\r\n\r\nfunction removeItemWithoutItem(planData, layerId, itemID) {\r\n if (planData.sceneGraph.busyResources.layers[layerId].items[itemID]) {\r\n setTimeout(() => removeItemWithoutItem(planData, layerId, itemID), 100);\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].items[itemID] = true;\r\n\r\n let layer = planData.sceneData.getIn(['layers', layerId]);\r\n let item = layer.getIn(['items', itemID]);\r\n deleteCountertop(\r\n planData.sceneGraph.layers[layerId].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n let item3D = planData.sceneGraph.layers[layerId].items[itemID];\r\n\r\n if (item3D) {\r\n planData.plan.remove(item3D);\r\n disposeObject(item3D);\r\n item3D = null;\r\n updateBoundingBox(planData);\r\n delete planData.sceneGraph.layers[layerId].items[itemID];\r\n delete planData.sceneGraph.LODs[itemID];\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layerId].items[itemID] = false;\r\n}\r\n\r\n//TODO generate an area's replace if vertex has been changed\r\nfunction addObject(\r\n modifiedPath,\r\n layer,\r\n planData,\r\n actions,\r\n sceneData,\r\n oldSceneData,\r\n catalog,\r\n mode,\r\n toolObj\r\n) {\r\n if (modifiedPath.length >= 5) {\r\n let addPromise = null,\r\n addAction = null;\r\n switch (modifiedPath[3]) {\r\n case 'lines':\r\n if (\r\n modifiedPath[5] === 'holes' &&\r\n scene_mode !== 'MODE_DRAWING_HOLE_3D' &&\r\n scene_mode !== 'MODE_DRAGGING_HOLE_3D'\r\n ) {\r\n removeLine(planData, layer.id, modifiedPath[4]);\r\n }\r\n if (\r\n scene_mode !== 'MODE_DRAWING_HOLE_3D' &&\r\n scene_mode !== 'MODE_DRAGGING_HOLE_3D'\r\n ) {\r\n addPromise = addLine;\r\n }\r\n addAction = actions.linesActions;\r\n break;\r\n case 'areas':\r\n addPromise = addArea;\r\n addAction = actions.areaActions;\r\n break;\r\n case 'items':\r\n addPromise = addItem;\r\n addAction = actions.itemsActions;\r\n break;\r\n case 'holes':\r\n addPromise = addHole;\r\n addAction = actions.holesActions;\r\n break;\r\n }\r\n if (addPromise) {\r\n // if( addPromise(sceneData, planData, layer, modifiedPath[4], catalog, addAction) === undefined ) {\r\n // return;\r\n // }\r\n addPromise(\r\n sceneData,\r\n planData,\r\n layer,\r\n modifiedPath[4],\r\n catalog,\r\n addAction,\r\n mode,\r\n toolObj\r\n ).then(() => updateBoundingBox(planData));\r\n }\r\n }\r\n}\r\n\r\nfunction addHole(\r\n sceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n catalog,\r\n holesActions,\r\n mode,\r\n toolObj = null\r\n) {\r\n let holeData = layer.getIn(['holes', holeID]);\r\n\r\n // Create the hole object\r\n return holeData === undefined\r\n ? ''\r\n : catalog\r\n .getElement(holeData.type)\r\n .render3D(holeData, layer, sceneData)\r\n .then(object => {\r\n if (object instanceof Three.LOD) {\r\n planData.sceneGraph.LODs[holeID] = object;\r\n }\r\n\r\n object.children.forEach(item => {\r\n const { name } = item;\r\n item.castShadow = true;\r\n let texture;\r\n if (name.includes('_wood')) {\r\n texture = loadTexture('/assets/img/texture/white1px.jpg');\r\n } else if (name.includes('_glass')) {\r\n const material = new Three.MeshPhysicalMaterial({\r\n roughness: 0.5,\r\n transmission: 1,\r\n thickness: 0.5, // Add refraction!\r\n transparency: 0.6\r\n });\r\n item.material = material;\r\n return item;\r\n } else if (name.includes('_steel')) {\r\n texture = loadTexture('/assets/img/texture/steel.jpg');\r\n } else if (name.includes('_glass')) {\r\n const material = new Three.MeshPhysicalMaterial({\r\n roughness: 0.5,\r\n transmission: 1,\r\n thickness: 0.5, // Add refraction!\r\n transparency: 0.6\r\n });\r\n item.material = material;\r\n return item;\r\n }\r\n });\r\n\r\n if (holeData.selected) {\r\n // if object is drawing in 3d mode and selected\r\n if (holeData.type === 'FrameLess Doorway') {\r\n let x, y, z;\r\n x = holeData.getIn(['properties', 'width', 'length']) || 0;\r\n y = holeData.getIn(['properties', 'height', 'length']) || 0;\r\n z = holeData.getIn(['properties', 'thickness', 'length']) || 0;\r\n let moveBox = new Three.BoxGeometry(x, y, z);\r\n let mBox = new Three.Mesh(\r\n moveBox,\r\n new Three.MeshBasicMaterial({\r\n color: 0x99c3fb,\r\n side: Three.DoubleSide,\r\n transparent: true,\r\n opacity: 0.4\r\n })\r\n );\r\n mBox.name = 'FrameLessDoormBox';\r\n mBox.renderOrder = 1;\r\n if (mBox !== undefined) {\r\n object.add(mBox);\r\n }\r\n } else {\r\n let boundingBox = GeomUtils.baseBox3FromObject(object);\r\n if (boundingBox === undefined) return;\r\n let max = boundingBox.max;\r\n if (!Number.isFinite(max.x)) return;\r\n let transGroup = new Three.Group();\r\n\r\n const extrudeSettings = {\r\n depth: 1,\r\n bevelEnabled: true,\r\n bevelSegments: 2,\r\n steps: 2,\r\n bevelSize: 1,\r\n bevelThickness: 1\r\n };\r\n\r\n let triangleShape = new Three.Shape()\r\n .moveTo(max.x, 15) // A\r\n .lineTo(max.x + 6, 15) // B\r\n .lineTo(max.x + 6, 30) // C\r\n .lineTo(max.x + 16, 0) // D\r\n .lineTo(max.x + 6, -29) // E\r\n .lineTo(max.x + 6, -15) // F\r\n .lineTo(max.x, -15) // G\r\n .lineTo(max.x, 15); // close path\r\n let transHole_Right = GeomUtils.addShape(\r\n triangleShape,\r\n extrudeSettings,\r\n scene_mode !== 'MODE_DRAGGING_HOLE_3D' ? 0x000000 : 0x99c3fb,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1\r\n );\r\n transHole_Right.name = 'transHole_Right';\r\n transGroup.add(transHole_Right);\r\n triangleShape = new Three.Shape()\r\n .moveTo(-max.x, 15) // A\r\n .lineTo(-(max.x + 6), 15) // B\r\n .lineTo(-(max.x + 6), 30) // C\r\n .lineTo(-(max.x + 16), 0) // D\r\n .lineTo(-(max.x + 6), -29) // E\r\n .lineTo(-(max.x + 6), -15) // F\r\n .lineTo(-max.x, -15) // G\r\n .lineTo(-max.x, 15); // close path\r\n let transHole_Left = GeomUtils.addShape(\r\n triangleShape,\r\n extrudeSettings,\r\n scene_mode !== 'MODE_DRAGGING_HOLE_3D' ? 0x000000 : 0x99c3fb,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1\r\n );\r\n transHole_Left.name = 'transHole_Left';\r\n transGroup.add(transHole_Left);\r\n transGroup.scale.set(\r\n 1 / object.scale.x,\r\n 1 / object.scale.y,\r\n 1 / object.scale.z\r\n );\r\n object.add(transGroup);\r\n }\r\n }\r\n\r\n let pivot = new Three.Object3D();\r\n pivot.name = 'pivot';\r\n if (isElevationView(mode)) {\r\n let lineID = holeData.getIn(['line']);\r\n if (planData.sceneGraph.layers['layer-1'].lines[lineID].visible) {\r\n pivot.visible = true;\r\n } else {\r\n pivot.visible = false;\r\n }\r\n object.traverse(obj => {\r\n replaceMeshesWithLineSegments(obj);\r\n });\r\n }\r\n pivot.add(object);\r\n\r\n let line = layer.getIn(['lines', holeData.line]);\r\n\r\n // First of all I need to find the vertices of this line\r\n let vertex0 = layer.vertices.get(line.vertices.get(0));\r\n let vertex1 = layer.vertices.get(line.vertices.get(1));\r\n let offset = holeData.offset;\r\n\r\n if (vertex0.x > vertex1.x) {\r\n let tmp = vertex0;\r\n vertex0 = vertex1;\r\n vertex1 = tmp;\r\n offset = 1 - offset;\r\n }\r\n\r\n let distance = Math.sqrt(\r\n Math.pow(vertex0.x - vertex1.x, 2) +\r\n Math.pow(vertex0.y - vertex1.y, 2)\r\n );\r\n let alpha = Math.asin((vertex1.y - vertex0.y) / distance);\r\n\r\n let boundingBox = new Three.Box3().setFromObject(pivot);\r\n let center = [\r\n (boundingBox.max.x - boundingBox.min.x) / 2 + boundingBox.min.x,\r\n (boundingBox.max.y - boundingBox.min.y) / 2 + boundingBox.min.y,\r\n (boundingBox.max.z - boundingBox.min.z) / 2 + boundingBox.min.z\r\n ];\r\n\r\n let holeAltitude = holeData.properties.getIn(['altitude', 'length']);\r\n let holeHeight = holeData.properties.getIn(['height', 'length']);\r\n\r\n pivot.rotation.y = alpha;\r\n pivot.position.x =\r\n vertex0.x +\r\n distance * offset * Math.cos(alpha) -\r\n center[0] * Math.cos(alpha) -\r\n center[2] * Math.sin(alpha);\r\n pivot.position.y =\r\n holeAltitude + holeHeight / 2 - center[1] + layer.altitude;\r\n pivot.position.z =\r\n -vertex0.y -\r\n distance * offset * Math.sin(alpha) -\r\n center[2] * Math.cos(alpha) +\r\n center[0] * Math.sin(alpha);\r\n pivot.userData.type = 'hole';\r\n pivot.userData.layerId = layer.id;\r\n pivot.userData.holeId = holeData.id;\r\n\r\n // if holeId is existing, remove it first\r\n let childLen = planData.plan.children.length;\r\n let children = [];\r\n for (let i = 0; i < childLen; i++) {\r\n if (planData.plan.children[i].userData.holeId != holeData.id)\r\n children.push(planData.plan.children[i]);\r\n }\r\n planData.plan.children = children;\r\n\r\n planData.plan.add(pivot);\r\n planData.sceneGraph.layers[layer.id].holes[holeData.id] = pivot;\r\n\r\n applyInteract(pivot, () => {\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return holesActions.selectHole(layer.id, holeData.id);\r\n });\r\n\r\n let opacity = layer.opacity;\r\n if (holeData.selected) {\r\n opacity = 1;\r\n }\r\n applyOpacity(pivot, opacity);\r\n });\r\n}\r\n\r\nfunction updateHole(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n holeID,\r\n differences,\r\n catalog,\r\n holesActions,\r\n selfDestroy,\r\n selfBuild\r\n) {\r\n let hole = layer.getIn(['holes', holeID]);\r\n let oldHole = oldSceneData.getIn(['layers', layer.id, 'holes', holeID]);\r\n let mesh = planData.sceneGraph.layers[layer.id].holes[holeID];\r\n\r\n if (!mesh) return null;\r\n\r\n return catalog\r\n .getElement(hole.type)\r\n .updateRender3D(\r\n hole,\r\n layer,\r\n sceneData,\r\n mesh,\r\n oldHole,\r\n differences,\r\n selfDestroy,\r\n selfBuild\r\n );\r\n}\r\n\r\nfunction addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n catalog,\r\n linesActions,\r\n mode = null,\r\n toolObj = null\r\n) {\r\n if (planData.sceneGraph.busyResources.layers[layer.id].lines[lineID]) {\r\n setTimeout(\r\n () =>\r\n addLine(\r\n sceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n catalog,\r\n linesActions,\r\n mode\r\n ),\r\n 100\r\n );\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layer.id].lines[lineID] = true;\r\n\r\n let line = layer.getIn(['lines', lineID]);\r\n line.userData.stateMode = scene_mode;\r\n\r\n // First of all I need to find the vertices of this line\r\n let vertex0 = layer.vertices.get(line.vertices.get(0));\r\n let vertex1 = layer.vertices.get(line.vertices.get(1));\r\n\r\n if (vertex0.x > vertex1.x) {\r\n let tmp = vertex0;\r\n vertex0 = vertex1;\r\n vertex1 = tmp;\r\n }\r\n\r\n return catalog\r\n .getElement(line.type)\r\n .render3D(line, layer, sceneData, mode)\r\n .then(line3D => {\r\n if (line3D === null) {\r\n return;\r\n }\r\n\r\n if (line3D instanceof Three.LOD) {\r\n planData.sceneGraph.LODs[line.id] = line3D;\r\n }\r\n\r\n let pivot = new Three.Object3D();\r\n pivot.name = 'pivot';\r\n pivot.add(line3D);\r\n\r\n pivot.position.x = (vertex0.x + vertex1.x) / 2;\r\n pivot.position.y = layer.altitude;\r\n pivot.position.z = -(vertex0.y + vertex1.y) / 2;\r\n pivot.userData.type = 'line';\r\n\r\n // In elevation view, show(visible = true) just selected wall pivot. If not, hidden(visible = false)\r\n if (isElevationView(mode)) {\r\n let lineVisible;\r\n if (line.selected) {\r\n pivot.traverse(obj => {\r\n replaceMeshesWithLineSegments(obj);\r\n });\r\n lineVisible = true;\r\n } else {\r\n lineVisible = false;\r\n }\r\n pivot.visible = lineVisible;\r\n }\r\n\r\n pivot.userData.layerId = layer.id;\r\n pivot.userData.lineId = lineID;\r\n\r\n planData.plan.add(pivot);\r\n planData.sceneGraph.layers[layer.id].lines[lineID] = pivot;\r\n\r\n applyInteract(pivot, () => {\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return linesActions.selectLine(layer.id, line.id);\r\n });\r\n\r\n let opacity = layer.opacity;\r\n if (line.selected) {\r\n opacity = 1;\r\n }\r\n applyOpacity(pivot, opacity);\r\n planData.sceneGraph.busyResources.layers[layer.id].lines[lineID] = false;\r\n });\r\n}\r\n\r\nfunction updateLine(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n lineID,\r\n differences,\r\n catalog,\r\n linesActions,\r\n selfDestroy,\r\n selfBuild\r\n) {\r\n let line = layer.getIn(['lines', lineID]);\r\n let oldLine = oldSceneData.getIn(['layers', layer.id, 'lines', lineID]);\r\n let mesh = planData.sceneGraph.layers[layer.id].lines[lineID];\r\n\r\n if (!mesh) return null;\r\n\r\n return catalog\r\n .getElement(line.type)\r\n .updateRender3D(\r\n line,\r\n layer,\r\n sceneData,\r\n mesh,\r\n oldLine,\r\n differences,\r\n selfDestroy,\r\n selfBuild\r\n );\r\n}\r\n\r\nfunction addArea(\r\n sceneData,\r\n planData,\r\n layer,\r\n areaID,\r\n catalog,\r\n areaActions,\r\n mode,\r\n toolObj = null\r\n) {\r\n if (planData.sceneGraph.busyResources.layers[layer.id].areas[areaID]) {\r\n setTimeout(\r\n () =>\r\n addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode),\r\n 100\r\n );\r\n return;\r\n }\r\n\r\n planData.sceneGraph.busyResources.layers[layer.id].areas[areaID] = true;\r\n\r\n let area = layer.getIn(['areas', areaID]);\r\n let interactFunction = () => areaActions.selectArea(layer.id, areaID);\r\n\r\n return catalog\r\n .getElement(area.type)\r\n .render3D(area, layer, sceneData)\r\n .then(area3D => {\r\n if (area3D instanceof Three.LOD) {\r\n planData.sceneGraph.LODs[areaID] = area3D;\r\n }\r\n\r\n let pivot = new Three.Object3D();\r\n\r\n let floorSupport = area3D.userData.floorSupport;\r\n floorSupport.onBeforeRender = function (\r\n renderer,\r\n scene,\r\n camera,\r\n geometry,\r\n material,\r\n group\r\n ) {\r\n var floorMesh = this.parent.getObjectByName('floor');\r\n\r\n if (geometry.attributes.normal === undefined)\r\n return (floorMesh.visible = false);\r\n geometry.computeVertexNormals();\r\n\r\n var normals = geometry.attributes.normal.array;\r\n var pos = new Three.Vector4(0, 0, 0, 1);\r\n pos = pos.applyMatrix4(this.matrixWorld);\r\n pos = pos.applyMatrix4(camera.matrixWorldInverse);\r\n\r\n var normal = new Three.Vector4(normals[0], normals[1], normals[2], 0);\r\n normal = normal.applyMatrix4(this.matrixWorld);\r\n normal = normal.applyMatrix4(camera.matrixWorldInverse);\r\n\r\n if (floorMesh) {\r\n if (normal.dot(pos) <= 0) {\r\n floorMesh.visible = true;\r\n } else {\r\n floorMesh.visible = false;\r\n }\r\n }\r\n };\r\n\r\n let ceil = area3D.userData.floorSupport.clone();\r\n let ceilMaterial = new Three.MeshStandardMaterial({\r\n color: 0xdfdfdf,\r\n side: Three.BackSide,\r\n roughness: 0.3,\r\n metalness: 0.4\r\n });\r\n ceil.name = 'ceil';\r\n ceil.material = ceilMaterial;\r\n let vertices = [];\r\n let lines = [];\r\n let height = 100;\r\n area.vertices.forEach(data => {\r\n vertices.push(data);\r\n });\r\n layer.lines.forEach(data => {\r\n lines.push(data);\r\n });\r\n for (let i = 0; i < lines.length; i++) {\r\n let data = lines[i];\r\n let realVec = [];\r\n data.vertices.forEach(vec => {\r\n realVec.push(vec);\r\n });\r\n if (vertices.includes(realVec[0]) && vertices.includes(realVec[1])) {\r\n height = convert(layer.ceilHeight)\r\n .from(layer.unit)\r\n .to(UNIT_CENTIMETER);\r\n // height = data.properties.getIn([\"height\", \"length\"]);\r\n break;\r\n }\r\n }\r\n ceil.translateZ(\r\n convert(layer.ceilHeight).from(layer.unit).to(UNIT_CENTIMETER)\r\n );\r\n pivot.name = 'pivot';\r\n pivot.add(area3D);\r\n pivot.add(area3D.userData.floorSupport);\r\n pivot.add(ceil);\r\n pivot.position.y = layer.altitude;\r\n\r\n // if elevation view, show just wall - not show floor and ceil\r\n if (isElevationView(mode)) pivot.visible = false;\r\n\r\n planData.plan.add(pivot);\r\n planData.sceneGraph.layers[layer.id].areas[areaID] = pivot;\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n applyInteract(pivot, interactFunction);\r\n\r\n let opacity = layer.opacity;\r\n if (area.selected) {\r\n opacity = 1;\r\n }\r\n\r\n applyOpacity(pivot, opacity);\r\n planData.sceneGraph.busyResources.layers[layer.id].areas[areaID] = false;\r\n });\r\n}\r\n\r\nfunction updateArea(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n areaID,\r\n differences,\r\n catalog,\r\n areaActions,\r\n selfDestroy,\r\n selfBuild\r\n) {\r\n let area = layer.getIn(['areas', areaID]);\r\n let oldArea = oldSceneData.getIn(['layers', layer.id, 'areas', areaID]);\r\n let mesh = planData.sceneGraph.layers[layer.id].areas[areaID];\r\n\r\n if (!mesh) return null;\r\n\r\n return catalog\r\n .getElement(area.type)\r\n .updateRender3D(\r\n area,\r\n layer,\r\n sceneData,\r\n mesh,\r\n oldArea,\r\n differences,\r\n selfDestroy,\r\n selfBuild\r\n );\r\n}\r\n\r\nfunction addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n itemID,\r\n catalog,\r\n itemsActions,\r\n mode = null,\r\n toolObj = null,\r\n rItem = null,\r\n bAddMolding = true\r\n) {\r\n if (planData.sceneGraph.busyResources.layers[layer.id].items[itemID]) {\r\n setTimeout(\r\n () =>\r\n addItem(\r\n sceneData,\r\n planData,\r\n layer,\r\n itemID,\r\n catalog,\r\n itemsActions,\r\n mode,\r\n toolObj,\r\n rItem,\r\n bAddMolding\r\n ),\r\n 100\r\n );\r\n return;\r\n }\r\n let item = layer.getIn(['items', itemID]);\r\n if (item.doorStyle === null) {\r\n console.log(item.name + 's doorStyle is null!');\r\n return;\r\n }\r\n if (!sceneData.loadFlag && scene_mode == MODE_DRAWING_ITEM_3D) {\r\n itemsActions.toggleLoadingCabinet();\r\n }\r\n let catalogElement = catalog.getElement(item.type);\r\n if (!catalogElement)\r\n catalogElement = catalog.getElement(\r\n returnReplaceableDeepSearchType(item.type)\r\n );\r\n if (!catalogElement) return false;\r\n return catalogElement.render3D(item, layer, sceneData, mode).then(item3D => {\r\n if (item3D instanceof Three.LOD) {\r\n planData.sceneGraph.LODs[itemID] = item3D;\r\n }\r\n\r\n if (rItem !== null) {\r\n planData.plan.remove(rItem);\r\n disposeObject(rItem);\r\n rItem = null;\r\n }\r\n let pivot = new Three.Object3D();\r\n pivot.name = 'pivot';\r\n pivot.add(item3D);\r\n if (pivot) {\r\n let mBoxColor = 0x99c3fb;\r\n let _item = item.toJS();\r\n if (\r\n _item.doorStyle.doorStyles !== undefined &&\r\n _item.doorStyle.doorStyles.cds\r\n ) {\r\n if (showYelloBox(_item)) {\r\n mBoxColor = 'rgba(232,187,47,1)';\r\n } else {\r\n pivot.children[0].children.forEach(pivotElement => {\r\n pivotElement.visible = false;\r\n });\r\n }\r\n let mBox = GeomUtils.makeMBoxfromObject(pivot, mBoxColor);\r\n let warningObj = createWarningObject();\r\n warningObj.position.set(\r\n 0,\r\n item.properties.get('height').get('length') / 3,\r\n 0\r\n );\r\n if (mBox) {\r\n mBox.add(warningObj);\r\n pivot.add(mBox);\r\n }\r\n }\r\n }\r\n\r\n if (item.selected) {\r\n let tranformControl = item3D.children[item3D.children.length - 1];\r\n transformBox =\r\n tranformControl.children[tranformControl.children.length - 1];\r\n }\r\n\r\n pivot.rotation.y = (item.rotation * Math.PI) / 180 + Math.PI;\r\n // pivot.rotation.y = item.rotation;\r\n pivot.position.x = item.x;\r\n pivot.position.y = layer.altitude;\r\n pivot.position.z = -item.y;\r\n\r\n applyInteract(item3D, () => {\r\n // closes the setting dialog\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return itemsActions.selectItem(layer.id, item.id);\r\n });\r\n\r\n let opacity = layer.opacity;\r\n if (item.selected) {\r\n opacity = 1;\r\n fVLine = [];\r\n let TransformGizmo = item3D.children[item3D.children.length - 1];\r\n TransformGizmo.children.forEach(child => {\r\n if (child.type === 'Line' && child.geometry.attributes !== undefined)\r\n fVLine.push(child);\r\n });\r\n setTimeout(() => {\r\n getDistances();\r\n }, 50);\r\n }\r\n\r\n applyOpacity(pivot, opacity);\r\n pivot.userData.type = 'item';\r\n pivot.userData.layerId = layer.id;\r\n pivot.userData.itemId = item.id;\r\n\r\n /**\r\n *\r\n * @param {array} itemRect Array of item's 4 side lines\r\n * @returns {boolean} true (if item is snapped into wall) or false (if item is not snapped into wall)\r\n */\r\n //////////////////\r\n ///// wall ///////\r\n // 3 ***** 2\r\n // * *\r\n // * item *\r\n // * *\r\n // 0 ***** 1\r\n\r\n const getItemVisible = itemRect => {\r\n let selectedLine = layer.lines.get(layer.selected.lines.toJS()[0]);\r\n let itemVisible = false;\r\n let vertex0 = layer.vertices.get(selectedLine.vertices.get(0));\r\n let vertex1 = layer.vertices.get(selectedLine.vertices.get(1));\r\n const l0 = { x: vertex0.x, y: vertex0.y };\r\n const l1 = { x: vertex1.x, y: vertex1.y };\r\n const r0 = itemRect.rect[0];\r\n const r1 = itemRect.rect[1];\r\n const r2 = itemRect.rect[2];\r\n const r3 = itemRect.rect[3];\r\n\r\n // it doesn't need consider distance between item's line01 (frontside - it has door) and wall\r\n let delta12 = GeometryUtils.distancePointFromLineSegment(\r\n l0,\r\n l1,\r\n (r1.x + r2.x) / 2,\r\n (r1.y + r2.y) / 2\r\n ); // distance between item's line12 and wall\r\n let delta23 = GeometryUtils.distancePointFromLineSegment(\r\n l0,\r\n l1,\r\n (r2.x + r3.x) / 2,\r\n (r2.y + r3.y) / 2\r\n ); // distance between item's line23 and wall\r\n let delta30 = GeometryUtils.distancePointFromLineSegment(\r\n l0,\r\n l1,\r\n (r3.x + r0.x) / 2,\r\n (r3.y + r0.y) / 2\r\n ); // distance between item's line30 and wall\r\n\r\n if (\r\n delta12 < DISTANCE_EPSILON ||\r\n delta23 < DISTANCE_EPSILON ||\r\n delta30 < DISTANCE_EPSILON\r\n ) {\r\n itemVisible = true;\r\n }\r\n return itemVisible;\r\n };\r\n let val = {\r\n pos: { x: item.x, y: item.y },\r\n rotRad: (item.rotation / 180) * Math.PI\r\n };\r\n let catid = item.type;\r\n let cat = catalog.elements[catid];\r\n if (!cat) cat = catalog.elements[returnReplaceableDeepSearchType(catid)];\r\n let width = convert(item.properties.getIn(['width', '_length']))\r\n .from('in')\r\n .to(sceneData.unit);\r\n let height = convert(item.properties.getIn(['height', '_length']))\r\n .from('in')\r\n .to(sceneData.unit);\r\n let depth = convert(item.properties.getIn(['depth', '_length']))\r\n .from('in')\r\n .to(sceneData.unit);\r\n val.size = { width, height, depth };\r\n val.layoutpos = cat.info.layoutpos;\r\n val.is_corner = cat.info.is_corner;\r\n val.item = item;\r\n let calcrect = GeometryUtils.getCalcRectFromItem3D(val);\r\n\r\n // In elevation view, determin if item show or not\r\n if (isElevationView(mode)) pivot.visible = getItemVisible(calcrect);\r\n\r\n planData.plan.add(pivot);\r\n planData.sceneGraph.layers[layer.id].items[item.id] = pivot;\r\n //In a 3D view, merge each couterTop of equal height into a single conuterTop.\r\n if (!isElevationView(mode)) {\r\n addCountertop(\r\n planData.sceneGraph.layers[layer.id].countertops,\r\n item,\r\n planData,\r\n layer\r\n );\r\n }\r\n if (\r\n bAddMolding &&\r\n item.category === 'cabinet' &&\r\n ((isElevationView(mode) && getItemVisible(calcrect)) ||\r\n !isElevationView(mode))\r\n ) {\r\n planData.sceneGraph.layers[layer.id].moldingGroups =\r\n addMolding(\r\n planData.sceneGraph.layers[layer.id].moldingGroups,\r\n item,\r\n planData,\r\n layer,\r\n itemsActions,\r\n mode\r\n ) || planData.sceneGraph.layers[layer.id].moldingGroups;\r\n }\r\n if (pivot) {\r\n // update the tool object's position to selected object's position\r\n let selectedItem =\r\n planData.sceneGraph.layers[sceneData.selectedLayer].items[itemID];\r\n let itemPos = selectedItem.position.clone();\r\n if (!isEmpty(toolObj)) {\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selectedItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selectedItem.properties.get('height').get('length')\r\n : planData.plan.position.y + selectedItem.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n }\r\n pivot.children[0].children.forEach(pivotElement => {\r\n pivotElement.visible = true;\r\n });\r\n if (pivot.children.length > 1) {\r\n let _item = item.toJS();\r\n if (_item.doorStyle.doorStyles !== undefined) {\r\n if (_item.category === 'cabinet') {\r\n if (\r\n _item.doorStyle.doorStyles.cds.some(\r\n element => element.itemID === item.itemID\r\n )\r\n ) {\r\n pivot.children.pop();\r\n }\r\n } else {\r\n pivot.children.pop();\r\n }\r\n }\r\n }\r\n }\r\n applyInteract(pivot, () => {\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n return itemsActions.selectItem(layer.id, item.id);\r\n });\r\n setTimeout(() => getDistances(layer), 100);\r\n if (!sceneData.loadFlag && scene_mode == MODE_DRAWING_ITEM_3D) {\r\n itemsActions.endLoading();\r\n itemsActions.toggleLoadingCabinet();\r\n }\r\n });\r\n}\r\n\r\nfunction updateItem(\r\n sceneData,\r\n oldSceneData,\r\n planData,\r\n layer,\r\n itemID,\r\n differences,\r\n catalog,\r\n itemsActions,\r\n selfDestroy,\r\n selfBuild\r\n) {\r\n let item = layer.getIn(['items', itemID]);\r\n let oldItem = oldSceneData.getIn(['layers', layer.id, 'items', itemID]);\r\n let mesh = planData.sceneGraph.layers[layer.id].items[itemID];\r\n\r\n if (!mesh) return null;\r\n\r\n return catalog\r\n .getElement(item.type)\r\n .updateRender3D(\r\n item,\r\n layer,\r\n sceneData,\r\n mesh,\r\n oldItem,\r\n differences,\r\n selfDestroy,\r\n selfBuild\r\n );\r\n}\r\n\r\n// Apply interact function to children of an Object3D\r\nfunction applyInteract(object, interactFunction) {\r\n document.getElementById('setting_dialog').style.display = 'none';\r\n object.traverse(child => {\r\n if (child instanceof Three.Mesh) {\r\n child.interact = interactFunction;\r\n }\r\n });\r\n}\r\n\r\n// Apply opacity to children of an Object3D\r\nfunction applyOpacity(object, opacity) {\r\n object.traverse(child => {\r\n if (child instanceof Three.Mesh) {\r\n if (child.material && !Array.isArray(child.material)) {\r\n // child.material.materials.forEach(materialChild => {\r\n // materialChild.transparent = true;\r\n // if (materialChild.maxOpacity) {\r\n // materialChild.opacity = Math.min(materialChild.maxOpacity, opacity);\r\n // } else if (materialChild.opacity && materialChild.opacity > opacity) {\r\n // materialChild.maxOpacity = materialChild.opacity;\r\n // materialChild.opacity = opacity;\r\n // }\r\n // });\r\n } else if (child.material instanceof Array) {\r\n child.material.forEach(material => {\r\n material.transparent = true;\r\n if (material.maxOpacity) {\r\n material.opacity = Math.min(material.maxOpacity, opacity);\r\n } else if (material.opacity && material.opacity > opacity) {\r\n material.maxOpacity = material.opacity;\r\n material.opacity = opacity;\r\n }\r\n });\r\n } else {\r\n child.material.transparent = true;\r\n if (child.material.maxOpacity) {\r\n child.material.opacity = Math.min(child.material.maxOpacity, opacity);\r\n } else if (child.material.opacity && child.material.opacity > opacity) {\r\n child.material.maxOpacity = child.material.opacity;\r\n child.material.opacity = opacity;\r\n }\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction updateBoundingBox(planData, flag = false, mode) {\r\n if (scene_mode == MODE_DRAWING_ITEM_3D) return;\r\n let newBoundingBox = new Three.Box3().setFromObject(planData.plan);\r\n if (\r\n isFinite(newBoundingBox.max.x) &&\r\n isFinite(newBoundingBox.min.x) &&\r\n isFinite(newBoundingBox.max.y) &&\r\n isFinite(newBoundingBox.min.y) &&\r\n isFinite(newBoundingBox.max.z) &&\r\n isFinite(newBoundingBox.min.z)\r\n ) {\r\n let newCenter = new Three.Vector3(\r\n (newBoundingBox.max.x - newBoundingBox.min.x) / 2 + newBoundingBox.min.x,\r\n (newBoundingBox.max.y - newBoundingBox.min.y) / 2 + newBoundingBox.min.y,\r\n (newBoundingBox.max.z - newBoundingBox.min.z) / 2 + newBoundingBox.min.z\r\n );\r\n if (!flag) {\r\n planData.plan.position.sub(newCenter);\r\n planData.grid.position.sub(newCenter);\r\n if (isElevationView(mode)) {\r\n planData.cam.position.sub(newCenter);\r\n }\r\n }\r\n\r\n newBoundingBox.min.sub(newCenter);\r\n newBoundingBox.max.sub(newCenter);\r\n\r\n planData.boundingBox = newBoundingBox;\r\n }\r\n}\r\n\r\n/**\r\n * Filter the array of diffs\r\n * @param diffArray\r\n * @param sceneData\r\n * @param oldSceneData\r\n * @returns {Array}\r\n */\r\nfunction filterDiffs(diffArray, sceneData, oldSceneData) {\r\n return minimizeRemoveDiffsWhenSwitchingLayers(\r\n minimizeChangePropertiesAfterSelectionsDiffs(\r\n minimizeChangePropertiesDiffs(diffArray, sceneData, oldSceneData),\r\n sceneData,\r\n oldSceneData\r\n ),\r\n sceneData,\r\n oldSceneData\r\n );\r\n}\r\n\r\n/**\r\n * Reduces the number of remove diffs when switching an hidden layer\r\n * @param diffArray the array of the diffs\r\n * @param sceneData\r\n * @param oldSceneData\r\n * @returns {Array}\r\n */\r\nfunction minimizeRemoveDiffsWhenSwitchingLayers(\r\n diffArray,\r\n sceneData,\r\n oldSceneData\r\n) {\r\n let foundDiff;\r\n let i;\r\n for (i = 0; i < diffArray.length && !foundDiff; i++) {\r\n if (diffArray[i].path[1] === 'selectedLayer') {\r\n foundDiff = diffArray[i];\r\n }\r\n }\r\n\r\n if (foundDiff) {\r\n if (!sceneData.getIn(['layers', oldSceneData.selectedLayer, 'visible'])) {\r\n return diffArray.filter(({ op, path }) => {\r\n return (\r\n !(\r\n path[path.length - 1] === 'selected' &&\r\n path[1] === 'layers' &&\r\n path[2] === oldSceneData.selectedLayer\r\n ) &&\r\n !(op === 'remove' && path.indexOf(oldSceneData.selectedLayer) !== -1)\r\n );\r\n });\r\n }\r\n }\r\n\r\n return diffArray;\r\n}\r\n\r\n/**\r\n * Reduces the number of change properties diffs for selected elements\r\n * @param diffArray the array of the diffs\r\n * @param sceneData\r\n * @param oldSceneData\r\n * @returns {Array}\r\n */\r\nfunction minimizeChangePropertiesAfterSelectionsDiffs(\r\n diffArray,\r\n sceneData,\r\n oldSceneData\r\n) {\r\n let idsFound = {};\r\n diffArray.forEach(({ path }) => {\r\n if (path[5] === 'selected') {\r\n idsFound[path[4]] = path[4];\r\n }\r\n });\r\n\r\n return diffArray.filter(({ path }) => {\r\n if (path[5] === 'properties') {\r\n return idsFound[path[4]] ? false : true;\r\n }\r\n return true;\r\n });\r\n}\r\n\r\n/**\r\n * Reduces the number of change properties diffs\r\n * @param diffArray the array of the diffs\r\n * @param sceneData\r\n * @param oldSceneData\r\n * @returns {Array}\r\n */\r\nfunction minimizeChangePropertiesDiffs(diffArray, sceneData, oldSceneData) {\r\n let idsFound = {};\r\n return diffArray.filter(({ path }) => {\r\n if (path[5] === 'properties') {\r\n return idsFound[path[4]] ? false : (idsFound[path[4]] = true);\r\n } else if (path[5] === 'misc') {\r\n // Remove misc changes\r\n return false;\r\n }\r\n return true;\r\n });\r\n}\r\n\r\n// countertops:\r\n// o id:\r\n// o items: [itemid]\r\n// o ct3d: 3d object\r\n// o catid\r\n// o pos\r\n// o rotRad\r\n// o size\r\nfunction createCTFromItem(item, unit, catalog) {\r\n return createCTFromItems([item], unit, catalog);\r\n}\r\n\r\nfunction createCTFromItems(items, unit, catalog) {\r\n let item0 = items[0];\r\n let item1 = items[items.length - 1];\r\n let CTId = IDBroker.acquireID();\r\n let ct3d = null;\r\n let catid = item0.type;\r\n let pos = { x: (item0.x + item1.x) / 2, y: (item0.y + item1.y) / 2 };\r\n let rotRad = (item0.rotation / 180) * Math.PI;\r\n\r\n let cat = catalog.elements[catid];\r\n // let width = convert(item0.properties.getIn(['width', '_length'])).from('in').to('cm');\r\n // let depth = convert(item0.properties.getIn(['depth', '_length'])).from('in').to('cm');\r\n // let height = convert(item0.properties.getIn(['height', '_length'])).from('in').to('cm');\r\n let width = item0.properties.get('width').get('_length');\r\n let widthUnit = item0.properties.get('width').get('_unit') || 'cm';\r\n width = convert(width).from(widthUnit).to('cm');\r\n\r\n let depth = item0.properties.get('depth').get('_length');\r\n let depthUnit = item0.properties.get('depth').get('_unit') || 'cm';\r\n depth = convert(depth).from(depthUnit).to('cm');\r\n\r\n let height = item0.properties.get('height').get('_length');\r\n let heightUnit = item0.properties.get('height').get('_unit') || 'cm';\r\n height = convert(height).from(heightUnit).to('cm');\r\n let size = { width: width * items.length, depth, height };\r\n\r\n return { id: CTId, items, ct3d, catid, pos, rotRad, size };\r\n}\r\n\r\nexport function createMDFromItem(item, lines, molding) {\r\n let MDId = IDBroker.acquireID();\r\n\r\n let z = item.properties.get('altitude').get('_length');\r\n let zUnit = item.properties.get('altitude').get('_unit') || 'cm';\r\n z = convert(z).from(zUnit).to('cm');\r\n let height = item.properties.get('height').get('_length');\r\n let heightUnit = item.properties.get('height').get('_unit') || 'cm';\r\n height = convert(height).from(heightUnit).to('cm');\r\n switch (molding.location_type) {\r\n case TOP_MOLDING_LOCATION:\r\n z += height;\r\n break;\r\n case MIDDLE_MOLDING_LOCATION:\r\n z += height / 2;\r\n break;\r\n case BOTTOM_MOLDING_LOCATION:\r\n z += 0;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return {\r\n id: MDId,\r\n items: [item],\r\n meshes: [],\r\n pos: { x: 0, y: 0, z },\r\n size: { width: 0, depth: 0, height: 0 },\r\n lines,\r\n molding,\r\n pointGroups: []\r\n };\r\n}\r\n\r\nfunction tryAdjacent(ct1, ct2) {\r\n if (ct1.catid.includes('Dishwasher') && ct1.catid.includes('BF')) {\r\n let temp = ct1;\r\n ct1 = ct2;\r\n ct2 = temp;\r\n }\r\n\r\n log('----tryAdjacent', ct1.id, ct2.id);\r\n if (\r\n !ct2.catid.includes('Dishwasher') &&\r\n !ct2.catid.includes('BF') &&\r\n ct1.catid != ct2.catid\r\n )\r\n return false;\r\n if (ct1.rotRad != ct2.rotRad) return false;\r\n\r\n log('ct1', ct1.pos.x, ct1.pos.y, ct1.size.width);\r\n log('ct2', ct2.pos.x, ct2.pos.y, ct2.size.width);\r\n\r\n let dist = GeometryUtils.verticesDistance(ct1.pos, ct2.pos);\r\n let totalwidth = ct1.size.width + ct2.size.width;\r\n log('epsilon', dist, totalwidth, Math.abs(2 * dist - totalwidth));\r\n if (Math.abs(2 * dist - totalwidth) / totalwidth > 1e-3) return false;\r\n\r\n log('----success');\r\n let newpos = {\r\n x: (ct1.pos.x * ct1.size.width + ct2.pos.x * ct2.size.width) / totalwidth,\r\n y: (ct1.pos.y * ct1.size.width + ct2.pos.y * ct2.size.width) / totalwidth\r\n };\r\n let newsize = {\r\n width: totalwidth,\r\n depth: ct1.size.depth,\r\n height: ct1.size.height\r\n };\r\n\r\n let CTId = IDBroker.acquireID();\r\n let items =\r\n GeometryUtils.compareVertices(ct1.pos, ct2.pos) > 0\r\n ? [...ct1.items, ...ct2.items]\r\n : [...ct2.items, ...ct1.items];\r\n let ct3d = null;\r\n let catid = ct1.catid;\r\n\r\n return {\r\n id: CTId,\r\n items,\r\n ct3d,\r\n catid,\r\n pos: newpos,\r\n rotRad: ct1.rotRad,\r\n size: newsize\r\n };\r\n}\r\n\r\nfunction isParallelLines(line1, line2) {\r\n let isParallel = false;\r\n if (\r\n Math.abs(line1[0].y - line1[1].y) <= EPSILON &&\r\n Math.abs(line2[0].y - line2[1].y) <= EPSILON\r\n )\r\n isParallel = true;\r\n if (\r\n Math.abs(line1[0].x - line1[1].x) <= EPSILON &&\r\n Math.abs(line2[0].x - line2[1].x) <= EPSILON\r\n )\r\n isParallel = true;\r\n if (\r\n Math.abs(\r\n (line1[0].x - line1[1].x) / (line1[0].y - line1[1].y) -\r\n (line2[0].x - line2[1].x) / (line2[0].y - line2[1].y)\r\n ) <= EPSILON\r\n )\r\n isParallel = true;\r\n if (isParallel) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function tryAdjacentMD(md1, md2, molding) {\r\n log('----tryAdjacent', md1.id, md2.id);\r\n\r\n if (Math.abs(md1.pos.z - md2.pos.z) > EPSILON) return false;\r\n let id1 = md1.items[0].doorStyle.hasOwnProperty('id')\r\n ? md1.items[0].doorStyle.id\r\n : md1.items[0].doorStyle.toJS().id,\r\n id2 = md2.items[0].doorStyle.hasOwnProperty('id')\r\n ? md2.items[0].doorStyle.id\r\n : md2.items[0].doorStyle.toJS().id;\r\n if (id1 !== id2) return false;\r\n\r\n let newLines = md1.lines.concat(md2.lines);\r\n let isMerge = false;\r\n\r\n md1.lines.forEach(line1 => {\r\n md2.lines.map(line2 => {\r\n // filter removed lines\r\n if (\r\n newLines.findIndex(a => a[2] === line1[2]) === -1 ||\r\n newLines.findIndex(a => a[2] === line2[2]) === -1\r\n )\r\n return false;\r\n // is parallel two lines\r\n if (isParallelLines(line1, line2)) {\r\n let disLine1 = GeometryUtils.verticesDistance(line1[0], line1[1]);\r\n let disLine2 = GeometryUtils.verticesDistance(line2[0], line2[1]);\r\n if (\r\n GeometryUtils.sameMDistances(\r\n GeometryUtils.verticesDistance(line2[0], line1[0]) +\r\n GeometryUtils.verticesDistance(line1[1], line2[1]),\r\n Math.abs(disLine2 - disLine1)\r\n )\r\n ) {\r\n newLines = newLines.filter(\r\n a => !(a[2] === line1[2] || a[2] === line2[2])\r\n );\r\n if (!GeometryUtils.sameMPoints(line1[0], line2[0]))\r\n newLines.push([line1[0], line2[0], IDBroker.acquireID()]);\r\n if (!GeometryUtils.sameMPoints(line1[1], line2[1]))\r\n newLines.push([line1[1], line2[1], IDBroker.acquireID()]);\r\n isMerge = true;\r\n return false;\r\n }\r\n if (\r\n GeometryUtils.sameMDistances(\r\n GeometryUtils.verticesDistance(line2[0], line1[1]) +\r\n GeometryUtils.verticesDistance(line1[0], line2[1]),\r\n Math.abs(disLine2 - disLine1)\r\n )\r\n ) {\r\n newLines = newLines.filter(\r\n a => !(a[2] === line1[2] || a[2] === line2[2])\r\n );\r\n if (!GeometryUtils.sameMPoints(line1[1], line2[0]))\r\n newLines.push([line1[1], line2[0], IDBroker.acquireID()]);\r\n if (!GeometryUtils.sameMPoints(line1[0], line2[1]))\r\n newLines.push([line1[0], line2[1], IDBroker.acquireID()]);\r\n isMerge = true;\r\n return false;\r\n }\r\n let samePointNum = -1,\r\n i = 0;\r\n while (i < 4 && samePointNum === -1) {\r\n if (\r\n GeometryUtils.sameMPoints(line1[Math.floor(i / 2)], line2[i % 2]) &&\r\n GeometryUtils.sameMDistances(\r\n disLine1 + disLine2,\r\n GeometryUtils.verticesDistance(\r\n line1[Math.floor((3 - i) / 2)],\r\n line2[(3 - i) % 2]\r\n )\r\n )\r\n ) {\r\n samePointNum = 3 - i;\r\n } else {\r\n i++;\r\n }\r\n }\r\n if (samePointNum > -1) {\r\n newLines = newLines.filter(\r\n a => !(a[2] === line1[2] || a[2] === line2[2])\r\n );\r\n newLines.push([\r\n { ...line1[Math.floor(samePointNum / 2)] },\r\n { ...line2[samePointNum % 2] },\r\n IDBroker.acquireID()\r\n ]);\r\n isMerge = true;\r\n return false;\r\n }\r\n let pointNum = -1,\r\n k = 0;\r\n while (k < 4 && pointNum === -1) {\r\n if (\r\n GeometryUtils.sameMDistances(\r\n GeometryUtils.verticesDistance(\r\n line1[Math.floor(k / 2)],\r\n line2[k % 2]\r\n ) +\r\n GeometryUtils.verticesDistance(\r\n line1[1 - Math.floor(k / 2)],\r\n line2[k % 2]\r\n ),\r\n disLine1\r\n ) &&\r\n GeometryUtils.sameMDistances(\r\n GeometryUtils.verticesDistance(\r\n line1[1 - Math.floor(k / 2)],\r\n line2[k % 2]\r\n ) +\r\n GeometryUtils.verticesDistance(\r\n line1[1 - Math.floor(k / 2)],\r\n line2[1 - (k % 2)]\r\n ),\r\n disLine2\r\n )\r\n ) {\r\n pointNum = k;\r\n } else {\r\n k++;\r\n }\r\n }\r\n }\r\n return false;\r\n });\r\n });\r\n\r\n if (!newLines.length) return { ...md2 };\r\n\r\n if (!isMerge) return false;\r\n return {\r\n id: IDBroker.acquireID(),\r\n items: [\r\n ...md2.items.filter(\r\n item => md1.items.findIndex(it => it.id === item.id) === -1\r\n ),\r\n ...md1.items\r\n ],\r\n meshes: [],\r\n pos: md1.pos,\r\n size: md1.size,\r\n lines: newLines,\r\n molding: molding\r\n };\r\n}\r\n\r\nfunction showItemCT(item, CT, visible, planData, layer) {\r\n let item3D = planData.sceneGraph.layers[layer.id].items[item.id];\r\n if (item3D === undefined) return undefined;\r\n item3D.traverse(child => {\r\n if (child.name.includes('countertop')) {\r\n child.visible = visible;\r\n\r\n if (child.material.map === null) {\r\n let normalMap = item.counterTop.uri;\r\n let interiortexture = loadTexture(normalMap);\r\n applyTexture(child.material, interiortexture, 100, 100);\r\n child.material.color = new Color(1, 1, 1);\r\n return;\r\n }\r\n child.material.map.repeat.x = 1;\r\n }\r\n });\r\n}\r\n\r\nfunction getCountertopMesh(item, visible, planData, layer) {\r\n if (item.type.includes('Dishwasher')) return undefined;\r\n if (item.type.includes('BF')) return undefined;\r\n let item3D = planData.sceneGraph.layers[layer.id].items[item.id];\r\n let countertop = null;\r\n if (item3D === undefined) return undefined;\r\n item3D.traverse(child => {\r\n if (child.name.includes('countertop')) {\r\n countertop = child;\r\n }\r\n });\r\n return countertop;\r\n}\r\n\r\nfunction getDoorStyleMaterial(items, planData, layer, name) {\r\n let item3D = null;\r\n // find Item with visible = true, in elevation mode\r\n items.forEach(item => {\r\n let tempItem = null;\r\n tempItem = planData.sceneGraph.layers[layer.id].items[item.id];\r\n if (tempItem && tempItem.visible) {\r\n item3D = tempItem;\r\n }\r\n });\r\n\r\n let door_mesh = null;\r\n if (!item3D) return undefined;\r\n item3D.traverse(child => {\r\n if (\r\n !door_mesh &&\r\n !child.name.includes('countertop') &&\r\n !child.name.includes('_interior_') &&\r\n !child.name.includes('handle') &&\r\n child.type === OBJTYPE_MESH\r\n ) {\r\n door_mesh = child;\r\n }\r\n });\r\n return door_mesh && door_mesh.material;\r\n}\r\n\r\nfunction addCTMesh(countertop, planData, layer) {\r\n if (countertop.items.length == 1) {\r\n showItemCT(countertop.items[0], countertop, true, planData, layer);\r\n } else {\r\n let ctMesh = null;\r\n countertop.items.some(item => {\r\n ctMesh = getCountertopMesh(item, true, planData, layer);\r\n return ctMesh != null;\r\n });\r\n if (!ctMesh) return;\r\n\r\n if (0) {\r\n let material = ctMesh.material;\r\n let thickness = 3.81;\r\n let geometry = new Three.BoxGeometry(\r\n countertop.size.width,\r\n thickness,\r\n countertop.size.depth\r\n );\r\n let ct3d = new Three.Mesh(geometry, material);\r\n\r\n countertop.ct3d = ct3d;\r\n planData.plan.add(ct3d);\r\n\r\n ct3d.position.x = countertop.pos.x;\r\n ct3d.position.z = -countertop.pos.y;\r\n ct3d.position.y = countertop.size.height + thickness / 2;\r\n\r\n ct3d.quaternion.setFromAxisAngle(\r\n new Three.Vector3(0, 1, 0),\r\n countertop.rotRad\r\n );\r\n\r\n ct3d.name = 'countertops';\r\n } else {\r\n let ct3d = ctMesh.clone();\r\n countertop.ct3d = ct3d;\r\n ct3d.visible = true;\r\n ct3d.material = ctMesh.material.clone();\r\n if (ct3d.material.map !== null) {\r\n ct3d.material.map.copy(ctMesh.material.map);\r\n ct3d.material.map.repeat.x = countertop.items.length;\r\n }\r\n ctMesh.updateMatrix();\r\n ctMesh.parent.updateMatrix();\r\n ctMesh.parent.parent.updateMatrix();\r\n let ctmeshMat = ctMesh.matrix;\r\n let objMat = ctMesh.parent.matrix;\r\n let pivotMat = ctMesh.parent.parent.matrix;\r\n pivotMat.setPosition(\r\n new Three.Vector3(countertop.pos.x, 0, -countertop.pos.y)\r\n );\r\n\r\n let width = countertop.items\r\n .find(ct => !ct.type.includes('Dishwasher') && !ct.type.includes('BF'))\r\n .properties.get('width')\r\n .get('_length');\r\n let unit_width =\r\n countertop.items\r\n .find(\r\n ct => !ct.type.includes('Dishwasher') && !ct.type.includes('BF')\r\n )\r\n .properties.get('width')\r\n .get('_unit') || 'cm';\r\n width = convert(width).from(unit_width).to('cm');\r\n pivotMat.scale(new Three.Vector3(countertop.size.width / width, 1, 1));\r\n\r\n let finalMat = objMat.premultiply(pivotMat);\r\n ct3d.applyMatrix4(finalMat);\r\n\r\n planData.plan.add(ct3d);\r\n ct3d.name = 'countertops';\r\n }\r\n }\r\n}\r\n\r\nfunction getArea(a, b, c) {\r\n return a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y);\r\n}\r\n\r\nfunction isSingleQuadrilateral(groupCount, pointGroup) {\r\n return groupCount === 1 && pointGroup.length === 4;\r\n}\r\n\r\n/**\r\n * @param MDV - molding points\r\n * @param width - cabinet width\r\n * @param depth - cabinet depth ( z axis )\r\n * @param model - molding info that appear in real 3D\r\n */\r\nfunction moldingVertices(\r\n mPointGroup,\r\n mdGeo,\r\n MDV,\r\n model,\r\n svg_width,\r\n svg_height,\r\n groupCount\r\n) {\r\n let pointGroup = mPointGroup;\r\n let length = pointGroup.length;\r\n let isSnap = true;\r\n\r\n // Point O\r\n let o = new Three.Vector2(0, 0);\r\n\r\n if (GeometryUtils.samePoints(pointGroup[0], pointGroup[length - 1])) {\r\n pointGroup = pointGroup.slice(0, length - 1);\r\n length--;\r\n isSnap = false;\r\n }\r\n\r\n let verticesArray = [];\r\n\r\n let t = [\r\n [-1, -1],\r\n [1, -1],\r\n [1, 1],\r\n [-1, 1]\r\n ];\r\n\r\n if (!isSnap && isSingleQuadrilateral(groupCount, pointGroup)) {\r\n let tmp_pos = [];\r\n t.forEach(tmp => {\r\n pointGroup.forEach(point => {\r\n if (point.x * tmp[0] > 0 && point.y * tmp[1] > 0) {\r\n tmp_pos.push(point);\r\n }\r\n });\r\n });\r\n pointGroup = tmp_pos;\r\n }\r\n\r\n pointGroup.forEach((cur, i) => {\r\n let prev = isSnap && i === 0 ? cur : pointGroup[(i + length - 1) % length];\r\n let next = isSnap && i === length - 1 ? cur : pointGroup[(i + 1) % length];\r\n\r\n let vecPC = cur.clone().sub(prev); // vector from point `prev` to point `cur`\r\n let vecNC = cur.clone().sub(next); // vector from point `next` to point `cur`\r\n\r\n // Calculate normal vector to `vecPC`\r\n let vecNorm = new Three.Vector2(0, 1);\r\n if (vecPC.x) {\r\n if (vecPC.x > 0) {\r\n vecNorm = new Three.Vector2(-vecPC.y / vecPC.x, 1);\r\n } else {\r\n vecNorm = new Three.Vector2(vecPC.y / vecPC.x, -1);\r\n }\r\n } else {\r\n if (vecPC.y === 0) {\r\n if (vecNC.x) {\r\n if (vecNC.x > 0) {\r\n vecNorm = new Three.Vector2(vecNC.y / vecNC.x, -1);\r\n } else {\r\n vecNorm = new Three.Vector2(-vecNC.y / vecNC.x, 1);\r\n }\r\n } else {\r\n if (vecNC.y > 0) {\r\n vecNorm = new Three.Vector2(1, 0);\r\n } else {\r\n vecNorm = new Three.Vector2(-1, 0);\r\n }\r\n }\r\n } else {\r\n if (vecPC.y > 0) {\r\n vecNorm = new Three.Vector2(-1, 0);\r\n } else {\r\n vecNorm = new Three.Vector2(1, 0);\r\n }\r\n }\r\n }\r\n\r\n let p1 = cur.clone().add(vecNorm); // the point that's away from `cur` by `vecNorm`\r\n if (getArea(prev, p1, cur) > 0) {\r\n vecNorm.multiplyScalar(-1);\r\n }\r\n\r\n let area = 0.5 * getArea(prev, cur, next);\r\n let lenPN = next.clone().sub(prev).length();\r\n let lenNC = vecNC.length();\r\n let lenPC = vecPC.length();\r\n\r\n let alpha = Math.acos(\r\n (lenNC * lenNC + lenPC * lenPC - lenPN * lenPN) / (2 * lenNC * lenPC)\r\n );\r\n\r\n if (area < 0) alpha = 2 * Math.PI - alpha; // Exterior Angle\r\n alpha /= 2;\r\n\r\n if (isNaN(alpha)) {\r\n alpha = Math.PI / 2;\r\n }\r\n\r\n vecNorm.rotateAround(o, Math.PI / 2 - alpha);\r\n vecNorm.normalize();\r\n vecNorm.multiplyScalar(1 / Math.sin(alpha));\r\n\r\n // Make 3D Points\r\n MDV.forEach(p => {\r\n let x = cur.x - vecNorm.x * ((p.x / svg_width - 0.5) * model.length);\r\n let y = (0.5 - p.y / svg_height) * model.width;\r\n let z = -cur.y + vecNorm.y * ((p.x / svg_width - 0.5) * model.length);\r\n if (mdGeo.attributes.hasOwnProperty('position'))\r\n verticesArray = mdGeo.attributes.position.array;\r\n verticesArray.push(x, y, z);\r\n });\r\n });\r\n const mdGeo1 = mdGeo.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(verticesArray), 3)\r\n );\r\n mdGeo1.needsUpdate = true;\r\n return mdGeo1;\r\n}\r\n\r\nlet dcmFace = function (a, leng, MDV) {\r\n for (let i = a; i < a + 2; i++) {\r\n let f_a1 = i;\r\n let f_b1 = i + leng;\r\n let f_c1 = i + leng + 1;\r\n let f_a2 = i;\r\n let f_b2 = i + 1;\r\n let f_c2 = f_c1;\r\n let indices = Array.from(MDV.index.array);\r\n indices.push(f_a1, f_b1, f_c1, f_c2, f_b2, f_a2);\r\n MDV.setIndex(indices);\r\n }\r\n let indices = Array.from(MDV.index.array);\r\n indices.push(a + 2, a + leng + 2, a + leng + 4, a + leng + 4, a + 4, a + 2);\r\n MDV.setIndex(indices);\r\n\r\n for (let i = a + 4; i < a + 74; i++) {\r\n let f_a1 = i;\r\n let f_b1 = i + leng;\r\n let f_c1 = i + leng + 1;\r\n let f_a2 = i;\r\n let f_b2 = i + 1;\r\n let f_c2 = f_c1;\r\n let indices = Array.from(MDV.index.array);\r\n indices.push(f_a1, f_b1, f_c1, f_c2, f_b2, f_a2);\r\n MDV.setIndex(indices);\r\n }\r\n let faces = Array.from(MDV.index.array);\r\n faces.push(a + 50, a + 3, a + 103, a + 103, a + 150, a + 50);\r\n MDV.setIndex(faces);\r\n};\r\n\r\nlet fbmFace = function (a, leng, MDV) {\r\n let total_leng = leng * 4;\r\n for (let i = a; i < a + leng - 1; i++) {\r\n let f_a1 = i;\r\n let f_b1 = (i + leng) % total_leng;\r\n let f_c1 = (i + leng + 1) % total_leng;\r\n let f_a2 = i;\r\n let f_b2 = i + 1;\r\n let f_c2 = f_c1;\r\n let indices = [];\r\n if (MDV.index !== null) {\r\n indices = Array.from(MDV.index.array);\r\n }\r\n indices.push(f_a1, f_b1, f_c1, f_c2, f_b2, f_a2);\r\n MDV.setIndex(indices);\r\n }\r\n};\r\n\r\nconst assignUVs = geometry => {\r\n geometry.computeBoundingBox();\r\n let h = 400;\r\n let { min, max } = geometry.boundingBox;\r\n let offset = new Three.Vector2(0 - min.x, 0 - min.z);\r\n let range = new Three.Vector2(max.x - min.x, max.z - min.z);\r\n\r\n geometry.faceVertexUvs[0] = geometry.faces.map(face => {\r\n let v1 = geometry.vertices[face.a];\r\n let v2 = geometry.vertices[face.b];\r\n let v3 = geometry.vertices[face.c];\r\n\r\n return [\r\n new Three.Vector2(\r\n (v1.x + offset.x) / range.x,\r\n (v1.z + offset.y) / (range.y + h)\r\n ),\r\n new Three.Vector2(\r\n (v2.x + offset.x) / range.x,\r\n (v2.z + offset.y) / (range.y + h)\r\n ),\r\n new Three.Vector2(\r\n (v3.x + offset.x) / range.x,\r\n (v3.z + offset.y) / (range.y + h)\r\n )\r\n ];\r\n });\r\n\r\n geometry.uvsNeedUpdate = true;\r\n};\r\n\r\nconst assignUVsA = geometry => {\r\n geometry.computeBoundingBox();\r\n let h = 200;\r\n let { min, max } = geometry.boundingBox;\r\n let offset = new Three.Vector2(0 - min.x, 0 - min.y);\r\n let range = new Three.Vector2(max.x - min.x, max.y - min.y);\r\n\r\n geometry.faceVertexUvs[0] = geometry.faces.map(face => {\r\n let v1 = geometry.vertices[face.a];\r\n let v2 = geometry.vertices[face.b];\r\n let v3 = geometry.vertices[face.c];\r\n return [\r\n new Three.Vector2(\r\n (v1.x + offset.x) / (range.x + h),\r\n (v1.y + offset.y) / (range.y + h)\r\n ),\r\n new Three.Vector2(\r\n (v2.x + offset.x) / (range.x + h),\r\n (v2.y + offset.y) / (range.y + h)\r\n ),\r\n new Three.Vector2(\r\n (v3.x + offset.x) / (range.x + h),\r\n (v3.y + offset.y) / (range.y + h)\r\n )\r\n ];\r\n });\r\n\r\n geometry.uvsNeedUpdate = true;\r\n};\r\n\r\n/*\r\n Remove specified type of 3d object easily\r\n*/\r\nexport function deleteSpecifiedMeshObjects(type) {\r\n let childLen = planData.plan.children.length;\r\n\r\n let children = [];\r\n for (let i = 0; i < childLen; i++) {\r\n if (planData.plan.children[i].name != type)\r\n children.push(planData.plan.children[i]);\r\n }\r\n planData.plan.children = children;\r\n}\r\n\r\nexport function getMeshesFromScene() {\r\n let childLen = planData.plan.children.length;\r\n\r\n let children = [];\r\n for (let i = 0; i < childLen; i++) {\r\n if (planData.plan.children[i].type == OBJTYPE_MESH)\r\n children.push(planData.plan.children[i]);\r\n }\r\n\r\n return children;\r\n}\r\n\r\nexport function threedfabs(a) {\r\n return a > 0 ? a : -a;\r\n}\r\n\r\nexport function getDistanceBetweenLineSegment(pos1, pos2, pos3, pos4) {\r\n if (pos1.x == pos2.x && pos3.x == pos4.x) return pos3.x - pos1.x;\r\n else if (pos1.y == pos2.y && pos3.y == pos4.y) return pos3.y - pos1.y;\r\n else return -1;\r\n}\r\n\r\n/**\r\n * check to see if an item is suitable for the given doorStyle.\r\n * @param _item\r\n * @returns true if it's not suitable.\r\n */\r\nexport function showYelloBox(_item) {\r\n let doorStyle = _item?.doorStyle;\r\n\r\n // If doorStyle is an Immutable Map, convert to plain JS\r\n if (doorStyle && typeof doorStyle.toJS === 'function') {\r\n doorStyle = doorStyle.toJS();\r\n }\r\n\r\n const isItemCabinet = _item?.category === 'cabinet';\r\n const cds = doorStyle?.doorStyles?.cds;\r\n\r\n // hasItemCDS: item is suitable if its itemID exists in cds\r\n const hasItemCDS =\r\n isItemCabinet && Array.isArray(cds)\r\n ? cds.some(element => element.itemID === _item.itemID)\r\n : false;\r\n\r\n // return true if it's a cabinet but not suitable for the current doorStyle\r\n return isItemCabinet && !hasItemCDS;\r\n}\r\n\r\nfunction isSimilar(a, b) {\r\n if (threedfabs(a - b) <= 0.01) return 1;\r\n return 0;\r\n}\r\n\r\nexport function sameSign(pos1, pos2, pos3) {\r\n let ch1 = 0.0;\r\n let ch2 = 1.0;\r\n if (isSimilar(pos1.x, pos2.x) && isSimilar(pos1.x, pos3.x)) {\r\n ch1 = (pos2.y - pos1.y) * (pos3.y - pos1.y);\r\n } else if (isSimilar(pos1.y, pos2.y) && isSimilar(pos1.y, pos3.y)) {\r\n ch1 = (pos2.x - pos1.x) * (pos3.x - pos1.x);\r\n } else {\r\n ch1 = ((pos2.y - pos1.y) * 1.0) / (pos2.x - pos1.x);\r\n ch2 = ((pos3.y - pos1.y) * 1.0) / (pos3.x - pos1.x);\r\n }\r\n if (ch1 * ch2 >= 0) return 1;\r\n return 0;\r\n}\r\n\r\nexport function getTotalDistance(pos, rect) {\r\n let sum = 0;\r\n for (let i = 0; i < rect.length; i++) {\r\n sum += verticesDistance(pos, rect[i]);\r\n }\r\n return sum;\r\n}\r\nconst applyTexture = (material, texture, length, height) => {\r\n if (texture) {\r\n material.map = texture;\r\n material.needsUpdate = true;\r\n material.map.wrapS = Three.RepeatWrapping;\r\n material.map.wrapT = Three.RepeatWrapping;\r\n material.map.repeat.set(length * 0.01, height * 0.01);\r\n\r\n if (texture.normal) {\r\n material.normalMap = loadTexture(texture.normal.uri);\r\n material.normalScale = new Vector2(\r\n texture.normal.normalScaleX,\r\n texture.normal.normalScaleY\r\n );\r\n material.normalMap.wrapS = Three.RepeatWrapping;\r\n material.normalMap.wrapT = Three.RepeatWrapping;\r\n material.normalMap.repeat.set(\r\n length * texture.normal.lengthRepeatScale,\r\n height * texture.normal.heightRepeatScale\r\n );\r\n }\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param {{is_corner:number,itemInfo:Item,layoutpos:string,pos:{x:number,y:number},rect:[{x:number,y:number}],\r\n * rotRad:number,size:{depth:number,width:number,height:number}}} item\r\n * @param {Layer} layer\r\n * @param {{boundingBox:Box3,catalog:Catalog,grid: Object3D,plan: Object3D,sceneData: Scene,sceneGraph}} planData\r\n * @param {Scene} scene\r\n */\r\nexport function createBacksplash(item, layer, planData, scene) {\r\n let { sceneGraph } = planData;\r\n let selectedLayer = planData.sceneData.selectedLayer;\r\n /**\r\n * @type {[{backsplash,info:{rotY:number,posX:number,posY:number,posZ:number,splashWidth:number,splashHeight:number,splashDepth:number,id:string}}]}\r\n */\r\n let backsplashes = sceneGraph.layers[selectedLayer].backsplashes;\r\n let backsplashApplied = layer.get('backsplashApplied');\r\n let name = 'backsplash' + item.itemInfo.id;\r\n let index = backsplashes.findIndex(item => item.backsplash.name === name);\r\n let itemToSave = { backsplash: null, info: {} };\r\n\r\n if (!item.itemInfo.backsplashVisible) {\r\n // If backsplash is not visible\r\n if (index >= 0) {\r\n backsplashes.splice(index, 1); // Remove from backsplashes array\r\n }\r\n return;\r\n }\r\n\r\n // Get wall items\r\n\r\n let i,\r\n wallItems = [];\r\n let allWallItems = GeometryUtils.getAllItemSpecified(\r\n scene,\r\n planData.catalog,\r\n WALL_CABINET_LAYOUTPOS\r\n );\r\n for (i = 0; i < allWallItems.others.length; i++)\r\n wallItems.push(allWallItems.others[i]);\r\n if (allWallItems.cur) wallItems.push(allWallItems.cur);\r\n\r\n // Get information of item itself\r\n\r\n let altitude = item.itemInfo.properties.get('altitude').get('_length');\r\n let altitudeUnit =\r\n item.itemInfo.properties.get('altitude').get('_unit') || 'cm';\r\n altitude = convert(altitude).from(altitudeUnit).to('cm');\r\n let thickness = 1,\r\n /** Height --- altitude */ depth;\r\n\r\n // Calc wall & hole items info\r\n\r\n /**\r\n * Wall & Hole items info\r\n * @type {[{x:number,width:number,altitude:number}]}\r\n */\r\n let altItems = [],\r\n flag = false;\r\n\r\n wallItems.map(wallItem => {\r\n let altitude = wallItem.itemInfo.properties.get('altitude').get('_length');\r\n let altitudeUnit =\r\n wallItem.itemInfo.properties.get('altitude').get('_unit') || 'cm';\r\n altitude = convert(altitude).from(altitudeUnit).to('cm');\r\n altItems.push({ x: wallItem.pos.x, width: wallItem.size.width, altitude });\r\n });\r\n layer.holes.map(hole => {\r\n let width = hole.properties.getIn(['width', 'length']);\r\n let altitude = hole.properties.getIn(['altitude', 'length']);\r\n altItems.push({ x: hole.x, width, altitude });\r\n });\r\n\r\n if (altItems.length > 0) {\r\n depth = altItems[0].altitude;\r\n altItems.map(altItem => {\r\n if (\r\n item.pos.x + item.size.width / 2 >= altItem.x - altItem.width / 2 &&\r\n item.pos.x - item.size.width / 2 <= altItem.x + altItem.width / 2\r\n ) {\r\n if (depth >= altItem.altitude) {\r\n depth = altItem.altitude;\r\n flag = true;\r\n }\r\n }\r\n });\r\n }\r\n if (!flag) depth = 52 * 2.54;\r\n\r\n // Get backsplash info\r\n\r\n let posX =\r\n item.pos.x - Math.sin(item.rotRad) * (item.size.depth / 2 - thickness);\r\n let posY = altitude + depth / 2;\r\n let posZ =\r\n -item.pos.y - Math.cos(item.rotRad) * (item.size.depth / 2 - thickness);\r\n // TODO If you want apply backsplash to walls that's not vertical or horizontal ( slope )\r\n // You must update this calcuating rotY\r\n let rotY = item.rotRad;\r\n\r\n let posX1 =\r\n item.pos.x + Math.cos(item.rotRad) * (item.size.width / 2 - thickness);\r\n let posY1 = altitude + depth / 2;\r\n let posZ1 =\r\n -item.pos.y - Math.sin(item.rotRad) * (item.size.width / 2 - thickness);\r\n // TODO If you want apply backsplash to walls that's not vertical or horizontal ( slope )\r\n // You must update this calcuating rotY\r\n let rotY1 = item.rotRad + Math.PI / 2;\r\n\r\n let splashWidth = item.size.width;\r\n let splashHeight = depth;\r\n let splashDepth = thickness;\r\n\r\n // Find mergeable other backsplashes\r\n\r\n let info,\r\n wholeWidth,\r\n /** Width factor */ factor,\r\n distance,\r\n halfWidth,\r\n /** To get new center */ centerFactor;\r\n\r\n for (let back of backsplashes) {\r\n info = back.info;\r\n if (info.height === splashHeight && info.rotY === rotY) {\r\n factor = Math.cos(rotY) || 1;\r\n distance = Math.hypot(posX - info.posX, posZ - info.posZ) / factor;\r\n halfWidth = (info.width + splashWidth) / 2;\r\n\r\n if (Math.abs(distance - halfWidth) < 1e-2) {\r\n // dispose `back`\r\n if (info.id) {\r\n deleteSpecifiedMeshObjects('backsplash' + info.id);\r\n }\r\n\r\n // Get center position\r\n wholeWidth = info.width + splashWidth;\r\n centerFactor = info.width / wholeWidth;\r\n posX = posX + centerFactor * (info.posX - posX);\r\n posZ = posZ + centerFactor * (info.posZ - posZ);\r\n\r\n splashWidth = wholeWidth;\r\n }\r\n }\r\n }\r\n\r\n itemToSave.info.posX = posX;\r\n itemToSave.info.posY = posY;\r\n itemToSave.info.posZ = posZ;\r\n\r\n itemToSave.info.rotY = rotY;\r\n\r\n itemToSave.info.width = splashWidth;\r\n itemToSave.info.height = splashHeight;\r\n itemToSave.info.depth = splashDepth;\r\n\r\n // Make material\r\n\r\n let texture = layer.get('backsplash');\r\n var areaMaterial = new Three.MeshStandardMaterial({\r\n side: Three.DoubleSide,\r\n metalness: texture.metalness,\r\n roughness: texture.roughness\r\n });\r\n let interiortexture = loadTexture(texture.uri);\r\n applyTexture(\r\n areaMaterial,\r\n interiortexture,\r\n splashWidth * 1.5,\r\n splashHeight * 1.5\r\n );\r\n\r\n // Make geometry\r\n let geometry = new Three.BoxGeometry(splashWidth, splashHeight, splashDepth);\r\n\r\n // Make backsplash mesh\r\n\r\n let backsplash = (itemToSave.backsplash = new Three.Mesh(\r\n geometry,\r\n areaMaterial\r\n ));\r\n backsplash.position.x = itemToSave.info.posX;\r\n backsplash.position.y = itemToSave.info.posY;\r\n backsplash.position.z = itemToSave.info.posZ;\r\n backsplash.rotation.y = itemToSave.info.rotY;\r\n\r\n let allLines = GeometryUtils.getAllLines(layer);\r\n let allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\r\n\r\n if (item.is_corner && GeometryUtils.isSnappedSideLine(item, allLineRects)) {\r\n // corner cabinet item.itemInfo.getIn([\"cabinet_category\"]) === \"Corner Base Cabinets\"\r\n let geometry1 = new Three.BoxGeometry(\r\n splashWidth,\r\n splashHeight,\r\n splashDepth\r\n );\r\n // Make backsplash mesh\r\n //console.log(sceneGraph.layers[\"layer-1\"].lines);\r\n let backsplash1 = (itemToSave.backsplash = new Three.Mesh(\r\n geometry1,\r\n areaMaterial\r\n ));\r\n backsplash1.position.x = posX1;\r\n backsplash1.position.y = posY1;\r\n backsplash1.position.z = posZ1;\r\n backsplash1.rotation.y = rotY1;\r\n let newBacksplash = new Group();\r\n newBacksplash.add(backsplash);\r\n newBacksplash.add(backsplash1);\r\n backsplash = newBacksplash;\r\n }\r\n\r\n itemToSave.info.id = item.itemInfo.id;\r\n\r\n deleteSpecifiedMeshObjects('backsplash' + item.itemInfo.id);\r\n\r\n if (item.rotRad % (Math.PI / 2) === 0) planData.plan.add(backsplash);\r\n\r\n backsplash.name = name;\r\n backsplash.visible =\r\n item.itemInfo.get('backsplashVisible') &&\r\n backsplashApplied &&\r\n item.rotRad % (Math.PI / 2) === 0;\r\n\r\n // Save to scene graph\r\n\r\n if (index < 0) {\r\n backsplashes.push(itemToSave);\r\n } else {\r\n disposeObject(backsplashes[index].backsplash);\r\n backsplashes.splice(index, 1, itemToSave);\r\n }\r\n}\r\n\r\n/**\r\n * @param {Map} item - Selected Item\r\n */\r\nfunction addMGMesh(molding, planData, layer, flag = false) {\r\n let point = [];\r\n let data = molding?.molding?.data;\r\n if (isEmpty(data)) return;\r\n\r\n let { paths, svg_width, svg_height } = data;\r\n for (let i = 0; i < paths.length; i++) {\r\n let path = paths[i];\r\n for (let j = 0, jl = path.subPaths.length; j < jl; j++) {\r\n let subPath = new Three.Path();\r\n if (path.subPaths[j].hasOwnProperty('metadata')) {\r\n subPath.fromJSON(path.subPaths[j]);\r\n } else {\r\n subPath = path.subPaths[j];\r\n }\r\n point = subPath.getPoints();\r\n }\r\n }\r\n\r\n _addMGMesh(molding, planData, layer, point, svg_width, svg_height, flag);\r\n}\r\n\r\nconst isBaseCabinet = item => {\r\n return item.layoutpos === BASE_CABINET_LAYOUTPOS;\r\n};\r\n\r\n/**\r\n * @param data - Molding SVG Points\r\n */\r\n\r\n// function assignUVs\r\nfunction _addMGMesh(\r\n molding,\r\n planData,\r\n layer,\r\n data,\r\n svg_width,\r\n svg_height,\r\n flag\r\n) {\r\n let child = molding.molding;\r\n let material = getDoorStyleMaterial(\r\n molding.items,\r\n planData,\r\n layer,\r\n child.name\r\n );\r\n if (!material) return;\r\n material = new Three.MeshStandardMaterial(material);\r\n // let texture = loadTexture(material.map.image.src);\r\n // var material1 = new Three.MeshLambertMaterial( { map:texture } );\r\n material.side = parseInt(Three.DoubleSide);\r\n // let layoutType = molding.items[0].layoutpos;\r\n // let visible = molding.items[0];\r\n molding.pointGroups.forEach(pointGroup => {\r\n let geometry = new Three.BufferGeometry();\r\n let length = data.length; //point array\r\n let temp_unit = child.height_unit;\r\n if (temp_unit === 'inch') {\r\n child.height = convert(child.height).from('in').to('cm');\r\n child.height_unit = 'cm';\r\n }\r\n temp_unit = child.width_unit;\r\n if (temp_unit === 'inch') {\r\n child.width = convert(child.width).from('in').to('cm');\r\n child.width_unit = 'cm';\r\n }\r\n temp_unit = child.length_unit;\r\n if (temp_unit === 'inch') {\r\n child.length = convert(child.length).from('in').to('cm');\r\n child.length_unit = 'cm';\r\n }\r\n geometry.needsUpdate = true;\r\n geometry = moldingVertices(\r\n pointGroup,\r\n geometry,\r\n data,\r\n child,\r\n svg_width,\r\n svg_height,\r\n molding.pointGroups.length\r\n );\r\n let total = geometry.attributes.position.count;\r\n let len = geometry.attributes.position.count / length;\r\n if (\r\n !GeometryUtils.samePoints(\r\n pointGroup[0],\r\n pointGroup[pointGroup.length - 1]\r\n )\r\n ) {\r\n len--;\r\n }\r\n for (let i = 0; i < len; i++) {\r\n for (let j = i * length; j < (i + 1) * length - 1; j++) {\r\n let f_a1 = j;\r\n let f_b1 = (j + length) % total;\r\n let f_c1 = (j + length + 1) % total;\r\n let f_a2 = j;\r\n let f_b2 = j + 1;\r\n let f_c2 = f_c1;\r\n let indices = [];\r\n if (geometry.index !== null) {\r\n indices = Array.from(geometry.index.array);\r\n }\r\n indices.push(f_a1, f_b1, f_c1, f_c2, f_b2, f_a2);\r\n geometry.setIndex(indices);\r\n }\r\n }\r\n\r\n // handle molding texture\r\n // (0, e[i]) ------------- (1, e[i])\r\n // ----------- --- -----------\r\n // ----------- --- -----------\r\n // ----------- --- -----------\r\n // ----------- --- -----------\r\n // (0, e[i+1]) ------------- (1, e[i+1])\r\n geometry = geometry.toNonIndexed();\r\n let sumDistance = 0;\r\n let sumDistanceArray = [0];\r\n let finalDistance = 0;\r\n let uvs_element_array = [];\r\n for (let i = 0; i < data.length - 1; i++) {\r\n let v1 = { x: data[i].x, y: data[i].y };\r\n let v2 = { x: data[i + 1].x, y: data[i + 1].y };\r\n\r\n let posDistance = verticesDistance(v1, v2);\r\n sumDistance += posDistance;\r\n if (i === data.length - 2) finalDistance = sumDistance;\r\n sumDistanceArray.push(sumDistance);\r\n }\r\n for (let i = 0; i < sumDistanceArray.length; i++) {\r\n uvs_element_array.push(sumDistanceArray[i] / finalDistance);\r\n }\r\n let uvs = [];\r\n let uvs_item = [];\r\n for (let i = 0; i < uvs_element_array.length - 1; i++) {\r\n uvs_item = [\r\n 0,\r\n uvs_element_array[i],\r\n 1,\r\n uvs_element_array[i],\r\n 1,\r\n uvs_element_array[i + 1],\r\n 1,\r\n uvs_element_array[i + 1],\r\n 0,\r\n uvs_element_array[i + 1],\r\n 0,\r\n uvs_element_array[i]\r\n ];\r\n uvs.push(...uvs_item);\r\n }\r\n let all_uvs = [];\r\n for (let i = 0; i < pointGroup.length; i++) {\r\n all_uvs.push(...uvs);\r\n }\r\n geometry.setAttribute(\r\n 'uv',\r\n new Three.BufferAttribute(new Float32Array(all_uvs), 2)\r\n );\r\n geometry.computeVertexNormals();\r\n\r\n let fbm3d = new Three.Mesh(geometry, material);\r\n fbm3d.position.x = molding.pos.x;\r\n fbm3d.position.z = -molding.pos.y;\r\n fbm3d.position.y = molding.pos.z;\r\n planData.plan.add(fbm3d);\r\n fbm3d.name = child.name + molding.id + 'molding';\r\n molding.meshes.push(fbm3d);\r\n fbm3d.visible = true;\r\n fbm3d.castShadow = true;\r\n });\r\n}\r\n\r\nfunction deleteCTMesh(countertop, planData, layer) {\r\n log('--deleteCTMesh', countertop);\r\n if (countertop.items.length == 1) {\r\n showItemCT(countertop.items[0], countertop, false, planData, layer);\r\n } else {\r\n let ct3d = countertop.ct3d;\r\n if (ct3d) {\r\n planData.plan.remove(ct3d);\r\n disposeObject(ct3d);\r\n }\r\n }\r\n}\r\n\r\nexport function deleteMGMesh(molding, planData, mode = null) {\r\n // mode is 3D or elevation\r\n molding.meshes.forEach(mesh => {\r\n if (isElevationView(mode)) {\r\n // when elevation mode, remove obj same as selected global molding_name in platnData.plan\r\n planData.plan.children?.forEach(obj => {\r\n let parent = obj.parent;\r\n if (obj.name.match(mesh.name)) parent.remove(obj);\r\n });\r\n } else {\r\n // when 3D mode\r\n planData.plan.remove(mesh);\r\n disposeObject(mesh);\r\n }\r\n });\r\n molding.meshes = [];\r\n}\r\n\r\nfunction log() {\r\n // console.log(...arguments);\r\n}\r\n\r\nfunction addCountertop(CTArray, addItem, planData, layer) {\r\n log('addCountertop', [...CTArray], addItem.id);\r\n let tmp = planData;\r\n tmp = tmp && tmp.catalog.getElement(addItem.type);\r\n if (!tmp)\r\n tmp = planData.catalog.getElement(\r\n returnReplaceableDeepSearchType(addItem.type)\r\n );\r\n let long_name = tmp && tmp.long_name;\r\n if (long_name.includes('Sink ')) return;\r\n\r\n let newCT = createCTFromItem(\r\n addItem,\r\n planData.sceneGraph.unit,\r\n planData.catalog\r\n );\r\n let oldCT = null;\r\n let extCT = false;\r\n let extCTIndex = -1;\r\n\r\n let tryMergeCT = function () {\r\n extCTIndex = CTArray.findIndex(el => {\r\n extCT = tryAdjacent(newCT, el);\r\n return extCT != false;\r\n });\r\n return extCTIndex >= 0;\r\n };\r\n while (tryMergeCT()) {\r\n oldCT = CTArray.splice(extCTIndex, 1)[0];\r\n deleteCTMesh(newCT, planData, layer);\r\n deleteCTMesh(oldCT, planData, layer);\r\n newCT = extCT;\r\n }\r\n addCTMesh(newCT, planData, layer);\r\n CTArray.push(newCT);\r\n}\r\n\r\nexport function deleteCountertop(CTArray, delItem, planData, layer) {\r\n if (delItem == undefined) {\r\n return;\r\n }\r\n log('deleteCountertop', [...CTArray], delItem.id);\r\n let delCT = null;\r\n let delItemIndex = -1;\r\n let delCTIndex = CTArray.findIndex(el => {\r\n delItemIndex = el.items.findIndex(el => el.id == delItem.id);\r\n return delItemIndex >= 0;\r\n });\r\n\r\n if (delCTIndex < 0) return;\r\n\r\n delCT = CTArray.splice(delCTIndex, 1)[0];\r\n\r\n if (delCT.items.length > 1) {\r\n deleteCTMesh(delCT, planData, layer);\r\n\r\n let ct1 = delCT.items.slice(0, delItemIndex);\r\n let ct2 = delCT.items.slice(delItemIndex + 1);\r\n\r\n [ct1, ct2].forEach(cts => {\r\n if (cts.length == 0) return;\r\n let newCT = createCTFromItems(\r\n cts,\r\n planData.sceneGraph.unit,\r\n planData.catalog\r\n );\r\n CTArray.push(newCT);\r\n addCTMesh(newCT, planData, layer);\r\n });\r\n }\r\n}\r\n\r\nexport function deleteAllMolding(\r\n MGArray,\r\n delItem,\r\n planData,\r\n oldSceneLayer,\r\n newSceneLayer\r\n) {\r\n let tempMGArray = [...MGArray];\r\n if (isEmpty(delItem)) {\r\n return tempMGArray;\r\n }\r\n\r\n // remove the MGs which includes delItem\r\n tempMGArray = tempMGArray.filter(mg => {\r\n if (mg.items.some(it => it.id === delItem.id)) {\r\n deleteMGMesh(mg, planData, null);\r\n return false;\r\n } else return true;\r\n });\r\n\r\n if (newSceneLayer !== null) {\r\n // find the snapped items with delItem\r\n let snappedItems = [];\r\n oldSceneLayer.items.toArray().forEach(oItem => {\r\n if (\r\n oItem.category === 'cabinet' &&\r\n oItem.id !== delItem.id &&\r\n MoldingUtils.isItemSnappedItem(delItem, oItem)\r\n ) {\r\n snappedItems.push(oItem);\r\n }\r\n });\r\n\r\n // update molding group array with snapped items in the new scene layer\r\n for (let i = 0; i < snappedItems.length; i++) {\r\n tempMGArray = updateMoldingGroupArray(\r\n tempMGArray,\r\n snappedItems[i],\r\n planData,\r\n newSceneLayer,\r\n null,\r\n null,\r\n 0\r\n );\r\n }\r\n }\r\n\r\n return tempMGArray;\r\n}\r\n\r\nexport function addMolding(\r\n MGArray,\r\n addItem,\r\n planData,\r\n layer,\r\n itemActions,\r\n mode\r\n) {\r\n if (\r\n addItem.selected &&\r\n [MODE_DRAGGING_ITEM_3D, MODE_ROTATING_ITEM_3D].includes(mode)\r\n )\r\n return false;\r\n\r\n // If the item is not available for current doorStyle\r\n if (showYelloBox(addItem))\r\n // Do not add molding to that item\r\n return MGArray;\r\n\r\n // if (\r\n // !(\r\n // (addItem.layoutpos === BASE_CABINET_LAYOUTPOS &&\r\n // !GeometryUtils.isSnappedLine(\r\n // MoldingUtils.getItemRect(addItem),\r\n // GeometryUtils.buildRectFromLines(\r\n // layer,\r\n // GeometryUtils.getAllLines(layer)\r\n // )\r\n // )) ||\r\n // ((addItem.layoutpos === WALL_CABINET_LAYOUTPOS ||\r\n // addItem.layoutpos === TALL_CABINET_LAYOUTPOS) &&\r\n // GeometryUtils.isSnappedLine(\r\n // MoldingUtils.getItemRect(addItem),\r\n // GeometryUtils.buildRectFromLines(\r\n // layer,\r\n // GeometryUtils.getAllLines(layer)\r\n // )\r\n // ))\r\n // )\r\n // )\r\n // return false;\r\n\r\n // update the molding group array.\r\n let temp_MGArray = updateMoldingGroupArray(\r\n MGArray,\r\n addItem,\r\n planData,\r\n layer,\r\n itemActions,\r\n mode,\r\n 0\r\n );\r\n temp_MGArray.forEach(mg => {\r\n let moldingMesh = mg.meshes[0];\r\n if (isElevationView(mode)) {\r\n if (!isEmpty(moldingMesh)) {\r\n replaceMeshesWithLineSegments(moldingMesh);\r\n }\r\n }\r\n });\r\n return temp_MGArray;\r\n}\r\n\r\nexport function updateMoldingGroupArray(\r\n MGArray,\r\n selItem,\r\n planData,\r\n layer,\r\n itemActions = null,\r\n mode = null,\r\n cnt\r\n) {\r\n try {\r\n cnt++;\r\n if (cnt > 100) return MGArray;\r\n let temp_MGArray = [...MGArray];\r\n if (isEmpty(selItem)) return temp_MGArray;\r\n const isEnableMolding = MoldingUtils.isEnableItemForMolding(layer, selItem);\r\n // Make a items group with selItem to create the new MG(molding group) array of selItem\r\n let itemsForGroup = [selItem];\r\n let i = 0;\r\n while (i < itemsForGroup.length) {\r\n layer.items.toArray().forEach(curItem => {\r\n if (\r\n !itemsForGroup.some(it => it.id === curItem.id) &&\r\n curItem.category === 'cabinet' &&\r\n MoldingUtils.isSameMoldingLayoutpos(curItem, itemsForGroup[i]) &&\r\n MoldingUtils.isItemSnappedItem(itemsForGroup[i], curItem)\r\n ) {\r\n itemsForGroup.push(curItem);\r\n }\r\n });\r\n i++;\r\n }\r\n\r\n // Create the new MG(molding group) array of selItem\r\n let new_MGArray = MoldingUtils.getAllMoldingGroups(layer, itemsForGroup);\r\n\r\n // get molding settings of update molding from adjoined item's molding\r\n let changeMoldings = [];\r\n new_MGArray.forEach(mg => {\r\n if (mg.items.some(it => it.id === selItem.id) && mg.items.length > 1) {\r\n const destItem = mg.items.find(it => it.id !== selItem.id);\r\n const destMolding = destItem.molding.find(\r\n md => md.location_type === mg.location_type\r\n );\r\n\r\n // if current item has not destination molding then set it to the current molding\r\n if (\r\n !isEmpty(destMolding) &&\r\n !selItem.molding.some(\r\n md => md.location_type === destMolding.location_type\r\n )\r\n ) {\r\n // only update with the same height cabinet or update the bottom molding setting\r\n // itemActions.setMolding(destMoldings[i], false);\r\n changeMoldings.push(destMolding);\r\n } else if (\r\n isEmpty(destMolding) &&\r\n selItem.molding.some(md => md.location_type === mg.location_type)\r\n ) {\r\n // if current item has more molding than adjoined then remove theses moldings\r\n // itemActions.setMolding(selItem.molding[i], false);\r\n changeMoldings.push(\r\n selItem.molding.find(md => md.location_type === mg.location_type)\r\n );\r\n }\r\n }\r\n });\r\n\r\n let regenMGItemList = [];\r\n // An old MG and a new MG include a same item && The location_type of Two MGs are same\r\n // Then replace the old MG with the new MG\r\n temp_MGArray = temp_MGArray.filter(oldMG => {\r\n const filteredNewMGList = new_MGArray.filter(\r\n mg => mg.location_type === oldMG.location_type\r\n );\r\n if (isEmpty(filteredNewMGList)) {\r\n return true;\r\n }\r\n for (let k = 0; k < filteredNewMGList.length; k++) {\r\n const newMG = filteredNewMGList[k];\r\n if (oldMG.items.some(it => it.id === selItem.id)) {\r\n // if current action is a seprating item from group, then have to regenerate the MGs of old snapped items\r\n if (\r\n oldMG.items.filter(\r\n oIt => !newMG.items.some(nIt => nIt.id === oIt.id)\r\n ).length > 0\r\n ) {\r\n oldMG.items.forEach(oIt => {\r\n if (\r\n oIt.id !== selItem.id &&\r\n !regenMGItemList.some(rIt => rIt.id === oIt.id)\r\n )\r\n regenMGItemList.push(oIt);\r\n });\r\n }\r\n }\r\n // remove the old MG meshes\r\n for (let i = 0; i < oldMG.items.length; i++) {\r\n const oItem = oldMG.items[i];\r\n for (let j = 0; j < newMG.items.length; j++) {\r\n const nItem = newMG.items[j];\r\n if (oItem.id === nItem.id) {\r\n deleteMGMesh(oldMG, planData, mode);\r\n // if (oldMG.items.length > 1) {\r\n // // separating item from group\r\n // oldMG.items.splice(i, 1);\r\n // // update the old molding group info\r\n // const mIdx = oldMG.items[0].molding.findIndex(\r\n // m => m.location_type == oldMG.location_type\r\n // );\r\n // if (mIdx >= 0) {\r\n // let molding = oldMG.items[0].molding[mIdx];\r\n // oldMG = MoldingUtils.createMonldingGroup(\r\n // oldMG,\r\n // layer,\r\n // molding,\r\n // planData.catalog\r\n // );\r\n // addMGMesh(oldMG, planData, layer);\r\n // }\r\n // return true;\r\n // }\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n if (changeMoldings.length === 0 && isEnableMolding) {\r\n // refresh mesh of the updating molding groups\r\n new_MGArray.forEach((mg, index) => {\r\n if (\r\n mg.items[0].molding.some(\r\n mol => mol.location_type === mg.location_type\r\n )\r\n ) {\r\n let molding = mg.items[0].molding.filter(\r\n mol => mol.location_type === mg.location_type\r\n )[0];\r\n if (\r\n mg.molding === null ||\r\n mg.molding.itemID !== mol.itemID ||\r\n mg.lines === null ||\r\n mg.points === null\r\n ) {\r\n if (mg.molding !== null && mg.molding.itemID !== molding.itemID) {\r\n deleteMGMesh(mg, planData, mode);\r\n }\r\n mg = MoldingUtils.createMonldingGroup(\r\n mg,\r\n layer,\r\n molding,\r\n planData.catalog\r\n );\r\n }\r\n if (!mg.meshes.length) {\r\n addMGMesh(mg, planData, layer);\r\n }\r\n } else {\r\n deleteMGMesh(mg, planData, mode);\r\n }\r\n });\r\n }\r\n\r\n new_MGArray.forEach(mg => temp_MGArray.push(mg));\r\n\r\n regenMGItemList.forEach(it => {\r\n temp_MGArray = updateMoldingGroupArray(\r\n temp_MGArray,\r\n it,\r\n planData,\r\n layer,\r\n itemActions,\r\n mode,\r\n cnt\r\n );\r\n });\r\n\r\n if (changeMoldings.length > 0 && itemActions !== null) {\r\n setTimeout(() => {\r\n changeMoldings.forEach(chMolding => {\r\n itemActions.setMolding(chMolding, false);\r\n });\r\n }, 200);\r\n }\r\n\r\n return temp_MGArray;\r\n } catch (e) {\r\n console.log('update molding catched :', e);\r\n return MGArray;\r\n }\r\n}\r\n\r\nexport function removeSelItemMesh(MGArray, selItem, planData, mode) {\r\n if (selItem) {\r\n if (!selItem.selected) {\r\n return;\r\n }\r\n MGArray.forEach(mg => {\r\n if (mg.items.some(it => it.id === selItem.id))\r\n deleteMGMesh(mg, planData, mode);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Flip door handle\r\n * @param item Scene state item ( redux )\r\n * @param item3D Mesh\r\n * @param {Boolean} flip Determines handle position.\r\n * @note When `flip` is set\r\n *\r\n * `true`\r\n * * Left side door - use left handle (LL)\r\n * * Right side door - use right handle (RR)\r\n *\r\n * `false`\r\n * * Left side door - use right handle (LR)\r\n * * Right side door - use left handle (RL)\r\n *\r\n * And one-door-cabinet is the same case with the left door of two-door-cabinet\r\n */\r\nexport function updateDoorHandleMesh(_, item3D, flip) {\r\n if (!item3D) {\r\n console.error('Item mesh is undefined.');\r\n return;\r\n }\r\n\r\n /**\r\n * Mesh whose name pass this regexp is a place holder for a door\r\n * which is the parent or grand parent of a door mesh and its handles\r\n */\r\n let doorReg = /ph_.*[^(drawer)]_door(?:_(L|R))?(?:_[1-9])?$/;\r\n let doorHandleReg = /ph_.*_door_.*_handle_(L|R)?(_[1-9])?/;\r\n\r\n item3D.traverse(child => {\r\n /**\r\n * Hold the name of the place holder for door and its position\r\n * @type {[string,\"L\"|\"R\"|undefined]}\r\n */\r\n let doorRegResult = doorReg.exec(child.name);\r\n if (doorRegResult) {\r\n // `child` is place holder for door mesh, and also grand parent of on[0]e\r\n let phDoor = child.children[0];\r\n if (!phDoor) {\r\n return console.error('Group is no valid.');\r\n }\r\n\r\n let doorHandle = null;\r\n let phRight = null;\r\n let phLeft = null;\r\n\r\n // Find door_handle, ph_left, ph_right 3D item\r\n phDoor.traverse(childOfDoor => {\r\n /**\r\n * @type {[string, \"L\"|\"R\"]}\r\n */\r\n let result = doorHandleReg.exec(childOfDoor.name);\r\n if (result !== null) {\r\n // `childOfDoor` is place holder for door handle\r\n\r\n switch (result[1]) {\r\n case 'L':\r\n phLeft = childOfDoor;\r\n break;\r\n case 'R':\r\n phRight = childOfDoor;\r\n break;\r\n default:\r\n console.error('Place holder type should be L or R.');\r\n return;\r\n }\r\n\r\n if (childOfDoor.children.length !== 0) {\r\n // It has a door handle\r\n doorHandle = childOfDoor.children[0];\r\n }\r\n }\r\n });\r\n\r\n // Change door handle position\r\n if (doorHandle && phLeft && phRight) {\r\n // Remove handles for re-addition\r\n if (phLeft.children.length) {\r\n phLeft.remove(doorHandle);\r\n }\r\n if (phRight.children.length) {\r\n phRight.remove(doorHandle);\r\n }\r\n\r\n switch (doorRegResult[1]) {\r\n case undefined: // Single door cabinet\r\n case 'R': // Right side door\r\n (flip ? phRight : phLeft).add(doorHandle);\r\n break;\r\n case 'L': // Left side door\r\n (flip ? phLeft : phRight).add(doorHandle);\r\n break;\r\n }\r\n } else {\r\n console.error('door_handle or ph_left or ph_right is null.');\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function addWarningBox(itemId, altitude, planData) {\r\n deleteSpecifiedMeshObjects('WarningBox' + itemId);\r\n let item3D =\r\n planData.sceneGraph.layers[planData.sceneData.selectedLayer].items[itemId];\r\n if (item3D == undefined) return;\r\n let altitudeLength = convert(altitude).from('in').to('cm');\r\n let sBounding = item3D.children[0].userData;\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let height = sBounding.max.y - sBounding.min.y;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let warnBoxGeom = new Three.BoxGeometry(width, height, depth);\r\n let warnBoxObj = new Three.Mesh(\r\n warnBoxGeom,\r\n new Three.MeshBasicMaterial({\r\n color: 0xff2200,\r\n opacity: 0.8,\r\n transparent: true,\r\n blending: Three.MultiplyBlending\r\n })\r\n );\r\n let box = new Three.BoxHelper(warnBoxObj, 0x000000);\r\n box.material.linewidth = 2;\r\n box.material.depthTest = false;\r\n box.renderOrder = 200;\r\n warnBoxObj.add(box);\r\n warnBoxObj.position.set(\r\n item3D.position.x,\r\n altitudeLength + item3D.position.y + height / 2,\r\n item3D.position.z\r\n );\r\n warnBoxObj.rotation.set(\r\n item3D.rotation.x,\r\n item3D.rotation.y,\r\n item3D.rotation.z\r\n );\r\n warnBoxObj.name = 'WarningBox' + itemId;\r\n // planData.plan.add(warnBoxObj);\r\n}\r\nexport function checkCabinetOverlap(itemPos, itemRect, holeItems, planData) {\r\n if (holeItems.length) {\r\n let depth = itemRect.size.depth;\r\n let i;\r\n for (i = 0; i < holeItems.length; i++) {\r\n let hole = holeItems[i];\r\n let holeAlti = hole.altitude;\r\n if (holeAlti >= depth) continue;\r\n if (Math.abs(Math.sin(itemRect.rotRad)) === 1) {\r\n if (\r\n itemPos.y + itemRect.size.width / 2 >= hole.y - hole.width / 2 &&\r\n itemPos.y - itemRect.size.width / 2 <= hole.y + hole.width / 2 &&\r\n (itemRect.rotRad == 0 || itemRect.rotRad == -Math.PI / 2\r\n ? itemPos.x <= hole.x && itemPos.x + itemRect.size.height >= hole.x\r\n : itemPos.x >= hole.x && itemPos.x - itemRect.size.height <= hole.x)\r\n )\r\n break;\r\n } else {\r\n if (\r\n itemPos.x + itemRect.size.width / 2 >= hole.x - hole.width / 2 &&\r\n itemPos.x - itemRect.size.width / 2 <= hole.x + hole.width / 2 &&\r\n (itemRect.rotRad == 0 || itemRect.rotRad == -Math.PI / 2\r\n ? itemPos.y <= hole.y && itemPos.y + itemRect.size.height >= hole.y\r\n : itemPos.y >= hole.y && itemPos.y - itemRect.size.height <= hole.y)\r\n )\r\n break;\r\n }\r\n }\r\n if (i != holeItems.length) {\r\n let altitude = itemRect.itemInfo.properties\r\n .get('altitude')\r\n .get('_length');\r\n let altitudeUnit =\r\n itemRect.itemInfo.properties.get('altitude').get('_unit') || 'cm';\r\n altitude = convert(altitude).from(altitudeUnit).to('cm');\r\n addWarningBox(itemRect.itemInfo.id, altitude, planData);\r\n }\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|