kitchen-simulator 5.0.0-test.3 → 5.0.0-test.4
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/es/KitchenConfigurator.js +1 -1
- package/es/KitchenConfigurator.js.map +1 -1
- package/package.json +8 -12
- package/src/KitchenConfigurator.jsx +1 -1
- package/lib/@history.js +0 -11
- package/lib/@history.js.map +0 -1
- package/lib/AppContext.js +0 -11
- package/lib/AppContext.js.map +0 -1
- package/lib/KitchenConfigurator.js +0 -1353
- package/lib/KitchenConfigurator.js.map +0 -1
- package/lib/KitchenConfiguratorApp.js +0 -539
- package/lib/KitchenConfiguratorApp.js.map +0 -1
- package/lib/actions/area-actions.js +0 -22
- package/lib/actions/area-actions.js.map +0 -1
- package/lib/actions/export.js +0 -44
- package/lib/actions/export.js.map +0 -1
- package/lib/actions/groups-actions.js +0 -108
- package/lib/actions/groups-actions.js.map +0 -1
- package/lib/actions/holes-actions.js +0 -141
- package/lib/actions/holes-actions.js.map +0 -1
- package/lib/actions/items-actions.js +0 -365
- package/lib/actions/items-actions.js.map +0 -1
- package/lib/actions/lines-actions.js +0 -98
- package/lib/actions/lines-actions.js.map +0 -1
- package/lib/actions/project-actions.js +0 -333
- package/lib/actions/project-actions.js.map +0 -1
- package/lib/actions/scene-actions.js +0 -44
- package/lib/actions/scene-actions.js.map +0 -1
- package/lib/actions/user-actions.js +0 -69
- package/lib/actions/user-actions.js.map +0 -1
- package/lib/actions/vertices-actions.js +0 -36
- package/lib/actions/vertices-actions.js.map +0 -1
- package/lib/actions/viewer2d-actions.js +0 -74
- package/lib/actions/viewer2d-actions.js.map +0 -1
- package/lib/actions/viewer3d-actions.js +0 -33
- package/lib/actions/viewer3d-actions.js.map +0 -1
- package/lib/catalog/areas/area/planner-element.js +0 -47
- package/lib/catalog/areas/area/planner-element.js.map +0 -1
- package/lib/catalog/catalog.js +0 -283
- package/lib/catalog/catalog.js.map +0 -1
- package/lib/catalog/factories/area-factory-3d.js +0 -192
- package/lib/catalog/factories/area-factory-3d.js.map +0 -1
- package/lib/catalog/factories/area-factory.js +0 -90
- package/lib/catalog/factories/area-factory.js.map +0 -1
- package/lib/catalog/factories/export.js +0 -26
- package/lib/catalog/factories/export.js.map +0 -1
- package/lib/catalog/factories/wall-factory-3d.js +0 -213
- package/lib/catalog/factories/wall-factory-3d.js.map +0 -1
- package/lib/catalog/factories/wall-factory.js +0 -279
- package/lib/catalog/factories/wall-factory.js.map +0 -1
- package/lib/catalog/holes/door-closet/planner-element.js +0 -232
- package/lib/catalog/holes/door-closet/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-double/planner-element.js +0 -325
- package/lib/catalog/holes/door-double/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-exterior/planner-element.js +0 -225
- package/lib/catalog/holes/door-exterior/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-interior/planner-element.js +0 -237
- package/lib/catalog/holes/door-interior/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-panic/planner-element.js +0 -513
- package/lib/catalog/holes/door-panic/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-panic-double/planner-element.js +0 -473
- package/lib/catalog/holes/door-panic-double/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-sliding/planner-element.js +0 -235
- package/lib/catalog/holes/door-sliding/planner-element.js.map +0 -1
- package/lib/catalog/holes/doorway-framed/planner-element.js +0 -155
- package/lib/catalog/holes/doorway-framed/planner-element.js.map +0 -1
- package/lib/catalog/holes/doorway-frameless/planner-element.js +0 -114
- package/lib/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
- package/lib/catalog/holes/window-clear/planner-element.js +0 -176
- package/lib/catalog/holes/window-clear/planner-element.js.map +0 -1
- package/lib/catalog/holes/window-cross/planner-element.js +0 -175
- package/lib/catalog/holes/window-cross/planner-element.js.map +0 -1
- package/lib/catalog/holes/window-double-hung/planner-element.js +0 -313
- package/lib/catalog/holes/window-double-hung/planner-element.js.map +0 -1
- package/lib/catalog/holes/window-vertical/planner-element.js +0 -286
- package/lib/catalog/holes/window-vertical/planner-element.js.map +0 -1
- package/lib/catalog/lines/wall/planner-element.js +0 -77
- package/lib/catalog/lines/wall/planner-element.js.map +0 -1
- package/lib/catalog/molding/molding-dcm/planner-element.js +0 -39
- package/lib/catalog/molding/molding-dcm/planner-element.js.map +0 -1
- package/lib/catalog/molding/molding-fbm/planner-element.js +0 -39
- package/lib/catalog/molding/molding-fbm/planner-element.js.map +0 -1
- package/lib/catalog/molding/molding-lrm/planner-element.js +0 -39
- package/lib/catalog/molding/molding-lrm/planner-element.js.map +0 -1
- package/lib/catalog/properties/export.js +0 -82
- package/lib/catalog/properties/export.js.map +0 -1
- package/lib/catalog/properties/property-checkbox.js +0 -79
- package/lib/catalog/properties/property-checkbox.js.map +0 -1
- package/lib/catalog/properties/property-color.js +0 -47
- package/lib/catalog/properties/property-color.js.map +0 -1
- package/lib/catalog/properties/property-enum.js +0 -63
- package/lib/catalog/properties/property-enum.js.map +0 -1
- package/lib/catalog/properties/property-hidden.js +0 -27
- package/lib/catalog/properties/property-hidden.js.map +0 -1
- package/lib/catalog/properties/property-lenght-measure.js +0 -109
- package/lib/catalog/properties/property-lenght-measure.js.map +0 -1
- package/lib/catalog/properties/property-length-measure.js +0 -93
- package/lib/catalog/properties/property-length-measure.js.map +0 -1
- package/lib/catalog/properties/property-length-measure_hole.js +0 -109
- package/lib/catalog/properties/property-length-measure_hole.js.map +0 -1
- package/lib/catalog/properties/property-number.js +0 -56
- package/lib/catalog/properties/property-number.js.map +0 -1
- package/lib/catalog/properties/property-read-only.js +0 -34
- package/lib/catalog/properties/property-read-only.js.map +0 -1
- package/lib/catalog/properties/property-string.js +0 -56
- package/lib/catalog/properties/property-string.js.map +0 -1
- package/lib/catalog/properties/property-toggle.js +0 -47
- package/lib/catalog/properties/property-toggle.js.map +0 -1
- package/lib/catalog/properties/shared-property-style.js +0 -21
- package/lib/catalog/properties/shared-property-style.js.map +0 -1
- package/lib/catalog/utils/FuseUtils.js +0 -89
- package/lib/catalog/utils/FuseUtils.js.map +0 -1
- package/lib/catalog/utils/exporter.js +0 -156
- package/lib/catalog/utils/exporter.js.map +0 -1
- package/lib/catalog/utils/geom-utils.js +0 -206
- package/lib/catalog/utils/geom-utils.js.map +0 -1
- package/lib/catalog/utils/item-loader.js +0 -1534
- package/lib/catalog/utils/item-loader.js.map +0 -1
- package/lib/catalog/utils/load-obj.js +0 -100
- package/lib/catalog/utils/load-obj.js.map +0 -1
- package/lib/catalog/utils/mtl-loader.js +0 -360
- package/lib/catalog/utils/mtl-loader.js.map +0 -1
- package/lib/catalog/utils/obj-loader.js +0 -479
- package/lib/catalog/utils/obj-loader.js.map +0 -1
- package/lib/class/FuseUtils.js +0 -89
- package/lib/class/FuseUtils.js.map +0 -1
- package/lib/class/area.js +0 -151
- package/lib/class/area.js.map +0 -1
- package/lib/class/export.js +0 -97
- package/lib/class/export.js.map +0 -1
- package/lib/class/group.js +0 -446
- package/lib/class/group.js.map +0 -1
- package/lib/class/guide.js +0 -68
- package/lib/class/guide.js.map +0 -1
- package/lib/class/hole.js +0 -935
- package/lib/class/hole.js.map +0 -1
- package/lib/class/item.js +0 -1894
- package/lib/class/item.js.map +0 -1
- package/lib/class/layer.js +0 -673
- package/lib/class/layer.js.map +0 -1
- package/lib/class/line.js +0 -1296
- package/lib/class/line.js.map +0 -1
- package/lib/class/project.js +0 -829
- package/lib/class/project.js.map +0 -1
- package/lib/class/vertex.js +0 -272
- package/lib/class/vertex.js.map +0 -1
- package/lib/components/atoms/Snackbar/index.js +0 -57
- package/lib/components/atoms/Snackbar/index.js.map +0 -1
- package/lib/components/atoms/radio-button/index.js +0 -33
- package/lib/components/atoms/radio-button/index.js.map +0 -1
- package/lib/components/atoms/radio-button/styles.js +0 -12
- package/lib/components/atoms/radio-button/styles.js.map +0 -1
- package/lib/components/button/MainButton.js +0 -98
- package/lib/components/button/MainButton.js.map +0 -1
- package/lib/components/button/ToggleMeasureButton.js +0 -63
- package/lib/components/button/ToggleMeasureButton.js.map +0 -1
- package/lib/components/catalog-view/catalog-breadcrumb.js +0 -61
- package/lib/components/catalog-view/catalog-breadcrumb.js.map +0 -1
- package/lib/components/catalog-view/catalog-item.js +0 -233
- package/lib/components/catalog-view/catalog-item.js.map +0 -1
- package/lib/components/catalog-view/catalog-list.js +0 -189
- package/lib/components/catalog-view/catalog-list.js.map +0 -1
- package/lib/components/catalog-view/catalog-page-item.js +0 -137
- package/lib/components/catalog-view/catalog-page-item.js.map +0 -1
- package/lib/components/catalog-view/catalog-turn-back-page-item.js +0 -113
- package/lib/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
- package/lib/components/configurator/custom-configurator.js +0 -101
- package/lib/components/configurator/custom-configurator.js.map +0 -1
- package/lib/components/configurator/project-configurator.js +0 -138
- package/lib/components/configurator/project-configurator.js.map +0 -1
- package/lib/components/content.js +0 -132
- package/lib/components/content.js.map +0 -1
- package/lib/components/export.js +0 -90
- package/lib/components/export.js.map +0 -1
- package/lib/components/firstsetting/button/styles.js +0 -34
- package/lib/components/firstsetting/button/styles.js.map +0 -1
- package/lib/components/firstsetting/export.js +0 -16
- package/lib/components/firstsetting/export.js.map +0 -1
- package/lib/components/firstsetting/firstsetting-content-button.js +0 -224
- package/lib/components/firstsetting/firstsetting-content-button.js.map +0 -1
- package/lib/components/firstsetting/firstsetting-toggle-button.js +0 -133
- package/lib/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
- package/lib/components/firstsetting/firstsetting.js +0 -633
- package/lib/components/firstsetting/firstsetting.js.map +0 -1
- package/lib/components/footerbar/button/ControlButton.js +0 -79
- package/lib/components/footerbar/button/ControlButton.js.map +0 -1
- package/lib/components/footerbar/button/DirectionButton.js +0 -76
- package/lib/components/footerbar/button/DirectionButton.js.map +0 -1
- package/lib/components/footerbar/button/DirectionPanSpinButton.js +0 -57
- package/lib/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
- package/lib/components/footerbar/button/ToggleButton.js +0 -83
- package/lib/components/footerbar/button/ToggleButton.js.map +0 -1
- package/lib/components/footerbar/button/ToggleConvertButton.js +0 -80
- package/lib/components/footerbar/button/ToggleConvertButton.js.map +0 -1
- package/lib/components/footerbar/button/ToggleMeasureButton.js +0 -59
- package/lib/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
- package/lib/components/footerbar/button/styles.js +0 -29
- package/lib/components/footerbar/button/styles.js.map +0 -1
- package/lib/components/footerbar/export.js +0 -16
- package/lib/components/footerbar/export.js.map +0 -1
- package/lib/components/footerbar/footer-content-button.js +0 -224
- package/lib/components/footerbar/footer-content-button.js.map +0 -1
- package/lib/components/footerbar/footer-toggle-button.js +0 -133
- package/lib/components/footerbar/footer-toggle-button.js.map +0 -1
- package/lib/components/footerbar/footerbar.js +0 -808
- package/lib/components/footerbar/footerbar.js.map +0 -1
- package/lib/components/footerbar/styles.js +0 -41
- package/lib/components/footerbar/styles.js.map +0 -1
- package/lib/components/header/button/MenuButton.js +0 -77
- package/lib/components/header/button/MenuButton.js.map +0 -1
- package/lib/components/header/button/SaveButton.js +0 -57
- package/lib/components/header/button/SaveButton.js.map +0 -1
- package/lib/components/header/button/styles.js +0 -68
- package/lib/components/header/button/styles.js.map +0 -1
- package/lib/components/header/export.js +0 -12
- package/lib/components/header/export.js.map +0 -1
- package/lib/components/header/header.js +0 -556
- package/lib/components/header/header.js.map +0 -1
- package/lib/components/header/styles.js +0 -47
- package/lib/components/header/styles.js.map +0 -1
- package/lib/components/login/Login.js +0 -94
- package/lib/components/login/Login.js.map +0 -1
- package/lib/components/login/LoginForm/index.js +0 -140
- package/lib/components/login/LoginForm/index.js.map +0 -1
- package/lib/components/login/Register.js +0 -104
- package/lib/components/login/Register.js.map +0 -1
- package/lib/components/login/RegisterForm/index.js +0 -237
- package/lib/components/login/RegisterForm/index.js.map +0 -1
- package/lib/components/login/jwtService.js +0 -239
- package/lib/components/login/jwtService.js.map +0 -1
- package/lib/components/molecules/slider/index.js +0 -22
- package/lib/components/molecules/slider/index.js.map +0 -1
- package/lib/components/molecules/slider/styles.js +0 -2
- package/lib/components/molecules/slider/styles.js.map +0 -1
- package/lib/components/myprojects/export.js +0 -12
- package/lib/components/myprojects/export.js.map +0 -1
- package/lib/components/myprojects/index.js +0 -453
- package/lib/components/myprojects/index.js.map +0 -1
- package/lib/components/myprojects/styles.js +0 -31
- package/lib/components/myprojects/styles.js.map +0 -1
- package/lib/components/sidebar/custom-accordion.js +0 -45
- package/lib/components/sidebar/custom-accordion.js.map +0 -1
- package/lib/components/sidebar/export.js +0 -50
- package/lib/components/sidebar/export.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -74
- package/lib/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -124
- package/lib/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -135
- package/lib/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -260
- package/lib/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -84
- package/lib/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/element-editor.js +0 -884
- package/lib/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
- package/lib/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/panel-element-editor.js +0 -56
- package/lib/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -125
- package/lib/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
- package/lib/components/sidebar/panel-group-editor.js +0 -218
- package/lib/components/sidebar/panel-group-editor.js.map +0 -1
- package/lib/components/sidebar/panel-groups.js +0 -274
- package/lib/components/sidebar/panel-groups.js.map +0 -1
- package/lib/components/sidebar/panel-guides.js +0 -192
- package/lib/components/sidebar/panel-guides.js.map +0 -1
- package/lib/components/sidebar/panel-layer-elements.js +0 -258
- package/lib/components/sidebar/panel-layer-elements.js.map +0 -1
- package/lib/components/sidebar/panel-layers.js +0 -347
- package/lib/components/sidebar/panel-layers.js.map +0 -1
- package/lib/components/sidebar/panel.js +0 -110
- package/lib/components/sidebar/panel.js.map +0 -1
- package/lib/components/sidebar/sidebar.js +0 -117
- package/lib/components/sidebar/sidebar.js.map +0 -1
- package/lib/components/sidebar/toolbar-panel.js +0 -171
- package/lib/components/sidebar/toolbar-panel.js.map +0 -1
- package/lib/components/sign/export.js +0 -18
- package/lib/components/sign/export.js.map +0 -1
- package/lib/components/sign/main/index.js +0 -567
- package/lib/components/sign/main/index.js.map +0 -1
- package/lib/components/sign/main/styles.js +0 -27
- package/lib/components/sign/main/styles.js.map +0 -1
- package/lib/components/style/button.js +0 -121
- package/lib/components/style/button.js.map +0 -1
- package/lib/components/style/cancel-button.js +0 -30
- package/lib/components/style/cancel-button.js.map +0 -1
- package/lib/components/style/content-container.js +0 -41
- package/lib/components/style/content-container.js.map +0 -1
- package/lib/components/style/content-title.js +0 -38
- package/lib/components/style/content-title.js.map +0 -1
- package/lib/components/style/delete-button.js +0 -35
- package/lib/components/style/delete-button.js.map +0 -1
- package/lib/components/style/export.js +0 -122
- package/lib/components/style/export.js.map +0 -1
- package/lib/components/style/form-block.js +0 -32
- package/lib/components/style/form-block.js.map +0 -1
- package/lib/components/style/form-color-input.js +0 -35
- package/lib/components/style/form-color-input.js.map +0 -1
- package/lib/components/style/form-label.js +0 -34
- package/lib/components/style/form-label.js.map +0 -1
- package/lib/components/style/form-number-input.js +0 -197
- package/lib/components/style/form-number-input.js.map +0 -1
- package/lib/components/style/form-number-input_2.js +0 -214
- package/lib/components/style/form-number-input_2.js.map +0 -1
- package/lib/components/style/form-select.js +0 -30
- package/lib/components/style/form-select.js.map +0 -1
- package/lib/components/style/form-slider.js +0 -53
- package/lib/components/style/form-slider.js.map +0 -1
- package/lib/components/style/form-submit-button.js +0 -36
- package/lib/components/style/form-submit-button.js.map +0 -1
- package/lib/components/style/form-text-input.js +0 -84
- package/lib/components/style/form-text-input.js.map +0 -1
- package/lib/components/toolbar/button/ControlButton.js +0 -76
- package/lib/components/toolbar/button/ControlButton.js.map +0 -1
- package/lib/components/toolbar/button/DirectionButton.js +0 -57
- package/lib/components/toolbar/button/DirectionButton.js.map +0 -1
- package/lib/components/toolbar/button/RightButton.js +0 -140
- package/lib/components/toolbar/button/RightButton.js.map +0 -1
- package/lib/components/toolbar/button/ToggleButton.js +0 -66
- package/lib/components/toolbar/button/ToggleButton.js.map +0 -1
- package/lib/components/toolbar/button/index.js +0 -94
- package/lib/components/toolbar/button/index.js.map +0 -1
- package/lib/components/toolbar/button/styles.js +0 -21
- package/lib/components/toolbar/button/styles.js.map +0 -1
- package/lib/components/toolbar/components/DoorStyleMenu.js +0 -112
- package/lib/components/toolbar/components/DoorStyleMenu.js.map +0 -1
- package/lib/components/toolbar/components/Pricing.js +0 -110
- package/lib/components/toolbar/components/Pricing.js.map +0 -1
- package/lib/components/toolbar/components/ReviewForQuote.js +0 -485
- package/lib/components/toolbar/components/ReviewForQuote.js.map +0 -1
- package/lib/components/toolbar/export.js +0 -50
- package/lib/components/toolbar/export.js.map +0 -1
- package/lib/components/toolbar/main/Alert.js +0 -132
- package/lib/components/toolbar/main/Alert.js.map +0 -1
- package/lib/components/toolbar/main/TakePictureModal.js +0 -109
- package/lib/components/toolbar/main/TakePictureModal.js.map +0 -1
- package/lib/components/toolbar/main/confirm-popup.js +0 -95
- package/lib/components/toolbar/main/confirm-popup.js.map +0 -1
- package/lib/components/toolbar/main/index.js +0 -4619
- package/lib/components/toolbar/main/index.js.map +0 -1
- package/lib/components/toolbar/main/myComponents.js +0 -125
- package/lib/components/toolbar/main/myComponents.js.map +0 -1
- package/lib/components/toolbar/main/styles.js +0 -73
- package/lib/components/toolbar/main/styles.js.map +0 -1
- package/lib/components/toolbar/plugin-item.js +0 -156
- package/lib/components/toolbar/plugin-item.js.map +0 -1
- package/lib/components/toolbar/popup/appliance/appliance-category/index.js +0 -86
- package/lib/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
- package/lib/components/toolbar/popup/appliance/choose-appliance/index.js +0 -85
- package/lib/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
- package/lib/components/toolbar/popup/appliance/index.js +0 -89
- package/lib/components/toolbar/popup/appliance/index.js.map +0 -1
- package/lib/components/toolbar/popup/autosaveprompt/index.js +0 -99
- package/lib/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
- package/lib/components/toolbar/popup/autosaveprompt/styles.js +0 -16
- package/lib/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
- package/lib/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -86
- package/lib/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
- package/lib/components/toolbar/popup/cabinet/choose-product/index.js +0 -107
- package/lib/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
- package/lib/components/toolbar/popup/cabinet/index.js +0 -91
- package/lib/components/toolbar/popup/cabinet/index.js.map +0 -1
- package/lib/components/toolbar/popup/doorStyle/choose-style/index.js +0 -59
- package/lib/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
- package/lib/components/toolbar/popup/doorStyle/index.js +0 -68
- package/lib/components/toolbar/popup/doorStyle/index.js.map +0 -1
- package/lib/components/toolbar/popup/doorStyle/style-category/index.js +0 -152
- package/lib/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -9
- package/lib/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -128
- package/lib/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/index.js +0 -572
- package/lib/components/toolbar/popup/downloadsummary/index.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -60
- package/lib/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -200
- package/lib/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -254
- package/lib/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1762
- package/lib/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -96
- package/lib/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -125
- package/lib/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1713
- package/lib/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -184
- package/lib/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showWarranty.js +0 -115
- package/lib/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/styles.js +0 -47
- package/lib/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
- package/lib/components/toolbar/popup/finishingtouch/category/index.js +0 -44
- package/lib/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
- package/lib/components/toolbar/popup/finishingtouch/index.js +0 -54
- package/lib/components/toolbar/popup/finishingtouch/index.js.map +0 -1
- package/lib/components/toolbar/popup/finishingtouch/material-edit.js +0 -163
- package/lib/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
- package/lib/components/toolbar/popup/finishingtouch/product/index.js +0 -65
- package/lib/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -124
- package/lib/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/choose-floor/index.js +0 -255
- package/lib/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -20
- package/lib/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/floor-category/index.js +0 -99
- package/lib/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/index.js +0 -56
- package/lib/components/toolbar/popup/floorplan/index.js.map +0 -1
- package/lib/components/toolbar/popup/index.js +0 -195
- package/lib/components/toolbar/popup/index.js.map +0 -1
- package/lib/components/toolbar/popup/newproject/index.js +0 -75
- package/lib/components/toolbar/popup/newproject/index.js.map +0 -1
- package/lib/components/toolbar/popup/newproject/styles.js +0 -16
- package/lib/components/toolbar/popup/newproject/styles.js.map +0 -1
- package/lib/components/toolbar/popup/product/appliance.js +0 -73
- package/lib/components/toolbar/popup/product/appliance.js.map +0 -1
- package/lib/components/toolbar/popup/product/cabinetproduct.js +0 -33
- package/lib/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
- package/lib/components/toolbar/popup/product/doorstyle.js +0 -59
- package/lib/components/toolbar/popup/product/doorstyle.js.map +0 -1
- package/lib/components/toolbar/popup/product/doorstyleproduct.js +0 -59
- package/lib/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
- package/lib/components/toolbar/popup/product/floor.js +0 -59
- package/lib/components/toolbar/popup/product/floor.js.map +0 -1
- package/lib/components/toolbar/popup/product/floorproduct.js +0 -68
- package/lib/components/toolbar/popup/product/floorproduct.js.map +0 -1
- package/lib/components/toolbar/popup/product/index.js +0 -59
- package/lib/components/toolbar/popup/product/index.js.map +0 -1
- package/lib/components/toolbar/popup/product/primary.js +0 -71
- package/lib/components/toolbar/popup/product/primary.js.map +0 -1
- package/lib/components/toolbar/popup/product/productline.js +0 -128
- package/lib/components/toolbar/popup/product/productline.js.map +0 -1
- package/lib/components/toolbar/popup/product/reviewItem.js +0 -346
- package/lib/components/toolbar/popup/product/reviewItem.js.map +0 -1
- package/lib/components/toolbar/popup/product/reviewMolding.js +0 -291
- package/lib/components/toolbar/popup/product/reviewMolding.js.map +0 -1
- package/lib/components/toolbar/popup/product/styles.js +0 -79
- package/lib/components/toolbar/popup/product/styles.js.map +0 -1
- package/lib/components/toolbar/popup/savedesign/FullPictureForm.js +0 -169
- package/lib/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
- package/lib/components/toolbar/popup/savedesign/index.js +0 -516
- package/lib/components/toolbar/popup/savedesign/index.js.map +0 -1
- package/lib/components/toolbar/popup/savedesign/styles.js +0 -26
- package/lib/components/toolbar/popup/savedesign/styles.js.map +0 -1
- package/lib/components/toolbar/popup/setDoorStyleOption/index.js +0 -64
- package/lib/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
- package/lib/components/toolbar/popup/styles.js +0 -104
- package/lib/components/toolbar/popup/styles.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -166
- package/lib/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -93
- package/lib/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -45
- package/lib/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/StepDots.js +0 -40
- package/lib/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/cart-choice.js +0 -141
- package/lib/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -50
- package/lib/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/index.js +0 -698
- package/lib/components/toolbar/popup/submitforquote/index.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/styles.js +0 -38
- package/lib/components/toolbar/popup/submitforquote/styles.js.map +0 -1
- package/lib/components/toolbar/popup/submitprompt/index.js +0 -79
- package/lib/components/toolbar/popup/submitprompt/index.js.map +0 -1
- package/lib/components/toolbar/popup/submitprompt/styles.js +0 -16
- package/lib/components/toolbar/popup/submitprompt/styles.js.map +0 -1
- package/lib/components/toolbar/toolbar-button.js +0 -111
- package/lib/components/toolbar/toolbar-button.js.map +0 -1
- package/lib/components/toolbar/toolbar-load-button.js +0 -36
- package/lib/components/toolbar/toolbar-load-button.js.map +0 -1
- package/lib/components/toolbar/toolbar-save-button.js +0 -34
- package/lib/components/toolbar/toolbar-save-button.js.map +0 -1
- package/lib/components/tutorial-view/Modal.js +0 -503
- package/lib/components/tutorial-view/Modal.js.map +0 -1
- package/lib/components/tutorial-view/styles.js +0 -13
- package/lib/components/tutorial-view/styles.js.map +0 -1
- package/lib/components/viewer2d/area.js +0 -90
- package/lib/components/viewer2d/area.js.map +0 -1
- package/lib/components/viewer2d/export.js +0 -122
- package/lib/components/viewer2d/export.js.map +0 -1
- package/lib/components/viewer2d/grids/grid-horizontal-streak.js +0 -45
- package/lib/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
- package/lib/components/viewer2d/grids/grid-streak.js +0 -45
- package/lib/components/viewer2d/grids/grid-streak.js.map +0 -1
- package/lib/components/viewer2d/grids/grid-vertical-streak.js +0 -45
- package/lib/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
- package/lib/components/viewer2d/grids/grids.js +0 -45
- package/lib/components/viewer2d/grids/grids.js.map +0 -1
- package/lib/components/viewer2d/group.js +0 -63
- package/lib/components/viewer2d/group.js.map +0 -1
- package/lib/components/viewer2d/item.js +0 -522
- package/lib/components/viewer2d/item.js.map +0 -1
- package/lib/components/viewer2d/layer.js +0 -172
- package/lib/components/viewer2d/layer.js.map +0 -1
- package/lib/components/viewer2d/line.js +0 -899
- package/lib/components/viewer2d/line.js.map +0 -1
- package/lib/components/viewer2d/ruler.js +0 -108
- package/lib/components/viewer2d/ruler.js.map +0 -1
- package/lib/components/viewer2d/rulerDist.js +0 -154
- package/lib/components/viewer2d/rulerDist.js.map +0 -1
- package/lib/components/viewer2d/rulerX.js +0 -159
- package/lib/components/viewer2d/rulerX.js.map +0 -1
- package/lib/components/viewer2d/rulerY.js +0 -161
- package/lib/components/viewer2d/rulerY.js.map +0 -1
- package/lib/components/viewer2d/scene.js +0 -148
- package/lib/components/viewer2d/scene.js.map +0 -1
- package/lib/components/viewer2d/snap.js +0 -84
- package/lib/components/viewer2d/snap.js.map +0 -1
- package/lib/components/viewer2d/state.js +0 -88
- package/lib/components/viewer2d/state.js.map +0 -1
- package/lib/components/viewer2d/utils.js +0 -174
- package/lib/components/viewer2d/utils.js.map +0 -1
- package/lib/components/viewer2d/vertex.js +0 -76
- package/lib/components/viewer2d/vertex.js.map +0 -1
- package/lib/components/viewer2d/viewer2d.js +0 -1409
- package/lib/components/viewer2d/viewer2d.js.map +0 -1
- package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2598
- package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
- package/lib/components/viewer3d/dcm.js +0 -408
- package/lib/components/viewer3d/dcm.js.map +0 -1
- package/lib/components/viewer3d/fbm.js +0 -421
- package/lib/components/viewer3d/fbm.js.map +0 -1
- package/lib/components/viewer3d/front3D.js +0 -76
- package/lib/components/viewer3d/front3D.js.map +0 -1
- package/lib/components/viewer3d/grid-creator.js +0 -35
- package/lib/components/viewer3d/grid-creator.js.map +0 -1
- package/lib/components/viewer3d/grids/grid-horizontal-streak.js +0 -45
- package/lib/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
- package/lib/components/viewer3d/grids/grid-streak.js +0 -36
- package/lib/components/viewer3d/grids/grid-streak.js.map +0 -1
- package/lib/components/viewer3d/grids/grid-vertical-streak.js +0 -45
- package/lib/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
- package/lib/components/viewer3d/libs/first-person-controls.js +0 -75
- package/lib/components/viewer3d/libs/first-person-controls.js.map +0 -1
- package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1288
- package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
- package/lib/components/viewer3d/libs/mtl-loader.js +0 -360
- package/lib/components/viewer3d/libs/mtl-loader.js.map +0 -1
- package/lib/components/viewer3d/libs/obj-loader.js +0 -465
- package/lib/components/viewer3d/libs/obj-loader.js.map +0 -1
- package/lib/components/viewer3d/libs/orbit-controls.js +0 -701
- package/lib/components/viewer3d/libs/orbit-controls.js.map +0 -1
- package/lib/components/viewer3d/libs/pointer-lock-controls.js +0 -48
- package/lib/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
- package/lib/components/viewer3d/lrm.js +0 -312
- package/lib/components/viewer3d/lrm.js.map +0 -1
- package/lib/components/viewer3d/model.js +0 -715
- package/lib/components/viewer3d/model.js.map +0 -1
- package/lib/components/viewer3d/pointer-lock-navigation.js +0 -123
- package/lib/components/viewer3d/pointer-lock-navigation.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/itemRect.js +0 -69
- package/lib/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/layer3D.js +0 -503
- package/lib/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/ruler3D.js +0 -235
- package/lib/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/scene3D.js +0 -70
- package/lib/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/state3D.js +0 -26
- package/lib/components/viewer3d/ruler-utils/state3D.js.map +0 -1
- package/lib/components/viewer3d/scene-creator.js +0 -3641
- package/lib/components/viewer3d/scene-creator.js.map +0 -1
- package/lib/components/viewer3d/three-memory-cleaner.js +0 -61
- package/lib/components/viewer3d/three-memory-cleaner.js.map +0 -1
- package/lib/components/viewer3d/viewer3d-first-person.js +0 -321
- package/lib/components/viewer3d/viewer3d-first-person.js.map +0 -1
- package/lib/components/viewer3d/viewer3d.js +0 -2508
- package/lib/components/viewer3d/viewer3d.js.map +0 -1
- package/lib/components/wizardstep/button/styles.js +0 -67
- package/lib/components/wizardstep/button/styles.js.map +0 -1
- package/lib/components/wizardstep/export.js +0 -12
- package/lib/components/wizardstep/export.js.map +0 -1
- package/lib/components/wizardstep/index.js +0 -978
- package/lib/components/wizardstep/index.js.map +0 -1
- package/lib/components/wizardstep/styles.js +0 -68
- package/lib/components/wizardstep/styles.js.map +0 -1
- package/lib/components/wizardstep/wizardstep-content-button.js +0 -224
- package/lib/components/wizardstep/wizardstep-content-button.js.map +0 -1
- package/lib/components/wizardstep/wizardstep-toggle-button.js +0 -133
- package/lib/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
- package/lib/constants.js +0 -646
- package/lib/constants.js.map +0 -1
- package/lib/hooks/useCheckCart.js +0 -60
- package/lib/hooks/useCheckCart.js.map +0 -1
- package/lib/hooks/useGetPricesBySku.js +0 -81
- package/lib/hooks/useGetPricesBySku.js.map +0 -1
- package/lib/hooks/useValidateToken.js +0 -207
- package/lib/hooks/useValidateToken.js.map +0 -1
- package/lib/index.js +0 -102
- package/lib/index.js.map +0 -1
- package/lib/models.js +0 -518
- package/lib/models.js.map +0 -1
- package/lib/plugins/SVGLoader.js +0 -1418
- package/lib/plugins/SVGLoader.js.map +0 -1
- package/lib/plugins/autosave.js +0 -40
- package/lib/plugins/autosave.js.map +0 -1
- package/lib/plugins/console-debugger.js +0 -45
- package/lib/plugins/console-debugger.js.map +0 -1
- package/lib/plugins/export.js +0 -34
- package/lib/plugins/export.js.map +0 -1
- package/lib/plugins/keyboard.js +0 -108
- package/lib/plugins/keyboard.js.map +0 -1
- package/lib/reducers/areas-reducer.js +0 -19
- package/lib/reducers/areas-reducer.js.map +0 -1
- package/lib/reducers/export.js +0 -98
- package/lib/reducers/export.js.map +0 -1
- package/lib/reducers/groups-reducer.js +0 -45
- package/lib/reducers/groups-reducer.js.map +0 -1
- package/lib/reducers/holes-reducer.js +0 -69
- package/lib/reducers/holes-reducer.js.map +0 -1
- package/lib/reducers/items-reducer.js +0 -147
- package/lib/reducers/items-reducer.js.map +0 -1
- package/lib/reducers/lines-reducer.js +0 -52
- package/lib/reducers/lines-reducer.js.map +0 -1
- package/lib/reducers/project-reducer.js +0 -136
- package/lib/reducers/project-reducer.js.map +0 -1
- package/lib/reducers/reducer.js +0 -27
- package/lib/reducers/reducer.js.map +0 -1
- package/lib/reducers/scene-reducer.js +0 -35
- package/lib/reducers/scene-reducer.js.map +0 -1
- package/lib/reducers/user-reducer.js +0 -48
- package/lib/reducers/user-reducer.js.map +0 -1
- package/lib/reducers/vertices-reducer.js +0 -26
- package/lib/reducers/vertices-reducer.js.map +0 -1
- package/lib/reducers/viewer2d-reducer.js +0 -83
- package/lib/reducers/viewer2d-reducer.js.map +0 -1
- package/lib/reducers/viewer3d-reducer.js +0 -64
- package/lib/reducers/viewer3d-reducer.js.map +0 -1
- package/lib/shared-style.js +0 -73
- package/lib/shared-style.js.map +0 -1
- package/lib/styles/export.js +0 -14
- package/lib/styles/export.js.map +0 -1
- package/lib/translator/en.js +0 -111
- package/lib/translator/en.js.map +0 -1
- package/lib/translator/it.js +0 -86
- package/lib/translator/it.js.map +0 -1
- package/lib/translator/ru.js +0 -86
- package/lib/translator/ru.js.map +0 -1
- package/lib/translator/translator.js +0 -91
- package/lib/translator/translator.js.map +0 -1
- package/lib/utils/browser.js +0 -41
- package/lib/utils/browser.js.map +0 -1
- package/lib/utils/email-validator.js +0 -11
- package/lib/utils/email-validator.js.map +0 -1
- package/lib/utils/export.js +0 -57
- package/lib/utils/export.js.map +0 -1
- package/lib/utils/geometry.js +0 -2329
- package/lib/utils/geometry.js.map +0 -1
- package/lib/utils/get-edges-of-subgraphs.js +0 -29
- package/lib/utils/get-edges-of-subgraphs.js.map +0 -1
- package/lib/utils/graph-cycles.js +0 -241
- package/lib/utils/graph-cycles.js.map +0 -1
- package/lib/utils/graph-inner-cycles.js +0 -55
- package/lib/utils/graph-inner-cycles.js.map +0 -1
- package/lib/utils/graph.js +0 -152
- package/lib/utils/graph.js.map +0 -1
- package/lib/utils/helper.js +0 -360
- package/lib/utils/helper.js.map +0 -1
- package/lib/utils/history.js +0 -37
- package/lib/utils/history.js.map +0 -1
- package/lib/utils/id-broker.js +0 -26
- package/lib/utils/id-broker.js.map +0 -1
- package/lib/utils/logger.js +0 -15
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/math.js +0 -58
- package/lib/utils/math.js.map +0 -1
- package/lib/utils/molding.js +0 -864
- package/lib/utils/molding.js.map +0 -1
- package/lib/utils/name-generator.js +0 -24
- package/lib/utils/name-generator.js.map +0 -1
- package/lib/utils/objects-utils.js +0 -61
- package/lib/utils/objects-utils.js.map +0 -1
- package/lib/utils/phone-validator.js +0 -11
- package/lib/utils/phone-validator.js.map +0 -1
- package/lib/utils/process-black-list.js +0 -25
- package/lib/utils/process-black-list.js.map +0 -1
- package/lib/utils/react-if.js +0 -25
- package/lib/utils/react-if.js.map +0 -1
- package/lib/utils/snap-scene.js +0 -106
- package/lib/utils/snap-scene.js.map +0 -1
- package/lib/utils/snap.js +0 -250
- package/lib/utils/snap.js.map +0 -1
- package/lib/utils/threeCSG.es6.js +0 -504
- package/lib/utils/threeCSG.es6.js.map +0 -1
- package/lib/version.js +0 -8
- package/lib/version.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"viewer3d.js","names":["_typeof","o","Symbol","iterator","constructor","prototype","Object","defineProperty","exports","value","_react","_interopRequireDefault","require","_propTypes","_reactDom","Three","_interopRequireWildcard","_sceneCreator","_threeMemoryCleaner","_immutablediff","SharedStyle","_constants","_util","_geometry","_convertUnits","_export","_helper","_RGBELoader","_cameraControls","_utils","_objectsUtils","e","t","WeakMap","r","n","__esModule","i","f","__proto__","has","get","set","_t","hasOwnProperty","call","getOwnPropertyDescriptor","_readOnlyError","TypeError","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","_classCallCheck","a","_defineProperties","key","_createClass","_toPrimitive","toPrimitive","String","Number","_callSuper","_getPrototypeOf","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","_assertThisInitialized","ReferenceError","Boolean","valueOf","setPrototypeOf","getPrototypeOf","bind","_inherits","create","_setPrototypeOf","CameraControls","install","THREE","Scene3DViewer","_React$Component","props","_this","state","isLoading","showflag","isLoadingCabinet","scene","toolObj","angleObj","waitForRender","lineLength","lastMousePosition","width","height","renderingID","mode","window","__elevationRendererDownload","MODE_IDLE_3D","renderer","__threeRenderer","WebGLRenderer","preserveDrawingBuffer","alpha","antialias","MODE_3D_VIEW","__threeRendererDownload","downloadFlag","__elevationRenderer","shadowMap","enabled","shadowMapSoft","domElement","style","display","componentDidMount","nextProps","_this2","scene3D","camera","pivot","cameraControls","clock","spotLight1","spotLightTarget","actions","areaActions","context","holesActions","itemsActions","sceneActions","linesActions","projectActions","catalog","self","setupLight","inbBox","isElevationView","ambilight","AmbientLight","add","addDirLight","inColor","inIntensity","inPosition","dirLight","DirectionalLight","castShadow","shadow","mapSize","x","shadowMapSize","y","near","far","shadowCameraFar","top","shadowCameraSize","bottom","left","right","position","copy","targetObject","Object3D","bboxCenter","target","updateMatrixWorld","addSpotLight","inTarget","inDistance","spotLight","SpotLight","intensity","color","setHex","angle","distance","penumbra","decay","Vector3","z","Math","max","abs","min","dirLightPos","ceiling","getObjectByName","ceilBBox","Box3","setFromObject","spot1","spot2","spot3","spot4","spotlightDis","vectorIntersectWithMesh","setState","MODE_ELEVATION_VIEW","setIsLoadingElevation","setIsLoading3D","_parseData","parseData","promise","planData","then","objToRemove","plan","traverse","obj","geometry","removeFromParent","bbox","fitToBox","boundingBox","setTimeout","area","getIn","selectedLayer","layer","areas","lights","snapBox","msg","layers","id","visible","items","item","doorStyle","includes","name","confirm","init","render","data","_loop","aVertices","lines","vertices","_loop3","realVec","vec","convert","ceilHeight","from","unit","to","UNIT_CENTIMETER","datas","vertex","fLen","sX","sY","eX","eY","len","sqrt","cLen","cX","cY","endLen","vec2","Vector2","PI","cos","sin","light","toIntersect","mouse","gridPlane","grid","raycaster","Raycaster","selectedObject","selectedFlag","currentObject","isSelected","bRotate","bMove","bMoveUP","gridMatrix","Matrix4","rayDirection","gridPlanOrigin","Point","sPoint","snapFlag","snapAnimI","snapDelta","t_i","targetPoint","targetRot","targetUVec","targetCRotation","targetObj","targetNumber","wallSlide","pinFlag","sFlag","endPoint","allItemRect","allItemSnap","allLines","allLineRects","allLineSnap","allRect","allArea","backsplashVisible","holeItems","GeometryUtils","getHoleItems","removeSnapBox","remove","disposeObject","camToGrid","camPos","mapCursorPosition","altitude","subVectors","camD","rayD","intersectPt","multiplyScalar","applyMatrix4","pointLineDistance","point","line","pX","pY","l1x","l1y","l2x","l2y","pLine","Line","pAngle","lAngle","pDistance","oDistance","directDistance","lineDistance","dX","dY","dPoint","getInterSect","shape1","shape2","count","sl1","sl2","j","el1","el2","flag","getLineInterSect","getRectPoints","pos","rot","rX","rY","cRot","floor","prepareSnap","getAllLines","buildRectFromLines","getAllItems","getAllItemSnap","getAllLineSnap","cur","others","concat","validateSnaps","getAllArea","prepareSnapSpec","getAllItemSpecified","WALL_CABINET_LAYOUTPOS","lineRect","areainfo","sz","size","rect","vert","collisionCheck","tObj","_this3","undefined","userData","layerId","layoutpos","catid","type","cat","elements","info","oPos","clone","sBounding","children","depth","oVertices","itemId","sceneGraph","console","log","ocatid","ocat","olayoutpos","BASE_CABINET_LAYOUTPOS","tRot","rotation","tPos","tBounding","twidth","tdepth","tVertices","_loop2","properties","v","_ret","collisionHoleCheck","currentItem","selectedItem","returnReplaceableDeepSearchType","otherItem","needSnap","holes","holeID","hole","theight","trot","collisionSlide","item3D","originPos","sVertices","cur_category","selected","category","itemID","toJS","verticesDistance","exchange","layerID","targetData","targetPos","vArray","dteArray","lineArray","vdistanceArray","cVecArray","inFlag","v1","v2","tPosDistance","realDistance","tPosDistance1","realDistance1","k","temp","temp1","temp2","tX","tY","snap","parent","source","sRot","layoutType","altitudeLength","snapBoxGeom","BoxGeometry","snapBoxObj","Mesh","MeshBasicMaterial","transparent","blending","MultiplyBlending","removeSnapBoxObj","box","BoxHelper","material","linewidth","depthTest","renderOrder","deltaX","deltaZ","sPos","tPoses","pZ","tNum","curDis","cx","cz","selectedObj","rotRad","snapLine","lineId","snapLineThickness","iX","iY","lineVec","oLength","normalize","vec2Legnth","transLength","directPoint","directLine","dLength","reduceLen","scale","realAngle","result","sourcePos","firstMove","prevX","prevY","selObj","createToolObject","canvas","document","createElement","ctx","getContext","fillStyle","strokeStyle","beginPath","arc","fill","stroke","img1","Image","crossOrigin","src","onload","drawImage","img2","clockWise","lastAngle","createAngleObject","rotate","lineWidth","SECONDARY_PURPLE_COLOR","toolTexture","Texture","needsUpdate","Sprite","SpriteMaterial","map","sizeAttenuation","angleTexture","getPoint","alti","offsetX","offsetY","setFromCamera","ray","direction","updateMouseCoord","getIntersectWallPoint","arrMesh","mesh","intersects","intersectObjects","updateSelectedObject","selectedLayerId","selItemId","mouseDownEvent","event","matrixWorld","invert","itemInfo","sCount","transflag","meshes","object","isMesh","toolIntersects","pow","uv","indexOf","MODE_DRAWING_ITEM_3D","setToolbar","isNaN","unselectAll","removeReplacingSupport","isUndefined","selItem","image","centerPos","beginRotatingItem3D","beginDraggingHole3D","beginDraggingItem3D","mouseButtons","ACTION","NONE","mouseUpEvent","_selObj$object","_selObj$object2","endDrawingItem","updateDraggingItemChanged","updateRotatingItemChanged","MODE_DRAGGING_ITEM_3D","endDraggingItem3D","MODE_ROTATING_ITEM_3D","endRotatingItem3D","MODE_DRAWING_HOLE_3D","endDrawingHole3D","preventDefault","button","ROTATE","replaceInfo","selectItem","replaceCabinet","interact","getDistances","itemPos","pointArray","cnt","fVLine","pointElement","index","storeDistArray","endDraggingHole3D","visibleTransformBox","_intersects$_i","updateMovingState","mouseMoveEvent","drawingSupport","updateDrawingHole3D","deleteSpecifiedMeshObjects","nx","ny","updateDrawingItem","mX","mY","counterTop","uri","swidth","sdepth","_GeometryUtils$calcSn","calcSnap","nPos","polygonPoint","PolygonSect","ContainsPoint","_GeometryUtils$calcCr","calcCreateSnap","cy","crot","polygon","Sect","minDis","snapObj","iPos","snapDis","setBacksplashVisible","updateRotatingItem","orginRot","rotatingSupport","updateItemsAltitude","movementY","draggingSupport","updateDraggingHole","_GeometryUtils$calcSn2","_GeometryUtils$calcCr2","curPos","getAllMeshes","infoPos","getElementById","onkeydown","keyDownEnable","keyCode","setMoveStatus","setRotateStatus","handleKeyDown","setClearColor","Color","COLORS","white","setSize","addEventListener","SPKeyDown","tDKeyDown","canvasWrapper","ReactDOM","findDOMNode","refs","appendChild","err","JSON","stringify","Clock","Scene","background","selectedLine","vertex0","vertex1","x1","y1","x2","y2","compareVertices","toArray","l0","l1","pointsDistance","cameraRect","handleCamRect","OrthographicCamera","atan","aspectRatio","PerspectiveCamera","enable","loadENV","RGBELoader","load","texture","mapping","EquirectangularReflectionMapping","environment","dispose","dollyToCursor","infinityDolly","minDistance","maxDistance","Infinity","zoomSpeed","cam","delta","getDelta","update","updateMatrix","elemID","LODs","rotateY","indexAttribute","getIndex","firstFaceIndices","getX","normalAttribute","attributes","normal","fromBufferAttribute","sub","vertex2","posVec","cameraLine","child","opacity","dot","elevationGroup","autoClearDepth","requestAnimationFrame","componentWillUnmount","cancelAnimationFrame","removeEventListener","disposeScene","renderLists","componentWillReceiveProps","_this4","diff","isEmpty","aspect","updateProjectionMatrix","implementBacksplash","allItems","calcRect","getCalcRectFromItem3D","isSnappedLine","createBacksplash","implementWarningBox","checkCabinetOverlap","TALL_CABINET_LAYOUTPOS","layer1","changedValues","showfg","_this$state","_updateScene","updateScene","p1Value","setIn","_this$state2","alignItems","justifyContent","animation","alt","textAlign","marginTop","pointerEvents","React","ref","Component","propTypes","PropTypes","isRequired","number","func","contextTypes"],"sources":["../../../src/components/viewer3d/viewer3d.js"],"sourcesContent":["'use strict';\r\n\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReactDOM from 'react-dom';\r\nimport * as Three from 'three';\r\nimport {\r\n parseData,\r\n updateScene,\r\n visibleTransformBox,\r\n getDistances,\r\n fVLine,\r\n deleteSpecifiedMeshObjects,\r\n createBacksplash,\r\n checkCabinetOverlap\r\n} from './scene-creator';\r\nimport { disposeScene } from './three-memory-cleaner';\r\nimport { disposeObject } from './three-memory-cleaner';\r\nimport diff from 'immutablediff';\r\nimport * as SharedStyle from '../../shared-style';\r\nimport {\r\n MODE_DRAWING_ITEM_3D,\r\n MODE_IDLE_3D,\r\n MODE_3D_VIEW,\r\n UNIT_CENTIMETER,\r\n MODE_DRAWING_HOLE_3D,\r\n SECONDARY_PURPLE_COLOR,\r\n MODE_ELEVATION_VIEW,\r\n MODE_DRAGGING_ITEM_3D,\r\n MODE_ROTATING_ITEM_3D,\r\n WALL_CABINET_LAYOUTPOS,\r\n BASE_CABINET_LAYOUTPOS,\r\n TALL_CABINET_LAYOUTPOS\r\n} from '../../constants';\r\n\r\nimport { isUndefined } from 'util';\r\nimport { verticesDistance } from '../../utils/geometry';\r\nimport convert from 'convert-units';\r\nimport { GeometryUtils } from '../../utils/export';\r\nimport { handleCamRect, isElevationView, isEmpty } from '../../utils/helper';\r\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';\r\nimport CameraControls from 'camera-controls';\r\nCameraControls.install({ THREE: Three });\r\nimport { returnReplaceableDeepSearchType } from '../viewer2d/utils';\r\nimport {\r\n getAllMeshes,\r\n vectorIntersectWithMesh\r\n} from '../../utils/objects-utils';\r\n\r\nexport default class Scene3DViewer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isLoading: false,\r\n showflag: true,\r\n isLoadingCabinet: props.state.scene.isLoadingCabinet,\r\n toolObj: null,\r\n angleObj: null,\r\n waitForRender: 0,\r\n lineLength: null // when view wall's elevation, that wall's length\r\n };\r\n this.lastMousePosition = {};\r\n this.width = props.width;\r\n this.height = props.height;\r\n this.renderingID = 0;\r\n\r\n let { mode } = props.state;\r\n\r\n if (!window.__elevationRendererDownload) {\r\n window.__elevationRendererDownload = {};\r\n }\r\n\r\n switch (mode) {\r\n case MODE_IDLE_3D:\r\n this.renderer =\r\n window.__threeRenderer ||\r\n new Three.WebGLRenderer({\r\n preserveDrawingBuffer: true,\r\n alpha: true,\r\n antialias: true\r\n });\r\n break;\r\n case MODE_3D_VIEW:\r\n this.renderer =\r\n window.__threeRendererDownload ||\r\n new Three.WebGLRenderer({\r\n preserveDrawingBuffer: true,\r\n alpha: true,\r\n antialias: true\r\n });\r\n break;\r\n default:\r\n if (this.props.downloadFlag) {\r\n this.renderer =\r\n window.__elevationRendererDownload[mode] ||\r\n new Three.WebGLRenderer({\r\n preserveDrawingBuffer: true,\r\n alpha: true,\r\n antialias: true\r\n });\r\n } else {\r\n this.renderer =\r\n window.__elevationRenderer ||\r\n new Three.WebGLRenderer({\r\n preserveDrawingBuffer: true,\r\n alpha: true,\r\n antialias: true\r\n });\r\n }\r\n\r\n break;\r\n }\r\n\r\n this.renderer.shadowMap.enabled = true;\r\n this.renderer.shadowMapSoft = true;\r\n if (mode == 'MODE_IDLE_3D') {\r\n window.__threeRenderer = this.renderer;\r\n } else if (mode == 'MODE_3D_VIEW') {\r\n window.__threeRendererDownload = this.renderer;\r\n } else {\r\n if (this.props.downloadFlag)\r\n window.__elevationRendererDownload[mode] = this.renderer;\r\n else window.__elevationRenderer = this.renderer;\r\n }\r\n\r\n this.renderer.domElement.style.display = 'none';\r\n }\r\n\r\n componentDidMount(nextProps) {\r\n let scene3D, camera, pivot, cameraControls, clock;\r\n let spotLight1, spotLightTarget;\r\n\r\n const actions = {\r\n areaActions: this.context.areaActions,\r\n holesActions: this.context.holesActions,\r\n itemsActions: this.context.itemsActions,\r\n sceneActions: this.context.sceneActions,\r\n linesActions: this.context.linesActions,\r\n projectActions: this.context.projectActions,\r\n catalog: this.context.catalog\r\n };\r\n\r\n const self = this;\r\n const { state } = this.props;\r\n const { mode, scene } = state;\r\n function setupLight(scene, inbBox) {\r\n if (isElevationView(mode)) {\r\n const ambilight = new Three.AmbientLight('0xffffff', 3);\r\n scene.add(ambilight);\r\n } else {\r\n const shadowMapSize = 2048;\r\n const shadowCameraSize =\r\n Math.max(\r\n Math.abs(inbBox.min.x - inbBox.max.x),\r\n Math.abs(inbBox.min.y - inbBox.max.y),\r\n Math.abs(inbBox.min.z - inbBox.max.z)\r\n ) / 2;\r\n const shadowCameraFar = shadowCameraSize * 10;\r\n const bboxCenter = new Three.Vector3(\r\n (inbBox.min.x + inbBox.max.x) / 2,\r\n inbBox.min.y,\r\n (inbBox.min.z + inbBox.max.z) / 2\r\n );\r\n function addDirLight(inColor, inIntensity, inPosition) {\r\n const dirLight = new Three.DirectionalLight(inColor, inIntensity);\r\n dirLight.castShadow = true;\r\n dirLight.shadow.mapSize.x = shadowMapSize;\r\n dirLight.shadow.mapSize.y = shadowMapSize;\r\n dirLight.shadow.camera.near = 0;\r\n dirLight.shadow.camera.far = shadowCameraFar;\r\n\r\n dirLight.shadow.camera.top = shadowCameraSize * 1.5;\r\n dirLight.shadow.camera.bottom = -shadowCameraSize * 1.5;\r\n dirLight.shadow.camera.left = -shadowCameraSize * 1.5;\r\n dirLight.shadow.camera.right = shadowCameraSize * 1.5;\r\n dirLight.position.copy(inPosition);\r\n\r\n const targetObject = new Three.Object3D();\r\n targetObject.position.copy(bboxCenter);\r\n scene.add(targetObject);\r\n\r\n dirLight.target = targetObject;\r\n dirLight.target.updateMatrixWorld();\r\n\r\n scene.add(dirLight);\r\n }\r\n function addSpotLight(\r\n inColor,\r\n inIntensity,\r\n inPosition,\r\n inTarget,\r\n inDistance\r\n ) {\r\n const spotLight = new Three.SpotLight();\r\n spotLight.intensity = inIntensity;\r\n spotLight.color.setHex(inColor);\r\n spotLight.position.copy(inPosition);\r\n spotLight.angle = 1.3;\r\n spotLight.distance = inDistance;\r\n spotLight.penumbra = 1.8;\r\n spotLight.decay = 0.01;\r\n\r\n spotLight.castShadow = true;\r\n spotLight.shadow.intensity = 2;\r\n spotLight.shadow.mapSize.width = 4096;\r\n spotLight.shadow.mapSize.height = 4096;\r\n\r\n const targetObject = new Three.Object3D();\r\n targetObject.position.copy(\r\n new Three.Vector3(inTarget.x, 0, inTarget.z)\r\n );\r\n scene.add(targetObject);\r\n\r\n spotLight.target = targetObject;\r\n spotLight.target.updateMatrixWorld();\r\n scene.add(spotLight);\r\n }\r\n\r\n const dirLightPos = new Three.Vector3(\r\n inbBox.max.x,\r\n inbBox.max.y + 1.8 * Math.abs(inbBox.max.y - inbBox.min.y),\r\n inbBox.min.z - 0.5 * Math.abs(inbBox.max.z - inbBox.min.z)\r\n );\r\n\r\n addDirLight('white', 1.5, dirLightPos);\r\n\r\n const ceiling = scene3D.getObjectByName('ceil');\r\n if (ceiling) {\r\n const ceilBBox = new Three.Box3().setFromObject(ceiling);\r\n\r\n const spot1 = new Three.Vector3(\r\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\r\n ceilBBox.max.y - 0.5,\r\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - inbBox.max.z) / 4\r\n );\r\n const spot2 = new Three.Vector3(\r\n ceilBBox.min.x + Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\r\n ceilBBox.max.y - 0.5,\r\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\r\n );\r\n\r\n const spot3 = new Three.Vector3(\r\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\r\n ceilBBox.max.y - 0.5,\r\n ceilBBox.min.z + Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\r\n );\r\n const spot4 = new Three.Vector3(\r\n ceilBBox.max.x - Math.abs(ceilBBox.min.x - ceilBBox.max.x) / 4,\r\n ceilBBox.max.y - 0.5,\r\n ceilBBox.max.z - Math.abs(ceilBBox.min.z - ceilBBox.max.z) / 4\r\n );\r\n\r\n const spotlightDis = 1.5 * Math.abs(inbBox.min.y - inbBox.max.y);\r\n\r\n // check if spotlight is inside the room\r\n vectorIntersectWithMesh(spot1, scene3D.getObjectByName('floor')) &&\r\n addSpotLight('0xffffff', 0.8, spot1, spot1, spotlightDis);\r\n vectorIntersectWithMesh(spot2, scene3D.getObjectByName('floor')) &&\r\n addSpotLight('0xffffff', 0.8, spot2, spot2, spotlightDis);\r\n vectorIntersectWithMesh(spot3, scene3D.getObjectByName('floor')) &&\r\n addSpotLight('0xffffff', 0.8, spot3, spot3, spotlightDis);\r\n vectorIntersectWithMesh(spot4, scene3D.getObjectByName('floor')) &&\r\n addSpotLight('0xffffff', 0.8, spot4, spot4, spotlightDis);\r\n }\r\n }\r\n }\r\n\r\n // Load data\r\n this.setState({ isLoading: true });\r\n if (self.props.downloadFlag) {\r\n this.setState({ waitForRender: 0 });\r\n\r\n // set loading bar\r\n switch (self.props.state.mode) {\r\n case MODE_ELEVATION_VIEW:\r\n self.props.setIsLoadingElevation('front', true);\r\n break;\r\n case MODE_3D_VIEW:\r\n self.props.setIsLoading3D(true);\r\n break;\r\n }\r\n }\r\n\r\n const { promise, planData } = parseData(\r\n scene,\r\n actions,\r\n this.context.catalog,\r\n camera,\r\n this.renderer,\r\n state.mode\r\n );\r\n\r\n promise.then(() => {\r\n let objToRemove = [];\r\n planData.plan.traverse(obj => {\r\n if (obj.geometry === null) {\r\n objToRemove.push(obj);\r\n }\r\n });\r\n objToRemove.forEach(obj => {\r\n obj.removeFromParent();\r\n });\r\n const bbox = new Three.Box3().setFromObject(planData.plan);\r\n if (!isElevationView(state.mode)) {\r\n cameraControls.fitToBox(bbox);\r\n }\r\n setupLight(scene3D, planData.boundingBox);\r\n\r\n self.setState({ waitForRender: 1 });\r\n setTimeout(() => {\r\n self.setState({ isLoading: false });\r\n self.renderer.domElement.style.display = 'block';\r\n }, 1500);\r\n });\r\n\r\n const area = scene.getIn(['layers', scene.selectedLayer, 'areas']);\r\n const layer = scene.getIn(['layers', scene.selectedLayer]);\r\n const areas = [],\r\n lights = [];\r\n\r\n let snapBox = null;\r\n\r\n // Check for data\r\n let msg = '';\r\n scene.layers.forEach(layer => {\r\n if (layer.id === scene.selectedLayer || layer.visible) {\r\n layer.items.forEach(item => {\r\n if (item.doorStyle === null) {\r\n if (!msg.includes(item.name + \"'s doorStyle is null.\"))\r\n msg += item.name + \"'s doorStyle is null.\\n\";\r\n }\r\n });\r\n }\r\n });\r\n if (msg !== '') {\r\n confirm(msg);\r\n }\r\n\r\n init();\r\n render();\r\n\r\n // area lightning(wall lightning)/////\r\n\r\n area.forEach(data => {\r\n areas.push(data);\r\n });\r\n for (let i = 0; i < areas.length; i++) {\r\n let aVertices = [];\r\n let lines = [];\r\n let height = 100;\r\n areas[i].vertices.forEach(data => {\r\n aVertices.push(data);\r\n });\r\n layer.lines.forEach(data => {\r\n lines.push(data);\r\n });\r\n for (let i = 0; i < lines.length; i++) {\r\n let data = lines[i];\r\n let realVec = [];\r\n data.vertices.forEach(vec => {\r\n realVec.push(vec);\r\n });\r\n if (aVertices.includes(realVec[0]) && aVertices.includes(realVec[1])) {\r\n height = convert(layer.ceilHeight)\r\n .from(layer.unit)\r\n .to(UNIT_CENTIMETER);\r\n // height = data.properties.getIn(['height', 'length']);\r\n break;\r\n }\r\n }\r\n let vertices = [];\r\n areas[i].vertices.forEach(datas => {\r\n let vertex = scene.getIn([\r\n 'layers',\r\n scene.selectedLayer,\r\n 'vertices',\r\n datas\r\n ]);\r\n vertices.push(vertex);\r\n });\r\n vertices.push(vertices[0]);\r\n let fLen = vertices.length - 1;\r\n for (let i = 0; i < fLen; i++) {\r\n let sX = vertices[i].x;\r\n let sY = vertices[i].y;\r\n let eX = vertices[i + 1].x;\r\n let eY = vertices[i + 1].y;\r\n let len = Math.sqrt((eX - sX) * (eX - sX) + (eY - sY) * (eY - sY));\r\n for (let cLen = 200; cLen < len; cLen += 200) {\r\n let cX = sX + ((eX - sX) * cLen) / len;\r\n let cY = sY + ((eY - sY) * cLen) / len;\r\n let endLen = Math.sqrt((eX - cX) * (eX - cX) + (eY - cY) * (eY - cY));\r\n if (endLen <= 100) continue;\r\n let vec2 = new Three.Vector2(cX - sX, cY - sY);\r\n let angle = vec2.angle() + Math.PI / 2;\r\n cX = Math.cos(angle) * 30 + cX;\r\n cY = Math.sin(angle) * 30 + cY;\r\n let spotLight = new Three.SpotLight(0xeeeeee, 1.7);\r\n spotLight.angle = 0.76;\r\n spotLight.castShadow = true;\r\n spotLight.penumbra = 1;\r\n spotLight.decay = 1.7;\r\n spotLight.distance = height - 20;\r\n let target = new Three.Object3D();\r\n spotLight.target = target;\r\n lights.push({\r\n light: spotLight,\r\n target: target,\r\n x: cX,\r\n y: cY,\r\n height: height\r\n });\r\n }\r\n }\r\n }\r\n // //////////////////////////\r\n\r\n // OBJECT PICKING\r\n let toIntersect = [planData.plan];\r\n let mouse = new Three.Vector2();\r\n let gridPlane = planData.grid;\r\n let raycaster = new Three.Raycaster();\r\n let selectedObject = {};\r\n let selectedFlag = false;\r\n let currentObject = null;\r\n let isSelected = false;\r\n let bRotate = false;\r\n let bMove = false;\r\n let bMoveUP = false;\r\n /** Transformation matrix of grid */\r\n const gridMatrix = new Three.Matrix4();\r\n let rayDirection = new Three.Vector3();\r\n /** World position of grid plane */\r\n let gridPlanOrigin = new Three.Vector3();\r\n let Point = new Three.Vector2();\r\n let sPoint = new Three.Vector2();\r\n\r\n // SNAP FUNCTION VARIABLE\r\n let snapFlag = false;\r\n let snapAnimI = 0;\r\n let snapDelta = 6;\r\n let t_i = 0;\r\n let targetPoint = new Three.Vector3();\r\n let targetRot = 0;\r\n let targetUVec = new Three.Vector3();\r\n let targetCRotation = 0;\r\n let targetObj = null;\r\n let targetNumber = 0;\r\n let wallSlide = false;\r\n\r\n let pinFlag = false;\r\n let sFlag = false; //for all object move\r\n let endPoint = {};\r\n let allItemRect;\r\n let allItemSnap;\r\n let allLines;\r\n let allLineRects;\r\n let allLineSnap;\r\n let allRect;\r\n let allArea;\r\n\r\n // end snap function variable///////////////////////\r\n let backsplashVisible = false;\r\n let holeItems = GeometryUtils.getHoleItems(layer);\r\n\r\n let removeSnapBox = () => {\r\n if (snapBox != null) {\r\n planData.plan.remove(snapBox);\r\n disposeObject(snapBox);\r\n snapBox = null;\r\n targetObj = null;\r\n snapFlag = false;\r\n }\r\n };\r\n\r\n const camToGrid = new Three.Vector3();\r\n let camPos = camera.position;\r\n\r\n const mapCursorPosition = (e, altitude) => {\r\n camToGrid.subVectors(gridPlanOrigin, camPos);\r\n\r\n let camD = camToGrid.y + (altitude ? altitude : 0);\r\n let rayD = rayDirection.y;\r\n\r\n const intersectPt = rayDirection.multiplyScalar(camD / rayD).add(camPos);\r\n intersectPt.y = gridPlanOrigin.y;\r\n intersectPt.applyMatrix4(gridMatrix);\r\n\r\n return { x: intersectPt.x, y: -intersectPt.z };\r\n };\r\n\r\n /* for Snap Functions*/\r\n\r\n let pointLineDistance = function (point, line) {\r\n // return distance from point to line and directional point of line\r\n let pX = point.x;\r\n let pY = point.y;\r\n let l1x = line[0].x;\r\n let l1y = line[0].y;\r\n let l2x = line[1].x;\r\n let l2y = line[1].y;\r\n let pLine = new Three.Vector2(l1x - pX, l1y - pY);\r\n let Line = new Three.Vector2(l1x - l2x, l1y - l2y);\r\n let pAngle = pLine.angle();\r\n let lAngle = Line.angle();\r\n let pDistance = pLine.length();\r\n let oDistance = Line.length();\r\n let directDistance = Math.sin(pAngle - lAngle) * pDistance;\r\n let lineDistance = Math.cos(pAngle - lAngle) * pDistance;\r\n let dX = l1x + ((l2x - l1x) * lineDistance) / oDistance;\r\n let dY = l1y + ((l2y - l1y) * lineDistance) / oDistance;\r\n let dPoint = { x: dX, y: dY };\r\n return { distance: directDistance, point: dPoint };\r\n };\r\n let getInterSect = function (shape1, shape2) {\r\n // return result of intersect of two shape\r\n let count = 0;\r\n for (let i = 0; i < shape1.length - 1; i++) {\r\n let sl1 = { x: shape1[i].x, y: shape1[i].y };\r\n let sl2 = { x: shape1[i + 1].x, y: shape1[i + 1].y };\r\n for (let j = 0; j < shape2.length - 1; j++) {\r\n let el1 = { x: shape2[j].x, y: shape2[j].y };\r\n let el2 = { x: shape2[j + 1].x, y: shape2[j + 1].y };\r\n let flag = GeometryUtils.getLineInterSect(\r\n sl1.x,\r\n sl1.y,\r\n sl2.x,\r\n sl2.y,\r\n el1.x,\r\n el1.y,\r\n el2.x,\r\n el2.y\r\n );\r\n if (flag) {\r\n count++;\r\n if (count > 1) return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n this.getRectPoints = function (width, height, pos, rot) {\r\n // return 4 points from it's position, width, height, and rotation info\r\n let rX = width / 2;\r\n let rY = height / 2;\r\n let vertices = [];\r\n let cRot = rot;\r\n let pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\r\n let pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\r\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\r\n rX = -rX;\r\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\r\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\r\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\r\n rY = -rY;\r\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\r\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\r\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\r\n rX = -rX;\r\n pX = pos.x + Math.cos(cRot) * rX + Math.cos(cRot + Math.PI / 2) * rY;\r\n pY = pos.y + Math.sin(cRot) * rX + Math.sin(cRot + Math.PI / 2) * rY;\r\n vertices.push({ x: Math.floor(pX + 0.5), y: Math.floor(pY + 0.5) });\r\n vertices.push(vertices[0]);\r\n vertices.push(vertices[2]);\r\n return vertices;\r\n };\r\n\r\n const prepareSnap = layer => {\r\n allLines = GeometryUtils.getAllLines(layer);\r\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\r\n allItemRect = GeometryUtils.getAllItems(\r\n this.props.state.scene,\r\n actions.catalog,\r\n allLineRects\r\n );\r\n allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);\r\n allLineSnap = GeometryUtils.getAllLineSnap(allLineRects, allItemRect.cur);\r\n allRect = allItemRect.others.concat(allLineRects);\r\n allItemSnap = GeometryUtils.validateSnaps(allItemSnap, allRect);\r\n allLineSnap = GeometryUtils.validateSnaps(allLineSnap, allRect);\r\n allArea = GeometryUtils.getAllArea(layer);\r\n };\r\n\r\n let prepareSnapSpec = layer => {\r\n allLines = GeometryUtils.getAllLines(layer);\r\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\r\n allItemRect = GeometryUtils.getAllItemSpecified(\r\n this.props.state.scene,\r\n actions.catalog,\r\n WALL_CABINET_LAYOUTPOS\r\n );\r\n // allItemSnap = GeometryUtils.getAllItemSnap(allItemRect);\r\n };\r\n\r\n // prepareSnapSpec(layer);\r\n let lineRect = layer => {\r\n let areainfo = [];\r\n layer.areas.forEach(area => {\r\n let sz = area.vertices.size;\r\n for (var i = 0; i < sz; i++) {\r\n areainfo.push(area.vertices.get(i));\r\n }\r\n });\r\n let rect = [];\r\n areainfo.forEach(area => {\r\n let vert = layer.vertices.get(area);\r\n rect.push(vert.x, vert.y);\r\n });\r\n return rect;\r\n };\r\n\r\n this.collisionCheck = function (obj, pos, rot, tObj, item = null, catalog) {\r\n //collision check from one object to every other object excpet target object\r\n let layer = this.props.state.scene.getIn([\r\n 'layers',\r\n obj.userData.layerId\r\n ]);\r\n let layoutpos = 'utype';\r\n if (item !== null) {\r\n let catid = item.type;\r\n let cat = catalog.elements[catid];\r\n layoutpos = cat.info.layoutpos;\r\n }\r\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\r\n let sBounding = obj.children[0].userData;\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let oVertices = this.getRectPoints(\r\n width,\r\n depth,\r\n oPos.clone(),\r\n ((rot % 360) / 180) * Math.PI\r\n );\r\n let datas = [];\r\n layer.items.forEach(data => {\r\n datas.push(data);\r\n });\r\n for (let i = 0; i < datas.length; i++) {\r\n let data = datas[i];\r\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\r\n continue;\r\n let target =\r\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\r\n if (target === undefined) {\r\n console.log(\r\n data.id +\r\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\r\n );\r\n return false;\r\n }\r\n let item = layer.items.getIn([data.id]);\r\n let ocatid = item.type;\r\n let ocat = catalog.elements[ocatid];\r\n let olayoutpos = ocat.info.layoutpos;\r\n if (\r\n !(\r\n (layoutpos === BASE_CABINET_LAYOUTPOS &&\r\n olayoutpos === WALL_CABINET_LAYOUTPOS) ||\r\n (layoutpos === WALL_CABINET_LAYOUTPOS &&\r\n olayoutpos === BASE_CABINET_LAYOUTPOS)\r\n )\r\n ) {\r\n let tRot = item.rotation;\r\n let tPos = new Three.Vector2(item.x, item.y);\r\n let tBounding = target.children[0].userData;\r\n let twidth = tBounding.max.x - tBounding.min.x;\r\n let tdepth = tBounding.max.z - tBounding.min.z;\r\n let tVertices = this.getRectPoints(\r\n twidth,\r\n tdepth,\r\n tPos.clone(),\r\n ((tRot % 360) / 180) * Math.PI\r\n );\r\n if (getInterSect(oVertices, tVertices)) {\r\n return false;\r\n }\r\n }\r\n }\r\n datas = [];\r\n layer.lines.forEach(data => {\r\n datas.push(data);\r\n });\r\n for (let i = 0; i < datas.length; i++) {\r\n let data = datas[i];\r\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\r\n continue;\r\n let item = layer.lines.getIn([data.id]);\r\n // let llayoutpos = catalog.elements[item.type].info.layoutpos;\r\n let vertices = [];\r\n item.vertices.forEach(data => {\r\n let vertex = layer.vertices.get(data);\r\n vertices.push({ x: vertex.x, y: vertex.y });\r\n });\r\n let vec = new Three.Vector2(\r\n vertices[1].x - vertices[0].x,\r\n vertices[1].y - vertices[0].y\r\n );\r\n let tRot = vec.angle();\r\n let tPos = new Three.Vector2(\r\n (vertices[0].x + vertices[1].x) / 2,\r\n (vertices[0].y + vertices[1].y) / 2\r\n );\r\n let tdepth = item.properties.getIn(['thickness', 'length']);\r\n let twidth = Math.sqrt(vec.x * vec.x + vec.y * vec.y);\r\n let tVertices = this.getRectPoints(twidth, tdepth, tPos.clone(), tRot);\r\n if (getInterSect(oVertices, tVertices)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n this.collisionHoleCheck = function (\r\n obj,\r\n pos,\r\n rot,\r\n tObj,\r\n item = null,\r\n catalog\r\n ) {\r\n let layer = this.props.state.scene.getIn([\r\n 'layers',\r\n obj.userData.layerId\r\n ]);\r\n let currentItem;\r\n if (item !== null) {\r\n let catid = item.type;\r\n let cat = catalog.elements[catid];\r\n currentItem = {\r\n selectedItem: item,\r\n cat\r\n };\r\n }\r\n let oPos = new Three.Vector2(pos.clone().x, pos.clone().y);\r\n let sBounding = obj.children[0].userData;\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let oVertices = this.getRectPoints(\r\n width,\r\n depth,\r\n oPos.clone(),\r\n ((rot % 360) / 180) * Math.PI\r\n );\r\n\r\n let datas = [];\r\n layer.items.forEach(data => {\r\n datas.push(data);\r\n });\r\n for (let i = 0; i < datas.length; i++) {\r\n let data = datas[i];\r\n if (data.id == obj.userData.itemId || data.id == tObj.userData.itemId)\r\n continue;\r\n let target =\r\n planData.sceneGraph.layers[obj.userData.layerId].items[data.id];\r\n if (target === undefined) {\r\n console.log(\r\n data.id +\r\n ' does not exist in viewer3d/viewer3d.js collisionCheck function'\r\n );\r\n return false;\r\n }\r\n let item = layer.items.getIn([data.id]);\r\n let ocatid = item.type;\r\n let ocat = catalog.elements[ocatid];\r\n if (!ocat)\r\n ocat = catalog.elements[returnReplaceableDeepSearchType(ocatid)];\r\n let otherItem = {\r\n item,\r\n cat: ocat\r\n };\r\n\r\n if (\r\n GeometryUtils.needSnap(currentItem, otherItem) &&\r\n otherItem.cat.type != 'cabinet'\r\n ) {\r\n let tRot = item.rotation;\r\n let tPos = new Three.Vector2(item.x, item.y);\r\n let tBounding = target.children[0].userData;\r\n let twidth = tBounding.max.x - tBounding.min.x;\r\n let tdepth = tBounding.max.z - tBounding.min.z;\r\n let tVertices = this.getRectPoints(\r\n twidth,\r\n tdepth,\r\n tPos.clone(),\r\n ((tRot % 360) / 180) * Math.PI\r\n );\r\n if (getInterSect(oVertices, tVertices)) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n let holes = [];\r\n layer.lines.forEach(line => {\r\n line.holes.forEach(holeID => {\r\n let hole = layer.holes.get(holeID);\r\n holes.push(hole);\r\n });\r\n });\r\n let i = 0;\r\n for (; i < holes.length; i++) {\r\n let tPos = new Three.Vector2(holes[i].x, holes[i].y);\r\n let twidth = holes[i].properties.getIn(['width', 'length']);\r\n let theight = holes[i].properties.getIn(['thickness', 'length']);\r\n let trot = holes[i].rotation;\r\n let tVertices = this.getRectPoints(twidth, theight, tPos.clone(), trot);\r\n if (getInterSect(oVertices, tVertices)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n this.collisionSlide = function (\r\n item3D,\r\n originPos,\r\n layer,\r\n sVertices,\r\n tPos,\r\n item\r\n ) {\r\n let items = [];\r\n\r\n let cur_category = '';\r\n let catalog = actions.catalog;\r\n if (layer.selected.items.size > 0) {\r\n let selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);\r\n let catid = selectedItem.type;\r\n let cat = catalog.elements[catid];\r\n if (cat === undefined || cat === null)\r\n cat = catalog.getIn(['elements', catid]);\r\n cur_category = cat.obj.category;\r\n }\r\n\r\n layer.items.forEach(data => {\r\n if (data.id == selectedObject.itemID) {\r\n return;\r\n }\r\n\r\n items.push(data.toJS());\r\n });\r\n let oPos = new Three.Vector2(originPos.x, -originPos.z);\r\n\r\n // sort from distance\r\n for (let i = 0; i < items.length - 1; i++) {\r\n for (let j = i + 1; j < items.length; j++) {\r\n if (\r\n verticesDistance(oPos, new Three.Vector2(items[i].x, items[i].y)) >\r\n verticesDistance(oPos, new Three.Vector2(items[j].x, items[j].y))\r\n ) {\r\n let exchange = items[j];\r\n items[j] = items[i];\r\n items[i] = exchange;\r\n }\r\n }\r\n }\r\n let i = 0;\r\n\r\n for (; i < items.length; i++) {\r\n if (!items[i]) return;\r\n let target =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\r\n if (target === undefined) {\r\n return false;\r\n }\r\n let targetData = layer.items.getIn([items[i].id]);\r\n let tRot = targetData.rotation;\r\n let tPos = new Three.Vector2(targetData.x, targetData.y);\r\n let tBounding = target.children[0].userData;\r\n let twidth = tBounding.max.x - tBounding.min.x;\r\n let tdepth = tBounding.max.z - tBounding.min.z;\r\n let tVertices = this.getRectPoints(\r\n twidth,\r\n tdepth,\r\n tPos.clone(),\r\n ((tRot % 360) / 180) * Math.PI\r\n );\r\n if (getInterSect(sVertices, tVertices)) {\r\n break;\r\n }\r\n }\r\n if (items.length == 0 || !items[i]) return;\r\n let target =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[items[i].id];\r\n let targetData = layer.items.getIn([items[i].id]);\r\n let targetPos = new Three.Vector2(targetData.x, targetData.y);\r\n let tRot = targetData.rotation;\r\n let tBounding = target.children[0].userData;\r\n let twidth = tBounding.max.x - tBounding.min.x;\r\n let tdepth = tBounding.max.z - tBounding.min.z;\r\n let tVertices = this.getRectPoints(\r\n twidth,\r\n tdepth,\r\n targetPos.clone(),\r\n ((tRot % 360) / 180) * Math.PI\r\n );\r\n // ////////////////////////\r\n let vArray = [];\r\n let dteArray = [];\r\n let lineArray = [];\r\n let vdistanceArray = [];\r\n let cVecArray = [];\r\n let inFlag = false;\r\n for (let i = 0; i < 4; i++) {\r\n let v1 = tVertices[i];\r\n let v2 = tVertices[i + 1];\r\n let data = pointLineDistance({ x: tPos.x, y: tPos.y }, [\r\n { x: v1.x, y: v1.y },\r\n { x: v2.x, y: v2.y }\r\n ]);\r\n dteArray.push(data.distance);\r\n vArray.push(data.point);\r\n lineArray.push([v1, v2]);\r\n }\r\n // if tPos in target object\r\n let tPosDistance =\r\n Math.abs(pointLineDistance(tPos, lineArray[0]).distance) +\r\n Math.abs(pointLineDistance(tPos, lineArray[2]).distance);\r\n let realDistance = new Three.Vector2(\r\n lineArray[1][0].x - lineArray[1][1].x,\r\n lineArray[1][0].y - lineArray[1][1].y\r\n ).length();\r\n let tPosDistance1 =\r\n Math.abs(pointLineDistance(tPos, lineArray[1]).distance) +\r\n Math.abs(pointLineDistance(tPos, lineArray[3]).distance);\r\n let realDistance1 = new Three.Vector2(\r\n lineArray[0][0].x - lineArray[0][1].x,\r\n lineArray[0][0].y - lineArray[0][1].y\r\n ).length();\r\n if (\r\n Math.abs(Math.abs(tPosDistance) - Math.abs(realDistance)) < 0.01 &&\r\n Math.abs(Math.abs(tPosDistance1) - Math.abs(realDistance1)) < 0.01\r\n )\r\n inFlag = true;\r\n // ////////////////////\r\n let key = 0;\r\n // sort distance from origin point\r\n for (let j = 0; j < dteArray.length - 1; j++) {\r\n for (let k = j + 1; k < dteArray.length; k++) {\r\n if (Math.abs(dteArray[j]) > Math.abs(dteArray[k])) {\r\n let temp = dteArray[k];\r\n dteArray[j] = dteArray[k];\r\n dteArray[k] = temp;\r\n let temp1 = vArray[k];\r\n vArray[j] = vArray[k];\r\n vArray[k] = temp1;\r\n let temp2 = lineArray[k];\r\n lineArray[j] = lineArray[k];\r\n lineArray[k] = temp2;\r\n }\r\n }\r\n }\r\n // //////////////////////////////\r\n for (let i = 0; i < 4; i++) {\r\n let data = pointLineDistance(sVertices[i], lineArray[key]);\r\n vdistanceArray.push(data.distance);\r\n cVecArray.push({\r\n x: data.point.x - sVertices[i].x,\r\n y: data.point.y - sVertices[i].y\r\n });\r\n }\r\n\r\n for (let j = 0; j < vdistanceArray.length; j++) {\r\n let tX = tPos.x + cVecArray[j].x;\r\n let tY = tPos.y + cVecArray[j].y;\r\n if (\r\n this.collisionCheck(\r\n item3D,\r\n new Three.Vector2(tX, tY),\r\n item.rotation,\r\n {\r\n userData: { itemId: null }\r\n },\r\n item,\r\n this.context.catalog\r\n )\r\n ) {\r\n item3D.position.set(tX, originPos.y, -tY);\r\n sPoint.set(tX, tY);\r\n break;\r\n }\r\n }\r\n };\r\n\r\n this.snap = function (obj, layer) {\r\n // snap operation\r\n let target = obj.userData.target;\r\n for (; target.parent != null; ) {\r\n if (target.name == 'pivot') break;\r\n target = target.parent;\r\n }\r\n let source = obj.parent.parent.parent;\r\n if (target.userData.type == 'item') {\r\n let sRot = layer.getIn(['items', source.userData.itemId]).rotation;\r\n let tRot = layer.getIn(['items', target.userData.itemId])\r\n ? layer.getIn(['items', target.userData.itemId]).rotation\r\n : 0;\r\n let item = layer.getIn(['items', source.userData.itemId]);\r\n let layoutType = item.layoutpos;\r\n let altitudeLength = convert(\r\n item.properties.getIn(['altitude', '_length'])\r\n )\r\n .from('in')\r\n .to('cm');\r\n let sBounding = source.children[0].userData;\r\n let tBounding = target.children[0].userData;\r\n let tPos = target.position.clone();\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let height = sBounding.max.y - sBounding.min.y;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\r\n let snapBoxObj = new Three.Mesh(\r\n snapBoxGeom,\r\n new Three.MeshBasicMaterial({\r\n // color: 0x2cde6b,\r\n // opacity: 0.7,\r\n transparent: true,\r\n blending: Three.MultiplyBlending\r\n })\r\n );\r\n let removeSnapBoxObj = () => {\r\n if (snapBoxObj) {\r\n planData.plan.remove(snapBoxObj);\r\n disposeObject(snapBoxObj);\r\n }\r\n snapFlag = false;\r\n };\r\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\r\n box.material.linewidth = 2;\r\n box.material.depthTest = false;\r\n box.renderOrder = 200;\r\n snapBoxObj.add(box);\r\n snapBoxObj.position.set(\r\n source.position.x,\r\n layoutType === WALL_CABINET_LAYOUTPOS\r\n ? altitudeLength + source.position.y + height / 2\r\n : source.position.y + height / 2,\r\n source.position.z\r\n );\r\n snapBoxObj.rotation.set(\r\n source.rotation.x,\r\n source.rotation.y,\r\n source.rotation.z\r\n );\r\n snapBoxObj.name = 'TransformBox';\r\n planData.plan.add(snapBoxObj);\r\n let deltaX =\r\n (tBounding.max.x - tBounding.min.x) / 2 +\r\n (sBounding.max.x - sBounding.min.x) / 2;\r\n let deltaZ =\r\n (tBounding.max.z - tBounding.min.z) / 2 -\r\n (sBounding.max.z - sBounding.min.z) / 2;\r\n let sPos = snapBoxObj.position.clone();\r\n // avaliable snap place///////////////\r\n let tPoses = [];\r\n let pX =\r\n tPos.x +\r\n deltaX * Math.cos((tRot / 180) * Math.PI) +\r\n deltaZ * Math.sin((tRot / 180) * Math.PI);\r\n let pZ =\r\n tPos.z -\r\n deltaX * Math.sin((tRot / 180) * Math.PI) +\r\n deltaZ * Math.cos((tRot / 180) * Math.PI);\r\n tPoses.push(new Three.Vector3(pX, 0, pZ));\r\n deltaX = -deltaX;\r\n pX =\r\n tPos.x +\r\n deltaX * Math.cos((tRot / 180) * Math.PI) +\r\n deltaZ * Math.sin((tRot / 180) * Math.PI);\r\n pZ =\r\n tPos.z -\r\n deltaX * Math.sin((tRot / 180) * Math.PI) +\r\n deltaZ * Math.cos((tRot / 180) * Math.PI);\r\n tPoses.push(new Three.Vector3(pX, 0, pZ));\r\n deltaX =\r\n (tBounding.max.x - tBounding.min.x) / 2 -\r\n (sBounding.max.x - sBounding.min.x) / 2;\r\n deltaZ =\r\n -(tBounding.max.z - tBounding.min.z) / 2 -\r\n (sBounding.max.z - sBounding.min.z) / 2;\r\n pX =\r\n tPos.x +\r\n deltaX * Math.cos((tRot / 180) * Math.PI) +\r\n deltaZ * Math.sin((tRot / 180) * Math.PI);\r\n pZ =\r\n tPos.z -\r\n deltaX * Math.sin((tRot / 180) * Math.PI) +\r\n deltaZ * Math.cos((tRot / 180) * Math.PI);\r\n tPoses.push(new Three.Vector3(pX, 0, pZ));\r\n deltaX = -deltaX;\r\n pX =\r\n tPos.x +\r\n deltaX * Math.cos((tRot / 180) * Math.PI) +\r\n deltaZ * Math.sin((tRot / 180) * Math.PI);\r\n pZ =\r\n tPos.z -\r\n deltaX * Math.sin((tRot / 180) * Math.PI) +\r\n deltaZ * Math.cos((tRot / 180) * Math.PI);\r\n tPoses.push(new Three.Vector3(pX, 0, pZ));\r\n let distance = Math.sqrt(\r\n (sPos.x - tPoses[0].x) * (sPos.x - tPoses[0].x) +\r\n (sPos.z - tPoses[0].z) * (sPos.z - tPoses[0].z)\r\n );\r\n let tNum = 1;\r\n tPos = tPoses[0].clone();\r\n for (let i = 1; i < tPoses.length; i++) {\r\n let curDis = Math.sqrt(\r\n (sPos.x - tPoses[i].x) * (sPos.x - tPoses[i].x) +\r\n (sPos.z - tPoses[i].z) * (sPos.z - tPoses[i].z)\r\n );\r\n if (curDis < distance) {\r\n distance = curDis;\r\n tNum = i + 1;\r\n tPos = tPoses[i].clone();\r\n }\r\n }\r\n // //////////////////////////////////\r\n if (\r\n targetObj != null &&\r\n targetObj.userData.itemId == target.userData.itemId &&\r\n tNum == targetNumber\r\n ) {\r\n removeSnapBoxObj();\r\n return;\r\n } else {\r\n removeSnapBox();\r\n }\r\n // //////////////////////////////////\r\n if (tNum >= 3) tRot += 180;\r\n\r\n snapAnimI = 0;\r\n t_i = 0;\r\n targetObj = target;\r\n targetNumber = tNum;\r\n targetRot = tRot;\r\n targetPoint = tPos;\r\n snapBox = snapBoxObj;\r\n let cx = sPos.x - tPos.x;\r\n let cz = sPos.z - tPos.z;\r\n targetUVec = new Three.Vector3(cx, 0, cz);\r\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\r\n } else {\r\n let item = layer.getIn(['items', source.userData.itemId]);\r\n if (holeItems.length && selectedObj) {\r\n let i;\r\n for (i = 0; i < holeItems.length; i++) {\r\n let hole = holeItems[i];\r\n if (Math.abs(Math.sin(selectedObj.rotRad)) === 1) {\r\n if (\r\n item.y + selectedObj.size.width / 2 >=\r\n hole.y - hole.width / 2 &&\r\n item.y - selectedObj.size.width / 2 <=\r\n hole.y + hole.width / 2 &&\r\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\r\n ? item.x <= hole.x &&\r\n item.x + selectedObj.size.height >= hole.x\r\n : item.x >= hole.x &&\r\n item.x - selectedObj.size.height <= hole.x)\r\n )\r\n break;\r\n } else {\r\n if (\r\n item.x + selectedObj.size.width / 2 >=\r\n hole.x - hole.width / 2 &&\r\n item.x - selectedObj.size.width / 2 <=\r\n hole.x + hole.width / 2 &&\r\n (selectedObj.rotRad == 0 || selectedObj.rotRad == -Math.PI / 2\r\n ? item.y <= hole.y &&\r\n item.y + selectedObj.size.height >= hole.y\r\n : item.y >= hole.y &&\r\n item.y - selectedObj.size.height <= hole.y)\r\n )\r\n break;\r\n }\r\n }\r\n if (i != holeItems.length) return;\r\n }\r\n if (target.userData.type == 'hole') {\r\n snapFlag = false;\r\n return;\r\n } else {\r\n let layoutType = item.layoutpos;\r\n let altitudeLength = convert(\r\n item.properties.getIn(['altitude', '_length'])\r\n )\r\n .from('in')\r\n .to('cm');\r\n let sBounding = source.children[0].userData;\r\n let width = sBounding.max.x - sBounding.min.x;\r\n let height = sBounding.max.y - sBounding.min.y;\r\n let depth = sBounding.max.z - sBounding.min.z;\r\n let snapBoxGeom = new Three.BoxGeometry(width, height, depth);\r\n let snapBoxObj = new Three.Mesh(\r\n snapBoxGeom,\r\n new Three.MeshBasicMaterial({\r\n // color: 0x2cde6b,\r\n // opacity: 0.7,\r\n transparent: true,\r\n blending: Three.MultiplyBlending\r\n })\r\n );\r\n let removeSnapBoxObj = () => {\r\n if (snapBoxObj) {\r\n planData.plan.remove(snapBoxObj);\r\n disposeObject(snapBoxObj);\r\n }\r\n snapFlag = false;\r\n };\r\n let box = new Three.BoxHelper(snapBoxObj, 0xffffff);\r\n box.material.linewidth = 2;\r\n box.material.depthTest = false;\r\n box.renderOrder = 100;\r\n snapBoxObj.add(box);\r\n\r\n snapBoxObj.position.set(\r\n source.position.x,\r\n layoutType === WALL_CABINET_LAYOUTPOS\r\n ? altitudeLength + source.position.y + height / 2\r\n : source.position.y + height / 2,\r\n source.position.z\r\n );\r\n snapBoxObj.rotation.set(\r\n source.rotation.x,\r\n source.rotation.y,\r\n source.rotation.z\r\n );\r\n snapBoxObj.name = 'TransformBox';\r\n planData.plan.add(snapBoxObj);\r\n\r\n let snapLine = layer.getIn(['lines', target.userData.lineId]);\r\n // let snapLineThickness = snapLine.properties.getIn([\r\n // 'thickness',\r\n // 'length'\r\n // ]);\r\n let snapLineThickness = 10.64;\r\n let vertices = [];\r\n if (snapLine === undefined) return;\r\n snapLine.vertices.forEach(data => {\r\n let vec = layer.getIn(['vertices', data]);\r\n vertices.push(vec);\r\n });\r\n let iX = source.position.clone().x;\r\n let iY = -source.position.clone().z;\r\n let lineVec = new Three.Vector2(\r\n vertices[1].x - vertices[0].x,\r\n vertices[1].y - vertices[0].y\r\n );\r\n let oLength = Math.sqrt(\r\n lineVec.x * lineVec.x + lineVec.y * lineVec.y\r\n );\r\n lineVec.normalize();\r\n let vec2 = new Three.Vector2(iX - vertices[0].x, iY - vertices[0].y);\r\n let vec2Legnth = Math.sqrt(vec2.x * vec2.x + vec2.y * vec2.y);\r\n let angle = Math.abs(lineVec.angle() - vec2.angle());\r\n angle = angle > Math.PI ? 2 * Math.PI - angle : angle;\r\n let lineLength = Math.cos(angle) * vec2Legnth;\r\n let transLength = 0;\r\n if (lineLength < 100) {\r\n transLength = -lineLength + (snapLineThickness + width) / 2;\r\n }\r\n if (lineLength > oLength - 100) {\r\n transLength =\r\n -lineLength - (snapLineThickness + width) / 2 + oLength;\r\n }\r\n let directPoint = new Three.Vector2(\r\n lineVec.x * lineLength + vertices[0].x,\r\n lineVec.y * lineLength + vertices[0].y\r\n );\r\n let directLine = new Three.Vector2(\r\n directPoint.x - iX,\r\n directPoint.y - iY\r\n );\r\n let dLength = Math.sqrt(\r\n (iX - directPoint.x) * (iX - directPoint.x) +\r\n (iY - directPoint.y) * (iY - directPoint.y)\r\n );\r\n let reduceLen = (snapLineThickness + depth) / 2;\r\n let scale = (dLength - reduceLen) / dLength;\r\n let tPos = new Three.Vector2(\r\n iX + (directPoint.x - iX) * scale + lineVec.x * transLength,\r\n iY + (directPoint.y - iY) * scale + lineVec.y * transLength\r\n );\r\n let realAngle = directLine.angle() - Math.PI / 2;\r\n let tRot = (realAngle * 180) / Math.PI;\r\n let sPos = new Three.Vector2(iX, iY);\r\n let sRot = item.rotation;\r\n let tNum = 0;\r\n // //////////////////////////////////////\r\n // check part////\r\n let result = this.collisionCheck(\r\n source,\r\n tPos,\r\n tRot,\r\n target,\r\n item,\r\n this.context.catalog\r\n );\r\n // console.log('result', result);\r\n if (result == false) {\r\n removeSnapBoxObj();\r\n removeSnapBox();\r\n return;\r\n }\r\n // ////////////////\r\n if (targetObj === target && snapBox !== null) {\r\n removeSnapBoxObj();\r\n snapAnimI = 20;\r\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\r\n let sourcePos = snapBox.position.clone();\r\n let cx = sourcePos.x - targetPoint.x;\r\n let cz = sourcePos.z - targetPoint.z;\r\n targetUVec = new Three.Vector3(cx, 0, cz);\r\n targetRot = tRot;\r\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\r\n snapFlag = false;\r\n return;\r\n } else {\r\n removeSnapBox();\r\n }\r\n // //////////////////////////////////////\r\n snapAnimI = 0;\r\n t_i = 0;\r\n targetObj = target;\r\n targetNumber = tNum;\r\n targetRot = tRot;\r\n targetPoint = new Three.Vector3(tPos.x, 0, -tPos.y);\r\n snapBox = snapBoxObj;\r\n let sourcePos = snapBox.position.clone();\r\n let cx = sourcePos.x - targetPoint.x;\r\n let cz = sourcePos.z - targetPoint.z;\r\n targetUVec = new Three.Vector3(cx, 0, cz);\r\n targetRot = tRot;\r\n targetCRotation = (((tRot - sRot) % 360) / 180) * Math.PI;\r\n }\r\n }\r\n };\r\n\r\n /*end of snap functions*/\r\n let selectedObj = null;\r\n let firstMove = false;\r\n let prevX, prevY;\r\n\r\n let selObj = null;\r\n\r\n let createToolObject = () => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 100;\r\n canvas.height = 200;\r\n canvas.style.width = 50 + 'px';\r\n canvas.style.height = 100 + 'px';\r\n const ctx = canvas.getContext('2d');\r\n ctx.fillStyle = '#FFFFFF';\r\n ctx.strokeStyle = '#000000';\r\n ctx.beginPath();\r\n ctx.arc(50, 50, 40, 0, 4 * Math.PI);\r\n ctx.fill();\r\n ctx.stroke();\r\n let img1 = new Image();\r\n img1.crossOrigin = 'anonymous';\r\n img1.src = '/assets/img/svg/3d_item_rotation.svg';\r\n img1.onload = function () {\r\n ctx.drawImage(img1, 16, 16, 68, 68);\r\n };\r\n\r\n ctx.beginPath();\r\n ctx.arc(50, 150, 40, 0, 4 * Math.PI);\r\n ctx.fill();\r\n ctx.stroke();\r\n let img2 = new Image();\r\n img2.crossOrigin = 'anonymous';\r\n img2.src = '/assets/img/svg/3d_item_move.svg';\r\n img2.onload = function () {\r\n ctx.drawImage(img2, 16, 116, 68, 68);\r\n };\r\n\r\n return canvas;\r\n };\r\n\r\n let clockWise = true;\r\n let lastAngle = 0;\r\n\r\n let createAngleObject = rotate => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 100;\r\n canvas.height = 100;\r\n canvas.style.width = 100 + 'px';\r\n canvas.style.height = 100 + 'px';\r\n const ctx = canvas.getContext('2d');\r\n ctx.strokeStyle = '#FFFFFF';\r\n ctx.lineWidth = 10;\r\n ctx.beginPath();\r\n ctx.arc(50, 50, 45, 0, 2 * Math.PI);\r\n ctx.stroke();\r\n\r\n ctx.strokeStyle = SECONDARY_PURPLE_COLOR;\r\n ctx.lineWidth = 6;\r\n ctx.beginPath();\r\n if (lastAngle < 15 && lastAngle > -15) {\r\n if (rotate >= 0) {\r\n clockWise = false;\r\n } else {\r\n clockWise = true;\r\n }\r\n if (lastAngle === 0) {\r\n if (rotate > -180) {\r\n clockWise = true;\r\n } else {\r\n clockWise = false;\r\n }\r\n }\r\n }\r\n\r\n ctx.arc(50, 50, 45, 0, (rotate / 180.0) * Math.PI, clockWise);\r\n ctx.stroke();\r\n\r\n lastAngle = rotate;\r\n\r\n return canvas;\r\n };\r\n\r\n let toolTexture = new Three.Texture(createToolObject());\r\n toolTexture.needsUpdate = true;\r\n\r\n let toolObj = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: toolTexture, sizeAttenuation: true })\r\n );\r\n toolObj.material.transparent = true;\r\n toolObj.material.depthTest = false;\r\n toolObj.scale.set(20, 40, 20);\r\n toolObj.renderOrder = 3;\r\n toolObj.name = 'toolObj';\r\n\r\n let angleTexture = new Three.Texture(createAngleObject(0));\r\n angleTexture.needsUpdate = true;\r\n\r\n let angleObj = new Three.Sprite(\r\n new Three.SpriteMaterial({ map: angleTexture, sizeAttenuation: false })\r\n );\r\n\r\n angleObj.scale.set(0.075, 0.075, 0.075);\r\n angleObj.material.transparent = true;\r\n angleObj.material.depthTest = false;\r\n angleObj.renderOrder = 3;\r\n angleObj.name = 'angleObj';\r\n\r\n /**\r\n * Calculate plane point of mouse with `event` & `altitude`\r\n * * Calculate mouse.x & mouse.y\r\n * * Set raycaster from camera & Set raycaster direction\r\n * * Calculate Point & dispatch an action\r\n */\r\n const getPoint = (e, alti) => {\r\n mouse.x = (e.offsetX / this.width) * 2 - 1;\r\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\r\n\r\n raycaster.setFromCamera(mouse, camera);\r\n rayDirection = raycaster.ray.direction;\r\n\r\n Point = mapCursorPosition(e, alti);\r\n this.context.projectActions.updateMouseCoord(Point);\r\n };\r\n\r\n const getIntersectWallPoint = e => {\r\n mouse.x = (e.offsetX / this.width) * 2 - 1;\r\n mouse.y = (-e.offsetY / this.height) * 2 + 1;\r\n\r\n raycaster.setFromCamera(mouse, camera);\r\n rayDirection = raycaster.ray.direction;\r\n\r\n let lines = planData.sceneGraph.layers[scene.selectedLayer].lines;\r\n let keys = Object.keys(lines);\r\n let arrMesh = [];\r\n keys.forEach(key => {\r\n lines[key].children[0].children.forEach(mesh => {\r\n if (mesh.name == 'soul' && mesh.visible) arrMesh.push(mesh);\r\n });\r\n });\r\n if (arrMesh.length > 0) {\r\n const intersects = raycaster.intersectObjects(arrMesh);\r\n if (intersects.length > 0) {\r\n let intersectPt = intersects[0].point;\r\n intersectPt.applyMatrix4(gridMatrix);\r\n\r\n Point = { x: intersectPt.x, y: -intersectPt.z };\r\n this.context.projectActions.updateMouseCoord(Point);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const updateSelectedObject = () => {\r\n // update the selected object\r\n let selectedLayerId = this.props.state.scene.selectedLayer;\r\n let selItemId = this.props.state.scene\r\n .getIn(['layers', selectedLayerId, 'selected', 'items'])\r\n .toJS()[0];\r\n selectedObject = {\r\n layerID: selectedLayerId,\r\n itemID: selItemId\r\n };\r\n };\r\n\r\n this.mouseDownEvent = event => {\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n let altitude = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n altitude = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\r\n }\r\n getPoint(event, altitude);\r\n\r\n const state = this.props.state;\r\n\r\n this.lastMousePosition.x = mouse.x;\r\n this.lastMousePosition.y = mouse.y;\r\n\r\n const layer = state.scene.getIn(['layers', state.scene.selectedLayer]);\r\n const sCount =\r\n layer.selected.areas.size +\r\n layer.selected.holes.size +\r\n layer.selected.items.size +\r\n layer.selected.lines.size;\r\n\r\n if (sCount <= 0) {\r\n isSelected = false;\r\n } else if (sCount >= 0 && selectedObject && 'holeID' in selectedObject) {\r\n isSelected = true;\r\n }\r\n\r\n prevX = Point.x;\r\n prevY = Point.y;\r\n\r\n /**\r\n * 0 - rotate\r\n * 1 - move up/down\r\n * 2 - move x/y\r\n * 3 - camera rotate\r\n */\r\n let transflag = 3;\r\n raycaster.setFromCamera(mouse, camera);\r\n const meshes = [];\r\n toIntersect.forEach(object => {\r\n if (!object) return;\r\n object.traverse(o => {\r\n if (o.isMesh) meshes.push(o);\r\n });\r\n });\r\n let intersects = raycaster.intersectObjects(meshes, true);\r\n\r\n let toolIntersects = raycaster.intersectObjects([toolObj], true);\r\n\r\n // This code is excuted when click the tool object(rotation or move icon).\r\n if (toolIntersects.length > 0) {\r\n updateSelectedObject();\r\n // it determines whether mouse is over on rotation icon or move icon.\r\n let distance = Math.sqrt(\r\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\r\n Math.pow((toolIntersects[0].uv.y - 0.25) * 100, 2)\r\n );\r\n // move icon selected\r\n if (distance <= 20) {\r\n transflag = 2;\r\n } else {\r\n distance = Math.sqrt(\r\n Math.pow((toolIntersects[0].uv.x - 0.5) * 50, 2) +\r\n Math.pow((toolIntersects[0].uv.y - 0.75) * 100, 2)\r\n );\r\n // rotation icon selected\r\n if (distance <= 20) {\r\n transflag = 0;\r\n }\r\n }\r\n }\r\n\r\n if (intersects.length > 0) {\r\n let i = 0,\r\n length = intersects.length;\r\n for (i = 0; i < length; i++) {\r\n if (\r\n intersects[i].object.type !== 'BoxHelper' &&\r\n // intersects[i].object.type === OBJTYPE_MESH &&\r\n intersects[i].object.name !== 'lineText' &&\r\n intersects[i].object.name !== 'soul' &&\r\n !intersects[i].object.name.includes('WarningBox')\r\n )\r\n break;\r\n }\r\n\r\n if (intersects[i] !== undefined) {\r\n if (intersects[i].object.name.indexOf('transUp') != -1) transflag = 1;\r\n if (intersects[i].object.name.indexOf('transHole') != -1)\r\n transflag = 2;\r\n } else {\r\n console.log('intersects[i] is undefined in viewer3d/viewer3d.js');\r\n }\r\n }\r\n\r\n if (this.props.state.mode == MODE_DRAWING_ITEM_3D) return;\r\n\r\n if (isSelected) {\r\n !this.props.downloadFlag && this.props.setToolbar('');\r\n\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n let i;\r\n for (i = 0; i < intersects.length; i++) {\r\n if (\r\n intersects[i].object instanceof Three.Mesh &&\r\n intersects[i].object.name != 'TransformBox' &&\r\n intersects[i].object.type != 'Line' &&\r\n intersects[i].object.name != 'lineText' &&\r\n intersects[i].object.name != 'countertops' &&\r\n intersects[i].object.type != 'BoxHelper' &&\r\n intersects[i].object.name != 'floor' &&\r\n intersects[i].object.name != 'backFace' &&\r\n intersects[i].object.name != 'soul' &&\r\n !intersects[i].object.name.includes('backsplash') &&\r\n !intersects[i].object.name.includes('WarningBox')\r\n )\r\n break;\r\n }\r\n if (intersects[i] === undefined) {\r\n if (transflag !== 0 && transflag !== 2) {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n return;\r\n }\r\n }\r\n if (selectedObject !== undefined) {\r\n let selectedItem =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n sPoint.set(Point.x, Point.y);\r\n if (transflag == 0) {\r\n scene3D.remove(toolObj);\r\n let alti = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n alti = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n alti = convert(alti).from(unit).to(this.props.state.scene.unit);\r\n }\r\n getPoint(\r\n { offsetX: event.offsetX - 50, offsetY: event.offsetY },\r\n alti\r\n );\r\n if (isUndefined(selectedItem)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n\r\n lastAngle = 0;\r\n\r\n angleObj.position.set(\r\n planData.plan.position.x + Point.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : selItem.properties.get('altitude').get('length') +\r\n planData.plan.position.y,\r\n planData.plan.position.z - Point.y\r\n );\r\n\r\n angleTexture.image = createAngleObject(0);\r\n angleTexture.needsUpdate = true;\r\n\r\n scene3D.add(angleObj);\r\n this.setState({ angleObj: angleObj });\r\n let centerPos = Point;\r\n getPoint(event, alti);\r\n\r\n this.context.itemsActions.beginRotatingItem3D(\r\n selectedObject.layerID,\r\n selectedObject.itemID,\r\n Point.x,\r\n Point.y,\r\n centerPos.x,\r\n centerPos.y\r\n );\r\n bRotate = true;\r\n } else if (transflag == 1) {\r\n bMoveUP = true;\r\n } else if (transflag == 2) {\r\n switch (true) {\r\n case 'holeID' in selectedObject:\r\n this.context.holesActions.beginDraggingHole3D(\r\n selectedObject.layerID,\r\n selectedObject.holeID,\r\n Point.x,\r\n Point.y\r\n );\r\n break;\r\n default:\r\n this.context.itemsActions.beginDraggingItem3D(\r\n selectedObject.layerID,\r\n selectedObject.itemID,\r\n Point.x,\r\n Point.y\r\n );\r\n break;\r\n }\r\n bMove = true;\r\n scene3D.remove(toolObj);\r\n }\r\n for (i = 0; i < intersects.length; i++) {\r\n if (\r\n selectedItem != undefined &&\r\n intersects[i].object.parent &&\r\n intersects[i].object.parent.parent.userData.itemId ===\r\n selectedItem.userData.itemId\r\n )\r\n selectedFlag = true;\r\n }\r\n if (\r\n selectedFlag ||\r\n (toolIntersects.length > 0 && !isElevationView(mode))\r\n ) {\r\n cameraControls.mouseButtons.left = CameraControls.ACTION.NONE;\r\n selectedFlag = false;\r\n } else {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n }\r\n }\r\n } else {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n return;\r\n }\r\n }\r\n };\r\n\r\n this.mouseUpEvent = event => {\r\n firstMove = 0;\r\n let altitude = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n altitude = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\r\n }\r\n scene3D.remove(angleObj);\r\n scene3D.remove(toolObj);\r\n if (!this.props.downloadFlag && !this.props.state.mode.includes('ING')) {\r\n this.props.setToolbar('');\r\n }\r\n getPoint(event, altitude);\r\n if (this.props.state.mode == MODE_DRAWING_ITEM_3D) {\r\n if (Point.x > this.props.state.scene.width)\r\n Point.x = this.props.state.width;\r\n if (Point.y > this.props.state.scene.height)\r\n Point.y = this.props.state.height;\r\n if (Point.x < 0) Point.x = 0;\r\n if (Point.y < 0) Point.y = 0;\r\n if (snapBox == null) {\r\n actions.itemsActions.endDrawingItem(\r\n this.props.state.scene.selectedLayer,\r\n sPoint.x,\r\n sPoint.y\r\n );\r\n } else {\r\n actions.itemsActions.updateDraggingItemChanged(\r\n targetPoint.x,\r\n -targetPoint.z,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n this.context.itemsActions.updateRotatingItemChanged(\r\n targetRot,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n removeSnapBox();\r\n\r\n actions.itemsActions.endDrawingItem(\r\n this.props.state.scene.selectedLayer,\r\n Point.x,\r\n Point.y\r\n );\r\n }\r\n bMove = false;\r\n return;\r\n }\r\n\r\n if (this.props.state.mode == MODE_DRAGGING_ITEM_3D) {\r\n this.context.itemsActions.endDraggingItem3D();\r\n }\r\n\r\n if (this.props.state.mode == MODE_ROTATING_ITEM_3D) {\r\n this.context.itemsActions.endRotatingItem3D(sPoint.x, sPoint.y);\r\n }\r\n\r\n if (this.props.state.mode == MODE_DRAWING_HOLE_3D) {\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n camPos = camera.position;\r\n if (!getIntersectWallPoint(event)) return;\r\n actions.holesActions.endDrawingHole3D(\r\n this.props.state.scene.selectedLayer,\r\n Point.x,\r\n Point.y\r\n );\r\n bMove = false;\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n if (event.button === 0) {\r\n cameraControls.mouseButtons.left = CameraControls.ACTION.ROTATE;\r\n mouse.x = (event.offsetX / this.width) * 2 - 1;\r\n mouse.y = -(event.offsetY / this.height) * 2 + 1;\r\n\r\n raycaster.setFromCamera(mouse, camera);\r\n rayDirection = raycaster.ray.direction;\r\n rayDirection = rayDirection.normalize();\r\n\r\n const meshes = [];\r\n toIntersect.forEach(object => {\r\n if (!object) return;\r\n object.traverse(o => {\r\n if (o.isMesh) meshes.push(o);\r\n });\r\n });\r\n\r\n let intersects = raycaster.intersectObjects(meshes, true);\r\n let i;\r\n\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n for (i = 0; i < intersects.length; i++) {\r\n if (intersects[i].object.name === 'warningObj') break;\r\n }\r\n if (intersects[i] !== undefined) {\r\n let distance = Math.sqrt(\r\n Math.pow((intersects[i].uv.x - 0.5) * 50, 2) +\r\n Math.pow((intersects[i].uv.y - 0.25) * 100, 2)\r\n );\r\n if (distance <= 20) {\r\n if (!bMove && !bRotate) {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n\r\n let replaceInfo = intersects[i].object.parent.parent.userData;\r\n this.context.itemsActions.selectItem(\r\n replaceInfo.layerId,\r\n replaceInfo.itemId\r\n );\r\n !this.props.downloadFlag && this.props.replaceCabinet(true);\r\n\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n !this.props.downloadFlag && this.props.replaceCabinet(false);\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n for (i = 0; i < intersects.length; i++) {\r\n if (\r\n intersects[i].object instanceof Three.Mesh &&\r\n intersects[i].object.name != 'TransformBox' &&\r\n intersects[i].object.type != 'Line' &&\r\n intersects[i].object.name != 'lineText' &&\r\n intersects[i].object.name != 'countertops' &&\r\n intersects[i].object.type != 'BoxHelper' &&\r\n intersects[i].object.name != 'soul' &&\r\n !intersects[i].object.name.includes('backsplash') &&\r\n !intersects[i].object.name.includes('WarningBox')\r\n )\r\n break;\r\n }\r\n }\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n if (\r\n (Math.abs(mouse.x - this.lastMousePosition.x) <= 0.02 &&\r\n Math.abs(mouse.y - this.lastMousePosition.y) <= 0.02) ||\r\n bMove\r\n ) {\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n if (intersects[i] === undefined) {\r\n if (!bMove) {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n scene3D.remove(toolObj);\r\n this.context.itemsActions.removeReplacingSupport();\r\n return;\r\n }\r\n }\r\n\r\n if (!bMove) {\r\n selectedObject =\r\n intersects[i].object.interact &&\r\n intersects[i].object.interact();\r\n }\r\n\r\n if (selectedObject !== undefined && 'itemID' in selectedObject) {\r\n currentObject = intersects[i].object;\r\n for (; currentObject.parent != null; ) {\r\n if (currentObject.name == 'pivot') break;\r\n currentObject = currentObject.parent;\r\n }\r\n isSelected = true;\r\n setTimeout(() => {\r\n getDistances(layer);\r\n let selectedItem =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (isUndefined(selectedItem)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n let itemPos = selectedItem.position.clone();\r\n\r\n if (\r\n intersects[i].object.parent &&\r\n intersects[i].object.parent.parent.userData.itemId ===\r\n selectedItem.userData.itemId\r\n ) {\r\n toolObj.position.set(\r\n intersects[i].point.x,\r\n intersects[i].point.y,\r\n intersects[i].point.z\r\n );\r\n } else {\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : planData.plan.position.y +\r\n selectedItem.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n }\r\n scene3D.add(toolObj);\r\n this.setState({ toolObj: toolObj });\r\n // showItemButtons(layer.getIn(['items', selectedObject.itemID]), currentObject, event, camera, this.renderer);\r\n let pointArray = [],\r\n cnt = 0;\r\n pointArray.push([fVLine[0].userData.distance, 90]);\r\n pointArray.push([fVLine[1].userData.distance, -90]);\r\n pointArray.push([fVLine[2].userData.distance, 180]);\r\n pointArray.push([fVLine[3].userData.distance, 0]);\r\n pointArray.forEach((pointElement, index) => {\r\n if (pointElement[0] == undefined) pointArray[index][0] = 0;\r\n });\r\n pointArray.forEach(pointElement => {\r\n if (pointElement[0] == 0) cnt++;\r\n });\r\n if (cnt == 4 || cnt == 3) {\r\n pointArray[0][0] = 100;\r\n pointArray[1][0] = 100;\r\n }\r\n actions.itemsActions.storeDistArray(\r\n layer.id,\r\n selectedObject.itemID,\r\n pointArray\r\n );\r\n });\r\n } else {\r\n if (selectedObject) {\r\n switch (true) {\r\n case 'holeID' in selectedObject:\r\n if (selObj?.object?.name.includes('transHole')) {\r\n actions.holesActions.endDraggingHole3D(\r\n sPoint.x,\r\n sPoint.y\r\n );\r\n }\r\n break;\r\n case 'lineID' in selectedObject:\r\n if (selObj?.object?.name.includes('transHole')) {\r\n actions.holesActions.endDraggingHole3D(\r\n sPoint.x,\r\n sPoint.y\r\n );\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n isSelected = false;\r\n }\r\n } else {\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n switch (true) {\r\n case 'holeID' in selectedObject:\r\n actions.holesActions.endDraggingHole3D(sPoint.x, sPoint.y);\r\n break;\r\n default:\r\n this.context.itemsActions.removeReplacingSupport();\r\n break;\r\n }\r\n }\r\n bMove = false;\r\n bRotate = false;\r\n bMoveUP = false;\r\n if (isSelected) {\r\n prepareSnap(layer);\r\n selectedObj = allItemRect.cur;\r\n }\r\n } else {\r\n visibleTransformBox(false);\r\n let alti = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n alti = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n alti = convert(alti).from(unit).to(this.props.state.scene.unit);\r\n }\r\n getPoint(event, alti);\r\n if (bRotate) {\r\n let selectedItem =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (isUndefined(selectedItem)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n let itemPos = selectedItem.position.clone();\r\n\r\n if (\r\n intersects[i]?.object?.parent?.parent?.userData?.itemId ===\r\n selectedItem.userData.itemId\r\n ) {\r\n toolObj.position.set(\r\n intersects[i].point.x,\r\n intersects[i].point.y,\r\n intersects[i].point.z\r\n );\r\n } else {\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : planData.plan.position.y +\r\n selectedItem.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n }\r\n\r\n scene3D.add(toolObj);\r\n this.setState({ toolObj: toolObj });\r\n this.context.itemsActions.endRotatingItem3D(Point.x, Point.y);\r\n bRotate = false;\r\n }\r\n if (bMove) {\r\n bMove = false;\r\n let selectedItem =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (isUndefined(selectedItem)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n let itemPos = selectedItem.position.clone();\r\n if (\r\n intersects[i].object.parent.parent.userData.itemId ===\r\n selectedItem.userData.itemId\r\n ) {\r\n toolObj.position.set(\r\n intersects[i].point.x,\r\n intersects[i].point.y,\r\n intersects[i].point.z\r\n );\r\n } else {\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : planData.plan.position.y +\r\n selectedItem.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n }\r\n\r\n scene3D.add(toolObj);\r\n this.setState({ toolObj: toolObj });\r\n if (snapBox == null) {\r\n let item3D =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (!item3D) return;\r\n item3D.visible = true;\r\n let originPos = item3D.position.clone();\r\n setTimeout(() => {\r\n this.context.itemsActions.updateDraggingItemChanged(\r\n originPos.x,\r\n -originPos.z,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n }, 50);\r\n } else {\r\n this.context.itemsActions.updateDraggingItemChanged(\r\n targetPoint.x,\r\n -targetPoint.z,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n this.context.itemsActions.updateRotatingItemChanged(\r\n targetRot,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n let item3D =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n item3D.position.x = targetPoint.x;\r\n item3D.position.z = targetPoint.z;\r\n item3D.visible = true;\r\n }\r\n }\r\n if (bMoveUP) {\r\n bMoveUP = false;\r\n }\r\n }\r\n removeSnapBox();\r\n\r\n actions.sceneActions.updateMovingState(true);\r\n if (isSelected === true) {\r\n prepareSnap(layer);\r\n selectedObj = allItemRect.cur;\r\n }\r\n }\r\n };\r\n\r\n this.mouseMoveEvent = event => {\r\n event.preventDefault();\r\n backsplashVisible = false;\r\n\r\n let altitude = 0;\r\n if (\r\n allItemRect &&\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo !== undefined\r\n ) {\r\n let properties = allItemRect.cur.itemInfo.properties;\r\n altitude = properties.getIn(['altitude', '_length']);\r\n let unit = properties.getIn(['altitude', '_unit']) || 'in';\r\n altitude = convert(altitude).from(unit).to(this.props.state.scene.unit);\r\n }\r\n\r\n if (this.props.state.mode === MODE_DRAWING_HOLE_3D) {\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n camPos = camera.position;\r\n if (!getIntersectWallPoint(event)) return;\r\n\r\n let drawingSupport = this.props.state.drawingSupport;\r\n if (!drawingSupport.has('currentID')) {\r\n this.context.holesActions.updateDrawingHole3D(\r\n this.props.state.scene.selectedLayer,\r\n Point.x,\r\n Point.y\r\n );\r\n sPoint.set(Point.x, Point.y);\r\n } else {\r\n let layerID = this.props.state.scene.selectedLayer;\r\n let holeID = this.props.state.drawingSupport.get('currentID');\r\n\r\n deleteSpecifiedMeshObjects('WarningBox' + holeID);\r\n prepareSnap(layer);\r\n\r\n // let {nx, ny, rot} = GeometryUtils.calcSnap(allItemRect, allItemSnap, allLineRects, allLineSnap, allRect, Point.x, Point.y, allArea);\r\n let nx = Point.x;\r\n let ny = Point.y;\r\n actions.holesActions.updateDrawingHole3D(layerID, nx, ny);\r\n sPoint.set(nx, ny);\r\n }\r\n }\r\n\r\n if (this.props.state.mode === MODE_DRAWING_ITEM_3D) {\r\n // We need to set cam position since when MODE_DRAWING_ITEM_3D mouse down event\r\n // is not emited so cam position is not valid\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n camPos = camera.position;\r\n getPoint(event, altitude);\r\n if (\r\n Point.x > this.props.state.scene.width ||\r\n Point.x < 0 ||\r\n Point.y > this.props.state.scene.height ||\r\n Point.y < 0\r\n )\r\n return;\r\n let drawingSupport = this.props.state.drawingSupport;\r\n if (!drawingSupport.has('currentID')) {\r\n this.context.itemsActions.updateDrawingItem(\r\n this.props.state.scene.selectedLayer,\r\n Point.x,\r\n Point.y\r\n );\r\n sPoint.set(Point.x, Point.y);\r\n } else {\r\n let layerID = this.props.state.scene.selectedLayer;\r\n let itemID = this.props.state.drawingSupport.get('currentID');\r\n selectedObject = { layerID: layerID, itemID: itemID };\r\n let mX = Point.x - sPoint.x;\r\n let mY = Point.y - sPoint.y;\r\n let item3D =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n let layer = this.props.state.scene.getIn([\r\n 'layers',\r\n selectedObject.layerID\r\n ]);\r\n\r\n deleteSpecifiedMeshObjects('TransformBox');\r\n deleteSpecifiedMeshObjects('WarningBox' + itemID);\r\n prepareSnap(layer);\r\n\r\n let item = layer.items.getIn([selectedObject.itemID]);\r\n if (item.counterTop.uri == '')\r\n item.counterTop.uri = layer.counterTop.uri;\r\n let sRot = item.rotation;\r\n\r\n if (!item3D) return;\r\n\r\n let originPos = item3D.position.clone();\r\n let tPos = new Three.Vector2(mX + originPos.x, mY - originPos.z);\r\n let sBounding = item3D.children[0].userData;\r\n let swidth = sBounding.max.x - sBounding.min.x;\r\n let sdepth = sBounding.max.z - sBounding.min.z;\r\n let sVertices = this.getRectPoints(\r\n swidth,\r\n sdepth,\r\n tPos.clone(),\r\n ((sRot % 360) / 180) * Math.PI\r\n );\r\n let { nx, ny, rot } = GeometryUtils.calcSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n Point.x,\r\n Point.y,\r\n allArea\r\n );\r\n let nPos = new Three.Vector2(nx, ny);\r\n if (\r\n !this.collisionHoleCheck(\r\n item3D,\r\n nPos,\r\n item.rotation,\r\n {\r\n userData: { itemId: null }\r\n },\r\n item,\r\n this.context.catalog\r\n )\r\n ) {\r\n this.collisionSlide(\r\n item3D,\r\n originPos,\r\n layer,\r\n sVertices,\r\n tPos,\r\n item\r\n );\r\n //return;\r\n }\r\n let polygonPoint = lineRect(layer);\r\n if (polygonPoint.length > 0) {\r\n let PolygonSect = GeometryUtils.ContainsPoint(polygonPoint, nx, ny);\r\n if (!PolygonSect) {\r\n let { cx, cy, crot } = GeometryUtils.calcCreateSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n Point.x,\r\n Point.y,\r\n polygonPoint\r\n );\r\n nx = cx;\r\n ny = cy;\r\n rot = crot;\r\n }\r\n }\r\n let polygon = lineRect(layer);\r\n if (polygon.length > 0) {\r\n let Sect = GeometryUtils.ContainsPoint(polygon, nx, ny);\r\n if (!Sect) return;\r\n }\r\n actions.itemsActions.updateDraggingItemChanged(\r\n nx,\r\n ny,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n actions.itemsActions.updateRotatingItemChanged(\r\n rot,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n sPoint.set(nx, ny);\r\n getDistances(layer);\r\n let pointArray = [],\r\n cnt = 0;\r\n pointArray.push([fVLine[0].userData.distance, 90]);\r\n pointArray.push([fVLine[1].userData.distance, -90]);\r\n pointArray.push([fVLine[2].userData.distance, 180]);\r\n pointArray.push([fVLine[3].userData.distance, 0]);\r\n pointArray.forEach((pointElement, index) => {\r\n if (pointElement[0] == undefined) pointArray[index][0] = 0;\r\n });\r\n pointArray.forEach(pointElement => {\r\n if (pointElement[0] == 0) cnt++;\r\n });\r\n if (cnt == 4 || cnt == 3) {\r\n pointArray[0][0] = 100;\r\n pointArray[1][0] = 100;\r\n }\r\n actions.itemsActions.storeDistArray(layer.id, item.id, pointArray);\r\n let minDis = fVLine[0].userData.distance;\r\n let snapObj = fVLine[0];\r\n let iPos = item3D.position.clone();\r\n let snapDis = Math.sqrt(\r\n (iPos.x - targetPoint.x) * (iPos.x - targetPoint.x) +\r\n (iPos.z - targetPoint.z) * (iPos.z - targetPoint.z)\r\n );\r\n if (snapDis >= 100 && snapObj != null) {\r\n removeSnapBox();\r\n backsplashVisible = false;\r\n //console.log('1 snap no');\r\n }\r\n for (let i = 1; i < fVLine.length; i++) {\r\n if (minDis > fVLine[i].userData.distance) {\r\n minDis = fVLine[i].userData.distance;\r\n snapObj = fVLine[i];\r\n }\r\n }\r\n if (snapBox == null) {\r\n snapFlag = false;\r\n }\r\n actions.sceneActions.updateMovingState(false);\r\n if (minDis < snapDelta && !snapFlag) {\r\n this.snap(snapObj, layer);\r\n snapFlag = true;\r\n //console.log('1 snap Yes')\r\n getDistances(layer, true);\r\n let i = 0;\r\n for (i = 0; i < fVLine.length; i++) {\r\n if (fVLine[i].userData.distance < snapDelta) {\r\n break;\r\n }\r\n }\r\n if (i === fVLine.length) backsplashVisible = false;\r\n else backsplashVisible = true;\r\n }\r\n actions.itemsActions.setBacksplashVisible(\r\n selectedObject.itemID,\r\n backsplashVisible\r\n );\r\n }\r\n }\r\n\r\n if (bRotate) {\r\n getPoint(event, altitude);\r\n this.context.itemsActions.updateRotatingItem(Point.x, Point.y);\r\n\r\n let layer = this.props.state.scene.getIn([\r\n 'layers',\r\n selectedObject.layerID\r\n ]);\r\n let item = layer.items.getIn([selectedObject.itemID]);\r\n\r\n let orginRot = this.props.state.rotatingSupport.get('originRotation');\r\n\r\n angleTexture.image = createAngleObject(\r\n (orginRot < 0 ? 360 - orginRot : orginRot) - item.rotation\r\n );\r\n angleTexture.needsUpdate = true;\r\n\r\n deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);\r\n deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);\r\n\r\n actions.sceneActions.updateMovingState(false);\r\n }\r\n\r\n if (bMoveUP) {\r\n this.context.itemsActions.updateItemsAltitude(\r\n selectedObject.layerID,\r\n selectedObject.itemID,\r\n event.movementY\r\n );\r\n }\r\n\r\n if (bMove) {\r\n if ('holeID' in selectedObject) {\r\n gridPlanOrigin = gridPlane.position;\r\n gridMatrix.copy(gridPlane.matrixWorld).invert();\r\n camPos = camera.position;\r\n if (!getIntersectWallPoint(event)) return;\r\n let draggingSupport = this.props.state.draggingSupport;\r\n if (!draggingSupport.has('currentID')) {\r\n this.context.holesActions.updateDraggingHole(Point.x, Point.y);\r\n sPoint.set(Point.x, Point.y);\r\n } else {\r\n let holeID = this.props.state.draggingSupport.get('currentID');\r\n deleteSpecifiedMeshObjects('WarningBox' + holeID);\r\n let nx = Point.x;\r\n let ny = Point.y;\r\n actions.holesActions.updateDraggingHole(nx, ny);\r\n sPoint.set(nx, ny);\r\n }\r\n } else {\r\n const item3D =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n\r\n if (item3D === undefined) return;\r\n\r\n const layer = this.props.state.scene.getIn([\r\n 'layers',\r\n item3D.userData.layerId\r\n ]);\r\n\r\n const item = layer.items.getIn([selectedObject.itemID]);\r\n if (item.counterTop.uri == '')\r\n item.counterTop.uri = layer.counterTop.uri;\r\n\r\n let sRot = item.rotation;\r\n let mX = Point.x - sPoint.x;\r\n let mY = Point.y - sPoint.y;\r\n\r\n deleteSpecifiedMeshObjects('WarningBox' + selectedObject.itemID);\r\n deleteSpecifiedMeshObjects('backsplash' + selectedObject.itemID);\r\n prepareSnap(layer);\r\n\r\n getPoint(event, altitude);\r\n\r\n let originPos = item3D.position.clone();\r\n let tPos = new Three.Vector2(mX + originPos.x, mY - originPos.z);\r\n let sBounding = item3D.children[0].userData;\r\n let swidth = sBounding.max.x - sBounding.min.x;\r\n let sdepth = sBounding.max.z - sBounding.min.z;\r\n let sVertices = this.getRectPoints(\r\n swidth,\r\n sdepth,\r\n tPos.clone(),\r\n ((sRot % 360) / 180) * Math.PI\r\n );\r\n let { nx, ny, rot } = GeometryUtils.calcSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n Point.x,\r\n Point.y,\r\n allArea\r\n );\r\n let nPos = new Three.Vector2(nx, ny);\r\n if (\r\n !this.collisionHoleCheck(\r\n item3D,\r\n nPos,\r\n item.rotation,\r\n {\r\n userData: { itemId: null }\r\n },\r\n item,\r\n this.context.catalog\r\n )\r\n ) {\r\n this.collisionSlide(\r\n item3D,\r\n originPos,\r\n layer,\r\n sVertices,\r\n tPos,\r\n item\r\n );\r\n //return;\r\n }\r\n let polygonPoint = lineRect(layer);\r\n if (polygonPoint.length > 0) {\r\n let PolygonSect = GeometryUtils.ContainsPoint(polygonPoint, nx, ny);\r\n if (!PolygonSect) {\r\n let { cx, cy, crot } = GeometryUtils.calcCreateSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n Point.x,\r\n Point.y,\r\n polygonPoint\r\n );\r\n nx = cx;\r\n ny = cy;\r\n rot = crot;\r\n }\r\n }\r\n let polygon = lineRect(layer);\r\n if (polygon.length > 0) {\r\n let Sect = GeometryUtils.ContainsPoint(polygon, nx, ny);\r\n if (!Sect) return;\r\n }\r\n actions.itemsActions.updateDraggingItemChanged(\r\n nx,\r\n ny,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n actions.itemsActions.updateRotatingItemChanged(\r\n rot,\r\n selectedObject.layerID,\r\n selectedObject.itemID\r\n );\r\n sPoint.set(nx, ny);\r\n getDistances(layer);\r\n let pointArray = [],\r\n cnt = 0;\r\n pointArray.push([fVLine[0].userData.distance, 90]);\r\n pointArray.push([fVLine[1].userData.distance, -90]);\r\n pointArray.push([fVLine[2].userData.distance, 180]);\r\n pointArray.push([fVLine[3].userData.distance, 0]);\r\n pointArray.forEach((pointElement, index) => {\r\n if (pointElement[0] == undefined) pointArray[index][0] = 0;\r\n });\r\n pointArray.forEach(pointElement => {\r\n if (pointElement[0] == 0) cnt++;\r\n });\r\n if (cnt == 4 || cnt == 3) {\r\n pointArray[0][0] = 100;\r\n pointArray[1][0] = 100;\r\n }\r\n actions.itemsActions.storeDistArray(layer.id, item.id, pointArray);\r\n let minDis = fVLine[0].userData.distance;\r\n let snapObj = fVLine[0];\r\n let iPos = item3D.position.clone();\r\n let snapDis = Math.sqrt(\r\n (iPos.x - targetPoint.x) * (iPos.x - targetPoint.x) +\r\n (iPos.z - targetPoint.z) * (iPos.z - targetPoint.z)\r\n );\r\n if (snapDis >= 100 && snapObj != null) {\r\n removeSnapBox();\r\n backsplashVisible = false;\r\n //console.log('1 snap no');\r\n }\r\n for (let i = 1; i < fVLine.length; i++) {\r\n if (minDis > fVLine[i].userData.distance) {\r\n minDis = fVLine[i].userData.distance;\r\n snapObj = fVLine[i];\r\n }\r\n }\r\n if (snapBox == null) {\r\n snapFlag = false;\r\n }\r\n actions.sceneActions.updateMovingState(false);\r\n if (minDis < snapDelta && !snapFlag) {\r\n this.snap(snapObj, layer);\r\n snapFlag = true;\r\n //console.log('1 snap Yes')\r\n getDistances(layer, true);\r\n\r\n let i = 0;\r\n for (i = 0; i < fVLine.length; i++) {\r\n if (fVLine[i].userData.distance < snapDelta) {\r\n break;\r\n }\r\n }\r\n if (i === fVLine.length) backsplashVisible = false;\r\n else backsplashVisible = true;\r\n }\r\n actions.itemsActions.setBacksplashVisible(\r\n selectedObject.itemID,\r\n backsplashVisible\r\n );\r\n }\r\n }\r\n\r\n if (!bMove && !bRotate && !bMoveUP) {\r\n let curPos = {\r\n x: (event.offsetX / this.width) * 2 - 1,\r\n y: -(event.offsetY / this.height) * 2 + 1\r\n };\r\n\r\n raycaster.setFromCamera(curPos, camera);\r\n rayDirection = raycaster.ray.direction;\r\n rayDirection = rayDirection.normalize();\r\n\r\n const meshes = getAllMeshes(toIntersect);\r\n let intersects = raycaster.intersectObjects(meshes, true);\r\n let i;\r\n if (intersects.length > 0 && !isNaN(intersects[0].distance)) {\r\n for (i = 0; i < intersects.length; i++) {\r\n if (intersects[i].object.name === 'warningObj') break;\r\n }\r\n if (intersects[i] !== undefined) {\r\n let distance = Math.sqrt(\r\n Math.pow((intersects[i].uv.x - 0.5) * 50, 2) +\r\n Math.pow((intersects[i].uv.y - 0.75) * 100, 2)\r\n );\r\n if (distance <= 20) {\r\n let infoPos = { x: 0, y: 0 };\r\n if (event.offsetY > 150) {\r\n infoPos.y = event.offsetY - 60;\r\n } else {\r\n infoPos.y = event.offsetY + 10;\r\n }\r\n if (event.offsetX > this.width - 650) {\r\n infoPos.x = event.offsetX - 650;\r\n } else {\r\n infoPos.x = event.offsetX;\r\n }\r\n document.getElementById('warning_box_2d').style.display = 'flex';\r\n document.getElementById('warning_box_2d').style.top =\r\n `${infoPos.y}px`;\r\n document.getElementById('warning_box_2d').style.left =\r\n `${infoPos.x}px`;\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n document.getElementById('warning_box_2d').style.display = 'none';\r\n };\r\n\r\n this.onkeydown = event => {\r\n if (this.props.keyDownEnable && !isElevationView(state.mode)) {\r\n switch (event.keyCode) {\r\n case 27: // escape key\r\n isSelected = false;\r\n this.context.projectActions.unselectAll();\r\n this.context.itemsActions.removeReplacingSupport();\r\n this.context.itemsActions.setMoveStatus(false);\r\n this.context.itemsActions.setRotateStatus(false);\r\n bMoveUP = false;\r\n removeSnapBox();\r\n break;\r\n case 65: // w (move forward)\r\n pivot.rotation.y -= 0.03;\r\n break;\r\n case 68: // s (move backward)\r\n pivot.rotation.y += 0.03;\r\n break;\r\n case 83: // a (look left)\r\n pivot.rotation.x += 0.03;\r\n break;\r\n case 87: // d (look left)\r\n pivot.rotation.x -= 0.03;\r\n break;\r\n case 37: // left (move forward)\r\n planData.plan.position.x += 10;\r\n planData.grid.position.x += 10;\r\n break;\r\n case 38: // Up (move backward)\r\n planData.plan.position.y += 10;\r\n planData.grid.position.y += 10;\r\n break;\r\n case 39: // right arrow (look left)\r\n planData.plan.position.x -= 10;\r\n planData.grid.position.x -= 10;\r\n break;\r\n case 40: // down arrow (look left)\r\n planData.plan.position.y -= 10;\r\n planData.grid.position.y -= 10;\r\n break;\r\n }\r\n }\r\n };\r\n\r\n this.handleKeyDown = event => {\r\n this.onkeydown(event);\r\n };\r\n\r\n // Renderer & Event listener\r\n\r\n this.renderer.setClearColor(new Three.Color(SharedStyle.COLORS.white)); // 3D background color\r\n this.renderer.setSize(this.width, this.height);\r\n\r\n if (!this.props.downloadFlag) {\r\n this.renderer.domElement.addEventListener(\r\n 'mousedown',\r\n this.mouseDownEvent\r\n );\r\n this.renderer.domElement.addEventListener('mouseup', this.mouseUpEvent);\r\n this.renderer.domElement.addEventListener(\r\n 'mousemove',\r\n this.mouseMoveEvent\r\n );\r\n\r\n window.addEventListener('keydown', this.onkeydown);\r\n window.SPKeyDown = this.handleKeyDown;\r\n window.tDKeyDown = this.handleKeyDown;\r\n }\r\n\r\n // Add the output of the renderer to the html element\r\n const canvasWrapper = ReactDOM.findDOMNode(this.refs.canvasWrapper);\r\n canvasWrapper && canvasWrapper.appendChild(this.renderer.domElement);\r\n\r\n //\r\n\r\n if (\r\n scene.getIn(['layers', scene.selectedLayer, 'selected', 'items']).size !=\r\n 0\r\n ) {\r\n // if selected Object\r\n isSelected = true;\r\n selectedObject.layerID = scene.selectedLayer;\r\n selectedObject.itemID = scene\r\n .getIn(['layers', scene.selectedLayer, 'selected', 'items'])\r\n .toJS()[0];\r\n setTimeout(() => {\r\n try {\r\n currentObject =\r\n planData.sceneGraph.layers[selectedObject.layerID].items[\r\n selectedObject.itemID\r\n ];\r\n if (isUndefined(currentObject)) return;\r\n const selItem = this.props.state.scene.layers\r\n .get(selectedObject.layerID)\r\n .items.get(selectedObject.itemID);\r\n let itemPos = currentObject.position.clone();\r\n toolObj.position.set(\r\n planData.plan.position.x + itemPos.x,\r\n selItem.category === 'lighting'\r\n ? -planData.plan.position.y -\r\n selItem.properties.get('height').get('length')\r\n : planData.plan.position.y + currentObject.children[0].position.y,\r\n planData.plan.position.z + itemPos.z\r\n );\r\n\r\n scene3D.add(toolObj);\r\n this.setState({ toolObj: toolObj });\r\n } catch (err) {\r\n console.log(\r\n 'selectedObject : ' +\r\n JSON.stringify(selectedObject) +\r\n '\\nError: ' +\r\n err\r\n );\r\n }\r\n }, 2000);\r\n }\r\n\r\n // Scene functions\r\n\r\n function init() {\r\n clock = new Three.Clock();\r\n scene3D = new Three.Scene();\r\n if (isElevationView(state.mode))\r\n scene3D.background = new Three.Color(0xffffff);\r\n // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC\r\n else scene3D.background = new Three.Color(0xc3cadc); // change color about v1: 0x8791AB, v2: 0xC2C2C2, v3: 0xC3CADC\r\n // scene3D.fog = new Three.Fog(0xC3CADC, 2000, 3500);\r\n window.scene3D = scene3D;\r\n // Camera\r\n if (isElevationView(state.mode)) {\r\n // In elevation view, set Orthographic camera's position, angle and rotation about selected line\r\n let { layers } = scene;\r\n let selectedLayer = layers.get(scene.selectedLayer);\r\n let ceilHeight = convert(selectedLayer.ceilHeight)\r\n .from(selectedLayer.unit)\r\n .to(scene.unit);\r\n let lines = [];\r\n let selectedLine = selectedLayer.lines.get(\r\n selectedLayer.selected.lines.toJS()[0]\r\n );\r\n let vertex0 = selectedLayer.vertices.get(selectedLine.vertices.get(0));\r\n let vertex1 = selectedLayer.vertices.get(selectedLine.vertices.get(1));\r\n let { x: x1, y: y1 } = vertex0;\r\n let { x: x2, y: y2 } = vertex1;\r\n if (\r\n GeometryUtils.compareVertices(vertex0, vertex1) >= 0 &&\r\n vertex0.x !== vertex1.x\r\n ) {\r\n ({ x: x1, y: y1 } = vertex1);\r\n ({ x: x2, y: y2 } = vertex0);\r\n }\r\n selectedLayer.lines.toArray().forEach(line => {\r\n if (line.id === selectedLine) {\r\n let data = line.toJS();\r\n data = { ...data, l0: { x: x1, y: y1 }, l1: { x: x2, y: y2 } };\r\n lines.push(data);\r\n }\r\n });\r\n let lineLength = GeometryUtils.pointsDistance(x1, y1, x2, y2);\r\n self.setState({ lineLength: lineLength });\r\n let cameraRect = handleCamRect(\r\n self.width,\r\n self.height,\r\n ceilHeight,\r\n lineLength\r\n );\r\n camera = new Three.OrthographicCamera(\r\n -cameraRect.width / 2,\r\n cameraRect.width / 2,\r\n cameraRect.height / 2,\r\n -cameraRect.height / 2,\r\n 1,\r\n 1000\r\n );\r\n const angle = Math.atan((y1 - y2) / (x1 - x2));\r\n let r = 300;\r\n if (Math.abs(angle) === Math.PI / 2) {\r\n camera.position.set(\r\n (x1 + x2) / 2 - Math.sin(angle) * r,\r\n ceilHeight / 2,\r\n -((y1 + y2) / 2 - Math.cos(angle) * r)\r\n );\r\n camera.rotation.set(0, -angle, 0);\r\n } else if (vertex0.x > vertex1.x) {\r\n camera.position.set(\r\n (x1 + x2) / 2 + Math.sin(angle + Math.PI) * r,\r\n ceilHeight / 2,\r\n -((y1 + y2) / 2 - Math.cos(angle + Math.PI) * r)\r\n );\r\n camera.rotation.set(0, angle + Math.PI, 0);\r\n } else {\r\n camera.position.set(\r\n (x1 + x2) / 2 + Math.sin(angle) * r,\r\n ceilHeight / 2,\r\n -((y1 + y2) / 2 - Math.cos(angle) * r)\r\n );\r\n camera.rotation.set(0, angle, 0);\r\n }\r\n } else {\r\n const aspectRatio = self.width / self.height;\r\n camera = new Three.PerspectiveCamera(45, aspectRatio, 1, 300000);\r\n camera.position.set(0, 0, 1);\r\n }\r\n camera.layers.enable(1);\r\n\r\n function loadENV() {\r\n new RGBELoader().load(\r\n '/assets/brown_photostudio_02_1k.hdr',\r\n function (texture) {\r\n texture.mapping = Three.EquirectangularReflectionMapping;\r\n scene3D.environment = texture;\r\n texture.dispose();\r\n }\r\n );\r\n }\r\n // Camera Controls\r\n if (!isElevationView(state.mode)) {\r\n cameraControls = new CameraControls(camera, self.renderer.domElement);\r\n cameraControls.dollyToCursor = true;\r\n cameraControls.infinityDolly = true;\r\n cameraControls.minDistance = 50;\r\n cameraControls.maxDistance = Infinity;\r\n cameraControls.zoomSpeed = 1;\r\n\r\n loadENV();\r\n }\r\n\r\n scene3D.add(planData.plan);\r\n scene3D.add(planData.grid);\r\n scene3D.add(camera);\r\n if (isElevationView(state.mode)) {\r\n planData.cam.add(camera);\r\n scene3D.add(planData.cam);\r\n } else {\r\n pivot = new Three.Object3D();\r\n pivot.add(camera);\r\n scene3D.add(pivot);\r\n }\r\n\r\n // LIGHT\r\n\r\n let light = new Three.AmbientLight(0xbfbfbf, 0.9); // soft white light\r\n }\r\n\r\n function render() {\r\n const delta = clock.getDelta(); // Get time delta for smooth updates\r\n if (!isElevationView(state.mode)) cameraControls.update(delta);\r\n for (let i = 0; i < lights.length; i++) {\r\n lights[i].light.position.set(\r\n planData.plan.position.x + lights[i].x,\r\n planData.plan.position.y + lights[i].height - 10,\r\n planData.plan.position.z - lights[i].y\r\n );\r\n lights[i].target.position.set(\r\n planData.plan.position.x + lights[i].x,\r\n planData.plan.position.y,\r\n planData.plan.position.z - lights[i].y\r\n );\r\n }\r\n\r\n camera.updateMatrix();\r\n camera.updateMatrixWorld();\r\n\r\n for (let elemID in planData.sceneGraph.LODs) {\r\n planData.sceneGraph.LODs[elemID].update(camera);\r\n }\r\n if (snapBox !== null) {\r\n if (snapAnimI >= 15) {\r\n if ('x' in targetPoint)\r\n snapBox.position.set(\r\n targetPoint.x,\r\n snapBox.position.y,\r\n targetPoint.z\r\n );\r\n snapFlag = false;\r\n t_i++;\r\n } else {\r\n if (snapAnimI == 0) {\r\n targetCRotation =\r\n ((((targetRot / 180) * Math.PI - snapBox.rotation.y + Math.PI) *\r\n 180) /\r\n Math.PI) %\r\n 360;\r\n if (targetCRotation > 180) targetCRotation -= 360;\r\n if (targetCRotation < -180) targetCRotation += 360;\r\n targetCRotation = (targetCRotation / 180) * Math.PI;\r\n }\r\n if (snapAnimI < 10) {\r\n snapBox.rotateY(targetCRotation / 10);\r\n } else {\r\n snapBox.position.set(\r\n snapBox.position.clone().x - targetUVec.x / 10,\r\n snapBox.position.clone().y - targetUVec.y / 10,\r\n snapBox.position.clone().z - targetUVec.z / 10\r\n );\r\n }\r\n snapAnimI++;\r\n }\r\n }\r\n\r\n if (t_i === 20) {\r\n //stop snap after 5s\r\n removeSnapBox();\r\n }\r\n\r\n // hide hole if wall is not visible\r\n let layerID = self.props.state.scene.selectedLayer;\r\n let layer = self.props.state.scene.layers.get(layerID);\r\n layer.holes.forEach(data => {\r\n let line = planData.sceneGraph.layers[layerID].lines[data.line];\r\n let hole = planData.sceneGraph.layers[layerID].holes[data.id];\r\n\r\n if (line instanceof Three.Object3D && !line.isMesh) {\r\n line = line.children[0].children[0];\r\n // index(faces) of the line\r\n const indexAttribute = line.geometry.getIndex();\r\n const firstFaceIndices = undefined;\r\n if (indexAttribute && indexAttribute.length > 0) {\r\n firstFaceIndices = [\r\n indexAttribute.getX(0),\r\n indexAttribute.getX(1),\r\n indexAttribute.getX(2)\r\n ];\r\n }\r\n\r\n if (firstFaceIndices == undefined) return;\r\n // normal vector of the line\r\n const normalAttribute = line.geometry.attributes.normal;\r\n let normal = new Three.Vector3()\r\n .fromBufferAttribute(normalAttribute, 0)\r\n .clone();\r\n normal = normal\r\n .applyMatrix4(line.matrixWorld)\r\n .sub(new Three.Vector3(0, 0, 0).applyMatrix4(line.matrixWorld))\r\n .normalize();\r\n let vertices = layer.lines.get(data.line).vertices.toJS();\r\n let vertex1 = layer.vertices.get(vertices[0]);\r\n let vertex2 = layer.vertices.get(vertices[1]);\r\n let cX = (vertex1.x + vertex2.x) / 2;\r\n let cY = (vertex1.y + vertex2.y) / 2;\r\n let posVec = new Three.Vector3(cX, 150, -cY);\r\n posVec = posVec.add(planData.plan.position.clone());\r\n let cameraLine = camera.position.clone().sub(posVec);\r\n if (hole) {\r\n hole.traverse(child => {\r\n if (child.isMesh) {\r\n child.material.opacity = cameraLine.dot(normal) > 0 ? 1 : 0;\r\n child.material.transparent =\r\n cameraLine.dot(normal) > 0 ? false : true;\r\n child.material.needsUpdate = true;\r\n }\r\n });\r\n }\r\n }\r\n // /////////////////////////////////////\r\n });\r\n\r\n if (scene3D && camera) {\r\n if (planData.elevationGroup) {\r\n planData.elevationGroup.visible = true;\r\n self.renderer.render(scene3D, camera);\r\n\r\n self.renderer.autoClearDepth = false;\r\n planData.elevationGroup.visible = false;\r\n // console.log('---originalScene:', scene3D)\r\n self.renderer.render(scene3D, camera);\r\n self.renderer.autoClearDepth = true;\r\n } else {\r\n self.renderer.render(scene3D, camera);\r\n }\r\n }\r\n self.renderingID = requestAnimationFrame(render);\r\n\r\n if (self.props.downloadFlag) {\r\n if (self.state.waitForRender > 0) {\r\n self.state.waitForRender++;\r\n if (self.state.waitForRender > 2) {\r\n self.setState({ isLoading: false, waitForRender: 0 });\r\n if (isElevationView(self.props.state.mode)) {\r\n setTimeout(() => {\r\n self.props.setIsLoadingElevation('front', false);\r\n }, 100);\r\n }\r\n self.renderer.domElement.style.display = 'block';\r\n }\r\n }\r\n }\r\n }\r\n\r\n //\r\n\r\n window.planData = planData;\r\n this.planData = planData;\r\n this.camera = camera;\r\n this.cameraControls = cameraControls;\r\n this.scene3D = scene3D;\r\n\r\n prepareSnap(layer);\r\n }\r\n\r\n componentWillUnmount() {\r\n cancelAnimationFrame(this.renderingID);\r\n\r\n if (!isElevationView(this.props.state.mode)) {\r\n if (this.cameraControls !== undefined) this.cameraControls.dispose();\r\n }\r\n\r\n if (!this.props.downloadFlag) {\r\n this.renderer.domElement.removeEventListener(\r\n 'mousedown',\r\n this.mouseDownEvent\r\n );\r\n this.renderer.domElement.removeEventListener(\r\n 'mouseup',\r\n this.mouseUpEvent\r\n );\r\n }\r\n\r\n disposeScene(this.scene3D);\r\n this.scene3D.remove(this.planData.plan);\r\n this.scene3D.remove(this.planData.grid);\r\n\r\n this.scene3D = null;\r\n this.planData = null;\r\n this.camera = null;\r\n this.cameraControls = null;\r\n this.renderer.renderLists.dispose();\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (\r\n (this.props.downloadFlag &&\r\n diff(this.props.state, nextProps.state).toJS().length == 0) ||\r\n isEmpty(nextProps.state.scene)\r\n )\r\n return;\r\n\r\n let { width, height } = nextProps;\r\n let selectedLayer = nextProps.state.getIn([\r\n 'scene',\r\n 'layers',\r\n nextProps.state.scene.selectedLayer\r\n ]);\r\n let ceilHeight = convert(selectedLayer.ceilHeight)\r\n .from(selectedLayer.unit)\r\n .to(nextProps.state.scene.unit);\r\n let actions = {\r\n areaActions: this.context.areaActions,\r\n holesActions: this.context.holesActions,\r\n itemsActions: this.context.itemsActions,\r\n sceneActions: this.context.sceneActions,\r\n linesActions: this.context.linesActions,\r\n projectActions: this.context.projectActions,\r\n catalog: this.context.catalog\r\n };\r\n\r\n let isLoadingCabinet = nextProps.state.scene.isLoadingCabinet;\r\n if (this.state.isLoadingCabinet !== isLoadingCabinet)\r\n this.setState({ isLoadingCabinet });\r\n\r\n this.width = width;\r\n this.height = height;\r\n\r\n let allLines;\r\n let allLineRects;\r\n let allItemRect;\r\n\r\n // handle camera setting\r\n switch (this.props.state.mode) {\r\n case MODE_ELEVATION_VIEW:\r\n // when Elevation mode (camera: Orthographic)\r\n let cameraRect = handleCamRect(\r\n width,\r\n height,\r\n ceilHeight,\r\n this.state.lineLength\r\n );\r\n // camera size\r\n this.camera.left = -cameraRect.width / 2;\r\n this.camera.right = cameraRect.width / 2;\r\n this.camera.top = cameraRect.height / 2;\r\n this.camera.bottom = -cameraRect.height / 2;\r\n //camera position\r\n this.camera.position.y = ceilHeight / 2;\r\n break;\r\n case MODE_3D_VIEW:\r\n // when 3D mode (camera: Perspective)\r\n this.camera.aspect = width / height;\r\n break;\r\n }\r\n this.camera.updateProjectionMatrix();\r\n\r\n let data = nextProps.state.scene;\r\n let layer = data.getIn(['layers', data.selectedLayer]);\r\n const self = this;\r\n\r\n function implementBacksplash() {\r\n if (isElevationView(self.props.state.mode)) return; // apply backsplash when just 3D_mode, not elevation_mode\r\n let allItems = GeometryUtils.getAllItemSpecified(\r\n nextProps.state.scene,\r\n actions.catalog,\r\n BASE_CABINET_LAYOUTPOS\r\n );\r\n let i,\r\n items = [];\r\n for (i = 0; i < allItems.others.length; i++)\r\n items.push(allItems.others[i]);\r\n if (allItems.cur) items.push(allItems.cur);\r\n\r\n for (i = 0; i < items.length; i++) {\r\n let calcRect = GeometryUtils.getCalcRectFromItem3D(items[i]);\r\n let visible = GeometryUtils.isSnappedLine(calcRect, allLineRects);\r\n actions.itemsActions.setBacksplashVisible(\r\n items[i].itemInfo.id,\r\n visible\r\n );\r\n\r\n createBacksplash(\r\n items[i],\r\n nextProps.state.scene.getIn([\r\n 'layers',\r\n nextProps.state.scene.selectedLayer\r\n ]),\r\n planData,\r\n nextProps.state.scene\r\n );\r\n }\r\n }\r\n function implementWarningBox() {\r\n let holeItems = GeometryUtils.getHoleItems(layer);\r\n let i,\r\n items = [];\r\n for (i = 0; i < allItemRect.others.length; i++)\r\n items.push(allItemRect.others[i]);\r\n if (allItemRect.cur) items.push(allItemRect.cur);\r\n\r\n for (i = 0; i < items.length; i++)\r\n checkCabinetOverlap(\r\n { x: items[i].pos.x, y: items[i].pos.y },\r\n items[i],\r\n holeItems,\r\n planData\r\n );\r\n }\r\n\r\n let prepareSnapSpec = layer => {\r\n allLines = GeometryUtils.getAllLines(layer);\r\n allLineRects = GeometryUtils.buildRectFromLines(layer, allLines);\r\n allItemRect = GeometryUtils.getAllItemSpecified(\r\n this.props.state.scene,\r\n actions.catalog,\r\n [WALL_CABINET_LAYOUTPOS, TALL_CABINET_LAYOUTPOS]\r\n );\r\n };\r\n\r\n let layer1 = this.props.state.scene.getIn(['layers', data.selectedLayer]);\r\n\r\n if (this.state.showflag) {\r\n prepareSnapSpec(layer);\r\n implementBacksplash();\r\n implementWarningBox();\r\n this.setState({ showflag: false });\r\n }\r\n if (\r\n nextProps.state.scene !== this.props.state.scene ||\r\n (nextProps.state.doorStyle &&\r\n nextProps.state.doorStyle.get('name') !==\r\n this.props.state.doorStyle.get('name'))\r\n ) {\r\n let changedValues = diff(this.props.state.scene, nextProps.state.scene);\r\n prepareSnapSpec(layer);\r\n if (\r\n nextProps.state.doorStyle &&\r\n nextProps.state.doorStyle.get('name') ===\r\n this.props.state.doorStyle.get('name')\r\n ) {\r\n self.setState({ isLoading: true });\r\n\r\n if (self.props.downloadFlag) {\r\n self.setState({ waitForRender: 0 });\r\n switch (self.props.state.mode) {\r\n case MODE_ELEVATION_VIEW:\r\n self.props.setIsLoadingElevation('front', true);\r\n break;\r\n case MODE_3D_VIEW:\r\n self.props.setIsLoading3D(true);\r\n break;\r\n }\r\n }\r\n\r\n self.renderer.domElement.style.display = 'none';\r\n }\r\n if (nextProps.state.scene.showfg == true) {\r\n implementBacksplash();\r\n implementWarningBox();\r\n } else {\r\n deleteSpecifiedMeshObjects('TransformBox');\r\n }\r\n let { toolObj, angleObj } = this.state;\r\n var { promise } = updateScene(\r\n this.planData,\r\n nextProps.state.scene,\r\n this.props.state.scene,\r\n changedValues.toJS(),\r\n actions,\r\n this.context.catalog,\r\n nextProps.state.mode,\r\n toolObj,\r\n angleObj,\r\n nextProps.state.draggingSupport\r\n );\r\n self.setState();\r\n promise.then(p1Value => {\r\n self.setState({ isLoading: false });\r\n self.props.downloadFlag && self.setState({ waitForRender: 1 });\r\n self.renderer.domElement.style.display = 'block';\r\n });\r\n if (nextProps.state.getIn(['scene', 'isEndDragging'])) {\r\n nextProps.state.setIn(['scene', 'isEndDragging'], false);\r\n }\r\n }\r\n this.renderer.setSize(width, height);\r\n }\r\n\r\n render() {\r\n const { isLoading, isLoadingCabinet } = this.state;\r\n if (isLoading) {\r\n if (this.props.downloadFlag) {\r\n this.renderer.domElement.style.display = 'none';\r\n return (\r\n <div\r\n style={{\r\n alignItems: ' center',\r\n width: this.props.width,\r\n height: this.props.height,\r\n display: 'inline-flex',\r\n justifyContent: 'center'\r\n }}\r\n >\r\n <img\r\n style={{\r\n width: '70px',\r\n height: '70px',\r\n animation: 'spin 2s linear infinite'\r\n }}\r\n src={'/assets/img/loading_large.gif'}\r\n alt=\"img\"\r\n />\r\n </div>\r\n );\r\n } else {\r\n document.getElementById('front') &&\r\n (document.getElementById('front').style.display = 'none');\r\n document.getElementById('error').style.display = 'none';\r\n this.renderer.domElement.style.display = 'none';\r\n return (\r\n <div style={{ textAlign: 'center', width: '100%' }}>\r\n <img\r\n style={{ animation: 'spin 2s linear infinite', marginTop: `22%` }}\r\n src={'/assets/img/loading_large.gif'}\r\n alt=\"img\"\r\n />\r\n </div>\r\n );\r\n }\r\n } else if (isLoadingCabinet) {\r\n this.renderer.domElement.style.pointerEvents = 'none';\r\n document.getElementById('front') &&\r\n (document.getElementById('front').style.display = 'none');\r\n this.renderer.domElement.style.opacity = '0.4';\r\n return (\r\n <div style={{ textAlign: 'center', width: '100%' }}>\r\n <img\r\n style={{\r\n animation: 'spin 2s linear infinite',\r\n position: `absolute`,\r\n top: `50%`\r\n }}\r\n src={'/assets/img/loading_large.gif'}\r\n alt=\"img\"\r\n />\r\n </div>\r\n );\r\n } else {\r\n !this.props.downloadFlag &&\r\n (document.getElementById('error').style.display = 'block');\r\n this.renderer.domElement.style.pointerEvents = 'auto';\r\n this.renderer.domElement.style.opacity = '1';\r\n !this.props.downloadFlag &&\r\n document.getElementById('front') &&\r\n (document.getElementById('front').style.display = 'block');\r\n return React.createElement('div', { ref: 'canvasWrapper' });\r\n }\r\n }\r\n}\r\n\r\nScene3DViewer.propTypes = {\r\n state: PropTypes.object.isRequired,\r\n width: PropTypes.number.isRequired,\r\n height: PropTypes.number.isRequired,\r\n replaceCabinet: PropTypes.func.isRequired\r\n};\r\n\r\nScene3DViewer.contextTypes = {\r\n areaActions: PropTypes.object.isRequired,\r\n holesActions: PropTypes.object.isRequired,\r\n itemsActions: PropTypes.object.isRequired,\r\n linesActions: PropTypes.object.isRequired,\r\n sceneActions: PropTypes.object.isRequired,\r\n projectActions: PropTypes.object.isRequired,\r\n catalog: PropTypes.object\r\n};\r\n"],"mappings":"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","ignoreList":[]}
|