@pascal-app/nodes 1.0.0-beta.5 → 1.0.1
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 +4 -4
- 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/appliance-layout.d.ts +26 -0
- package/dist/cabinet/appliance-layout.d.ts.map +1 -0
- package/dist/cabinet/appliance-layout.js +52 -0
- 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/countertop-layout.d.ts +173 -0
- package/dist/cabinet/countertop-layout.d.ts.map +1 -0
- package/dist/cabinet/countertop-layout.js +80 -0
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +414 -61
- package/dist/cabinet/floorplan-move.d.ts.map +1 -1
- package/dist/cabinet/floorplan-move.js +91 -22
- package/dist/cabinet/geometry/cooktop.d.ts.map +1 -1
- package/dist/cabinet/geometry/cooktop.js +2 -2
- 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 +28 -71
- package/dist/cabinet/geometry/sink.d.ts +2 -12
- package/dist/cabinet/geometry/sink.d.ts.map +1 -1
- package/dist/cabinet/geometry/sink.js +8 -39
- package/dist/cabinet/geometry.d.ts.map +1 -1
- package/dist/cabinet/geometry.js +63 -1
- package/dist/cabinet/hosted-resize.d.ts +8 -0
- package/dist/cabinet/hosted-resize.d.ts.map +1 -0
- package/dist/cabinet/hosted-resize.js +158 -0
- 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 +98 -5
- package/dist/cabinet/run-layout.d.ts.map +1 -1
- package/dist/cabinet/run-layout.js +430 -37
- package/dist/cabinet/run-ops.d.ts +204 -12
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/run-ops.js +523 -36
- 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 +294 -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/surfaces.d.ts +4 -0
- package/dist/cabinet/surfaces.d.ts.map +1 -0
- package/dist/cabinet/surfaces.js +101 -0
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +615 -91
- package/dist/cabinet/tree-structure.d.ts.map +1 -1
- package/dist/cabinet/tree-structure.js +10 -9
- 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 +8 -2
- package/dist/ceiling/floorplan-affordances.d.ts +12 -12
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +0 -1
- package/dist/ceiling/panel.js +1 -1
- package/dist/ceiling/parametrics.js +1 -1
- package/dist/chimney/definition.js +1 -1
- package/dist/chimney/panel.js +9 -9
- 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 +12 -12
- 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-position-section.js +2 -2
- 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/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 +49 -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 +38 -0
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +306 -677
- 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/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/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/inspector-editors.js +1 -1
- package/dist/fence/parametrics.js +3 -3
- package/dist/fence/tool.d.ts.map +1 -1
- package/dist/fence/tool.js +47 -20
- 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/imported-mesh/definition.d.ts +5 -0
- package/dist/imported-mesh/definition.d.ts.map +1 -0
- package/dist/imported-mesh/definition.js +38 -0
- package/dist/imported-mesh/floorplan.d.ts +4 -0
- package/dist/imported-mesh/floorplan.d.ts.map +1 -0
- package/dist/imported-mesh/floorplan.js +34 -0
- package/dist/imported-mesh/geometry.d.ts +5 -0
- package/dist/imported-mesh/geometry.d.ts.map +1 -0
- package/dist/imported-mesh/geometry.js +34 -0
- package/dist/imported-mesh/index.d.ts +4 -0
- package/dist/imported-mesh/index.d.ts.map +1 -0
- package/dist/imported-mesh/index.js +3 -0
- package/dist/imported-mesh/schema.d.ts +2 -0
- package/dist/imported-mesh/schema.d.ts.map +1 -0
- package/dist/imported-mesh/schema.js +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/item/definition.d.ts.map +1 -1
- package/dist/item/definition.js +10 -2
- package/dist/item/floorplan-move.d.ts +9 -1
- package/dist/item/floorplan-move.d.ts.map +1 -1
- package/dist/item/floorplan-move.js +74 -2
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +33 -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 +15 -3
- package/dist/item/panel.js +1 -1
- 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/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 +49 -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/procedural-item/definition.d.ts +4 -0
- package/dist/procedural-item/definition.d.ts.map +1 -0
- package/dist/procedural-item/definition.js +254 -0
- package/dist/procedural-item/geometry.d.ts +31 -0
- package/dist/procedural-item/geometry.d.ts.map +1 -0
- package/dist/procedural-item/geometry.js +88 -0
- package/dist/procedural-item/index.d.ts +3 -0
- package/dist/procedural-item/index.d.ts.map +1 -0
- package/dist/procedural-item/index.js +2 -0
- package/dist/procedural-item/move-session.d.ts +15 -0
- package/dist/procedural-item/move-session.d.ts.map +1 -0
- package/dist/procedural-item/move-session.js +197 -0
- package/dist/procedural-item/move-tool.d.ts +5 -0
- package/dist/procedural-item/move-tool.d.ts.map +1 -0
- package/dist/procedural-item/move-tool.js +193 -0
- package/dist/procedural-item/renderer.d.ts +5 -0
- package/dist/procedural-item/renderer.d.ts.map +1 -0
- package/dist/procedural-item/renderer.js +66 -0
- package/dist/ridge-vent/definition.js +1 -1
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +4 -4
- package/dist/ridge-vent/parametrics.js +1 -1
- 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 +26 -25
- 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 +12 -0
- package/dist/shared/automatic-run-end-cap.d.ts.map +1 -0
- package/dist/shared/automatic-run-end-cap.js +169 -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 +117 -0
- package/dist/shared/distribution-run-tool.d.ts.map +1 -0
- package/dist/shared/distribution-run-tool.js +986 -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-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/panel-fields.d.ts +15 -0
- package/dist/shared/panel-fields.d.ts.map +1 -0
- package/dist/shared/panel-fields.js +31 -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/resting-surface-plan.d.ts +3 -0
- package/dist/shared/resting-surface-plan.d.ts.map +1 -0
- package/dist/shared/resting-surface-plan.js +28 -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/definition.d.ts.map +1 -1
- package/dist/shelf/definition.js +2 -1
- package/dist/shelf/floorplan-affordances.d.ts.map +1 -1
- package/dist/shelf/floorplan-affordances.js +5 -3
- package/dist/shelf/floorplan-move.d.ts.map +1 -1
- package/dist/shelf/floorplan-move.js +3 -2
- package/dist/shelf/geometry.d.ts.map +1 -1
- package/dist/shelf/geometry.js +2 -10
- 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 +6 -6
- 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.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 +2 -2
- package/dist/solar-panel/parametrics.js +2 -2
- package/dist/spawn/panel.js +1 -1
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +23 -16
- 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 +45 -6
- 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/unit/definition.d.ts +10 -0
- package/dist/unit/definition.d.ts.map +1 -0
- package/dist/unit/definition.js +38 -0
- package/dist/unit/index.d.ts +2 -0
- package/dist/unit/index.d.ts.map +1 -0
- package/dist/unit/index.js +1 -0
- package/dist/unit/parametrics.d.ts +3 -0
- package/dist/unit/parametrics.d.ts.map +1 -0
- package/dist/unit/parametrics.js +4 -0
- package/dist/unit/schema.d.ts +2 -0
- package/dist/unit/schema.d.ts.map +1 -0
- package/dist/unit/schema.js +1 -0
- package/dist/unit/unit-panel.d.ts +5 -0
- package/dist/unit/unit-panel.d.ts.map +1 -0
- package/dist/unit/unit-panel.js +61 -0
- 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.map +1 -1
- package/dist/wall/curve-tool.js +8 -11
- 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 +10 -17
- 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 +2 -0
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +66 -25
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +5 -0
- 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 +38 -6
- package/dist/wall/wall-batch-system.d.ts.map +1 -1
- package/dist/wall/wall-batch-system.js +122 -25
- package/dist/wall/wall-batch.js +2 -2
- 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 +8 -6
- 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/definition.d.ts.map +1 -1
- package/dist/zone/definition.js +7 -1
- package/dist/zone/floorplan-affordances.d.ts +12 -12
- package/dist/zone/floorplan.d.ts +1 -3
- package/dist/zone/floorplan.d.ts.map +1 -1
- package/dist/zone/floorplan.js +43 -28
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +33 -29
- package/dist/zone/renderer.d.ts.map +1 -1
- package/dist/zone/renderer.js +20 -6
- package/dist/zone/unit-membership.d.ts +12 -0
- package/dist/zone/unit-membership.d.ts.map +1 -0
- package/dist/zone/unit-membership.js +22 -0
- package/package.json +16 -8
- 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":"panel.d.ts","sourceRoot":"","sources":["../../src/window/panel.tsx"],"names":[],"mappings":"AA6FA,MAAM,CAAC,OAAO,UAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/window/panel.tsx"],"names":[],"mappings":"AA6FA,MAAM,CAAC,OAAO,UAAU,WAAW,uCA21BlC"}
|
package/dist/window/panel.js
CHANGED
|
@@ -149,6 +149,8 @@ export default function WindowPanel() {
|
|
|
149
149
|
rotation: [...node.rotation],
|
|
150
150
|
side: node.side,
|
|
151
151
|
wallId: node.wallId,
|
|
152
|
+
dormerId: node.dormerId,
|
|
153
|
+
dormerFace: node.dormerFace,
|
|
152
154
|
roofSegmentId: node.roofSegmentId,
|
|
153
155
|
roofFace: node.roofFace,
|
|
154
156
|
parentId: node.parentId,
|
|
@@ -341,7 +343,7 @@ export default function WindowPanel() {
|
|
|
341
343
|
], value: node.casementStyle ?? 'single' }), (node.casementStyle ?? 'single') === 'single' && (_jsx(SegmentedControl, { onChange: (value) => handleUpdate({ hingesSide: value }), options: [
|
|
342
344
|
{ value: 'left', label: 'Left' },
|
|
343
345
|
{ value: 'right', label: 'Right' },
|
|
344
|
-
], value: node.hingesSide ?? 'left' }))] })), showOperationSection && (_jsx("div", { className: "mt-2", children: _jsx(SliderControl, { label: operationLabel, max: 1, min: 0, onChange: setOperationState, precision: 2, restoreOnCommit: false, step: 0.05, value: Math.round((node.operationState ?? 0) * 100) / 100 }) }))] })), _jsxs(PanelSection, { title: "Position", children: [_jsx(SliderControl, { label: _jsxs(_Fragment, { children: ["X", _jsx("sub", { className: "ml-[1px] text-[11px] opacity-70", children: "pos" })] }), onChange: (v) => handleUpdate({ position: [v, node.position[1], node.position[2]] }), precision: 2, step: 0.1, unit: "m", value:
|
|
346
|
+
], value: node.hingesSide ?? 'left' }))] })), showOperationSection && (_jsx("div", { className: "mt-2", children: _jsx(SliderControl, { label: operationLabel, max: 1, min: 0, onChange: setOperationState, precision: 2, restoreOnCommit: false, step: 0.05, value: Math.round((node.operationState ?? 0) * 100) / 100 }) }))] })), _jsxs(PanelSection, { title: "Position", children: [_jsx(SliderControl, { label: _jsxs(_Fragment, { children: ["X", _jsx("sub", { className: "ml-[1px] text-[11px] opacity-70", children: "pos" })] }), onChange: (v) => handleUpdate({ position: [v, node.position[1], node.position[2]] }), precision: 2, step: 0.1, unit: "m", value: node.position[0] }), _jsx(SliderControl, { label: _jsxs(_Fragment, { children: ["Y", _jsx("sub", { className: "ml-[1px] text-[11px] opacity-70", children: "pos" })] }), onChange: (v) => handleUpdate({ position: [node.position[0], v, node.position[2]] }), precision: 2, step: 0.1, unit: "m", value: node.position[1] }), showFlipSide && (_jsx("div", { className: "px-1 pt-2 pb-1", children: _jsx(ActionButton, { className: "w-full", icon: _jsx(FlipHorizontal2, { className: "h-4 w-4" }), label: "Flip Side", onClick: handleFlip }) }))] }), _jsxs(PanelSection, { title: "Dimensions", children: [_jsx(SliderControl, { label: "Width", min: 0, onChange: (v) => handleUpdate(getDimensionUpdates({ width: v })), precision: 2, restoreOnCommit: false, step: 0.1, unit: "m", value: node.width }), _jsx(SliderControl, { label: "Height", min: 0, onChange: (v) => handleUpdate(getDimensionUpdates({ height: v })), precision: 2, restoreOnCommit: false, step: 0.1, unit: "m", value: node.height })] }), showWindowShapeSection && (_jsxs(PanelSection, { title: "Top Shape", children: [_jsx(SegmentedControl, { onChange: (value) => handleUpdate({
|
|
345
347
|
openingShape: value,
|
|
346
348
|
...(value === 'rounded'
|
|
347
349
|
? {
|
|
@@ -360,28 +362,28 @@ export default function WindowPanel() {
|
|
|
360
362
|
], value: windowShape }), windowShape === 'rounded' && (_jsxs("div", { className: "mt-2 flex flex-col gap-1", children: [_jsx(SegmentedControl, { onChange: (value) => handleUpdate({ openingRadiusMode: value }), options: [
|
|
361
363
|
{ value: 'all', label: 'All' },
|
|
362
364
|
{ value: 'individual', label: 'Individual' },
|
|
363
|
-
], value: openingRadiusMode }), openingRadiusMode === 'all' ? (_jsx(SliderControl, { label: "Corner Radius", max: maxRoundedRadius, min: 0, onChange: (value) => previewWindowUpdate('cornerRadius', value), onCommit: (value) => commitWindowPreview('cornerRadius', value), precision: 2, step: 0.05, unit: "m", value:
|
|
365
|
+
], value: openingRadiusMode }), openingRadiusMode === 'all' ? (_jsx(SliderControl, { label: "Corner Radius", max: maxRoundedRadius, min: 0, onChange: (value) => previewWindowUpdate('cornerRadius', value), onCommit: (value) => commitWindowPreview('cornerRadius', value), precision: 2, step: 0.05, unit: "m", value: cornerRadius })) : (_jsx(_Fragment, { children: [
|
|
364
366
|
['Top Left', 0],
|
|
365
367
|
['Top Right', 1],
|
|
366
368
|
['Bottom Right', 2],
|
|
367
369
|
['Bottom Left', 3],
|
|
368
|
-
].map(([label, index]) => (_jsx(SliderControl, { label: label, max: maxRoundedRadius, min: 0, onChange: (value) => setOpeningCornerRadius(index, value), onCommit: (value) => setOpeningCornerRadius(index, value, true), precision: 2, step: 0.05, unit: "m", value:
|
|
370
|
+
].map(([label, index]) => (_jsx(SliderControl, { label: label, max: maxRoundedRadius, min: 0, onChange: (value) => setOpeningCornerRadius(index, value), onCommit: (value) => setOpeningCornerRadius(index, value, true), precision: 2, step: 0.05, unit: "m", value: openingCornerRadii[index] ?? 0 }, label))) })), _jsx(SliderControl, { label: "Reveal Radius", max: 0.08, min: 0, onChange: (value) => previewWindowUpdate('openingRevealRadius', value), onCommit: (value) => commitWindowPreview('openingRevealRadius', value), precision: 3, step: 0.005, unit: "m", value: openingRevealRadius })] })), windowShape === 'arch' && (_jsx("div", { className: "mt-2 flex flex-col gap-1", children: _jsx(SliderControl, { label: "Arch Height", max: Math.max(0.05, node.height), min: 0.05, onChange: (value) => handleUpdate({ archHeight: value }), precision: 2, restoreOnCommit: false, step: 0.05, unit: "m", value: archHeight }) }))] })), showOpeningShapeSection && (_jsxs(PanelSection, { title: "Opening Shape", children: [_jsx(SegmentedControl, { onChange: (value) => handleUpdate({ openingShape: value }), options: [
|
|
369
371
|
{ value: 'rectangle', label: 'Rect' },
|
|
370
372
|
{ value: 'rounded', label: 'Rounded' },
|
|
371
373
|
{ value: 'arch', label: 'Arch' },
|
|
372
374
|
], value: openingShape }), openingShape === 'rounded' && (_jsxs("div", { className: "mt-2 flex flex-col gap-1", children: [_jsx(SegmentedControl, { onChange: (value) => handleUpdate({ openingRadiusMode: value }), options: [
|
|
373
375
|
{ value: 'all', label: 'All' },
|
|
374
376
|
{ value: 'individual', label: 'Individual' },
|
|
375
|
-
], value: openingRadiusMode }), openingRadiusMode === 'all' ? (_jsx(SliderControl, { label: "Corner Radius", max: maxRoundedRadius, min: 0, onChange: (value) => previewWindowUpdate('cornerRadius', value), onCommit: (value) => commitWindowPreview('cornerRadius', value), precision: 2, step: 0.05, unit: "m", value:
|
|
377
|
+
], value: openingRadiusMode }), openingRadiusMode === 'all' ? (_jsx(SliderControl, { label: "Corner Radius", max: maxRoundedRadius, min: 0, onChange: (value) => previewWindowUpdate('cornerRadius', value), onCommit: (value) => commitWindowPreview('cornerRadius', value), precision: 2, step: 0.05, unit: "m", value: cornerRadius })) : (_jsx(_Fragment, { children: [
|
|
376
378
|
['Top Left', 0],
|
|
377
379
|
['Top Right', 1],
|
|
378
380
|
['Bottom Right', 2],
|
|
379
381
|
['Bottom Left', 3],
|
|
380
|
-
].map(([label, index]) => (_jsx(SliderControl, { label: label, max: maxRoundedRadius, min: 0, onChange: (value) => setOpeningCornerRadius(index, value), onCommit: (value) => setOpeningCornerRadius(index, value, true), precision: 2, step: 0.05, unit: "m", value:
|
|
382
|
+
].map(([label, index]) => (_jsx(SliderControl, { label: label, max: maxRoundedRadius, min: 0, onChange: (value) => setOpeningCornerRadius(index, value), onCommit: (value) => setOpeningCornerRadius(index, value, true), precision: 2, step: 0.05, unit: "m", value: openingCornerRadii[index] ?? 0 }, label))) })), _jsx(SliderControl, { label: "Reveal Radius", max: 0.08, min: 0, onChange: (value) => previewWindowUpdate('openingRevealRadius', value), onCommit: (value) => commitWindowPreview('openingRevealRadius', value), precision: 3, step: 0.005, unit: "m", value: openingRevealRadius })] })), openingShape === 'arch' && (_jsx("div", { className: "mt-2 flex flex-col gap-1", children: _jsx(SliderControl, { label: "Arch Height", max: Math.max(0.05, node.height), min: 0.05, onChange: (value) => handleUpdate({ archHeight: value }), precision: 2, restoreOnCommit: false, step: 0.05, unit: "m", value: archHeight }) }))] })), !isOpening && (_jsxs(_Fragment, { children: [showFrameSection && (_jsxs(PanelSection, { title: "Frame", children: [_jsx(SliderControl, { label: "Thickness", min: 0, onChange: (v) => handleUpdate({ frameThickness: v }), precision: 3, step: 0.01, unit: "m", value: node.frameThickness }), _jsx(SliderControl, { label: "Depth", min: 0, onChange: (v) => handleUpdate({ frameDepth: v }), precision: 3, step: 0.01, unit: "m", value: node.frameDepth })] })), showGridSection && (_jsxs(PanelSection, { title: "Grid", children: [_jsx(SliderControl, { label: "Columns", max: 8, min: 1, onChange: (v) => {
|
|
381
383
|
const n = Math.max(1, Math.min(8, Math.round(v)));
|
|
382
384
|
handleUpdate({ columnRatios: Array(n).fill(1 / n) });
|
|
383
385
|
}, precision: 0, step: 1, value: numCols }), _jsx(SliderControl, { label: "Rows", max: 8, min: 1, onChange: (v) => {
|
|
384
386
|
const n = Math.max(1, Math.min(8, Math.round(v)));
|
|
385
387
|
handleUpdate({ rowRatios: Array(n).fill(1 / n) });
|
|
386
|
-
}, precision: 0, step: 1, value: numRows }), numCols > 1 && (_jsxs("div", { className: "mt-2 flex flex-col gap-1", children: [_jsx("div", { className: "mb-1 px-1 font-medium text-[10px] text-muted-foreground/80 uppercase tracking-wider", children: "Col Widths" }), normCols.map((ratio, i) => (_jsx(SliderControl, { label: `C${i + 1}`, max: 95, min: 5, onChange: (v) => setColumnRatio(i, v / 100), precision: 1, step: 1, unit: "%", value: Math.round(ratio * 100 * 10) / 10 }, `c-${i}`))), _jsx("div", { className: "mt-1 border-border/50 border-t pt-1", children: _jsx(SliderControl, { label: "Divider", max: 0.1, min: 0.005, onChange: (v) => handleUpdate({ columnDividerThickness: v }), precision: 3, step: 0.01, unit: "m", value:
|
|
388
|
+
}, precision: 0, step: 1, value: numRows }), numCols > 1 && (_jsxs("div", { className: "mt-2 flex flex-col gap-1", children: [_jsx("div", { className: "mb-1 px-1 font-medium text-[10px] text-muted-foreground/80 uppercase tracking-wider", children: "Col Widths" }), normCols.map((ratio, i) => (_jsx(SliderControl, { label: `C${i + 1}`, max: 95, min: 5, onChange: (v) => setColumnRatio(i, v / 100), precision: 1, step: 1, unit: "%", value: Math.round(ratio * 100 * 10) / 10 }, `c-${i}`))), _jsx("div", { className: "mt-1 border-border/50 border-t pt-1", children: _jsx(SliderControl, { label: "Divider", max: 0.1, min: 0.005, onChange: (v) => handleUpdate({ columnDividerThickness: v }), precision: 3, step: 0.01, unit: "m", value: node.columnDividerThickness ?? 0.03 }) })] })), numRows > 1 && (_jsxs("div", { className: "mt-2 flex flex-col gap-1", children: [_jsx("div", { className: "mb-1 px-1 font-medium text-[10px] text-muted-foreground/80 uppercase tracking-wider", children: "Row Heights" }), normRows.map((ratio, i) => (_jsx(SliderControl, { label: `R${i + 1}`, max: 95, min: 5, onChange: (v) => setRowRatio(i, v / 100), precision: 1, step: 1, unit: "%", value: Math.round(ratio * 100 * 10) / 10 }, `r-${i}`))), _jsx("div", { className: "mt-1 border-border/50 border-t pt-1", children: _jsx(SliderControl, { label: "Divider", max: 0.1, min: 0.005, onChange: (v) => handleUpdate({ rowDividerThickness: v }), precision: 3, step: 0.01, unit: "m", value: node.rowDividerThickness ?? 0.03 }) })] }))] })), showSillSection && (_jsxs(PanelSection, { title: "Sill", children: [_jsx(ToggleControl, { checked: node.sill, label: "Enable Sill", onChange: (checked) => handleUpdate({ sill: checked }) }), node.sill && (_jsxs("div", { className: "mt-1 flex flex-col gap-1", children: [_jsx(SliderControl, { label: "Depth", min: 0, onChange: (v) => handleUpdate({ sillDepth: v }), precision: 3, step: 0.01, unit: "m", value: node.sillDepth }), _jsx(SliderControl, { label: "Thickness", min: 0, onChange: (v) => handleUpdate({ sillThickness: v }), precision: 3, step: 0.01, unit: "m", value: node.sillThickness })] }))] }))] })), _jsx(PanelSection, { title: "Actions", children: _jsxs(ActionGroup, { children: [_jsx(ActionButton, { icon: _jsx(Move, { className: "h-3.5 w-3.5" }), label: "Move", onClick: handleMove }), _jsx(ActionButton, { icon: _jsx(Copy, { className: "h-3.5 w-3.5" }), label: "Duplicate", onClick: handleDuplicate }), _jsx(ActionButton, { className: "hover:bg-red-500/20", icon: _jsx(Trash2, { className: "h-3.5 w-3.5 text-red-400" }), label: "Delete", onClick: handleDelete })] }) })] }));
|
|
387
389
|
}
|
|
@@ -10,8 +10,8 @@ export const windowParametrics = {
|
|
|
10
10
|
{
|
|
11
11
|
label: 'Dimensions',
|
|
12
12
|
fields: [
|
|
13
|
-
{ key: 'width', kind: 'number', unit: 'm', min: 0.3, max:
|
|
14
|
-
{ key: 'height', kind: 'number', unit: 'm', min: 0.3, max:
|
|
13
|
+
{ key: 'width', kind: 'number', unit: 'm', min: 0.3, max: 1000, step: 0.05 },
|
|
14
|
+
{ key: 'height', kind: 'number', unit: 'm', min: 0.3, max: 1000, step: 0.05 },
|
|
15
15
|
],
|
|
16
16
|
},
|
|
17
17
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/window/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+C,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAW/F,eAAO,MAAM,cAAc,GAAI,UAAU;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/window/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+C,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAW/F,eAAO,MAAM,cAAc,GAAI,UAAU;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,gCA4C5D,CAAA;AAED,eAAe,cAAc,CAAA"}
|
package/dist/window/renderer.js
CHANGED
|
@@ -12,10 +12,8 @@ export const WindowRenderer = ({ node }) => {
|
|
|
12
12
|
}, [node.id]);
|
|
13
13
|
const handlers = useNodeEvents(node, 'window');
|
|
14
14
|
const shading = useViewer((s) => s.shading);
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
return typeof visible === 'boolean' ? visible : undefined;
|
|
18
|
-
});
|
|
15
|
+
const liveOverrides = useLiveNodeOverrides((s) => s.get(node.id));
|
|
16
|
+
const renderNode = liveOverrides ? { ...node, ...liveOverrides } : node;
|
|
19
17
|
const isTransient = !!node.metadata?.isTransient;
|
|
20
18
|
const material = useMemo(() => {
|
|
21
19
|
const mat = node.material;
|
|
@@ -29,9 +27,9 @@ export const WindowRenderer = ({ node }) => {
|
|
|
29
27
|
node.material?.properties,
|
|
30
28
|
node.material?.texture,
|
|
31
29
|
]);
|
|
32
|
-
const mesh = (_jsx("mesh", { material: material, position:
|
|
33
|
-
if (!
|
|
30
|
+
const mesh = (_jsx("mesh", { material: material, position: renderNode.position, ref: ref, rotation: renderNode.rotation, visible: renderNode.visible, ...(isTransient ? {} : handlers), children: _jsx("boxGeometry", { args: [0, 0, 0] }) }));
|
|
31
|
+
if (!renderNode.roofSegmentId)
|
|
34
32
|
return mesh;
|
|
35
|
-
return (_jsx(RoofFaceHostFrame, { roofFace:
|
|
33
|
+
return (_jsx(RoofFaceHostFrame, { roofFace: renderNode.roofFace, roofSegmentId: renderNode.roofSegmentId, children: mesh }));
|
|
36
34
|
};
|
|
37
35
|
export default WindowRenderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/window/tool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/window/tool.tsx"],"names":[],"mappings":"AA+FA;;;;;;;;;GASG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EA09BvB,CAAA;AAED,eAAe,UAAU,CAAA"}
|
package/dist/window/tool.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { emitter, isCurvedWall, sceneRegistry, spatialGridManager, useScene, WallNode as WallNodeSchema, WindowNode, } from '@pascal-app/core';
|
|
3
|
-
import {
|
|
4
|
-
import { useViewer } from '@pascal-app/viewer';
|
|
2
|
+
import { dormerWallFacePointToDormer, emitter, getEffectiveNode, holdHiddenWallPointerEvents, isCurvedWall, sceneRegistry, spatialGridManager, useLiveNodeOverrides, useScene, WallNode as WallNodeSchema, WindowNode, } from '@pascal-app/core';
|
|
3
|
+
import { calculateItemRotation, clearPlacementSurface, EDITOR_LAYER, getSideFromNormal, isMagneticSnapActive, isValidWallSideFace, publishPlacementSurface, snapToHalf, triggerSFX, useAlignmentGuides, useEditor, useFacingPose, usePlacementPreview, useRegistryToolContext, } from '@pascal-app/editor';
|
|
5
4
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
6
5
|
import { BoxGeometry, EdgesGeometry, Vector3 } from 'three';
|
|
7
6
|
import { LineBasicNodeMaterial } from 'three/webgpu';
|
|
7
|
+
import { dormerEventFromHostedWindow, getDormerWindowWorldNormal, getDormerWindowWorldYaw, resolveDormerWindowTarget, } from '../shared/dormer-wall-opening-placement';
|
|
8
8
|
import { clearOpeningGuides3D, publishOpeningGuidesForWallEvent, resolveSillSnap, } from '../shared/opening-guides-runtime';
|
|
9
9
|
import { getRoofWallOpeningCursorPose, resolveRoofWallOpeningTarget, worldToSelectedBuildingLocal, } from '../shared/roof-wall-opening-placement';
|
|
10
10
|
import { collectWallOpeningAlignmentCandidates, resolveWallSlideAlignment, } from '../shared/wall-opening-alignment';
|
|
@@ -38,6 +38,7 @@ const roofFallbackPoint = new Vector3();
|
|
|
38
38
|
* engages only on an actual mesh hover — no proximity magnet.
|
|
39
39
|
*/
|
|
40
40
|
const WindowTool = () => {
|
|
41
|
+
const { activeLevelId, isCameraDragging, selectNode } = useRegistryToolContext();
|
|
41
42
|
const draftRef = useRef(null);
|
|
42
43
|
const cursorGroupRef = useRef(null);
|
|
43
44
|
const edgesRef = useRef(null);
|
|
@@ -86,7 +87,7 @@ const WindowTool = () => {
|
|
|
86
87
|
if (live?.type !== 'window')
|
|
87
88
|
return;
|
|
88
89
|
draftRef.current = live;
|
|
89
|
-
publishPlacementPreview(live, parentNode);
|
|
90
|
+
publishPlacementPreview(getEffectiveNode(live), parentNode);
|
|
90
91
|
};
|
|
91
92
|
let hostKind = null;
|
|
92
93
|
// timeStamp of the most recent wall/roof mesh event. A wall/roof hover and
|
|
@@ -100,10 +101,11 @@ const WindowTool = () => {
|
|
|
100
101
|
// to the last wall hover so the flip shows live before commit.
|
|
101
102
|
let sideFlip = false;
|
|
102
103
|
let lastWallEvent = null;
|
|
104
|
+
let lastDormerEvent = null;
|
|
103
105
|
// Last open-floor cursor point (level-local X/Z) + floor Y, so an R-flip
|
|
104
106
|
// while free-following can re-render the floating ghost with the new facing.
|
|
105
107
|
let lastFloorPoint = null;
|
|
106
|
-
const getLevelId = () =>
|
|
108
|
+
const getLevelId = () => activeLevelId;
|
|
107
109
|
const getLevelYOffset = () => {
|
|
108
110
|
const id = getLevelId();
|
|
109
111
|
return id ? (sceneRegistry.nodes.get(id)?.position.y ?? 0) : 0;
|
|
@@ -119,6 +121,7 @@ const WindowTool = () => {
|
|
|
119
121
|
return;
|
|
120
122
|
}
|
|
121
123
|
const wallId = draft.parentId;
|
|
124
|
+
useLiveNodeOverrides.getState().clear(draft.id);
|
|
122
125
|
useScene.getState().deleteNode(draft.id);
|
|
123
126
|
draftRef.current = null;
|
|
124
127
|
clearPlacementPreview();
|
|
@@ -133,6 +136,7 @@ const WindowTool = () => {
|
|
|
133
136
|
clearOpeningGuides3D();
|
|
134
137
|
setFallbackPose(null);
|
|
135
138
|
useFacingPose.getState().clear();
|
|
139
|
+
clearPlacementSurface();
|
|
136
140
|
clearPlacementPreview();
|
|
137
141
|
};
|
|
138
142
|
// Alignment candidates — anchors of every alignable object; refreshed
|
|
@@ -203,6 +207,48 @@ const WindowTool = () => {
|
|
|
203
207
|
const [x, , z] = worldToSelectedBuildingLocal(roofFallbackPoint.set(...event.position));
|
|
204
208
|
showGhostAt([x, getLevelYOffset() + FALLBACK_HEIGHT / 2 + FALLBACK_SILL_LIFT, z], getLevelYOffset());
|
|
205
209
|
};
|
|
210
|
+
const dormerWindowWorldPosition = (event, target) => {
|
|
211
|
+
const point = roofFallbackPoint.set(...dormerWallFacePointToDormer(event.node, target.face, target.position));
|
|
212
|
+
event.object.localToWorld(point);
|
|
213
|
+
return worldToSelectedBuildingLocal(point);
|
|
214
|
+
};
|
|
215
|
+
const applyDormerTarget = (event, target) => {
|
|
216
|
+
const side = sideFlip ? 'back' : 'front';
|
|
217
|
+
const itemRotation = sideFlip ? Math.PI : 0;
|
|
218
|
+
if (draftRef.current && draftRef.current.parentId !== event.node.id)
|
|
219
|
+
destroyDraft();
|
|
220
|
+
if (!draftRef.current) {
|
|
221
|
+
const node = WindowNode.parse({
|
|
222
|
+
position: target.position,
|
|
223
|
+
rotation: [0, itemRotation, 0],
|
|
224
|
+
side,
|
|
225
|
+
parentId: event.node.id,
|
|
226
|
+
dormerId: event.node.id,
|
|
227
|
+
dormerFace: target.face,
|
|
228
|
+
metadata: { isTransient: true },
|
|
229
|
+
});
|
|
230
|
+
useScene.getState().createNode(node, event.node.id);
|
|
231
|
+
draftRef.current = node;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
useLiveNodeOverrides.getState().set(draftRef.current.id, {
|
|
235
|
+
position: target.position,
|
|
236
|
+
rotation: [0, itemRotation, 0],
|
|
237
|
+
side,
|
|
238
|
+
parentId: event.node.id,
|
|
239
|
+
dormerId: event.node.id,
|
|
240
|
+
dormerFace: target.face,
|
|
241
|
+
wallId: undefined,
|
|
242
|
+
roofSegmentId: undefined,
|
|
243
|
+
roofFace: undefined,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
publishDraftPreview(event.node);
|
|
247
|
+
clearOpeningGuides3D();
|
|
248
|
+
const worldPosition = dormerWindowWorldPosition(event, target);
|
|
249
|
+
publishPlacementSurface(new Vector3(...worldPosition), getDormerWindowWorldNormal(event, target));
|
|
250
|
+
updateCursor(worldPosition, getDormerWindowWorldYaw(event, target), target.valid, 0);
|
|
251
|
+
};
|
|
206
252
|
// Sill alignment (snap + guide): a sibling sill/centre/top wins over the
|
|
207
253
|
// grid when within threshold — it's the magnetic ("lines") component for the
|
|
208
254
|
// vertical axis, so it runs only when magnetic snap is on; otherwise the
|
|
@@ -244,7 +290,7 @@ const WindowTool = () => {
|
|
|
244
290
|
height,
|
|
245
291
|
});
|
|
246
292
|
const { clampedX, clampedY } = clampToWall(wall, localX, localY, width, height, useScene.getState().nodes);
|
|
247
|
-
const valid = !hasWallChildOverlap(wall.id, clampedX, clampedY, width, height, ignoreId);
|
|
293
|
+
const valid = !hasWallChildOverlap(wall.id, useScene.getState().nodes, clampedX, clampedY, width, height, ignoreId);
|
|
248
294
|
return { clampedX, clampedY, valid };
|
|
249
295
|
};
|
|
250
296
|
// Shared create/update path for the wall draft — used by the direct
|
|
@@ -269,7 +315,7 @@ const WindowTool = () => {
|
|
|
269
315
|
}
|
|
270
316
|
const { clampedX, clampedY, valid } = resolveWallPlacement(wall, rawLocalX, rawLocalY, width, height, applySnap, draftRef.current.id);
|
|
271
317
|
if (wall.id === draftRef.current.parentId) {
|
|
272
|
-
|
|
318
|
+
useLiveNodeOverrides.getState().set(draftRef.current.id, {
|
|
273
319
|
position: [clampedX, clampedY, 0],
|
|
274
320
|
rotation: [0, itemRotation, 0],
|
|
275
321
|
side,
|
|
@@ -277,6 +323,7 @@ const WindowTool = () => {
|
|
|
277
323
|
markHostDirty(wall.id);
|
|
278
324
|
}
|
|
279
325
|
else {
|
|
326
|
+
useLiveNodeOverrides.getState().clear(draftRef.current.id);
|
|
280
327
|
useScene.getState().updateNode(draftRef.current.id, {
|
|
281
328
|
position: [clampedX, clampedY, 0],
|
|
282
329
|
rotation: [0, itemRotation, 0],
|
|
@@ -314,6 +361,7 @@ const WindowTool = () => {
|
|
|
314
361
|
clearPlacementPreview();
|
|
315
362
|
draftRef.current = null;
|
|
316
363
|
hostKind = null;
|
|
364
|
+
useLiveNodeOverrides.getState().clear(draft.id);
|
|
317
365
|
useScene.getState().deleteNode(draft.id);
|
|
318
366
|
useScene.temporal.getState().resume();
|
|
319
367
|
const levelId = getLevelId();
|
|
@@ -349,7 +397,7 @@ const WindowTool = () => {
|
|
|
349
397
|
sillThickness: draft.sillThickness,
|
|
350
398
|
});
|
|
351
399
|
useScene.getState().createNode(node, wall.id);
|
|
352
|
-
|
|
400
|
+
selectNode(node.id);
|
|
353
401
|
triggerSFX('sfx:structure-build');
|
|
354
402
|
useAlignmentGuides.getState().clear();
|
|
355
403
|
clearOpeningGuides3D();
|
|
@@ -362,6 +410,64 @@ const WindowTool = () => {
|
|
|
362
410
|
useEditor.getState().setTool(null);
|
|
363
411
|
}
|
|
364
412
|
};
|
|
413
|
+
const commitWindowAtDormer = (dormer, target) => {
|
|
414
|
+
const draft = draftRef.current;
|
|
415
|
+
if (!draft)
|
|
416
|
+
return;
|
|
417
|
+
clearPlacementPreview();
|
|
418
|
+
draftRef.current = null;
|
|
419
|
+
hostKind = null;
|
|
420
|
+
useLiveNodeOverrides.getState().clear(draft.id);
|
|
421
|
+
useScene.getState().deleteNode(draft.id);
|
|
422
|
+
useScene.temporal.getState().resume();
|
|
423
|
+
const state = useScene.getState();
|
|
424
|
+
const windowCount = Object.values(state.nodes).filter((node) => node.type === 'window').length;
|
|
425
|
+
const side = sideFlip ? 'back' : 'front';
|
|
426
|
+
const node = WindowNode.parse({
|
|
427
|
+
name: `Window ${windowCount + 1}`,
|
|
428
|
+
position: target.position,
|
|
429
|
+
rotation: [0, sideFlip ? Math.PI : 0, 0],
|
|
430
|
+
side,
|
|
431
|
+
parentId: dormer.id,
|
|
432
|
+
dormerId: dormer.id,
|
|
433
|
+
dormerFace: target.face,
|
|
434
|
+
width: draft.width,
|
|
435
|
+
height: draft.height,
|
|
436
|
+
material: draft.material,
|
|
437
|
+
slots: draft.slots,
|
|
438
|
+
openingKind: draft.openingKind,
|
|
439
|
+
windowType: draft.windowType,
|
|
440
|
+
operationState: draft.operationState,
|
|
441
|
+
awningDirection: draft.awningDirection,
|
|
442
|
+
casementStyle: draft.casementStyle,
|
|
443
|
+
hingesSide: draft.hingesSide,
|
|
444
|
+
openingShape: draft.openingShape,
|
|
445
|
+
openingRadiusMode: draft.openingRadiusMode,
|
|
446
|
+
openingCornerRadii: draft.openingCornerRadii,
|
|
447
|
+
cornerRadius: draft.cornerRadius,
|
|
448
|
+
archHeight: draft.archHeight,
|
|
449
|
+
frameThickness: draft.frameThickness,
|
|
450
|
+
frameDepth: draft.frameDepth,
|
|
451
|
+
columnRatios: draft.columnRatios,
|
|
452
|
+
rowRatios: draft.rowRatios,
|
|
453
|
+
columnDividerThickness: draft.columnDividerThickness,
|
|
454
|
+
rowDividerThickness: draft.rowDividerThickness,
|
|
455
|
+
sill: draft.sill,
|
|
456
|
+
sillDepth: draft.sillDepth,
|
|
457
|
+
sillThickness: draft.sillThickness,
|
|
458
|
+
});
|
|
459
|
+
state.createNode(node, dormer.id);
|
|
460
|
+
state.dirtyNodes.add(dormer.id);
|
|
461
|
+
selectNode(node.id);
|
|
462
|
+
triggerSFX('sfx:structure-build');
|
|
463
|
+
if (useEditor.getState().getContinuation('point') === 'repeat') {
|
|
464
|
+
useScene.temporal.getState().pause();
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
hideCursor();
|
|
468
|
+
useEditor.getState().setTool(null);
|
|
469
|
+
}
|
|
470
|
+
};
|
|
365
471
|
// ── Direct wall-mesh hover ──────────────────────────────────────
|
|
366
472
|
const onWallHover = (event) => {
|
|
367
473
|
hostKind = 'wall';
|
|
@@ -378,7 +484,12 @@ const WindowTool = () => {
|
|
|
378
484
|
const side = sideFlip ? (faceSide === 'front' ? 'back' : 'front') : faceSide;
|
|
379
485
|
const flipOffset = sideFlip ? Math.PI : 0;
|
|
380
486
|
const itemRotation = calculateItemRotation(event.normal) + flipOffset;
|
|
381
|
-
|
|
487
|
+
// World yaw of a wall CHILD: the wall group is yawed -wallAngle and the
|
|
488
|
+
// node carries wall-local `itemRotation` — `calculateCursorRotation` was
|
|
489
|
+
// π off, pointing the facing triangle at the far side of the wall (see
|
|
490
|
+
// MoveDoorTool.applyPreview, which fixed the same class for moves).
|
|
491
|
+
const wallAngle = Math.atan2(event.node.end[1] - event.node.start[1], event.node.end[0] - event.node.start[0]);
|
|
492
|
+
const cursorRotation = itemRotation - wallAngle;
|
|
382
493
|
applyWallTarget({
|
|
383
494
|
wall: event.node,
|
|
384
495
|
rawLocalX: event.localPosition[0],
|
|
@@ -421,7 +532,7 @@ const WindowTool = () => {
|
|
|
421
532
|
// NOT snap from proximity — snapping engages only when the cursor ray
|
|
422
533
|
// actually hovers a wall (onWallHover) or roof face (onRoofHover).
|
|
423
534
|
const onGridFreeFollow = (event) => {
|
|
424
|
-
if (
|
|
535
|
+
if (isCameraDragging())
|
|
425
536
|
return;
|
|
426
537
|
// A wall/roof mesh handler processed this pointermove (shared DOM
|
|
427
538
|
// timeStamp) — it owns the frame and has snapped the draft, so skip the
|
|
@@ -437,6 +548,83 @@ const WindowTool = () => {
|
|
|
437
548
|
destroyDraft();
|
|
438
549
|
showGhostAt([x, y + FALLBACK_HEIGHT / 2 + FALLBACK_SILL_LIFT, z], y);
|
|
439
550
|
};
|
|
551
|
+
// ── Dormer wall faces ──────────────────────────────────────────
|
|
552
|
+
// Dormer windows use the same WindowNode mesh and inspector as regular
|
|
553
|
+
// windows, but their host frame is supplied by DormerRenderer.
|
|
554
|
+
const resolveDormerTarget = (event) => resolveDormerWindowTarget({
|
|
555
|
+
event,
|
|
556
|
+
width: draftRef.current?.width ?? FALLBACK_WIDTH,
|
|
557
|
+
height: draftRef.current?.height ?? FALLBACK_HEIGHT,
|
|
558
|
+
nodes: useScene.getState().nodes,
|
|
559
|
+
ignoreId: draftRef.current?.id,
|
|
560
|
+
snap: snapToHalf,
|
|
561
|
+
});
|
|
562
|
+
const showDormerFallbackCursor = (event) => {
|
|
563
|
+
const [x, y, z] = worldToSelectedBuildingLocal(roofFallbackPoint.set(...event.position));
|
|
564
|
+
showGhostAt([x, y, z], y);
|
|
565
|
+
};
|
|
566
|
+
const onDormerHover = (event) => {
|
|
567
|
+
hostKind = 'dormer';
|
|
568
|
+
lastMeshEventTime = event.nativeEvent?.timeStamp ?? -1;
|
|
569
|
+
lastDormerEvent = event;
|
|
570
|
+
const target = resolveDormerTarget(event);
|
|
571
|
+
if (!target) {
|
|
572
|
+
destroyDraft();
|
|
573
|
+
showDormerFallbackCursor(event);
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
applyDormerTarget(event, target);
|
|
577
|
+
event.stopPropagation();
|
|
578
|
+
};
|
|
579
|
+
const onDormerClick = (event) => {
|
|
580
|
+
if (!draftRef.current || draftRef.current.parentId !== event.node.id)
|
|
581
|
+
return;
|
|
582
|
+
const target = resolveDormerTarget(event);
|
|
583
|
+
if (!target)
|
|
584
|
+
return;
|
|
585
|
+
if (!target.valid && event.nativeEvent?.altKey !== true)
|
|
586
|
+
return;
|
|
587
|
+
commitWindowAtDormer(event.node, target);
|
|
588
|
+
event.stopPropagation();
|
|
589
|
+
};
|
|
590
|
+
const onDormerLeave = () => {
|
|
591
|
+
if (hostKind !== 'dormer')
|
|
592
|
+
return;
|
|
593
|
+
lastDormerEvent = null;
|
|
594
|
+
destroyDraft();
|
|
595
|
+
hideCursor();
|
|
596
|
+
hostKind = null;
|
|
597
|
+
};
|
|
598
|
+
// The default dormer window is a real WindowNode and therefore sits in
|
|
599
|
+
// front of the dormer body for raycasting. While placing another window,
|
|
600
|
+
// translate hits on that child back into a dormer-local event so the
|
|
601
|
+
// placement tool does not fall through to the ground ghost.
|
|
602
|
+
const dormerEventFromWindow = (event) => {
|
|
603
|
+
const dormerId = event.node.dormerId ?? event.node.parentId;
|
|
604
|
+
const dormer = dormerId
|
|
605
|
+
? useScene.getState().nodes[dormerId]
|
|
606
|
+
: undefined;
|
|
607
|
+
const object = dormer ? sceneRegistry.nodes.get(dormer.id) : undefined;
|
|
608
|
+
if (!(dormer?.type === 'dormer' && object))
|
|
609
|
+
return null;
|
|
610
|
+
return dormerEventFromHostedWindow(event, dormer, object);
|
|
611
|
+
};
|
|
612
|
+
const onDormerWindowHover = (event) => {
|
|
613
|
+
const dormerEvent = dormerEventFromWindow(event);
|
|
614
|
+
if (dormerEvent)
|
|
615
|
+
onDormerHover(dormerEvent);
|
|
616
|
+
};
|
|
617
|
+
const onDormerWindowClick = (event) => {
|
|
618
|
+
const dormerEvent = dormerEventFromWindow(event);
|
|
619
|
+
if (dormerEvent)
|
|
620
|
+
onDormerClick(dormerEvent);
|
|
621
|
+
};
|
|
622
|
+
const onDormerWindowLeave = (event) => {
|
|
623
|
+
if (event.node.dormerId ||
|
|
624
|
+
useScene.getState().nodes[event.node.parentId]?.type === 'dormer') {
|
|
625
|
+
onDormerLeave();
|
|
626
|
+
}
|
|
627
|
+
};
|
|
440
628
|
// ── Roof-segment wall faces ─────────────────────────────────────
|
|
441
629
|
// The merged roof mesh emits `roof:*`; hits are resolved against the
|
|
442
630
|
// segments' vertical wall faces (base walls + coplanar gable ends),
|
|
@@ -473,7 +661,7 @@ const WindowTool = () => {
|
|
|
473
661
|
if (draftRef.current && draftRef.current.parentId !== segment.id)
|
|
474
662
|
destroyDraft();
|
|
475
663
|
if (draftRef.current) {
|
|
476
|
-
|
|
664
|
+
useLiveNodeOverrides.getState().set(draftRef.current.id, {
|
|
477
665
|
position,
|
|
478
666
|
rotation: [0, 0, 0],
|
|
479
667
|
roofFace: face.id,
|
|
@@ -512,6 +700,7 @@ const WindowTool = () => {
|
|
|
512
700
|
clearPlacementPreview();
|
|
513
701
|
draftRef.current = null;
|
|
514
702
|
hostKind = null;
|
|
703
|
+
useLiveNodeOverrides.getState().clear(draft.id);
|
|
515
704
|
useScene.getState().deleteNode(draft.id);
|
|
516
705
|
useScene.temporal.getState().resume();
|
|
517
706
|
const state = useScene.getState();
|
|
@@ -545,7 +734,7 @@ const WindowTool = () => {
|
|
|
545
734
|
// Rebuild the segment (and the merged roof) so the wall brush
|
|
546
735
|
// picks up the new opening cut.
|
|
547
736
|
useScene.getState().dirtyNodes.add(segment.id);
|
|
548
|
-
|
|
737
|
+
selectNode(node.id);
|
|
549
738
|
triggerSFX('sfx:structure-build');
|
|
550
739
|
if (useEditor.getState().getContinuation('point') === 'repeat') {
|
|
551
740
|
useScene.temporal.getState().pause();
|
|
@@ -586,6 +775,9 @@ const WindowTool = () => {
|
|
|
586
775
|
if (lastWallEvent) {
|
|
587
776
|
onWallHover(lastWallEvent);
|
|
588
777
|
}
|
|
778
|
+
else if (lastDormerEvent) {
|
|
779
|
+
onDormerHover(lastDormerEvent);
|
|
780
|
+
}
|
|
589
781
|
else if (lastFloorPoint) {
|
|
590
782
|
showGhostAt(lastFloorPoint.pos, lastFloorPoint.floorY);
|
|
591
783
|
}
|
|
@@ -599,15 +791,29 @@ const WindowTool = () => {
|
|
|
599
791
|
emitter.on('roof:move', onRoofHover);
|
|
600
792
|
emitter.on('roof:click', onRoofClick);
|
|
601
793
|
emitter.on('roof:leave', onRoofLeave);
|
|
794
|
+
emitter.on('dormer:enter', onDormerHover);
|
|
795
|
+
emitter.on('dormer:move', onDormerHover);
|
|
796
|
+
emitter.on('dormer:click', onDormerClick);
|
|
797
|
+
emitter.on('dormer:leave', onDormerLeave);
|
|
798
|
+
emitter.on('window:enter', onDormerWindowHover);
|
|
799
|
+
emitter.on('window:move', onDormerWindowHover);
|
|
800
|
+
emitter.on('window:click', onDormerWindowClick);
|
|
801
|
+
emitter.on('window:leave', onDormerWindowLeave);
|
|
602
802
|
emitter.on('grid:move', onGridFreeFollow);
|
|
603
803
|
emitter.on('tool:cancel', onCancel);
|
|
604
804
|
window.addEventListener('keydown', onKeyDown);
|
|
805
|
+
// Placement tracks the cursor through wall events; keep walls hidden by
|
|
806
|
+
// the wall-mode pass (X-ray 'down' mode) pointer-targetable while the
|
|
807
|
+
// tool is active so a new window still snaps onto them (see the wall
|
|
808
|
+
// renderer's pointer transparency).
|
|
809
|
+
const releaseHiddenWallHold = holdHiddenWallPointerEvents();
|
|
605
810
|
return () => {
|
|
606
811
|
destroyDraft();
|
|
607
812
|
hideCursor();
|
|
608
813
|
clearPlacementPreview();
|
|
609
814
|
useAlignmentGuides.getState().clear();
|
|
610
815
|
clearOpeningGuides3D();
|
|
816
|
+
releaseHiddenWallHold();
|
|
611
817
|
useScene.temporal.getState().resume();
|
|
612
818
|
emitter.off('wall:enter', onWallHover);
|
|
613
819
|
emitter.off('wall:move', onWallHover);
|
|
@@ -617,11 +823,19 @@ const WindowTool = () => {
|
|
|
617
823
|
emitter.off('roof:move', onRoofHover);
|
|
618
824
|
emitter.off('roof:click', onRoofClick);
|
|
619
825
|
emitter.off('roof:leave', onRoofLeave);
|
|
826
|
+
emitter.off('dormer:enter', onDormerHover);
|
|
827
|
+
emitter.off('dormer:move', onDormerHover);
|
|
828
|
+
emitter.off('dormer:click', onDormerClick);
|
|
829
|
+
emitter.off('dormer:leave', onDormerLeave);
|
|
830
|
+
emitter.off('window:enter', onDormerWindowHover);
|
|
831
|
+
emitter.off('window:move', onDormerWindowHover);
|
|
832
|
+
emitter.off('window:click', onDormerWindowClick);
|
|
833
|
+
emitter.off('window:leave', onDormerWindowLeave);
|
|
620
834
|
emitter.off('grid:move', onGridFreeFollow);
|
|
621
835
|
emitter.off('tool:cancel', onCancel);
|
|
622
836
|
window.removeEventListener('keydown', onKeyDown);
|
|
623
837
|
};
|
|
624
|
-
}, []);
|
|
838
|
+
}, [activeLevelId, isCameraDragging, selectNode]);
|
|
625
839
|
// Cursor geometry: window outline rectangle. Static dims, so build it once and
|
|
626
840
|
// dispose on unmount rather than reallocating (and orphaning) an EdgesGeometry
|
|
627
841
|
// on every re-render during placement.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/zone/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,kBAAkB,CAAA;AAezB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/zone/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,kBAAkB,CAAA;AAezB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGnC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,OAAO,QAAQ,CAmF1D,CAAA"}
|
package/dist/zone/definition.js
CHANGED
|
@@ -8,6 +8,7 @@ import { zoneParametrics } from './parametrics';
|
|
|
8
8
|
import { zoneQuickMeasurement } from './quick-measurement';
|
|
9
9
|
import { buildRoomFloorplanSchedule } from './room-documentation';
|
|
10
10
|
import { ZoneNode } from './schema';
|
|
11
|
+
import { buildingUnitsForZone } from './unit-membership';
|
|
11
12
|
/**
|
|
12
13
|
* Zone — Stage A. Custom-behavior escape hatch: zone uses TSL shader
|
|
13
14
|
* materials + `<Html>` portals + per-frame uniform poking, so it
|
|
@@ -60,7 +61,12 @@ export const zoneDefinition = {
|
|
|
60
61
|
priority: 4,
|
|
61
62
|
},
|
|
62
63
|
floorplan: buildZoneFloorplan,
|
|
63
|
-
|
|
64
|
+
// Every unit under the building, not just the current owner: a zone that
|
|
65
|
+
// joins its first unit has no owner to depend on until the unit changes.
|
|
66
|
+
floorplanDependencies: (node, nodes) => [
|
|
67
|
+
...(node.autoFromWalls ? node.boundaryWallIds : []),
|
|
68
|
+
...buildingUnitsForZone(node, (id) => nodes[id]).map((unit) => unit.id),
|
|
69
|
+
],
|
|
64
70
|
// 2D body move — centroid-pivot polygon mover (same as slab / ceiling).
|
|
65
71
|
// Without this, zone fell through to the overlay's generic free-translate
|
|
66
72
|
// path, which committed a `position` field zone has no schema for, so the
|