@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
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type AnyNode, type DormerEvent, type DormerNode, type WindowEvent, type WindowNode } from '@pascal-app/core';
|
|
2
|
+
import { type Object3D, Vector3 } from 'three';
|
|
3
|
+
export type DormerWindowTarget = {
|
|
4
|
+
dormer: DormerNode;
|
|
5
|
+
face: NonNullable<WindowNode['dormerFace']>;
|
|
6
|
+
position: [number, number, number];
|
|
7
|
+
valid: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function dormerEventFromHostedWindow(event: WindowEvent, dormer: DormerNode, object: Object3D): DormerEvent;
|
|
10
|
+
export declare function getDormerWindowWorldYaw(event: DormerEvent, target: DormerWindowTarget): number;
|
|
11
|
+
export declare function getDormerWindowWorldNormal(event: DormerEvent, target: DormerWindowTarget, out?: Vector3): Vector3;
|
|
12
|
+
export declare function shouldWriteDormerWindowPreviewHost(node: WindowNode, target: DormerWindowTarget): boolean;
|
|
13
|
+
export declare function resolveDormerWindowTarget(args: {
|
|
14
|
+
event: DormerEvent;
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
nodes: Readonly<Record<string, AnyNode>>;
|
|
18
|
+
ignoreId?: string;
|
|
19
|
+
snap?: (value: number) => number;
|
|
20
|
+
}): DormerWindowTarget | null;
|
|
21
|
+
//# sourceMappingURL=dormer-wall-opening-placement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dormer-wall-opening-placement.d.ts","sourceRoot":"","sources":["../../src/shared/dormer-wall-opening-placement.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EAIf,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,UAAU,CAAA;IAClB,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;IAC3C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAID,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,QAAQ,GACf,WAAW,CAuBb;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAG9F;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,kBAAkB,EAC1B,GAAG,UAAmB,GACrB,OAAO,CAMT;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAUT;AAqDD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CACjC,GAAG,kBAAkB,GAAG,IAAI,CAuB5B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { dormerPointToWallFace, getDormerWallFaceFrame, getDormerWallOpeningVerticalBounds, } from '@pascal-app/core';
|
|
2
|
+
import { Vector3 } from 'three';
|
|
3
|
+
const dormerFaceNormal = new Vector3();
|
|
4
|
+
export function dormerEventFromHostedWindow(event, dormer, object) {
|
|
5
|
+
object.updateWorldMatrix(true, false);
|
|
6
|
+
const localPoint = object.worldToLocal(new Vector3(...event.position));
|
|
7
|
+
const face = event.node.dormerFace ?? 'front';
|
|
8
|
+
const normal = face === 'front'
|
|
9
|
+
? [0, 0, 1]
|
|
10
|
+
: face === 'back'
|
|
11
|
+
? [0, 0, -1]
|
|
12
|
+
: face === 'right'
|
|
13
|
+
? [1, 0, 0]
|
|
14
|
+
: [-1, 0, 0];
|
|
15
|
+
return {
|
|
16
|
+
node: dormer,
|
|
17
|
+
normal,
|
|
18
|
+
object,
|
|
19
|
+
position: event.position,
|
|
20
|
+
localPosition: [localPoint.x, localPoint.y, localPoint.z],
|
|
21
|
+
faceIndex: event.faceIndex,
|
|
22
|
+
nativeEvent: event.nativeEvent,
|
|
23
|
+
stopPropagation: event.stopPropagation,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function getDormerWindowWorldYaw(event, target) {
|
|
27
|
+
const normal = getDormerWindowWorldNormal(event, target);
|
|
28
|
+
return Math.atan2(normal.x, normal.z);
|
|
29
|
+
}
|
|
30
|
+
export function getDormerWindowWorldNormal(event, target, out = dormerFaceNormal) {
|
|
31
|
+
const frame = getDormerWallFaceFrame(event.node, target.face);
|
|
32
|
+
event.object.updateWorldMatrix(true, false);
|
|
33
|
+
return out
|
|
34
|
+
.set(Math.sin(frame.yaw), 0, Math.cos(frame.yaw))
|
|
35
|
+
.transformDirection(event.object.matrixWorld);
|
|
36
|
+
}
|
|
37
|
+
export function shouldWriteDormerWindowPreviewHost(node, target) {
|
|
38
|
+
return (node.parentId !== target.dormer.id ||
|
|
39
|
+
node.dormerId !== target.dormer.id ||
|
|
40
|
+
node.dormerFace !== target.face ||
|
|
41
|
+
node.wallId !== undefined ||
|
|
42
|
+
node.roofSegmentId !== undefined ||
|
|
43
|
+
node.roofFace !== undefined ||
|
|
44
|
+
node.visible !== false);
|
|
45
|
+
}
|
|
46
|
+
function faceFromNormal(normal) {
|
|
47
|
+
if (!normal)
|
|
48
|
+
return null;
|
|
49
|
+
const [x, , z] = normal;
|
|
50
|
+
if (Math.abs(z) >= Math.abs(x))
|
|
51
|
+
return z >= 0 ? 'front' : 'back';
|
|
52
|
+
return x >= 0 ? 'right' : 'left';
|
|
53
|
+
}
|
|
54
|
+
function faceFromPoint(dormer, point) {
|
|
55
|
+
const distances = [
|
|
56
|
+
{ face: 'front', distance: Math.abs(point[2] - dormer.depth / 2) },
|
|
57
|
+
{ face: 'back', distance: Math.abs(point[2] + dormer.depth / 2) },
|
|
58
|
+
{ face: 'right', distance: Math.abs(point[0] - dormer.width / 2) },
|
|
59
|
+
{ face: 'left', distance: Math.abs(point[0] + dormer.width / 2) },
|
|
60
|
+
];
|
|
61
|
+
return distances.reduce((closest, current) => current.distance < closest.distance ? current : closest).face;
|
|
62
|
+
}
|
|
63
|
+
function hasWindowOverlap(dormer, nodes, face, position, width, height, ignoreId) {
|
|
64
|
+
const left = position[0] - width / 2;
|
|
65
|
+
const right = position[0] + width / 2;
|
|
66
|
+
const bottom = position[1] - height / 2;
|
|
67
|
+
const top = position[1] + height / 2;
|
|
68
|
+
return (dormer.children ?? []).some((childId) => {
|
|
69
|
+
if (childId === ignoreId)
|
|
70
|
+
return false;
|
|
71
|
+
const child = nodes[childId];
|
|
72
|
+
if (child?.type !== 'window' || child.dormerFace !== face)
|
|
73
|
+
return false;
|
|
74
|
+
return (Math.abs(child.position[0] - position[0]) < (child.width + width) / 2 &&
|
|
75
|
+
Math.abs(child.position[1] - position[1]) < (child.height + height) / 2 &&
|
|
76
|
+
child.position[0] + child.width / 2 > left &&
|
|
77
|
+
child.position[0] - child.width / 2 < right &&
|
|
78
|
+
child.position[1] + child.height / 2 > bottom &&
|
|
79
|
+
child.position[1] - child.height / 2 < top);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
export function resolveDormerWindowTarget(args) {
|
|
83
|
+
const { event, width, height, nodes, ignoreId, snap = (value) => value } = args;
|
|
84
|
+
const face = faceFromNormal(event.normal) ?? faceFromPoint(event.node, event.localPosition);
|
|
85
|
+
const point = dormerPointToWallFace(event.node, face, event.localPosition);
|
|
86
|
+
const frame = getDormerWallFaceFrame(event.node, face);
|
|
87
|
+
const clampedX = Math.max(-frame.width / 2 + width / 2, Math.min(frame.width / 2 - width / 2, snap(point[0])));
|
|
88
|
+
const vertical = getDormerWallOpeningVerticalBounds(event.node, face, clampedX, width);
|
|
89
|
+
const minY = vertical.min + height / 2;
|
|
90
|
+
const maxY = vertical.max - height / 2;
|
|
91
|
+
if (maxY < minY)
|
|
92
|
+
return null;
|
|
93
|
+
const clampedY = Math.max(minY, Math.min(maxY, snap(point[1])));
|
|
94
|
+
const position = [clampedX, clampedY, 0];
|
|
95
|
+
return {
|
|
96
|
+
dormer: event.node,
|
|
97
|
+
face,
|
|
98
|
+
position,
|
|
99
|
+
valid: !hasWindowOverlap(event.node, nodes, face, position, width, height, ignoreId),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DuctFittingNode } from '@pascal-app/core';
|
|
2
|
+
import { Vector3 } from 'three';
|
|
3
|
+
import { type DuctProfile } from './auto-fitting';
|
|
4
|
+
import type { ScenePort } from './ports';
|
|
5
|
+
export declare function ductProfilesMatch(a: DuctProfile, b: DuctProfile): boolean;
|
|
6
|
+
export declare function planDuctAdapter(port: ScenePort, source: DuctProfile, target: DuctProfile, widthAxis?: Vector3): {
|
|
7
|
+
fitting: DuctFittingNode;
|
|
8
|
+
collarPoint: [number, number, number];
|
|
9
|
+
} | null;
|
|
10
|
+
//# sourceMappingURL=duct-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duct-adapter.d.ts","sourceRoot":"","sources":["../../src/shared/duct-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAkB,OAAO,EAAE,MAAM,OAAO,CAAA;AAG/C,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,gBAAgB,CAAA;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAOzE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,OAAO,GAClB;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,IAAI,CA6B5E"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { DuctFittingNode } from '@pascal-app/core';
|
|
2
|
+
import { Euler, Matrix4, Vector3 } from 'three';
|
|
3
|
+
import { fittingLegLength } from '../duct-fitting/ports';
|
|
4
|
+
import { rectSectionAxes } from '../duct-segment/geometry';
|
|
5
|
+
import { profileDiameterIn } from './auto-fitting';
|
|
6
|
+
export function ductProfilesMatch(a, b) {
|
|
7
|
+
return (a.shape === b.shape &&
|
|
8
|
+
(a.shape === 'round'
|
|
9
|
+
? Math.abs(a.diameter - b.diameter) < 1e-5
|
|
10
|
+
: Math.abs(a.width - b.width) < 1e-5 && Math.abs(a.height - b.height) < 1e-5));
|
|
11
|
+
}
|
|
12
|
+
export function planDuctAdapter(port, source, target, widthAxis) {
|
|
13
|
+
if (ductProfilesMatch(source, target))
|
|
14
|
+
return null;
|
|
15
|
+
const axis = new Vector3(...port.direction).normalize();
|
|
16
|
+
if (axis.lengthSq() < 1e-10)
|
|
17
|
+
return null;
|
|
18
|
+
const width = widthAxis?.clone() ?? rectSectionAxes(axis).width;
|
|
19
|
+
const height = new Vector3().crossVectors(width, axis).normalize();
|
|
20
|
+
const rotation = new Euler().setFromRotationMatrix(new Matrix4().makeBasis(axis, height, width));
|
|
21
|
+
const diameter = profileDiameterIn(source);
|
|
22
|
+
const leg = fittingLegLength(diameter);
|
|
23
|
+
const position = new Vector3(...port.position).addScaledVector(axis, leg);
|
|
24
|
+
const fittingType = source.shape === target.shape ? 'reducer' : 'transition';
|
|
25
|
+
const fitting = DuctFittingNode.parse({
|
|
26
|
+
fittingType,
|
|
27
|
+
name: fittingType === 'reducer' ? 'Reducer' : 'Transition',
|
|
28
|
+
position: position.toArray(),
|
|
29
|
+
rotation: [rotation.x, rotation.y, rotation.z],
|
|
30
|
+
inletShape: source.shape,
|
|
31
|
+
outletShape: target.shape,
|
|
32
|
+
shape: source.shape,
|
|
33
|
+
shape2: target.shape,
|
|
34
|
+
diameter,
|
|
35
|
+
diameter2: profileDiameterIn(target),
|
|
36
|
+
width: source.width,
|
|
37
|
+
height: source.height,
|
|
38
|
+
width2: target.width,
|
|
39
|
+
height2: target.height,
|
|
40
|
+
system: port.system === 'return' ? 'return' : 'supply',
|
|
41
|
+
});
|
|
42
|
+
return { fitting, collarPoint: position.addScaledVector(axis, leg).toArray() };
|
|
43
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type AnyNode, type AnyNodeId, DuctFittingNode, PipeFittingNode } from '@pascal-app/core';
|
|
2
|
+
import type { ScenePort } from './ports';
|
|
3
|
+
type Point = [number, number, number];
|
|
4
|
+
export type ElbowBranchPromotion<T> = {
|
|
5
|
+
fitting: T;
|
|
6
|
+
continuationPort: ScenePort;
|
|
7
|
+
};
|
|
8
|
+
export type RunContinuationHandlePlan = {
|
|
9
|
+
position: Point;
|
|
10
|
+
fittingId?: AnyNodeId;
|
|
11
|
+
};
|
|
12
|
+
export declare function findMatedScenePorts(source: ScenePort, nodes: Readonly<Record<string, AnyNode>>): ScenePort[];
|
|
13
|
+
export declare function resolveDuctContinuationHandle(source: ScenePort, nodes: Readonly<Record<string, AnyNode>>, gap: number): RunContinuationHandlePlan | null;
|
|
14
|
+
export declare function resolvePipeContinuationHandle(source: ScenePort, nodes: Readonly<Record<string, AnyNode>>, gap: number): RunContinuationHandlePlan | null;
|
|
15
|
+
export declare function planDuctElbowBranchPromotion(elbow: DuctFittingNode, connectedPortId: string): ElbowBranchPromotion<DuctFittingNode> | null;
|
|
16
|
+
export declare function planPipeElbowBranchPromotion(elbow: PipeFittingNode, connectedPortId: string): ElbowBranchPromotion<PipeFittingNode> | null;
|
|
17
|
+
export declare function planDuctTeeCrossPromotion(tee: DuctFittingNode): ElbowBranchPromotion<DuctFittingNode> | null;
|
|
18
|
+
export declare function planPipeTeeCrossPromotion(tee: PipeFittingNode): ElbowBranchPromotion<PipeFittingNode> | null;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=elbow-branch-continuation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elbow-branch-continuation.d.ts","sourceRoot":"","sources":["../../src/shared/elbow-branch-continuation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,eAAe,EAEf,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAErC,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IACpC,OAAO,EAAE,CAAC,CAAA;IACV,gBAAgB,EAAE,SAAS,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,KAAK,CAAA;IACf,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,CAAA;AAID,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,SAAS,EAAE,CAkBb;AAqDD,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,GAAG,EAAE,MAAM,GACV,yBAAyB,GAAG,IAAI,CASlC;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,GAAG,EAAE,MAAM,GACV,yBAAyB,GAAG,IAAI,CASlC;AAuCD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,eAAe,EACtB,eAAe,EAAE,MAAM,GACtB,oBAAoB,CAAC,eAAe,CAAC,GAAG,IAAI,CAqC9C;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,eAAe,EACtB,eAAe,EAAE,MAAM,GACtB,oBAAoB,CAAC,eAAe,CAAC,GAAG,IAAI,CA8B9C;AAED,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,GACnB,oBAAoB,CAAC,eAAe,CAAC,GAAG,IAAI,CAU9C;AAED,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,GACnB,oBAAoB,CAAC,eAAe,CAAC,GAAG,IAAI,CAU9C"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { DuctFittingNode, nodeRegistry, PipeFittingNode, } from '@pascal-app/core';
|
|
2
|
+
import { Euler, Matrix4, Quaternion, Vector3 } from 'three';
|
|
3
|
+
import { getDuctFittingPorts } from '../duct-fitting/ports';
|
|
4
|
+
import { getPipeFittingPorts, WYE_BRANCH_RAD } from '../pipe-fitting/ports';
|
|
5
|
+
const MATE_TOLERANCE_M = 0.05;
|
|
6
|
+
export function findMatedScenePorts(source, nodes) {
|
|
7
|
+
const toleranceSq = MATE_TOLERANCE_M * MATE_TOLERANCE_M;
|
|
8
|
+
const mates = [];
|
|
9
|
+
for (const node of Object.values(nodes)) {
|
|
10
|
+
if (!node || node.id === source.nodeId)
|
|
11
|
+
continue;
|
|
12
|
+
const ports = nodeRegistry.get(node.type)?.ports?.(node);
|
|
13
|
+
if (!ports)
|
|
14
|
+
continue;
|
|
15
|
+
for (const port of ports) {
|
|
16
|
+
if (source.system && port.system && source.system !== port.system)
|
|
17
|
+
continue;
|
|
18
|
+
const dx = source.position[0] - port.position[0];
|
|
19
|
+
const dy = source.position[1] - port.position[1];
|
|
20
|
+
const dz = source.position[2] - port.position[2];
|
|
21
|
+
if (dx * dx + dy * dy + dz * dz <= toleranceSq) {
|
|
22
|
+
mates.push({ ...port, nodeId: node.id });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return mates;
|
|
27
|
+
}
|
|
28
|
+
function handlePosition(port, gap) {
|
|
29
|
+
return [
|
|
30
|
+
port.position[0] + port.direction[0] * gap,
|
|
31
|
+
port.position[1] + port.direction[1] * gap,
|
|
32
|
+
port.position[2] + port.direction[2] * gap,
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
function allPortsOccupied(fitting, nodes) {
|
|
36
|
+
const ports = nodeRegistry.get(fitting.type)?.ports?.(fitting) ?? [];
|
|
37
|
+
return ports.every((port) => findMatedScenePorts({ ...port, nodeId: fitting.id }, nodes).length > 0);
|
|
38
|
+
}
|
|
39
|
+
function resolveFittingExpansionHandle(source, nodes, gap, fittingType, promoteElbow, promoteTee) {
|
|
40
|
+
const mates = findMatedScenePorts(source, nodes);
|
|
41
|
+
if (mates.length === 0)
|
|
42
|
+
return { position: handlePosition(source, gap) };
|
|
43
|
+
for (const mate of mates) {
|
|
44
|
+
const fitting = nodes[mate.nodeId];
|
|
45
|
+
if (fitting?.type !== fittingType)
|
|
46
|
+
continue;
|
|
47
|
+
if (fitting.fittingType === 'end-cap') {
|
|
48
|
+
return {
|
|
49
|
+
position: handlePosition(source, gap),
|
|
50
|
+
fittingId: fitting.id,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const promotion = fitting.fittingType === 'elbow'
|
|
54
|
+
? promoteElbow(fitting, mate.id)
|
|
55
|
+
: promoteTee(fitting);
|
|
56
|
+
if (!promotion)
|
|
57
|
+
continue;
|
|
58
|
+
if (!allPortsOccupied(fitting, nodes))
|
|
59
|
+
continue;
|
|
60
|
+
return {
|
|
61
|
+
position: handlePosition(promotion.continuationPort, gap),
|
|
62
|
+
fittingId: fitting.id,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
export function resolveDuctContinuationHandle(source, nodes, gap) {
|
|
68
|
+
return resolveFittingExpansionHandle(source, nodes, gap, 'duct-fitting', planDuctElbowBranchPromotion, planDuctTeeCrossPromotion);
|
|
69
|
+
}
|
|
70
|
+
export function resolvePipeContinuationHandle(source, nodes, gap) {
|
|
71
|
+
return resolveFittingExpansionHandle(source, nodes, gap, 'pipe-fitting', planPipeElbowBranchPromotion, planPipeTeeCrossPromotion);
|
|
72
|
+
}
|
|
73
|
+
function frame(primary, reference) {
|
|
74
|
+
const x = primary.clone().normalize();
|
|
75
|
+
const z = new Vector3().crossVectors(x, reference);
|
|
76
|
+
if (z.lengthSq() < 1e-10)
|
|
77
|
+
return null;
|
|
78
|
+
z.normalize();
|
|
79
|
+
const y = new Vector3().crossVectors(z, x);
|
|
80
|
+
return new Matrix4().makeBasis(x, y, z);
|
|
81
|
+
}
|
|
82
|
+
function branchRotation(growthDirection, existingBranchDirection, localBranchDirection) {
|
|
83
|
+
const localFrame = frame(new Vector3(1, 0, 0), localBranchDirection);
|
|
84
|
+
const worldFrame = frame(growthDirection, existingBranchDirection);
|
|
85
|
+
if (!localFrame || !worldFrame)
|
|
86
|
+
return null;
|
|
87
|
+
const rotation = new Quaternion().setFromRotationMatrix(worldFrame.multiply(localFrame.transpose()));
|
|
88
|
+
const euler = new Euler().setFromQuaternion(rotation);
|
|
89
|
+
return [euler.x, euler.y, euler.z];
|
|
90
|
+
}
|
|
91
|
+
function elbowDirections(ports, connectedPortId) {
|
|
92
|
+
const connected = ports.find((port) => port.id === connectedPortId);
|
|
93
|
+
const other = ports.find((port) => port.id !== connectedPortId);
|
|
94
|
+
if (!connected || !other)
|
|
95
|
+
return null;
|
|
96
|
+
const growth = new Vector3(...connected.direction).multiplyScalar(-1).normalize();
|
|
97
|
+
const branch = new Vector3(...other.direction).normalize();
|
|
98
|
+
if (growth.lengthSq() < 1e-10 || branch.lengthSq() < 1e-10)
|
|
99
|
+
return null;
|
|
100
|
+
return { growth, branch };
|
|
101
|
+
}
|
|
102
|
+
export function planDuctElbowBranchPromotion(elbow, connectedPortId) {
|
|
103
|
+
if (elbow.fittingType !== 'elbow')
|
|
104
|
+
return null;
|
|
105
|
+
const existingPorts = getDuctFittingPorts(elbow).map((port) => ({
|
|
106
|
+
...port,
|
|
107
|
+
nodeId: elbow.id,
|
|
108
|
+
}));
|
|
109
|
+
const directions = elbowDirections(existingPorts, connectedPortId);
|
|
110
|
+
if (!directions)
|
|
111
|
+
return null;
|
|
112
|
+
const measuredBranchAngle = (directions.growth.angleTo(directions.branch) * 180) / Math.PI;
|
|
113
|
+
if (measuredBranchAngle < 45 - 1e-4 || measuredBranchAngle > 135 + 1e-4)
|
|
114
|
+
return null;
|
|
115
|
+
// The tolerance above intentionally accepts values infinitesimally outside
|
|
116
|
+
// the schema range, so normalize before parsing the generated fitting.
|
|
117
|
+
const branchAngle = Math.min(135, Math.max(45, measuredBranchAngle));
|
|
118
|
+
const phi = (branchAngle * Math.PI) / 180;
|
|
119
|
+
const rotation = branchRotation(directions.growth, directions.branch, new Vector3(Math.cos(phi), 0, Math.sin(phi)));
|
|
120
|
+
if (!rotation)
|
|
121
|
+
return null;
|
|
122
|
+
const fitting = DuctFittingNode.parse({
|
|
123
|
+
...elbow,
|
|
124
|
+
name: 'Tee',
|
|
125
|
+
fittingType: 'tee',
|
|
126
|
+
rotation,
|
|
127
|
+
branchAngle,
|
|
128
|
+
shape2: elbow.shape,
|
|
129
|
+
width2: elbow.width,
|
|
130
|
+
height2: elbow.height,
|
|
131
|
+
diameter2: elbow.diameter,
|
|
132
|
+
});
|
|
133
|
+
const continuation = getDuctFittingPorts(fitting).find((port) => port.id === 'outlet');
|
|
134
|
+
if (!continuation)
|
|
135
|
+
return null;
|
|
136
|
+
return {
|
|
137
|
+
fitting,
|
|
138
|
+
continuationPort: { ...continuation, nodeId: elbow.id },
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export function planPipeElbowBranchPromotion(elbow, connectedPortId) {
|
|
142
|
+
if (elbow.fittingType !== 'elbow')
|
|
143
|
+
return null;
|
|
144
|
+
const existingPorts = getPipeFittingPorts(elbow).map((port) => ({
|
|
145
|
+
...port,
|
|
146
|
+
nodeId: elbow.id,
|
|
147
|
+
}));
|
|
148
|
+
const directions = elbowDirections(existingPorts, connectedPortId);
|
|
149
|
+
if (!directions)
|
|
150
|
+
return null;
|
|
151
|
+
const angle = (directions.growth.angleTo(directions.branch) * 180) / Math.PI;
|
|
152
|
+
const isWye = Math.abs(angle - 45) <= 1;
|
|
153
|
+
const isSanitaryTee = Math.abs(angle - 90) <= 1;
|
|
154
|
+
if (!isWye && !isSanitaryTee)
|
|
155
|
+
return null;
|
|
156
|
+
const localBranch = isWye
|
|
157
|
+
? new Vector3(Math.cos(WYE_BRANCH_RAD), 0, Math.sin(WYE_BRANCH_RAD))
|
|
158
|
+
: new Vector3(0, 0, 1);
|
|
159
|
+
const rotation = branchRotation(directions.growth, directions.branch, localBranch);
|
|
160
|
+
if (!rotation)
|
|
161
|
+
return null;
|
|
162
|
+
const fitting = PipeFittingNode.parse({
|
|
163
|
+
...elbow,
|
|
164
|
+
name: isWye ? 'Wye' : 'Sanitary Tee',
|
|
165
|
+
fittingType: isWye ? 'wye' : 'sanitary-tee',
|
|
166
|
+
rotation,
|
|
167
|
+
diameter2: elbow.diameter,
|
|
168
|
+
});
|
|
169
|
+
const continuation = getPipeFittingPorts(fitting).find((port) => port.id === 'outlet');
|
|
170
|
+
if (!continuation)
|
|
171
|
+
return null;
|
|
172
|
+
return {
|
|
173
|
+
fitting,
|
|
174
|
+
continuationPort: { ...continuation, nodeId: elbow.id },
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
export function planDuctTeeCrossPromotion(tee) {
|
|
178
|
+
if (tee.fittingType !== 'tee' || Math.abs(tee.branchAngle - 90) > 1e-4)
|
|
179
|
+
return null;
|
|
180
|
+
const fitting = DuctFittingNode.parse({ ...tee, name: 'Cross', fittingType: 'cross' });
|
|
181
|
+
const continuation = getDuctFittingPorts(fitting).find((port) => port.id === 'branch2');
|
|
182
|
+
return continuation
|
|
183
|
+
? {
|
|
184
|
+
fitting,
|
|
185
|
+
continuationPort: { ...continuation, nodeId: tee.id },
|
|
186
|
+
}
|
|
187
|
+
: null;
|
|
188
|
+
}
|
|
189
|
+
export function planPipeTeeCrossPromotion(tee) {
|
|
190
|
+
if (tee.fittingType !== 'sanitary-tee')
|
|
191
|
+
return null;
|
|
192
|
+
const fitting = PipeFittingNode.parse({ ...tee, name: 'Cross', fittingType: 'cross' });
|
|
193
|
+
const continuation = getPipeFittingPorts(fitting).find((port) => port.id === 'branch2');
|
|
194
|
+
return continuation
|
|
195
|
+
? {
|
|
196
|
+
fitting,
|
|
197
|
+
continuationPort: { ...continuation, nodeId: tee.id },
|
|
198
|
+
}
|
|
199
|
+
: null;
|
|
200
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const FITTING_CLEARANCE_MESSAGE = "Not enough room for this fitting. Lengthen the run or move the connection.";
|
|
2
|
+
type Point = readonly [number, number, number];
|
|
3
|
+
export declare function hasFittingClearance(start: Point, end: Point, direction: Point, minimum: number): boolean;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=fitting-clearance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fitting-clearance.d.ts","sourceRoot":"","sources":["../../src/shared/fitting-clearance.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,+EACwC,CAAA;AAE9E,KAAK,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAE9C,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAST"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const FITTING_CLEARANCE_MESSAGE = 'Not enough room for this fitting. Lengthen the run or move the connection.';
|
|
2
|
+
export function hasFittingClearance(start, end, direction, minimum) {
|
|
3
|
+
const length = Math.hypot(...direction);
|
|
4
|
+
if (length < 1e-9)
|
|
5
|
+
return false;
|
|
6
|
+
const remaining = ((end[0] - start[0]) * direction[0] +
|
|
7
|
+
(end[1] - start[1]) * direction[1] +
|
|
8
|
+
(end[2] - start[2]) * direction[2]) /
|
|
9
|
+
length;
|
|
10
|
+
return remaining >= minimum;
|
|
11
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AnyNode, AnyNodeId, DuctSegmentNode, PipeSegmentNode } from '@pascal-app/core';
|
|
2
|
+
type Run = DuctSegmentNode | PipeSegmentNode;
|
|
3
|
+
export type FittingDeletionPlan = {
|
|
4
|
+
fittingId: AnyNodeId;
|
|
5
|
+
deleteFitting: boolean;
|
|
6
|
+
cascadeDeleteIds: AnyNodeId[];
|
|
7
|
+
updates: Array<{
|
|
8
|
+
id: AnyNodeId;
|
|
9
|
+
data: Partial<AnyNode>;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
export declare function fittingDeletionPlansForRun(run: Run, nodes: Record<AnyNodeId, AnyNode>, topologyDeleteIds: ReadonlySet<AnyNodeId>, ownerOnly: boolean): FittingDeletionPlan[];
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=fitting-deletion-cleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fitting-deletion-cleanup.d.ts","sourceRoot":"","sources":["../../src/shared/fitting-deletion-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EAET,eAAe,EAGf,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAMzB,KAAK,GAAG,GAAG,eAAe,GAAG,eAAe,CAAA;AAU5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,aAAa,EAAE,OAAO,CAAA;IACtB,gBAAgB,EAAE,SAAS,EAAE,CAAA;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,SAAS,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAA;CAC1D,CAAA;AA6TD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,iBAAiB,EAAE,WAAW,CAAC,SAAS,CAAC,EACzC,SAAS,EAAE,OAAO,GACjB,mBAAmB,EAAE,CAqBvB"}
|