kitchen-simulator 5.0.0-test.5 → 5.0.0-test.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +34 -41
- package/src/@history.js +3 -0
- package/src/AppContext.js +5 -0
- package/src/KitchenConfigurator.jsx +1517 -0
- package/src/KitchenConfiguratorApp.jsx +443 -0
- package/src/actions/area-actions.js +15 -0
- package/src/actions/export.js +38 -0
- package/src/actions/groups-actions.js +102 -0
- package/src/actions/holes-actions.js +152 -0
- package/src/actions/items-actions.js +393 -0
- package/src/actions/lines-actions.js +103 -0
- package/src/actions/project-actions.js +391 -0
- package/src/actions/scene-actions.js +44 -0
- package/src/actions/user-actions.js +75 -0
- package/src/actions/vertices-actions.js +34 -0
- package/src/actions/viewer2d-actions.js +79 -0
- package/src/actions/viewer3d-actions.js +32 -0
- package/src/catalog/areas/area/planner-element.jsx +43 -0
- package/src/catalog/catalog.js +258 -0
- package/src/catalog/factories/area-factory-3d.js +252 -0
- package/src/catalog/factories/area-factory.jsx +102 -0
- package/src/catalog/factories/export.js +9 -0
- package/src/catalog/factories/wall-factory-3d.js +296 -0
- package/src/catalog/factories/wall-factory.jsx +321 -0
- package/src/catalog/holes/door-closet/planner-element.jsx +251 -0
- package/src/catalog/holes/door-double/planner-element.jsx +391 -0
- package/src/catalog/holes/door-exterior/planner-element.jsx +245 -0
- package/src/catalog/holes/door-interior/planner-element.jsx +256 -0
- package/src/catalog/holes/door-panic/planner-element.jsx +594 -0
- package/src/catalog/holes/door-panic-double/planner-element.jsx +574 -0
- package/src/catalog/holes/door-sliding/planner-element.jsx +256 -0
- package/src/catalog/holes/doorway-framed/planner-element.jsx +169 -0
- package/src/catalog/holes/doorway-frameless/planner-element.jsx +116 -0
- package/src/catalog/holes/window-clear/planner-element.jsx +181 -0
- package/src/catalog/holes/window-cross/planner-element.jsx +180 -0
- package/src/catalog/holes/window-double-hung/planner-element.jsx +366 -0
- package/src/catalog/holes/window-vertical/planner-element.jsx +290 -0
- package/src/catalog/lines/wall/planner-element.jsx +73 -0
- package/src/catalog/molding/molding-dcm/planner-element.jsx +35 -0
- package/src/catalog/molding/molding-fbm/planner-element.jsx +35 -0
- package/src/catalog/molding/molding-lrm/planner-element.jsx +35 -0
- package/src/catalog/properties/export.js +33 -0
- package/src/catalog/properties/property-checkbox.jsx +123 -0
- package/src/catalog/properties/property-color.jsx +52 -0
- package/src/catalog/properties/property-enum.jsx +87 -0
- package/src/catalog/properties/property-hidden.jsx +22 -0
- package/src/catalog/properties/property-lenght-measure.jsx +113 -0
- package/src/catalog/properties/property-length-measure.jsx +129 -0
- package/src/catalog/properties/property-length-measure_hole.jsx +110 -0
- package/src/catalog/properties/property-number.jsx +63 -0
- package/src/catalog/properties/property-read-only.jsx +37 -0
- package/src/catalog/properties/property-string.jsx +59 -0
- package/src/catalog/properties/property-toggle.jsx +51 -0
- package/src/catalog/properties/shared-property-style.js +13 -0
- package/src/catalog/utils/FuseUtils.js +61 -0
- package/src/catalog/utils/exporter.js +173 -0
- package/src/catalog/utils/geom-utils.js +301 -0
- package/src/catalog/utils/item-loader.jsx +2122 -0
- package/src/catalog/utils/load-obj.js +113 -0
- package/src/catalog/utils/mtl-loader.js +462 -0
- package/src/catalog/utils/obj-loader.js +544 -0
- package/src/class/FuseUtils.js +61 -0
- package/src/class/area.js +159 -0
- package/src/class/export.js +37 -0
- package/src/class/group.js +565 -0
- package/src/class/guide.js +44 -0
- package/src/class/hole.js +1359 -0
- package/src/class/item.js +2050 -0
- package/src/class/layer.js +926 -0
- package/src/class/line.js +1780 -0
- package/src/class/project.js +875 -0
- package/src/class/vertex.js +409 -0
- package/src/components/atoms/Snackbar/index.jsx +43 -0
- package/src/components/atoms/radio-button/index.jsx +20 -0
- package/src/components/atoms/radio-button/styles.js +56 -0
- package/src/components/button/MainButton.jsx +157 -0
- package/src/components/button/ToggleMeasureButton.jsx +65 -0
- package/src/components/catalog-view/catalog-breadcrumb.jsx +53 -0
- package/src/components/catalog-view/catalog-item.jsx +229 -0
- package/src/components/catalog-view/catalog-list.jsx +173 -0
- package/src/components/catalog-view/catalog-page-item.jsx +110 -0
- package/src/components/catalog-view/catalog-turn-back-page-item.jsx +80 -0
- package/src/components/configurator/custom-configurator.jsx +77 -0
- package/src/components/configurator/project-configurator.jsx +120 -0
- package/src/components/content.jsx +136 -0
- package/src/components/export.js +36 -0
- package/src/components/firstsetting/button/styles.js +223 -0
- package/src/components/firstsetting/export.js +9 -0
- package/src/components/firstsetting/firstsetting-content-button.jsx +198 -0
- package/src/components/firstsetting/firstsetting-toggle-button.jsx +101 -0
- package/src/components/firstsetting/firstsetting.jsx +814 -0
- package/src/components/footerbar/button/ControlButton.jsx +43 -0
- package/src/components/footerbar/button/DirectionButton.jsx +54 -0
- package/src/components/footerbar/button/DirectionPanSpinButton.jsx +36 -0
- package/src/components/footerbar/button/ToggleButton.jsx +58 -0
- package/src/components/footerbar/button/ToggleConvertButton.jsx +48 -0
- package/src/components/footerbar/button/ToggleMeasureButton.jsx +33 -0
- package/src/components/footerbar/button/styles.js +217 -0
- package/src/components/footerbar/export.js +9 -0
- package/src/components/footerbar/footer-content-button.jsx +198 -0
- package/src/components/footerbar/footer-toggle-button.jsx +101 -0
- package/src/components/footerbar/footerbar.jsx +1103 -0
- package/src/components/footerbar/styles.js +263 -0
- package/src/components/header/button/MenuButton.jsx +46 -0
- package/src/components/header/button/SaveButton.jsx +54 -0
- package/src/components/header/button/styles.js +181 -0
- package/src/components/header/export.js +5 -0
- package/src/components/header/header.jsx +631 -0
- package/src/components/header/styles.js +320 -0
- package/src/components/login/Login.js +77 -0
- package/src/components/login/LoginForm/index.js +108 -0
- package/src/components/login/Register.js +83 -0
- package/src/components/login/RegisterForm/index.js +171 -0
- package/src/components/login/jwtService.js +201 -0
- package/src/components/molecules/slider/index.jsx +15 -0
- package/src/components/molecules/slider/styles.js +0 -0
- package/src/components/myprojects/export.js +5 -0
- package/src/components/myprojects/index.jsx +445 -0
- package/src/components/myprojects/styles.js +241 -0
- package/src/components/sidebar/custom-accordion.jsx +48 -0
- package/src/components/sidebar/export.js +15 -0
- package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +73 -0
- package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +101 -0
- package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +149 -0
- package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +316 -0
- package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +108 -0
- package/src/components/sidebar/panel-element-editor/element-editor.jsx +1070 -0
- package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
- package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +104 -0
- package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +155 -0
- package/src/components/sidebar/panel-group-editor.jsx +272 -0
- package/src/components/sidebar/panel-groups.jsx +310 -0
- package/src/components/sidebar/panel-guides.jsx +192 -0
- package/src/components/sidebar/panel-layer-elements.jsx +298 -0
- package/src/components/sidebar/panel-layers.jsx +381 -0
- package/src/components/sidebar/panel.jsx +71 -0
- package/src/components/sidebar/sidebar.jsx +106 -0
- package/src/components/sidebar/toolbar-panel.jsx +139 -0
- package/src/components/sign/export.js +7 -0
- package/src/components/sign/main/index.jsx +523 -0
- package/src/components/sign/main/styles.js +163 -0
- package/src/components/style/button.jsx +95 -0
- package/src/components/style/cancel-button.jsx +20 -0
- package/src/components/style/content-container.jsx +29 -0
- package/src/components/style/content-title.jsx +20 -0
- package/src/components/style/delete-button.jsx +23 -0
- package/src/components/style/export.jsx +48 -0
- package/src/components/style/form-block.jsx +13 -0
- package/src/components/style/form-color-input.jsx +27 -0
- package/src/components/style/form-label.jsx +15 -0
- package/src/components/style/form-number-input.jsx +196 -0
- package/src/components/style/form-number-input_2.jsx +191 -0
- package/src/components/style/form-select.jsx +38 -0
- package/src/components/style/form-slider.jsx +36 -0
- package/src/components/style/form-submit-button.jsx +23 -0
- package/src/components/style/form-text-input.jsx +65 -0
- package/src/components/toolbar/button/ControlButton.jsx +41 -0
- package/src/components/toolbar/button/DirectionButton.jsx +34 -0
- package/src/components/toolbar/button/RightButton.jsx +103 -0
- package/src/components/toolbar/button/ToggleButton.jsx +41 -0
- package/src/components/toolbar/button/index.jsx +55 -0
- package/src/components/toolbar/button/styles.js +127 -0
- package/src/components/toolbar/components/DoorStyleMenu.jsx +103 -0
- package/src/components/toolbar/components/Pricing.jsx +126 -0
- package/src/components/toolbar/components/ReviewForQuote.jsx +635 -0
- package/src/components/toolbar/export.js +21 -0
- package/src/components/toolbar/main/Alert.js +122 -0
- package/src/components/toolbar/main/TakePictureModal.jsx +104 -0
- package/src/components/toolbar/main/confirm-popup.jsx +99 -0
- package/src/components/toolbar/main/index.jsx +5627 -0
- package/src/components/toolbar/main/myComponents.js +123 -0
- package/src/components/toolbar/main/styles.js +696 -0
- package/src/components/toolbar/plugin-item.jsx +123 -0
- package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +73 -0
- package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +102 -0
- package/src/components/toolbar/popup/appliance/index.jsx +83 -0
- package/src/components/toolbar/popup/autosaveprompt/index.jsx +150 -0
- package/src/components/toolbar/popup/autosaveprompt/styles.js +40 -0
- package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +73 -0
- package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +119 -0
- package/src/components/toolbar/popup/cabinet/index.jsx +85 -0
- package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +63 -0
- package/src/components/toolbar/popup/doorStyle/index.jsx +71 -0
- package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +139 -0
- package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +2 -0
- package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +157 -0
- package/src/components/toolbar/popup/downloadsummary/index.jsx +643 -0
- package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +51 -0
- package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +175 -0
- package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +283 -0
- package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +2257 -0
- package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +93 -0
- package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +132 -0
- package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +2198 -0
- package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +152 -0
- package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +149 -0
- package/src/components/toolbar/popup/downloadsummary/styles.js +453 -0
- package/src/components/toolbar/popup/finishingtouch/category/index.jsx +34 -0
- package/src/components/toolbar/popup/finishingtouch/index.jsx +58 -0
- package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +112 -0
- package/src/components/toolbar/popup/finishingtouch/product/index.jsx +116 -0
- package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +101 -0
- package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +254 -0
- package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +86 -0
- package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +109 -0
- package/src/components/toolbar/popup/floorplan/index.jsx +60 -0
- package/src/components/toolbar/popup/index.jsx +241 -0
- package/src/components/toolbar/popup/newproject/index.jsx +59 -0
- package/src/components/toolbar/popup/newproject/styles.js +41 -0
- package/src/components/toolbar/popup/product/appliance.jsx +54 -0
- package/src/components/toolbar/popup/product/cabinetproduct.jsx +15 -0
- package/src/components/toolbar/popup/product/doorstyle.jsx +58 -0
- package/src/components/toolbar/popup/product/doorstyleproduct.jsx +47 -0
- package/src/components/toolbar/popup/product/floor.jsx +36 -0
- package/src/components/toolbar/popup/product/floorproduct.jsx +42 -0
- package/src/components/toolbar/popup/product/index.jsx +36 -0
- package/src/components/toolbar/popup/product/primary.jsx +77 -0
- package/src/components/toolbar/popup/product/productline.jsx +93 -0
- package/src/components/toolbar/popup/product/reviewItem.jsx +427 -0
- package/src/components/toolbar/popup/product/reviewMolding.jsx +310 -0
- package/src/components/toolbar/popup/product/styles.js +260 -0
- package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +146 -0
- package/src/components/toolbar/popup/savedesign/index.jsx +495 -0
- package/src/components/toolbar/popup/savedesign/styles.js +151 -0
- package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +87 -0
- package/src/components/toolbar/popup/styles.js +909 -0
- package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +192 -0
- package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +96 -0
- package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +54 -0
- package/src/components/toolbar/popup/submitforquote/StepDots.jsx +25 -0
- package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +116 -0
- package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +38 -0
- package/src/components/toolbar/popup/submitforquote/index.jsx +698 -0
- package/src/components/toolbar/popup/submitforquote/styles.js +294 -0
- package/src/components/toolbar/popup/submitprompt/index.jsx +89 -0
- package/src/components/toolbar/popup/submitprompt/styles.js +42 -0
- package/src/components/toolbar/toolbar-button.jsx +90 -0
- package/src/components/toolbar/toolbar-load-button.jsx +36 -0
- package/src/components/toolbar/toolbar-save-button.jsx +32 -0
- package/src/components/tutorial-view/Modal.jsx +584 -0
- package/src/components/tutorial-view/styles.js +65 -0
- package/src/components/viewer2d/area.jsx +98 -0
- package/src/components/viewer2d/export.js +48 -0
- package/src/components/viewer2d/grids/grid-horizontal-streak.jsx +40 -0
- package/src/components/viewer2d/grids/grid-streak.jsx +32 -0
- package/src/components/viewer2d/grids/grid-vertical-streak.jsx +41 -0
- package/src/components/viewer2d/grids/grids.jsx +30 -0
- package/src/components/viewer2d/group.jsx +57 -0
- package/src/components/viewer2d/item.jsx +618 -0
- package/src/components/viewer2d/layer.jsx +214 -0
- package/src/components/viewer2d/line.jsx +1358 -0
- package/src/components/viewer2d/ruler.jsx +136 -0
- package/src/components/viewer2d/rulerDist.jsx +192 -0
- package/src/components/viewer2d/rulerX.jsx +141 -0
- package/src/components/viewer2d/rulerY.jsx +138 -0
- package/src/components/viewer2d/scene.jsx +94 -0
- package/src/components/viewer2d/snap.jsx +118 -0
- package/src/components/viewer2d/state.jsx +77 -0
- package/src/components/viewer2d/utils.js +195 -0
- package/src/components/viewer2d/vertex.jsx +76 -0
- package/src/components/viewer2d/viewer2d.jsx +1830 -0
- package/src/components/viewer3d/camera-controls-module/camera-controls.module.js +3078 -0
- package/src/components/viewer3d/dcm.js +226 -0
- package/src/components/viewer3d/fbm.js +383 -0
- package/src/components/viewer3d/front3D.jsx +63 -0
- package/src/components/viewer3d/grid-creator.js +25 -0
- package/src/components/viewer3d/grids/grid-horizontal-streak.js +41 -0
- package/src/components/viewer3d/grids/grid-streak.js +34 -0
- package/src/components/viewer3d/grids/grid-vertical-streak.js +42 -0
- package/src/components/viewer3d/libs/first-person-controls.js +70 -0
- package/src/components/viewer3d/libs/helvetiker_regular.typeface.js +1265 -0
- package/src/components/viewer3d/libs/mtl-loader.js +462 -0
- package/src/components/viewer3d/libs/obj-loader.js +653 -0
- package/src/components/viewer3d/libs/orbit-controls.js +945 -0
- package/src/components/viewer3d/libs/pointer-lock-controls.js +67 -0
- package/src/components/viewer3d/lrm.js +358 -0
- package/src/components/viewer3d/model.js +830 -0
- package/src/components/viewer3d/pointer-lock-navigation.js +140 -0
- package/src/components/viewer3d/ruler-utils/itemRect.jsx +91 -0
- package/src/components/viewer3d/ruler-utils/layer3D.jsx +528 -0
- package/src/components/viewer3d/ruler-utils/ruler3D.jsx +218 -0
- package/src/components/viewer3d/ruler-utils/scene3D.jsx +87 -0
- package/src/components/viewer3d/ruler-utils/state3D.jsx +25 -0
- package/src/components/viewer3d/scene-creator.js +5169 -0
- package/src/components/viewer3d/three-memory-cleaner.js +65 -0
- package/src/components/viewer3d/viewer3d-first-person.js +395 -0
- package/src/components/viewer3d/viewer3d.js +3376 -0
- package/src/components/wizardstep/button/styles.js +677 -0
- package/src/components/wizardstep/export.js +5 -0
- package/src/components/wizardstep/index.jsx +1372 -0
- package/src/components/wizardstep/styles.js +688 -0
- package/src/components/wizardstep/wizardstep-content-button.jsx +198 -0
- package/src/components/wizardstep/wizardstep-toggle-button.jsx +101 -0
- package/src/constants.js +731 -0
- package/src/index.js +32 -0
- package/src/models.js +541 -0
- package/src/plugins/SVGLoader.js +1991 -0
- package/src/plugins/autosave.js +39 -0
- package/src/plugins/console-debugger.js +36 -0
- package/src/plugins/export.js +11 -0
- package/src/plugins/keyboard.js +194 -0
- package/src/reducers/areas-reducer.js +13 -0
- package/src/reducers/export.js +39 -0
- package/src/reducers/groups-reducer.js +73 -0
- package/src/reducers/holes-reducer.js +125 -0
- package/src/reducers/items-reducer.js +286 -0
- package/src/reducers/lines-reducer.js +96 -0
- package/src/reducers/project-reducer.js +239 -0
- package/src/reducers/reducer.js +59 -0
- package/src/reducers/scene-reducer.js +41 -0
- package/src/reducers/user-reducer.js +30 -0
- package/src/reducers/vertices-reducer.js +34 -0
- package/src/reducers/viewer2d-reducer.js +81 -0
- package/src/reducers/viewer3d-reducer.js +65 -0
- package/src/shared-style.js +72 -0
- package/src/translator/en.js +106 -0
- package/src/translator/it.js +80 -0
- package/src/translator/ru.js +80 -0
- package/src/translator/translator.js +81 -0
- package/src/utils/browser.js +36 -0
- package/src/utils/email-validator.js +5 -0
- package/src/utils/export.js +39 -0
- package/src/utils/geometry.js +2572 -0
- package/src/utils/get-edges-of-subgraphs.js +29 -0
- package/src/utils/graph-cycles.js +259 -0
- package/src/utils/graph-inner-cycles.js +49 -0
- package/src/utils/graph.js +147 -0
- package/src/utils/helper.js +431 -0
- package/src/utils/history.js +37 -0
- package/src/utils/id-broker.js +9 -0
- package/src/utils/logger.js +8 -0
- package/src/utils/math.js +51 -0
- package/src/utils/molding.js +973 -0
- package/src/utils/name-generator.js +5 -0
- package/src/utils/objects-utils.js +56 -0
- package/src/utils/phone-validator.js +4 -0
- package/src/utils/process-black-list.js +10 -0
- package/src/utils/react-if.jsx +20 -0
- package/src/utils/snap-scene.js +102 -0
- package/src/utils/snap.js +184 -0
- package/src/utils/threeCSG.es6.js +578 -0
- package/src/version.js +1 -0
- package/es/@history.js +0 -3
- package/es/@history.js.map +0 -1
- package/es/AppContext.js +0 -4
- package/es/AppContext.js.map +0 -1
- package/es/KitchenConfigurator.js +0 -1345
- package/es/KitchenConfigurator.js.map +0 -1
- package/es/KitchenConfiguratorApp.js +0 -532
- package/es/KitchenConfiguratorApp.js.map +0 -1
- package/es/actions/area-actions.js +0 -15
- package/es/actions/area-actions.js.map +0 -1
- package/es/actions/export.js +0 -26
- package/es/actions/export.js.map +0 -1
- package/es/actions/groups-actions.js +0 -90
- package/es/actions/groups-actions.js.map +0 -1
- package/es/actions/holes-actions.js +0 -120
- package/es/actions/holes-actions.js.map +0 -1
- package/es/actions/items-actions.js +0 -314
- package/es/actions/items-actions.js.map +0 -1
- package/es/actions/lines-actions.js +0 -83
- package/es/actions/lines-actions.js.map +0 -1
- package/es/actions/project-actions.js +0 -282
- package/es/actions/project-actions.js.map +0 -1
- package/es/actions/scene-actions.js +0 -34
- package/es/actions/scene-actions.js.map +0 -1
- package/es/actions/user-actions.js +0 -59
- package/es/actions/user-actions.js.map +0 -1
- package/es/actions/vertices-actions.js +0 -28
- package/es/actions/vertices-actions.js.map +0 -1
- package/es/actions/viewer2d-actions.js +0 -59
- package/es/actions/viewer2d-actions.js.map +0 -1
- package/es/actions/viewer3d-actions.js +0 -24
- package/es/actions/viewer3d-actions.js.map +0 -1
- package/es/catalog/areas/area/planner-element.js +0 -41
- package/es/catalog/areas/area/planner-element.js.map +0 -1
- package/es/catalog/catalog.js +0 -278
- package/es/catalog/catalog.js.map +0 -1
- package/es/catalog/factories/area-factory-3d.js +0 -183
- package/es/catalog/factories/area-factory-3d.js.map +0 -1
- package/es/catalog/factories/area-factory.js +0 -82
- package/es/catalog/factories/area-factory.js.map +0 -1
- package/es/catalog/factories/export.js +0 -8
- package/es/catalog/factories/export.js.map +0 -1
- package/es/catalog/factories/wall-factory-3d.js +0 -203
- package/es/catalog/factories/wall-factory-3d.js.map +0 -1
- package/es/catalog/factories/wall-factory.js +0 -269
- package/es/catalog/factories/wall-factory.js.map +0 -1
- package/es/catalog/holes/door-closet/planner-element.js +0 -223
- package/es/catalog/holes/door-closet/planner-element.js.map +0 -1
- package/es/catalog/holes/door-double/planner-element.js +0 -316
- package/es/catalog/holes/door-double/planner-element.js.map +0 -1
- package/es/catalog/holes/door-exterior/planner-element.js +0 -216
- package/es/catalog/holes/door-exterior/planner-element.js.map +0 -1
- package/es/catalog/holes/door-interior/planner-element.js +0 -228
- package/es/catalog/holes/door-interior/planner-element.js.map +0 -1
- package/es/catalog/holes/door-panic/planner-element.js +0 -504
- package/es/catalog/holes/door-panic/planner-element.js.map +0 -1
- package/es/catalog/holes/door-panic-double/planner-element.js +0 -464
- package/es/catalog/holes/door-panic-double/planner-element.js.map +0 -1
- package/es/catalog/holes/door-sliding/planner-element.js +0 -226
- package/es/catalog/holes/door-sliding/planner-element.js.map +0 -1
- package/es/catalog/holes/doorway-framed/planner-element.js +0 -146
- package/es/catalog/holes/doorway-framed/planner-element.js.map +0 -1
- package/es/catalog/holes/doorway-frameless/planner-element.js +0 -105
- package/es/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
- package/es/catalog/holes/window-clear/planner-element.js +0 -167
- package/es/catalog/holes/window-clear/planner-element.js.map +0 -1
- package/es/catalog/holes/window-cross/planner-element.js +0 -166
- package/es/catalog/holes/window-cross/planner-element.js.map +0 -1
- package/es/catalog/holes/window-double-hung/planner-element.js +0 -304
- package/es/catalog/holes/window-double-hung/planner-element.js.map +0 -1
- package/es/catalog/holes/window-vertical/planner-element.js +0 -277
- package/es/catalog/holes/window-vertical/planner-element.js.map +0 -1
- package/es/catalog/lines/wall/planner-element.js +0 -71
- package/es/catalog/lines/wall/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-dcm/planner-element.js +0 -30
- package/es/catalog/molding/molding-dcm/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-fbm/planner-element.js +0 -30
- package/es/catalog/molding/molding-fbm/planner-element.js.map +0 -1
- package/es/catalog/molding/molding-lrm/planner-element.js +0 -30
- package/es/catalog/molding/molding-lrm/planner-element.js.map +0 -1
- package/es/catalog/properties/export.js +0 -22
- package/es/catalog/properties/export.js.map +0 -1
- package/es/catalog/properties/property-checkbox.js +0 -72
- package/es/catalog/properties/property-checkbox.js.map +0 -1
- package/es/catalog/properties/property-color.js +0 -40
- package/es/catalog/properties/property-color.js.map +0 -1
- package/es/catalog/properties/property-enum.js +0 -56
- package/es/catalog/properties/property-enum.js.map +0 -1
- package/es/catalog/properties/property-hidden.js +0 -20
- package/es/catalog/properties/property-hidden.js.map +0 -1
- package/es/catalog/properties/property-lenght-measure.js +0 -102
- package/es/catalog/properties/property-lenght-measure.js.map +0 -1
- package/es/catalog/properties/property-length-measure.js +0 -86
- package/es/catalog/properties/property-length-measure.js.map +0 -1
- package/es/catalog/properties/property-length-measure_hole.js +0 -102
- package/es/catalog/properties/property-length-measure_hole.js.map +0 -1
- package/es/catalog/properties/property-number.js +0 -49
- package/es/catalog/properties/property-number.js.map +0 -1
- package/es/catalog/properties/property-read-only.js +0 -27
- package/es/catalog/properties/property-read-only.js.map +0 -1
- package/es/catalog/properties/property-string.js +0 -49
- package/es/catalog/properties/property-string.js.map +0 -1
- package/es/catalog/properties/property-toggle.js +0 -40
- package/es/catalog/properties/property-toggle.js.map +0 -1
- package/es/catalog/properties/shared-property-style.js +0 -15
- package/es/catalog/properties/shared-property-style.js.map +0 -1
- package/es/catalog/utils/FuseUtils.js +0 -83
- package/es/catalog/utils/FuseUtils.js.map +0 -1
- package/es/catalog/utils/exporter.js +0 -149
- package/es/catalog/utils/exporter.js.map +0 -1
- package/es/catalog/utils/geom-utils.js +0 -190
- package/es/catalog/utils/geom-utils.js.map +0 -1
- package/es/catalog/utils/item-loader.js +0 -1522
- package/es/catalog/utils/item-loader.js.map +0 -1
- package/es/catalog/utils/load-obj.js +0 -92
- package/es/catalog/utils/load-obj.js.map +0 -1
- package/es/catalog/utils/mtl-loader.js +0 -358
- package/es/catalog/utils/mtl-loader.js.map +0 -1
- package/es/catalog/utils/obj-loader.js +0 -477
- package/es/catalog/utils/obj-loader.js.map +0 -1
- package/es/class/FuseUtils.js +0 -83
- package/es/class/FuseUtils.js.map +0 -1
- package/es/class/area.js +0 -146
- package/es/class/area.js.map +0 -1
- package/es/class/export.js +0 -25
- package/es/class/export.js.map +0 -1
- package/es/class/group.js +0 -441
- package/es/class/group.js.map +0 -1
- package/es/class/guide.js +0 -63
- package/es/class/guide.js.map +0 -1
- package/es/class/hole.js +0 -931
- package/es/class/hole.js.map +0 -1
- package/es/class/item.js +0 -1888
- package/es/class/item.js.map +0 -1
- package/es/class/layer.js +0 -668
- package/es/class/layer.js.map +0 -1
- package/es/class/line.js +0 -1290
- package/es/class/line.js.map +0 -1
- package/es/class/project.js +0 -823
- package/es/class/project.js.map +0 -1
- package/es/class/vertex.js +0 -267
- package/es/class/vertex.js.map +0 -1
- package/es/components/atoms/Snackbar/index.js +0 -50
- package/es/components/atoms/Snackbar/index.js.map +0 -1
- package/es/components/atoms/radio-button/index.js +0 -26
- package/es/components/atoms/radio-button/index.js.map +0 -1
- package/es/components/atoms/radio-button/styles.js +0 -5
- package/es/components/atoms/radio-button/styles.js.map +0 -1
- package/es/components/button/MainButton.js +0 -92
- package/es/components/button/MainButton.js.map +0 -1
- package/es/components/button/ToggleMeasureButton.js +0 -56
- package/es/components/button/ToggleMeasureButton.js.map +0 -1
- package/es/components/catalog-view/catalog-breadcrumb.js +0 -53
- package/es/components/catalog-view/catalog-breadcrumb.js.map +0 -1
- package/es/components/catalog-view/catalog-item.js +0 -226
- package/es/components/catalog-view/catalog-item.js.map +0 -1
- package/es/components/catalog-view/catalog-list.js +0 -182
- package/es/components/catalog-view/catalog-list.js.map +0 -1
- package/es/components/catalog-view/catalog-page-item.js +0 -130
- package/es/components/catalog-view/catalog-page-item.js.map +0 -1
- package/es/components/catalog-view/catalog-turn-back-page-item.js +0 -106
- package/es/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
- package/es/components/configurator/custom-configurator.js +0 -94
- package/es/components/configurator/custom-configurator.js.map +0 -1
- package/es/components/configurator/project-configurator.js +0 -131
- package/es/components/configurator/project-configurator.js.map +0 -1
- package/es/components/content.js +0 -123
- package/es/components/content.js.map +0 -1
- package/es/components/export.js +0 -24
- package/es/components/export.js.map +0 -1
- package/es/components/firstsetting/button/styles.js +0 -27
- package/es/components/firstsetting/button/styles.js.map +0 -1
- package/es/components/firstsetting/export.js +0 -9
- package/es/components/firstsetting/export.js.map +0 -1
- package/es/components/firstsetting/firstsetting-content-button.js +0 -217
- package/es/components/firstsetting/firstsetting-content-button.js.map +0 -1
- package/es/components/firstsetting/firstsetting-toggle-button.js +0 -126
- package/es/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
- package/es/components/firstsetting/firstsetting.js +0 -626
- package/es/components/firstsetting/firstsetting.js.map +0 -1
- package/es/components/footerbar/button/ControlButton.js +0 -72
- package/es/components/footerbar/button/ControlButton.js.map +0 -1
- package/es/components/footerbar/button/DirectionButton.js +0 -69
- package/es/components/footerbar/button/DirectionButton.js.map +0 -1
- package/es/components/footerbar/button/DirectionPanSpinButton.js +0 -50
- package/es/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleButton.js +0 -76
- package/es/components/footerbar/button/ToggleButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleConvertButton.js +0 -73
- package/es/components/footerbar/button/ToggleConvertButton.js.map +0 -1
- package/es/components/footerbar/button/ToggleMeasureButton.js +0 -52
- package/es/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
- package/es/components/footerbar/button/styles.js +0 -22
- package/es/components/footerbar/button/styles.js.map +0 -1
- package/es/components/footerbar/export.js +0 -9
- package/es/components/footerbar/export.js.map +0 -1
- package/es/components/footerbar/footer-content-button.js +0 -217
- package/es/components/footerbar/footer-content-button.js.map +0 -1
- package/es/components/footerbar/footer-toggle-button.js +0 -126
- package/es/components/footerbar/footer-toggle-button.js.map +0 -1
- package/es/components/footerbar/footerbar.js +0 -801
- package/es/components/footerbar/footerbar.js.map +0 -1
- package/es/components/footerbar/styles.js +0 -34
- package/es/components/footerbar/styles.js.map +0 -1
- package/es/components/header/button/MenuButton.js +0 -70
- package/es/components/header/button/MenuButton.js.map +0 -1
- package/es/components/header/button/SaveButton.js +0 -48
- package/es/components/header/button/SaveButton.js.map +0 -1
- package/es/components/header/button/styles.js +0 -59
- package/es/components/header/button/styles.js.map +0 -1
- package/es/components/header/export.js +0 -5
- package/es/components/header/export.js.map +0 -1
- package/es/components/header/header.js +0 -550
- package/es/components/header/header.js.map +0 -1
- package/es/components/header/styles.js +0 -41
- package/es/components/header/styles.js.map +0 -1
- package/es/components/login/Login.js +0 -86
- package/es/components/login/Login.js.map +0 -1
- package/es/components/login/LoginForm/index.js +0 -132
- package/es/components/login/LoginForm/index.js.map +0 -1
- package/es/components/login/Register.js +0 -96
- package/es/components/login/Register.js.map +0 -1
- package/es/components/login/RegisterForm/index.js +0 -230
- package/es/components/login/RegisterForm/index.js.map +0 -1
- package/es/components/login/jwtService.js +0 -232
- package/es/components/login/jwtService.js.map +0 -1
- package/es/components/molecules/slider/index.js +0 -13
- package/es/components/molecules/slider/index.js.map +0 -1
- package/es/components/molecules/slider/styles.js +0 -2
- package/es/components/molecules/slider/styles.js.map +0 -1
- package/es/components/myprojects/export.js +0 -5
- package/es/components/myprojects/export.js.map +0 -1
- package/es/components/myprojects/index.js +0 -446
- package/es/components/myprojects/index.js.map +0 -1
- package/es/components/myprojects/styles.js +0 -24
- package/es/components/myprojects/styles.js.map +0 -1
- package/es/components/sidebar/custom-accordion.js +0 -38
- package/es/components/sidebar/custom-accordion.js.map +0 -1
- package/es/components/sidebar/export.js +0 -14
- package/es/components/sidebar/export.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -65
- package/es/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -116
- package/es/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -126
- package/es/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -251
- package/es/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -75
- package/es/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/element-editor.js +0 -878
- package/es/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
- package/es/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/panel-element-editor.js +0 -49
- package/es/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
- package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -118
- package/es/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
- package/es/components/sidebar/panel-group-editor.js +0 -211
- package/es/components/sidebar/panel-group-editor.js.map +0 -1
- package/es/components/sidebar/panel-groups.js +0 -267
- package/es/components/sidebar/panel-groups.js.map +0 -1
- package/es/components/sidebar/panel-guides.js +0 -185
- package/es/components/sidebar/panel-guides.js.map +0 -1
- package/es/components/sidebar/panel-layer-elements.js +0 -251
- package/es/components/sidebar/panel-layer-elements.js.map +0 -1
- package/es/components/sidebar/panel-layers.js +0 -340
- package/es/components/sidebar/panel-layers.js.map +0 -1
- package/es/components/sidebar/panel.js +0 -103
- package/es/components/sidebar/panel.js.map +0 -1
- package/es/components/sidebar/sidebar.js +0 -109
- package/es/components/sidebar/sidebar.js.map +0 -1
- package/es/components/sidebar/toolbar-panel.js +0 -164
- package/es/components/sidebar/toolbar-panel.js.map +0 -1
- package/es/components/sign/export.js +0 -6
- package/es/components/sign/export.js.map +0 -1
- package/es/components/sign/main/index.js +0 -560
- package/es/components/sign/main/index.js.map +0 -1
- package/es/components/sign/main/styles.js +0 -20
- package/es/components/sign/main/styles.js.map +0 -1
- package/es/components/style/button.js +0 -114
- package/es/components/style/button.js.map +0 -1
- package/es/components/style/cancel-button.js +0 -23
- package/es/components/style/cancel-button.js.map +0 -1
- package/es/components/style/content-container.js +0 -34
- package/es/components/style/content-container.js.map +0 -1
- package/es/components/style/content-title.js +0 -30
- package/es/components/style/content-title.js.map +0 -1
- package/es/components/style/delete-button.js +0 -26
- package/es/components/style/delete-button.js.map +0 -1
- package/es/components/style/export.js +0 -32
- package/es/components/style/export.js.map +0 -1
- package/es/components/style/form-block.js +0 -25
- package/es/components/style/form-block.js.map +0 -1
- package/es/components/style/form-color-input.js +0 -28
- package/es/components/style/form-color-input.js.map +0 -1
- package/es/components/style/form-label.js +0 -27
- package/es/components/style/form-label.js.map +0 -1
- package/es/components/style/form-number-input.js +0 -190
- package/es/components/style/form-number-input.js.map +0 -1
- package/es/components/style/form-number-input_2.js +0 -207
- package/es/components/style/form-number-input_2.js.map +0 -1
- package/es/components/style/form-select.js +0 -21
- package/es/components/style/form-select.js.map +0 -1
- package/es/components/style/form-slider.js +0 -46
- package/es/components/style/form-slider.js.map +0 -1
- package/es/components/style/form-submit-button.js +0 -27
- package/es/components/style/form-submit-button.js.map +0 -1
- package/es/components/style/form-text-input.js +0 -77
- package/es/components/style/form-text-input.js.map +0 -1
- package/es/components/toolbar/button/ControlButton.js +0 -69
- package/es/components/toolbar/button/ControlButton.js.map +0 -1
- package/es/components/toolbar/button/DirectionButton.js +0 -50
- package/es/components/toolbar/button/DirectionButton.js.map +0 -1
- package/es/components/toolbar/button/RightButton.js +0 -133
- package/es/components/toolbar/button/RightButton.js.map +0 -1
- package/es/components/toolbar/button/ToggleButton.js +0 -59
- package/es/components/toolbar/button/ToggleButton.js.map +0 -1
- package/es/components/toolbar/button/index.js +0 -88
- package/es/components/toolbar/button/index.js.map +0 -1
- package/es/components/toolbar/button/styles.js +0 -14
- package/es/components/toolbar/button/styles.js.map +0 -1
- package/es/components/toolbar/components/DoorStyleMenu.js +0 -105
- package/es/components/toolbar/components/DoorStyleMenu.js.map +0 -1
- package/es/components/toolbar/components/Pricing.js +0 -101
- package/es/components/toolbar/components/Pricing.js.map +0 -1
- package/es/components/toolbar/components/ReviewForQuote.js +0 -476
- package/es/components/toolbar/components/ReviewForQuote.js.map +0 -1
- package/es/components/toolbar/export.js +0 -14
- package/es/components/toolbar/export.js.map +0 -1
- package/es/components/toolbar/main/Alert.js +0 -125
- package/es/components/toolbar/main/Alert.js.map +0 -1
- package/es/components/toolbar/main/TakePictureModal.js +0 -100
- package/es/components/toolbar/main/TakePictureModal.js.map +0 -1
- package/es/components/toolbar/main/confirm-popup.js +0 -88
- package/es/components/toolbar/main/confirm-popup.js.map +0 -1
- package/es/components/toolbar/main/index.js +0 -4612
- package/es/components/toolbar/main/index.js.map +0 -1
- package/es/components/toolbar/main/myComponents.js +0 -118
- package/es/components/toolbar/main/myComponents.js.map +0 -1
- package/es/components/toolbar/main/styles.js +0 -64
- package/es/components/toolbar/main/styles.js.map +0 -1
- package/es/components/toolbar/plugin-item.js +0 -150
- package/es/components/toolbar/plugin-item.js.map +0 -1
- package/es/components/toolbar/popup/appliance/appliance-category/index.js +0 -77
- package/es/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
- package/es/components/toolbar/popup/appliance/choose-appliance/index.js +0 -76
- package/es/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
- package/es/components/toolbar/popup/appliance/index.js +0 -81
- package/es/components/toolbar/popup/appliance/index.js.map +0 -1
- package/es/components/toolbar/popup/autosaveprompt/index.js +0 -91
- package/es/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
- package/es/components/toolbar/popup/autosaveprompt/styles.js +0 -9
- package/es/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -77
- package/es/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/choose-product/index.js +0 -98
- package/es/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
- package/es/components/toolbar/popup/cabinet/index.js +0 -83
- package/es/components/toolbar/popup/cabinet/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/choose-style/index.js +0 -50
- package/es/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/index.js +0 -61
- package/es/components/toolbar/popup/doorStyle/index.js.map +0 -1
- package/es/components/toolbar/popup/doorStyle/style-category/index.js +0 -143
- package/es/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -3
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -119
- package/es/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/index.js +0 -564
- package/es/components/toolbar/popup/downloadsummary/index.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -51
- package/es/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -191
- package/es/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -245
- package/es/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1758
- package/es/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -87
- package/es/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -116
- package/es/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1710
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -175
- package/es/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/showWarranty.js +0 -106
- package/es/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
- package/es/components/toolbar/popup/downloadsummary/styles.js +0 -40
- package/es/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/category/index.js +0 -35
- package/es/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/index.js +0 -47
- package/es/components/toolbar/popup/finishingtouch/index.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/material-edit.js +0 -156
- package/es/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
- package/es/components/toolbar/popup/finishingtouch/product/index.js +0 -56
- package/es/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -116
- package/es/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/index.js +0 -246
- package/es/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -11
- package/es/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/floor-category/index.js +0 -90
- package/es/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
- package/es/components/toolbar/popup/floorplan/index.js +0 -49
- package/es/components/toolbar/popup/floorplan/index.js.map +0 -1
- package/es/components/toolbar/popup/index.js +0 -188
- package/es/components/toolbar/popup/index.js.map +0 -1
- package/es/components/toolbar/popup/newproject/index.js +0 -67
- package/es/components/toolbar/popup/newproject/index.js.map +0 -1
- package/es/components/toolbar/popup/newproject/styles.js +0 -9
- package/es/components/toolbar/popup/newproject/styles.js.map +0 -1
- package/es/components/toolbar/popup/product/appliance.js +0 -65
- package/es/components/toolbar/popup/product/appliance.js.map +0 -1
- package/es/components/toolbar/popup/product/cabinetproduct.js +0 -25
- package/es/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/doorstyle.js +0 -50
- package/es/components/toolbar/popup/product/doorstyle.js.map +0 -1
- package/es/components/toolbar/popup/product/doorstyleproduct.js +0 -51
- package/es/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/floor.js +0 -52
- package/es/components/toolbar/popup/product/floor.js.map +0 -1
- package/es/components/toolbar/popup/product/floorproduct.js +0 -61
- package/es/components/toolbar/popup/product/floorproduct.js.map +0 -1
- package/es/components/toolbar/popup/product/index.js +0 -52
- package/es/components/toolbar/popup/product/index.js.map +0 -1
- package/es/components/toolbar/popup/product/primary.js +0 -63
- package/es/components/toolbar/popup/product/primary.js.map +0 -1
- package/es/components/toolbar/popup/product/productline.js +0 -120
- package/es/components/toolbar/popup/product/productline.js.map +0 -1
- package/es/components/toolbar/popup/product/reviewItem.js +0 -338
- package/es/components/toolbar/popup/product/reviewItem.js.map +0 -1
- package/es/components/toolbar/popup/product/reviewMolding.js +0 -282
- package/es/components/toolbar/popup/product/reviewMolding.js.map +0 -1
- package/es/components/toolbar/popup/product/styles.js +0 -71
- package/es/components/toolbar/popup/product/styles.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/FullPictureForm.js +0 -161
- package/es/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/index.js +0 -508
- package/es/components/toolbar/popup/savedesign/index.js.map +0 -1
- package/es/components/toolbar/popup/savedesign/styles.js +0 -19
- package/es/components/toolbar/popup/savedesign/styles.js.map +0 -1
- package/es/components/toolbar/popup/setDoorStyleOption/index.js +0 -57
- package/es/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
- package/es/components/toolbar/popup/styles.js +0 -98
- package/es/components/toolbar/popup/styles.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -157
- package/es/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -85
- package/es/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -36
- package/es/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/StepDots.js +0 -33
- package/es/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/cart-choice.js +0 -132
- package/es/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -43
- package/es/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/index.js +0 -690
- package/es/components/toolbar/popup/submitforquote/index.js.map +0 -1
- package/es/components/toolbar/popup/submitforquote/styles.js +0 -31
- package/es/components/toolbar/popup/submitforquote/styles.js.map +0 -1
- package/es/components/toolbar/popup/submitprompt/index.js +0 -71
- package/es/components/toolbar/popup/submitprompt/index.js.map +0 -1
- package/es/components/toolbar/popup/submitprompt/styles.js +0 -9
- package/es/components/toolbar/popup/submitprompt/styles.js.map +0 -1
- package/es/components/toolbar/toolbar-button.js +0 -105
- package/es/components/toolbar/toolbar-button.js.map +0 -1
- package/es/components/toolbar/toolbar-load-button.js +0 -29
- package/es/components/toolbar/toolbar-load-button.js.map +0 -1
- package/es/components/toolbar/toolbar-save-button.js +0 -27
- package/es/components/toolbar/toolbar-save-button.js.map +0 -1
- package/es/components/tutorial-view/Modal.js +0 -498
- package/es/components/tutorial-view/Modal.js.map +0 -1
- package/es/components/tutorial-view/styles.js +0 -6
- package/es/components/tutorial-view/styles.js.map +0 -1
- package/es/components/viewer2d/area.js +0 -83
- package/es/components/viewer2d/area.js.map +0 -1
- package/es/components/viewer2d/export.js +0 -32
- package/es/components/viewer2d/export.js.map +0 -1
- package/es/components/viewer2d/grids/grid-horizontal-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grid-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grid-vertical-streak.js +0 -38
- package/es/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
- package/es/components/viewer2d/grids/grids.js +0 -36
- package/es/components/viewer2d/grids/grids.js.map +0 -1
- package/es/components/viewer2d/group.js +0 -54
- package/es/components/viewer2d/group.js.map +0 -1
- package/es/components/viewer2d/item.js +0 -514
- package/es/components/viewer2d/item.js.map +0 -1
- package/es/components/viewer2d/layer.js +0 -165
- package/es/components/viewer2d/layer.js.map +0 -1
- package/es/components/viewer2d/line.js +0 -889
- package/es/components/viewer2d/line.js.map +0 -1
- package/es/components/viewer2d/ruler.js +0 -101
- package/es/components/viewer2d/ruler.js.map +0 -1
- package/es/components/viewer2d/rulerDist.js +0 -147
- package/es/components/viewer2d/rulerDist.js.map +0 -1
- package/es/components/viewer2d/rulerX.js +0 -152
- package/es/components/viewer2d/rulerX.js.map +0 -1
- package/es/components/viewer2d/rulerY.js +0 -154
- package/es/components/viewer2d/rulerY.js.map +0 -1
- package/es/components/viewer2d/scene.js +0 -141
- package/es/components/viewer2d/scene.js.map +0 -1
- package/es/components/viewer2d/snap.js +0 -75
- package/es/components/viewer2d/snap.js.map +0 -1
- package/es/components/viewer2d/state.js +0 -79
- package/es/components/viewer2d/state.js.map +0 -1
- package/es/components/viewer2d/utils.js +0 -163
- package/es/components/viewer2d/utils.js.map +0 -1
- package/es/components/viewer2d/vertex.js +0 -67
- package/es/components/viewer2d/vertex.js.map +0 -1
- package/es/components/viewer2d/viewer2d.js +0 -1402
- package/es/components/viewer2d/viewer2d.js.map +0 -1
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2593
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
- package/es/components/viewer3d/dcm.js +0 -402
- package/es/components/viewer3d/dcm.js.map +0 -1
- package/es/components/viewer3d/fbm.js +0 -415
- package/es/components/viewer3d/fbm.js.map +0 -1
- package/es/components/viewer3d/front3D.js +0 -67
- package/es/components/viewer3d/front3D.js.map +0 -1
- package/es/components/viewer3d/grid-creator.js +0 -26
- package/es/components/viewer3d/grid-creator.js.map +0 -1
- package/es/components/viewer3d/grids/grid-horizontal-streak.js +0 -37
- package/es/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
- package/es/components/viewer3d/grids/grid-streak.js +0 -28
- package/es/components/viewer3d/grids/grid-streak.js.map +0 -1
- package/es/components/viewer3d/grids/grid-vertical-streak.js +0 -37
- package/es/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
- package/es/components/viewer3d/libs/first-person-controls.js +0 -68
- package/es/components/viewer3d/libs/first-person-controls.js.map +0 -1
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1282
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
- package/es/components/viewer3d/libs/mtl-loader.js +0 -358
- package/es/components/viewer3d/libs/mtl-loader.js.map +0 -1
- package/es/components/viewer3d/libs/obj-loader.js +0 -463
- package/es/components/viewer3d/libs/obj-loader.js.map +0 -1
- package/es/components/viewer3d/libs/orbit-controls.js +0 -699
- package/es/components/viewer3d/libs/orbit-controls.js.map +0 -1
- package/es/components/viewer3d/libs/pointer-lock-controls.js +0 -46
- package/es/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
- package/es/components/viewer3d/lrm.js +0 -306
- package/es/components/viewer3d/lrm.js.map +0 -1
- package/es/components/viewer3d/model.js +0 -709
- package/es/components/viewer3d/model.js.map +0 -1
- package/es/components/viewer3d/pointer-lock-navigation.js +0 -116
- package/es/components/viewer3d/pointer-lock-navigation.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/itemRect.js +0 -62
- package/es/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/layer3D.js +0 -496
- package/es/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/ruler3D.js +0 -228
- package/es/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/scene3D.js +0 -62
- package/es/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
- package/es/components/viewer3d/ruler-utils/state3D.js +0 -19
- package/es/components/viewer3d/ruler-utils/state3D.js.map +0 -1
- package/es/components/viewer3d/scene-creator.js +0 -3607
- package/es/components/viewer3d/scene-creator.js.map +0 -1
- package/es/components/viewer3d/three-memory-cleaner.js +0 -52
- package/es/components/viewer3d/three-memory-cleaner.js.map +0 -1
- package/es/components/viewer3d/viewer3d-first-person.js +0 -316
- package/es/components/viewer3d/viewer3d-first-person.js.map +0 -1
- package/es/components/viewer3d/viewer3d.js +0 -2504
- package/es/components/viewer3d/viewer3d.js.map +0 -1
- package/es/components/wizardstep/button/styles.js +0 -60
- package/es/components/wizardstep/button/styles.js.map +0 -1
- package/es/components/wizardstep/export.js +0 -5
- package/es/components/wizardstep/export.js.map +0 -1
- package/es/components/wizardstep/index.js +0 -971
- package/es/components/wizardstep/index.js.map +0 -1
- package/es/components/wizardstep/styles.js +0 -61
- package/es/components/wizardstep/styles.js.map +0 -1
- package/es/components/wizardstep/wizardstep-content-button.js +0 -217
- package/es/components/wizardstep/wizardstep-content-button.js.map +0 -1
- package/es/components/wizardstep/wizardstep-toggle-button.js +0 -126
- package/es/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
- package/es/constants.js +0 -637
- package/es/constants.js.map +0 -1
- package/es/hooks/useCheckCart.js +0 -53
- package/es/hooks/useCheckCart.js.map +0 -1
- package/es/hooks/useGetPricesBySku.js +0 -74
- package/es/hooks/useGetPricesBySku.js.map +0 -1
- package/es/hooks/useValidateToken.js +0 -201
- package/es/hooks/useValidateToken.js.map +0 -1
- package/es/index.js +0 -17
- package/es/index.js.map +0 -1
- package/es/models.js +0 -511
- package/es/models.js.map +0 -1
- package/es/plugins/SVGLoader.js +0 -1413
- package/es/plugins/SVGLoader.js.map +0 -1
- package/es/plugins/autosave.js +0 -34
- package/es/plugins/autosave.js.map +0 -1
- package/es/plugins/console-debugger.js +0 -38
- package/es/plugins/console-debugger.js.map +0 -1
- package/es/plugins/export.js +0 -10
- package/es/plugins/export.js.map +0 -1
- package/es/plugins/keyboard.js +0 -102
- package/es/plugins/keyboard.js.map +0 -1
- package/es/reducers/areas-reducer.js +0 -13
- package/es/reducers/areas-reducer.js.map +0 -1
- package/es/reducers/export.js +0 -26
- package/es/reducers/export.js.map +0 -1
- package/es/reducers/groups-reducer.js +0 -39
- package/es/reducers/groups-reducer.js.map +0 -1
- package/es/reducers/holes-reducer.js +0 -63
- package/es/reducers/holes-reducer.js.map +0 -1
- package/es/reducers/items-reducer.js +0 -144
- package/es/reducers/items-reducer.js.map +0 -1
- package/es/reducers/lines-reducer.js +0 -46
- package/es/reducers/lines-reducer.js.map +0 -1
- package/es/reducers/project-reducer.js +0 -130
- package/es/reducers/project-reducer.js.map +0 -1
- package/es/reducers/reducer.js +0 -20
- package/es/reducers/reducer.js.map +0 -1
- package/es/reducers/scene-reducer.js +0 -29
- package/es/reducers/scene-reducer.js.map +0 -1
- package/es/reducers/user-reducer.js +0 -42
- package/es/reducers/user-reducer.js.map +0 -1
- package/es/reducers/vertices-reducer.js +0 -20
- package/es/reducers/vertices-reducer.js.map +0 -1
- package/es/reducers/viewer2d-reducer.js +0 -76
- package/es/reducers/viewer2d-reducer.js.map +0 -1
- package/es/reducers/viewer3d-reducer.js +0 -57
- package/es/reducers/viewer3d-reducer.js.map +0 -1
- package/es/shared-style.js +0 -67
- package/es/shared-style.js.map +0 -1
- package/es/styles/export.js +0 -6
- package/es/styles/export.js.map +0 -1
- package/es/styles/tabs.css +0 -40
- package/es/translator/en.js +0 -105
- package/es/translator/en.js.map +0 -1
- package/es/translator/it.js +0 -80
- package/es/translator/it.js.map +0 -1
- package/es/translator/ru.js +0 -80
- package/es/translator/ru.js.map +0 -1
- package/es/translator/translator.js +0 -85
- package/es/translator/translator.js.map +0 -1
- package/es/utils/browser.js +0 -34
- package/es/utils/browser.js.map +0 -1
- package/es/utils/email-validator.js +0 -5
- package/es/utils/email-validator.js.map +0 -1
- package/es/utils/export.js +0 -26
- package/es/utils/export.js.map +0 -1
- package/es/utils/geometry.js +0 -2237
- package/es/utils/geometry.js.map +0 -1
- package/es/utils/get-edges-of-subgraphs.js +0 -27
- package/es/utils/get-edges-of-subgraphs.js.map +0 -1
- package/es/utils/graph-cycles.js +0 -239
- package/es/utils/graph-cycles.js.map +0 -1
- package/es/utils/graph-inner-cycles.js +0 -47
- package/es/utils/graph-inner-cycles.js.map +0 -1
- package/es/utils/graph.js +0 -150
- package/es/utils/graph.js.map +0 -1
- package/es/utils/helper.js +0 -337
- package/es/utils/helper.js.map +0 -1
- package/es/utils/history.js +0 -30
- package/es/utils/history.js.map +0 -1
- package/es/utils/id-broker.js +0 -20
- package/es/utils/id-broker.js.map +0 -1
- package/es/utils/logger.js +0 -9
- package/es/utils/logger.js.map +0 -1
- package/es/utils/math.js +0 -51
- package/es/utils/math.js.map +0 -1
- package/es/utils/molding.js +0 -840
- package/es/utils/molding.js.map +0 -1
- package/es/utils/name-generator.js +0 -19
- package/es/utils/name-generator.js.map +0 -1
- package/es/utils/objects-utils.js +0 -51
- package/es/utils/objects-utils.js.map +0 -1
- package/es/utils/phone-validator.js +0 -5
- package/es/utils/phone-validator.js.map +0 -1
- package/es/utils/process-black-list.js +0 -19
- package/es/utils/process-black-list.js.map +0 -1
- package/es/utils/react-if.js +0 -19
- package/es/utils/react-if.js.map +0 -1
- package/es/utils/snap-scene.js +0 -100
- package/es/utils/snap-scene.js.map +0 -1
- package/es/utils/snap.js +0 -238
- package/es/utils/snap.js.map +0 -1
- package/es/utils/threeCSG.es6.js +0 -499
- package/es/utils/threeCSG.es6.js.map +0 -1
- package/es/version.js +0 -2
- package/es/version.js.map +0 -1
- /package/{es → src}/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
- /package/{es → src}/catalog/areas/area/textures/grass.jpg +0 -0
- /package/{es → src}/catalog/areas/area/textures/parquet.jpg +0 -0
- /package/{es → src}/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
- /package/{es → src}/catalog/areas/area/textures/tile1.jpg +0 -0
- /package/{es → src}/catalog/back.png +0 -0
- /package/{es → src}/catalog/doors.png +0 -0
- /package/{es → src}/catalog/doorways.png +0 -0
- /package/{es → src}/catalog/envMap/nx.hdr +0 -0
- /package/{es → src}/catalog/envMap/ny.hdr +0 -0
- /package/{es → src}/catalog/envMap/nz.hdr +0 -0
- /package/{es → src}/catalog/envMap/px.hdr +0 -0
- /package/{es → src}/catalog/envMap/py.hdr +0 -0
- /package/{es → src}/catalog/envMap/pz.hdr +0 -0
- /package/{es → src}/catalog/holes/door-double/door_double.png +0 -0
- /package/{es → src}/catalog/holes/door-panic/panicDoor.png +0 -0
- /package/{es → src}/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
- /package/{es → src}/catalog/holes/gate/gate.jpg +0 -0
- /package/{es → src}/catalog/holes/window-clear/texture.png +0 -0
- /package/{es → src}/catalog/holes/window-cross/texture.png +0 -0
- /package/{es → src}/catalog/holes/window-double-hung/texture.png +0 -0
- /package/{es → src}/catalog/holes/window-vertical/texture.png +0 -0
- /package/{es → src}/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/bricks.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/bricks2.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/bricks3.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/morden-normal.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/morden.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/painted-normal.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/painted.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/textures/plaster.jpg +0 -0
- /package/{es → src}/catalog/lines/wall/wall.png +0 -0
- /package/{es → src}/catalog/molding/molding-dcm/texture.png +0 -0
- /package/{es → src}/catalog/molding/molding-fbm/texture.png +0 -0
- /package/{es → src}/catalog/molding/molding-lrm/texture.png +0 -0
- /package/{es → src}/catalog/windows.png +0 -0
- /package/{es → src}/components/header/header.style.css +0 -0
- /package/{es → src}/components/login/style.css +0 -0
- /package/{es → src}/components/login/style.scss +0 -0
- /package/{es → src}/components/molecules/slider/styles.scss +0 -0
- /package/{es → src}/components/toolbar/main/lShaped.json +0 -0
- /package/{es → src}/components/toolbar/main/longNarrow.json +0 -0
- /package/{es → src}/components/toolbar/main/oRectangle.json +0 -0
- /package/{es → src}/components/toolbar/main/rectangle.json +0 -0
- /package/{es → src}/components/toolbar/main/style.css +0 -0
- /package/{es → src}/components/toolbar/popup/autosaveprompt/styles.css +0 -0
- /package/{es → src}/components/toolbar/popup/downloadsummary/styles.css +0 -0
- /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/lShaped.json +0 -0
- /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +0 -0
- /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +0 -0
- /package/{es → src}/components/toolbar/popup/floorplan/choose-floor/rectangle.json +0 -0
- /package/{es → src}/components/toolbar/popup/newproject/styles.css +0 -0
- /package/{es → src}/components/toolbar/popup/product/style.css +0 -0
- /package/{es → src}/components/toolbar/popup/savedesign/savedesign.style.css +0 -0
- /package/{es → src}/components/toolbar/popup/submitforquote/styles.css +0 -0
- /package/{es → src}/components/toolbar/popup/submitprompt/styles.css +0 -0
- /package/{es → src}/components/tutorial-view/style.css +0 -0
package/es/utils/geometry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.js","names":["toFixedFloat","fAbs","BASE_CABINET_LAYOUTPOS","EPSILON","LINE_THICKNESS","MEPSILON","OVERLAP_INCLUDED","OVERLAP_LINK","OVERLAP_NONE","OVERLAP_SAME","OVERLAP_SOME","WALL_CABINET_LAYOUTPOS","UNIT_ANGLE","MIN_ANGLE_DISALLOW_DRAW_WALL","convert","Three","returnReplaceableDeepSearchType","isEmpty","MathUtils","compareVertices","v0","v1","x","y","minVertex","maxVertex","orderVertices","vertices","sort","pointsDistance","x0","y0","x1","y1","diff_x","diff_y","Math","sqrt","verticesDistance","v2","horizontalLine","a","b","c","almostEqual","abs","verticalLine","upcrossLine","downcrossLine","linePassingThroughTwoPoints","x2","y2","Error","getNormaline","lineFunction","distancePointFromLine","closestPointFromLine","denom","twoLinesIntersection","j","k","l","angularCoefficientsDiff","undefined","twoLineSegmentsIntersection","p1","p2","p3","p4","x3","y3","x4","y4","numA","numB","comparator","pa","pb","line0","line1","toJS","_sort","lineA","lineB","_sort2","_slicedToArray","lineSX","lineDX","type","uA","uB","point","distancePointFromLineSegment","xp","yp","A","B","C","D","dot","len_sq","param","xx","yy","dx","dy","isPointOnLineSegment","maxDistance","arguments","length","closestPointFromLineSegment","m","q","mi","qi","pointPositionOnLineSegment","distance","offset","mapRange","value","low1","high1","low2","high2","angleBetweenTwoPointsAndOrigin","atan2","PI","angleBetweenTwoPoints","angleBetweenTwoLines","line","drawingLine","points","lv","Array","isArray","dv","_iterator","_createForOfIteratorHelper","_step","s","n","done","vt","includes","push","err","e","f","_iterator2","_step2","_iterator3","_step3","_points$slice$map","slice","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","has","add","snapAngleByUnit","lineAngle","dragVertexId","tx","ty","absAngle","rest","missAngle","originVerId","findIndex","vertice","ox","oy","rotatePointAroundPoint","resPoint","absAngleBetweenTwoPoints","samePoints","_ref","_ref2","sameDistances","dis1","dis2","sameMPoints","_ref3","_ref4","sameMDistances","isPointInRect","rect","result","i","pos1","pos2","extendLine","newDistance","precision","rad","cos","sin","roundVertex","set","get","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","forEach","val","rotation","sizeinfo","properties","widthUnit","heightUnit","depthUnit","_objectSpread","info","from","to","unit","doorStyle","otherItem","needSnap","calcrect","isSnappedLine","cur","others","getAllItemSpecified","filter","_scene$layers","_scene$layers$get","call","_cat$obj","findCatalogElement","props","getSize","key","_props$getIn","obj","category","elementName","variants","toLowerCase","deepVariants","Boolean","allCandidates","concat","_toConsumableArray","getElement","_iterator6","_step6","name","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","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","t","u","sum","lineLen","v0Len","vPt","xE","yE","calcSnap","allItemRect","allRect","calcSnap2","calcCreateSnap","polygonPoint","ndist","allCurSnap","getAllCurSnap","getSnap","snapdist","inside","edist","apply","Infinity","dist","_snap$rotRad","crot","calcSnap1","nx","ny","cursize","curitem","nearRect","minDist","clone_point","nRot","containrect","filter_func","tempSnap","intersects","sku_number","startsWith","offset3inch","endsWith","t_val","isItemRectSect","validInterSect","isWallRectSect","calcSnap3","p0","v3to0","fDot","o","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","getHoleItems","holeItems","altitude","curItem","othItem","blSnap","heightFromFloor","curFloor","otherFloor","hasOwnProperty","long_name","isFrontWall","isBackWall","isLeftWall","isRightWall","relationshipOfTwoOverlappedLines","srcLine","destLine","INFINITY","dx1","dy1","a1","b1","dx2","dy2","a2","b2","sk1","sk2","ek1","ek2","sk","ek","linkedLine","trimmedSegment1","trimmedSegment2","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,27 +0,0 @@
|
|
|
1
|
-
function getEdgesOfSubgraphs(subgraphs, graph) {
|
|
2
|
-
var edges = [];
|
|
3
|
-
subgraphs.forEach(function (component) {
|
|
4
|
-
edges.push([]);
|
|
5
|
-
var vertices = getVerticesFromBiconnectedComponent(component);
|
|
6
|
-
var inserted = [];
|
|
7
|
-
vertices.forEach(function (vertex) {
|
|
8
|
-
var adjacents = graph.adj[vertex];
|
|
9
|
-
adjacents.forEach(function (adj) {
|
|
10
|
-
if (vertex <= adj && vertices.has(adj)) {
|
|
11
|
-
edges[edges.length - 1].push([vertex, adj]);
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
return edges;
|
|
17
|
-
}
|
|
18
|
-
function getVerticesFromBiconnectedComponent(component) {
|
|
19
|
-
var vertices = new Set();
|
|
20
|
-
component.forEach(function (edge) {
|
|
21
|
-
vertices.add(edge.u);
|
|
22
|
-
vertices.add(edge.v);
|
|
23
|
-
});
|
|
24
|
-
return vertices;
|
|
25
|
-
}
|
|
26
|
-
module.exports = getEdgesOfSubgraphs;
|
|
27
|
-
//# 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":[]}
|