@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,5 +1,5 @@
|
|
|
1
1
|
import { DormerNode as DormerNodeSchema, } from '@pascal-app/core';
|
|
2
|
-
import { buildDormerRoofCut
|
|
2
|
+
import { buildDormerRoofCut } from './csg-geometry';
|
|
3
3
|
import { buildDormerFloorplan } from './floorplan';
|
|
4
4
|
import { dormerPaint } from './paint';
|
|
5
5
|
import { dormerParametrics } from './parametrics';
|
|
@@ -16,21 +16,6 @@ const MIN_ROOF_HEIGHT = 0;
|
|
|
16
16
|
const MAX_ROOF_HEIGHT = 2;
|
|
17
17
|
const MIN_SKIRT = 0.2;
|
|
18
18
|
const MAX_SKIRT = 6;
|
|
19
|
-
// Window-handle constants. The window opening is parametric geometry
|
|
20
|
-
// on the dormer's +Z gable face; chevrons sit just outside its rim
|
|
21
|
-
// with a small forward Z offset so they pop in front of the wall plane
|
|
22
|
-
// instead of z-fighting with the frame bars.
|
|
23
|
-
const WINDOW_SIDE_HANDLE_OFFSET = 0.15;
|
|
24
|
-
const WINDOW_HEIGHT_HANDLE_OFFSET = 0.15;
|
|
25
|
-
const WINDOW_FACE_Z_OFFSET = 0.05;
|
|
26
|
-
// The four window-edge arrows latch behind a cube at the window center;
|
|
27
|
-
// they stay hidden until the user clicks that cube to open the group.
|
|
28
|
-
const WINDOW_LATCH_GROUP = 'dormer-window';
|
|
29
|
-
// Lower clamp for window dims matches the geometry's internal clamp
|
|
30
|
-
// in `getDormerSkirtWindowDims` (0.1m). Upper clamps depend on the
|
|
31
|
-
// dormer dimensions and are resolved per-handle via the function form
|
|
32
|
-
// of `max`.
|
|
33
|
-
const MIN_WINDOW_DIM = 0.1;
|
|
34
19
|
// Clamp used for handle Y placement so side chevrons stay reachable on
|
|
35
20
|
// dormers whose wall is flat (`height ≈ 0`). The dormer body is
|
|
36
21
|
// `height + roofHeight` tall; if that collapses too, the side arrows
|
|
@@ -73,8 +58,7 @@ function dormerWidthHandle(side) {
|
|
|
73
58
|
// arrows become visible during selection without us reaching for
|
|
74
59
|
// `portal: 'grandparent'` — which trips the same "Color target has
|
|
75
60
|
// no corresponding fragment stage output" WebGPU pipeline error
|
|
76
|
-
// chimney already documents
|
|
77
|
-
// window-assembly's transparent glazing meshes).
|
|
61
|
+
// chimney already documents.
|
|
78
62
|
min: MIN_DIM,
|
|
79
63
|
currentValue: (n) => n.width,
|
|
80
64
|
apply: (initial, newWidth) => {
|
|
@@ -234,158 +218,6 @@ function dormerRotateHandle() {
|
|
|
234
218
|
},
|
|
235
219
|
};
|
|
236
220
|
}
|
|
237
|
-
// Window-center Y in dormer-local frame. The schema stores
|
|
238
|
-
// `windowOffsetY` as the bottom-relative offset of the window center
|
|
239
|
-
// from the bottom of the skirt; the geometry then maps it to
|
|
240
|
-
// `centerY = -(skirtH / 2) + offsetY`. We mirror that here so handle
|
|
241
|
-
// placements line up with what the inspector + window-assembly use.
|
|
242
|
-
function getWindowCenterY(n) {
|
|
243
|
-
return -(n.wallSkirtHeight / 2) + n.windowOffsetY;
|
|
244
|
-
}
|
|
245
|
-
// Sign of the dormer-local Z direction where the visible window face
|
|
246
|
-
// sits. The dormer renders the window on both +Z (front) and -Z (back)
|
|
247
|
-
// gable faces, but only whichever face actually pokes above the host
|
|
248
|
-
// roof slope is exposed — `getDormerExposedFaces` is the source of
|
|
249
|
-
// truth there. The in-world handles need to attach to that exposed
|
|
250
|
-
// face so the user is editing the window they can see; as the dormer
|
|
251
|
-
// drags across the ridge, the exposed face flips and the chevrons
|
|
252
|
-
// follow.
|
|
253
|
-
//
|
|
254
|
-
// Preference order when both faces are exposed (e.g. a tall gable that
|
|
255
|
-
// pokes above the roof on both ends): keep handles on +Z so the
|
|
256
|
-
// affordance stays put visually instead of flipping when the slope
|
|
257
|
-
// math grazes the threshold from the other side. When neither face is
|
|
258
|
-
// exposed (degenerate — wall buried on both sides), fall back to +Z so
|
|
259
|
-
// the placement still produces a valid vector; the chevrons are just
|
|
260
|
-
// not useful there.
|
|
261
|
-
function getExposedFaceZSign(n, sceneApi) {
|
|
262
|
-
if (!n.roofSegmentId)
|
|
263
|
-
return 1;
|
|
264
|
-
const segment = sceneApi.get(n.roofSegmentId);
|
|
265
|
-
if (!segment)
|
|
266
|
-
return 1;
|
|
267
|
-
const exposed = getDormerExposedFaces(n, segment);
|
|
268
|
-
if (exposed.front)
|
|
269
|
-
return 1;
|
|
270
|
-
if (exposed.back)
|
|
271
|
-
return -1;
|
|
272
|
-
return 1;
|
|
273
|
-
}
|
|
274
|
-
// Window-width chevron on the +X (right) or -X (left) edge of the
|
|
275
|
-
// opening. Asymmetric: dragging one arrow grows the window outward
|
|
276
|
-
// from its own edge while the opposite edge stays put. The framework
|
|
277
|
-
// only knows about the scalar `windowWidth`; we re-emit `windowOffsetX`
|
|
278
|
-
// in `apply` so the anchored edge stays at the same X in dormer-local.
|
|
279
|
-
// Placement sits on the dormer's +Z gable face, where the window opens.
|
|
280
|
-
function dormerWindowWidthHandle(side) {
|
|
281
|
-
const sign = side === 'right' ? 1 : -1;
|
|
282
|
-
return {
|
|
283
|
-
kind: 'linear-resize',
|
|
284
|
-
axis: 'x',
|
|
285
|
-
// Stand the blade up into the gable face so it reads flat-on like the
|
|
286
|
-
// top/bottom window-height arrows instead of edge-on.
|
|
287
|
-
faceNormal: true,
|
|
288
|
-
// Hidden until the user clicks the window-center latch cube.
|
|
289
|
-
latchGroup: WINDOW_LATCH_GROUP,
|
|
290
|
-
anchor: side === 'right' ? 'min' : 'max',
|
|
291
|
-
min: MIN_WINDOW_DIM,
|
|
292
|
-
// Cap at the dormer's window field — keep a 0.1m gap on each side
|
|
293
|
-
// to match the geometry's interior clamp (`maxW = width - 0.1`).
|
|
294
|
-
max: (n) => Math.max(MIN_WINDOW_DIM, n.width - 0.1),
|
|
295
|
-
currentValue: (n) => n.windowWidth,
|
|
296
|
-
apply: (initial, newWidth) => {
|
|
297
|
-
// Anchored edge stays fixed: anchor X = initial.windowOffsetX -
|
|
298
|
-
// sign * initial.windowWidth/2. New center = anchor + sign *
|
|
299
|
-
// newWidth/2 → new windowOffsetX.
|
|
300
|
-
const anchorX = initial.windowOffsetX - sign * (initial.windowWidth / 2);
|
|
301
|
-
const newOffsetX = anchorX + sign * (newWidth / 2);
|
|
302
|
-
return {
|
|
303
|
-
windowWidth: newWidth,
|
|
304
|
-
windowOffsetX: newOffsetX,
|
|
305
|
-
};
|
|
306
|
-
},
|
|
307
|
-
placement: {
|
|
308
|
-
position: (n, sceneApi) => {
|
|
309
|
-
const faceSign = getExposedFaceZSign(n, sceneApi);
|
|
310
|
-
return [
|
|
311
|
-
n.windowOffsetX + sign * (n.windowWidth / 2 + WINDOW_SIDE_HANDLE_OFFSET),
|
|
312
|
-
getWindowCenterY(n),
|
|
313
|
-
faceSign * (n.depth / 2 + WINDOW_FACE_Z_OFFSET),
|
|
314
|
-
];
|
|
315
|
-
},
|
|
316
|
-
// Left chevron points -X; right points +X. LinearArrow doesn't
|
|
317
|
-
// auto-orient axis 'x' — descriptor handles the flip.
|
|
318
|
-
rotationY: () => (side === 'right' ? 0 : Math.PI),
|
|
319
|
-
},
|
|
320
|
-
};
|
|
321
|
-
}
|
|
322
|
-
// Window-height chevron on the +Y (top) or -Y (bottom) edge of the
|
|
323
|
-
// opening. Same asymmetric pattern as the width handle, projected onto
|
|
324
|
-
// the Y axis. The schema stores the window's vertical position as
|
|
325
|
-
// `windowOffsetY` (distance from the BOTTOM of the skirt to the window
|
|
326
|
-
// CENTER), not as a centerY in dormer-local — so `apply` translates
|
|
327
|
-
// back through that mapping when it re-emits the offset.
|
|
328
|
-
function dormerWindowHeightHandle(side) {
|
|
329
|
-
const sign = side === 'top' ? 1 : -1;
|
|
330
|
-
return {
|
|
331
|
-
kind: 'linear-resize',
|
|
332
|
-
axis: 'y',
|
|
333
|
-
// Hidden until the user clicks the window-center latch cube.
|
|
334
|
-
latchGroup: WINDOW_LATCH_GROUP,
|
|
335
|
-
// 'min' = bottom edge anchored (top arrow grows the top edge up).
|
|
336
|
-
// 'max' = top edge anchored (bottom arrow drops the bottom edge).
|
|
337
|
-
anchor: side === 'top' ? 'min' : 'max',
|
|
338
|
-
min: MIN_WINDOW_DIM,
|
|
339
|
-
// Cap at the skirt with a 0.1m interior margin — matches
|
|
340
|
-
// `maxH = skirtH - 0.1` from `getDormerSkirtWindowDims`.
|
|
341
|
-
max: (n) => Math.max(MIN_WINDOW_DIM, n.wallSkirtHeight - 0.1),
|
|
342
|
-
currentValue: (n) => n.windowHeight,
|
|
343
|
-
apply: (initial, newHeight) => {
|
|
344
|
-
// Compute the anchored edge in dormer-local Y, derive the new
|
|
345
|
-
// centerY, then map back to schema-form `windowOffsetY`.
|
|
346
|
-
const initialCenterY = -(initial.wallSkirtHeight / 2) + initial.windowOffsetY;
|
|
347
|
-
const anchorY = initialCenterY - sign * (initial.windowHeight / 2);
|
|
348
|
-
const newCenterY = anchorY + sign * (newHeight / 2);
|
|
349
|
-
const newOffsetY = newCenterY + initial.wallSkirtHeight / 2;
|
|
350
|
-
return {
|
|
351
|
-
windowHeight: newHeight,
|
|
352
|
-
windowOffsetY: newOffsetY,
|
|
353
|
-
};
|
|
354
|
-
},
|
|
355
|
-
placement: {
|
|
356
|
-
position: (n, sceneApi) => {
|
|
357
|
-
const faceSign = getExposedFaceZSign(n, sceneApi);
|
|
358
|
-
return [
|
|
359
|
-
n.windowOffsetX,
|
|
360
|
-
getWindowCenterY(n) + sign * (n.windowHeight / 2 + WINDOW_HEIGHT_HANDLE_OFFSET),
|
|
361
|
-
faceSign * (n.depth / 2 + WINDOW_FACE_Z_OFFSET),
|
|
362
|
-
];
|
|
363
|
-
},
|
|
364
|
-
},
|
|
365
|
-
};
|
|
366
|
-
}
|
|
367
|
-
// Window-center latch cube. Sits at the window center on the exposed
|
|
368
|
-
// gable face; clicking it reveals / hides the four window edge arrows
|
|
369
|
-
// (width L/R + height top/bottom) tagged with `WINDOW_LATCH_GROUP`.
|
|
370
|
-
// Mirrors the duct-fitting selection cube but driven by the shared
|
|
371
|
-
// latch descriptor so the dense window cluster stays collapsed behind
|
|
372
|
-
// one grip until the user opts in.
|
|
373
|
-
function dormerWindowLatchHandle() {
|
|
374
|
-
return {
|
|
375
|
-
kind: 'latch',
|
|
376
|
-
group: WINDOW_LATCH_GROUP,
|
|
377
|
-
placement: {
|
|
378
|
-
position: (n, sceneApi) => {
|
|
379
|
-
const faceSign = getExposedFaceZSign(n, sceneApi);
|
|
380
|
-
return [
|
|
381
|
-
n.windowOffsetX,
|
|
382
|
-
getWindowCenterY(n),
|
|
383
|
-
faceSign * (n.depth / 2 + WINDOW_FACE_Z_OFFSET),
|
|
384
|
-
];
|
|
385
|
-
},
|
|
386
|
-
},
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
221
|
const dormerHandles = [
|
|
390
222
|
dormerWidthHandle('right'),
|
|
391
223
|
dormerWidthHandle('left'),
|
|
@@ -393,11 +225,6 @@ const dormerHandles = [
|
|
|
393
225
|
dormerDepthHandle('back'),
|
|
394
226
|
dormerWallHeightHandle(),
|
|
395
227
|
dormerRotateHandle(),
|
|
396
|
-
dormerWindowLatchHandle(),
|
|
397
|
-
dormerWindowWidthHandle('right'),
|
|
398
|
-
dormerWindowWidthHandle('left'),
|
|
399
|
-
dormerWindowHeightHandle('top'),
|
|
400
|
-
dormerWindowHeightHandle('bottom'),
|
|
401
228
|
// The wall-skirt (downward chevron), roof-height (peak chevron), and
|
|
402
229
|
// the asymmetric front/back depth split stay out for now. Re-adding
|
|
403
230
|
// any of them previously fired the "Color target has no
|
|
@@ -406,30 +233,22 @@ const dormerHandles = [
|
|
|
406
233
|
// extras — only reproducible while `portal: 'grandparent'` was set,
|
|
407
234
|
// which we no longer rely on (RoofEditSystem reveals the wrapper
|
|
408
235
|
// instead). The shapes themselves are valid; if the count budget
|
|
409
|
-
// turns out to also be sensitive without grandparent portal,
|
|
410
|
-
// the
|
|
236
|
+
// turns out to also be sensitive without grandparent portal, keep
|
|
237
|
+
// the current compact set.
|
|
411
238
|
// dormerWallSkirtHandle(),
|
|
412
239
|
// dormerRoofHeightHandle(),
|
|
413
240
|
];
|
|
414
241
|
/**
|
|
415
242
|
* Dormer — a small house-shaped protrusion sitting on top of a roof
|
|
416
|
-
* segment.
|
|
417
|
-
*
|
|
418
|
-
* a hosted child node — so `relations.hosts` stays unset.
|
|
243
|
+
* segment. Windows are hosted child nodes; the legacy window* fields remain
|
|
244
|
+
* in the schema only so scene migration can preserve older dormers.
|
|
419
245
|
*
|
|
420
|
-
*
|
|
421
|
-
* the
|
|
422
|
-
* full window-opening field set). Geometry renders a simple house
|
|
423
|
-
* silhouette (box body + triangular gable roof) for all `roofType`
|
|
424
|
-
* variants — the archive's variant-specific dormer roof shapes,
|
|
425
|
-
* window opening + frame, sill, and the CSG trim where the dormer
|
|
426
|
-
* meets the host roof are deferred. Per-surface paints (`topMaterial`,
|
|
427
|
-
* `sideMaterial`, `wallMaterial`) resolve via the shared helper from
|
|
428
|
-
* core but only roof / wall surfaces are emitted by the stub geometry.
|
|
246
|
+
* The renderer cuts each hosted window from the dormer shell and mounts
|
|
247
|
+
* the regular WindowNode renderer in the selected wall-face frame.
|
|
429
248
|
*/
|
|
430
249
|
export const dormerDefinition = {
|
|
431
250
|
kind: 'dormer',
|
|
432
|
-
schemaVersion:
|
|
251
|
+
schemaVersion: 4,
|
|
433
252
|
schema: DormerNode,
|
|
434
253
|
category: 'structure',
|
|
435
254
|
surfaceRole: 'roof',
|
|
@@ -443,7 +262,9 @@ export const dormerDefinition = {
|
|
|
443
262
|
},
|
|
444
263
|
capabilities: {
|
|
445
264
|
selectable: { hitVolume: 'bbox' },
|
|
446
|
-
|
|
265
|
+
// Dormers own their WindowNode children. Duplicate the complete subtree
|
|
266
|
+
// so the copied dormer never aliases windows from the source dormer.
|
|
267
|
+
duplicable: { subtree: true },
|
|
447
268
|
deletable: true,
|
|
448
269
|
// Mounts on a roof segment via `roofSegmentId`. Dirty marks
|
|
449
270
|
// cascade to the host segment's parent roof so its merged shell
|
|
@@ -458,6 +279,10 @@ export const dormerDefinition = {
|
|
|
458
279
|
// arm.
|
|
459
280
|
paint: dormerPaint,
|
|
460
281
|
},
|
|
282
|
+
relations: {
|
|
283
|
+
hosts: ['window'],
|
|
284
|
+
cascadeDelete: 'descendants',
|
|
285
|
+
},
|
|
461
286
|
affordanceTools: {
|
|
462
287
|
// Drag-to-place tool for duplicate + move. Reuses the placement
|
|
463
288
|
// ghost preview but seeds it from the moving (cloned) node so the
|
|
@@ -482,11 +307,11 @@ export const dormerDefinition = {
|
|
|
482
307
|
presentation: {
|
|
483
308
|
label: 'Dormer',
|
|
484
309
|
description: 'House-shaped protrusion on a roof segment.',
|
|
485
|
-
icon: { kind: 'url', src: '/icons/
|
|
310
|
+
icon: { kind: 'url', src: '/icons/dormer.webp' },
|
|
486
311
|
paletteSection: 'structure',
|
|
487
312
|
paletteOrder: 125,
|
|
488
313
|
},
|
|
489
314
|
mcp: {
|
|
490
|
-
description: 'A dormer on a roof segment.
|
|
315
|
+
description: 'A dormer on a roof segment. Its windows are hosted WindowNode children.',
|
|
491
316
|
},
|
|
492
317
|
};
|
|
@@ -15,9 +15,9 @@ import type { DormerNode, FloorplanGeometry, GeometryContext } from '@pascal-app
|
|
|
15
15
|
*
|
|
16
16
|
* Per-type roof linework follows the dormer's own roof geometry
|
|
17
17
|
* (`buildDormerCutShape` in csg-geometry.ts): gable ridge runs along Z,
|
|
18
|
-
* shed
|
|
19
|
-
* longer axis. Gambrel falls back to gable; dutch/mansard to
|
|
20
|
-
* same fallbacks the 3D cut uses.
|
|
18
|
+
* shed arrows follow the configured high-to-low direction, and hip ridges
|
|
19
|
+
* run along the longer axis. Gambrel falls back to gable; dutch/mansard to
|
|
20
|
+
* hip — the same fallbacks the 3D cut uses.
|
|
21
21
|
*/
|
|
22
22
|
export declare function buildDormerFloorplan(node: DormerNode, ctx: GeometryContext): FloorplanGeometry | null;
|
|
23
23
|
//# sourceMappingURL=floorplan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/dormer/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,iBAAiB,EAEjB,eAAe,EAGhB,MAAM,kBAAkB,CAAA;AAEzB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,eAAe,GACnB,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/dormer/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,iBAAiB,EAEjB,eAAe,EAGhB,MAAM,kBAAkB,CAAA;AAEzB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,eAAe,GACnB,iBAAiB,GAAG,IAAI,CAuK1B"}
|
package/dist/dormer/floorplan.js
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
*
|
|
15
15
|
* Per-type roof linework follows the dormer's own roof geometry
|
|
16
16
|
* (`buildDormerCutShape` in csg-geometry.ts): gable ridge runs along Z,
|
|
17
|
-
* shed
|
|
18
|
-
* longer axis. Gambrel falls back to gable; dutch/mansard to
|
|
19
|
-
* same fallbacks the 3D cut uses.
|
|
17
|
+
* shed arrows follow the configured high-to-low direction, and hip ridges
|
|
18
|
+
* run along the longer axis. Gambrel falls back to gable; dutch/mansard to
|
|
19
|
+
* hip — the same fallbacks the 3D cut uses.
|
|
20
20
|
*/
|
|
21
21
|
export function buildDormerFloorplan(node, ctx) {
|
|
22
22
|
const segment = ctx.parent;
|
|
@@ -112,10 +112,9 @@ export function buildDormerFloorplan(node, ctx) {
|
|
|
112
112
|
const type = node.roofType;
|
|
113
113
|
if (node.roofHeight > 0 && type !== 'flat') {
|
|
114
114
|
if (type === 'shed') {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
const head = toPlan(0, hd * 0.55);
|
|
115
|
+
const highZ = node.shedHighSide === 'front' ? hd * 0.55 : -hd * 0.55;
|
|
116
|
+
const tail = toPlan(0, highZ);
|
|
117
|
+
const head = toPlan(0, -highZ);
|
|
119
118
|
const dx = head[0] - tail[0];
|
|
120
119
|
const dy = head[1] - tail[1];
|
|
121
120
|
const len = Math.hypot(dx, dy) || 1;
|
|
@@ -179,15 +178,5 @@ export function buildDormerFloorplan(node, ctx) {
|
|
|
179
178
|
line([0, -hd], [0, hd], ridgeWidth);
|
|
180
179
|
}
|
|
181
180
|
}
|
|
182
|
-
// Window on the +Z (front) face — a line just inside the front edge,
|
|
183
|
-
// spanning the window width centred at its X offset. Marks the glazing
|
|
184
|
-
// and which way the dormer faces.
|
|
185
|
-
const ww = node.windowWidth ?? 0;
|
|
186
|
-
if (ww > 0.01) {
|
|
187
|
-
const halfWin = Math.min(ww, node.width) / 2;
|
|
188
|
-
const center = Math.max(-hw + halfWin, Math.min(hw - halfWin, node.windowOffsetX ?? 0));
|
|
189
|
-
const inset = Math.min(hd * 0.2, 0.08);
|
|
190
|
-
line([center - halfWin, hd - inset], [center + halfWin, hd - inset], lineWidth);
|
|
191
|
-
}
|
|
192
181
|
return { kind: 'group', children };
|
|
193
182
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DormerNode } from '@pascal-app/core';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
/**
|
|
4
4
|
* Grid-snap step (metres) applied to the world cursor position while a
|
|
@@ -13,30 +13,11 @@ export declare const DORMER_PLACEMENT_SNAP_M = 0.05;
|
|
|
13
13
|
* diagonals in three.
|
|
14
14
|
*/
|
|
15
15
|
export declare const DORMER_PLACEMENT_ROTATION_STEP: number;
|
|
16
|
+
export declare function getDormerBodyYaw(node: Pick<DormerNode, 'roofType' | 'shedHighSide'>): number;
|
|
16
17
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* (rectangle body + triangular gable) dropped by `wallSkirtHeight` below
|
|
20
|
-
* the anchor so the cursor sits at the floor of the dormer the way the
|
|
21
|
-
* committed CSG geometry does.
|
|
22
|
-
*
|
|
23
|
-
* For `roofType === 'flat'` (or `roofHeight === 0`) the gable apex is
|
|
24
|
-
* skipped and the shape collapses to a rectangle. Other roof types use
|
|
25
|
-
* the gable approximation — exact per-type silhouettes are a future
|
|
26
|
-
* improvement.
|
|
27
|
-
*
|
|
28
|
-
* Kept self-contained (no `@pascal-app/viewer` imports) so the geometry
|
|
29
|
-
* test doesn't drag in the CSG / BVH module graph, which fails to load
|
|
30
|
-
* outside of a browser/WebGL context. The viewer has its own
|
|
31
|
-
* `buildDormerFallbackGeometry` that mirrors this shape — used both as
|
|
32
|
-
* the CSG fallback when boolean ops fail and as the live-drag preview
|
|
33
|
-
* in the dormer renderer.
|
|
18
|
+
* Builds the lightweight placement and live-edit shell from the same
|
|
19
|
+
* per-type face generator used by committed roof geometry.
|
|
34
20
|
*/
|
|
21
|
+
export declare function buildDormerShellGeometry(node: DormerNode): THREE.BufferGeometry;
|
|
35
22
|
export declare function buildDormerGhostGeometry(node: DormerNode): THREE.BufferGeometry;
|
|
36
|
-
/**
|
|
37
|
-
* Inspector helper: which window-shape sub-controls to surface for the
|
|
38
|
-
* current dormer.
|
|
39
|
-
*/
|
|
40
|
-
export declare function dormerSupportsArch(node: DormerNode): boolean;
|
|
41
|
-
export declare function dormerSupportsCornerRadii(node: DormerNode): boolean;
|
|
42
23
|
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/dormer/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/dormer/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAA;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B,QAAuB,CAAA;AAElE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,cAAc,CAAC,GAAG,MAAM,CAG5F;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,KAAK,CAAC,cAAc,CA0D/E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,KAAK,CAAC,cAAc,CAE/E"}
|
package/dist/dormer/geometry.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getPitchFromActiveRoofHeight, getRoofModuleFaces, getRoofShapeRatios, ROOF_SHAPE_DEFAULTS, } from '@pascal-app/core';
|
|
1
2
|
import * as THREE from 'three';
|
|
2
3
|
/**
|
|
3
4
|
* Grid-snap step (metres) applied to the world cursor position while a
|
|
@@ -12,52 +13,74 @@ export const DORMER_PLACEMENT_SNAP_M = 0.05;
|
|
|
12
13
|
* diagonals in three.
|
|
13
14
|
*/
|
|
14
15
|
export const DORMER_PLACEMENT_ROTATION_STEP = (15 * Math.PI) / 180;
|
|
16
|
+
export function getDormerBodyYaw(node) {
|
|
17
|
+
if (node.roofType !== 'shed')
|
|
18
|
+
return Math.PI / 2;
|
|
19
|
+
return node.shedHighSide === 'front' ? Math.PI : 0;
|
|
20
|
+
}
|
|
15
21
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* (rectangle body + triangular gable) dropped by `wallSkirtHeight` below
|
|
19
|
-
* the anchor so the cursor sits at the floor of the dormer the way the
|
|
20
|
-
* committed CSG geometry does.
|
|
21
|
-
*
|
|
22
|
-
* For `roofType === 'flat'` (or `roofHeight === 0`) the gable apex is
|
|
23
|
-
* skipped and the shape collapses to a rectangle. Other roof types use
|
|
24
|
-
* the gable approximation — exact per-type silhouettes are a future
|
|
25
|
-
* improvement.
|
|
26
|
-
*
|
|
27
|
-
* Kept self-contained (no `@pascal-app/viewer` imports) so the geometry
|
|
28
|
-
* test doesn't drag in the CSG / BVH module graph, which fails to load
|
|
29
|
-
* outside of a browser/WebGL context. The viewer has its own
|
|
30
|
-
* `buildDormerFallbackGeometry` that mirrors this shape — used both as
|
|
31
|
-
* the CSG fallback when boolean ops fail and as the live-drag preview
|
|
32
|
-
* in the dormer renderer.
|
|
22
|
+
* Builds the lightweight placement and live-edit shell from the same
|
|
23
|
+
* per-type face generator used by committed roof geometry.
|
|
33
24
|
*/
|
|
34
|
-
export function
|
|
25
|
+
export function buildDormerShellGeometry(node) {
|
|
35
26
|
const w = Math.max(0.05, node.width);
|
|
36
27
|
const wallH = Math.max(0.05, node.height);
|
|
37
28
|
const roofH = Math.max(0, node.roofHeight);
|
|
38
29
|
const d = Math.max(0.05, node.depth);
|
|
39
|
-
const skirt = Math.max(0.05, node.wallSkirtHeight);
|
|
40
|
-
const
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
30
|
+
const skirt = Math.max(0.05, node.wallSkirtHeight ?? 2);
|
|
31
|
+
const isShed = node.roofType === 'shed';
|
|
32
|
+
const segW = isShed ? w : d;
|
|
33
|
+
const segD = isShed ? d : w;
|
|
34
|
+
const pitch = getPitchFromActiveRoofHeight({
|
|
35
|
+
roofType: node.roofType,
|
|
36
|
+
width: segW,
|
|
37
|
+
depth: segD,
|
|
38
|
+
roofHeight: roofH,
|
|
39
|
+
});
|
|
40
|
+
const faces = getRoofModuleFaces({
|
|
41
|
+
type: node.roofType,
|
|
42
|
+
w: segW,
|
|
43
|
+
d: segD,
|
|
44
|
+
wh: wallH,
|
|
45
|
+
rh: roofH,
|
|
46
|
+
baseY: -skirt,
|
|
47
|
+
insets: {},
|
|
48
|
+
baseW: segW,
|
|
49
|
+
baseD: segD,
|
|
50
|
+
tanTheta: Math.tan((pitch * Math.PI) / 180),
|
|
51
|
+
shapeRatios: getRoofShapeRatios(ROOF_SHAPE_DEFAULTS),
|
|
52
|
+
});
|
|
53
|
+
const positions = [];
|
|
54
|
+
const materialGroups = [];
|
|
55
|
+
for (const face of faces) {
|
|
56
|
+
if (face.length < 3)
|
|
57
|
+
continue;
|
|
58
|
+
const a = new THREE.Vector3(face[0].x, face[0].y, face[0].z);
|
|
59
|
+
const b = new THREE.Vector3(face[1].x, face[1].y, face[1].z);
|
|
60
|
+
const c = new THREE.Vector3(face[2].x, face[2].y, face[2].z);
|
|
61
|
+
const normal = b.clone().sub(a).cross(c.clone().sub(a)).normalize();
|
|
62
|
+
const start = positions.length / 3;
|
|
63
|
+
for (let index = 1; index < face.length - 1; index++) {
|
|
64
|
+
for (const point of [face[0], face[index], face[index + 1]]) {
|
|
65
|
+
positions.push(point.x, point.y, point.z);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
materialGroups.push({
|
|
69
|
+
start,
|
|
70
|
+
count: positions.length / 3 - start,
|
|
71
|
+
materialIndex: normal.y > 0.01 ? 3 : 0,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const geometry = new THREE.BufferGeometry();
|
|
75
|
+
geometry.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3));
|
|
76
|
+
for (const group of materialGroups)
|
|
77
|
+
geometry.addGroup(group.start, group.count, group.materialIndex);
|
|
78
|
+
const bodyYaw = getDormerBodyYaw(node);
|
|
79
|
+
if (bodyYaw !== 0)
|
|
80
|
+
geometry.rotateY(bodyYaw);
|
|
81
|
+
geometry.computeVertexNormals();
|
|
82
|
+
return geometry;
|
|
60
83
|
}
|
|
61
|
-
export function
|
|
62
|
-
return node
|
|
84
|
+
export function buildDormerGhostGeometry(node) {
|
|
85
|
+
return buildDormerShellGeometry(node);
|
|
63
86
|
}
|
package/dist/dormer/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { dormerDefinition } from './definition';
|
|
2
|
-
export { buildDormerGhostGeometry
|
|
2
|
+
export { buildDormerGhostGeometry } from './geometry';
|
|
3
3
|
export type { DormerSurfaceMaterialRole, DormerSurfaceMaterialSpec, } from './schema';
|
|
4
4
|
export { DormerNode, getEffectiveDormerSurfaceMaterial } from './schema';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dormer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dormer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,YAAY,EACV,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,UAAU,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/dormer/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { dormerDefinition } from './definition';
|
|
2
|
-
export { buildDormerGhostGeometry
|
|
2
|
+
export { buildDormerGhostGeometry } from './geometry';
|
|
3
3
|
export { DormerNode, getEffectiveDormerSurfaceMaterial } from './schema';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/dormer/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,UAAU,EAKhB,MAAM,kBAAkB,CAAA;AAQzB;;;;;;;;;GASG;AACH,QAAA,MAAM,cAAc,GAAI,UAAU;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/dormer/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,UAAU,EAKhB,MAAM,kBAAkB,CAAA;AAQzB;;;;;;;;;GASG;AACH,QAAA,MAAM,cAAc,GAAI,UAAU;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,uCA2KrD,CAAA;AAED,eAAe,cAAc,CAAA"}
|
package/dist/dormer/move-tool.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { DormerNode as DormerNodeSchema, sceneRegistry, useScene, } from '@pascal-app/core';
|
|
4
|
-
import { useEditor } from '@pascal-app/editor';
|
|
4
|
+
import { commitFreshPlacementSubtree, useEditor } from '@pascal-app/editor';
|
|
5
5
|
import { useViewer } from '@pascal-app/viewer';
|
|
6
6
|
import { useEffect, useMemo } from 'react';
|
|
7
7
|
import { DormerPlacementGuides } from './placement-guides';
|
|
@@ -56,7 +56,13 @@ const MoveDormerTool = ({ node }) => {
|
|
|
56
56
|
const obj = sceneRegistry.nodes.get(node.id);
|
|
57
57
|
if (obj)
|
|
58
58
|
obj.visible = prevVisible ?? true;
|
|
59
|
-
if (
|
|
59
|
+
if (isNew) {
|
|
60
|
+
if (node.id && useScene.getState().nodes[node.id]) {
|
|
61
|
+
useScene.getState().deleteNode(node.id);
|
|
62
|
+
}
|
|
63
|
+
useScene.temporal.getState().resume();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
60
66
|
useScene.getState().updateNode(node.id, {
|
|
61
67
|
metadata: originalMetadata,
|
|
62
68
|
});
|
|
@@ -80,7 +86,29 @@ const MoveDormerTool = ({ node }) => {
|
|
|
80
86
|
const { isNew: _isNew, isTransient: _isTransient, ...rest } = m;
|
|
81
87
|
return Object.keys(rest).length > 0 ? rest : undefined;
|
|
82
88
|
})();
|
|
83
|
-
if (isNew
|
|
89
|
+
if (isNew && node.id) {
|
|
90
|
+
const committedId = commitFreshPlacementSubtree(node.id, {
|
|
91
|
+
roofSegmentId: hit.segment.id,
|
|
92
|
+
parentId: hit.segment.id,
|
|
93
|
+
position: [hit.localX, hit.localY, hit.localZ],
|
|
94
|
+
rotation,
|
|
95
|
+
metadata: cleanedMeta,
|
|
96
|
+
visible: true,
|
|
97
|
+
});
|
|
98
|
+
if (!committedId)
|
|
99
|
+
return;
|
|
100
|
+
const committedNode = useScene.getState().nodes[committedId];
|
|
101
|
+
for (const childId of committedNode?.children ?? []) {
|
|
102
|
+
const child = useScene.getState().nodes[childId];
|
|
103
|
+
if (child?.type === 'window') {
|
|
104
|
+
useScene.getState().updateNode(childId, { dormerId: committedId });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
state.dirtyNodes.add(hit.segment.id);
|
|
108
|
+
state.dirtyNodes.add(committedId);
|
|
109
|
+
setSelection({ selectedIds: [committedId] });
|
|
110
|
+
}
|
|
111
|
+
else if (!node.id) {
|
|
84
112
|
const { id: _id, ...rest } = node;
|
|
85
113
|
const committed = DormerNodeSchema.parse({
|
|
86
114
|
...rest,
|
|
@@ -141,12 +141,12 @@ export function DormerPositionSection({ node, segment, roof, selectedId, preview
|
|
|
141
141
|
return;
|
|
142
142
|
const local = worldToSegLocal(newWorldX, worldZ_now, segment);
|
|
143
143
|
previewProp({ position: [local.localX, py ?? 0, local.localZ] });
|
|
144
|
-
}, onCommit: (newWorldX) => commitWorldPosition(newWorldX, worldZ_now), precision: 2, restoreOnCommit: false, step: 0.05, unit: "m", value:
|
|
144
|
+
}, onCommit: (newWorldX) => commitWorldPosition(newWorldX, worldZ_now), precision: 2, restoreOnCommit: false, step: 0.05, unit: "m", value: worldX_now }), _jsx(SliderControl, { label: "Z", max: Math.round(worldMaxZ * 10) / 10, min: Math.round(worldMinZ * 10) / 10, onChange: (newWorldZ) => {
|
|
145
145
|
if (!segment)
|
|
146
146
|
return;
|
|
147
147
|
const local = worldToSegLocal(worldX_now, newWorldZ, segment);
|
|
148
148
|
previewProp({ position: [local.localX, py ?? 0, local.localZ] });
|
|
149
|
-
}, onCommit: (newWorldZ) => commitWorldPosition(worldX_now, newWorldZ), precision: 2, restoreOnCommit: false, step: 0.05, unit: "m", value:
|
|
149
|
+
}, onCommit: (newWorldZ) => commitWorldPosition(worldX_now, newWorldZ), precision: 2, restoreOnCommit: false, step: 0.05, unit: "m", value: worldZ_now }), _jsx(SliderControl, { label: "Rotation", max: 180, min: -180, onChange: (degrees) => {
|
|
150
150
|
const newWorldRot = (degrees * Math.PI) / 180;
|
|
151
151
|
let ancestorWorldY = 0;
|
|
152
152
|
if (segment) {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WindowNode } from '@pascal-app/core';
|
|
2
|
+
export declare function DormerWindowsSection({ windows, canAdd, onAdd, onEdit, onMove, }: {
|
|
3
|
+
windows: WindowNode[];
|
|
4
|
+
canAdd: boolean;
|
|
5
|
+
onAdd: () => void;
|
|
6
|
+
onEdit: (window: WindowNode) => void;
|
|
7
|
+
onMove: (window: WindowNode) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=panel-windows-section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-windows-section.d.ts","sourceRoot":"","sources":["../../src/dormer/panel-windows-section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIlD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,GACP,EAAE;IACD,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;IACpC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAA;CACrC,+BAiEA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { ActionButton, PanelSection } from '@pascal-app/editor';
|
|
4
|
+
import { Move, Pencil, Plus } from 'lucide-react';
|
|
5
|
+
export function DormerWindowsSection({ windows, canAdd, onAdd, onEdit, onMove, }) {
|
|
6
|
+
return (_jsxs(PanelSection, { title: `Windows (${windows.length})`, children: [windows.length > 0 ? (_jsx("div", { className: "flex flex-col gap-1", children: windows.map((window, index) => (_jsxs("div", { className: "flex items-center gap-1 rounded-lg border border-border/50 bg-[#2C2C2E] p-1", children: [_jsxs("button", { className: "min-w-0 flex-1 rounded-md px-2 py-1.5 text-left transition-colors hover:bg-[#3e3e3e]", onClick: () => onEdit(window), type: "button", children: [_jsx("span", { className: "block truncate font-medium text-foreground text-xs", children: window.name || `Window ${index + 1}` }), _jsxs("span", { className: "block truncate text-[10px] text-muted-foreground capitalize", children: [window.dormerFace ?? 'front', " \u00B7 ", window.width.toFixed(2), " \u00D7", ' ', window.height.toFixed(2), " m"] })] }), _jsx("button", { "aria-label": `Edit ${window.name || `Window ${index + 1}`}`, className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-[#3e3e3e] hover:text-foreground", onClick: () => onEdit(window), title: "Edit window", type: "button", children: _jsx(Pencil, { className: "h-3.5 w-3.5" }) }), _jsxs("button", { "aria-label": `Move ${window.name || `Window ${index + 1}`}`, className: "flex h-8 shrink-0 items-center justify-center gap-1 rounded-md px-2 text-muted-foreground text-xs transition-colors hover:bg-[#3e3e3e] hover:text-foreground", onClick: () => onMove(window), title: "Move window", type: "button", children: [_jsx(Move, { className: "h-3.5 w-3.5" }), "Move"] })] }, window.id))) })) : (_jsx("div", { className: "px-2 py-3 text-center text-muted-foreground text-xs", children: "No windows" })), _jsxs("div", { className: "px-1 pt-2 pb-1", children: [_jsx(ActionButton, { className: "w-full", disabled: !canAdd, icon: _jsx(Plus, { className: "h-3.5 w-3.5" }), label: "Add Window", onClick: onAdd }), !canAdd && (_jsx("p", { className: "px-1 pt-2 text-center text-[10px] text-muted-foreground", children: "Increase the dormer width to add another window." }))] })] }));
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/dormer/panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/dormer/panel.tsx"],"names":[],"mappings":"AAuDA,MAAM,CAAC,OAAO,UAAU,WAAW,uCAoWlC"}
|