@pascal-app/nodes 1.0.0-beta.4 → 1.0.0
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/LICENSE +21 -0
- package/dist/block/commands.d.ts +68 -0
- package/dist/block/commands.d.ts.map +1 -0
- package/dist/block/commands.js +1144 -0
- package/dist/block/contextual-help.d.ts +3 -0
- package/dist/block/contextual-help.d.ts.map +1 -0
- package/dist/block/contextual-help.js +38 -0
- package/dist/block/definition.d.ts +8 -0
- package/dist/block/definition.d.ts.map +1 -0
- package/dist/block/definition.js +126 -0
- package/dist/block/edit-session.d.ts +16 -0
- package/dist/block/edit-session.d.ts.map +1 -0
- package/dist/block/edit-session.js +32 -0
- package/dist/block/face-host.d.ts +3 -0
- package/dist/block/face-host.d.ts.map +1 -0
- package/dist/block/face-host.js +178 -0
- package/dist/block/floorplan.d.ts +3 -0
- package/dist/block/floorplan.d.ts.map +1 -0
- package/dist/block/floorplan.js +43 -0
- package/dist/block/geometry-snap.d.ts +18 -0
- package/dist/block/geometry-snap.d.ts.map +1 -0
- package/dist/block/geometry-snap.js +137 -0
- package/dist/block/geometry.d.ts +11 -0
- package/dist/block/geometry.d.ts.map +1 -0
- package/dist/block/geometry.js +146 -0
- package/dist/block/gesture-wheel.d.ts +8 -0
- package/dist/block/gesture-wheel.d.ts.map +1 -0
- package/dist/block/gesture-wheel.js +7 -0
- package/dist/block/interaction-sfx.d.ts +3 -0
- package/dist/block/interaction-sfx.d.ts.map +1 -0
- package/dist/block/interaction-sfx.js +16 -0
- package/dist/block/last-operation.d.ts +48 -0
- package/dist/block/last-operation.d.ts.map +1 -0
- package/dist/block/last-operation.js +120 -0
- package/dist/block/loop-cut-interaction.d.ts +5 -0
- package/dist/block/loop-cut-interaction.d.ts.map +1 -0
- package/dist/block/loop-cut-interaction.js +13 -0
- package/dist/block/material-slots.d.ts +61 -0
- package/dist/block/material-slots.d.ts.map +1 -0
- package/dist/block/material-slots.js +131 -0
- package/dist/block/modal-face-operation.d.ts +13 -0
- package/dist/block/modal-face-operation.d.ts.map +1 -0
- package/dist/block/modal-face-operation.js +40 -0
- package/dist/block/modal-session.d.ts +15 -0
- package/dist/block/modal-session.d.ts.map +1 -0
- package/dist/block/modal-session.js +40 -0
- package/dist/block/modal-transform.d.ts +30 -0
- package/dist/block/modal-transform.d.ts.map +1 -0
- package/dist/block/modal-transform.js +144 -0
- package/dist/block/paint.d.ts +3 -0
- package/dist/block/paint.d.ts.map +1 -0
- package/dist/block/paint.js +136 -0
- package/dist/block/panel.d.ts +2 -0
- package/dist/block/panel.d.ts.map +1 -0
- package/dist/block/panel.js +234 -0
- package/dist/block/parametrics.d.ts +4 -0
- package/dist/block/parametrics.d.ts.map +1 -0
- package/dist/block/parametrics.js +9 -0
- package/dist/block/preview.d.ts +6 -0
- package/dist/block/preview.d.ts.map +1 -0
- package/dist/block/preview.js +46 -0
- package/dist/block/rotation-drag.d.ts +5 -0
- package/dist/block/rotation-drag.d.ts.map +1 -0
- package/dist/block/rotation-drag.js +18 -0
- package/dist/block/schema.d.ts +2 -0
- package/dist/block/schema.d.ts.map +1 -0
- package/dist/block/schema.js +1 -0
- package/dist/block/selection-geometry.d.ts +9 -0
- package/dist/block/selection-geometry.d.ts.map +1 -0
- package/dist/block/selection-geometry.js +31 -0
- package/dist/block/selection-model.d.ts +17 -0
- package/dist/block/selection-model.d.ts.map +1 -0
- package/dist/block/selection-model.js +84 -0
- package/dist/block/selection.d.ts +4 -0
- package/dist/block/selection.d.ts.map +1 -0
- package/dist/block/selection.js +2570 -0
- package/dist/block/slots.d.ts +4 -0
- package/dist/block/slots.d.ts.map +1 -0
- package/dist/block/slots.js +17 -0
- package/dist/block/tool.d.ts +3 -0
- package/dist/block/tool.d.ts.map +1 -0
- package/dist/block/tool.js +174 -0
- package/dist/block/toolbar-state.d.ts +46 -0
- package/dist/block/toolbar-state.d.ts.map +1 -0
- package/dist/block/toolbar-state.js +67 -0
- package/dist/block/use-block-face-operation.d.ts +39 -0
- package/dist/block/use-block-face-operation.d.ts.map +1 -0
- package/dist/block/use-block-face-operation.js +218 -0
- package/dist/box-vent/definition.d.ts.map +1 -1
- package/dist/box-vent/definition.js +8 -5
- package/dist/box-vent/geometry.d.ts +4 -0
- package/dist/box-vent/geometry.d.ts.map +1 -1
- package/dist/box-vent/geometry.js +76 -44
- package/dist/box-vent/paint.d.ts +4 -0
- package/dist/box-vent/paint.d.ts.map +1 -0
- package/dist/box-vent/paint.js +40 -0
- package/dist/box-vent/panel.js +1 -1
- package/dist/box-vent/parametrics.js +3 -3
- package/dist/box-vent/renderer.d.ts.map +1 -1
- package/dist/box-vent/renderer.js +29 -10
- package/dist/cabinet/compartment-card.d.ts.map +1 -1
- package/dist/cabinet/compartment-card.js +11 -3
- package/dist/cabinet/continuous-placement.d.ts +3 -0
- package/dist/cabinet/continuous-placement.d.ts.map +1 -1
- package/dist/cabinet/continuous-placement.js +6 -0
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +400 -54
- package/dist/cabinet/flame-index.d.ts +3 -0
- package/dist/cabinet/flame-index.d.ts.map +1 -0
- package/dist/cabinet/flame-index.js +13 -0
- package/dist/cabinet/floorplan-move.d.ts.map +1 -1
- package/dist/cabinet/floorplan-move.js +91 -22
- package/dist/cabinet/geometry/fridge.d.ts.map +1 -1
- package/dist/cabinet/geometry/fridge.js +25 -1
- package/dist/cabinet/geometry/fronts.d.ts +4 -0
- package/dist/cabinet/geometry/fronts.d.ts.map +1 -1
- package/dist/cabinet/geometry/fronts.js +1 -1
- package/dist/cabinet/geometry/run.d.ts.map +1 -1
- package/dist/cabinet/geometry/run.js +19 -1
- package/dist/cabinet/geometry.d.ts.map +1 -1
- package/dist/cabinet/geometry.js +63 -1
- package/dist/cabinet/index.d.ts +1 -0
- package/dist/cabinet/index.d.ts.map +1 -1
- package/dist/cabinet/index.js +1 -0
- package/dist/cabinet/insertion.d.ts +19 -0
- package/dist/cabinet/insertion.d.ts.map +1 -0
- package/dist/cabinet/insertion.js +49 -0
- package/dist/cabinet/move-frame.d.ts.map +1 -1
- package/dist/cabinet/move-frame.js +68 -2
- package/dist/cabinet/panel-context.d.ts +7 -0
- package/dist/cabinet/panel-context.d.ts.map +1 -0
- package/dist/cabinet/panel-context.js +16 -0
- package/dist/cabinet/panel-visibility.d.ts +9 -0
- package/dist/cabinet/panel-visibility.d.ts.map +1 -0
- package/dist/cabinet/panel-visibility.js +26 -0
- package/dist/cabinet/panel.d.ts.map +1 -1
- package/dist/cabinet/panel.js +221 -37
- package/dist/cabinet/placement-dimensions.d.ts +42 -0
- package/dist/cabinet/placement-dimensions.d.ts.map +1 -0
- package/dist/cabinet/placement-dimensions.js +227 -0
- package/dist/cabinet/placement-snap.d.ts +21 -1
- package/dist/cabinet/placement-snap.d.ts.map +1 -1
- package/dist/cabinet/placement-snap.js +48 -6
- package/dist/cabinet/preset-width-debt.d.ts +7 -0
- package/dist/cabinet/preset-width-debt.d.ts.map +1 -0
- package/dist/cabinet/preset-width-debt.js +45 -0
- package/dist/cabinet/presets.d.ts.map +1 -1
- package/dist/cabinet/presets.js +14 -13
- package/dist/cabinet/profiles.d.ts +14 -0
- package/dist/cabinet/profiles.d.ts.map +1 -0
- package/dist/cabinet/profiles.js +30 -0
- package/dist/cabinet/quick-actions.d.ts.map +1 -1
- package/dist/cabinet/quick-actions.js +8 -24
- package/dist/cabinet/reveals.d.ts +37 -0
- package/dist/cabinet/reveals.d.ts.map +1 -0
- package/dist/cabinet/reveals.js +13 -0
- package/dist/cabinet/run-layout.d.ts +90 -4
- package/dist/cabinet/run-layout.d.ts.map +1 -1
- package/dist/cabinet/run-layout.js +408 -23
- package/dist/cabinet/run-ops.d.ts +202 -10
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/run-ops.js +520 -33
- package/dist/cabinet/run-panel.d.ts +6 -2
- package/dist/cabinet/run-panel.d.ts.map +1 -1
- package/dist/cabinet/run-panel.js +285 -108
- package/dist/cabinet/stack-transitions.d.ts.map +1 -1
- package/dist/cabinet/stack-transitions.js +35 -24
- package/dist/cabinet/stack.d.ts +169 -1
- package/dist/cabinet/stack.d.ts.map +1 -1
- package/dist/cabinet/stack.js +57 -18
- package/dist/cabinet/system.d.ts +2 -0
- package/dist/cabinet/system.d.ts.map +1 -1
- package/dist/cabinet/system.js +28 -8
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +616 -91
- package/dist/cabinet/validation.d.ts +27 -0
- package/dist/cabinet/validation.d.ts.map +1 -0
- package/dist/cabinet/validation.js +56 -0
- package/dist/cabinet/wall-height-presets.d.ts +12 -0
- package/dist/cabinet/wall-height-presets.d.ts.map +1 -0
- package/dist/cabinet/wall-height-presets.js +15 -0
- package/dist/cabinet/wall-snap.d.ts +27 -3
- package/dist/cabinet/wall-snap.d.ts.map +1 -1
- package/dist/cabinet/wall-snap.js +278 -62
- package/dist/cabinet/widths.d.ts +10 -0
- package/dist/cabinet/widths.d.ts.map +1 -0
- package/dist/cabinet/widths.js +13 -0
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.js +7 -1
- package/dist/ceiling/floorplan-affordances.d.ts +8 -8
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +0 -1
- package/dist/ceiling/panel.d.ts.map +1 -1
- package/dist/ceiling/panel.js +8 -2
- package/dist/ceiling/parametrics.js +1 -1
- package/dist/chimney/definition.js +1 -1
- package/dist/chimney/panel.js +1 -1
- package/dist/chimney/parametrics.js +3 -3
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.js +22 -4
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +37 -7
- package/dist/column/parametrics.d.ts.map +1 -1
- package/dist/column/parametrics.js +5 -3
- package/dist/column/tool.d.ts.map +1 -1
- package/dist/column/tool.js +50 -14
- package/dist/cupola/definition.d.ts.map +1 -1
- package/dist/cupola/definition.js +15 -6
- package/dist/cupola/geometry.d.ts +6 -0
- package/dist/cupola/geometry.d.ts.map +1 -1
- package/dist/cupola/geometry.js +60 -13
- package/dist/cupola/paint.d.ts +4 -0
- package/dist/cupola/paint.d.ts.map +1 -0
- package/dist/cupola/paint.js +39 -0
- package/dist/cupola/panel.js +1 -1
- package/dist/cupola/parametrics.js +3 -3
- package/dist/cupola/renderer.d.ts.map +1 -1
- package/dist/cupola/renderer.js +27 -8
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +1 -1
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +86 -32
- package/dist/door/panel.d.ts.map +1 -1
- package/dist/door/panel.js +1 -1
- package/dist/door/parametrics.js +2 -2
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +16 -4
- package/dist/dormer/csg-geometry.d.ts +6 -42
- package/dist/dormer/csg-geometry.d.ts.map +1 -1
- package/dist/dormer/csg-geometry.js +38 -209
- package/dist/dormer/definition.d.ts +4 -12
- package/dist/dormer/definition.d.ts.map +1 -1
- package/dist/dormer/definition.js +18 -193
- package/dist/dormer/floorplan.d.ts +3 -3
- package/dist/dormer/floorplan.d.ts.map +1 -1
- package/dist/dormer/floorplan.js +6 -17
- package/dist/dormer/geometry.d.ts +5 -24
- package/dist/dormer/geometry.d.ts.map +1 -1
- package/dist/dormer/geometry.js +64 -41
- package/dist/dormer/index.d.ts +1 -1
- package/dist/dormer/index.d.ts.map +1 -1
- package/dist/dormer/index.js +1 -1
- package/dist/dormer/move-tool.d.ts.map +1 -1
- package/dist/dormer/move-tool.js +31 -3
- package/dist/dormer/panel-windows-section.d.ts +9 -0
- package/dist/dormer/panel-windows-section.d.ts.map +1 -0
- package/dist/dormer/panel-windows-section.js +7 -0
- package/dist/dormer/panel.d.ts.map +1 -1
- package/dist/dormer/panel.js +100 -18
- package/dist/dormer/parametrics.d.ts.map +1 -1
- package/dist/dormer/parametrics.js +8 -77
- package/dist/dormer/placement-guides.d.ts.map +1 -1
- package/dist/dormer/placement-guides.js +5 -4
- package/dist/dormer/preview.d.ts.map +1 -1
- package/dist/dormer/preview.js +9 -1
- package/dist/dormer/renderer.d.ts.map +1 -1
- package/dist/dormer/renderer.js +24 -26
- package/dist/dormer/tool.d.ts.map +1 -1
- package/dist/dormer/tool.js +3 -1
- package/dist/dormer/window-layout.d.ts +15 -0
- package/dist/dormer/window-layout.d.ts.map +1 -0
- package/dist/dormer/window-layout.js +59 -0
- package/dist/downspout/definition.d.ts.map +1 -1
- package/dist/downspout/definition.js +17 -4
- package/dist/downspout/geometry.d.ts.map +1 -1
- package/dist/downspout/geometry.js +10 -0
- package/dist/downspout/inspector-editors.d.ts.map +1 -1
- package/dist/downspout/inspector-editors.js +9 -1
- package/dist/downspout/parametrics.d.ts.map +1 -1
- package/dist/downspout/parametrics.js +2 -1
- package/dist/downspout/renderer.d.ts.map +1 -1
- package/dist/downspout/renderer.js +19 -3
- package/dist/downspout/system.d.ts +7 -0
- package/dist/downspout/system.d.ts.map +1 -0
- package/dist/downspout/system.js +114 -0
- package/dist/duct-fitting/accessory-geometry.d.ts +4 -0
- package/dist/duct-fitting/accessory-geometry.d.ts.map +1 -0
- package/dist/duct-fitting/accessory-geometry.js +47 -0
- package/dist/duct-fitting/definition.d.ts.map +1 -1
- package/dist/duct-fitting/definition.js +11 -1
- package/dist/duct-fitting/floorplan.d.ts.map +1 -1
- package/dist/duct-fitting/floorplan.js +8 -0
- package/dist/duct-fitting/geometry.d.ts.map +1 -1
- package/dist/duct-fitting/geometry.js +52 -38
- package/dist/duct-fitting/parametrics.d.ts.map +1 -1
- package/dist/duct-fitting/parametrics.js +78 -15
- package/dist/duct-fitting/ports.d.ts +1 -0
- package/dist/duct-fitting/ports.d.ts.map +1 -1
- package/dist/duct-fitting/ports.js +46 -0
- package/dist/duct-fitting/tool.d.ts +19 -0
- package/dist/duct-fitting/tool.d.ts.map +1 -1
- package/dist/duct-fitting/tool.js +126 -34
- package/dist/duct-segment/continuation.d.ts +21 -0
- package/dist/duct-segment/continuation.d.ts.map +1 -0
- package/dist/duct-segment/continuation.js +167 -0
- package/dist/duct-segment/definition.d.ts.map +1 -1
- package/dist/duct-segment/definition.js +19 -18
- package/dist/duct-segment/floorplan.d.ts.map +1 -1
- package/dist/duct-segment/floorplan.js +43 -0
- package/dist/duct-segment/geometry.d.ts.map +1 -1
- package/dist/duct-segment/geometry.js +3 -0
- package/dist/duct-segment/move-tool.d.ts.map +1 -1
- package/dist/duct-segment/move-tool.js +33 -6
- package/dist/duct-segment/parametrics.d.ts.map +1 -1
- package/dist/duct-segment/parametrics.js +45 -1
- package/dist/duct-segment/selection.d.ts +3 -4
- package/dist/duct-segment/selection.d.ts.map +1 -1
- package/dist/duct-segment/selection.js +186 -158
- package/dist/duct-segment/tool.d.ts +37 -0
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +305 -678
- package/dist/duct-terminal/parametrics.js +2 -2
- package/dist/duct-terminal/tool.d.ts.map +1 -1
- package/dist/duct-terminal/tool.js +37 -7
- package/dist/elevator/definition.d.ts.map +1 -1
- package/dist/elevator/definition.js +2 -0
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +7 -7
- package/dist/elevator/system.d.ts.map +1 -1
- package/dist/elevator/system.js +10 -1
- package/dist/eyebrow-vent/definition.d.ts.map +1 -1
- package/dist/eyebrow-vent/definition.js +8 -5
- package/dist/eyebrow-vent/geometry.d.ts +4 -0
- package/dist/eyebrow-vent/geometry.d.ts.map +1 -1
- package/dist/eyebrow-vent/geometry.js +60 -15
- package/dist/eyebrow-vent/paint.d.ts +4 -0
- package/dist/eyebrow-vent/paint.d.ts.map +1 -0
- package/dist/eyebrow-vent/paint.js +33 -0
- package/dist/eyebrow-vent/panel.js +1 -1
- package/dist/eyebrow-vent/parametrics.js +3 -3
- package/dist/eyebrow-vent/renderer.d.ts.map +1 -1
- package/dist/eyebrow-vent/renderer.js +27 -8
- package/dist/fence/curve-tool.d.ts.map +1 -1
- package/dist/fence/curve-tool.js +14 -9
- package/dist/fence/definition.d.ts.map +1 -1
- package/dist/fence/definition.js +2 -1
- package/dist/fence/floorplan-affordances.d.ts +1 -0
- package/dist/fence/floorplan-affordances.d.ts.map +1 -1
- package/dist/fence/floorplan-affordances.js +30 -1
- package/dist/fence/floorplan.d.ts.map +1 -1
- package/dist/fence/floorplan.js +14 -0
- package/dist/fence/move-control-point-tool.d.ts.map +1 -1
- package/dist/fence/move-control-point-tool.js +13 -8
- package/dist/fence/move-tangent-tool.d.ts.map +1 -1
- package/dist/fence/move-tangent-tool.js +13 -8
- package/dist/fence/parametrics.js +3 -3
- package/dist/fence/tool.d.ts.map +1 -1
- package/dist/fence/tool.js +55 -31
- package/dist/gutter/corner-mitre.d.ts.map +1 -1
- package/dist/gutter/corner-mitre.js +47 -7
- package/dist/gutter/definition.d.ts.map +1 -1
- package/dist/gutter/definition.js +23 -13
- package/dist/gutter/eave-align.d.ts.map +1 -1
- package/dist/gutter/eave-align.js +10 -0
- package/dist/gutter/eave-snap.d.ts +1 -1
- package/dist/gutter/eave-snap.d.ts.map +1 -1
- package/dist/gutter/eave-snap.js +10 -23
- package/dist/gutter/geometry.d.ts.map +1 -1
- package/dist/gutter/geometry.js +126 -8
- package/dist/gutter/outlet-lookup.d.ts.map +1 -1
- package/dist/gutter/outlet-lookup.js +22 -1
- package/dist/gutter/paint.d.ts +3 -0
- package/dist/gutter/paint.d.ts.map +1 -0
- package/dist/gutter/paint.js +6 -0
- package/dist/gutter/parametrics.d.ts.map +1 -1
- package/dist/gutter/parametrics.js +4 -1
- package/dist/gutter/renderer.d.ts.map +1 -1
- package/dist/gutter/renderer.js +63 -7
- package/dist/gutter/trim-clip.d.ts +3 -0
- package/dist/gutter/trim-clip.d.ts.map +1 -0
- package/dist/gutter/trim-clip.js +5 -0
- package/dist/hvac-equipment/parametrics.js +3 -3
- package/dist/hvac-equipment/tool.d.ts.map +1 -1
- package/dist/hvac-equipment/tool.js +12 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/item/definition.d.ts.map +1 -1
- package/dist/item/definition.js +10 -2
- package/dist/item/floorplan-move.d.ts.map +1 -1
- package/dist/item/floorplan-move.js +20 -1
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +22 -1
- package/dist/item/move-tool.d.ts +28 -1
- package/dist/item/move-tool.d.ts.map +1 -1
- package/dist/item/move-tool.js +14 -2
- package/dist/item/renderer.d.ts.map +1 -1
- package/dist/item/renderer.js +16 -6
- package/dist/item/system.d.ts +5 -0
- package/dist/item/system.d.ts.map +1 -1
- package/dist/item/system.js +7 -1
- package/dist/lean-to-extension/arc.d.ts +14 -0
- package/dist/lean-to-extension/arc.d.ts.map +1 -0
- package/dist/lean-to-extension/arc.js +56 -0
- package/dist/lean-to-extension/assembly.d.ts +61 -0
- package/dist/lean-to-extension/assembly.d.ts.map +1 -0
- package/dist/lean-to-extension/assembly.js +761 -0
- package/dist/lean-to-extension/canopy-joint.d.ts +35 -0
- package/dist/lean-to-extension/canopy-joint.d.ts.map +1 -0
- package/dist/lean-to-extension/canopy-joint.js +234 -0
- package/dist/lean-to-extension/conical-host.d.ts +15 -0
- package/dist/lean-to-extension/conical-host.d.ts.map +1 -0
- package/dist/lean-to-extension/conical-host.js +113 -0
- package/dist/lean-to-extension/corner-joint.d.ts +29 -0
- package/dist/lean-to-extension/corner-joint.d.ts.map +1 -0
- package/dist/lean-to-extension/corner-joint.js +1202 -0
- package/dist/lean-to-extension/definition.d.ts +4 -0
- package/dist/lean-to-extension/definition.d.ts.map +1 -0
- package/dist/lean-to-extension/definition.js +433 -0
- package/dist/lean-to-extension/floorplan-affordances.d.ts +4 -0
- package/dist/lean-to-extension/floorplan-affordances.d.ts.map +1 -0
- package/dist/lean-to-extension/floorplan-affordances.js +144 -0
- package/dist/lean-to-extension/floorplan-move.d.ts +3 -0
- package/dist/lean-to-extension/floorplan-move.d.ts.map +1 -0
- package/dist/lean-to-extension/floorplan-move.js +157 -0
- package/dist/lean-to-extension/floorplan-tool.d.ts +4 -0
- package/dist/lean-to-extension/floorplan-tool.d.ts.map +1 -0
- package/dist/lean-to-extension/floorplan-tool.js +385 -0
- package/dist/lean-to-extension/floorplan.d.ts +3 -0
- package/dist/lean-to-extension/floorplan.d.ts.map +1 -0
- package/dist/lean-to-extension/floorplan.js +373 -0
- package/dist/lean-to-extension/geometry.d.ts +7 -0
- package/dist/lean-to-extension/geometry.d.ts.map +1 -0
- package/dist/lean-to-extension/geometry.js +662 -0
- package/dist/lean-to-extension/index.d.ts +8 -0
- package/dist/lean-to-extension/index.d.ts.map +1 -0
- package/dist/lean-to-extension/index.js +7 -0
- package/dist/lean-to-extension/layout.d.ts +108 -0
- package/dist/lean-to-extension/layout.d.ts.map +1 -0
- package/dist/lean-to-extension/layout.js +477 -0
- package/dist/lean-to-extension/managed-preview.d.ts +3 -0
- package/dist/lean-to-extension/managed-preview.d.ts.map +1 -0
- package/dist/lean-to-extension/managed-preview.js +93 -0
- package/dist/lean-to-extension/move-tool.d.ts +8 -0
- package/dist/lean-to-extension/move-tool.d.ts.map +1 -0
- package/dist/lean-to-extension/move-tool.js +202 -0
- package/dist/lean-to-extension/paint.d.ts +2 -0
- package/dist/lean-to-extension/paint.d.ts.map +1 -0
- package/dist/lean-to-extension/paint.js +16 -0
- package/dist/lean-to-extension/parametrics.d.ts +4 -0
- package/dist/lean-to-extension/parametrics.d.ts.map +1 -0
- package/dist/lean-to-extension/parametrics.js +570 -0
- package/dist/lean-to-extension/placement-scope.d.ts +3 -0
- package/dist/lean-to-extension/placement-scope.d.ts.map +1 -0
- package/dist/lean-to-extension/placement-scope.js +4 -0
- package/dist/lean-to-extension/placement-validation.d.ts +4 -0
- package/dist/lean-to-extension/placement-validation.d.ts.map +1 -0
- package/dist/lean-to-extension/placement-validation.js +324 -0
- package/dist/lean-to-extension/placement.d.ts +59 -0
- package/dist/lean-to-extension/placement.d.ts.map +1 -0
- package/dist/lean-to-extension/placement.js +331 -0
- package/dist/lean-to-extension/plan-footprint.d.ts +10 -0
- package/dist/lean-to-extension/plan-footprint.d.ts.map +1 -0
- package/dist/lean-to-extension/plan-footprint.js +27 -0
- package/dist/lean-to-extension/preview-geometry.d.ts +7 -0
- package/dist/lean-to-extension/preview-geometry.d.ts.map +1 -0
- package/dist/lean-to-extension/preview-geometry.js +40 -0
- package/dist/lean-to-extension/preview.d.ts +7 -0
- package/dist/lean-to-extension/preview.d.ts.map +1 -0
- package/dist/lean-to-extension/preview.js +20 -0
- package/dist/lean-to-extension/renderer.d.ts +6 -0
- package/dist/lean-to-extension/renderer.d.ts.map +1 -0
- package/dist/lean-to-extension/renderer.js +34 -0
- package/dist/lean-to-extension/roof-attachment.d.ts +28 -0
- package/dist/lean-to-extension/roof-attachment.d.ts.map +1 -0
- package/dist/lean-to-extension/roof-attachment.js +376 -0
- package/dist/lean-to-extension/schema.d.ts +2 -0
- package/dist/lean-to-extension/schema.d.ts.map +1 -0
- package/dist/lean-to-extension/schema.js +1 -0
- package/dist/lean-to-extension/slots.d.ts +5 -0
- package/dist/lean-to-extension/slots.d.ts.map +1 -0
- package/dist/lean-to-extension/slots.js +15 -0
- package/dist/lean-to-extension/system.d.ts +7 -0
- package/dist/lean-to-extension/system.d.ts.map +1 -0
- package/dist/lean-to-extension/system.js +726 -0
- package/dist/lean-to-extension/tool.d.ts +3 -0
- package/dist/lean-to-extension/tool.d.ts.map +1 -0
- package/dist/lean-to-extension/tool.js +580 -0
- package/dist/lean-to-extension/wall-target.d.ts +10 -0
- package/dist/lean-to-extension/wall-target.d.ts.map +1 -0
- package/dist/lean-to-extension/wall-target.js +29 -0
- package/dist/lineset/definition.d.ts.map +1 -1
- package/dist/lineset/definition.js +1 -0
- package/dist/liquid-line/definition.d.ts.map +1 -1
- package/dist/liquid-line/definition.js +1 -0
- package/dist/measurement/renderer.d.ts.map +1 -1
- package/dist/measurement/renderer.js +6 -5
- package/dist/measurement/surface-query.js +5 -5
- package/dist/measurement/tool.d.ts.map +1 -1
- package/dist/measurement/tool.js +7 -5
- package/dist/pipe-fitting/definition.d.ts.map +1 -1
- package/dist/pipe-fitting/definition.js +16 -2
- package/dist/pipe-fitting/floorplan.d.ts.map +1 -1
- package/dist/pipe-fitting/floorplan.js +4 -0
- package/dist/pipe-fitting/geometry.d.ts +3 -5
- package/dist/pipe-fitting/geometry.d.ts.map +1 -1
- package/dist/pipe-fitting/geometry.js +154 -21
- package/dist/pipe-fitting/inline-insertion.d.ts +13 -0
- package/dist/pipe-fitting/inline-insertion.d.ts.map +1 -0
- package/dist/pipe-fitting/inline-insertion.js +96 -0
- package/dist/pipe-fitting/parametrics.d.ts.map +1 -1
- package/dist/pipe-fitting/parametrics.js +17 -3
- package/dist/pipe-fitting/ports.d.ts.map +1 -1
- package/dist/pipe-fitting/ports.js +8 -1
- package/dist/pipe-fitting/tool.d.ts +26 -0
- package/dist/pipe-fitting/tool.d.ts.map +1 -1
- package/dist/pipe-fitting/tool.js +182 -37
- package/dist/pipe-segment/continuation.d.ts +22 -0
- package/dist/pipe-segment/continuation.d.ts.map +1 -0
- package/dist/pipe-segment/continuation.js +146 -0
- package/dist/pipe-segment/definition.d.ts.map +1 -1
- package/dist/pipe-segment/definition.js +23 -7
- package/dist/pipe-segment/floorplan.d.ts.map +1 -1
- package/dist/pipe-segment/floorplan.js +42 -0
- package/dist/pipe-segment/geometry.d.ts +2 -1
- package/dist/pipe-segment/geometry.d.ts.map +1 -1
- package/dist/pipe-segment/geometry.js +4 -1
- package/dist/pipe-segment/move-tool.d.ts.map +1 -1
- package/dist/pipe-segment/move-tool.js +25 -5
- package/dist/pipe-segment/parametrics.d.ts.map +1 -1
- package/dist/pipe-segment/parametrics.js +45 -0
- package/dist/pipe-segment/selection.d.ts +3 -4
- package/dist/pipe-segment/selection.d.ts.map +1 -1
- package/dist/pipe-segment/selection.js +169 -105
- package/dist/pipe-segment/slope.d.ts +5 -0
- package/dist/pipe-segment/slope.d.ts.map +1 -0
- package/dist/pipe-segment/slope.js +10 -0
- package/dist/pipe-segment/tool.d.ts.map +1 -1
- package/dist/pipe-segment/tool.js +325 -545
- package/dist/pipe-trap/tool.d.ts.map +1 -1
- package/dist/pipe-trap/tool.js +15 -2
- package/dist/ridge-vent/definition.js +1 -1
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +2 -2
- package/dist/ridge-vent/parametrics.js +1 -1
- package/dist/ridge-vent/renderer.d.ts.map +1 -1
- package/dist/ridge-vent/renderer.js +2 -2
- package/dist/roof/conical-roof-placement.d.ts +36 -0
- package/dist/roof/conical-roof-placement.d.ts.map +1 -0
- package/dist/roof/conical-roof-placement.js +134 -0
- package/dist/roof/conical-roof.d.ts +3 -0
- package/dist/roof/conical-roof.d.ts.map +1 -0
- package/dist/roof/conical-roof.js +53 -0
- package/dist/roof/definition.d.ts +3 -10
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.js +83 -13
- package/dist/roof/floorplan.d.ts +3 -10
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +139 -165
- package/dist/roof/index.d.ts +1 -0
- package/dist/roof/index.d.ts.map +1 -1
- package/dist/roof/index.js +1 -0
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +22 -23
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/roof-footprint-source.d.ts +16 -0
- package/dist/roof/roof-footprint-source.d.ts.map +1 -0
- package/dist/roof/roof-footprint-source.js +14 -0
- package/dist/roof/roof-footprint.d.ts +25 -0
- package/dist/roof/roof-footprint.d.ts.map +1 -0
- package/dist/roof/roof-footprint.js +94 -0
- package/dist/roof/roof-placement-mode.d.ts +18 -0
- package/dist/roof/roof-placement-mode.d.ts.map +1 -0
- package/dist/roof/roof-placement-mode.js +24 -0
- package/dist/roof/tool.d.ts +10 -0
- package/dist/roof/tool.d.ts.map +1 -0
- package/dist/roof/tool.js +922 -0
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.js +52 -8
- package/dist/roof-segment/floorplan-affordances.d.ts +5 -6
- package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
- package/dist/roof-segment/floorplan-affordances.js +64 -18
- package/dist/roof-segment/floorplan.d.ts +3 -2
- package/dist/roof-segment/floorplan.d.ts.map +1 -1
- package/dist/roof-segment/floorplan.js +95 -46
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +122 -27
- package/dist/scan/definition.d.ts +2 -3
- package/dist/scan/definition.d.ts.map +1 -1
- package/dist/scan/definition.js +9 -7
- package/dist/scan/parametrics.d.ts.map +1 -1
- package/dist/scan/parametrics.js +13 -1
- package/dist/scan/renderer.d.ts.map +1 -1
- package/dist/scan/renderer.js +8 -2
- package/dist/shared/accessory-cursor.d.ts +7 -0
- package/dist/shared/accessory-cursor.d.ts.map +1 -0
- package/dist/shared/accessory-cursor.js +83 -0
- package/dist/shared/accessory-floorplan.d.ts +4 -0
- package/dist/shared/accessory-floorplan.d.ts.map +1 -0
- package/dist/shared/accessory-floorplan.js +51 -0
- package/dist/shared/accessory-geometry.d.ts +7 -0
- package/dist/shared/accessory-geometry.d.ts.map +1 -0
- package/dist/shared/accessory-geometry.js +79 -0
- package/dist/shared/accessory-placement.d.ts +10 -0
- package/dist/shared/accessory-placement.d.ts.map +1 -0
- package/dist/shared/accessory-placement.js +126 -0
- package/dist/shared/accessory-snapping.d.ts +5 -0
- package/dist/shared/accessory-snapping.d.ts.map +1 -0
- package/dist/shared/accessory-snapping.js +40 -0
- package/dist/shared/automatic-run-end-cap.d.ts +11 -0
- package/dist/shared/automatic-run-end-cap.d.ts.map +1 -0
- package/dist/shared/automatic-run-end-cap.js +159 -0
- package/dist/shared/block-face-host.d.ts +15 -0
- package/dist/shared/block-face-host.d.ts.map +1 -0
- package/dist/shared/block-face-host.js +36 -0
- package/dist/shared/connection-compatibility.d.ts +8 -0
- package/dist/shared/connection-compatibility.d.ts.map +1 -0
- package/dist/shared/connection-compatibility.js +28 -0
- package/dist/shared/connection-feedback.d.ts +10 -0
- package/dist/shared/connection-feedback.d.ts.map +1 -0
- package/dist/shared/connection-feedback.js +17 -0
- package/dist/shared/distribution-run-contract.d.ts +49 -0
- package/dist/shared/distribution-run-contract.d.ts.map +1 -0
- package/dist/shared/distribution-run-contract.js +30 -0
- package/dist/shared/distribution-run-tool.d.ts +107 -0
- package/dist/shared/distribution-run-tool.d.ts.map +1 -0
- package/dist/shared/distribution-run-tool.js +941 -0
- package/dist/shared/dormer-wall-opening-placement.d.ts +21 -0
- package/dist/shared/dormer-wall-opening-placement.d.ts.map +1 -0
- package/dist/shared/dormer-wall-opening-placement.js +101 -0
- package/dist/shared/duct-adapter.d.ts +10 -0
- package/dist/shared/duct-adapter.d.ts.map +1 -0
- package/dist/shared/duct-adapter.js +43 -0
- package/dist/shared/elbow-branch-continuation.d.ts +20 -0
- package/dist/shared/elbow-branch-continuation.d.ts.map +1 -0
- package/dist/shared/elbow-branch-continuation.js +200 -0
- package/dist/shared/fitting-clearance.d.ts +5 -0
- package/dist/shared/fitting-clearance.d.ts.map +1 -0
- package/dist/shared/fitting-clearance.js +11 -0
- package/dist/shared/fitting-deletion-cleanup.d.ts +14 -0
- package/dist/shared/fitting-deletion-cleanup.d.ts.map +1 -0
- package/dist/shared/fitting-deletion-cleanup.js +297 -0
- package/dist/shared/fitting-surface-support.d.ts +5 -0
- package/dist/shared/fitting-surface-support.d.ts.map +1 -0
- package/dist/shared/fitting-surface-support.js +42 -0
- package/dist/shared/fitting-tool-options.d.ts +4 -0
- package/dist/shared/fitting-tool-options.d.ts.map +1 -0
- package/dist/shared/fitting-tool-options.js +175 -0
- package/dist/shared/floor-placement.d.ts +1 -1
- package/dist/shared/floor-placement.d.ts.map +1 -1
- package/dist/shared/floor-placement.js +13 -33
- package/dist/shared/ghost-materials.d.ts.map +1 -1
- package/dist/shared/ghost-materials.js +2 -1
- package/dist/shared/lean-to-post-omissions.d.ts +8 -0
- package/dist/shared/lean-to-post-omissions.d.ts.map +1 -0
- package/dist/shared/lean-to-post-omissions.js +51 -0
- package/dist/shared/mep-fitting-actions.d.ts +5 -0
- package/dist/shared/mep-fitting-actions.d.ts.map +1 -0
- package/dist/shared/mep-fitting-actions.js +16 -0
- package/dist/shared/mep-ghost.d.ts.map +1 -1
- package/dist/shared/mep-ghost.js +19 -1
- package/dist/shared/mep-presets.d.ts +11 -0
- package/dist/shared/mep-presets.d.ts.map +1 -0
- package/dist/shared/mep-presets.js +34 -0
- package/dist/shared/node-batch/candidates.d.ts +29 -0
- package/dist/shared/node-batch/candidates.d.ts.map +1 -0
- package/dist/shared/node-batch/candidates.js +260 -0
- package/dist/shared/node-batch/store.d.ts +26 -0
- package/dist/shared/node-batch/store.d.ts.map +1 -0
- package/dist/shared/node-batch/store.js +319 -0
- package/dist/shared/node-batch/system.d.ts +8 -0
- package/dist/shared/node-batch/system.d.ts.map +1 -0
- package/dist/shared/node-batch/system.js +569 -0
- package/dist/shared/node-batch/types.d.ts +99 -0
- package/dist/shared/node-batch/types.d.ts.map +1 -0
- package/dist/shared/node-batch/types.js +4 -0
- package/dist/shared/opening-move-history.d.ts +47 -0
- package/dist/shared/opening-move-history.d.ts.map +1 -0
- package/dist/shared/opening-move-history.js +18 -0
- package/dist/shared/opening-move-wall-gate.d.ts +55 -0
- package/dist/shared/opening-move-wall-gate.d.ts.map +1 -0
- package/dist/shared/opening-move-wall-gate.js +44 -0
- package/dist/shared/path-point-affordance.d.ts +2 -2
- package/dist/shared/path-point-affordance.d.ts.map +1 -1
- package/dist/shared/path-point-affordance.js +30 -6
- package/dist/shared/placeholder-geometry.d.ts.map +1 -1
- package/dist/shared/placeholder-geometry.js +4 -0
- package/dist/shared/ports.d.ts +20 -3
- package/dist/shared/ports.d.ts.map +1 -1
- package/dist/shared/ports.js +148 -7
- package/dist/shared/primitive-uv.d.ts +17 -0
- package/dist/shared/primitive-uv.d.ts.map +1 -0
- package/dist/shared/primitive-uv.js +107 -0
- package/dist/shared/reducer-size.d.ts +2 -0
- package/dist/shared/reducer-size.d.ts.map +1 -0
- package/dist/shared/reducer-size.js +12 -0
- package/dist/shared/ridge-snap.js +1 -1
- package/dist/shared/roof-surface.d.ts.map +1 -1
- package/dist/shared/roof-surface.js +17 -2
- package/dist/shared/run-cursor.d.ts +22 -0
- package/dist/shared/run-cursor.d.ts.map +1 -0
- package/dist/shared/run-cursor.js +19 -0
- package/dist/shared/run-direction-feedback.d.ts +20 -0
- package/dist/shared/run-direction-feedback.d.ts.map +1 -0
- package/dist/shared/run-direction-feedback.js +139 -0
- package/dist/shared/run-hanger-controls.d.ts +7 -0
- package/dist/shared/run-hanger-controls.d.ts.map +1 -0
- package/dist/shared/run-hanger-controls.js +44 -0
- package/dist/shared/run-hanger-inspector.d.ts +5 -0
- package/dist/shared/run-hanger-inspector.d.ts.map +1 -0
- package/dist/shared/run-hanger-inspector.js +43 -0
- package/dist/shared/run-hanger-mode.d.ts +11 -0
- package/dist/shared/run-hanger-mode.d.ts.map +1 -0
- package/dist/shared/run-hanger-mode.js +32 -0
- package/dist/shared/run-hanger-system.d.ts +3 -0
- package/dist/shared/run-hanger-system.d.ts.map +1 -0
- package/dist/shared/run-hanger-system.js +39 -0
- package/dist/shared/run-hangers.d.ts +25 -0
- package/dist/shared/run-hangers.d.ts.map +1 -0
- package/dist/shared/run-hangers.js +261 -0
- package/dist/shared/run-port-snap.d.ts +11 -0
- package/dist/shared/run-port-snap.d.ts.map +1 -0
- package/dist/shared/run-port-snap.js +19 -0
- package/dist/shared/run-screen-direction.d.ts +5 -0
- package/dist/shared/run-screen-direction.d.ts.map +1 -0
- package/dist/shared/run-screen-direction.js +24 -0
- package/dist/shared/selection-handles.d.ts +4 -0
- package/dist/shared/selection-handles.d.ts.map +1 -1
- package/dist/shared/selection-handles.js +10 -0
- package/dist/shared/slot-paint.d.ts +8 -1
- package/dist/shared/slot-paint.d.ts.map +1 -1
- package/dist/shared/slot-paint.js +120 -27
- package/dist/shared/surface-paint.d.ts +1 -2
- package/dist/shared/surface-paint.d.ts.map +1 -1
- package/dist/shared/surface-paint.js +9 -20
- package/dist/shared/system-check-panel.d.ts +6 -0
- package/dist/shared/system-check-panel.d.ts.map +1 -0
- package/dist/shared/system-check-panel.js +62 -0
- package/dist/shared/system-checks.d.ts +9 -0
- package/dist/shared/system-checks.d.ts.map +1 -0
- package/dist/shared/system-checks.js +131 -0
- package/dist/shared/wall-attach-target.d.ts +14 -2
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +108 -4
- package/dist/shared/wall-opening-clearance.d.ts +19 -0
- package/dist/shared/wall-opening-clearance.d.ts.map +1 -0
- package/dist/shared/wall-opening-clearance.js +28 -0
- package/dist/shared/wall-run-move.d.ts +17 -0
- package/dist/shared/wall-run-move.d.ts.map +1 -0
- package/dist/shared/wall-run-move.js +56 -0
- package/dist/shelf/parametrics.js +4 -4
- package/dist/site/renderer.d.ts.map +1 -1
- package/dist/site/renderer.js +40 -28
- package/dist/site/terrain-geometry.d.ts +1 -1
- package/dist/site/terrain-geometry.d.ts.map +1 -1
- package/dist/site/terrain-geometry.js +35 -9
- package/dist/site/terrain-mesh.d.ts +5 -0
- package/dist/site/terrain-mesh.d.ts.map +1 -1
- package/dist/site/terrain-mesh.js +63 -34
- package/dist/skylight/definition.js +1 -1
- package/dist/skylight/panel.js +1 -1
- package/dist/skylight/parametrics.js +2 -2
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.js +6 -1
- package/dist/slab/dependency-tracker.d.ts +3 -0
- package/dist/slab/dependency-tracker.d.ts.map +1 -0
- package/dist/slab/dependency-tracker.js +104 -0
- package/dist/slab/floorplan-affordances.d.ts +8 -8
- package/dist/slab/geometry.d.ts.map +1 -1
- package/dist/slab/geometry.js +16 -2
- package/dist/slab/panel.d.ts.map +1 -1
- package/dist/slab/panel.js +1 -1
- package/dist/slab/parametrics.js +1 -1
- package/dist/slab/system.d.ts.map +1 -1
- package/dist/slab/system.js +8 -64
- package/dist/solar-panel/definition.js +1 -1
- package/dist/solar-panel/panel.js +1 -1
- package/dist/solar-panel/parametrics.js +2 -2
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +18 -13
- package/dist/stair/stair-type.d.ts +18 -0
- package/dist/stair/stair-type.d.ts.map +1 -0
- package/dist/stair/stair-type.js +25 -0
- package/dist/stair-segment/panel.d.ts.map +1 -1
- package/dist/stair-segment/panel.js +44 -5
- package/dist/turbine-vent/definition.d.ts.map +1 -1
- package/dist/turbine-vent/definition.js +8 -5
- package/dist/turbine-vent/geometry.d.ts.map +1 -1
- package/dist/turbine-vent/geometry.js +48 -18
- package/dist/turbine-vent/paint.d.ts +4 -0
- package/dist/turbine-vent/paint.d.ts.map +1 -0
- package/dist/turbine-vent/paint.js +35 -0
- package/dist/turbine-vent/panel.js +1 -1
- package/dist/turbine-vent/parametrics.js +2 -2
- package/dist/turbine-vent/renderer.d.ts.map +1 -1
- package/dist/turbine-vent/renderer.js +31 -9
- package/dist/wall/curve-eligibility.d.ts +3 -0
- package/dist/wall/curve-eligibility.d.ts.map +1 -0
- package/dist/wall/curve-eligibility.js +10 -0
- package/dist/wall/curve-tool.d.ts +3 -4
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +24 -23
- package/dist/wall/definition.d.ts +1 -1
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +36 -13
- package/dist/wall/floorplan-affordances.d.ts +1 -0
- package/dist/wall/floorplan-affordances.d.ts.map +1 -1
- package/dist/wall/floorplan-affordances.js +46 -7
- package/dist/wall/floorplan-move.d.ts +3 -4
- package/dist/wall/floorplan-move.d.ts.map +1 -1
- package/dist/wall/floorplan-move.js +122 -9
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +19 -23
- package/dist/wall/move-shared.d.ts.map +1 -1
- package/dist/wall/move-shared.js +10 -7
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +2 -0
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +62 -27
- package/dist/wall/parametrics.js +2 -2
- package/dist/wall/pointer-transparency.d.ts +128 -0
- package/dist/wall/pointer-transparency.d.ts.map +1 -0
- package/dist/wall/pointer-transparency.js +147 -0
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +65 -8
- package/dist/wall/selection-hit-owner.d.ts +53 -0
- package/dist/wall/selection-hit-owner.d.ts.map +1 -0
- package/dist/wall/selection-hit-owner.js +79 -0
- package/dist/wall/system.d.ts +5 -0
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +71 -26
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +29 -27
- package/dist/wall/treatment-level-data.d.ts +6 -1
- package/dist/wall/treatment-level-data.d.ts.map +1 -1
- package/dist/wall/treatment-level-data.js +82 -5
- package/dist/wall/treatments.d.ts +1 -0
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +5 -0
- package/dist/wall/wall-batch-system.d.ts +55 -0
- package/dist/wall/wall-batch-system.d.ts.map +1 -0
- package/dist/wall/wall-batch-system.js +486 -0
- package/dist/wall/wall-batch.d.ts +66 -0
- package/dist/wall/wall-batch.d.ts.map +1 -0
- package/dist/wall/wall-batch.js +169 -0
- package/dist/window/definition.d.ts +2 -1
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.js +51 -24
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +1 -1
- package/dist/window/move-tool.d.ts +7 -5
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +344 -58
- package/dist/window/panel.d.ts.map +1 -1
- package/dist/window/panel.js +2 -0
- package/dist/window/parametrics.js +2 -2
- package/dist/window/renderer.d.ts.map +1 -1
- package/dist/window/renderer.js +5 -7
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +227 -13
- package/dist/zone/floorplan-affordances.d.ts +12 -12
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +4 -3
- package/package.json +11 -9
- package/dist/dormer/panel-window-section.d.ts +0 -14
- package/dist/dormer/panel-window-section.d.ts.map +0 -1
- package/dist/dormer/panel-window-section.js +0 -59
- package/dist/dormer/window-assembly.d.ts +0 -22
- package/dist/dormer/window-assembly.d.ts.map +0 -1
- package/dist/dormer/window-assembly.js +0 -111
- package/dist/dormer/window-frame.d.ts +0 -24
- package/dist/dormer/window-frame.d.ts.map +0 -1
- package/dist/dormer/window-frame.js +0 -100
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { findLevelAncestorId, selectionProxyIdFromMetadata } from '@pascal-app/core';
|
|
1
|
+
import { CABINET_METRIC_DEFAULTS, findLevelAncestorId, selectionProxyIdFromMetadata, } from '@pascal-app/core';
|
|
2
|
+
import { findWallOpeningConflicts } from '../shared/wall-opening-clearance';
|
|
2
3
|
import { bakeCabinetAnimationClip } from './animation';
|
|
3
4
|
import { buildCabinetFloorplan, buildCabinetModuleFloorplan } from './floorplan';
|
|
4
5
|
import { cabinetModuleFloorplanMoveTarget } from './floorplan-move';
|
|
@@ -7,18 +8,21 @@ import { buildCabinetGeometry } from './geometry';
|
|
|
7
8
|
import { toggleCabinetOperationState } from './interaction';
|
|
8
9
|
import { cabinetModuleParentFrame } from './move-frame';
|
|
9
10
|
import { cabinetPaint } from './paint';
|
|
11
|
+
import { cabinetModuleUsesFixedApplianceWidth } from './panel-visibility';
|
|
10
12
|
import { cabinetModuleParametrics, cabinetParametrics } from './parametrics';
|
|
13
|
+
import { resolveCabinetGridPosition } from './placement-snap';
|
|
11
14
|
import useCabinetPlacementType from './placement-type';
|
|
15
|
+
import { metadataForSelectedWidth, metadataWithPresetWidthDebt } from './preset-width-debt';
|
|
12
16
|
import { cabinetQuickActions } from './quick-actions';
|
|
13
17
|
import { cabinetConnectedDepthBounds, cabinetResizeUpperBound, MAX_CABINET_DEPTH, MAX_CABINET_WIDTH, MIN_CABINET_DEPTH, MIN_CABINET_WIDTH, } from './resize-limits';
|
|
14
|
-
import { moduleSideOpen, sortRunModules } from './run-layout';
|
|
15
|
-
import { backAlignedRunDepthOverrides, backAlignZ, buildWallCornerDepthIndex, bumpCabinetRunLayoutRevision, cabinetMetadataRecord, cabinetModulesForRun, totalCabinetHeight as cabinetTotalHeight, cornerSourceWidthOverridesForDerivedDepth, previewCornerRunsFromRunSources, resolveCabinetType, runModuleBaseY, syncCornerRunsFromRunSources, syncCornerRunsFromSourceModule, wallChildOf, wallCornerWidthOverridesForDepthTargets, } from './run-ops';
|
|
18
|
+
import { moduleSideOpen, reflowRunModules as reflowCabinetRunModules, runWallConstraints, sortRunModules, } from './run-layout';
|
|
19
|
+
import { backAlignedRunDepthOverrides, backAlignZ, buildWallCornerDepthIndex, bumpCabinetRunLayoutRevision, cabinetMetadataRecord, cabinetModulesForRun, cabinetModuleTotalHeight, totalCabinetHeight as cabinetTotalHeight, cornerSourceWidthOverridesForDerivedDepth, nestedCornerRunPositionOverrides, previewCornerRunsFromRunSources, resolveCabinetType, runModuleBaseY, syncCornerRunsFromRunSources, syncCornerRunsFromSourceModule, wallChildOf, wallCornerWidthOverridesForDepthTargets, } from './run-ops';
|
|
16
20
|
import { cabinetSceneAction } from './scene-action';
|
|
17
21
|
import { CabinetModuleNode, CabinetNode } from './schema';
|
|
18
22
|
import { cabinetSlots } from './slots';
|
|
19
23
|
import { backAnchoredModuleZ, isHoodCompartmentType, minCabinetCarcassHeightForStack, stackForCabinet, } from './stack';
|
|
20
24
|
import { cabinetFloorplanAffectedIds, cabinetTreeChildIds, cabinetTreeHidden, cabinetTreeLabel, } from './tree-structure';
|
|
21
|
-
import { resolveCabinetModuleWallSnapLocal, resolveCabinetRunWallSnap } from './wall-snap';
|
|
25
|
+
import { findClosestCabinetWallInPlan, resolveCabinetModuleWallSnapLocal, resolveCabinetRunWallSnap, resolveCabinetWallFaceOffset, } from './wall-snap';
|
|
22
26
|
function isCabinetDuplicableNode(node) {
|
|
23
27
|
return ((node?.type === 'cabinet' || node?.type === 'cabinet-module') &&
|
|
24
28
|
Array.isArray(node.position) &&
|
|
@@ -95,7 +99,7 @@ function appendCabinetFloorPlacedFootprints(run, nodes, parentPosition, parentRo
|
|
|
95
99
|
];
|
|
96
100
|
footprints.push({
|
|
97
101
|
position: modulePosition,
|
|
98
|
-
dimensions: [module.width,
|
|
102
|
+
dimensions: [module.width, cabinetModuleTotalHeight(module), module.depth],
|
|
99
103
|
rotation: [0, runRotation + module.rotation, 0],
|
|
100
104
|
});
|
|
101
105
|
}
|
|
@@ -128,6 +132,43 @@ export function cabinetFloorPlacedFootprints(node, nodes) {
|
|
|
128
132
|
appendCabinetFloorPlacedFootprints(node, nodes, [0, 0, 0], 0, footprints);
|
|
129
133
|
return footprints;
|
|
130
134
|
}
|
|
135
|
+
function cabinetRunOverlapsWallOpening({ levelId, node, nodes, position, rotation, }) {
|
|
136
|
+
const parentLevelId = (levelId ??
|
|
137
|
+
findLevelAncestorId(node.id, nodes));
|
|
138
|
+
if (!parentLevelId)
|
|
139
|
+
return false;
|
|
140
|
+
const candidate = { ...node, position: [...position], rotation };
|
|
141
|
+
return cabinetFloorPlacedFootprints(candidate, nodes).some((footprint) => {
|
|
142
|
+
if (!footprint.position)
|
|
143
|
+
return false;
|
|
144
|
+
const hit = findClosestCabinetWallInPlan({
|
|
145
|
+
excludeIds: [],
|
|
146
|
+
nodes: nodes,
|
|
147
|
+
parentLevelId,
|
|
148
|
+
planPoint: [footprint.position[0], footprint.position[2]],
|
|
149
|
+
yaw: footprint.rotation[1],
|
|
150
|
+
});
|
|
151
|
+
if (!hit)
|
|
152
|
+
return false;
|
|
153
|
+
const normalScale = hit.side === 'front' ? 1 : -1;
|
|
154
|
+
const expectedPerp = resolveCabinetWallFaceOffset({
|
|
155
|
+
hit,
|
|
156
|
+
nodes: nodes,
|
|
157
|
+
parentLevelId,
|
|
158
|
+
}) +
|
|
159
|
+
normalScale * (footprint.dimensions[2] / 2);
|
|
160
|
+
if (Math.abs(hit.perpDistance - expectedPerp) > 0.12)
|
|
161
|
+
return false;
|
|
162
|
+
return (findWallOpeningConflicts({
|
|
163
|
+
bottom: footprint.position[1],
|
|
164
|
+
height: footprint.dimensions[1],
|
|
165
|
+
localX: hit.localX,
|
|
166
|
+
nodes,
|
|
167
|
+
wall: hit.wall,
|
|
168
|
+
width: footprint.dimensions[0],
|
|
169
|
+
}).length > 0);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
131
172
|
const SIDE_HANDLE_OFFSET = 0.18;
|
|
132
173
|
const HEIGHT_HANDLE_OFFSET = 0.22;
|
|
133
174
|
const ROTATE_CORNER_OFFSET = 0.32;
|
|
@@ -135,6 +176,7 @@ const ROTATE_RING_OFFSET = 0.04;
|
|
|
135
176
|
const MIN_CABINET_CARCASS_HEIGHT = 0.4;
|
|
136
177
|
const CABINET_ADJACENCY_EPSILON = 1e-4;
|
|
137
178
|
const CABINET_DEPTH_SNAP_THRESHOLD = 0.02;
|
|
179
|
+
const CABINET_WIDTH_SNAP_THRESHOLD = 0.08;
|
|
138
180
|
function isCabinetModule(node) {
|
|
139
181
|
return node?.type === 'cabinet-module';
|
|
140
182
|
}
|
|
@@ -146,18 +188,32 @@ function hasCabinetParentId(node) {
|
|
|
146
188
|
return (typeof parentId === 'string' &&
|
|
147
189
|
(parentId.startsWith('cabinet_') || parentId.startsWith('cabinet-module_')));
|
|
148
190
|
}
|
|
149
|
-
function resolveCabinetGroupMoveSnap({ candidatePosition, levelId, movingIds, node, nodes, }) {
|
|
191
|
+
function resolveCabinetGroupMoveSnap({ candidatePosition, candidateRotation, levelId, movingIds, node, nodes, }) {
|
|
150
192
|
if (node.type !== 'cabinet' || !levelId)
|
|
151
193
|
return null;
|
|
152
194
|
return resolveCabinetRunWallSnap({
|
|
153
195
|
cabinet: node,
|
|
154
196
|
candidatePosition,
|
|
197
|
+
candidateRotation,
|
|
155
198
|
excludeIds: movingIds,
|
|
156
199
|
gridStep: 0,
|
|
157
200
|
nodes: nodes,
|
|
158
201
|
parentLevelId: levelId,
|
|
159
202
|
});
|
|
160
203
|
}
|
|
204
|
+
function resolveCabinetMoveGridSnap({ candidatePosition, candidateRotation, gridStep, node, nodes, }) {
|
|
205
|
+
if (!isCabinetRun(node))
|
|
206
|
+
return candidatePosition;
|
|
207
|
+
const bounds = cabinetLocalBounds(node, nodes);
|
|
208
|
+
const snapped = resolveCabinetGridPosition({
|
|
209
|
+
raw: candidatePosition,
|
|
210
|
+
dimensions: bounds.size,
|
|
211
|
+
footprintOffset: [bounds.center[0], bounds.center[2]],
|
|
212
|
+
yaw: candidateRotation,
|
|
213
|
+
step: gridStep,
|
|
214
|
+
});
|
|
215
|
+
return [snapped[0], candidatePosition[1], snapped[2]];
|
|
216
|
+
}
|
|
161
217
|
/**
|
|
162
218
|
* Wall snap for a single dragged module. `parentFrame` kinds exchange
|
|
163
219
|
* `candidatePosition` in the run's LOCAL frame with the move tool (it
|
|
@@ -173,7 +229,7 @@ function resolveCabinetModuleGroupMoveSnap({ candidatePosition, levelId, movingI
|
|
|
173
229
|
const parentLevelId = (levelId ?? run.parentId ?? null);
|
|
174
230
|
if (!parentLevelId)
|
|
175
231
|
return null;
|
|
176
|
-
|
|
232
|
+
const position = resolveCabinetModuleWallSnapLocal({
|
|
177
233
|
candidateLocal: candidatePosition,
|
|
178
234
|
excludeIds: movingIds,
|
|
179
235
|
module: node,
|
|
@@ -181,6 +237,7 @@ function resolveCabinetModuleGroupMoveSnap({ candidatePosition, levelId, movingI
|
|
|
181
237
|
parentLevelId,
|
|
182
238
|
run,
|
|
183
239
|
});
|
|
240
|
+
return position ? { position } : null;
|
|
184
241
|
}
|
|
185
242
|
function cabinetLayoutRevision(metadata) {
|
|
186
243
|
return cabinetMetadataRecord(metadata).cabinetLayoutRevision ?? null;
|
|
@@ -288,7 +345,7 @@ function includeCabinetModuleBounds(module, nodes, origin, bounds) {
|
|
|
288
345
|
bounds.minX = Math.min(bounds.minX, x - module.width / 2);
|
|
289
346
|
bounds.maxX = Math.max(bounds.maxX, x + module.width / 2);
|
|
290
347
|
bounds.minY = Math.min(bounds.minY, y - (module.showPlinth ? module.plinthHeight : 0));
|
|
291
|
-
bounds.maxY = Math.max(bounds.maxY, y +
|
|
348
|
+
bounds.maxY = Math.max(bounds.maxY, y + cabinetModuleTotalHeight(module));
|
|
292
349
|
bounds.minZ = Math.min(bounds.minZ, z - module.depth / 2);
|
|
293
350
|
bounds.maxZ = Math.max(bounds.maxZ, z + module.depth / 2);
|
|
294
351
|
for (const childId of module.children ?? []) {
|
|
@@ -327,7 +384,7 @@ function cabinetLocalBounds(node, nodes) {
|
|
|
327
384
|
minX: -node.width / 2,
|
|
328
385
|
maxX: node.width / 2,
|
|
329
386
|
minY: 0,
|
|
330
|
-
maxY: cabinetTotalHeight(node),
|
|
387
|
+
maxY: node.type === 'cabinet-module' ? cabinetModuleTotalHeight(node) : cabinetTotalHeight(node),
|
|
331
388
|
minZ: -node.depth / 2,
|
|
332
389
|
maxZ: node.depth / 2,
|
|
333
390
|
};
|
|
@@ -343,7 +400,7 @@ function cabinetLocalBounds(node, nodes) {
|
|
|
343
400
|
for (const module of modules) {
|
|
344
401
|
includeCabinetModuleBounds(module, nodes, [0, 0, 0], bounds);
|
|
345
402
|
}
|
|
346
|
-
bounds.maxY
|
|
403
|
+
bounds.maxY = Math.max(bounds.maxY, cabinetTotalHeight(node));
|
|
347
404
|
// A seating back overhang (unlike the small front/side overhang) is
|
|
348
405
|
// deep enough to matter for selection and collision.
|
|
349
406
|
if (node.withCountertop && node.barLedge?.edge !== 'back') {
|
|
@@ -609,7 +666,12 @@ function parentRunGeometryPreviewOverride(node, sceneApi) {
|
|
|
609
666
|
if (!isCabinetModule(node) || !node.parentId)
|
|
610
667
|
return null;
|
|
611
668
|
const parent = sceneApi.get(node.parentId);
|
|
612
|
-
|
|
669
|
+
if (isCabinetRun(parent))
|
|
670
|
+
return [parent.id, {}];
|
|
671
|
+
if (!isCabinetModule(parent) || wallChildOf(parent, sceneApi.nodes())?.id !== node.id)
|
|
672
|
+
return null;
|
|
673
|
+
const run = parent.parentId ? sceneApi.get(parent.parentId) : undefined;
|
|
674
|
+
return isCabinetRun(run) ? [run.id, {}] : null;
|
|
613
675
|
}
|
|
614
676
|
function sharedDepthBounds(referenceDepth, targets, nodes) {
|
|
615
677
|
const depthOwners = targets.flatMap((target) => {
|
|
@@ -745,6 +807,7 @@ function commitModuleResize(module, patch, sceneApi) {
|
|
|
745
807
|
return;
|
|
746
808
|
}
|
|
747
809
|
if (typeof patch.width === 'number') {
|
|
810
|
+
const previousModule = module;
|
|
748
811
|
sceneApi.update(module.id, patch);
|
|
749
812
|
if (resolveCabinetType(module, parentRun) === 'base') {
|
|
750
813
|
const wallChild = wallChildOf(module, sceneApi.nodes());
|
|
@@ -753,6 +816,12 @@ function commitModuleResize(module, patch, sceneApi) {
|
|
|
753
816
|
}
|
|
754
817
|
}
|
|
755
818
|
bumpCabinetRunLayoutRevision(sceneApi, parentRun);
|
|
819
|
+
syncCornerRunsFromSourceModule({
|
|
820
|
+
module: sceneApi.get(module.id) ?? module,
|
|
821
|
+
previousModule,
|
|
822
|
+
run: sceneApi.get(parentRun.id) ?? parentRun,
|
|
823
|
+
sceneApi,
|
|
824
|
+
});
|
|
756
825
|
return;
|
|
757
826
|
}
|
|
758
827
|
const modulePatch = { ...patch };
|
|
@@ -781,6 +850,7 @@ function commitModuleResize(module, patch, sceneApi) {
|
|
|
781
850
|
}
|
|
782
851
|
syncCornerRunsFromSourceModule({
|
|
783
852
|
module: sceneApi.get(module.id) ?? module,
|
|
853
|
+
previousModule: module,
|
|
784
854
|
run: sceneApi.get(parentRun.id) ?? parentRun,
|
|
785
855
|
sceneApi,
|
|
786
856
|
});
|
|
@@ -807,6 +877,156 @@ function commitCabinetResize(node, patch, sceneApi) {
|
|
|
807
877
|
}
|
|
808
878
|
sceneApi.update(node.id, patch);
|
|
809
879
|
}
|
|
880
|
+
function cabinetManualWidthContext(node, sceneApi) {
|
|
881
|
+
const parent = node.parentId ? sceneApi.get(node.parentId) : undefined;
|
|
882
|
+
if (isCabinetRun(parent)) {
|
|
883
|
+
return { run: parent, selected: node, modules: cabinetModulesForRun(parent, sceneApi.nodes()) };
|
|
884
|
+
}
|
|
885
|
+
if (!isCabinetModule(parent))
|
|
886
|
+
return null;
|
|
887
|
+
const run = parent.parentId ? sceneApi.get(parent.parentId) : undefined;
|
|
888
|
+
if (!isCabinetRun(run) || wallChildOf(parent, sceneApi.nodes())?.id !== node.id)
|
|
889
|
+
return null;
|
|
890
|
+
return { run, selected: parent, modules: cabinetModulesForRun(run, sceneApi.nodes()) };
|
|
891
|
+
}
|
|
892
|
+
function cabinetWidthIsNestedModule(node, sceneApi) {
|
|
893
|
+
const context = cabinetManualWidthContext(node, sceneApi);
|
|
894
|
+
return context !== null && context.selected.id !== node.id;
|
|
895
|
+
}
|
|
896
|
+
function snapCabinetWidth(node, width, side, sceneApi) {
|
|
897
|
+
const context = cabinetManualWidthContext(node, sceneApi);
|
|
898
|
+
if (!context)
|
|
899
|
+
return width;
|
|
900
|
+
const sorted = sortRunModules(context.modules);
|
|
901
|
+
const selected = context.selected;
|
|
902
|
+
const selectedIndex = sorted.findIndex((module) => module.id === selected.id);
|
|
903
|
+
const neighborHost = sorted[side === 'right' ? selectedIndex + 1 : selectedIndex - 1];
|
|
904
|
+
if (!neighborHost)
|
|
905
|
+
return width;
|
|
906
|
+
const nested = selected.id !== node.id;
|
|
907
|
+
const snapTarget = nested ? wallChildOf(neighborHost, sceneApi.nodes()) : neighborHost;
|
|
908
|
+
if (!snapTarget)
|
|
909
|
+
return width;
|
|
910
|
+
const selectedCenter = nested
|
|
911
|
+
? cabinetModuleRunLocalCenterX(node, sceneApi)
|
|
912
|
+
: selected.position[0];
|
|
913
|
+
const targetCenter = nested
|
|
914
|
+
? cabinetModuleRunLocalCenterX(snapTarget, sceneApi)
|
|
915
|
+
: snapTarget.position[0];
|
|
916
|
+
if (selectedCenter === null || targetCenter === null)
|
|
917
|
+
return width;
|
|
918
|
+
const selectedEdge = selectedCenter + (side === 'right' ? node.width / 2 : -node.width / 2);
|
|
919
|
+
const neighborEdge = targetCenter + (side === 'right' ? -snapTarget.width / 2 : snapTarget.width / 2);
|
|
920
|
+
const gap = side === 'right' ? neighborEdge - selectedEdge : selectedEdge - neighborEdge;
|
|
921
|
+
if (gap <= CABINET_ADJACENCY_EPSILON)
|
|
922
|
+
return width;
|
|
923
|
+
const targetWidth = node.width + gap - (nested ? 0 : cabinetWallWidthGap(node, side, sceneApi));
|
|
924
|
+
return targetWidth > node.width && Math.abs(width - targetWidth) <= CABINET_WIDTH_SNAP_THRESHOLD
|
|
925
|
+
? targetWidth
|
|
926
|
+
: width;
|
|
927
|
+
}
|
|
928
|
+
function cabinetIndependentWidthPatch(node, width, side, sceneApi) {
|
|
929
|
+
const sign = side === 'right' ? 1 : -1;
|
|
930
|
+
const gap = cabinetWallWidthGap(node, side, sceneApi);
|
|
931
|
+
const effectiveWidth = width + gap;
|
|
932
|
+
return {
|
|
933
|
+
width: effectiveWidth,
|
|
934
|
+
position: [
|
|
935
|
+
node.position[0] + (sign * (effectiveWidth - node.width)) / 2,
|
|
936
|
+
node.position[1],
|
|
937
|
+
node.position[2],
|
|
938
|
+
],
|
|
939
|
+
};
|
|
940
|
+
}
|
|
941
|
+
function cabinetIndependentWidthPreviewOverrides(node, width, side, sceneApi) {
|
|
942
|
+
const overrides = [];
|
|
943
|
+
overrides.push([
|
|
944
|
+
node.id,
|
|
945
|
+
cabinetIndependentWidthPatch(node, width, side, sceneApi),
|
|
946
|
+
]);
|
|
947
|
+
const parentRunOverride = parentRunGeometryPreviewOverride(node, sceneApi);
|
|
948
|
+
if (parentRunOverride)
|
|
949
|
+
overrides.push(parentRunOverride);
|
|
950
|
+
const gap = cabinetWallWidthGap(node, side, sceneApi);
|
|
951
|
+
const selectedWallOverride = wallCabinetWidthOverride(node, width + gap, sceneApi);
|
|
952
|
+
if (selectedWallOverride)
|
|
953
|
+
overrides.push(selectedWallOverride);
|
|
954
|
+
return overrides;
|
|
955
|
+
}
|
|
956
|
+
function previewCabinetCornerWidthOverrides(node, initialOverrides, sceneApi) {
|
|
957
|
+
const parent = node.parentId
|
|
958
|
+
? sceneApi.get(node.parentId)
|
|
959
|
+
: undefined;
|
|
960
|
+
if (!parent || !isCabinetRun(parent))
|
|
961
|
+
return initialOverrides;
|
|
962
|
+
return previewCornerRunsFromRunSources({
|
|
963
|
+
baseLayout: 'width-only',
|
|
964
|
+
initialOverrides,
|
|
965
|
+
previousModules: cabinetModulesForRun(parent, sceneApi.nodes()),
|
|
966
|
+
run: parent,
|
|
967
|
+
sceneApi,
|
|
968
|
+
});
|
|
969
|
+
}
|
|
970
|
+
function cabinetManualWidthReflow(node, width, side, sceneApi) {
|
|
971
|
+
const context = cabinetManualWidthContext(node, sceneApi);
|
|
972
|
+
if (!context)
|
|
973
|
+
return null;
|
|
974
|
+
const wallGap = cabinetWallWidthGap(node, side, sceneApi);
|
|
975
|
+
const selectedWidth = width + wallGap;
|
|
976
|
+
const runConstraints = runWallConstraints(context.run, context.modules, sceneApi.nodes(), { widthGrowth: Math.max(0, selectedWidth - context.selected.width) });
|
|
977
|
+
const draggedEnd = side === 'right' ? runConstraints.right : runConstraints.left;
|
|
978
|
+
const clampedSelectedWidth = selectedWidth > context.selected.width && draggedEnd.constrained
|
|
979
|
+
? Math.min(selectedWidth, context.selected.width + draggedEnd.slack)
|
|
980
|
+
: selectedWidth;
|
|
981
|
+
const reflowed = reflowCabinetRunModules(context.modules, context.selected.id, clampedSelectedWidth, {
|
|
982
|
+
resizeSide: side,
|
|
983
|
+
consumeAdjacentGap: true,
|
|
984
|
+
eligibleDonorIds: new Set(),
|
|
985
|
+
maximumWidth: MAX_CABINET_WIDTH,
|
|
986
|
+
});
|
|
987
|
+
return reflowed.length > 0 ? { ...context, reflowed, wallGap } : null;
|
|
988
|
+
}
|
|
989
|
+
function commitCabinetManualWidth(node, width, side, sceneApi) {
|
|
990
|
+
const reflow = cabinetManualWidthReflow(node, width, side, sceneApi);
|
|
991
|
+
if (!reflow)
|
|
992
|
+
return;
|
|
993
|
+
const reflowById = new Map(reflow.reflowed.map((entry) => [entry.id, entry]));
|
|
994
|
+
for (const module of reflow.modules) {
|
|
995
|
+
const next = reflowById.get(module.id);
|
|
996
|
+
if (!next)
|
|
997
|
+
continue;
|
|
998
|
+
const isSelected = module.id === reflow.selected.id;
|
|
999
|
+
const modulePatch = {
|
|
1000
|
+
width: next.width,
|
|
1001
|
+
position: next.position,
|
|
1002
|
+
};
|
|
1003
|
+
if (isSelected) {
|
|
1004
|
+
modulePatch.metadata = metadataForSelectedWidth(module, next.width);
|
|
1005
|
+
}
|
|
1006
|
+
else if (Math.abs(next.width - module.width) > 1e-4) {
|
|
1007
|
+
modulePatch.metadata = metadataWithPresetWidthDebt(module, reflow.selected.id, next.width - module.width);
|
|
1008
|
+
}
|
|
1009
|
+
const nestedCornerOverrides = nestedCornerRunPositionOverrides(module, next.position, sceneApi.nodes());
|
|
1010
|
+
sceneApi.update(module.id, modulePatch);
|
|
1011
|
+
for (const [id, override] of nestedCornerOverrides) {
|
|
1012
|
+
sceneApi.update(id, override);
|
|
1013
|
+
}
|
|
1014
|
+
const wallChild = wallChildOf(module, sceneApi.nodes());
|
|
1015
|
+
if (wallChild) {
|
|
1016
|
+
sceneApi.update(wallChild.id, {
|
|
1017
|
+
width: next.width,
|
|
1018
|
+
position: [0, wallChild.position[1], backAlignZ(module.depth, wallChild.depth)],
|
|
1019
|
+
});
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
syncCornerRunsFromRunSources({
|
|
1023
|
+
baseLayout: 'width-only',
|
|
1024
|
+
previousModules: reflow.modules,
|
|
1025
|
+
run: sceneApi.get(reflow.run.id) ?? reflow.run,
|
|
1026
|
+
sceneApi,
|
|
1027
|
+
});
|
|
1028
|
+
bumpCabinetRunLayoutRevision(sceneApi, reflow.run);
|
|
1029
|
+
}
|
|
810
1030
|
function cabinetWidthHandle(side) {
|
|
811
1031
|
const sign = side === 'right' ? 1 : -1;
|
|
812
1032
|
return {
|
|
@@ -816,26 +1036,40 @@ function cabinetWidthHandle(side) {
|
|
|
816
1036
|
min: (node, sceneApi) => {
|
|
817
1037
|
if (!isCabinetModule(node))
|
|
818
1038
|
return MIN_CABINET_WIDTH;
|
|
819
|
-
const gap =
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
const connectedMax = cabinetResizeUpperBound(connected.width, MAX_CABINET_WIDTH);
|
|
824
|
-
return Math.max(MIN_CABINET_WIDTH - gap, node.width - (connectedMax - connected.width));
|
|
1039
|
+
const gap = cabinetWidthIsNestedModule(node, sceneApi)
|
|
1040
|
+
? 0
|
|
1041
|
+
: cabinetWallWidthGap(node, side, sceneApi);
|
|
1042
|
+
return MIN_CABINET_WIDTH - gap;
|
|
825
1043
|
},
|
|
826
1044
|
max: (node, sceneApi) => {
|
|
827
1045
|
const ownMax = cabinetResizeUpperBound(node.width, MAX_CABINET_WIDTH);
|
|
828
1046
|
if (!isCabinetModule(node))
|
|
829
1047
|
return ownMax;
|
|
830
|
-
const gap =
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
return Math.min(ownMax - gap, node.width + connected.width - MIN_CABINET_WIDTH);
|
|
1048
|
+
const gap = cabinetWidthIsNestedModule(node, sceneApi)
|
|
1049
|
+
? 0
|
|
1050
|
+
: cabinetWallWidthGap(node, side, sceneApi);
|
|
1051
|
+
return ownMax - gap;
|
|
835
1052
|
},
|
|
1053
|
+
magneticSnap: (node, width, sceneApi) => isCabinetModule(node) ? snapCabinetWidth(node, width, side, sceneApi) : width,
|
|
836
1054
|
currentValue: (node) => node.width,
|
|
837
|
-
apply: (node, width, sceneApi) => {
|
|
838
|
-
|
|
1055
|
+
apply: (node, width, sceneApi, modifiers) => {
|
|
1056
|
+
if (isCabinetModule(node) && modifiers?.altKey) {
|
|
1057
|
+
return cabinetIndependentWidthPatch(node, width, side, sceneApi);
|
|
1058
|
+
}
|
|
1059
|
+
if (isCabinetModule(node) &&
|
|
1060
|
+
cabinetManualWidthContext(node, sceneApi) &&
|
|
1061
|
+
!cabinetWidthIsNestedModule(node, sceneApi)) {
|
|
1062
|
+
const reflow = cabinetManualWidthReflow(node, width, side, sceneApi);
|
|
1063
|
+
if (reflow) {
|
|
1064
|
+
const selected = reflow.reflowed.find((entry) => entry.id === reflow.selected.id);
|
|
1065
|
+
if (selected)
|
|
1066
|
+
return { width: selected.width, position: selected.position };
|
|
1067
|
+
}
|
|
1068
|
+
return { width: node.width, position: node.position };
|
|
1069
|
+
}
|
|
1070
|
+
const gap = isCabinetModule(node) && !cabinetWidthIsNestedModule(node, sceneApi)
|
|
1071
|
+
? cabinetWallWidthGap(node, side, sceneApi)
|
|
1072
|
+
: 0;
|
|
839
1073
|
const effectiveWidth = width + gap;
|
|
840
1074
|
return {
|
|
841
1075
|
width: effectiveWidth,
|
|
@@ -846,14 +1080,67 @@ function cabinetWidthHandle(side) {
|
|
|
846
1080
|
],
|
|
847
1081
|
};
|
|
848
1082
|
},
|
|
849
|
-
previewOverrides: (node, width, sceneApi) => {
|
|
1083
|
+
previewOverrides: (node, width, sceneApi, modifiers) => {
|
|
850
1084
|
if (!isCabinetModule(node))
|
|
851
1085
|
return [];
|
|
1086
|
+
if (modifiers?.altKey) {
|
|
1087
|
+
return previewCabinetCornerWidthOverrides(node, cabinetIndependentWidthPreviewOverrides(node, width, side, sceneApi), sceneApi);
|
|
1088
|
+
}
|
|
1089
|
+
if (cabinetWidthIsNestedModule(node, sceneApi)) {
|
|
1090
|
+
const parentRunOverride = parentRunGeometryPreviewOverride(node, sceneApi);
|
|
1091
|
+
return parentRunOverride ? [parentRunOverride] : [];
|
|
1092
|
+
}
|
|
1093
|
+
const reflow = cabinetManualWidthReflow(node, width, side, sceneApi);
|
|
1094
|
+
if (reflow) {
|
|
1095
|
+
const overrides = [];
|
|
1096
|
+
const parentRunOverride = parentRunGeometryPreviewOverride(node, sceneApi);
|
|
1097
|
+
if (parentRunOverride)
|
|
1098
|
+
overrides.push(parentRunOverride);
|
|
1099
|
+
for (const entry of reflow.reflowed) {
|
|
1100
|
+
const module = reflow.modules.find((candidate) => candidate.id === entry.id);
|
|
1101
|
+
if (!module)
|
|
1102
|
+
continue;
|
|
1103
|
+
overrides.push([
|
|
1104
|
+
module.id,
|
|
1105
|
+
{ width: entry.width, position: entry.position },
|
|
1106
|
+
]);
|
|
1107
|
+
overrides.push(...nestedCornerRunPositionOverrides(module, entry.position, sceneApi.nodes()));
|
|
1108
|
+
const wallChild = wallChildOf(module, sceneApi.nodes());
|
|
1109
|
+
if (wallChild) {
|
|
1110
|
+
overrides.push([
|
|
1111
|
+
wallChild.id,
|
|
1112
|
+
{
|
|
1113
|
+
width: entry.width,
|
|
1114
|
+
position: [0, wallChild.position[1], backAlignZ(module.depth, wallChild.depth)],
|
|
1115
|
+
},
|
|
1116
|
+
]);
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
return previewCabinetCornerWidthOverrides(node, overrides, sceneApi);
|
|
1120
|
+
}
|
|
1121
|
+
if (cabinetManualWidthContext(node, sceneApi)) {
|
|
1122
|
+
const parentRunOverride = parentRunGeometryPreviewOverride(node, sceneApi);
|
|
1123
|
+
return parentRunOverride ? [parentRunOverride] : [];
|
|
1124
|
+
}
|
|
852
1125
|
const overrides = [];
|
|
853
1126
|
const parentRunOverride = parentRunGeometryPreviewOverride(node, sceneApi);
|
|
854
1127
|
if (parentRunOverride)
|
|
855
1128
|
overrides.push(parentRunOverride);
|
|
856
1129
|
const gap = cabinetWallWidthGap(node, side, sceneApi);
|
|
1130
|
+
const effectiveWidth = width + gap;
|
|
1131
|
+
const selectedPosition = [
|
|
1132
|
+
node.position[0] + (sign * (effectiveWidth - node.width)) / 2,
|
|
1133
|
+
node.position[1],
|
|
1134
|
+
node.position[2],
|
|
1135
|
+
];
|
|
1136
|
+
overrides.push([
|
|
1137
|
+
node.id,
|
|
1138
|
+
{
|
|
1139
|
+
width: effectiveWidth,
|
|
1140
|
+
position: selectedPosition,
|
|
1141
|
+
},
|
|
1142
|
+
]);
|
|
1143
|
+
overrides.push(...nestedCornerRunPositionOverrides(node, selectedPosition, sceneApi.nodes()));
|
|
857
1144
|
const selectedWallOverride = wallCabinetWidthOverride(node, width + gap, sceneApi);
|
|
858
1145
|
if (selectedWallOverride)
|
|
859
1146
|
overrides.push(selectedWallOverride);
|
|
@@ -863,19 +1150,45 @@ function cabinetWidthHandle(side) {
|
|
|
863
1150
|
connectedResize.module.id,
|
|
864
1151
|
connectedResize.patch,
|
|
865
1152
|
]);
|
|
1153
|
+
overrides.push(...nestedCornerRunPositionOverrides(connectedResize.module, connectedResize.patch.position, sceneApi.nodes()));
|
|
866
1154
|
const connectedWallOverride = wallCabinetWidthOverride(connectedResize.module, connectedResize.patch.width, sceneApi);
|
|
867
1155
|
if (connectedWallOverride)
|
|
868
1156
|
overrides.push(connectedWallOverride);
|
|
869
1157
|
}
|
|
870
|
-
return overrides;
|
|
1158
|
+
return previewCabinetCornerWidthOverrides(node, overrides, sceneApi);
|
|
871
1159
|
},
|
|
872
|
-
commit: (node, patch, sceneApi) => {
|
|
1160
|
+
commit: (node, patch, sceneApi, modifiers) => {
|
|
1161
|
+
if (isCabinetModule(node) && typeof patch.width === 'number' && modifiers?.altKey) {
|
|
1162
|
+
commitCabinetResize(node, {
|
|
1163
|
+
...patch,
|
|
1164
|
+
metadata: metadataForSelectedWidth(node, patch.width, patch.metadata),
|
|
1165
|
+
}, sceneApi);
|
|
1166
|
+
return;
|
|
1167
|
+
}
|
|
1168
|
+
if (isCabinetModule(node) && typeof patch.width === 'number') {
|
|
1169
|
+
if (cabinetWidthIsNestedModule(node, sceneApi)) {
|
|
1170
|
+
commitCabinetResize(node, patch, sceneApi);
|
|
1171
|
+
return;
|
|
1172
|
+
}
|
|
1173
|
+
commitCabinetManualWidth(node, patch.width - cabinetWallWidthGap(node, side, sceneApi), side, sceneApi);
|
|
1174
|
+
return;
|
|
1175
|
+
}
|
|
873
1176
|
const connectedResize = isCabinetModule(node) && typeof patch.width === 'number'
|
|
874
1177
|
? connectedCabinetWidthResize(node, side, patch.width - node.width - cabinetWallWidthGap(node, side, sceneApi), sceneApi)
|
|
875
1178
|
: null;
|
|
876
|
-
|
|
1179
|
+
const selectedPatch = isCabinetModule(node) && typeof patch.width === 'number'
|
|
1180
|
+
? {
|
|
1181
|
+
...patch,
|
|
1182
|
+
metadata: metadataForSelectedWidth(node, patch.width, patch.metadata),
|
|
1183
|
+
}
|
|
1184
|
+
: patch;
|
|
1185
|
+
commitCabinetResize(node, selectedPatch, sceneApi);
|
|
877
1186
|
if (connectedResize) {
|
|
878
|
-
|
|
1187
|
+
const widthDelta = connectedResize.patch.width - connectedResize.module.width;
|
|
1188
|
+
commitCabinetResize(connectedResize.module, {
|
|
1189
|
+
...connectedResize.patch,
|
|
1190
|
+
metadata: metadataWithPresetWidthDebt(connectedResize.module, node.id, widthDelta),
|
|
1191
|
+
}, sceneApi);
|
|
879
1192
|
}
|
|
880
1193
|
},
|
|
881
1194
|
visible: (node, sceneApi) => !isCabinetModule(node) || cabinetModuleSideOpen(node, side, sceneApi),
|
|
@@ -1332,7 +1645,11 @@ function cabinetHeightHandle() {
|
|
|
1332
1645
|
apply: (_node, carcassHeight) => ({ carcassHeight }),
|
|
1333
1646
|
commit: commitCabinetResize,
|
|
1334
1647
|
placement: {
|
|
1335
|
-
position: (node) => [
|
|
1648
|
+
position: (node, sceneApi) => [
|
|
1649
|
+
0,
|
|
1650
|
+
cabinetLocalBounds(node, sceneApi.nodes()).maxY + HEIGHT_HANDLE_OFFSET,
|
|
1651
|
+
0,
|
|
1652
|
+
],
|
|
1336
1653
|
},
|
|
1337
1654
|
};
|
|
1338
1655
|
}
|
|
@@ -1407,25 +1724,40 @@ function isHoodOnlyCabinet(node) {
|
|
|
1407
1724
|
const stack = stackForCabinet(node);
|
|
1408
1725
|
return stack.length > 0 && stack.every((compartment) => isHoodCompartmentType(compartment.type));
|
|
1409
1726
|
}
|
|
1727
|
+
function cabinetModuleHeightHandleVisible(node, sceneApi) {
|
|
1728
|
+
const parent = node.parentId ? sceneApi.get(node.parentId) : undefined;
|
|
1729
|
+
if (isCabinetRun(parent)) {
|
|
1730
|
+
return parent.runTier === 'wall' || resolveCabinetType(node, parent) === 'tall';
|
|
1731
|
+
}
|
|
1732
|
+
return isCabinetModule(parent) && wallChildOf(parent, sceneApi.nodes())?.id === node.id;
|
|
1733
|
+
}
|
|
1410
1734
|
function cabinetModuleHandles() {
|
|
1411
1735
|
return [
|
|
1412
1736
|
{
|
|
1413
1737
|
...cabinetWidthHandle('left'),
|
|
1414
|
-
visible: (node, sceneApi) => !isCabinetWidthFiller(node) &&
|
|
1738
|
+
visible: (node, sceneApi) => !isCabinetWidthFiller(node) &&
|
|
1739
|
+
!cabinetModuleUsesFixedApplianceWidth(node) &&
|
|
1740
|
+
!cabinetModuleSideHasCornerFiller(node, 'left', sceneApi),
|
|
1415
1741
|
},
|
|
1416
1742
|
{
|
|
1417
1743
|
...cabinetWidthHandle('right'),
|
|
1418
|
-
visible: (node, sceneApi) => !isCabinetWidthFiller(node) &&
|
|
1744
|
+
visible: (node, sceneApi) => !isCabinetWidthFiller(node) &&
|
|
1745
|
+
!cabinetModuleUsesFixedApplianceWidth(node) &&
|
|
1746
|
+
!cabinetModuleSideHasCornerFiller(node, 'right', sceneApi),
|
|
1419
1747
|
},
|
|
1420
1748
|
{
|
|
1421
1749
|
...cabinetDepthHandle(),
|
|
1422
1750
|
visible: (node) => !isCabinetWidthFiller(node),
|
|
1423
1751
|
},
|
|
1752
|
+
{
|
|
1753
|
+
...cabinetHeightHandle(),
|
|
1754
|
+
visible: cabinetModuleHeightHandleVisible,
|
|
1755
|
+
},
|
|
1424
1756
|
];
|
|
1425
1757
|
}
|
|
1426
1758
|
export const cabinetDefinition = {
|
|
1427
1759
|
kind: 'cabinet',
|
|
1428
|
-
schemaVersion:
|
|
1760
|
+
schemaVersion: 8,
|
|
1429
1761
|
schema: CabinetNode,
|
|
1430
1762
|
category: 'furnish',
|
|
1431
1763
|
surfaceRole: 'joinery',
|
|
@@ -1441,20 +1773,22 @@ export const cabinetDefinition = {
|
|
|
1441
1773
|
runTier: 'base',
|
|
1442
1774
|
children: [],
|
|
1443
1775
|
width: 0.5,
|
|
1444
|
-
depth:
|
|
1445
|
-
carcassHeight:
|
|
1776
|
+
depth: CABINET_METRIC_DEFAULTS.depth,
|
|
1777
|
+
carcassHeight: CABINET_METRIC_DEFAULTS.carcassHeight,
|
|
1446
1778
|
operationState: 0,
|
|
1447
|
-
plinthHeight:
|
|
1779
|
+
plinthHeight: CABINET_METRIC_DEFAULTS.plinthHeight,
|
|
1448
1780
|
toeKickDepth: 0.075,
|
|
1449
1781
|
boardThickness: 0.018,
|
|
1450
|
-
countertopThickness:
|
|
1782
|
+
countertopThickness: CABINET_METRIC_DEFAULTS.countertopThickness,
|
|
1451
1783
|
countertopOverhang: 0.02,
|
|
1452
1784
|
countertopBackOverhang: 0,
|
|
1453
1785
|
withFinishedBack: false,
|
|
1454
1786
|
withWaterfall: false,
|
|
1787
|
+
withFinishedEnds: false,
|
|
1455
1788
|
frontThickness: 0.018,
|
|
1456
1789
|
frontGap: 0.003,
|
|
1457
1790
|
frontStyle: 'slab',
|
|
1791
|
+
panelReady: false,
|
|
1458
1792
|
handleStyle: 'bar',
|
|
1459
1793
|
handlePosition: 'auto',
|
|
1460
1794
|
frontOverlay: 'full',
|
|
@@ -1467,8 +1801,18 @@ export const cabinetDefinition = {
|
|
|
1467
1801
|
selectable: { hitVolume: 'bbox' },
|
|
1468
1802
|
movable: {
|
|
1469
1803
|
axes: ['x', 'z'],
|
|
1804
|
+
directDrag: true,
|
|
1470
1805
|
gridSnap: true,
|
|
1471
|
-
|
|
1806
|
+
gridSnapPosition: resolveCabinetMoveGridSnap,
|
|
1807
|
+
groupMoveSnapPose: resolveCabinetGroupMoveSnap,
|
|
1808
|
+
isValidPosition: ({ node, position, rotation, levelId, nodes }) => node.type !== 'cabinet' ||
|
|
1809
|
+
!cabinetRunOverlapsWallOpening({
|
|
1810
|
+
levelId,
|
|
1811
|
+
node: node,
|
|
1812
|
+
nodes: nodes,
|
|
1813
|
+
position,
|
|
1814
|
+
rotation,
|
|
1815
|
+
}),
|
|
1472
1816
|
override: ({ node }) => selectionProxyIdFromMetadata(node.metadata)
|
|
1473
1817
|
? { axes: [], gridSnap: false }
|
|
1474
1818
|
: null,
|
|
@@ -1478,10 +1822,7 @@ export const cabinetDefinition = {
|
|
|
1478
1822
|
deletable: true,
|
|
1479
1823
|
surfaces: {
|
|
1480
1824
|
top: {
|
|
1481
|
-
height: (node) =>
|
|
1482
|
-
const n = node;
|
|
1483
|
-
return n.plinthHeight + n.carcassHeight + (n.withCountertop ? n.countertopThickness : 0);
|
|
1484
|
-
},
|
|
1825
|
+
height: (node, context) => cabinetLocalBounds(node, context.nodes).maxY,
|
|
1485
1826
|
},
|
|
1486
1827
|
},
|
|
1487
1828
|
floorPlaced: {
|
|
@@ -1504,7 +1845,7 @@ export const cabinetDefinition = {
|
|
|
1504
1845
|
// Dirty-cascade: a dirtied run re-marks its hosted modules so their
|
|
1505
1846
|
// composite geometry re-flows with the run (see `cascadeDirty`).
|
|
1506
1847
|
relations: {
|
|
1507
|
-
hosts: ['cabinet-module'],
|
|
1848
|
+
hosts: ['cabinet', 'cabinet-module'],
|
|
1508
1849
|
},
|
|
1509
1850
|
parametrics: cabinetParametrics,
|
|
1510
1851
|
handles: cabinetHandles,
|
|
@@ -1529,10 +1870,12 @@ export const cabinetDefinition = {
|
|
|
1529
1870
|
n.countertopBackOverhang,
|
|
1530
1871
|
n.withFinishedBack,
|
|
1531
1872
|
n.withWaterfall,
|
|
1873
|
+
n.withFinishedEnds,
|
|
1532
1874
|
JSON.stringify(n.barLedge ?? null),
|
|
1533
1875
|
n.frontThickness,
|
|
1534
1876
|
n.frontGap,
|
|
1535
1877
|
n.frontStyle,
|
|
1878
|
+
n.panelReady,
|
|
1536
1879
|
n.handleStyle,
|
|
1537
1880
|
n.handlePosition,
|
|
1538
1881
|
n.frontOverlay,
|
|
@@ -1601,7 +1944,7 @@ export const cabinetDefinition = {
|
|
|
1601
1944
|
};
|
|
1602
1945
|
export const cabinetModuleDefinition = {
|
|
1603
1946
|
kind: 'cabinet-module',
|
|
1604
|
-
schemaVersion:
|
|
1947
|
+
schemaVersion: 5,
|
|
1605
1948
|
schema: CabinetModuleNode,
|
|
1606
1949
|
category: 'furnish',
|
|
1607
1950
|
surfaceRole: 'joinery',
|
|
@@ -1617,8 +1960,8 @@ export const cabinetModuleDefinition = {
|
|
|
1617
1960
|
children: [],
|
|
1618
1961
|
cabinetType: 'base',
|
|
1619
1962
|
width: 0.5,
|
|
1620
|
-
depth:
|
|
1621
|
-
carcassHeight:
|
|
1963
|
+
depth: CABINET_METRIC_DEFAULTS.depth,
|
|
1964
|
+
carcassHeight: CABINET_METRIC_DEFAULTS.carcassHeight,
|
|
1622
1965
|
operationState: 0,
|
|
1623
1966
|
plinthHeight: 0,
|
|
1624
1967
|
toeKickDepth: 0.075,
|
|
@@ -1632,7 +1975,11 @@ export const cabinetModuleDefinition = {
|
|
|
1632
1975
|
moduleKind: 'standard',
|
|
1633
1976
|
openSide: undefined,
|
|
1634
1977
|
cornerShelf: false,
|
|
1978
|
+
topFinish: 'none',
|
|
1979
|
+
topFinishHeight: CabinetModuleNode.parse({}).topFinishHeight,
|
|
1980
|
+
topFinishDepth: 0.32,
|
|
1635
1981
|
frontStyle: 'slab',
|
|
1982
|
+
panelReady: false,
|
|
1636
1983
|
handleStyle: 'bar',
|
|
1637
1984
|
handlePosition: 'auto',
|
|
1638
1985
|
frontOverlay: 'full',
|
|
@@ -1645,9 +1992,10 @@ export const cabinetModuleDefinition = {
|
|
|
1645
1992
|
selectable: { hitVolume: 'bbox' },
|
|
1646
1993
|
movable: {
|
|
1647
1994
|
axes: ['x', 'z'],
|
|
1995
|
+
directDrag: true,
|
|
1648
1996
|
gridSnap: true,
|
|
1649
1997
|
parentFrame: cabinetModuleParentFrame,
|
|
1650
|
-
|
|
1998
|
+
groupMoveSnapPose: resolveCabinetModuleGroupMoveSnap,
|
|
1651
1999
|
override: ({ node }) => selectionProxyIdFromMetadata(node.metadata)
|
|
1652
2000
|
? { axes: [], gridSnap: false }
|
|
1653
2001
|
: null,
|
|
@@ -1660,13 +2008,7 @@ export const cabinetModuleDefinition = {
|
|
|
1660
2008
|
footprint: (node) => {
|
|
1661
2009
|
const n = node;
|
|
1662
2010
|
return {
|
|
1663
|
-
dimensions: [
|
|
1664
|
-
n.width,
|
|
1665
|
-
(n.showPlinth ? n.plinthHeight : 0) +
|
|
1666
|
-
n.carcassHeight +
|
|
1667
|
-
(n.withCountertop ? n.countertopThickness : 0),
|
|
1668
|
-
n.depth,
|
|
1669
|
-
],
|
|
2011
|
+
dimensions: [n.width, cabinetModuleTotalHeight(n), n.depth],
|
|
1670
2012
|
rotation: [0, n.rotation, 0],
|
|
1671
2013
|
};
|
|
1672
2014
|
},
|
|
@@ -1699,6 +2041,7 @@ export const cabinetModuleDefinition = {
|
|
|
1699
2041
|
n.frontThickness,
|
|
1700
2042
|
n.frontGap,
|
|
1701
2043
|
n.frontStyle,
|
|
2044
|
+
n.panelReady,
|
|
1702
2045
|
n.handleStyle,
|
|
1703
2046
|
n.handlePosition,
|
|
1704
2047
|
n.frontOverlay,
|
|
@@ -1707,6 +2050,9 @@ export const cabinetModuleDefinition = {
|
|
|
1707
2050
|
n.withCountertop,
|
|
1708
2051
|
n.openSide ?? null,
|
|
1709
2052
|
n.cornerShelf ?? false,
|
|
2053
|
+
n.topFinish,
|
|
2054
|
+
n.topFinishHeight,
|
|
2055
|
+
n.topFinishDepth,
|
|
1710
2056
|
JSON.stringify(n.material ?? null),
|
|
1711
2057
|
JSON.stringify(n.materialPreset ?? null),
|
|
1712
2058
|
JSON.stringify(n.slots ?? null),
|