@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/roof-segment/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EAGpB,MAAM,kBAAkB,CAAA;AASzB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/roof-segment/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EAGpB,MAAM,kBAAkB,CAAA;AASzB,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAoS1C;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAAC,OAAO,eAAe,CA4ExE,CAAA"}
|
|
@@ -6,6 +6,7 @@ import { roofSegmentParametrics } from './parametrics';
|
|
|
6
6
|
import { RoofSegmentNode } from './schema';
|
|
7
7
|
const SIDE_HANDLE_OFFSET = 0.3;
|
|
8
8
|
const HEIGHT_HANDLE_OFFSET = 0.3;
|
|
9
|
+
const ROOF_HANDLE_CLEARANCE = 0.15;
|
|
9
10
|
const ROTATE_CORNER_OFFSET = 0.4;
|
|
10
11
|
const ROTATE_RING_OFFSET = 0.08;
|
|
11
12
|
const MIN_ROOF_DIM = 1;
|
|
@@ -22,6 +23,15 @@ const MAX_PITCH = 85;
|
|
|
22
23
|
function getPeakHeight(n) {
|
|
23
24
|
return n.wallHeight + getActiveRoofHeight(n);
|
|
24
25
|
}
|
|
26
|
+
function getSideResizeHandleY(n, localZ) {
|
|
27
|
+
if (n.roofType !== 'shed')
|
|
28
|
+
return Math.max(n.wallHeight, MIN_WALL_DISPLAY) / 2;
|
|
29
|
+
const halfDepth = Math.max(n.depth, MIN_ROOF_DIM) / 2;
|
|
30
|
+
const roofHeight = getActiveRoofHeight(n);
|
|
31
|
+
const t = halfDepth > 0 ? (localZ + halfDepth) / (2 * halfDepth) : 0.5;
|
|
32
|
+
const roofY = n.wallHeight + roofHeight * (1 - Math.max(0, Math.min(1, t)));
|
|
33
|
+
return Math.max(roofY, MIN_WALL_DISPLAY) + ROOF_HANDLE_CLEARANCE;
|
|
34
|
+
}
|
|
25
35
|
// Width arrow on the +X (right) or -X (left) side. Asymmetric resize:
|
|
26
36
|
// dragging one arrow grows the segment outward from its own edge while
|
|
27
37
|
// the opposite edge stays world-fixed — the same pattern doors use
|
|
@@ -55,15 +65,12 @@ function roofSegmentWidthHandle(side) {
|
|
|
55
65
|
const newCenterZ = anchorZ + sign * (newWidth / 2) * armZ;
|
|
56
66
|
return {
|
|
57
67
|
width: newWidth,
|
|
68
|
+
...(initial.roofType === 'conical' ? { depth: newWidth } : {}),
|
|
58
69
|
position: [newCenterX, initial.position[1], newCenterZ],
|
|
59
70
|
};
|
|
60
71
|
},
|
|
61
72
|
placement: {
|
|
62
|
-
position: (n) => [
|
|
63
|
-
sign * (n.width / 2 + SIDE_HANDLE_OFFSET),
|
|
64
|
-
Math.max(n.wallHeight, MIN_WALL_DISPLAY) / 2,
|
|
65
|
-
0,
|
|
66
|
-
],
|
|
73
|
+
position: (n) => [sign * (n.width / 2 + SIDE_HANDLE_OFFSET), getSideResizeHandleY(n, 0), 0],
|
|
67
74
|
// Flip the left chevron so it points outward toward -X. The
|
|
68
75
|
// generic LinearArrow only auto-orients for axis 'z' (rotates the
|
|
69
76
|
// chevron 90° to face +Z); +X / -X facing is up to the descriptor.
|
|
@@ -100,6 +107,13 @@ function roofSegmentDepthHandle(side) {
|
|
|
100
107
|
const anchorZ = initial.position[2] - sign * (initial.depth / 2) * armZ;
|
|
101
108
|
const newCenterX = anchorX + sign * (newDepth / 2) * armX;
|
|
102
109
|
const newCenterZ = anchorZ + sign * (newDepth / 2) * armZ;
|
|
110
|
+
if (initial.roofType === 'conical') {
|
|
111
|
+
return {
|
|
112
|
+
width: newDepth,
|
|
113
|
+
depth: newDepth,
|
|
114
|
+
position: [newCenterX, initial.position[1], newCenterZ],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
103
117
|
// Preserve peak height — back-solve pitch for the new depth so
|
|
104
118
|
// the assembled roof height matches what it was before the drag.
|
|
105
119
|
const originalRoofHeight = getActiveRoofHeight(initial);
|
|
@@ -124,7 +138,7 @@ function roofSegmentDepthHandle(side) {
|
|
|
124
138
|
placement: {
|
|
125
139
|
position: (n) => [
|
|
126
140
|
0,
|
|
127
|
-
|
|
141
|
+
getSideResizeHandleY(n, sign * (n.depth / 2)),
|
|
128
142
|
sign * (n.depth / 2 + SIDE_HANDLE_OFFSET),
|
|
129
143
|
],
|
|
130
144
|
// For axis 'z', `LinearArrow` adds -π/2 around Y so the chevron
|
|
@@ -133,6 +147,23 @@ function roofSegmentDepthHandle(side) {
|
|
|
133
147
|
},
|
|
134
148
|
};
|
|
135
149
|
}
|
|
150
|
+
function conicalRoofSegmentRadiusHandle() {
|
|
151
|
+
return {
|
|
152
|
+
kind: 'radial-resize',
|
|
153
|
+
axis: 'x',
|
|
154
|
+
min: MIN_ROOF_DIM / 2,
|
|
155
|
+
currentValue: (n) => n.width / 2,
|
|
156
|
+
apply: (_initial, radius) => ({ width: radius * 2, depth: radius * 2 }),
|
|
157
|
+
placement: {
|
|
158
|
+
position: (n) => [n.width / 2 + SIDE_HANDLE_OFFSET, getSideResizeHandleY(n, 0), 0],
|
|
159
|
+
},
|
|
160
|
+
decoration: {
|
|
161
|
+
kind: 'ring',
|
|
162
|
+
radius: (n) => n.width / 2,
|
|
163
|
+
y: (n) => getSideResizeHandleY(n, 0),
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
136
167
|
// Wall-height tracker — dashed vertical leader from the floor up to a
|
|
137
168
|
// draggable cube at the wall top, centred on the footprint. Replaces
|
|
138
169
|
// the old -X-side chevron so the wall-top control reads as "the wall is
|
|
@@ -149,6 +180,7 @@ function roofSegmentWallHeightHandle() {
|
|
|
149
180
|
anchor: 'min',
|
|
150
181
|
shape: 'tracker',
|
|
151
182
|
min: MIN_WALL_HEIGHT,
|
|
183
|
+
gridSnap: true,
|
|
152
184
|
currentValue: (n) => n.wallHeight,
|
|
153
185
|
apply: (_n, newValue) => ({ wallHeight: newValue }),
|
|
154
186
|
placement: {
|
|
@@ -174,7 +206,9 @@ function roofSegmentPitchHandle() {
|
|
|
174
206
|
axis: 'y',
|
|
175
207
|
anchor: 'min',
|
|
176
208
|
min: (n) => n.wallHeight,
|
|
209
|
+
gridSnap: true,
|
|
177
210
|
currentValue: (n) => getPeakHeight(n),
|
|
211
|
+
visible: (n) => !n.managedByParent,
|
|
178
212
|
apply: (initial, newPeakHeight) => {
|
|
179
213
|
const roofHeight = Math.max(0, newPeakHeight - initial.wallHeight);
|
|
180
214
|
const pitch = getPitchFromActiveRoofHeight({
|
|
@@ -234,6 +268,16 @@ const roofSegmentHandles = [
|
|
|
234
268
|
roofSegmentPitchHandle(),
|
|
235
269
|
roofSegmentRotateHandle(),
|
|
236
270
|
];
|
|
271
|
+
const conicalRoofSegmentHandles = [
|
|
272
|
+
conicalRoofSegmentRadiusHandle(),
|
|
273
|
+
roofSegmentWallHeightHandle(),
|
|
274
|
+
roofSegmentPitchHandle(),
|
|
275
|
+
];
|
|
276
|
+
function resolveRoofSegmentHandles(node) {
|
|
277
|
+
if (node.managedByParent)
|
|
278
|
+
return [];
|
|
279
|
+
return node.roofType === 'conical' ? conicalRoofSegmentHandles : roofSegmentHandles;
|
|
280
|
+
}
|
|
237
281
|
/**
|
|
238
282
|
* Roof segment — Stage A. Child of a roof node, owns the per-segment
|
|
239
283
|
* polygon + pitch. Geometry is generated by `RoofSystem` (registered
|
|
@@ -242,7 +286,7 @@ const roofSegmentHandles = [
|
|
|
242
286
|
*/
|
|
243
287
|
export const roofSegmentDefinition = {
|
|
244
288
|
kind: 'roof-segment',
|
|
245
|
-
schemaVersion:
|
|
289
|
+
schemaVersion: 5,
|
|
246
290
|
schema: RoofSegmentNode,
|
|
247
291
|
category: 'structure',
|
|
248
292
|
surfaceRole: 'roof',
|
|
@@ -271,7 +315,7 @@ export const roofSegmentDefinition = {
|
|
|
271
315
|
move: () => import('../shared/move-roof-tool'),
|
|
272
316
|
},
|
|
273
317
|
parametrics: roofSegmentParametrics,
|
|
274
|
-
handles:
|
|
318
|
+
handles: resolveRoofSegmentHandles,
|
|
275
319
|
renderer: {
|
|
276
320
|
kind: 'parametric',
|
|
277
321
|
module: () => import('./renderer'),
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { type FloorplanAffordance, type FloorplanMoveTarget, type RoofSegmentNode } from '@pascal-app/core';
|
|
2
2
|
/**
|
|
3
3
|
* Roof-segment width / depth drag (floor-plan). Mirrors the 3D
|
|
4
|
-
* `linear-resize` handles in `definition.ts
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* the math survives any parent-roof rotation.
|
|
4
|
+
* `linear-resize` handles in `definition.ts`: the dragged side moves
|
|
5
|
+
* while the opposite side stays fixed. Projects the plan cursor onto
|
|
6
|
+
* the segment's effective rotation (roof.rotation + segment.rotation)
|
|
7
|
+
* so the math survives any parent-roof rotation, then writes the
|
|
8
|
+
* corresponding roof-local center shift alongside the new dimension.
|
|
10
9
|
*/
|
|
11
10
|
export declare const roofSegmentResizeAffordance: FloorplanAffordance<RoofSegmentNode>;
|
|
12
11
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floorplan-affordances.d.ts","sourceRoot":"","sources":["../../src/roof-segment/floorplan-affordances.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAExB,KAAK,eAAe,EAIrB,MAAM,kBAAkB,CAAA;AA4CzB
|
|
1
|
+
{"version":3,"file":"floorplan-affordances.d.ts","sourceRoot":"","sources":["../../src/roof-segment/floorplan-affordances.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAExB,KAAK,eAAe,EAIrB,MAAM,kBAAkB,CAAA;AA4CzB;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,EAAE,mBAAmB,CAAC,eAAe,CAsG5E,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,EAAE,mBAAmB,CAAC,eAAe,CA8B5E,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,CAAC,eAAe,CA2CtE,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { snapScalar, useLiveNodeOverrides, useScene, } from '@pascal-app/core';
|
|
2
|
-
import { getSegmentGridStep, isAngleSnapActive } from '@pascal-app/editor';
|
|
2
|
+
import { getSegmentGridStep, isAngleSnapActive, isGridSnapActive } from '@pascal-app/editor';
|
|
3
3
|
import { createFloorplanCursorResolver } from '../shared/floorplan-cursor';
|
|
4
4
|
import { rotateAffordanceDelta } from '../shared/rotate-affordance';
|
|
5
5
|
const MIN_ROOF_DIM = 1;
|
|
@@ -29,19 +29,47 @@ function resolveSegmentFrame(segment, nodes) {
|
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* Roof-segment width / depth drag (floor-plan). Mirrors the 3D
|
|
32
|
-
* `linear-resize` handles in `definition.ts
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* the math survives any parent-roof rotation.
|
|
32
|
+
* `linear-resize` handles in `definition.ts`: the dragged side moves
|
|
33
|
+
* while the opposite side stays fixed. Projects the plan cursor onto
|
|
34
|
+
* the segment's effective rotation (roof.rotation + segment.rotation)
|
|
35
|
+
* so the math survives any parent-roof rotation, then writes the
|
|
36
|
+
* corresponding roof-local center shift alongside the new dimension.
|
|
38
37
|
*/
|
|
39
38
|
export const roofSegmentResizeAffordance = {
|
|
40
39
|
start({ node, payload, nodes, initialPlanPoint }) {
|
|
41
|
-
const
|
|
40
|
+
const resize = payload;
|
|
42
41
|
const segmentId = node.id;
|
|
42
|
+
const { cx, cz } = resolveSegmentFrame(node, nodes);
|
|
43
|
+
if ('mode' in resize) {
|
|
44
|
+
const initialRadius = node.width / 2;
|
|
45
|
+
const initialPointerRadius = Math.hypot(initialPlanPoint[0] - cx, initialPlanPoint[1] - cz);
|
|
46
|
+
let lastRadius = initialRadius;
|
|
47
|
+
return {
|
|
48
|
+
affectedIds: [segmentId],
|
|
49
|
+
apply({ planPoint }) {
|
|
50
|
+
const pointerRadius = Math.hypot(planPoint[0] - cx, planPoint[1] - cz);
|
|
51
|
+
lastRadius = Math.max(MIN_ROOF_DIM / 2, initialRadius + pointerRadius - initialPointerRadius);
|
|
52
|
+
const diameter = lastRadius * 2;
|
|
53
|
+
useLiveNodeOverrides.getState().set(segmentId, { width: diameter, depth: diameter });
|
|
54
|
+
useScene.getState().markDirty(segmentId);
|
|
55
|
+
},
|
|
56
|
+
canCommit() {
|
|
57
|
+
return true;
|
|
58
|
+
},
|
|
59
|
+
commit() {
|
|
60
|
+
useLiveNodeOverrides.getState().clear(segmentId);
|
|
61
|
+
const diameter = lastRadius * 2;
|
|
62
|
+
useScene.getState().updateNode(segmentId, { width: diameter, depth: diameter });
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const { axis, side } = resize;
|
|
43
67
|
const initialValue = axis === 'x' ? node.width : node.depth;
|
|
44
|
-
const
|
|
68
|
+
const initialPosition = node.position;
|
|
69
|
+
const segmentRotation = node.rotation ?? 0;
|
|
70
|
+
const armX = axis === 'x' ? Math.cos(segmentRotation) : Math.sin(segmentRotation);
|
|
71
|
+
const armZ = axis === 'x' ? -Math.sin(segmentRotation) : Math.cos(segmentRotation);
|
|
72
|
+
const { effRot } = resolveSegmentFrame(node, nodes);
|
|
45
73
|
const cosEff = Math.cos(effRot);
|
|
46
74
|
const sinEff = Math.sin(effRot);
|
|
47
75
|
// Project (planPoint - center) onto the segment's local X or Z axis
|
|
@@ -59,17 +87,26 @@ export const roofSegmentResizeAffordance = {
|
|
|
59
87
|
apply({ planPoint }) {
|
|
60
88
|
const currentLocal = projectLocalAxis(planPoint[0], planPoint[1]);
|
|
61
89
|
const delta = (currentLocal - initialLocal) * side;
|
|
62
|
-
const rawValue = initialValue +
|
|
90
|
+
const rawValue = initialValue + delta;
|
|
63
91
|
// Mode-aware grid step (0 outside grid mode, so `lines` / `off` resize
|
|
64
92
|
// freely — the "smooth" behaviour that used to need a held Shift). The
|
|
65
93
|
// reshaping scope opened by the dispatcher resolves the `polygon` set.
|
|
66
|
-
const step = getSegmentGridStep();
|
|
94
|
+
const step = isGridSnapActive() ? getSegmentGridStep() : 0;
|
|
67
95
|
const snappedValue = step > 0 ? snapScalar(rawValue, step) : rawValue;
|
|
68
96
|
const newValue = Math.max(MIN_ROOF_DIM, snappedValue);
|
|
97
|
+
const centerOffset = (side * (newValue - initialValue)) / 2;
|
|
98
|
+
const position = [
|
|
99
|
+
initialPosition[0] + centerOffset * armX,
|
|
100
|
+
initialPosition[1],
|
|
101
|
+
initialPosition[2] + centerOffset * armZ,
|
|
102
|
+
];
|
|
69
103
|
lastValue = newValue;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
104
|
+
const dimensions = node.roofType === 'conical'
|
|
105
|
+
? { width: newValue, depth: newValue }
|
|
106
|
+
: axis === 'x'
|
|
107
|
+
? { width: newValue }
|
|
108
|
+
: { depth: newValue };
|
|
109
|
+
useLiveNodeOverrides.getState().set(segmentId, { ...dimensions, position });
|
|
73
110
|
useScene.getState().markDirty(segmentId);
|
|
74
111
|
},
|
|
75
112
|
canCommit() {
|
|
@@ -77,9 +114,18 @@ export const roofSegmentResizeAffordance = {
|
|
|
77
114
|
},
|
|
78
115
|
commit() {
|
|
79
116
|
useLiveNodeOverrides.getState().clear(segmentId);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
117
|
+
const centerOffset = (side * (lastValue - initialValue)) / 2;
|
|
118
|
+
const position = [
|
|
119
|
+
initialPosition[0] + centerOffset * armX,
|
|
120
|
+
initialPosition[1],
|
|
121
|
+
initialPosition[2] + centerOffset * armZ,
|
|
122
|
+
];
|
|
123
|
+
const dimensions = node.roofType === 'conical'
|
|
124
|
+
? { width: lastValue, depth: lastValue }
|
|
125
|
+
: axis === 'x'
|
|
126
|
+
? { width: lastValue }
|
|
127
|
+
: { depth: lastValue };
|
|
128
|
+
useScene.getState().updateNode(segmentId, { ...dimensions, position });
|
|
83
129
|
},
|
|
84
130
|
};
|
|
85
131
|
},
|
|
@@ -154,7 +200,7 @@ export const roofSegmentMoveTarget = ({ node, nodes }) => {
|
|
|
154
200
|
// Mode-aware: `getSegmentGridStep()` is 0 outside grid mode (so `lines` /
|
|
155
201
|
// `off` move freely), and the `moving` scope resolves the `polygon` set
|
|
156
202
|
// via the kind's `snapProfile` — no held-Shift bypass.
|
|
157
|
-
const step = getSegmentGridStep();
|
|
203
|
+
const step = isGridSnapActive() ? getSegmentGridStep() : 0;
|
|
158
204
|
const snap = (value) => snapScalar(value, step);
|
|
159
205
|
const worldPoint = resolveCursor(planPoint, { snap });
|
|
160
206
|
const dx = worldPoint[0] - roofPosX;
|
|
@@ -14,6 +14,7 @@ import { type FloorplanGeometry, type GeometryContext, type RoofSegmentNode } fr
|
|
|
14
14
|
export declare function buildRoofSegmentFloorplan(node: RoofSegmentNode, ctx: GeometryContext): FloorplanGeometry | null;
|
|
15
15
|
export type PlanPt = readonly [number, number];
|
|
16
16
|
export type PlanSeg = readonly [PlanPt, PlanPt];
|
|
17
|
+
export declare function getConicalRoofPlanFootprint(node: RoofSegmentNode): PlanPt[];
|
|
17
18
|
/**
|
|
18
19
|
* Ridge / hip / break linework for a roof segment in segment-local space
|
|
19
20
|
* (lx = width axis, lz = depth axis), mirroring the faces the 3D builder
|
|
@@ -26,8 +27,8 @@ export type PlanSeg = readonly [PlanPt, PlanPt];
|
|
|
26
27
|
* - break: horizontal fold where the slope angle changes (gambrel kink,
|
|
27
28
|
* mansard/dutch waist)
|
|
28
29
|
*
|
|
29
|
-
* Exported so the roof-level builder can reuse
|
|
30
|
-
*
|
|
30
|
+
* Exported so the roof-level builder can reuse the same architectural
|
|
31
|
+
* linework for the complete roof plan.
|
|
31
32
|
*/
|
|
32
33
|
export declare function getRoofSegmentPlanLinework(node: RoofSegmentNode): {
|
|
33
34
|
ridges: PlanSeg[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/roof-segment/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/roof-segment/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAIpB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAA;AAEzB;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,eAAe,GACnB,iBAAiB,GAAG,IAAI,CAiM1B;AAED,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAC9C,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAE/C,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,EAAE,CAY3E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,eAAe,GAAG;IACjE,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAC7C,CAyGA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getDutchRoofMetrics, } from '@pascal-app/core';
|
|
1
|
+
import { getConicalRoofCoverage, getDutchRoofMetrics, } from '@pascal-app/core';
|
|
2
2
|
/**
|
|
3
3
|
* Stage C floor-plan builder for roof segment. Renders the segment as a
|
|
4
4
|
* proper architectural roof plan: the footprint outline plus the
|
|
@@ -39,6 +39,8 @@ export function buildRoofSegmentFloorplan(node, ctx) {
|
|
|
39
39
|
cx + lx * cos - lz * sin,
|
|
40
40
|
cz + lx * sin + lz * cos,
|
|
41
41
|
];
|
|
42
|
+
const conicalFootprint = getConicalRoofPlanFootprint(node).map(([x, z]) => toPlan(x, z));
|
|
43
|
+
const isFullCone = getConicalRoofCoverage(node).fullCircle;
|
|
42
44
|
const corners = [
|
|
43
45
|
[-halfWidth, -halfDepth],
|
|
44
46
|
[halfWidth, -halfDepth],
|
|
@@ -56,19 +58,32 @@ export function buildRoofSegmentFloorplan(node, ctx) {
|
|
|
56
58
|
// the same in the floor plan.
|
|
57
59
|
const baseInk = '#111111';
|
|
58
60
|
const stroke = showSelectedChrome && palette ? palette.selectedStroke : baseInk;
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
const footprint = node.roofType === 'conical' && isFullCone
|
|
62
|
+
? {
|
|
63
|
+
kind: 'circle',
|
|
64
|
+
cx,
|
|
65
|
+
cy: cz,
|
|
66
|
+
r: halfWidth,
|
|
67
|
+
fill: stroke,
|
|
68
|
+
fillOpacity: 0,
|
|
69
|
+
stroke: 'none',
|
|
70
|
+
strokeWidth: 0,
|
|
71
|
+
pointerEvents: 'all',
|
|
72
|
+
}
|
|
73
|
+
: {
|
|
64
74
|
kind: 'polygon',
|
|
65
|
-
points,
|
|
75
|
+
points: node.roofType === 'conical' ? conicalFootprint : points,
|
|
66
76
|
fill: stroke,
|
|
67
77
|
fillOpacity: 0,
|
|
68
78
|
stroke: 'none',
|
|
69
79
|
strokeWidth: 0,
|
|
70
80
|
pointerEvents: 'all',
|
|
71
|
-
}
|
|
81
|
+
};
|
|
82
|
+
const children = [
|
|
83
|
+
// Invisible hit-target — full footprint, transparent fill, captures
|
|
84
|
+
// clicks across the entire roof rectangle (so the user doesn't need
|
|
85
|
+
// to pixel-hunt the outline strokes).
|
|
86
|
+
footprint,
|
|
72
87
|
];
|
|
73
88
|
// The segment's own rectangle outline + fill render ONLY while it's
|
|
74
89
|
// selected / highlighted — that highlights which sub-plane is active
|
|
@@ -77,26 +92,34 @@ export function buildRoofSegmentFloorplan(node, ctx) {
|
|
|
77
92
|
// (`buildRoofFloorplan`), so overlapping segments read as one combined
|
|
78
93
|
// shape instead of stacked rectangles. Ridges/hips below always draw.
|
|
79
94
|
if (showSelectedChrome) {
|
|
80
|
-
children.push(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
95
|
+
children.push(node.roofType === 'conical' && isFullCone
|
|
96
|
+
? {
|
|
97
|
+
kind: 'circle',
|
|
98
|
+
cx,
|
|
99
|
+
cy: cz,
|
|
100
|
+
r: halfWidth,
|
|
101
|
+
fill: '#fed7aa',
|
|
102
|
+
fillOpacity: 0.55,
|
|
103
|
+
stroke,
|
|
104
|
+
strokeWidth: 0.035,
|
|
105
|
+
}
|
|
106
|
+
: {
|
|
107
|
+
kind: 'polygon',
|
|
108
|
+
points: node.roofType === 'conical' ? conicalFootprint : points,
|
|
109
|
+
fill: '#fed7aa',
|
|
110
|
+
fillOpacity: 0.55,
|
|
111
|
+
stroke,
|
|
112
|
+
strokeWidth: 0.035,
|
|
113
|
+
strokeLinejoin: 'miter',
|
|
114
|
+
});
|
|
89
115
|
}
|
|
90
116
|
// NOTE: the ridge / hip / break / slope linework is NOT drawn here — the
|
|
91
117
|
// parent roof's builder (`buildRoofFloorplan`) draws it for every segment,
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
// builder
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
// Selection chrome — orange move-handle dot at the centre, four
|
|
98
|
-
// perpendicular side resize-arrows (width on X, depth on Z), and a
|
|
99
|
-
// rotate-arrow at the +X/+Z corner. Sister to the 3D handles in
|
|
118
|
+
// while this builder owns only the per-segment interaction chrome below.
|
|
119
|
+
// The shape math lives in `getRoofSegmentPlanLinework` (exported for the
|
|
120
|
+
// roof builder to consume).
|
|
121
|
+
// Selection chrome — orange move-handle dot at the centre, footprint
|
|
122
|
+
// resize arrows, and a rotate-arrow at the +X/+Z corner. Sister to the 3D handles in
|
|
100
123
|
// `definition.ts`. Resize/rotate route through the matching
|
|
101
124
|
// `floorplanAffordances`; the dot drives body-move via
|
|
102
125
|
// `def.floorplanMoveTarget`.
|
|
@@ -116,38 +139,63 @@ export function buildRoofSegmentFloorplan(node, ctx) {
|
|
|
116
139
|
lx * cos - ly * sin,
|
|
117
140
|
lx * sin + ly * cos,
|
|
118
141
|
];
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
{ local: [0, halfD + sideArrowOffset], localAngle: Math.PI / 2, axis: 'z', side: 1 },
|
|
123
|
-
{ local: [0, -(halfD + sideArrowOffset)], localAngle: -Math.PI / 2, axis: 'z', side: -1 },
|
|
124
|
-
];
|
|
125
|
-
for (const s of sides) {
|
|
126
|
-
const [ox, oz] = rotateLocal(s.local[0], s.local[1]);
|
|
127
|
-
const [tx, tz] = rotateLocal(Math.cos(s.localAngle), Math.sin(s.localAngle));
|
|
142
|
+
if (node.roofType === 'conical') {
|
|
143
|
+
const [ox, oz] = rotateLocal(halfW + sideArrowOffset, 0);
|
|
144
|
+
const [tx, tz] = rotateLocal(1, 0);
|
|
128
145
|
children.push({
|
|
129
146
|
kind: 'move-arrow',
|
|
130
147
|
point: [cx + ox, cz + oz],
|
|
131
148
|
angle: Math.atan2(tz, tx),
|
|
132
149
|
affordance: 'roof-segment-resize',
|
|
133
|
-
payload: {
|
|
150
|
+
payload: { mode: 'radial' },
|
|
134
151
|
});
|
|
135
152
|
}
|
|
153
|
+
else {
|
|
154
|
+
const sides = [
|
|
155
|
+
{ local: [halfW + sideArrowOffset, 0], localAngle: 0, axis: 'x', side: 1 },
|
|
156
|
+
{ local: [-(halfW + sideArrowOffset), 0], localAngle: Math.PI, axis: 'x', side: -1 },
|
|
157
|
+
{ local: [0, halfD + sideArrowOffset], localAngle: Math.PI / 2, axis: 'z', side: 1 },
|
|
158
|
+
{ local: [0, -(halfD + sideArrowOffset)], localAngle: -Math.PI / 2, axis: 'z', side: -1 },
|
|
159
|
+
];
|
|
160
|
+
for (const side of sides) {
|
|
161
|
+
const [ox, oz] = rotateLocal(side.local[0], side.local[1]);
|
|
162
|
+
const [tx, tz] = rotateLocal(Math.cos(side.localAngle), Math.sin(side.localAngle));
|
|
163
|
+
children.push({
|
|
164
|
+
kind: 'move-arrow',
|
|
165
|
+
point: [cx + ox, cz + oz],
|
|
166
|
+
angle: Math.atan2(tz, tx),
|
|
167
|
+
affordance: 'roof-segment-resize',
|
|
168
|
+
payload: { axis: side.axis, side: side.side },
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
136
172
|
// Rotate-arrow at the +X / +Z corner. Local angle π/4 puts the
|
|
137
173
|
// curved arrow's bow at the diagonal corner so it reads as a
|
|
138
174
|
// rotation gizmo around the segment centre.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
175
|
+
if (node.roofType !== 'conical') {
|
|
176
|
+
const [cornerX, cornerZ] = rotateLocal(halfW + rotateCornerOffset, halfD + rotateCornerOffset);
|
|
177
|
+
const [radialX, radialZ] = rotateLocal(1, 1);
|
|
178
|
+
children.push({
|
|
179
|
+
kind: 'rotate-arrow',
|
|
180
|
+
point: [cx + cornerX, cz + cornerZ],
|
|
181
|
+
angle: Math.atan2(radialZ, radialX),
|
|
182
|
+
affordance: 'roof-segment-rotate',
|
|
183
|
+
pivot: [cx, cz],
|
|
184
|
+
});
|
|
185
|
+
}
|
|
148
186
|
}
|
|
149
187
|
return { kind: 'group', children };
|
|
150
188
|
}
|
|
189
|
+
export function getConicalRoofPlanFootprint(node) {
|
|
190
|
+
const coverage = getConicalRoofCoverage(node);
|
|
191
|
+
const sweep = Math.max(-Math.PI * 2, Math.min(Math.PI * 2, Math.abs(coverage.sweepAngle) < 1e-4 ? 1e-4 : coverage.sweepAngle));
|
|
192
|
+
const count = Math.max(1, Math.ceil((48 * Math.abs(sweep)) / (Math.PI * 2)));
|
|
193
|
+
const arc = Array.from({ length: count + 1 }, (_, index) => {
|
|
194
|
+
const angle = coverage.startAngle + (index / count) * sweep;
|
|
195
|
+
return [Math.cos(angle) * (node.width / 2), Math.sin(angle) * (node.width / 2)];
|
|
196
|
+
});
|
|
197
|
+
return Math.abs(sweep) >= Math.PI * 2 - 1e-4 ? arc.slice(0, -1) : [[0, 0], ...arc];
|
|
198
|
+
}
|
|
151
199
|
/**
|
|
152
200
|
* Ridge / hip / break linework for a roof segment in segment-local space
|
|
153
201
|
* (lx = width axis, lz = depth axis), mirroring the faces the 3D builder
|
|
@@ -160,8 +208,8 @@ export function buildRoofSegmentFloorplan(node, ctx) {
|
|
|
160
208
|
* - break: horizontal fold where the slope angle changes (gambrel kink,
|
|
161
209
|
* mansard/dutch waist)
|
|
162
210
|
*
|
|
163
|
-
* Exported so the roof-level builder can reuse
|
|
164
|
-
*
|
|
211
|
+
* Exported so the roof-level builder can reuse the same architectural
|
|
212
|
+
* linework for the complete roof plan.
|
|
165
213
|
*/
|
|
166
214
|
export function getRoofSegmentPlanLinework(node) {
|
|
167
215
|
const hw = node.width / 2;
|
|
@@ -197,6 +245,7 @@ export function getRoofSegmentPlanLinework(node) {
|
|
|
197
245
|
}
|
|
198
246
|
};
|
|
199
247
|
switch (node.roofType) {
|
|
248
|
+
case 'conical':
|
|
200
249
|
case 'flat':
|
|
201
250
|
break;
|
|
202
251
|
case 'gable':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/roof-segment/panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/roof-segment/panel.tsx"],"names":[],"mappings":"AAkGA,MAAM,CAAC,OAAO,UAAU,gBAAgB,uCA4oBvC"}
|