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":"item-loader.js","names":["convert","fromJS","Map","React","useState","Three","SceneCreator","ARROW_COLOR","BASE_CABINET_LAYOUTPOS","OBJTYPE_GROUP","OBJTYPE_MESH","SHADE_DARK_PURPLE_COLOR","SHAPE_SVG_DEPTH","SHAPE_SVG_PADDING","SHAPE_SVG_WIDTH","STATUS_WARNING_COLOR","STATUS_WARNING_LIGHT_COLOR","TALL_CABINET_LAYOUTPOS","UNIT_CENTIMETER","UNIT_INCH","WALL_CABINET_LAYOUTPOS","Item","GeomUtils","loadGLTF","animateDoor","translateDrawer","paramsCounter","envMap","roughness","metalness","exposure","params","metalness_glossy","paramsModel","cachedObject","render2DItem","element","layer","scene","sizeinfo","layoutpos","is_corner","shape_svg","_useState","_useState2","_slicedToArray","hover","setHover","x","y","rotation","el_DSN","doorStylesKeys","_element","toJS","doorStyle","undefined","doorStyles","Object","keys","includes","is_euro_cds","door_style_name","width","depth","el_euro_length","el_euro_width","el_euro_length_unit","el_euro_width_unit","el_is_euro_cds","el_euro_shape_svg","length","euro_length","euro_width","euro_shape_svg","tempWidth","properties","get","tempDepth","unit","originalWidth","from","to","originalDepth","newWidth","newDepth","padding","angle","textRotation","Math","sin","PI","color","splitStr","txtContent","lineCount","rowCount","type","objSKU","obj","sku_number","dcId","id","skuItem","skuArray","find","el","door_color_id","sku","push","slice","forEach","key","createElement","dy","transform","concat","style","fontWeight","fontSize","textAnchor","fill","display","stroke","selected","strokeWidth","rendered","svg_url","svg_width","svg_depth","url","padding_width","padding_depth","onMouseOver","event","onMouseOut","preserveAspectRatio","pointerEvents","href","height","visibility","cds","filter","cd","itemID","getIn","opacity","postion","points","loadTexture","texture","TextureLoader","load","colorSpace","SRGBColorSpace","wrapS","MirroredRepeatWrapping","wrapT","applyTexture","material","map","needsUpdate","RepeatWrapping","repeat","set","normal","normalMap","uri","normalScale","Vector2","normalScaleX","normalScaleY","lengthRepeatScale","heightRepeatScale","assignUVs","geometry","computeBoundingBox","_geometry$boundingBox","boundingBox","min","max","offset","Vector3","z","range","faceVertexUvs","faces","face","v1","vertices","a","v2","b","v3","c","uvsNeedUpdate","render3DItem","structure_json","mode","arguments","constructor","handle_gltf","i","setIn","newHeight","mainName","structure","model","placeholders","glossness","handleMaterial","counterTop","tempDoorStyles","tempPlaceholders","tPlaceholders","cabinet_door_style_id","tempStructure","_objectSpread","animation","userData","onLoadItem","object","areaMaterial","MeshStandardMaterial","side","DoubleSide","interiortexture","object1","newAltitude","newUnit","scale","baseBox3FromObject","door_animate_offset","matchStr","children","child","door_match","name","match","_child$children$","rotate_match_text","flip_doorhandle","isDoubleDoor","it","_it$name","_it$children","_child$name","_child$name2","_object1$children","_t0$name","_t0$children","tname","endsWith","replace","tmp","item","t0","filterStr","tposArr","_item$name","tpos0","_it$position$x","_it$position","_it$position$y","_it$position2","_tpos0$position$x","_tpos0$position","position","isCorner","_it$position$x2","_it$position3","_it$position$y2","_it$position4","_tpos0$position$x2","_tpos0$position2","center","scalevec","posVec","radius","sqrt","moveBox","BoxGeometry","controlGeom","rotGeom","rotGeoms","upwardsGeom","vLineGeom","BufferGeometry","setAttribute","BufferAttribute","Float32Array","vLineGeom1","vertices1","vLineGeom2","vertices2","vLineGeom3","vertices3","rotFillObj","Mesh","rotFill","MeshPhongMaterial","Color","convertLinearToSRGB","colorWrite","rotStrokeObj","Line","rotStroke","LineBasicMaterial","upObj","MeshBasicMaterial","mBox","transparent","vLine","vLine1","vLine2","vLine3","renderOrder","depthTest","uVec","translateY","translateOnAxis","rotFillObj1","clone","rotStrokeObj1","rotateY","asrtObj","Group","add","visible","setTimeout","getDistances","updateDoorHandleMesh","traverse","MeshPhysicalMaterial","transmission","thickness","transparency","startsWith","reflectivity","open_doors","object_match","isDoor","offsetData","JSON","stringify","objGroup","Promise","resolve","loadGLTFs","phsArray","placeholderStructure","j","phData","phs","split","temp","k","placeholderphs","floor","splitedData","m","unshift","indexOf","_typeof","Array","uData","datas","urlData","submodule","size","replaceUrlData","normalMapData","loadUrl","then","normalUrl","t","mat2","receiveShadow","examplecolor","parseInt","castShadow","addEdgesToMesh","prim","parent","placeholder","_parent","rotateZ","reason","console","log","error","countTopMap","interiorMap","countT","mat3","mat4","emptyBoxHolder","render3DApplianceItem","applianceMaterial","newWidthUnit","newHeightUnit","newDepthUnit","Box3","setFromObject","textureLoader","mat","emissive","render3DLightingItem","objectHeight","objectYPos","inChild","boxEdge","EdgesGeometry","boxEdgeMaterial","boxEdgeLine","LineSegments"],"sources":["../../../src/catalog/utils/item-loader.jsx"],"sourcesContent":["import convert from 'convert-units';\r\nimport { fromJS, Map } from 'immutable';\r\nimport React, { useState } from 'react';\r\nimport * as Three from 'three';\r\nimport * as SceneCreator from '../../../src/components/viewer3d/scene-creator';\r\nimport {\r\n ARROW_COLOR,\r\n BASE_CABINET_LAYOUTPOS,\r\n OBJTYPE_GROUP,\r\n OBJTYPE_MESH,\r\n SHADE_DARK_PURPLE_COLOR,\r\n SHAPE_SVG_DEPTH,\r\n SHAPE_SVG_PADDING,\r\n SHAPE_SVG_WIDTH,\r\n STATUS_WARNING_COLOR,\r\n STATUS_WARNING_LIGHT_COLOR,\r\n TALL_CABINET_LAYOUTPOS,\r\n UNIT_CENTIMETER,\r\n UNIT_INCH,\r\n WALL_CABINET_LAYOUTPOS\r\n} from '../../../src/constants';\r\nimport { Item } from '../../../src/models';\r\nimport * as GeomUtils from './geom-utils';\r\nimport { loadGLTF } from './load-obj';\r\nimport { animateDoor, translateDrawer } from '../../../src/utils/helper';\r\n\r\n// env Map ///////////////\r\nconst paramsCounter = {\r\n envMap: 'HDR',\r\n roughness: 0.6,\r\n metalness: 0.3,\r\n exposure: 1\r\n // debug: true\r\n};\r\nconst params = {\r\n envMap: 'HDR',\r\n roughness: 0.9,\r\n metalness: 0.1,\r\n metalness_glossy: 0.2,\r\n exposure: 1.0\r\n // debug: false\r\n};\r\n\r\nconst paramsModel = {\r\n envMap: 'HDR',\r\n roughness: 0.9,\r\n metalness: 0.2,\r\n exposure: 1.0\r\n // debug: false\r\n};\r\n\r\n// /////////////////////////\r\n\r\nlet cachedObject = {}; // cached Object for quickly load-3d\r\n\r\n// render 2d function//////\r\nexport function render2DItem(\r\n element,\r\n layer,\r\n scene,\r\n sizeinfo,\r\n layoutpos,\r\n is_corner,\r\n shape_svg\r\n) {\r\n const [hover, setHover] = useState(false);\r\n let { x, y, rotation } = element;\r\n let el_DSN = 'el_DSN',\r\n doorStylesKeys = [];\r\n let _element = element.toJS();\r\n if (_element.doorStyle !== undefined) {\r\n if (_element.doorStyle.doorStyles !== undefined) {\r\n doorStylesKeys = Object.keys(_element.doorStyle.doorStyles);\r\n }\r\n }\r\n if (\r\n (doorStylesKeys.includes('euro_length') ||\r\n doorStylesKeys.includes('euro_width') ||\r\n doorStylesKeys.includes('euro_shape_svg')) &&\r\n _element.doorStyle.doorStyles.is_euro_cds\r\n ) {\r\n el_DSN = _element.doorStyle.door_style_name;\r\n } else {\r\n el_DSN = 'el_DSN';\r\n }\r\n let width,\r\n depth,\r\n el_euro_length,\r\n el_euro_width,\r\n el_euro_length_unit,\r\n el_euro_width_unit,\r\n el_is_euro_cds,\r\n el_euro_shape_svg;\r\n if (doorStylesKeys.length > 0) {\r\n el_euro_length = _element.doorStyle.doorStyles.euro_length;\r\n el_euro_width = _element.doorStyle.doorStyles.euro_width;\r\n el_is_euro_cds = _element.doorStyle.doorStyles.is_euro_cds;\r\n el_euro_shape_svg = _element.doorStyle.doorStyles.euro_shape_svg;\r\n }\r\n if (el_euro_length === undefined && el_euro_width === undefined) {\r\n el_DSN = 'el_DSN';\r\n }\r\n if (el_DSN === 'Euro & Frameless') {\r\n // sizeinfo[\"depth\"] = el_euro_length;\r\n // sizeinfo[\"width\"] = el_euro_width;\r\n }\r\n let tempWidth = element.properties.get('width');\r\n let tempDepth = element.properties.get('depth');\r\n width = tempWidth && {\r\n length: tempWidth.get('_length'),\r\n unit: tempWidth.get('_unit')\r\n };\r\n depth = tempDepth && {\r\n length: tempDepth.get('_length'),\r\n unit: tempDepth.get('_unit')\r\n };\r\n let originalWidth = convert(sizeinfo.width).from('in').to('cm');\r\n let originalDepth = convert(sizeinfo.depth).from('in').to('cm');\r\n let newWidth = convert(width.length).from(width.unit).to('cm');\r\n let newDepth = convert(depth.length).from(depth.unit).to('cm');\r\n let padding = convert(SHAPE_SVG_PADDING).from(UNIT_INCH).to(UNIT_CENTIMETER);\r\n let angle = element.rotation + 90;\r\n let textRotation = 0;\r\n if (Math.sin((angle * Math.PI) / 180) < 0) {\r\n textRotation = 180;\r\n }\r\n let color = '#eee';\r\n if (layoutpos == BASE_CABINET_LAYOUTPOS) {\r\n color = '#3f8db3';\r\n }\r\n if (layoutpos == TALL_CABINET_LAYOUTPOS) {\r\n color = '#93b3be';\r\n }\r\n if (layoutpos == WALL_CABINET_LAYOUTPOS) {\r\n color = '#48b08dcc';\r\n }\r\n\r\n const splitStr = [];\r\n const txtContent = [];\r\n const lineCount = 0; //parseInt(((newWidth) / 8 - 0.51).toFixed(), 10) - 1;\r\n const rowCount = 0; //parseInt((element.type.length / lineCount - 0.51).toFixed(), 10);\r\n\r\n // Get type\r\n let type = element.type;\r\n let objSKU = this.obj.sku_number;\r\n if (objSKU.length !== 0) {\r\n let dcId,\r\n doorStyle = element.doorStyle;\r\n if (doorStyle instanceof Map) {\r\n dcId = doorStyle.get('id');\r\n } else {\r\n dcId = doorStyle.id;\r\n }\r\n let skuItem = this.obj.skuArray.find(el => el.door_color_id === dcId);\r\n if (skuItem !== undefined) {\r\n type = skuItem.sku;\r\n }\r\n }\r\n\r\n if (rowCount > 0) {\r\n for (let x = 0; x < rowCount; x++) {\r\n splitStr.push(type.slice(lineCount * x, lineCount * (x + 1)));\r\n }\r\n }\r\n splitStr.push(type.slice(lineCount * rowCount));\r\n splitStr.forEach((el, key) => {\r\n txtContent.push(\r\n <text\r\n key={'text' + key}\r\n x=\"0\"\r\n y={newDepth / 2 - 12}\r\n dy={16 * key}\r\n transform={`translate(${newWidth / 2}, ${\r\n newDepth / 2 + 5\r\n }) scale(1,-1) rotate(${textRotation})`}\r\n // textLength={newWidth - 10}\r\n // lengthAdjust=\"spacingAndGlyphs\"\r\n style={{\r\n fontWeight: 500,\r\n fontSize: '7px',\r\n textAnchor: 'middle',\r\n fill: '#FFF',\r\n display: 'block'\r\n }}\r\n >\r\n {el}\r\n </text>\r\n );\r\n });\r\n let style = {\r\n stroke: element.selected ? '#565658' : '#565658',\r\n strokeWidth: '2px',\r\n fill: color\r\n };\r\n // let arrow_style = { stroke: element.selected ? '#0096fd' : null, strokeWidth: \"2px\", fill: \"#84e1ce\" };\r\n\r\n let rendered = null;\r\n\r\n if (shape_svg || el_euro_shape_svg) {\r\n let svg_url, svg_width, svg_depth;\r\n if (typeof shape_svg == 'string' || typeof el_euro_shape_svg == 'string') {\r\n if (el_DSN === 'Euro & Frameless' && el_is_euro_cds) {\r\n svg_url = el_euro_shape_svg;\r\n svg_width = newWidth;\r\n svg_depth = newDepth;\r\n } else {\r\n svg_url = shape_svg;\r\n svg_width = originalWidth;\r\n svg_depth = originalDepth;\r\n }\r\n } else {\r\n // if (el_DSN === \"Euro & Frameless\" && el_is_euro_cds) {\r\n // // svg_url = el_euro_shape_svg.url;\r\n // } else {\r\n // }\r\n svg_url = shape_svg.url;\r\n svg_width = convert(SHAPE_SVG_WIDTH).from(UNIT_INCH).to(UNIT_CENTIMETER);\r\n svg_depth = convert(SHAPE_SVG_DEPTH).from(UNIT_INCH).to(UNIT_CENTIMETER);\r\n }\r\n\r\n let padding_width = (padding * newWidth) / svg_width;\r\n let padding_depth = (padding * newDepth) / svg_depth;\r\n\r\n rendered = (\r\n <g\r\n onMouseOver={event => {\r\n setHover(true);\r\n }}\r\n onMouseOut={event => {\r\n setHover(false);\r\n }}\r\n transform={`translate(${x},${y})`}\r\n >\r\n <g transform={`rotate(${rotation})`}>\r\n <g\r\n transform={`translate(${-newWidth / 2 - padding_width},${\r\n -newDepth / 2 - padding_depth\r\n })`}\r\n >\r\n <image\r\n preserveAspectRatio=\"none\"\r\n style={{ pointerEvents: 'none' }}\r\n href={svg_url}\r\n width={`${newWidth + 2 * padding_width}`}\r\n height={`${newDepth + 2 * padding_depth}`}\r\n transform={`scale(1, -1)`}\r\n x=\"0\"\r\n y={`${-newDepth - 2 * padding_depth}`}\r\n />\r\n <rect\r\n x={`${padding_width}`}\r\n y={`${padding_depth}`}\r\n width={`${newWidth}`}\r\n height={`${newDepth}`}\r\n visibility={\r\n element.toJS().doorStyle.doorStyles !== undefined\r\n ? element.toJS().doorStyle.doorStyles &&\r\n element.toJS().doorStyle.doorStyles.cds &&\r\n element.toJS().doorStyle.doorStyles.cds.length != 0 &&\r\n element\r\n .toJS()\r\n .doorStyle.doorStyles.cds.filter(\r\n cd => cd.itemID == element.getIn(['itemID'])\r\n )\r\n ? 'hidden'\r\n : 'visible'\r\n : 'hidden'\r\n }\r\n style={{\r\n pointerEvents: 'all',\r\n opacity: 0.7,\r\n postion: 'relative'\r\n }}\r\n fill={STATUS_WARNING_LIGHT_COLOR}\r\n stroke={STATUS_WARNING_COLOR}\r\n strokeWidth=\"2px\"\r\n ></rect>\r\n <g transform={`translate(${padding_width},${padding_depth})`}>\r\n {txtContent}\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n );\r\n } else {\r\n rendered = (\r\n <g\r\n onMouseOver={event => {\r\n setHover(true);\r\n }}\r\n onMouseOut={event => {\r\n setHover(false);\r\n }}\r\n transform={`translate(${x},${y})`}\r\n >\r\n <g transform={`rotate(${rotation})`}>\r\n <g transform={`translate(${-newWidth / 2},${-newDepth / 2})`}>\r\n {newDepth > 15 ? (\r\n [\r\n <rect\r\n key=\"base\"\r\n x=\"0\"\r\n y=\"12\"\r\n width={newWidth}\r\n height={newDepth - 12}\r\n style={style}\r\n />,\r\n <polygon\r\n key=\"door\"\r\n style={style}\r\n points={`0,9 ${newWidth},9 ${newWidth},6 ${newWidth - 5},6 ${\r\n newWidth - 5\r\n },3 ${newWidth - 2},3 ${newWidth - 2} 0 ${newWidth - 10} 0 ${\r\n newWidth - 10\r\n },3 ${newWidth - 7},3 ${newWidth - 7},6 0 6`}\r\n />\r\n ]\r\n ) : (\r\n <rect\r\n key=\"base\"\r\n x=\"0\"\r\n y=\"0\"\r\n width={newWidth}\r\n height={newDepth}\r\n style={style}\r\n />\r\n )}\r\n {/* {<text key=\"text\"\r\n x=\"0\"\r\n y=\"0\"\r\n // dx=\"10\"\r\n // dy=\"10\"\r\n transform={`translate(${newWidth / 2}, ${newDepth / 2 + 5}) scale(1,-1) rotate(${textRotation})`}\r\n // textLength={newWidth - 10}\r\n // lengthAdjust=\"spacingAndGlyphs\"\r\n style={{ fontWeight:800, fontSize:'16px', textAnchor: \"middle\", fill:'#FFF', display: hover || element.selected? 'block' : 'none'}}>\r\n {element.type}\r\n </text>} */}\r\n {txtContent}\r\n {/* { element.selected &&\r\n (<g key=\"duplicated\" style={{cursor:'pointer'}}>\r\n <image transform={`scale(1,-1)`} href=\"/assets/img/svg/duplicate_object_left.svg\" x={-10} y={-newDepth/2 - 15} height=\"20\" width=\"20\" />\r\n <image transform={`scale(1,-1)`} href=\"/assets/img/svg/duplicate_object_right.svg\" x={newWidth - 10} y={-newDepth / 2 - 15} height=\"20\" width=\"20\" />\r\n </g>)\r\n } */}\r\n </g>\r\n </g>\r\n {/* { element.selected &&\r\n (\r\n <g key=\"action\" transform={`translate(${-newWidth / 2},${newDepth / 2})`} style={{cursor:'pointer'}}>\r\n <image transform={`rotate(180, 10 ,15) `} href=\"/assets/img/svg/2d_delete_object1.svg\" x=\"0\" y=\"5\" height=\"20\" width=\"20\" data-part='remove'/>\r\n <image transform={`rotate(180, ${newWidth - 10} ,15)`} href=\"/assets/img/svg/duplicate_object_right.svg\" x={newWidth-20} y=\"5\" height=\"20\" width=\"20\" data-part='duplicate'/>\r\n </g>\r\n )\r\n } */}\r\n </g>\r\n );\r\n }\r\n\r\n return rendered;\r\n}\r\n// end of render 2d function /////////////////////////\r\n\r\nexport function loadTexture(url) {\r\n let texture = new Three.TextureLoader().load(url);\r\n texture.colorSpace = Three.SRGBColorSpace;\r\n texture.wrapS = Three.MirroredRepeatWrapping;\r\n texture.wrapT = Three.MirroredRepeatWrapping;\r\n return texture;\r\n}\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\nconst assignUVs = geometry => {\r\n geometry.computeBoundingBox();\r\n\r\n let { min, max } = geometry.boundingBox;\r\n\r\n let offset = new Three.Vector3(0 - min.x, 0 - min.y, 0 - min.z);\r\n let range = new Three.Vector3(max.x - min.x, max.y - min.y, max.z - min.z);\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.Vector3(\r\n (v1.x + offset.x) / range.x,\r\n (v1.y + offset.y) / range.y,\r\n (v1.z + offset.z) / range.z\r\n ),\r\n new Three.Vector3(\r\n (v2.x + offset.x) / range.x,\r\n (v2.y + offset.y) / range.y,\r\n (v1.z + offset.z) / range.z\r\n ),\r\n new Three.Vector3(\r\n (v3.x + offset.x) / range.x,\r\n (v3.y + offset.y) / range.y,\r\n (v1.z + offset.z) / range.z\r\n )\r\n ];\r\n });\r\n\r\n geometry.uvsNeedUpdate = true;\r\n};\r\n\r\n/**\r\n * Render 3D Item\r\n * @param {Item} element Rendering item\r\n * @param sizeinfo Dimesion of the item\r\n * @param structure_json Structure of the item such as place holders and meshes, etc\r\n */\r\nexport function render3DItem(\r\n element,\r\n layer,\r\n scene,\r\n sizeinfo,\r\n structure_json,\r\n is_corner,\r\n mode = null\r\n) {\r\n if (element.doorStyle.constructor !== Map) {\r\n element = element.set('doorStyle', fromJS(element.doorStyle));\r\n }\r\n\r\n if (element.doorStyle.toJS().handle_gltf !== '') {\r\n // Check element has doorHandle\r\n for (var i = 1; i < 10; i++) {\r\n element = element.setIn(\r\n ['doorStyle', 'doorStyles', 'door_handle_' + i + '_gltf'],\r\n element.doorStyle.toJS().handle_gltf\r\n );\r\n element = element.setIn(\r\n ['doorStyle', 'doorStyles', 'fixed_drawer_door_handle_' + i + '_gltf'],\r\n element.doorStyle.toJS().handle_gltf\r\n );\r\n element = element.setIn(\r\n ['doorStyle', 'doorStyles', 'drawer_door_handle_' + i + '_gltf'],\r\n element.doorStyle.toJS().handle_gltf\r\n );\r\n }\r\n }\r\n let width = { length: sizeinfo.width, unit: 'in' };\r\n let depth = { length: sizeinfo.depth, unit: 'in' };\r\n let height = { length: sizeinfo.height, unit: 'in' };\r\n let newWidth = convert(width.length).from(width.unit).to('in');\r\n let newDepth = convert(depth.length).from(depth.unit).to('in');\r\n let newHeight = convert(height.length).from(height.unit).to('in');\r\n let mainName = ''; // to get name structure//\r\n if (element.properties.get('width'))\r\n newWidth = element.getIn(['properties', 'width', '_length']);\r\n if (element.properties.get('depth'))\r\n newDepth = element.getIn(['properties', 'depth', '_length']);\r\n if (element.properties.get('height'))\r\n newHeight = element.getIn(['properties', 'height', '_length']);\r\n\r\n var structure = structure_json;\r\n // structure.push({name:'model', url: '/assets/model/DCM.gltf'});\r\n structure.model = '/assets/model/DCM.gltf';\r\n var placeholders = structure.placeholders;\r\n let doorStyles = null;\r\n let color = 0xffffff,\r\n glossness = 1,\r\n handleMaterial = {};\r\n let counterTop = element.counterTop;\r\n if (layer.toJS().counterTop.uri) {\r\n counterTop.uri = layer.toJS().counterTop.uri;\r\n }\r\n\r\n if ('name' in element.doorStyle) {\r\n doorStyles = new Map(element.doorStyle.doorStyles);\r\n color = element.doorStyle.color;\r\n glossness = element.doorStyle.glossness;\r\n handleMaterial.metalness = element.doorStyle.metalness;\r\n handleMaterial.roughness = element.doorStyle.roughness;\r\n } else if (element.doorStyle != null && element.doorStyle) {\r\n doorStyles = element.doorStyle.get('doorStyles');\r\n color = element.doorStyle.get('color');\r\n glossness = element.doorStyle.get('glossness');\r\n handleMaterial.metalness = element.doorStyle.get('metalness');\r\n handleMaterial.roughness = element.doorStyle.get('roughness');\r\n }\r\n if (color === undefined) color = '#ffffff';\r\n if (glossness === undefined) glossness = 1;\r\n const tempDoorStyles = doorStyles.toJS();\r\n let tempPlaceholders = structure.tempPlaceholders;\r\n var tPlaceholders = tempPlaceholders.find(el => {\r\n return el.id === tempDoorStyles.cabinet_door_style_id;\r\n });\r\n if (tPlaceholders !== undefined) {\r\n placeholders = tPlaceholders.placeholders;\r\n const tempStructure = {\r\n ...tPlaceholders.structure,\r\n animation: structure.animation,\r\n placeholders: structure.placeholders,\r\n tempPlaceholders: structure.tempPlaceholders,\r\n model: structure.model\r\n };\r\n structure = tempStructure;\r\n }\r\n let userData = structure.animation;\r\n // ///////////////////////////\r\n let onLoadItem = object => {\r\n var areaMaterial = new Three.MeshStandardMaterial();\r\n areaMaterial.side = Three.DoubleSide;\r\n // areaMaterial.envMap = textureCube;\r\n if (doorStyles != null)\r\n if (doorStyles.get('base') != undefined) {\r\n let normalMap = doorStyles.get('base');\r\n let interiortexture = loadTexture(normalMap);\r\n applyTexture(areaMaterial, interiortexture, 100, 100);\r\n }\r\n let object1 = object;\r\n let newAltitude = element.properties.get('altitude').get('_length');\r\n let newUnit = element.properties.get('altitude').get('_unit') || 'in';\r\n newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);\r\n let _element = element.toJS();\r\n if (!_element.doorStyle.doorStyles.is_euro_cds) {\r\n object1.scale.set(\r\n (100 * newWidth) / sizeinfo.width,\r\n (100 * newHeight) / sizeinfo.height,\r\n (100 * newDepth) / sizeinfo.depth\r\n );\r\n } else {\r\n object1.scale.set(100, 100, 100);\r\n }\r\n // Normalize the origin of the object\r\n let boundingBox = GeomUtils.baseBox3FromObject(object1);\r\n object1.userData = boundingBox;\r\n let door_animate_offset = {};\r\n const matchStr = /\\d_(door[^LR1-9]*)(_[LR])?(_[1-9])?$/;\r\n object1.children.forEach(child => {\r\n let door_match = child.name.match(matchStr);\r\n if (door_match && door_match.length > 2) {\r\n let rotate_match_text = element.properties.toJS().flip_doorhandle\r\n ? 'rotate_L'\r\n : 'rotate_R';\r\n if (door_match[2] === '_L') {\r\n rotate_match_text = element.properties.toJS().flip_doorhandle\r\n ? 'rotate_R'\r\n : 'rotate_L';\r\n }\r\n let isDoubleDoor = door_match && door_match[2] !== undefined;\r\n child.children[0]?.children.forEach(it => {\r\n if (\r\n it?.name?.includes('handle') &&\r\n it.children?.length &&\r\n is_corner === 1 &&\r\n isDoubleDoor\r\n ) {\r\n const tname = child?.name?.endsWith('_L')\r\n ? child.name.replace('_L', '_R')\r\n : child?.name?.replace('_R', '_L');\r\n\r\n const tmp =\r\n object1?.children?.filter(item => item?.name === tname) || [];\r\n const t0 = tmp[0];\r\n const filterStr = t0?.name?.endsWith('_L')\r\n ? 'rotate_L'\r\n : 'rotate_R';\r\n\r\n const tposArr =\r\n t0?.children?.[0]?.children?.filter(item =>\r\n item?.name?.endsWith(filterStr)\r\n ) || [];\r\n const tpos0 = tposArr[0];\r\n\r\n if (it.name.includes('base_end')) {\r\n door_animate_offset[child.name] = {\r\n x: -2 * (it.position?.x ?? 0) - 0.12,\r\n y: it.position?.y ?? 0,\r\n z: -(tpos0?.position?.x ?? 0) + 0.12,\r\n isCorner: true\r\n };\r\n } else {\r\n door_animate_offset[child.name] = {\r\n x: -(it.position?.x ?? 0) - 0.04,\r\n y: it.position?.y ?? 0,\r\n z: 2 * (tpos0?.position?.x ?? 0) - 0.01,\r\n isCorner: true\r\n };\r\n }\r\n } else if (\r\n it.name.endsWith(rotate_match_text) &&\r\n door_animate_offset[child.name] == undefined\r\n ) {\r\n door_animate_offset[child.name] = {\r\n x: it.position.x,\r\n y: it.position.y,\r\n z: it.position.z,\r\n isCorner: false\r\n };\r\n }\r\n });\r\n }\r\n });\r\n object1.userData.door_animate_offset = door_animate_offset;\r\n object1.userData.animation = userData;\r\n\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 object1.position.x -= center[0];\r\n object1.position.y -=\r\n center[1] - (boundingBox.max.y - boundingBox.min.y) / 2;\r\n object1.position.z -= center[2];\r\n object1.position.y += newAltitude;\r\n\r\n if (element.selected) {\r\n // if object is selected\r\n // save object transform info///\r\n let scalevec = new Three.Vector3(\r\n object1.scale.x,\r\n object1.scale.y,\r\n object1.scale.z\r\n );\r\n let posVec = new Three.Vector3(\r\n object1.position.x,\r\n object1.position.y,\r\n object1.position.z\r\n );\r\n\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 object1.position.set(0, 0, 0);\r\n object1.rotation.set(0, 0, 0);\r\n\r\n //let box = new Three.BoxHelper(object, 0xffffff);\r\n //box.material.lineWidth = 5;\r\n //box.renderOrder = 1000;\r\n //box.material.depthTest = false;\r\n //object.add(box);\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\r\n // upwards Geometry/////////// Move up Object\r\n let upwardsGeom = GeomUtils.upwardsGeom();\r\n\r\n // vertical line - 4 lines around object//////////////////////////\r\n let vLineGeom = new Three.BufferGeometry();\r\n\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\r\n vLineGeom.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices), 3)\r\n );\r\n\r\n let vLineGeom1 = new Three.BufferGeometry();\r\n\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\r\n vLineGeom1.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices1), 3)\r\n );\r\n\r\n let vLineGeom2 = new Three.BufferGeometry();\r\n\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\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\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: new Three.Color(0x000000).convertLinearToSRGB(),\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({\r\n color: new Three.Color(0xffffff).convertLinearToSRGB(),\r\n colorWrite: true\r\n })\r\n );\r\n rotFillObj.name = 'rotate';\r\n\r\n let upObj = new Three.Mesh(\r\n upwardsGeom,\r\n new Three.MeshBasicMaterial({\r\n color: new Three.Color(0xffffff).convertLinearToSRGB(),\r\n side: Three.DoubleSide\r\n })\r\n );\r\n upObj.name = 'transUp';\r\n\r\n let mBox = new Three.Mesh(\r\n moveBox,\r\n new Three.MeshBasicMaterial({\r\n color: new Three.Color(0xdd6699).convertLinearToSRGB(),\r\n side: Three.DoubleSide,\r\n transparent: true,\r\n opacity: 0.4\r\n })\r\n );\r\n\r\n let color = new Three.Color(\r\n SHADE_DARK_PURPLE_COLOR\r\n ).convertLinearToSRGB();\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 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 // translate vector to center of object\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\r\n vLine.translateY(0.1);\r\n vLine1.translateY(0.1);\r\n vLine2.translateY(0.1);\r\n vLine3.translateY(0.1);\r\n\r\n //rotObj.translateOnAxis(uVec, 1);\r\n upObj.translateOnAxis(uVec, 1);\r\n upObj.translateY(max.y - min.y);\r\n\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\r\n // other side rotate object\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 rotFillObj.translateY(0.1);\r\n rotFillObj1.translateY(0.1);\r\n rotStrokeObj.translateY(0.1);\r\n rotStrokeObj1.translateY(0.1);\r\n\r\n // assets Objects group includes rotate objects...\r\n let asrtObj = new Three.Group();\r\n // asrtObj.add(rotFillObj);\r\n // asrtObj.add(rotFillObj1);\r\n // asrtObj.add(rotStrokeObj);\r\n // asrtObj.add(rotStrokeObj1);\r\n //asrtObj.add(upObj);\r\n asrtObj.add(vLine);\r\n asrtObj.add(vLine1);\r\n asrtObj.add(vLine2);\r\n asrtObj.add(vLine3);\r\n mBox.visible = false;\r\n asrtObj.add(mBox);\r\n asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);\r\n //asrtObj.translateY(newAltitude / scalevec.y);\r\n asrtObj.name = 'TransformGizmo';\r\n // add assets Objects Group\r\n object1.add(asrtObj);\r\n\r\n // recover objects transform\r\n object1.position.x = posVec.x;\r\n object1.position.y = posVec.y;\r\n object1.position.z = posVec.z;\r\n object1.scale.set(scalevec.x, scalevec.y, scalevec.z);\r\n setTimeout(() => {\r\n SceneCreator.getDistances(layer);\r\n }, 100);\r\n }\r\n\r\n let flip_doorhandle = element.properties.get('flip_doorhandle');\r\n if (flip_doorhandle) {\r\n SceneCreator.updateDoorHandleMesh(element, object1, true);\r\n }\r\n\r\n object1.traverse(obj => {\r\n if (obj.type === OBJTYPE_MESH) {\r\n const { name } = obj;\r\n if (name.match(/_door_.*_glass_/)) {\r\n let material = new Three.MeshPhysicalMaterial({\r\n roughness: 0,\r\n transmission: 1,\r\n thickness: 0.5, // Add refraction!\r\n transparency: 0.8\r\n });\r\n obj.material = material;\r\n } else if (name.startsWith('sink_')) {\r\n // texture = loadTexture('/assets/img/texture/steel.jpg');\r\n\r\n let material;\r\n // Get color from name\r\n if (name.includes('black') || name.includes('white')) {\r\n let color;\r\n if (name.includes('black')) {\r\n color = new Three.Color(0x555555).convertLinearToSRGB();\r\n } else {\r\n color = 0xffffff;\r\n }\r\n material = new Three.MeshPhysicalMaterial({\r\n roughness: 0.5,\r\n metalness: 0,\r\n // transmission: 1,\r\n transparent: true,\r\n opacity: 1,\r\n thickness: 0.5, // Add refraction!\r\n // transparency: 0.8,\r\n color: color,\r\n side: Three.DoubleSide\r\n });\r\n } else {\r\n // if (name.includes('chrome')) {\r\n material = new Three.MeshPhysicalMaterial({\r\n roughness: 0.2,\r\n metalness: 1,\r\n reflectivity: 0.5,\r\n color: new Three.Color(0xdddddd).convertLinearToSRGB()\r\n });\r\n }\r\n obj.material = material;\r\n }\r\n }\r\n if (element.toJS().properties.open_doors) {\r\n let open_doors = element.toJS().properties.open_doors;\r\n let object_match =\r\n obj.name.match(/\\d_(interior_drawer[^LR1-9]*)(_[LR1-9])?$/) ||\r\n obj.name.match(matchStr);\r\n if (object_match && object_match.length > 2) {\r\n const isDoor = object_match[1] === 'door';\r\n if (isDoor) {\r\n const offsetData = object1.userData.door_animate_offset[obj.name];\r\n // Open Door\r\n animateDoor(\r\n offsetData,\r\n obj,\r\n open_doors,\r\n element.toJS(),\r\n is_corner,\r\n 'Opened2D'\r\n );\r\n } else {\r\n // Open Drawer\r\n translateDrawer(element.toJS(), obj, open_doors, 'Opened2D');\r\n }\r\n }\r\n }\r\n });\r\n\r\n return object1;\r\n };\r\n // keys in structure\r\n let keys = Object.keys(structure);\r\n // if exist in cached Objects\r\n if (\r\n element.type +\r\n color +\r\n 'doorStyle' +\r\n JSON.stringify(doorStyles.toJS()) +\r\n element.counterTop.uri in\r\n cachedObject\r\n ) {\r\n let objGroup =\r\n cachedObject[\r\n element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())\r\n ].clone();\r\n return Promise.resolve(onLoadItem(objGroup.clone()));\r\n }\r\n\r\n // base Object/////\r\n let objGroup = null;\r\n\r\n let loadGLTFs = function (i) {\r\n if (keys[i] === 'animation') {\r\n // if animation info\r\n i++;\r\n return loadGLTFs(i);\r\n }\r\n if (keys[i] === 'placeholders') {\r\n // if placeholders group\r\n i++;\r\n return loadGLTFs(i);\r\n }\r\n if (i === keys.length) {\r\n // if end of keys\r\n cachedObject[\r\n element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())\r\n ] = objGroup.clone(); //register to cachedObject\r\n return onLoadItem(\r\n cachedObject[\r\n element.type + color + 'doorStyle' + JSON.stringify(doorStyles.toJS())\r\n ].clone()\r\n );\r\n }\r\n if (keys[i] === 'base') {\r\n // if base Objects\r\n i++;\r\n return loadGLTFs(i);\r\n }\r\n\r\n let phsArray = [];\r\n let placeholderStructure = placeholders[keys[i]];\r\n if (placeholderStructure == undefined || placeholderStructure.length == 0) {\r\n i++;\r\n return loadGLTFs(i);\r\n }\r\n\r\n for (let j = 0; j < placeholderStructure.length; j++) {\r\n let phData = placeholderStructure[j];\r\n let phs = phData.split('/');\r\n\r\n let temp = phData.split('/');\r\n // placeholder remake////////////////\r\n for (let k = 0; k < phs.length; k++) {\r\n if (phs[k] in placeholders) {\r\n let placeholderphs = placeholders[phs[k]];\r\n let key = placeholderStructure.length / placeholderphs.length;\r\n phs[k] = placeholderphs[Math.floor(j / key)];\r\n let splitedData = phs[k].split('/');\r\n\r\n if (splitedData.length > 1) {\r\n phs[k] = splitedData[splitedData.length - 1];\r\n\r\n for (let m = splitedData.length - 2; m >= 0; m--) {\r\n phs.unshift(splitedData[m]);\r\n temp.unshift(splitedData[m]);\r\n }\r\n }\r\n\r\n k = -1;\r\n continue;\r\n }\r\n if (phs[k].indexOf('ph') == -1) {\r\n let url = structure[temp[k - 1]];\r\n\r\n if (\r\n temp[k - 1] +\r\n '_doorStyle' +\r\n element.type +\r\n 'doorStyle' +\r\n JSON.stringify(doorStyles.toJS()) in\r\n structure\r\n ) {\r\n if (\r\n structure[\r\n temp[k - 1] +\r\n '_doorStyle' +\r\n element.type +\r\n 'doorStyle' +\r\n JSON.stringify(doorStyles.toJS())\r\n ] != null\r\n ) {\r\n url =\r\n structure[\r\n temp[k - 1] +\r\n '_doorStyle' +\r\n element.type +\r\n 'doorStyle' +\r\n JSON.stringify(doorStyles.toJS())\r\n ];\r\n }\r\n }\r\n if (typeof url == Array) url = url[0];\r\n\r\n let uData = url.split('/');\r\n uData = uData[uData.length - 1];\r\n uData = uData.slice(0, -5);\r\n let datas = uData.split('_');\r\n uData = datas[1];\r\n\r\n for (let i = 2; i < datas.length; i++) {\r\n uData += '_';\r\n uData += datas[i];\r\n }\r\n\r\n uData = mainName.replace('main', uData);\r\n phs[k] = 'ph_' + uData + '_' + phs[k];\r\n }\r\n }\r\n phsArray.push(phs);\r\n }\r\n let url = structure[keys[i]];\r\n let normalMap = '';\r\n let urlData = url.split('/');\r\n for (let j = 0; j < element.submodule.size; j++) {\r\n let replaceUrlData = element.submodule.get(j).split('/');\r\n if (urlData.includes(replaceUrlData[replaceUrlData.length - 2])) {\r\n url = element.submodule.get(j);\r\n break;\r\n }\r\n }\r\n\r\n for (let j = 0; j < element.normalMap.size; j++) {\r\n let normalMapData = element.normalMap.get(j).split('/');\r\n if (urlData.includes(normalMapData[normalMapData.length - 2])) {\r\n normalMap = element.normalMap.get(j);\r\n break;\r\n }\r\n }\r\n\r\n // replace submodule gltf file\r\n // if (placeholderTree.length > 0) {\r\n if (phsArray.length > 0) {\r\n // let loadUrl = dirName + url;\r\n let loadUrl = url;\r\n\r\n if (doorStyles.get(keys[i] + '_gltf') != undefined) {\r\n loadUrl = doorStyles.get(keys[i] + '_gltf');\r\n structure[\r\n keys[i] +\r\n '_doorStyle' +\r\n element.type +\r\n 'doorStyle' +\r\n JSON.stringify(doorStyles.toJS())\r\n ] = loadUrl;\r\n } else {\r\n structure[\r\n keys[i] +\r\n '_doorStyle' +\r\n element.type +\r\n 'doorStyle' +\r\n JSON.stringify(doorStyles.toJS())\r\n ] = null;\r\n }\r\n return loadGLTF(loadUrl)\r\n .then(\r\n object => {\r\n if (normalMap !== '') {\r\n let normalUrl =\r\n normalMap.split('.')[0] + '-normal.' + normalMap.split('.')[1];\r\n let t = loadTexture(normalMap);\r\n let m = loadTexture(normalUrl);\r\n let mat2 = new Three.MeshStandardMaterial({\r\n metalness:\r\n glossness === 1 ? params.metalness : params.metalness_glossy,\r\n roughness: glossness || params.roughness\r\n });\r\n mat2.map = t;\r\n mat2.normalMap = m;\r\n // mat2.envMap = textureCube;\r\n for (let j = 0; j < object.children.length; j++) {\r\n if (object.children[j].type === OBJTYPE_MESH) {\r\n object.children[j].material = mat2;\r\n object.children[j].receiveShadow = true;\r\n }\r\n }\r\n }\r\n\r\n // set Door Style////\r\n if (doorStyles != null)\r\n if (doorStyles.get(keys[i]) != undefined) {\r\n // let normalMap = \"catalog/items/doorstyle/\" + doorStyles.get(keys[i]);\r\n let normalMap = doorStyles.get(keys[i]);\r\n let mat2;\r\n if (normalMap === '') {\r\n const examplecolor = new Three.Color(\r\n parseInt(color.slice(1), 16)\r\n ).convertLinearToSRGB();\r\n mat2 = new Three.MeshStandardMaterial({\r\n color: examplecolor,\r\n metalness:\r\n glossness === 1\r\n ? params.metalness\r\n : params.metalness_glossy,\r\n roughness: glossness || params.roughness\r\n });\r\n } else {\r\n let t = loadTexture(normalMap);\r\n mat2 = new Three.MeshStandardMaterial({\r\n // NOTE : this is for cabinets (wood) frontface\r\n metalness: 0.1,\r\n roughness: 0.5\r\n // metalness: glossness === 1 ? params.metalness : params.metalness_glossy,\r\n // roughness: glossness || params.roughness\r\n });\r\n mat2.map = t;\r\n }\r\n // mat2.envMap = textureCube;\r\n for (let j = 0; j < object.children.length; j++) {\r\n if (object.children[j].type === OBJTYPE_MESH) {\r\n object.children[j].material = mat2;\r\n object.children[j].receiveShadow = true;\r\n object.children[j].castShadow = true;\r\n !object.children[j].name.includes('handle') &&\r\n addEdgesToMesh(object.children[j]);\r\n } else if (\r\n !object.children[j].name.startsWith('ph_') &&\r\n object.children[j].type === OBJTYPE_GROUP\r\n ) {\r\n object.children[j].traverse(prim => {\r\n prim.material = mat2;\r\n prim.receiveShadow = true;\r\n });\r\n }\r\n }\r\n } else {\r\n let mat2 = new Three.MeshStandardMaterial({\r\n metalness:\r\n glossness === 1\r\n ? params.metalness\r\n : params.metalness_glossy,\r\n roughness: glossness || params.roughness\r\n });\r\n // mat2.envMap = textureCube;\r\n for (let j = 0; j < object.children.length; j++) {\r\n if (object.children[j].type === OBJTYPE_MESH) {\r\n object.children[j].material = mat2;\r\n object.children[j].receiveShadow = true;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < phsArray.length; i++) {\r\n let phs = phsArray[i];\r\n let parent = objGroup;\r\n for (let j = 0; j < phs.length; j++) {\r\n let placeholder = phs[j];\r\n for (let k = 0; k < parent?.children.length; k++) {\r\n if (j != phs.length - 1) {\r\n if (parent.children[k].name == placeholder) {\r\n parent = parent.children[k].children[0];\r\n break;\r\n }\r\n } else {\r\n if (parent.children[k].name == placeholder) {\r\n var tmp = object.clone();\r\n if (\r\n placeholder.includes('drawer_door') &&\r\n placeholder.includes('_handle')\r\n ) {\r\n tmp.rotateZ(Math.PI / 2);\r\n }\r\n if (\r\n placeholder.includes('_handle') &&\r\n tmp.children[0].type === OBJTYPE_MESH\r\n ) {\r\n // NOTE: change metalness of handle\r\n tmp.children[0].material.metalness = 1;\r\n // handleMaterial.metalness || 0.2;\r\n tmp.children[0].material.roughness =\r\n handleMaterial.roughness || 0.1;\r\n //tmp.children[0].material.map = loadTexture('catalog/areas/area/textures/grass.jpg');\r\n }\r\n parent.children[k].add(tmp);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n reason => {\r\n console.log('loadGLTF failed for reason:', reason);\r\n }\r\n )\r\n .then(() => {\r\n i++;\r\n return loadGLTFs(i);\r\n });\r\n }\r\n };\r\n return loadGLTF(structure['base'])\r\n .then(\r\n object => {\r\n object.name = 'MainObject';\r\n object.receiveShadow = true;\r\n objGroup = object;\r\n if (doorStyles != null)\r\n if (doorStyles.get('base') != undefined) {\r\n let normalMap = doorStyles.get('base');\r\n if (counterTop.uri === undefined) {\r\n try {\r\n counterTop = counterTop.toJS();\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n if (\r\n counterTop.uri === undefined &&\r\n layer.toJS().counterTop.uri !== undefined\r\n ) {\r\n counterTop.uri = layer.toJS().counterTop.uri;\r\n }\r\n let countTopMap = counterTop.uri;\r\n let interiorMap = doorStyles.get('interior');\r\n let countT = loadTexture(countTopMap);\r\n countT.wrapS = Three.RepeatWrapping;\r\n countT.wrapT = Three.RepeatWrapping;\r\n countT.repeat.set(1, 1);\r\n const examplecolor = new Three.Color(\r\n parseInt(color.slice(1), 16)\r\n ).convertLinearToSRGB();\r\n let mat2 = null,\r\n mat3 = null,\r\n mat4 = null;\r\n\r\n if (normalMap === '') {\r\n mat2 = new Three.MeshStandardMaterial({\r\n color: examplecolor,\r\n metalness:\r\n glossness === 1 ? params.metalness : params.metalness_glossy,\r\n roughness: glossness || params.roughness\r\n });\r\n } else {\r\n mat2 = new Three.MeshStandardMaterial({\r\n // TODO: changes in metalness and roughness of base_main (cabinet wood)\r\n metalness: 0.1,\r\n roughness: 0.5\r\n // metalness: glossness === 1 ? params.metalness : params.metalness_glossy,\r\n // roughness: glossness || params.roughness\r\n });\r\n }\r\n // mat2.envMap = textureCube;\r\n\r\n if (normalMap !== '') {\r\n let t = loadTexture(normalMap);\r\n mat2.map = t;\r\n }\r\n\r\n if (normalMap === '') {\r\n mat3 = new Three.MeshStandardMaterial({\r\n // color: examplecolor,\r\n metalness: counterTop.metalness,\r\n roughness: counterTop.roughness\r\n });\r\n } else {\r\n mat3 = new Three.MeshStandardMaterial({\r\n // metalness: counterTop.metalness,\r\n // roughness: counterTop.roughness\r\n metalness: 0.3,\r\n roughness: 0.8\r\n });\r\n }\r\n mat3.map = countT;\r\n // mat3.envMap = textureCube;\r\n mat4 = new Three.MeshStandardMaterial({\r\n metalness: params.metalness,\r\n roughness: params.roughness\r\n });\r\n mat4.map = loadTexture(interiorMap);\r\n for (let j = 0; j < object.children.length; j++) {\r\n if (object.children[j].name.includes('main')) {\r\n }\r\n if (object.children[j].name.includes('countertop')) {\r\n object.children[j].material = mat3;\r\n object.children[j].receiveShadow = true;\r\n object.children[j].castShadow = true;\r\n addEdgesToMesh(object.children[j]);\r\n } else if (object.children[j].name.includes('_interior_')) {\r\n object.children[j].material = mat4;\r\n } else if (object.children[j].type === OBJTYPE_MESH) {\r\n object.children[j].material = mat2;\r\n object.children[j].receiveShadow = true;\r\n object.children[j].castShadow = true;\r\n }\r\n }\r\n }\r\n },\r\n reason => {\r\n console.log('loadGLTF failed for reason:', reason);\r\n objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);\r\n }\r\n )\r\n .then(() => {\r\n return loadGLTFs(0);\r\n });\r\n}\r\n\r\n// render 3d appliance function ////////////////////////////////\r\nexport function render3DApplianceItem(\r\n element,\r\n layer,\r\n scene,\r\n sizeinfo,\r\n structure_json,\r\n mode = null\r\n) {\r\n let structure = structure_json;\r\n let { applianceMaterial } = element;\r\n if (applianceMaterial.metalness == undefined)\r\n applianceMaterial = applianceMaterial.toJS();\r\n let onLoadItem = object => {\r\n let newAltitude = element.properties.get('altitude').get('_length');\r\n let newUnit = element.properties.get('altitude').get('_unit') || 'in';\r\n newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);\r\n\r\n let newWidth = element.properties.get('width').get('_length');\r\n let newWidthUnit = element.properties.get('width').get('_unit') || 'in';\r\n newWidth = convert(newWidth).from(newWidthUnit).to('in');\r\n\r\n let newHeight = element.properties.get('height').get('_length');\r\n let newHeightUnit = element.properties.get('height').get('_unit') || 'in';\r\n newHeight = convert(newHeight).from(newHeightUnit).to('in');\r\n\r\n let newDepth = element.properties.get('depth').get('_length');\r\n let newDepthUnit = element.properties.get('depth').get('_unit') || 'in';\r\n newDepth = convert(newDepth).from(newDepthUnit).to('in');\r\n\r\n object.scale.set(\r\n (100 * newWidth) / sizeinfo.width,\r\n (100 * newHeight) / sizeinfo.height,\r\n (100 * newDepth) / sizeinfo.depth\r\n );\r\n // Normalize the origin of the object\r\n let boundingBox = new Three.Box3().setFromObject(object);\r\n object.userData = boundingBox;\r\n\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 object.position.x -= center[0];\r\n object.position.y -=\r\n center[1] - (boundingBox.max.y - boundingBox.min.y) / 2;\r\n object.position.z -= center[2];\r\n object.position.y += newAltitude;\r\n\r\n object.traverse(obj => {\r\n if (obj.type === OBJTYPE_MESH) {\r\n const { name } = obj;\r\n let texture,\r\n textureLoader = new Three.TextureLoader();\r\n if (name.includes('_black')) {\r\n obj.material.roughness = 0.4;\r\n obj.material.metalness = 1.0;\r\n obj.material.color = new Three.Color(0, 0, 0);\r\n obj.castShadow = true;\r\n obj.receiveShadow = true;\r\n return object;\r\n } else if (name.includes('_wood')) {\r\n texture = loadTexture('/assets/img/texture/wood.jpg');\r\n } else if (name.includes('_glass')) {\r\n // texture = loadTexture('/assets/img/texture/glass.jpg');\r\n const material = new Three.MeshPhysicalMaterial({\r\n transparent: true,\r\n opacity: 0.5,\r\n roughness: 0,\r\n transmission: 1,\r\n thickness: 0.5, // Add refraction!\r\n transparency: 0.8\r\n });\r\n obj.material = material;\r\n obj.castShadow = true;\r\n obj.receiveShadow = true;\r\n return object;\r\n } else if (name.includes('_steel')) {\r\n // texture = loadTexture('/assets/img/texture/steel.jpg');\r\n const material = new Three.MeshPhysicalMaterial({\r\n roughness: 0.2,\r\n metalness: 0.5,\r\n reflectivity: 0.5,\r\n color: new Three.Color(0xdddddd).convertLinearToSRGB()\r\n });\r\n obj.material = material;\r\n obj.castShadow = true;\r\n obj.receiveShadow = true;\r\n return object;\r\n }\r\n\r\n let mat = new Three.MeshStandardMaterial({\r\n metalness: 0.1,\r\n roughness: 0.9,\r\n map: texture\r\n });\r\n obj.material = mat;\r\n }\r\n });\r\n\r\n if (element.selected) {\r\n // if object is selected\r\n // save object transform info///\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\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 let boundingBox = new Three.Box3().setFromObject(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\r\n // rotate Object //////////\r\n let rotGeom = GeomUtils.rotGeoms(radius + 0.05);\r\n // //////////////////////////////////\r\n\r\n // upwards Geometry/////////// Move up Object\r\n let upwardsGeom = GeomUtils.upwardsGeom();\r\n // ///////////////////////////////////////\r\n\r\n // vertical line - 4 lines around object//////////////////////////\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 min.z,\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n min.z + 1.3\r\n ];\r\n\r\n vLineGeom.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices), 3)\r\n );\r\n\r\n let vLineGeom1 = new Three.BufferGeometry();\r\n\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\r\n vLineGeom1.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices1), 3)\r\n );\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\r\n vLineGeom1.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 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\r\n vLineGeom1.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\r\n let upObj = new Three.Mesh(\r\n upwardsGeom,\r\n new Three.MeshBasicMaterial({ color: 0xffffff, side: Three.DoubleSide })\r\n );\r\n upObj.name = 'transUp';\r\n\r\n let mBox = new Three.Mesh(\r\n moveBox,\r\n new Three.MeshBasicMaterial({\r\n color: new Three.Color(0xdd6699).convertLinearToSRGB(),\r\n side: Three.DoubleSide,\r\n transparent: true,\r\n opacity: 0.4\r\n })\r\n );\r\n\r\n let color = new Three.Color(ARROW_COLOR).convertLinearToSRGB();\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\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 // translate vector to center of object\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\r\n vLine.translateY(0.1);\r\n vLine1.translateY(0.1);\r\n vLine2.translateY(0.1);\r\n vLine3.translateY(0.1);\r\n\r\n upObj.translateOnAxis(uVec, 1);\r\n upObj.translateY(max.y - min.y + 0.05);\r\n\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\r\n // other side rotate object\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 rotFillObj.translateY(0.1);\r\n rotFillObj1.translateY(0.1);\r\n rotStrokeObj.translateY(0.1);\r\n rotStrokeObj1.translateY(0.1);\r\n\r\n // assets Objects group includes rotate objects...\r\n let asrtObj = new Three.Group();\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 mBox.visible = false;\r\n asrtObj.add(mBox);\r\n asrtObj.scale.set(1 / object.scale.x, object.scale.y, 1 / object.scale.z);\r\n // asrtObj.translateY(newAltitude / scalevec.y);\r\n asrtObj.name = 'TransformGizmo';\r\n // add assets Objects Group\r\n object.add(asrtObj);\r\n\r\n // recover objects transform\r\n object.position.x = posVec.x;\r\n object.position.y = posVec.y;\r\n object.position.z = posVec.z;\r\n object.scale.set(scalevec.x, scalevec.y, scalevec.z);\r\n }\r\n\r\n return object;\r\n };\r\n\r\n // keys in structure\r\n let keys = Object.keys(structure);\r\n\r\n // if exist in cached Objects\r\n if (element.type in cachedObject) {\r\n let objGroup = cachedObject[element.type].clone();\r\n return Promise.resolve(onLoadItem(objGroup.clone()));\r\n }\r\n\r\n // base Object/////\r\n let objGroup = null;\r\n\r\n let loadGLTFs = function (i) {\r\n if (i === keys.length) {\r\n // if end of keys\r\n cachedObject[element.type] = objGroup.clone(); //register to cachedObject\r\n return onLoadItem(cachedObject[element.type].clone());\r\n }\r\n if (keys[i] === 'base') {\r\n // if base Objects\r\n i++;\r\n return loadGLTFs(i);\r\n }\r\n };\r\n\r\n // load base to start //\r\n // return loadGLTF(dirName + structure[\"base\"])\r\n return loadGLTF(structure['base'])\r\n .then(\r\n object => {\r\n // let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;\r\n // let texture = loadTexture(textureURL);\r\n // texture.wrapS = Three.MirroredRepeatWrapping;\r\n // texture.wrapT = Three.MirroredRepeatWrapping;\r\n\r\n object.name = 'MainObject';\r\n // NOTE: changed appliance emissive color to black\r\n let mat2 = new Three.MeshStandardMaterial({\r\n emissive: new Three.Color(0x0d0d0d).convertLinearToSRGB(),\r\n metalness: applianceMaterial.metalness,\r\n roughness: applianceMaterial.roughness\r\n });\r\n // mat2.envMap = textureCube;\r\n object.material = mat2;\r\n\r\n for (let j = 0; j < object.children.length; j++) {\r\n if (object.children[j].type === OBJTYPE_MESH) {\r\n object.children[j].material = mat2;\r\n object.children[j].receiveShadow = true;\r\n object.children[j].castShadow = true; // change\r\n }\r\n }\r\n objGroup = object;\r\n },\r\n reason => {\r\n console.log('loadGLTF failed for reason:', reason);\r\n objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);\r\n }\r\n )\r\n .then(() => {\r\n return loadGLTFs(0);\r\n });\r\n}\r\n// render 3d appliance function ////////////////////////////////\r\nexport function render3DLightingItem(\r\n element,\r\n layer,\r\n scene,\r\n sizeinfo,\r\n structure_json,\r\n mode = null\r\n) {\r\n let structure = structure_json;\r\n let onLoadItem = object => {\r\n let width = { length: sizeinfo.width, unit: 'in' };\r\n let depth = { length: sizeinfo.depth, unit: 'in' };\r\n let height = { length: sizeinfo.height, unit: 'in' };\r\n let newWidth = convert(width.length).from(width.unit).to('cm');\r\n let newDepth = convert(depth.length).from(depth.unit).to('cm');\r\n let newHeight = convert(height.length).from(height.unit).to('cm');\r\n\r\n let newAltitude = element.properties.get('altitude').get('_length');\r\n let newUnit = element.properties.get('altitude').get('_unit') || 'in';\r\n newAltitude = convert(newAltitude).from(newUnit).to(scene.unit);\r\n\r\n //object.scale.set(newWidth, newHeight, newDepth);\r\n object.scale.set(100, 100, 100);\r\n // Normalize the origin of the object\r\n let boundingBox = new Three.Box3().setFromObject(object);\r\n object.userData = boundingBox;\r\n\r\n let objectHeight = boundingBox.max.y - boundingBox.min.y;\r\n let objectYPos = boundingBox.min.y;\r\n\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 object.position.x = center[0];\r\n object.position.y = newHeight + newAltitude - boundingBox.max.y;\r\n object.position.z = center[2];\r\n\r\n if (element.selected) {\r\n // if object is selected\r\n // save object transform info///\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\r\n object.scale.set(1, 1, 1);\r\n object.position.set(0, 0, 0);\r\n object.rotation.set(0, 0, 0);\r\n\r\n //let box = new Three.BoxHelper(object, 0xffffff);\r\n //box.material.lineWidth = 5;\r\n //box.renderOrder = 1000;\r\n //box.material.depthTest = false;\r\n //object.add(box);\r\n let boundingBox = new Three.Box3().setFromObject(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\r\n // upwards Geometry/////////// Move up Object\r\n let upwardsGeom = GeomUtils.upwardsGeom();\r\n\r\n // vertical line - 4 lines around object//////////////////////////\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 min.z,\r\n (max.x - min.x) / 2 + min.x,\r\n 0,\r\n min.z + 1.3\r\n ];\r\n\r\n vLineGeom.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices), 3)\r\n );\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\r\n vLineGeom1.setAttribute(\r\n 'position',\r\n new Three.BufferAttribute(new Float32Array(vertices1), 3)\r\n );\r\n\r\n let vLineGeom2 = new Three.BufferGeometry();\r\n let vertices2 = [\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\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 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\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\r\n let upObj = new Three.Mesh(\r\n upwardsGeom,\r\n new Three.MeshBasicMaterial({ color: 0xffffff, side: Three.DoubleSide })\r\n );\r\n upObj.name = 'transUp';\r\n\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\r\n let color = new Three.Color(ARROW_COLOR).convertLinearToSRGB();\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 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 // translate vector to center of object\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\r\n vLine.translateY(1.6);\r\n vLine1.translateY(1.6);\r\n vLine2.translateY(1.6);\r\n vLine3.translateY(1.6);\r\n\r\n //rotObj.translateOnAxis(uVec, 1);\r\n upObj.translateOnAxis(uVec, 1);\r\n upObj.translateY(max.y - min.y);\r\n\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\r\n // other side rotate object\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 rotFillObj.translateY(1.6);\r\n rotFillObj1.translateY(1.6);\r\n rotStrokeObj.translateY(1.6);\r\n rotStrokeObj1.translateY(1.6);\r\n\r\n // assets Objects group includes rotate objects...\r\n let asrtObj = new Three.Group();\r\n // asrtObj.add(rotFillObj);\r\n // asrtObj.add(rotFillObj1);\r\n // asrtObj.add(rotStrokeObj);\r\n // asrtObj.add(rotStrokeObj1);\r\n //asrtObj.add(upObj);\r\n asrtObj.add(vLine);\r\n asrtObj.add(vLine1);\r\n asrtObj.add(vLine2);\r\n asrtObj.add(vLine3);\r\n mBox.visible = false;\r\n asrtObj.add(mBox);\r\n asrtObj.scale.set(1, 1, 1);\r\n //asrtObj.translateY(newAltitude / scalevec.y);\r\n asrtObj.name = 'TransformGizmo';\r\n // add assets Objects Group\r\n object.add(asrtObj);\r\n\r\n // recover objects transform\r\n object.position.x = posVec.x;\r\n object.position.y = posVec.y;\r\n object.position.z = posVec.z;\r\n object.scale.set(scalevec.x, scalevec.y, scalevec.z);\r\n setTimeout(() => {\r\n SceneCreator.getDistances(layer);\r\n }, 100);\r\n }\r\n return object;\r\n };\r\n\r\n // keys in structure\r\n let keys = Object.keys(structure);\r\n\r\n // if exist in cached Objects\r\n if (element.type in cachedObject) {\r\n let objGroup = cachedObject[element.type].clone();\r\n return Promise.resolve(onLoadItem(objGroup.clone()));\r\n }\r\n\r\n // base Object/////\r\n let objGroup = null;\r\n\r\n let loadGLTFs = function (i) {\r\n if (i === keys.length) {\r\n // if end of keys\r\n cachedObject[element.type] = objGroup.clone(); //register to cachedObject\r\n return onLoadItem(cachedObject[element.type].clone());\r\n }\r\n if (keys[i] === 'base') {\r\n // if base Objects\r\n i++;\r\n return loadGLTFs(i);\r\n }\r\n };\r\n\r\n // load base to start //\r\n // return loadGLTF(dirName + structure[\"base\"])\r\n return loadGLTF(structure['base'])\r\n .then(\r\n object => {\r\n // let textureURL = `${API_SERVER_URL}/uploads/assets/default/steel.jpg`;\r\n // let texture = loadTexture(textureURL);\r\n // texture.wrapS = Three.MirroredRepeatWrapping;\r\n // texture.wrapT = Three.MirroredRepeatWrapping;\r\n\r\n object.name = 'MainObject';\r\n let mat2 = new Three.MeshStandardMaterial({\r\n emissive: new Three.Color(0x666666).convertLinearToSRGB(),\r\n metalness: 0.7,\r\n roughness: 0.3\r\n });\r\n // mat2.envMap = textureCube;\r\n object.material = mat2;\r\n\r\n for (let j = 0; j < object.children.length; j++) {\r\n if (object.children[j].type === OBJTYPE_MESH) {\r\n object.children[j].material = mat2;\r\n object.children[j].receiveShadow = true;\r\n }\r\n }\r\n objGroup = object;\r\n },\r\n reason => {\r\n console.log('loadGLTF failed for reason:', reason);\r\n objGroup = GeomUtils.emptyBoxHolder(newWidth, newHeight, newDepth);\r\n }\r\n )\r\n .then(() => {\r\n return loadGLTFs(0);\r\n });\r\n}\r\n\r\nexport function addEdgesToMesh(inChild) {\r\n let boxEdge = new Three.EdgesGeometry(inChild.geometry, 10);\r\n let boxEdgeMaterial = new Three.LineBasicMaterial({\r\n color: 0x000000,\r\n transparent: true,\r\n opacity: 0.09\r\n });\r\n let boxEdgeLine = new Three.LineSegments(boxEdge, boxEdgeMaterial);\r\n // inChild.add(boxEdgeLine);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { Box3, BufferAttribute, BufferGeometry, LoaderUtils, LoadingManager, Vector3 } from 'three';
|
|
2
|
-
import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader.js';
|
|
3
|
-
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';
|
|
4
|
-
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
5
|
-
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
|
|
6
|
-
import { OBJTYPE_MESH } from '../../../src/constants';
|
|
7
|
-
export function loadObjWithMaterial(mtlFile, objFile, imgPath) {
|
|
8
|
-
var manager = new LoadingManager();
|
|
9
|
-
var mtlLoader = new MTLLoader(manager);
|
|
10
|
-
// mtlLoader.setPath(imgPath);
|
|
11
|
-
var url = mtlFile;
|
|
12
|
-
return new Promise(function (resolve, reject) {
|
|
13
|
-
mtlLoader.load(url, function (materials) {
|
|
14
|
-
materials.preload();
|
|
15
|
-
var objLoader = new OBJLoader();
|
|
16
|
-
objLoader.setMaterials(materials);
|
|
17
|
-
objLoader.load(objFile, function (object) {
|
|
18
|
-
return resolve(object);
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
export function loadGLTF(url) {
|
|
24
|
-
if (url == undefined) {
|
|
25
|
-
return Promise.reject('No url is passed');
|
|
26
|
-
}
|
|
27
|
-
var baseURL = LoaderUtils.extractUrlBase(url);
|
|
28
|
-
var manager = new LoadingManager();
|
|
29
|
-
|
|
30
|
-
// Intercept and override relative URLs.
|
|
31
|
-
manager.setURLModifier(function (url, path) {
|
|
32
|
-
// URIs in a glTF file may be escaped, or not. Assume that assetMap is
|
|
33
|
-
// from an un-escaped source, and decode all URIs before lookups.
|
|
34
|
-
// See: https://github.com/donmccurdy/three-gltf-viewer/issues/146
|
|
35
|
-
var normalizedURL = decodeURI(url).replace(baseURL, '').replace(/^(\.?\/)/, '');
|
|
36
|
-
|
|
37
|
-
// if (assetMap.has(normalizedURL)) {
|
|
38
|
-
// const blob = assetMap.get(normalizedURL);
|
|
39
|
-
// const blobURL = URL.createObjectURL(blob);
|
|
40
|
-
// blobURLs.push(blobURL);
|
|
41
|
-
// return blobURL;
|
|
42
|
-
// }
|
|
43
|
-
return (path || '') + url;
|
|
44
|
-
});
|
|
45
|
-
var loader = new GLTFLoader(manager);
|
|
46
|
-
loader.setCrossOrigin('anonymous');
|
|
47
|
-
var dracoLoader = new DRACOLoader();
|
|
48
|
-
dracoLoader.setDecoderPath('/assets/draco/');
|
|
49
|
-
loader.setDRACOLoader(dracoLoader);
|
|
50
|
-
return new Promise(function (resolve, reject) {
|
|
51
|
-
loader.load(url, function (gltf) {
|
|
52
|
-
resolve(gltf.scene);
|
|
53
|
-
}, function (xhr) {
|
|
54
|
-
// console.log("xhr", xhr);
|
|
55
|
-
// called while loading is progressing
|
|
56
|
-
// console.log( `${( xhr.loaded / xhr.total * 100 )}% loaded` );
|
|
57
|
-
}, function (error) {
|
|
58
|
-
// console.log("error", error);
|
|
59
|
-
// called when loading has errors
|
|
60
|
-
// console.error( '2= An error happened', error );
|
|
61
|
-
reject(error);
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
export function scaleObject(object, defaultSizeArray, scaleSizeArray) {
|
|
66
|
-
var boundingBox = new Box3().setFromObject(object);
|
|
67
|
-
var initialSizeArray = boundingBox.getSize(new Vector3()).toArray();
|
|
68
|
-
for (var i = 0; i < 3; i++) {
|
|
69
|
-
scaleSizeArray[i] -= defaultSizeArray[i];
|
|
70
|
-
defaultSizeArray[i] /= initialSizeArray[i];
|
|
71
|
-
}
|
|
72
|
-
object.children.forEach(function (child) {
|
|
73
|
-
if (child.type == OBJTYPE_MESH && child.geometry instanceof BufferGeometry) {
|
|
74
|
-
var position = child.geometry.attributes.position;
|
|
75
|
-
var new_pos = position.array.map(function (v, i, a) {
|
|
76
|
-
var j = i % 3;
|
|
77
|
-
var absv = Math.abs(v);
|
|
78
|
-
v = v * defaultSizeArray[j];
|
|
79
|
-
if (absv > initialSizeArray[j] / 6) {
|
|
80
|
-
v += (v > 0 ? 1 : -1) * scaleSizeArray[j] / 2;
|
|
81
|
-
}
|
|
82
|
-
return v;
|
|
83
|
-
});
|
|
84
|
-
var new_geom = child.geometry.clone().setAttribute('position', new BufferAttribute(new_pos, 3));
|
|
85
|
-
new_geom.computeBoundingBox();
|
|
86
|
-
new_geom.computeBoundingSphere();
|
|
87
|
-
child.geometry.dispose();
|
|
88
|
-
child.geometry = new_geom;
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=load-obj.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"load-obj.js","names":["Box3","BufferAttribute","BufferGeometry","LoaderUtils","LoadingManager","Vector3","MTLLoader","OBJLoader","GLTFLoader","DRACOLoader","OBJTYPE_MESH","loadObjWithMaterial","mtlFile","objFile","imgPath","manager","mtlLoader","url","Promise","resolve","reject","load","materials","preload","objLoader","setMaterials","object","loadGLTF","undefined","baseURL","extractUrlBase","setURLModifier","path","normalizedURL","decodeURI","replace","loader","setCrossOrigin","dracoLoader","setDecoderPath","setDRACOLoader","gltf","scene","xhr","error","scaleObject","defaultSizeArray","scaleSizeArray","boundingBox","setFromObject","initialSizeArray","getSize","toArray","i","children","forEach","child","type","geometry","position","attributes","new_pos","array","map","v","a","j","absv","Math","abs","new_geom","clone","setAttribute","computeBoundingBox","computeBoundingSphere","dispose"],"sources":["../../../src/catalog/utils/load-obj.js"],"sourcesContent":["import {\r\n Box3,\r\n BufferAttribute,\r\n BufferGeometry,\r\n LoaderUtils,\r\n LoadingManager,\r\n Vector3\r\n} from 'three';\r\nimport { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader.js';\r\nimport { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js';\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';\r\nimport { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';\r\nimport { OBJTYPE_MESH } from '../../../src/constants';\r\n\r\nexport function loadObjWithMaterial(mtlFile, objFile, imgPath) {\r\n var manager = new LoadingManager();\r\n let mtlLoader = new MTLLoader(manager);\r\n // mtlLoader.setPath(imgPath);\r\n let url = mtlFile;\r\n return new Promise((resolve, reject) => {\r\n mtlLoader.load(url, materials => {\r\n materials.preload();\r\n let objLoader = new OBJLoader();\r\n objLoader.setMaterials(materials);\r\n objLoader.load(objFile, object => resolve(object));\r\n });\r\n });\r\n}\r\n\r\nexport function loadGLTF(url) {\r\n if (url == undefined) {\r\n return Promise.reject('No url is passed');\r\n }\r\n\r\n const baseURL = LoaderUtils.extractUrlBase(url);\r\n const manager = new LoadingManager();\r\n\r\n // Intercept and override relative URLs.\r\n manager.setURLModifier((url, path) => {\r\n // URIs in a glTF file may be escaped, or not. Assume that assetMap is\r\n // from an un-escaped source, and decode all URIs before lookups.\r\n // See: https://github.com/donmccurdy/three-gltf-viewer/issues/146\r\n const normalizedURL = decodeURI(url)\r\n .replace(baseURL, '')\r\n .replace(/^(\\.?\\/)/, '');\r\n\r\n // if (assetMap.has(normalizedURL)) {\r\n // const blob = assetMap.get(normalizedURL);\r\n // const blobURL = URL.createObjectURL(blob);\r\n // blobURLs.push(blobURL);\r\n // return blobURL;\r\n // }\r\n return (path || '') + url;\r\n });\r\n let loader = new GLTFLoader(manager);\r\n loader.setCrossOrigin('anonymous');\r\n const dracoLoader = new DRACOLoader();\r\n dracoLoader.setDecoderPath('/assets/draco/');\r\n loader.setDRACOLoader(dracoLoader);\r\n return new Promise((resolve, reject) => {\r\n loader.load(\r\n url,\r\n gltf => {\r\n resolve(gltf.scene);\r\n },\r\n xhr => {\r\n // console.log(\"xhr\", xhr);\r\n // called while loading is progressing\r\n // console.log( `${( xhr.loaded / xhr.total * 100 )}% loaded` );\r\n },\r\n error => {\r\n // console.log(\"error\", error);\r\n // called when loading has errors\r\n // console.error( '2= An error happened', error );\r\n reject(error);\r\n }\r\n );\r\n });\r\n}\r\n\r\nexport function scaleObject(object, defaultSizeArray, scaleSizeArray) {\r\n let boundingBox = new Box3().setFromObject(object);\r\n let initialSizeArray = boundingBox.getSize(new Vector3()).toArray();\r\n for (let i = 0; i < 3; i++) {\r\n scaleSizeArray[i] -= defaultSizeArray[i];\r\n defaultSizeArray[i] /= initialSizeArray[i];\r\n }\r\n\r\n object.children.forEach(child => {\r\n if (\r\n child.type == OBJTYPE_MESH &&\r\n child.geometry instanceof BufferGeometry\r\n ) {\r\n let position = child.geometry.attributes.position;\r\n let new_pos = position.array.map((v, i, a) => {\r\n let j = i % 3;\r\n let absv = Math.abs(v);\r\n v = v * defaultSizeArray[j];\r\n if (absv > initialSizeArray[j] / 6) {\r\n v += ((v > 0 ? 1 : -1) * scaleSizeArray[j]) / 2;\r\n }\r\n return v;\r\n });\r\n let new_geom = child.geometry\r\n .clone()\r\n .setAttribute('position', new BufferAttribute(new_pos, 3));\r\n new_geom.computeBoundingBox();\r\n new_geom.computeBoundingSphere();\r\n child.geometry.dispose();\r\n child.geometry = new_geom;\r\n }\r\n });\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|