kitchen-simulator 5.0.0-test.2 → 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/es/index.js +2 -2
- package/es/index.js.map +1 -1
- package/package.json +8 -16
- package/src/KitchenConfigurator.jsx +1 -1
- package/src/index.js +3 -3
- 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":"geometry.js","names":["_math","require","_constants","_convertUnits","_interopRequireDefault","Three","_interopRequireWildcard","_utils","_helper","_export","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","Symbol","iterator","Array","from","isArray","_arrayLikeToArray","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","toPrimitive","String","Number","_createForOfIteratorHelper","_n","F","s","done","a","u","next","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","toString","slice","constructor","name","test","l","compareVertices","v0","v1","x","y","minVertex","maxVertex","orderVertices","vertices","sort","pointsDistance","x0","y0","x1","y1","diff_x","diff_y","Math","sqrt","verticesDistance","v2","horizontalLine","b","c","almostEqual","exports","abs","EPSILON","verticalLine","upcrossLine","downcrossLine","linePassingThroughTwoPoints","x2","y2","Error","getNormaline","lineFunction","distancePointFromLine","fAbs","closestPointFromLine","denom","twoLinesIntersection","j","k","angularCoefficientsDiff","undefined","twoLineSegmentsIntersection","p1","p2","p3","p4","x3","y3","x4","y4","numA","numB","comparator","pa","pb","line0","line1","toJS","_sort","lineA","lineB","_sort2","lineSX","lineDX","type","uA","uB","point","distancePointFromLineSegment","xp","yp","A","B","C","D","dot","len_sq","param","xx","yy","dx","dy","isPointOnLineSegment","maxDistance","closestPointFromLineSegment","m","q","mi","qi","pointPositionOnLineSegment","distance","offset","mapRange","low1","high1","low2","high2","angleBetweenTwoPointsAndOrigin","atan2","PI","angleBetweenTwoPoints","angleBetweenTwoLines","line","drawingLine","points","lv","dv","_iterator","_step","vt","includes","err","_iterator2","_step2","_iterator3","_step3","_points$slice$map","map","idx","v","Vector2","_points$slice$map2","vec1","clone","sub","normalize","vec2","floor","angle","getRelatedLines","tlines","lines","exceptLineId","seen","Set","_iterator4","_step4","vIdx","vertex","_iterator5","_step5","lineId","id","isEmpty","add","snapAngleByUnit","lineAngle","dragVertexId","tx","ty","absAngle","rest","UNIT_ANGLE","missAngle","originVerId","findIndex","vertice","ox","oy","rotatePointAroundPoint","resPoint","absAngleBetweenTwoPoints","samePoints","_ref","_ref2","sameDistances","dis1","dis2","sameMPoints","_ref3","_ref4","MEPSILON","sameMDistances","isPointInRect","rect","result","pos1","pos2","extendLine","newDistance","precision","rad","toFixedFloat","cos","sin","roundVertex","ContainsPoint","polygon","pointX","pointY","ax","lup","ay","bx","by","ii","depth","min","lx","cosWithThreshold","alpha","threshold","sinWithThreshold","midPoint","verticesMidPoint","verticesArray","res","reduce","incr","px","py","theta","thetaRad","deltaX","deltaY","itemrectInfo","rotRad","size","layoutpos","is_corner","pos","getCalcRectFromItem","item","itemInfo","w","width","h","height","mx","my","getCalcRectFromItem3D","getAllItems","scene","catalog","allLineRects","layerID","selectedLayer","layer","layers","curiteminfo","iteminfo","otherItems","selectedItem","currentItem","selected","items","getIn","catid","cat","elements","returnReplaceableDeepSearchType","val","rotation","sizeinfo","properties","widthUnit","heightUnit","depthUnit","info","convert","to","unit","doorStyle","otherItem","needSnap","calcrect","isSnappedLine","cur","others","getAllItemSpecified","_scene$layers","_scene$layers$get","_cat$obj","findCatalogElement","props","getSize","key","_props$getIn","obj","category","elementName","variants","toLowerCase","deepVariants","Boolean","allCandidates","concat","getElement","_iterator6","_step6","r2","r3","some","linerect","l2","l3","delta","isSnappedSideLine","getAllItemSnap","allItemRects","allItemSnap","index","cw","ch","ox0","oy0","ox1","oy1","ox2","oy2","ox3","oy3","nrot","snap1","snap2","snap3","snap4","leftBlindLength","rightBlindLength","vx","vy","snap6","snap7","snap5","getAllArea","allAreaLines","allLines","vertexID_to_verticesArrayIndex","verticesCount","latestVertexIndex","areas","area","pt","element","getAllLines","getAllAreaLines","thick","LINE_THICKNESS","containLine","tmp_vertices","addIdx","flag","el","tmp_el","tmp","splice","areainfo","sz","buildRectFromLines","vxys","vert","getCalcRectFromLine","getRelatedVertices","mapVertIDtoIndex","relVerts","vertID0","vertID1","pt0","pt1","relatedVertices","relPt0","relPt1","relatedVertice","toJSON","dl","rot","vN","vR","dotprod","ptC","allArea","isPointInArea","_pt0","_pt1","_ptC","rectEnd","getAllLineSnap","curItemRect","allLineSnap","validateSnaps","allSnaps","allRects","validSnaps","snap","validSnap","validateLineSnaps","rects","snaprect","every","intersectRect","rect1","rect2","ret","shrinkRect","getInterSect","containPointInRect","ni","crossprod","diff","v02x","v02y","d02","o02x","o02y","v13x","v13y","d13","o13x","o13y","shape1","shape2","count","sl1","sl2","el1","el2","getLineInterSect","s1x","s1y","e1x","e1y","s2x","s2y","e2x","e2y","cx","cy","maxX","minX","maxY","minY","len","len1","len2","sum","lineLen","v0Len","vPt","xE","yE","calcSnap","allItemRect","allRect","calcSnap2","calcCreateSnap","polygonPoint","ndist","allCurSnap","getAllCurSnap","getSnap","snapdist","inside","edist","Infinity","dist","_snap$rotRad","crot","calcSnap1","nx","ny","cursize","curitem","nearRect","minDist","clone_point","nRot","containrect","filter_func","tempSnap","intersects","BASE_CABINET_LAYOUTPOS","sku_number","startsWith","offset3inch","endsWith","t_val","isItemRectSect","validInterSect","isWallRectSect","calcSnap3","p0","v3to0","fDot","datas","data","lineRect","getAllHoleRect","isSect","holes","itemRect","holeID","hole","twidth","theight","tdepth","verticeIDs","_tail","array","vertice0","vertice1","point0","point1","rectInfo","lenN","hx","hy","tval","hole_rect","WALL_CABINET_LAYOUTPOS","getHoleItems","holeItems","altitude","curItem","othItem","blSnap","heightFromFloor","curFloor","otherFloor","long_name","isFrontWall","isBackWall","isLeftWall","isRightWall","relationshipOfTwoOverlappedLines","srcLine","destLine","INFINITY","dx1","MathUtils","dy1","a1","b1","dx2","dy2","a2","b2","OVERLAP_NONE","sk1","sk2","ek1","ek2","sk","ek","OVERLAP_SAME","OVERLAP_INCLUDED","linkedLine","OVERLAP_LINK","trimmedSegment1","trimmedSegment2","OVERLAP_SOME","trimmedSegs"],"sources":["../../src/utils/geometry.js"],"sourcesContent":["/** @description Determines the distance between two points\r\n * @param {number} x0 Vertex 0 x\r\n * @param {number} y0 Vertex 0 y\r\n * @param {number} x1 Vertex 1 x\r\n * @param {number} y1 Vertex 1 y\r\n * @return {number}\r\n */\r\nimport { toFixedFloat, fAbs } from './math.js';\r\nimport {\r\n BASE_CABINET_LAYOUTPOS,\r\n EPSILON,\r\n LINE_THICKNESS,\r\n MEPSILON,\r\n OVERLAP_INCLUDED,\r\n OVERLAP_LINK,\r\n OVERLAP_NONE,\r\n OVERLAP_SAME,\r\n OVERLAP_SOME,\r\n WALL_CABINET_LAYOUTPOS,\r\n UNIT_ANGLE,\r\n MIN_ANGLE_DISALLOW_DRAW_WALL\r\n} from '../constants';\r\nimport convert from 'convert-units';\r\nimport * as Three from 'three';\r\nimport { returnReplaceableDeepSearchType } from '../components/viewer2d/utils.js';\r\nimport { isEmpty } from './helper.js';\r\nimport { MathUtils } from './export.js';\r\n\r\nexport function compareVertices(v0, v1) {\r\n return v0.x === v1.x ? v0.y - v1.y : v0.x - v1.x;\r\n}\r\n\r\nexport function minVertex(v0, v1) {\r\n return compareVertices(v0, v1) > 0 ? v1 : v0;\r\n}\r\n\r\nexport function maxVertex(v0, v1) {\r\n return compareVertices(v0, v1) > 0 ? v0 : v1;\r\n}\r\n\r\nexport function orderVertices(vertices) {\r\n return vertices.sort(compareVertices);\r\n}\r\n\r\nexport function pointsDistance(x0, y0, x1, y1) {\r\n let diff_x = x0 - x1;\r\n let diff_y = y0 - y1;\r\n\r\n return Math.sqrt(diff_x * diff_x + diff_y * diff_y);\r\n}\r\n\r\nexport function verticesDistance(v1, v2) {\r\n let { x: x0, y: y0 } = v1;\r\n let { x: x1, y: y1 } = v2;\r\n\r\n return pointsDistance(x0, y0, x1, y1);\r\n}\r\n\r\nexport function horizontalLine(y) {\r\n return { a: 0, b: 1, c: -y };\r\n}\r\n\r\nexport const almostEqual = (x, y) => Math.abs(x - y) < EPSILON;\r\n\r\nexport function verticalLine(x) {\r\n return { a: 1, b: 0, c: -x };\r\n}\r\n\r\nexport function upcrossLine(x, y) {\r\n return { a: 1, b: 1, c: -x - y };\r\n}\r\n\r\nexport function downcrossLine(x, y) {\r\n return { a: 1, b: -1, c: -x + y };\r\n}\r\n\r\nexport function linePassingThroughTwoPoints(x1, y1, x2, y2) {\r\n if (x1 === x2 && y1 == y2) throw new Error('Geometry error');\r\n //if (x1 === x2) return verticalLine(x1);\r\n //if (y1 === y2) return horizontalLine(y1);\r\n\r\n return {\r\n a: y1 - y2,\r\n b: x2 - x1,\r\n c: y2 * x1 - x2 * y1\r\n };\r\n}\r\n\r\nexport function getNormaline(x1, y1, x2, y2) {\r\n let lineFunction = linePassingThroughTwoPoints(x1, y1, x2, y2);\r\n\r\n return {\r\n x:\r\n lineFunction.a /\r\n Math.sqrt(\r\n lineFunction.a * lineFunction.a + lineFunction.b * lineFunction.b\r\n ),\r\n y:\r\n lineFunction.b /\r\n Math.sqrt(\r\n lineFunction.a * lineFunction.a + lineFunction.b * lineFunction.b\r\n )\r\n };\r\n}\r\n\r\nexport function distancePointFromLine(a, b, c, x, y) {\r\n //https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\r\n return fAbs(a * x + b * y + c) / Math.sqrt(a * a + b * b);\r\n}\r\n\r\nexport function closestPointFromLine(a, b, c, x, y) {\r\n //https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line\r\n let denom = a * a + b * b;\r\n return {\r\n x: (b * (b * x - a * y) - a * c) / denom,\r\n y: (a * -b * x + a * y - b * c) / denom\r\n };\r\n}\r\n\r\n/** @description Get point of intersection between two lines using ax+by+c line's equation\r\n * @param {number} a x coefficent of first line\r\n * @param {number} b y coefficent of first line\r\n * @param {number} c costant of first line\r\n * @param {number} j x coefficent of second line\r\n * @param {number} k y coefficent of second line\r\n * @param {number} l costant of second line\r\n * @return {object} {x,y} point's coordinates\r\n */\r\nexport function twoLinesIntersection(a, b, c, j, k, l) {\r\n let angularCoefficientsDiff = b * j - a * k;\r\n\r\n if (angularCoefficientsDiff === 0) return undefined; //no intersection\r\n\r\n let y = (a * l - c * j) / angularCoefficientsDiff;\r\n let x = (c * k - b * l) / angularCoefficientsDiff;\r\n return { x, y };\r\n}\r\n\r\nexport function twoLineSegmentsIntersection(p1, p2, p3, p4) {\r\n //https://github.com/psalaets/line-intersect/blob/master/lib/check-intersection.js\r\n\r\n let { x: x1, y: y1 } = p1;\r\n let { x: x2, y: y2 } = p2;\r\n let { x: x3, y: y3 } = p3;\r\n let { x: x4, y: y4 } = p4;\r\n\r\n let denom = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1);\r\n let numA = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3);\r\n let numB = (x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3);\r\n\r\n if (fAbs(denom) <= EPSILON) {\r\n if (fAbs(numA) <= EPSILON && fAbs(numB) <= EPSILON) {\r\n let comparator = (pa, pb) => (pa.x === pb.x ? pa.y - pb.y : pa.x - pb.x);\r\n let line0 = [p1, p2].sort(comparator);\r\n let line1 = [p3.toJS(), p4.toJS()].sort(comparator);\r\n\r\n let [lineSX, lineDX] = [line0, line1].sort((lineA, lineB) =>\r\n comparator(lineA[0], lineB[0])\r\n );\r\n\r\n if (lineSX[1].x === lineDX[0].x) {\r\n return { type: lineDX[0].y <= lineSX[1].y ? 'colinear' : 'none' };\r\n } else {\r\n return { type: lineDX[0].x <= lineSX[1].x ? 'colinear' : 'none' };\r\n }\r\n }\r\n return { type: 'parallel' };\r\n }\r\n\r\n let uA = numA / denom;\r\n let uB = numB / denom;\r\n\r\n if (\r\n uA >= 0 - EPSILON &&\r\n uA <= 1 + EPSILON &&\r\n uB >= 0 - EPSILON &&\r\n uB <= 1 + EPSILON\r\n ) {\r\n let point = {\r\n x: x1 + uA * (x2 - x1),\r\n y: y1 + uA * (y2 - y1)\r\n };\r\n return { type: 'intersecting', point };\r\n }\r\n\r\n return { type: 'none' };\r\n}\r\n\r\nexport function distancePointFromLineSegment(v1, v2, xp, yp) {\r\n //http://stackoverflow.com/a/6853926/1398836\r\n let { x: x1, y: y1 } = v1;\r\n let { x: x2, y: y2 } = v2;\r\n\r\n let A = xp - x1;\r\n let B = yp - y1;\r\n let C = x2 - x1;\r\n let D = y2 - y1;\r\n\r\n let dot = A * C + B * D;\r\n let len_sq = C * C + D * D;\r\n let param = -1;\r\n if (len_sq != 0)\r\n //in case of 0 length line\r\n param = dot / len_sq;\r\n\r\n let xx, yy;\r\n\r\n if (param < 0) {\r\n xx = x1;\r\n yy = y1;\r\n } else if (param > 1) {\r\n xx = x2;\r\n yy = y2;\r\n } else {\r\n xx = x1 + param * C;\r\n yy = y1 + param * D;\r\n }\r\n\r\n let dx = xp - xx;\r\n let dy = yp - yy;\r\n return Math.sqrt(dx * dx + dy * dy);\r\n}\r\n\r\n/**\r\n *\r\n * @param x1 {number} x for first vertex of the segment\r\n * @param y1 {number} y for first vertex of the segment\r\n * @param x2 {number} x for second vertex of the segment\r\n * @param y2 {number} y for second vertex of the segment\r\n * @param xp {number} x for point we want to verify\r\n * @param yp {number} y for point we want to verify\r\n * @param maxDistance {number} the epsilon value used for comparisons\r\n * @returns {boolean} true if the point lies on the line segment false otherwise\r\n */\r\nexport function isPointOnLineSegment(\r\n x1,\r\n y1,\r\n x2,\r\n y2,\r\n xp,\r\n yp,\r\n maxDistance = EPSILON\r\n) {\r\n return (\r\n distancePointFromLineSegment({ x: x1, y: y1 }, { x: x2, y: y2 }, xp, yp) <=\r\n maxDistance\r\n );\r\n}\r\n\r\nexport function closestPointFromLineSegment(x1, y1, x2, y2, xp, yp) {\r\n if (x1 === x2) return { x: x1, y: yp };\r\n if (y1 === y2) return { x: xp, y: y1 };\r\n\r\n let m = (y2 - y1) / (x2 - x1);\r\n let q = y1 - m * x1;\r\n\r\n let mi = -1 / m;\r\n let qi = yp - mi * xp;\r\n\r\n let x = (qi - q) / (m - mi);\r\n let y = m * x + q;\r\n\r\n return { x, y };\r\n}\r\n\r\nexport function pointPositionOnLineSegment(x1, y1, x2, y2, xp, yp) {\r\n let length = pointsDistance(x1, y1, x2, y2);\r\n let distance = pointsDistance(x1, y1, xp, yp);\r\n\r\n let offset = distance / length;\r\n /*\r\n if (x1 > x2) offset = 1 - offset;\r\n if (y1 > y2) offset = 1 - offset;\r\n */\r\n return offset;\r\n}\r\n\r\nexport function mapRange(value, low1, high1, low2, high2) {\r\n return low2 + ((high2 - low2) * (value - low1)) / (high1 - low1);\r\n}\r\n\r\nexport function angleBetweenTwoPointsAndOrigin(x1, y1, x2, y2) {\r\n return (-Math.atan2(y1 - y2, x2 - x1) * 180) / Math.PI;\r\n}\r\n\r\nexport function angleBetweenTwoPoints(x1, y1, x2, y2) {\r\n return Math.atan2(y2 - y1, x2 - x1);\r\n}\r\n\r\nexport function angleBetweenTwoLines(line, drawingLine, vertices) {\r\n const points = [];\r\n\r\n // safety guards\r\n const lv = Array.isArray(line?.vertices) ? line.vertices : [];\r\n const dv = Array.isArray(drawingLine?.vertices) ? drawingLine.vertices : [];\r\n\r\n // 1) push common vertices (in order of line.vertices)\r\n for (const vt of lv) {\r\n if (dv.includes(vt) && !points.includes(vt)) points.push(vt);\r\n }\r\n\r\n // 2) push remaining vertices from line.vertices\r\n for (const vt of lv) {\r\n if (!points.includes(vt)) points.push(vt);\r\n }\r\n\r\n // 3) push remaining vertices from drawingLine.vertices\r\n for (const vt of dv) {\r\n if (!points.includes(vt)) points.push(vt);\r\n }\r\n\r\n // If no points at all, nothing to compute — return 0 (safe fallback)\r\n if (points.length === 0) return 0;\r\n\r\n // Ensure we have at least 3 entries (same behaviour as original)\r\n while (points.length < 3) points.push(points[points.length - 1]);\r\n\r\n const [c, p1, p2] = points.slice(0, 3).map(idx => {\r\n const v = vertices?.[idx];\r\n return v ? new Three.Vector2(v.x, v.y) : new Three.Vector2(0, 0);\r\n });\r\n\r\n const vec1 = p1.clone().sub(c).normalize();\r\n const vec2 = p2.clone().sub(c).normalize();\r\n\r\n return Math.floor(\r\n (vec1.angle() * 180) / Math.PI - (vec2.angle() * 180) / Math.PI + 0.5\r\n );\r\n}\r\n\r\nexport const getRelatedLines = (\r\n tlines,\r\n drawingLine,\r\n vertices,\r\n lines,\r\n exceptLineId = null\r\n) => {\r\n if (!drawingLine?.vertices || !Array.isArray(drawingLine.vertices)) return;\r\n\r\n const seen = new Set();\r\n\r\n for (const vIdx of drawingLine.vertices) {\r\n const vertex = vertices?.[vIdx];\r\n if (!vertex?.lines) continue;\r\n\r\n for (const lineId of vertex.lines) {\r\n if (\r\n lineId !== drawingLine.id &&\r\n lineId !== exceptLineId &&\r\n !isEmpty(lines?.[lineId]) &&\r\n !seen.has(lineId)\r\n ) {\r\n seen.add(lineId);\r\n tlines.push(lines[lineId]);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport function snapAngleByUnit(\r\n lineAngle,\r\n vertices,\r\n drawingLine,\r\n x,\r\n y,\r\n dragVertexId\r\n) {\r\n let tx, ty;\r\n let absAngle = Math.abs(lineAngle);\r\n // angle snapping as a value of UNIT_ANGLE\r\n let rest = absAngle % UNIT_ANGLE;\r\n let missAngle = UNIT_ANGLE - rest;\r\n // the origin point of rotation(snapping)\r\n let originVerId = drawingLine.vertices.findIndex(\r\n vertice => vertice !== dragVertexId\r\n );\r\n originVerId =\r\n originVerId < 0\r\n ? drawingLine.vertices[0]\r\n : drawingLine.vertices[originVerId];\r\n\r\n let ox = vertices[originVerId].x;\r\n let oy = vertices[originVerId].y;\r\n // check whether the line is snapped to before point.\r\n if (rest <= UNIT_ANGLE / 2) {\r\n // determine the direction of rotation.\r\n rest = lineAngle > 0 ? rest : -rest;\r\n // rotate the current point to last point around the first point of drawing line.\r\n tx = rotatePointAroundPoint(x, y, ox, oy, rest).x;\r\n ty = rotatePointAroundPoint(x, y, ox, oy, rest).y;\r\n }\r\n // check whether the line is snapped to next new point.\r\n else if (rest > UNIT_ANGLE / 2) {\r\n // determine the direction of rotation.\r\n missAngle = lineAngle > 0 ? -missAngle : missAngle;\r\n // rotate the current point to last point around the first point of drawing line.\r\n tx = rotatePointAroundPoint(x, y, ox, oy, missAngle).x;\r\n ty = rotatePointAroundPoint(x, y, ox, oy, missAngle).y;\r\n }\r\n let resPoint = {\r\n x: tx,\r\n y: ty\r\n };\r\n return resPoint;\r\n}\r\n\r\nexport function absAngleBetweenTwoPoints(x1, y1, x2, y2) {\r\n return Math.atan2(y2 - y1, Math.abs(x2 - x1));\r\n}\r\n\r\nexport function samePoints({ x: x1, y: y1 }, { x: x2, y: y2 }) {\r\n return fAbs(x1 - x2) <= EPSILON && fAbs(y1 - y2) <= EPSILON;\r\n}\r\n\r\nexport function sameDistances(dis1, dis2) {\r\n return fAbs(dis1 - dis2) <= EPSILON;\r\n}\r\n\r\nexport function sameMPoints({ x: x1, y: y1 }, { x: x2, y: y2 }) {\r\n return fAbs(x1 - x2) <= MEPSILON && fAbs(y1 - y2) <= MEPSILON;\r\n}\r\n\r\nexport function sameMDistances(dis1, dis2) {\r\n return fAbs(dis1 - dis2) <= MEPSILON;\r\n}\r\n\r\nexport function isPointInRect(rect, point) {\r\n let result = true;\r\n for (let i = 0; i < rect.length; i++) {\r\n let pos1 = rect[i];\r\n let pos2 = rect[(i + 1) % rect.length];\r\n\r\n if (\r\n isPointOnLineSegment(pos1.x, pos1.y, pos2.x, pos2.y, point.x, point.y)\r\n ) {\r\n result = false;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n/** @description Extend line based on coordinates and new line length\r\n * @param {number} x1 Vertex 1 x\r\n * @param {number} y1 Vertex 1 y\r\n * @param {number} x2 Vertex 2 x\r\n * @param {number} y2 Vertex 2 y\r\n * @param {number} newDistance New line length\r\n * @return {object}\r\n */\r\nexport function extendLine(x1, y1, x2, y2, newDistance, precision = 6) {\r\n let rad = angleBetweenTwoPoints(x1, y1, x2, y2);\r\n\r\n return {\r\n x: toFixedFloat(x1 + Math.cos(rad) * newDistance, precision),\r\n y: toFixedFloat(y1 + Math.sin(rad) * newDistance, precision)\r\n };\r\n}\r\n\r\nexport function roundVertex(vertex, precision = 6) {\r\n vertex.set('x', toFixedFloat(vertex.get('x'), precision));\r\n vertex.set('y', toFixedFloat(vertex.get('y'), precision));\r\n\r\n return vertex;\r\n}\r\n\r\n//https://github.com/MartyWallace/PolyK\r\nexport function ContainsPoint(polygon, pointX, pointY) {\r\n let n = polygon.length >> 1;\r\n let ax, lup;\r\n let ay = polygon[2 * n - 3] - pointY;\r\n let bx = polygon[2 * n - 2] - pointX;\r\n let by = polygon[2 * n - 1] - pointY;\r\n\r\n if (bx === 0 && by === 0) return false; // point on edge\r\n\r\n // let lup = by > ay;\r\n for (let ii = 0; ii < n; ii++) {\r\n ax = bx;\r\n ay = by;\r\n bx = polygon[2 * ii] - pointX;\r\n by = polygon[2 * ii + 1] - pointY;\r\n if (bx === 0 && by === 0) return false; // point on edge\r\n if (ay === by) continue;\r\n lup = by > ay;\r\n }\r\n\r\n let depth = 0;\r\n for (let i = 0; i < n; i++) {\r\n ax = bx;\r\n ay = by;\r\n bx = polygon[2 * i] - pointX;\r\n by = polygon[2 * i + 1] - pointY;\r\n if (ay < 0 && by < 0) continue; // both 'up' or both 'down'\r\n if (ay > 0 && by > 0) continue; // both 'up' or both 'down'\r\n if (ax < 0 && bx < 0) continue; // both points on the left\r\n\r\n if (ay === by && Math.min(ax, bx) < 0) return true;\r\n if (ay === by) continue;\r\n\r\n let lx = ax + ((bx - ax) * -ay) / (by - ay);\r\n if (lx === 0) return false; // point on edge\r\n if (lx > 0) depth++;\r\n if (ay === 0 && lup && by > ay) depth--; // hit vertex, both up\r\n if (ay === 0 && !lup && by < ay) depth--; // hit vertex, both down\r\n lup = by > ay;\r\n }\r\n return (depth & 1) === 1;\r\n}\r\n\r\nexport function cosWithThreshold(alpha, threshold) {\r\n let cos = Math.cos(alpha);\r\n return cos < threshold ? 0 : cos;\r\n}\r\n\r\nexport function sinWithThreshold(alpha, threshold) {\r\n let sin = Math.sin(alpha);\r\n return sin < threshold ? 0 : sin;\r\n}\r\n\r\nexport function midPoint(x1, y1, x2, y2) {\r\n return { x: (x1 + x2) / 2, y: (y1 + y2) / 2 };\r\n}\r\n\r\nexport function verticesMidPoint(verticesArray) {\r\n let res = verticesArray.reduce(\r\n (incr, vertex) => {\r\n return { x: incr.x + vertex.x, y: incr.y + vertex.y };\r\n },\r\n { x: 0, y: 0 }\r\n );\r\n return { x: res.x / verticesArray.length, y: res.y / verticesArray.length };\r\n}\r\n\r\nexport function rotatePointAroundPoint(px, py, ox, oy, theta) {\r\n let thetaRad = (theta * Math.PI) / 180;\r\n\r\n let cos = Math.cos(thetaRad);\r\n let sin = Math.sin(thetaRad);\r\n\r\n let deltaX = px - ox;\r\n let deltaY = py - oy;\r\n\r\n return {\r\n x: cos * deltaX - sin * deltaY + ox,\r\n y: sin * deltaX + cos * deltaY + oy\r\n };\r\n}\r\n\r\n// point: x,y\r\n// itemrectInfo: pos(x,y),rotRad,size,layoutpos,is_corner\r\n// calcRect: rect(point[4]),pos(x,y),rotRad,size,layoutpos,is_corner\r\n\r\nfunction point(x, y) {\r\n return { x, y };\r\n}\r\n\r\nfunction itemrectInfo(x, y, rotRad, size, layoutpos, is_corner) {\r\n return { pos: { x, y }, rotRad, size, layoutpos, is_corner };\r\n}\r\n\r\nexport function getCalcRectFromItem(item) {\r\n let itemInfo;\r\n if (item === undefined) itemInfo = [];\r\n else itemInfo = item.item;\r\n let x = item.pos.x;\r\n let y = item.pos.y;\r\n let rotRad = item.rotRad;\r\n let w = item.size && item.size.width / 2;\r\n let h = item.size && item.size.height / 2;\r\n let mx = x - w * Math.cos(rotRad);\r\n let my = y - w * Math.sin(rotRad);\r\n let x0 = mx + h * Math.sin(rotRad);\r\n let y0 = my - h * Math.cos(rotRad);\r\n let x3 = mx * 2 - x0;\r\n let y3 = my * 2 - y0;\r\n let x1 = x * 2 - x3;\r\n let y1 = y * 2 - y3;\r\n let x2 = x * 2 - x0;\r\n let y2 = y * 2 - y0;\r\n\r\n return {\r\n rect: [point(x0, y0), point(x1, y1), point(x2, y2), point(x3, y3)],\r\n pos: point(x, y),\r\n rotRad,\r\n size: item.size,\r\n layoutpos: item.layoutpos,\r\n is_corner: item.is_corner,\r\n itemInfo: itemInfo\r\n };\r\n}\r\n\r\nexport function getCalcRectFromItem3D(item) {\r\n let itemInfo;\r\n if (item === undefined) itemInfo = [];\r\n else itemInfo = item.item;\r\n let x = item.pos.x;\r\n let y = item.pos.y;\r\n let rotRad = item.rotRad;\r\n let w = item.size.width / 2;\r\n let h = item.size.depth / 2;\r\n let mx = x - w * Math.cos(rotRad);\r\n let my = y - w * Math.sin(rotRad);\r\n let x0 = mx + h * Math.sin(rotRad);\r\n let y0 = my - h * Math.cos(rotRad);\r\n let x3 = mx * 2 - x0;\r\n let y3 = my * 2 - y0;\r\n let x1 = x * 2 - x3;\r\n let y1 = y * 2 - y3;\r\n let x2 = x * 2 - x0;\r\n let y2 = y * 2 - y0;\r\n\r\n return {\r\n rect: [point(x0, y0), point(x1, y1), point(x2, y2), point(x3, y3)],\r\n pos: point(x, y),\r\n rotRad,\r\n size: item.size,\r\n layoutpos: item.layoutpos,\r\n is_corner: item.is_corner,\r\n itemInfo: itemInfo\r\n };\r\n}\r\n\r\nexport function getAllItems(scene, catalog, allLineRects) {\r\n let layerID = scene.selectedLayer;\r\n let layer = scene.layers.get(layerID);\r\n\r\n let curiteminfo;\r\n let iteminfo = [];\r\n let otherItems = [];\r\n\r\n let selectedItem;\r\n let currentItem;\r\n\r\n if (layer.selected.items.size > 0) {\r\n 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) cat = catalog.elements[returnReplaceableDeepSearchType(catid)];\r\n currentItem = {\r\n selectedItem,\r\n cat\r\n };\r\n }\r\n\r\n layer.items.forEach(item => {\r\n let val = {\r\n pos: { x: item.x, y: item.y },\r\n rotRad: (item.rotation / 180) * Math.PI\r\n };\r\n let catid = item.type;\r\n let cat = catalog.elements[catid];\r\n\r\n if (!cat) {\r\n cat = catalog.elements[returnReplaceableDeepSearchType(catid)];\r\n }\r\n\r\n let sizeinfo = [];\r\n let width, height, depth;\r\n\r\n sizeinfo = {\r\n width: item.properties.get('width').get('_length'),\r\n height: item.properties.get('height').get('_length'),\r\n depth: item.properties.get('depth').get('_length'),\r\n widthUnit: item.properties.get('width').get('_unit'),\r\n heightUnit: item.properties.get('height').get('_unit'),\r\n depthUnit: item.properties.get('depth').get('_unit')\r\n };\r\n sizeinfo = {\r\n ...sizeinfo,\r\n layoutpos: cat && cat.info.layoutpos,\r\n is_corner: cat && cat.info.is_corner\r\n };\r\n\r\n width = convert(sizeinfo.width).from(sizeinfo.widthUnit).to(scene.unit);\r\n height = convert(sizeinfo.depth).from(sizeinfo.depthUnit).to(scene.unit);\r\n depth = convert(sizeinfo.height).from(sizeinfo.heightUnit).to(scene.unit);\r\n\r\n val.size = { width, height, depth };\r\n val.layoutpos = sizeinfo.layoutpos;\r\n val.is_corner = sizeinfo.is_corner;\r\n val.doorStyle = item.doorStyle;\r\n val.item = item;\r\n\r\n let otherItem = {\r\n item,\r\n cat\r\n };\r\n\r\n if (!needSnap(currentItem, otherItem)) {\r\n return;\r\n }\r\n\r\n if (item.selected) {\r\n curiteminfo = getCalcRectFromItem(val);\r\n } else {\r\n let calcrect = getCalcRectFromItem(val);\r\n calcrect.isSnappedLine = isSnappedLine(calcrect, allLineRects);\r\n iteminfo.push(calcrect);\r\n otherItems.push(otherItem);\r\n }\r\n });\r\n return { cur: curiteminfo, others: iteminfo, currentItem, otherItems };\r\n}\r\n\r\nexport function getAllItemSpecified(scene, catalog, filter) {\r\n const layerID = scene?.selectedLayer;\r\n const layer = scene?.layers?.get?.(layerID);\r\n if (!layer || !layer.items) return { cur: null, others: [] };\r\n\r\n let curiteminfo;\r\n const iteminfo = [];\r\n\r\n layer.items.forEach(item => {\r\n if (!item) return;\r\n\r\n const val = {\r\n pos: { x: item.x, y: item.y },\r\n rotRad: (item.rotation / 180) * Math.PI\r\n };\r\n\r\n const cat = item.type ? findCatalogElement(catalog, item.type) : null;\r\n const info = cat?.info;\r\n\r\n const props = item.properties;\r\n const getSize = key => {\r\n const length = props?.getIn?.([key, '_length']);\r\n return length != null ? convert(length).from('in').to(scene.unit) : 0;\r\n };\r\n\r\n val.size = {\r\n width: getSize('width'),\r\n height: getSize('height'),\r\n depth: getSize('depth')\r\n };\r\n\r\n val.item = item;\r\n\r\n if (info) {\r\n val.layoutpos = info.layoutpos;\r\n val.is_corner = info.is_corner;\r\n }\r\n\r\n // Filter check\r\n if (Array.isArray(filter)) {\r\n if (info && !filter.includes(info.layoutpos)) return;\r\n } else if (\r\n info &&\r\n (info.layoutpos !== filter ||\r\n (cat?.type === 'appliance' &&\r\n ['Cook Top', 'Microwave'].includes(cat?.obj?.category)))\r\n ) {\r\n return;\r\n }\r\n\r\n // Current vs others\r\n const rect = getCalcRectFromItem3D(val);\r\n if (item.selected) {\r\n curiteminfo = rect;\r\n } else {\r\n iteminfo.push(rect);\r\n }\r\n });\r\n\r\n return { cur: curiteminfo, others: iteminfo };\r\n}\r\n\r\nexport function findCatalogElement(catalog, elementName) {\r\n if (!elementName || !catalog) return null;\r\n\r\n const variants = [elementName, elementName.toLowerCase()];\r\n const deepVariants = variants\r\n .map(v => returnReplaceableDeepSearchType(v))\r\n .filter(Boolean);\r\n\r\n const allCandidates = [...variants, ...deepVariants];\r\n\r\n const getElement = catid => {\r\n if (!catid) return null;\r\n\r\n // Immutable.js Map\r\n if (typeof catalog.getIn === 'function') {\r\n return catalog.getIn(['elements', catid]);\r\n }\r\n\r\n // Plain JS object\r\n if (catalog.elements && catalog.elements[catid]) {\r\n return catalog.elements[catid];\r\n }\r\n\r\n return null;\r\n };\r\n\r\n for (const name of allCandidates) {\r\n const cat = getElement(name);\r\n if (cat) return cat;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function isSnappedLine(calcrect, allLineRects) {\r\n if (allLineRects === undefined) return false;\r\n\r\n let r2 = calcrect.rect[2];\r\n let r3 = calcrect.rect[3];\r\n let result = allLineRects.some(linerect => {\r\n let l2 = linerect.rect[2];\r\n let l3 = linerect.rect[3];\r\n let delta =\r\n verticesDistance(l2, r3) +\r\n verticesDistance(r3, r2) +\r\n verticesDistance(r2, l3) -\r\n verticesDistance(l3, l2);\r\n if (delta < EPSILON) {\r\n return true;\r\n } else {\r\n l2 = linerect.rect[3];\r\n l3 = linerect.rect[2];\r\n delta =\r\n verticesDistance(l2, r3) +\r\n verticesDistance(r3, r2) +\r\n verticesDistance(r2, l3) -\r\n verticesDistance(l3, l2);\r\n return delta < EPSILON;\r\n }\r\n });\r\n return result;\r\n}\r\n\r\nexport function isSnappedSideLine(calcrect, allLineRects) {\r\n if (allLineRects === undefined) return 0;\r\n let r2 = calcrect.rect[1];\r\n let r3 = calcrect.rect[2];\r\n let result = allLineRects.some(linerect => {\r\n let l2 = linerect.rect[2];\r\n let l3 = linerect.rect[3];\r\n let delta =\r\n verticesDistance(l2, r3) +\r\n verticesDistance(r3, r2) +\r\n verticesDistance(r2, l3) -\r\n verticesDistance(l3, l2);\r\n return delta < EPSILON;\r\n });\r\n return result;\r\n}\r\n\r\n/** Calculate candidate positions */\r\nexport function getAllItemSnap(allItemRects) {\r\n let allItemSnap = [];\r\n\r\n let cur = allItemRects.cur;\r\n\r\n // For development\r\n let { otherItems, currentItem } = allItemRects;\r\n\r\n allItemRects.others.forEach((rect, index) => {\r\n let cw = cur && cur.size.width / 2;\r\n let ch = cur && cur.size.height / 2;\r\n let cos = Math.cos(rect.rotRad);\r\n let sin = Math.sin(rect.rotRad);\r\n let ox0 = cw * cos - ch * sin; // (cw, ch) rot\r\n let oy0 = cw * sin + ch * cos;\r\n let ox1 = -cw * cos - ch * sin; // (-cw, ch) rot\r\n let oy1 = -cw * sin + ch * cos;\r\n let ox2 = ch * sin - cw * cos;\r\n let oy2 = -ch * cos - cw * sin;\r\n let ox3 = ch * sin + cw * cos;\r\n let oy3 = -ch * cos + cw * sin;\r\n let nrot = rect.rotRad + Math.PI;\r\n if (nrot >= Math.PI) nrot -= Math.PI * 2;\r\n let snap1 = itemrectInfo(\r\n rect.rect[2].x + ox3,\r\n rect.rect[2].y + oy3,\r\n rect.rotRad,\r\n cur && cur.size,\r\n rect.layoutpos,\r\n rect.is_corner\r\n );\r\n let snap2 = itemrectInfo(\r\n rect.rect[3].x + ox2,\r\n rect.rect[3].y + oy2,\r\n rect.rotRad,\r\n cur && cur.size,\r\n rect.layoutpos,\r\n rect.is_corner\r\n );\r\n let snap3 = itemrectInfo(\r\n rect.rect[2].x + ox1,\r\n rect.rect[2].y + oy1,\r\n nrot,\r\n cur && cur.size,\r\n rect.layoutpos,\r\n rect.is_corner\r\n );\r\n let snap4 = itemrectInfo(\r\n rect.rect[3].x + ox0,\r\n rect.rect[3].y + oy0,\r\n nrot,\r\n cur && cur.size,\r\n rect.layoutpos,\r\n rect.is_corner\r\n );\r\n\r\n const sizeinfo =\r\n otherItems[index].cat && otherItems[index].cat.info.sizeinfo;\r\n if (sizeinfo) {\r\n const { leftBlindLength, rightBlindLength } = sizeinfo;\r\n\r\n if (leftBlindLength > 0) {\r\n let vx = leftBlindLength - ch;\r\n let vy = cw;\r\n let dx = vx * cos + vy * sin;\r\n let dy = vx * sin - vy * cos;\r\n let snap6 = itemrectInfo(\r\n rect.rect[0].x + dx,\r\n rect.rect[0].y + dy,\r\n rect.rotRad + Math.PI / 2,\r\n cur && cur.size,\r\n rect.layoutpos,\r\n rect.is_corner\r\n );\r\n allItemSnap.push(snap6);\r\n }\r\n if (rightBlindLength > 0) {\r\n let vx = ch - rightBlindLength;\r\n let vy = cw;\r\n let dx = vx * cos + vy * sin;\r\n let dy = vx * sin - vy * cos;\r\n let snap7 = itemrectInfo(\r\n rect.rect[1].x + dx,\r\n rect.rect[1].y + dy,\r\n rect.rotRad - Math.PI / 2,\r\n cur && cur.size,\r\n rect.layoutpos,\r\n rect.is_corner\r\n );\r\n allItemSnap.push(snap7);\r\n }\r\n }\r\n\r\n if (rect.isSnappedLine) {\r\n snap1.isSnappedLine = true;\r\n snap2.isSnappedLine = true;\r\n }\r\n\r\n if (rect.is_corner) {\r\n let nrot = rect.rotRad + (Math.PI * 3) / 2;\r\n if (nrot >= Math.PI) nrot -= Math.PI * 2;\r\n let snap5 = itemrectInfo(\r\n rect.rect[1].x - oy1,\r\n rect.rect[1].y + ox1,\r\n nrot,\r\n cur && cur.size,\r\n rect.layoutpos,\r\n rect.is_corner\r\n );\r\n allItemSnap.push(snap2);\r\n allItemSnap.push(snap5);\r\n } else {\r\n allItemSnap.push(snap1);\r\n allItemSnap.push(snap2);\r\n allItemSnap.push(snap3);\r\n allItemSnap.push(snap4);\r\n }\r\n });\r\n\r\n return allItemSnap;\r\n}\r\n\r\nexport function getAllArea(layer) {\r\n let allAreaLines = [];\r\n let allLines = [];\r\n let verticesArray = [];\r\n let vertexID_to_verticesArrayIndex = {};\r\n\r\n layer.vertices.forEach(vertex => {\r\n let verticesCount = verticesArray.push([vertex.x, vertex.y]);\r\n let latestVertexIndex = verticesCount - 1;\r\n vertexID_to_verticesArrayIndex[vertex.id] = latestVertexIndex;\r\n });\r\n\r\n layer.areas.forEach(area => {\r\n allAreaLines.push(area.vertices);\r\n });\r\n\r\n allAreaLines.forEach(area => {\r\n let pt = [];\r\n area.forEach(element => {\r\n pt.push({\r\n x: verticesArray[vertexID_to_verticesArrayIndex[element]][0],\r\n y: verticesArray[vertexID_to_verticesArrayIndex[element]][1]\r\n });\r\n });\r\n allLines.push(pt);\r\n });\r\n\r\n return allLines;\r\n}\r\n\r\n/** Get all lines of the scene */\r\nexport function getAllLines(layer) {\r\n let allAreaLines = getAllAreaLines(layer);\r\n\r\n let allLines = [];\r\n //let allNonAreaLines = [];\r\n let thick = LINE_THICKNESS / 2;\r\n layer.lines.forEach(line => {\r\n let i = containLine(allAreaLines, line);\r\n // let thick = line.properties.getIn(['thickness', 'length']);\r\n if (i < 0) {\r\n let vertices = line.vertices.toJS();\r\n let tmp_vertices = {\r\n x1: layer.vertices.get(vertices[0]).x,\r\n y1: layer.vertices.get(vertices[0]).y,\r\n x2: layer.vertices.get(vertices[1]).x,\r\n y2: layer.vertices.get(vertices[1]).y\r\n };\r\n if (\r\n tmp_vertices.x1 == tmp_vertices.x2 &&\r\n tmp_vertices.y1 == tmp_vertices.y2\r\n )\r\n return;\r\n let addIdx = allLines.length;\r\n let flag = 0;\r\n allLines.forEach((element, idx) => {\r\n if (flag == 0) {\r\n let el = element[0];\r\n let tmp_el = {\r\n x1: layer.vertices.get(el[0]).x,\r\n y1: layer.vertices.get(el[0]).y,\r\n x2: layer.vertices.get(el[1]).x,\r\n y2: layer.vertices.get(el[1]).y\r\n };\r\n if (tmp_el.x1 == tmp_vertices.x1 && tmp_el.y1 == tmp_vertices.y1) {\r\n let tmp = vertices[0];\r\n vertices[0] = vertices[1];\r\n vertices[1] = tmp;\r\n addIdx = idx == 0 ? 0 : idx - 1;\r\n flag = 1;\r\n } else if (\r\n tmp_el.x2 == tmp_vertices.x1 &&\r\n tmp_el.y2 == tmp_vertices.y1\r\n ) {\r\n addIdx = idx;\r\n flag = 1;\r\n } else if (\r\n tmp_el.x1 == tmp_vertices.x2 &&\r\n tmp_el.y1 == tmp_vertices.y2\r\n ) {\r\n addIdx = idx == 0 ? 0 : idx - 1;\r\n flag = 1;\r\n } else if (\r\n tmp_el.x2 == tmp_vertices.x2 &&\r\n tmp_el.y2 == tmp_vertices.y2\r\n ) {\r\n let tmp = vertices[0];\r\n vertices[0] = vertices[1];\r\n vertices[1] = tmp;\r\n addIdx = idx;\r\n flag = 1;\r\n }\r\n }\r\n });\r\n allLines.splice(addIdx, 0, [vertices, thick]);\r\n } else {\r\n allLines.push([allAreaLines[i], thick]);\r\n }\r\n });\r\n\r\n return allLines;\r\n}\r\n\r\n/** Get lines that wraps the area */\r\nexport function getAllAreaLines(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), area.vertices.get((i + 1) % sz)]);\r\n }\r\n });\r\n\r\n return areainfo;\r\n}\r\n\r\nexport function containLine(lines, line) {\r\n // lines: [array]\r\n let sz = lines.length;\r\n for (var i = 0; i < sz; i++) {\r\n let l = lines[i];\r\n if (\r\n (line.vertices.get(0) == l[0] && line.vertices.get(1) == l[1]) ||\r\n (line.vertices.get(1) == l[0] && line.vertices.get(0) == l[1])\r\n ) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n\r\nexport function buildRectFromLines(layer, lines) {\r\n let rect = [];\r\n\r\n lines.forEach(line => {\r\n let vxys = []; // 0: x0, 1: y0, 2: x1, 3: y1\r\n line[0].forEach(vertex => {\r\n let vert = layer.vertices.get(vertex);\r\n vxys.push(vert.x);\r\n vxys.push(vert.y);\r\n });\r\n let thick = line[1];\r\n let x0 = vxys[0];\r\n let y0 = vxys[1];\r\n let x1 = vxys[2];\r\n let y1 = vxys[3];\r\n rect.push(getCalcRectFromLine(x0, y0, x1, y1, thick, layer));\r\n });\r\n return rect;\r\n}\r\n\r\nexport function getRelatedVertices(x0, y0, x1, y1, layer) {\r\n let verticesArray = [];\r\n let mapVertIDtoIndex = {};\r\n\r\n layer.vertices.forEach(vertex => {\r\n let verticesCount = verticesArray.push([vertex.x, vertex.y]);\r\n let latestVertexIndex = verticesCount - 1;\r\n mapVertIDtoIndex[vertex.id] = latestVertexIndex;\r\n });\r\n\r\n let relVerts = [];\r\n layer.lines.some(line => {\r\n let vertID0 = line.vertices.get(0);\r\n let vertID1 = line.vertices.get(1);\r\n\r\n let pt0 = {\r\n x: verticesArray[mapVertIDtoIndex[vertID0]][0],\r\n y: verticesArray[mapVertIDtoIndex[vertID0]][1]\r\n };\r\n let pt1 = {\r\n x: verticesArray[mapVertIDtoIndex[vertID1]][0],\r\n y: verticesArray[mapVertIDtoIndex[vertID1]][1]\r\n };\r\n\r\n if (\r\n (Math.abs(pt0.x - x0) < EPSILON &&\r\n Math.abs(pt0.y - y0) < EPSILON &&\r\n Math.abs(pt1.x - x1) < EPSILON &&\r\n Math.abs(pt1.y - y1) < EPSILON) ||\r\n (Math.abs(pt0.x - x1) < EPSILON &&\r\n Math.abs(pt0.y - y1) < EPSILON &&\r\n Math.abs(pt1.x - x0) < EPSILON &&\r\n Math.abs(pt1.y - y0) < EPSILON)\r\n ) {\r\n if (line.relatedVertices.size == 2) {\r\n let relPt0 = point(x0, y0);\r\n let relPt1 = point(x1, y1);\r\n\r\n line.relatedVertices.forEach((relatedVertice, index) => {\r\n if (relatedVertice.index == undefined)\r\n relatedVertice = relatedVertice.toJSON();\r\n\r\n if (relatedVertice.index == 0)\r\n relPt0 = point(relatedVertice.point.x, relatedVertice.point.y);\r\n else relPt1 = point(relatedVertice.point.x, relatedVertice.point.y);\r\n });\r\n\r\n relVerts.push(relPt0);\r\n relVerts.push(relPt1);\r\n }\r\n return true;\r\n }\r\n });\r\n\r\n return relVerts;\r\n}\r\n\r\nexport function getCalcRectFromLine(x0, y0, x1, y1, thick, layer) {\r\n // get line from vertex coordinate\r\n let relVerts = getRelatedVertices(x0, y0, x1, y1, layer);\r\n\r\n let dx = x1 - x0;\r\n let dy = y1 - y0;\r\n let dl = Math.sqrt(dx * dx + dy * dy);\r\n let ox = (-dy / dl) * thick;\r\n let oy = (dx / dl) * thick;\r\n let rot = Math.atan2(dy, dx);\r\n if (relVerts.length == 2) {\r\n let vN = point(ox, oy);\r\n let vR = point(relVerts[0].x - x0, relVerts[0].y - y0);\r\n if (dotprod(vN, vR) < 0) {\r\n ox = -ox;\r\n oy = -oy;\r\n } else {\r\n rot += Math.PI;\r\n }\r\n } else {\r\n let pt0 = point(x0 + ox, y0 + oy);\r\n let pt1 = point(x1 + ox, y1 + oy);\r\n let ptC = point((pt0.x + pt1.x) / 2, (pt0.y + pt1.y) / 2);\r\n\r\n let allArea = getAllArea(layer);\r\n if (isPointInArea(allArea, ptC)) {\r\n // try make rect under line\r\n let _pt0 = point(x0 - ox, y0 - oy);\r\n let _pt1 = point(x1 - ox, y1 - oy);\r\n let _ptC = point((_pt0.x + _pt1.x) / 2, (_pt0.y + _pt1.y) / 2);\r\n\r\n if (!isPointInArea(allArea, _ptC)) {\r\n // only under rect is not included in area, make rect under line\r\n ox = -ox;\r\n oy = -oy;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n rectEnd: [point(x0 + ox / 2, y0 + oy / 2), point(x1 + ox / 2, y1 + oy / 2)],\r\n rect: [\r\n point(x0 + ox, y0 + oy),\r\n point(x1 + ox, y1 + oy),\r\n point(x1, y1),\r\n point(x0, y0)\r\n ],\r\n pos: point((x0 + x1 + ox) / 2, (y0 + y1 + ox) / 2),\r\n rotRad: rot,\r\n size: { width: dl, height: thick / 2 }\r\n };\r\n}\r\n\r\nexport function getAllLineSnap(allLineRects, curItemRect) {\r\n let allLineSnap = [];\r\n let cur = curItemRect;\r\n if (cur === undefined || cur === null) return;\r\n else\r\n allLineRects.forEach(rect => {\r\n let cw = cur.size.width / 2;\r\n let ch = cur.size.height / 2;\r\n let cos = Math.cos(rect.rotRad);\r\n let sin = Math.sin(rect.rotRad);\r\n let ox0 = cw * cos - ch * sin; // (cw, ch) rot\r\n let oy0 = cw * sin + ch * cos;\r\n let ox1 = -cw * cos - ch * sin; // (-cw, ch) rot\r\n let oy1 = -cw * sin + ch * cos;\r\n let nrot = rect.rotRad + Math.PI;\r\n if (nrot >= Math.PI) nrot -= Math.PI * 2;\r\n let thick = rect.size.height;\r\n\r\n let snap3 = itemInfo(\r\n rect.rect[2].x + ox1,\r\n rect.rect[2].y + oy1,\r\n nrot,\r\n cur.size\r\n );\r\n let snap4 = itemInfo(\r\n rect.rect[3].x + ox0,\r\n rect.rect[3].y + oy0,\r\n nrot,\r\n cur.size\r\n );\r\n if (!cur.is_corner) {\r\n allLineSnap.push(snap3);\r\n }\r\n allLineSnap.push(snap4);\r\n });\r\n\r\n return allLineSnap;\r\n}\r\n\r\nexport function validateSnaps(allSnaps, allRects) {\r\n let validSnaps = [];\r\n if (allSnaps !== undefined && allSnaps !== null && allSnaps.length > 0)\r\n allSnaps.forEach(snap => {\r\n if (validSnap(snap, allRects)) {\r\n validSnaps.push(snap);\r\n }\r\n });\r\n return validSnaps;\r\n}\r\n\r\nexport function validateLineSnaps(\r\n allSnaps,\r\n allItemSnap,\r\n allLineSnap,\r\n allItemRects,\r\n allLineRects,\r\n allRects\r\n) {\r\n let validSnaps = [];\r\n allSnaps.forEach(snap => {\r\n if (validSnap(snap, allRects)) {\r\n validSnaps.push(snap);\r\n } else {\r\n allItemSnap.forEach(snap => {\r\n validSnaps.push(snap);\r\n });\r\n allLineSnap.forEach(snap => {\r\n validSnaps.push(snap);\r\n });\r\n }\r\n });\r\n return validSnaps;\r\n}\r\n\r\nexport function validSnap(snap, rects) {\r\n let snaprect = getCalcRectFromItem(snap);\r\n return rects.every(rect => {\r\n return !intersectRect(rect.rect, snaprect.rect);\r\n });\r\n}\r\n\r\nexport function itemInfo(x, y, rotRad, size) {\r\n return { pos: { x, y }, rotRad, size };\r\n}\r\n\r\nexport function intersectRect(rect1, rect2) {\r\n let ret = false;\r\n rect1 = shrinkRect(rect1);\r\n rect2 = shrinkRect(rect2);\r\n\r\n ret = ret || getInterSect(rect1, rect2);\r\n\r\n ret =\r\n ret ||\r\n rect1.some(pt => {\r\n return containPointInRect(pt, rect2);\r\n });\r\n ret =\r\n ret ||\r\n rect2.some(pt => {\r\n return containPointInRect(pt, rect1);\r\n });\r\n return ret;\r\n}\r\n\r\nexport function containPointInRect(point, rect) {\r\n // true: contain, false: not contain\r\n for (let i = 0; i < rect.length; i++) {\r\n let ni = (i + 1) % rect.length;\r\n if (crossprod(diff(point, rect[i]), diff(rect[i], rect[ni])) < 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nexport function diff(v0, v1) {\r\n return { x: v0.x - v1.x, y: v0.y - v1.y };\r\n}\r\n\r\nexport function crossprod(v0, v1) {\r\n return v0.x * v1.y - v0.y * v1.x;\r\n}\r\n\r\nexport function shrinkRect(rect) {\r\n let v02x = rect[2].x - rect[0].x;\r\n let v02y = rect[2].y - rect[0].y;\r\n let d02 = Math.sqrt(v02x * v02x + v02y * v02y);\r\n let o02x = (v02x / d02) * 0.1;\r\n let o02y = (v02y / d02) * 0.1;\r\n\r\n let v13x = rect[3].x - rect[1].x;\r\n let v13y = rect[3].y - rect[1].y;\r\n let d13 = Math.sqrt(v02x * v02x + v02y * v02y);\r\n let o13x = (v13x / d13) * 0.1;\r\n let o13y = (v13y / d13) * 0.1;\r\n\r\n return [\r\n point(rect[0].x + o02x, rect[0].y + o02y),\r\n point(rect[1].x + o13x, rect[1].y + o13y),\r\n point(rect[2].x - o02x, rect[2].y - o02y),\r\n point(rect[3].x - o13x, rect[3].y - o13y)\r\n ];\r\n}\r\n\r\nexport function getInterSect(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; i++) {\r\n let sl1 = { x: shape1[i].x, y: shape1[i].y };\r\n let sl2 = {\r\n x: shape1[(i + 1) % shape1.length].x,\r\n y: shape1[(i + 1) % shape1.length].y\r\n };\r\n for (let j = 0; j < shape2.length; j++) {\r\n let el1 = { x: shape2[j].x, y: shape2[j].y };\r\n let el2 = {\r\n x: shape2[(j + 1) % shape2.length].x,\r\n y: shape2[(j + 1) % shape2.length].y\r\n };\r\n let flag = 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\nexport function getLineInterSect(s1x, s1y, e1x, e1y, s2x, s2y, e2x, e2y) {\r\n let ax = s1x;\r\n let ay = s1y;\r\n let bx = e1x - s1x;\r\n let by = e1y - s1y;\r\n let cx = s2x;\r\n let cy = s2y;\r\n let dx = e2x - s2x;\r\n let dy = e2y - s2y;\r\n\r\n if (Math.abs(bx * dy - by * dx) < 0.00000001) {\r\n if (Math.abs((cx - ax) * by - (cy - ay) * bx) < 0.00000001) {\r\n let maxX = ax;\r\n let minX = ax;\r\n let maxY = ay;\r\n let minY = ay;\r\n if (maxX < e1x) maxX = e1x;\r\n if (maxX < cx) maxX = cx;\r\n if (maxX < e2x) maxX = e2x;\r\n if (minX > e1x) minX = e1x;\r\n if (minX > cx) minX = cx;\r\n if (minX > e2x) minX = e2x;\r\n if (maxY < e1y) maxY = e1y;\r\n if (maxY < cy) maxY = cy;\r\n if (maxY < e2y) maxY = e2y;\r\n if (minY > e1y) minY = e1y;\r\n if (minY > cy) minY = cy;\r\n if (minY > e2y) minX = e2y;\r\n let len = Math.sqrt(\r\n (maxX - minX) * (maxX - minX) + (maxY - minY) * (maxY - minY)\r\n );\r\n let len1 = Math.sqrt(bx * bx + by * by);\r\n let len2 = Math.sqrt(dx * dx + dy * dy);\r\n if (len < len1 + len2) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n let t = (dx * (ay - cy) + dy * (cx - ax)) / (bx * dy - by * dx);\r\n let u = (bx * (cy - ay) + by * (ax - cx)) / (dx * by - dy * bx);\r\n let ret = u < 1 && u > 0 && t > 0 && t < 1;\r\n return ret;\r\n }\r\n}\r\n\r\nexport function isPointInArea(allArea, pt) {\r\n let x = pt.x;\r\n let y = pt.y;\r\n\r\n let result = false;\r\n result = allArea.some(area => {\r\n let sum = 0,\r\n alpha = 0;\r\n for (let i = 0; i < area.length; i++) {\r\n let x0 = area[i].x;\r\n let y0 = area[i].y;\r\n let x1 = area[(i + 1) % area.length].x;\r\n let y1 = area[(i + 1) % area.length].y;\r\n\r\n let v0 = { x: x0 - x, y: y0 - y };\r\n let v1 = { x: x1 - x, y: y1 - y };\r\n\r\n if (Math.abs(v0.x) < EPSILON && Math.abs(v0.y) < EPSILON)\r\n // check if pt is area point\r\n return true;\r\n\r\n // check if pt is in area line\r\n let lineLen = Math.sqrt((x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0));\r\n let v0Len = Math.sqrt(v0.x * v0.x + v0.y * v0.y);\r\n let vPt = { x: -v0.x / v0Len, y: -v0.y / v0Len };\r\n let xE = x0 + vPt.x * lineLen;\r\n let yE = y0 + vPt.y * lineLen;\r\n\r\n if (\r\n v0Len <= lineLen &&\r\n Math.abs(xE - x1) < EPSILON &&\r\n Math.abs(yE - y1) < EPSILON\r\n )\r\n return true;\r\n\r\n alpha = Math.atan2(v0.x * v1.y - v1.x * v0.y, v0.x * v1.x + v0.y * v1.y);\r\n sum += alpha;\r\n }\r\n\r\n if (Math.abs(Math.abs(sum) - Math.PI * 2) < EPSILON) return true;\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport function calcSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n x,\r\n y,\r\n allAreaLines\r\n) {\r\n return calcSnap2(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n x,\r\n y,\r\n allAreaLines\r\n );\r\n}\r\n\r\nexport function calcCreateSnap(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n x,\r\n y,\r\n polygonPoint\r\n) {\r\n // Validate required input and guard against missing `.cur`\r\n if (!allItemRect || !allItemRect.cur) return;\r\n\r\n const cur = allItemRect.cur; // safe alias\r\n let cx = x;\r\n let cy = y;\r\n let ndist = 5000;\r\n let rotRad = cur.rotRad;\r\n\r\n // Get candidate snaps and validate them as before\r\n let allCurSnap = getAllCurSnap(allLineRects, x, y, cur);\r\n allCurSnap = validateLineSnaps(\r\n allCurSnap,\r\n allItemSnap,\r\n allLineSnap,\r\n allItemRect,\r\n allLineRects,\r\n allRect\r\n );\r\n\r\n let getSnap = false;\r\n const snapdist = [];\r\n\r\n // Build distances for snaps that lie inside polygonPoint (if any)\r\n if (Array.isArray(allCurSnap)) {\r\n allCurSnap.forEach(snap => {\r\n if (!snap || !snap.pos) return;\r\n const inside = ContainsPoint(polygonPoint, snap.pos.x, snap.pos.y);\r\n if (inside) {\r\n const dx = snap.pos.x - x;\r\n const dy = snap.pos.y - y;\r\n snapdist.push(dx * dx + dy * dy);\r\n }\r\n });\r\n }\r\n\r\n // Find minimum distance (Infinity if none)\r\n const edist = snapdist.length ? Math.min(...snapdist) : Infinity;\r\n\r\n // Choose the snap with distance === edist\r\n if (Array.isArray(allCurSnap)) {\r\n allCurSnap.forEach(snap => {\r\n if (!snap || !snap.pos) return;\r\n const dx = snap.pos.x - x;\r\n const dy = snap.pos.y - y;\r\n const dist = dx * dx + dy * dy;\r\n if (dist === edist) {\r\n ndist = dist;\r\n cx = snap.pos.x;\r\n cy = snap.pos.y;\r\n rotRad = snap.rotRad ?? rotRad; // nullish coalescing\r\n getSnap = true;\r\n }\r\n });\r\n }\r\n\r\n const crot = (rotRad / Math.PI) * 180;\r\n return { cx, cy, crot, rotRad };\r\n}\r\n\r\n////////////\r\nexport function calcSnap1(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n x,\r\n y\r\n) {\r\n let cx = allItemRect.cur.pos.x;\r\n let cy = allItemRect.cur.pos.y;\r\n let nx = x;\r\n let ny = y;\r\n let cursize = allItemRect.cur.size;\r\n let ndist = cursize.width * cursize.width + cursize.height * cursize.height;\r\n ndist = ndist / 4;\r\n let rotRad = allItemRect.cur.rotRad;\r\n\r\n let allCurSnap = getAllCurSnap(allLineRects, x, y, allItemRect.cur);\r\n allCurSnap = validateSnaps(allCurSnap, allRect);\r\n\r\n let getSnap = false;\r\n allCurSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) + (snap.pos.y - y) * (snap.pos.y - y);\r\n if (dist < ndist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n }\r\n });\r\n\r\n if (!getSnap) {\r\n allLineSnap.concat(allItemSnap).forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n if (dist < ndist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n }\r\n });\r\n }\r\n\r\n let rot = (rotRad / Math.PI) * 180;\r\n let ret = { nx, ny, rot, rotRad };\r\n return ret;\r\n}\r\n\r\n////////////\r\nexport function calcSnap2(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n x,\r\n y,\r\n allArea\r\n) {\r\n let nx = x;\r\n let ny = y;\r\n let ndist = 20;\r\n let rotRad = allItemRect.cur && allItemRect.cur.rotRad;\r\n let val = { pos: { x: x, y: y }, rotRad: rotRad };\r\n val.size = allItemRect.cur && allItemRect.cur.size;\r\n val.layoutpos = allItemRect.cur && allItemRect.cur.layoutpos;\r\n val.is_corner = allItemRect.cur && allItemRect.cur.is_corner;\r\n let curitem = getCalcRectFromItem(val);\r\n let allCurSnap = [];\r\n //if (!val.is_corner) {\r\n allCurSnap = getAllCurSnap(allLineRects, x, y, allItemRect.cur);\r\n allCurSnap = validateSnaps(allCurSnap, allRect);\r\n //}\r\n let getSnap = false;\r\n let snapdist = [];\r\n //console.log(\"allItemSnap\", allItemSnap.filter(e => e.isSnappedLine))\r\n //console.log(\"~~~~start~~~~\");\r\n allItemSnap\r\n .filter(e => e.isSnappedLine)\r\n .forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n snapdist.push(dist);\r\n //console.log(\"dist\", snap)\r\n if (isPointInArea(allArea, snap.pos) || !allArea.length)\r\n if (dist < 100) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n\r\n //console.log(\"SUCCESS!!!!\");\r\n }\r\n });\r\n //console.log(\"====end====\");\r\n if (getSnap == false) {\r\n allCurSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n snapdist.push(dist);\r\n if (isPointInArea(allArea, snap.pos) || !allArea.length)\r\n if (dist < ndist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n //console.log(\"SUCCE!!!!\");\r\n }\r\n });\r\n\r\n if (\r\n !getSnap &&\r\n allLineRects.some(others => intersectRect(others.rect, curitem.rect))\r\n ) {\r\n let edist = Math.min.apply(null, snapdist);\r\n allCurSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n if (isPointInArea(allArea, snap.pos) || !allArea.length)\r\n if (dist === edist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n }\r\n });\r\n }\r\n\r\n if (getSnap === false) {\r\n let nearRect = null;\r\n let minDist = Infinity;\r\n allLineRects.forEach(rect => {\r\n let e = rect.rectEnd[0];\r\n e = clone_point(e);\r\n e.x -= curitem.pos.x;\r\n e.y -= curitem.pos.y;\r\n let nRot = rect.rotRad + Math.PI / 2;\r\n let dist = Math.abs(e.x * Math.cos(nRot) + e.y * Math.sin(nRot));\r\n if (minDist > dist) {\r\n minDist = dist;\r\n nearRect = rect;\r\n }\r\n });\r\n\r\n let containrect = nearRect && intersectRect(nearRect.rect, curitem.rect);\r\n if (containrect) {\r\n let filter_func = snap => {\r\n let diff = Math.abs(snap.rotRad - nearRect.rotRad - Math.PI);\r\n return diff == 0 || diff == 2 * Math.PI;\r\n };\r\n let tempSnap = allLineSnap.filter(filter_func);\r\n tempSnap = tempSnap.concat(\r\n allLineSnap.filter(snap => !filter_func(snap))\r\n );\r\n tempSnap.some(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n if (isPointInArea(allArea, snap.pos) || !allArea.length)\r\n if (dist < 5000) {\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n\r\n if (\r\n allItemRect.others.some(others =>\r\n intersectRect(others.rect, curitem.rect)\r\n )\r\n ) {\r\n getSnap = false;\r\n }\r\n\r\n if (!getSnap) {\r\n let snapdist = [];\r\n allItemSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n snapdist.push(dist);\r\n if (isPointInArea(allArea, snap.pos) || !allArea.length)\r\n if (dist < ndist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n }\r\n });\r\n\r\n if (\r\n !getSnap &&\r\n allItemRect.others.some(others =>\r\n intersectRect(others.rect, curitem.rect)\r\n )\r\n ) {\r\n let edist = Math.min.apply(null, snapdist);\r\n allItemSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n if (isPointInArea(allArea, snap.pos) || !allArea.length)\r\n if (dist === edist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n }\r\n });\r\n if (allItemRect.cur.itemInfo.name.includes('Cook Top')) {\r\n let intersects = allItemRect.others.filter(others =>\r\n intersectRect(others.rect, curitem.rect)\r\n );\r\n intersects.forEach(rect => {\r\n if (isPointInArea(allArea, rect.itemInfo) || !allArea.length)\r\n if (rect.itemInfo.layoutpos.includes(BASE_CABINET_LAYOUTPOS)) {\r\n nx = rect.itemInfo.x;\r\n ny = rect.itemInfo.y;\r\n rotRad = (rect.itemInfo.rotation * Math.PI) / 180;\r\n }\r\n });\r\n }\r\n if (\r\n allItemRect.cur.itemInfo.name.includes('Hood') ||\r\n allItemRect.cur.itemInfo.name.includes('Range') ||\r\n allItemRect.cur.itemInfo.name.includes('Cook Top')\r\n ) {\r\n let intersects = allItemRect.others.filter(others =>\r\n intersectRect(others.rect, curitem.rect)\r\n );\r\n intersects.forEach(rect => {\r\n if (isPointInArea(allArea, rect.itemInfo) || !allArea.length)\r\n if (\r\n rect.itemInfo.name.includes('Hood') ||\r\n rect.itemInfo.name.includes('Range') ||\r\n rect.itemInfo.name.includes('Cook Top')\r\n ) {\r\n nx = rect.itemInfo.x;\r\n ny = rect.itemInfo.y;\r\n rotRad = (rect.itemInfo.rotation * Math.PI) / 180;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n let rot = (rotRad / Math.PI) * 180;\r\n\r\n //Check case.\r\n //If item is 'blind base cabinet', it must be pulled from other 3\".\r\n if (\r\n allItemRect.cur &&\r\n allItemRect.cur.itemInfo.sku_number.startsWith('BBC')\r\n ) {\r\n let offset3inch = convert(3).from('in').to('cm');\r\n let tx = nx,\r\n ty = ny;\r\n if (allItemRect.cur && allItemRect.cur.itemInfo.sku_number.endsWith('-L')) {\r\n if (rot == 0 || rot == -180) {\r\n tx -= offset3inch * Math.cos(rotRad);\r\n }\r\n if (rot == 90 || rot == -90) {\r\n ty -= offset3inch * Math.sin(rotRad);\r\n }\r\n }\r\n if (allItemRect.cur && allItemRect.cur.itemInfo.sku_number.endsWith('-R')) {\r\n if (rot == 0 || rot == -180) {\r\n tx += offset3inch * Math.cos(rotRad);\r\n }\r\n if (rot == 90 || rot == -90) {\r\n ty += offset3inch * Math.sin(rotRad);\r\n }\r\n }\r\n let t_val = {\r\n pos: { x: tx, y: ty },\r\n rotRad,\r\n size: allItemRect.cur.size,\r\n layoutpos: allItemRect.cur.layoutpos,\r\n is_corner: allItemRect.cur.is_corner\r\n };\r\n let isItemRectSect = validInterSect(allItemRect.others, t_val);\r\n let isWallRectSect = validInterSect(allLineRects, t_val);\r\n if (isItemRectSect && isWallRectSect) {\r\n nx = tx;\r\n ny = ty;\r\n }\r\n }\r\n\r\n return { nx, ny, rot, rotRad };\r\n}\r\n\r\n////////////\r\nexport function calcSnap3(\r\n allItemRect,\r\n allItemSnap,\r\n allLineRects,\r\n allLineSnap,\r\n allRect,\r\n x,\r\n y\r\n) {\r\n // let layer = scene.layers.get(layerID);\r\n // let cx = allItemRect.cur.pos.x;\r\n // let cy = allItemRect.cur.pos.y;\r\n let nx = x;\r\n let ny = y;\r\n let ndist = 20;\r\n let rotRad = allItemRect.cur.rotRad;\r\n let val = { pos: { x: x, y: y }, rotRad: rotRad };\r\n val.size = allItemRect.cur.size;\r\n val.layoutpos = allItemRect.cur.layoutpos;\r\n val.is_corner = allItemRect.cur.is_corner;\r\n let curitem = getCalcRectFromItem3D(val);\r\n let allCurSnap = getAllCurSnap(allLineRects, x, y, allItemRect.cur);\r\n allCurSnap = validateSnaps(allCurSnap, allRect);\r\n let getSnap = false;\r\n let snapdist = [];\r\n allCurSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) + (snap.pos.y - y) * (snap.pos.y - y);\r\n snapdist.push(dist);\r\n if (dist < ndist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n } else {\r\n var i = 0;\r\n allLineRects.forEach(others => {\r\n let containrect = intersectRect(others.rect, curitem.rect);\r\n if (containrect) {\r\n let edist = Math.min.apply(null, snapdist);\r\n allCurSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n if (dist === edist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n if (getSnap === false) {\r\n allLineRects.forEach(others => {\r\n let containrect = intersectRect(others.rect, curitem.rect);\r\n if (containrect) {\r\n allLineSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n if (dist < 5000) {\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n getSnap = true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n allItemRect.others.forEach(others => {\r\n if (\r\n !(others.layoutpos === 'base' && allItemRect.cur.layoutpos === 'wall') ||\r\n !(others.layoutpos === 'wall' && allItemRect.cur.layoutpos === 'base')\r\n ) {\r\n let containrect = intersectRect(others.rect, curitem.rect);\r\n if (containrect) {\r\n getSnap = false;\r\n }\r\n }\r\n });\r\n if (!getSnap) {\r\n let snapdist = [];\r\n allItemSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n snapdist.push(dist);\r\n if (dist < ndist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n } else {\r\n allItemRect.others.forEach(others => {\r\n if (\r\n !(\r\n others.layoutpos === 'base' &&\r\n allItemRect.cur.layoutpos === 'wall'\r\n ) ||\r\n !(\r\n others.layoutpos === 'wall' &&\r\n allItemRect.cur.layoutpos === 'base'\r\n )\r\n ) {\r\n let containrect = intersectRect(others.rect, curitem.rect);\r\n if (containrect) {\r\n let edist = Math.min.apply(null, snapdist);\r\n allItemSnap.forEach(snap => {\r\n let dist =\r\n (snap.pos.x - x) * (snap.pos.x - x) +\r\n (snap.pos.y - y) * (snap.pos.y - y);\r\n if (dist === edist) {\r\n ndist = dist;\r\n nx = snap.pos.x;\r\n ny = snap.pos.y;\r\n rotRad = snap.rotRad;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n let rot = (rotRad / Math.PI) * 180;\r\n return { nx, ny, rot, rotRad };\r\n}\r\n\r\nexport function getAllCurSnap(allLineRects, x, y, curItemRect) {\r\n if (!curItemRect) return;\r\n let allCurSnap = [];\r\n let thick = LINE_THICKNESS / 2;\r\n\r\n allLineRects.forEach(linerect => {\r\n //allLineRects:left, right, top, bottom line\r\n let p0 = clone_point(linerect.rect[2]); //point 2(x, y) inside of line\r\n let p1 = clone_point(linerect.rect[3]); //point 3(x, y) inside of line\r\n let q = point(x, y); // point of item\r\n let cos = Math.cos(linerect.rotRad);\r\n let sin = Math.sin(linerect.rotRad);\r\n p0.x -= (cos * curItemRect.size.width) / 2;\r\n p0.y -= (sin * curItemRect.size.width) / 2;\r\n p1.x += (cos * curItemRect.size.width) / 2;\r\n p1.y += (sin * curItemRect.size.width) / 2;\r\n let n = point(-sin, cos);\r\n let v3to0 = {\r\n x: linerect.rect[0].x - p1.x,\r\n y: linerect.rect[0].y - p1.y\r\n };\r\n let fDot = dotprod(n, v3to0);\r\n if (fDot > 0) {\r\n // normal vector is crossing the wall\r\n n.x = -n.x;\r\n n.y = -n.y;\r\n }\r\n let dist = dotprod(diff(p1, q), n);\r\n let h = point(q.x + dist * n.x, q.y + dist * n.y);\r\n let nrot = linerect.rotRad + Math.PI;\r\n if (nrot >= Math.PI) nrot -= Math.PI * 2;\r\n\r\n let o = itemrectInfo(\r\n h.x + n.x * (curItemRect && curItemRect.size.height / 2),\r\n h.y + n.y * (curItemRect && curItemRect.size.height / 2),\r\n nrot,\r\n curItemRect && curItemRect.size,\r\n curItemRect && curItemRect.layoutpos,\r\n curItemRect && curItemRect.is_corner\r\n );\r\n allCurSnap.push(o);\r\n\r\n nrot = nrot + Math.PI;\r\n o = itemrectInfo(\r\n h.x - n.x * (curItemRect && curItemRect.size.height / 2 + thick),\r\n h.y - n.y * (curItemRect && curItemRect.size.height / 2 + thick),\r\n nrot,\r\n curItemRect && curItemRect.size,\r\n curItemRect && curItemRect.layoutpos,\r\n curItemRect && curItemRect.is_corner\r\n );\r\n allCurSnap.push(o);\r\n });\r\n return allCurSnap;\r\n}\r\n\r\nexport function clone_point(pt) {\r\n return point(pt.x, pt.y);\r\n}\r\n\r\nexport function dotprod(v0, v1) {\r\n return v0.x * v1.x + v0.y * v1.y;\r\n}\r\n\r\n//////////\r\nexport function validInterSect(rect, val) {\r\n let curitem = getCalcRectFromItem(val);\r\n let datas = [];\r\n rect.forEach(line => {\r\n datas.push(line);\r\n });\r\n for (let i = 0; i < datas.length; i++) {\r\n let data = datas[i];\r\n let containrect = intersectRect(data.rect, curitem.rect);\r\n if (containrect) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nlet 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\nexport function getAllHoleRect(scene, val) {\r\n let layerID = scene.selectedLayer;\r\n let layer = scene.layers.get(layerID);\r\n let selectedItem = layer.getIn(['items', layer.selected.items.get(0)]);\r\n\r\n if (selectedItem !== undefined) {\r\n if (selectedItem.category != 'cabinet') {\r\n // If selected Item type is not `cabinet` then do not snap at windows\r\n return { isSect: true, snap: null };\r\n }\r\n } else {\r\n return { isSect: false, snap: null };\r\n }\r\n\r\n let holes = [];\r\n let itemRect = getCalcRectFromItem(val);\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 twidth = holes[i].properties.getIn(['width', 'length']);\r\n let theight = holes[i].properties.getIn(['thickness', 'length']) + 1;\r\n let tdepth = holes[i].properties.getIn(['altitude', 'length']);\r\n //let trot = holes[i].rotation;\r\n let verticeIDs = scene.getIn([\r\n 'layers',\r\n layerID,\r\n 'lines',\r\n holes[i].line,\r\n 'vertices'\r\n ])._tail.array;\r\n let vertice0 = scene.getIn(['layers', layerID, 'vertices', verticeIDs[0]]);\r\n let vertice1 = scene.getIn(['layers', layerID, 'vertices', verticeIDs[1]]);\r\n let point0 = { x: vertice0.x, y: vertice0.y };\r\n let point1 = { x: vertice1.x, y: vertice1.y };\r\n let rotation = Math.atan2(point1.y - point0.y, point1.x - point0.x);\r\n\r\n let rectInfo = getCalcRectFromLine(\r\n point0.x,\r\n point0.y,\r\n point1.x,\r\n point1.y,\r\n LINE_THICKNESS,\r\n layer\r\n );\r\n let vN = point(\r\n rectInfo.rect[0].x - rectInfo.rect[3].x,\r\n rectInfo.rect[0].y - rectInfo.rect[3].y\r\n );\r\n let lenN = Math.sqrt(vN.x * vN.x + vN.y * vN.y);\r\n vN.x /= lenN;\r\n vN.y /= lenN;\r\n\r\n let hx = holes[i].x;\r\n let hy = holes[i].y;\r\n\r\n hx += (theight / 2) * vN.x;\r\n hy += (theight / 2) * vN.y;\r\n\r\n let tval = { pos: { x: hx, y: hy }, rotRad: rotation };\r\n tval.size = { width: twidth, height: theight };\r\n let hole_rect = getCalcRectFromItem(tval);\r\n if (intersectRect(itemRect.rect, hole_rect.rect)) {\r\n if (\r\n tdepth > itemRect.size.depth &&\r\n itemRect.layoutpos !== WALL_CABINET_LAYOUTPOS\r\n ) {\r\n let dist = itemRect.size.height / 2 + theight / 2;\r\n let snap = [];\r\n let p0 = {\r\n x: hx + dist * Math.cos(rotation + Math.PI / 2),\r\n y: hy + dist * Math.sin(rotation + Math.PI / 2)\r\n };\r\n let p1 = {\r\n x: hx - dist * Math.cos(rotation + Math.PI / 2),\r\n y: hy - dist * Math.sin(rotation + Math.PI / 2)\r\n };\r\n let allArea = getAllArea(layer);\r\n if (isPointInArea(allArea, p0)) {\r\n snap.push(p0);\r\n }\r\n if (isPointInArea(allArea, p1)) {\r\n snap.push(p1);\r\n }\r\n return { isSect: true, snap };\r\n } else return { isSect: false, snap: null };\r\n }\r\n }\r\n return { isSect: true, snap: null };\r\n}\r\n\r\nexport function getHoleItems(layer) {\r\n let holeItems = [];\r\n layer.holes.map(hole => {\r\n let width = hole.properties.getIn(['width', 'length']);\r\n let altitude = hole.properties.getIn(['altitude', 'length']);\r\n holeItems.push({ x: hole.x, y: hole.y, width, altitude });\r\n });\r\n return holeItems;\r\n}\r\n\r\nexport function needSnap(curItem, othItem) {\r\n let blSnap = false;\r\n if (curItem == undefined || curItem == null) return false;\r\n let altitude = curItem.selectedItem.properties.get('altitude');\r\n let heightFromFloor = convert(altitude.get('_length'))\r\n .from(altitude.get('_unit'))\r\n .to('in');\r\n let height = curItem.cat.info.sizeinfo.height;\r\n let currentItem = {\r\n heightFromFloor,\r\n height\r\n };\r\n altitude = othItem.item.properties.get('altitude');\r\n heightFromFloor = convert(altitude.get('_length'))\r\n .from(altitude.get('_unit'))\r\n .to('in');\r\n height = othItem.cat && othItem.cat.info.sizeinfo.height;\r\n let otherItem = {\r\n heightFromFloor,\r\n height\r\n };\r\n let curFloor = currentItem.heightFromFloor;\r\n let otherFloor = otherItem.heightFromFloor;\r\n let delta;\r\n curFloor > otherFloor\r\n ? (delta = otherItem.height)\r\n : (delta = currentItem.height);\r\n if (Math.abs(curFloor - otherFloor) < delta) blSnap = true;\r\n\r\n if (\r\n curItem.cat.hasOwnProperty('long_name') ||\r\n (othItem.cat && othItem.cat.hasOwnProperty('long_name'))\r\n ) {\r\n if (\r\n curItem.cat.long_name.includes('Hood') ||\r\n (othItem.cat && othItem.cat.long_name.includes('Hood'))\r\n )\r\n blSnap = true;\r\n if (\r\n (curItem.cat.long_name.includes('Hood') &&\r\n othItem.cat &&\r\n othItem.cat.long_name.includes('Base Cabinet')) ||\r\n (curItem.cat.long_name.includes('Base Cabinet') &&\r\n othItem.cat &&\r\n othItem.cat.long_name.includes('Hood'))\r\n )\r\n blSnap = false;\r\n if (\r\n (curItem.cat.long_name.includes('Cook Top') &&\r\n othItem.cat &&\r\n othItem.cat.long_name.includes('Cabinet')) ||\r\n (curItem.cat.long_name.includes('Cabinet') &&\r\n othItem.cat &&\r\n othItem.cat.long_name.includes('Cook Top'))\r\n )\r\n blSnap = true;\r\n }\r\n return blSnap;\r\n}\r\n\r\nexport function isFrontWall(v0, v1) {\r\n let { x: x1, y: y1 } = v0;\r\n let { x: x2, y: y2 } = v1;\r\n let alpha = angleBetweenTwoPoints(x1, y1, x2, y2);\r\n return (\r\n (almostEqual(y1, y2) && x1 < x2) ||\r\n (-Math.PI / 2 < alpha && alpha < Math.PI / 2)\r\n );\r\n}\r\n\r\nexport function isBackWall(v0, v1) {\r\n let { x: x1, y: y1 } = v0;\r\n let { x: x2, y: y2 } = v1;\r\n let alpha = angleBetweenTwoPoints(x1, y1, x2, y2);\r\n return (\r\n (almostEqual(y1, y2) && x1 > x2) ||\r\n -Math.PI / 2 > alpha ||\r\n alpha > Math.PI / 2\r\n );\r\n}\r\n\r\nexport function isLeftWall(v0, v1) {\r\n let { x: x1, y: y1 } = v0;\r\n let { x: x2, y: y2 } = v1;\r\n let alpha = angleBetweenTwoPoints(x1, y1, x2, y2);\r\n return (almostEqual(x1, x2) && y1 < y2) || (Math.PI > alpha && alpha > 0);\r\n}\r\n\r\nexport function isRightWall(v0, v1) {\r\n let { x: x1, y: y1 } = v0;\r\n let { x: x2, y: y2 } = v1;\r\n let alpha = angleBetweenTwoPoints(x1, y1, x2, y2);\r\n return (almostEqual(x1, x2) && y1 > y2) || (-Math.PI < alpha && alpha < 0);\r\n}\r\n\r\n/**\r\n * Calculate the overlapping relationship of two lines\r\n * @param {*} srcLine // source line\r\n * @param {*} destLine // destination line\r\n * @returns overlapping status (OVERLAP_NONE | OVERLAP_SAME | OVERLAP_LINK | OVERLAP_INCLUDED | OVERLAP_SOME) and line segments of srcLine which broken with destLine\r\n * OVERLAP_NONE: two lines are not overlapped\r\n * OVERLAP_SAME: the start point and endpoint of two lines are same\r\n * OVERLAP_LINK: two lines are linked at the common point, so they can be merged to one line\r\n * OVERLAP_INCLUDED: destLine includes srcLine\r\n * OVERLAP_SOME: two lines are overlapped with some common range, then returns the trimmed segments of srcLine\r\n * \r\n * //////// test - start /////////////\r\n const p1 = { x1: 1413.1313131313132, y1: 1044.949494949495 };\r\n const p2 = { x1: 1476.2626262626263, y1: 1108.0808080808079 };\r\n const p3 = { x1: 1596.969696969697, y1: 1228.7878787878785 };\r\n const p4 = { x1: 1664.1414141414139, y1: 1295.9595959595958 };\r\n const tempRet = GeometryUtils.relationshipOfTwoOverlappedLines(\r\n { x1: p3.x1, y1: p3.y1, x2: p1.x1, y2: p1.y1 },\r\n { x1: p1.x1, y1: p1.y1, x2: p3.x1, y2: p3.y1 }\r\n );\r\n console.log(tempRet);\r\n //////// test - end /////////////\r\n\r\n */\r\nexport function relationshipOfTwoOverlappedLines(srcLine, destLine) {\r\n const INFINITY = 1000000;\r\n // geometric equation of srcLine\r\n const dx1 = MathUtils.toFixedFloat(srcLine.x2 - srcLine.x1, 2);\r\n const dy1 = MathUtils.toFixedFloat(srcLine.y2 - srcLine.y1, 2);\r\n const a1 = dx1 === 0 ? INFINITY : MathUtils.toFixedFloat(dy1 / dx1, 2);\r\n const b1 =\r\n a1 === INFINITY\r\n ? MathUtils.toFixedFloat(srcLine.x1, 2)\r\n : MathUtils.toFixedFloat(srcLine.y1 - a1 * srcLine.x1, 2);\r\n // geometric equation of destLine\r\n const dx2 = MathUtils.toFixedFloat(destLine.x2 - destLine.x1, 2);\r\n const dy2 = MathUtils.toFixedFloat(destLine.y2 - destLine.y1, 2);\r\n const a2 = dx2 === 0 ? INFINITY : MathUtils.toFixedFloat(dy2 / dx2, 2);\r\n const b2 =\r\n a2 === INFINITY\r\n ? MathUtils.toFixedFloat(destLine.x1, 2)\r\n : MathUtils.toFixedFloat(destLine.y1 - a2 * destLine.x1, 2);\r\n\r\n if (MathUtils.fAbs(a1) - MathUtils.fAbs(a2) !== 0)\r\n // two lines are not parallel\r\n return { result: OVERLAP_NONE };\r\n if (b1 !== b2)\r\n // two lines are parallel but not overlap\r\n return { result: OVERLAP_NONE };\r\n\r\n // parametric equation of destLine\r\n const sk1 =\r\n dx1 === 0\r\n ? INFINITY\r\n : MathUtils.toFixedFloat(\r\n MathUtils.toFixedFloat(destLine.x1 - srcLine.x1, 2) / dx1,\r\n 2\r\n );\r\n const sk2 =\r\n dy1 === 0\r\n ? INFINITY\r\n : MathUtils.toFixedFloat(\r\n MathUtils.toFixedFloat(destLine.y1 - srcLine.y1, 2) / dy1,\r\n 2\r\n );\r\n const ek1 =\r\n dx1 === 0\r\n ? INFINITY\r\n : MathUtils.toFixedFloat(\r\n MathUtils.toFixedFloat(destLine.x2 - srcLine.x1, 2) / dx1,\r\n 2\r\n );\r\n const ek2 =\r\n dy1 === 0\r\n ? INFINITY\r\n : MathUtils.toFixedFloat(\r\n MathUtils.toFixedFloat(destLine.y2 - srcLine.y1, 2) / dy1,\r\n 2\r\n );\r\n\r\n if (\r\n sk1 !== INFINITY &&\r\n sk2 !== INFINITY &&\r\n ek1 !== INFINITY &&\r\n ek2 !== INFINITY &&\r\n (sk1 !== sk2 || ek1 !== ek2)\r\n )\r\n // destLine does not overlap with srcLine\r\n return { result: OVERLAP_NONE };\r\n\r\n // parameter of destLine on the start and end points\r\n const sk = Math.min(sk1, sk2);\r\n const ek = Math.min(ek1, ek2);\r\n\r\n // check the relationship between srcLine and destLine\r\n if ((sk < 0 && ek < 0) || (sk > 1 && ek > 1))\r\n // not overlap\r\n return { result: OVERLAP_NONE };\r\n if ((sk === 0 && ek === 1) || (sk === 1 && ek === 0))\r\n // same lines\r\n return { result: OVERLAP_SAME };\r\n if ((sk <= 0 && ek >= 1) || (sk >= 1 && ek <= 0))\r\n // destLine includes srcLine\r\n return { result: OVERLAP_INCLUDED };\r\n if (\r\n (sk === 0 && ek < 0) ||\r\n (sk === 1 && ek > 1) ||\r\n (ek === 0 && sk < 0) ||\r\n (ek === 1 && sk > 1)\r\n ) {\r\n // linked with one common point\r\n let linkedLine;\r\n if (sk === 0 && ek < 0) {\r\n // destE destS srcS srcE\r\n // |----------|------------|\r\n linkedLine = {\r\n x1: destLine.x2,\r\n y1: destLine.y2,\r\n x2: srcLine.x2,\r\n y2: srcLine.y2\r\n };\r\n } else if (sk === 1 && ek > 1) {\r\n // srcS srcE destS destE\r\n // |----------|------------|\r\n linkedLine = {\r\n x1: srcLine.x1,\r\n y1: srcLine.y1,\r\n x2: destLine.x2,\r\n y2: destLine.y2\r\n };\r\n } else if (ek === 0 && sk < 0) {\r\n // destS destE srcS srcE\r\n // |----------|------------|\r\n linkedLine = {\r\n x1: destLine.x1,\r\n y1: destLine.y1,\r\n x2: srcLine.x2,\r\n y2: srcLine.y2\r\n };\r\n } else if (ek === 1 && sk > 1) {\r\n // srcS srcE destE destS\r\n // |----------|------------|\r\n linkedLine = {\r\n x1: srcLine.x1,\r\n y1: srcLine.y1,\r\n x2: destLine.x1,\r\n y2: destLine.y1\r\n };\r\n }\r\n return { result: OVERLAP_LINK, linkedLine };\r\n }\r\n\r\n let trimmedSegment1 = null;\r\n let trimmedSegment2 = null;\r\n const ret = { result: OVERLAP_SOME, trimmedSegs: [] };\r\n if (0 <= sk && sk <= 1 && 0 <= ek && ek <= 1) {\r\n // srcLine includes destLine\r\n if (sk < ek) {\r\n // srcS destS destE srcE\r\n // |------|---------|-------|\r\n trimmedSegment1 = {\r\n x1: srcLine.x1,\r\n y1: srcLine.y1,\r\n x2: destLine.x1,\r\n y2: destLine.y1\r\n };\r\n if (ek < 1)\r\n trimmedSegment2 = {\r\n x1: destLine.x2,\r\n y1: destLine.y2,\r\n x2: srcLine.x2,\r\n y2: srcLine.y2\r\n };\r\n } else {\r\n // srcS destE destS srcE\r\n // |------|---------|-------|\r\n trimmedSegment1 = {\r\n x1: srcLine.x1,\r\n y1: srcLine.y1,\r\n x2: destLine.x2,\r\n y2: destLine.y2\r\n };\r\n if (sk < 1)\r\n trimmedSegment2 = {\r\n x1: destLine.x1,\r\n y1: destLine.y1,\r\n x2: srcLine.x2,\r\n y2: srcLine.y2\r\n };\r\n }\r\n } else {\r\n // srcLine and destLine are overlapped with some range\r\n if (sk < 0) {\r\n // destS srcS destE srcE\r\n // |------|---------|-------|\r\n trimmedSegment1 = {\r\n x1: destLine.x2,\r\n y1: destLine.y2,\r\n x2: srcLine.x2,\r\n y2: srcLine.y2\r\n };\r\n } else if (ek < 0) {\r\n // destE srcS destS srcE\r\n // |------|---------|-------|\r\n trimmedSegment1 = {\r\n x1: destLine.x1,\r\n y1: destLine.y1,\r\n x2: srcLine.x2,\r\n y2: srcLine.y2\r\n };\r\n } else if (sk > 1) {\r\n // srcS destE srcE destS\r\n // |------|---------|-------|\r\n trimmedSegment1 = {\r\n x1: srcLine.x1,\r\n y1: srcLine.y1,\r\n x2: destLine.x2,\r\n y2: destLine.y2\r\n };\r\n } else if (ek > 1) {\r\n // srcS destS srcE destE\r\n // |------|---------|-------|\r\n trimmedSegment1 = {\r\n x1: srcLine.x1,\r\n y1: srcLine.y1,\r\n x2: destLine.x1,\r\n y2: destLine.y1\r\n };\r\n }\r\n }\r\n if (trimmedSegment1 !== null) ret.trimmedSegs.push(trimmedSegment1);\r\n if (trimmedSegment2 !== null) ret.trimmedSegs.push(trimmedSegment2);\r\n return ret;\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
function getEdgesOfSubgraphs(subgraphs, graph) {
|
|
4
|
-
var edges = [];
|
|
5
|
-
subgraphs.forEach(function (component) {
|
|
6
|
-
edges.push([]);
|
|
7
|
-
var vertices = getVerticesFromBiconnectedComponent(component);
|
|
8
|
-
var inserted = [];
|
|
9
|
-
vertices.forEach(function (vertex) {
|
|
10
|
-
var adjacents = graph.adj[vertex];
|
|
11
|
-
adjacents.forEach(function (adj) {
|
|
12
|
-
if (vertex <= adj && vertices.has(adj)) {
|
|
13
|
-
edges[edges.length - 1].push([vertex, adj]);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
return edges;
|
|
19
|
-
}
|
|
20
|
-
function getVerticesFromBiconnectedComponent(component) {
|
|
21
|
-
var vertices = new Set();
|
|
22
|
-
component.forEach(function (edge) {
|
|
23
|
-
vertices.add(edge.u);
|
|
24
|
-
vertices.add(edge.v);
|
|
25
|
-
});
|
|
26
|
-
return vertices;
|
|
27
|
-
}
|
|
28
|
-
module.exports = getEdgesOfSubgraphs;
|
|
29
|
-
//# sourceMappingURL=get-edges-of-subgraphs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-edges-of-subgraphs.js","names":["getEdgesOfSubgraphs","subgraphs","graph","edges","forEach","component","push","vertices","getVerticesFromBiconnectedComponent","inserted","vertex","adjacents","adj","has","length","Set","edge","add","u","v","module","exports"],"sources":["../../src/utils/get-edges-of-subgraphs.js"],"sourcesContent":["function getEdgesOfSubgraphs(subgraphs, graph) {\r\n let edges = [];\r\n\r\n subgraphs.forEach(component => {\r\n edges.push([]);\r\n let vertices = getVerticesFromBiconnectedComponent(component);\r\n let inserted = [];\r\n vertices.forEach(vertex => {\r\n let adjacents = graph.adj[vertex];\r\n adjacents.forEach(adj => {\r\n if (vertex <= adj && vertices.has(adj)) {\r\n edges[edges.length - 1].push([vertex, adj]);\r\n }\r\n });\r\n });\r\n });\r\n return edges;\r\n}\r\n\r\nfunction getVerticesFromBiconnectedComponent(component) {\r\n let vertices = new Set();\r\n component.forEach(edge => {\r\n vertices.add(edge.u);\r\n vertices.add(edge.v);\r\n });\r\n return vertices;\r\n}\r\n\r\nmodule.exports = getEdgesOfSubgraphs;\r\n"],"mappings":";;AAAA,SAASA,mBAAmBA,CAACC,SAAS,EAAEC,KAAK,EAAE;EAC7C,IAAIC,KAAK,GAAG,EAAE;EAEdF,SAAS,CAACG,OAAO,CAAC,UAAAC,SAAS,EAAI;IAC7BF,KAAK,CAACG,IAAI,CAAC,EAAE,CAAC;IACd,IAAIC,QAAQ,GAAGC,mCAAmC,CAACH,SAAS,CAAC;IAC7D,IAAII,QAAQ,GAAG,EAAE;IACjBF,QAAQ,CAACH,OAAO,CAAC,UAAAM,MAAM,EAAI;MACzB,IAAIC,SAAS,GAAGT,KAAK,CAACU,GAAG,CAACF,MAAM,CAAC;MACjCC,SAAS,CAACP,OAAO,CAAC,UAAAQ,GAAG,EAAI;QACvB,IAAIF,MAAM,IAAIE,GAAG,IAAIL,QAAQ,CAACM,GAAG,CAACD,GAAG,CAAC,EAAE;UACtCT,KAAK,CAACA,KAAK,CAACW,MAAM,GAAG,CAAC,CAAC,CAACR,IAAI,CAAC,CAACI,MAAM,EAAEE,GAAG,CAAC,CAAC;QAC7C;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EACF,OAAOT,KAAK;AACd;AAEA,SAASK,mCAAmCA,CAACH,SAAS,EAAE;EACtD,IAAIE,QAAQ,GAAG,IAAIQ,GAAG,CAAC,CAAC;EACxBV,SAAS,CAACD,OAAO,CAAC,UAAAY,IAAI,EAAI;IACxBT,QAAQ,CAACU,GAAG,CAACD,IAAI,CAACE,CAAC,CAAC;IACpBX,QAAQ,CAACU,GAAG,CAACD,IAAI,CAACG,CAAC,CAAC;EACtB,CAAC,CAAC;EACF,OAAOZ,QAAQ;AACjB;AAEAa,MAAM,CAACC,OAAO,GAAGrB,mBAAmB","ignoreList":[]}
|