@pascal-app/nodes 1.0.1 → 1.0.4
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/dist/block/definition.d.ts.map +1 -1
- package/dist/block/definition.js +22 -4
- package/dist/block/face-host.d.ts.map +1 -1
- package/dist/block/face-host.js +19 -2
- package/dist/block/floorplan.d.ts +11 -1
- package/dist/block/floorplan.d.ts.map +1 -1
- package/dist/block/floorplan.js +81 -13
- package/dist/block/geometry.d.ts +2 -2
- package/dist/block/geometry.d.ts.map +1 -1
- package/dist/block/geometry.js +39 -24
- package/dist/block/hosted-edit.d.ts +13 -0
- package/dist/block/hosted-edit.d.ts.map +1 -0
- package/dist/block/hosted-edit.js +230 -0
- package/dist/block/last-operation.d.ts +1 -1
- package/dist/block/last-operation.d.ts.map +1 -1
- package/dist/block/last-operation.js +6 -4
- package/dist/block/material-slots.d.ts +1 -3
- package/dist/block/material-slots.d.ts.map +1 -1
- package/dist/block/material-slots.js +1 -11
- package/dist/block/modal-session.d.ts +2 -1
- package/dist/block/modal-session.d.ts.map +1 -1
- package/dist/block/modal-session.js +2 -2
- package/dist/block/paint.d.ts.map +1 -1
- package/dist/block/paint.js +4 -10
- package/dist/block/panel.d.ts.map +1 -1
- package/dist/block/panel.js +8 -3
- package/dist/block/selection.d.ts.map +1 -1
- package/dist/block/selection.js +83 -25
- package/dist/block/surface.d.ts +4 -0
- package/dist/block/surface.d.ts.map +1 -0
- package/dist/block/surface.js +54 -0
- package/dist/block/use-block-face-operation.d.ts +2 -2
- package/dist/block/use-block-face-operation.d.ts.map +1 -1
- package/dist/block/use-block-face-operation.js +25 -11
- package/dist/box-vent/definition.d.ts.map +1 -1
- package/dist/box-vent/definition.js +3 -5
- package/dist/box-vent/panel.d.ts.map +1 -1
- package/dist/box-vent/panel.js +5 -28
- package/dist/building/renderer.d.ts.map +1 -1
- package/dist/building/renderer.js +1 -1
- package/dist/cabinet/countertop-layout.d.ts +13 -2
- package/dist/cabinet/countertop-layout.d.ts.map +1 -1
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +4 -3
- package/dist/cabinet/floorplan.d.ts.map +1 -1
- package/dist/cabinet/floorplan.js +125 -28
- package/dist/cabinet/geometry/shared.d.ts +1 -2
- package/dist/cabinet/geometry/shared.d.ts.map +1 -1
- package/dist/cabinet/geometry/shared.js +1 -2
- package/dist/cabinet/hosted-resize.d.ts +3 -6
- package/dist/cabinet/hosted-resize.d.ts.map +1 -1
- package/dist/cabinet/hosted-resize.js +9 -153
- package/dist/cabinet/placement-snap.d.ts.map +1 -1
- package/dist/cabinet/placement-snap.js +4 -2
- package/dist/cabinet/run-layout.d.ts.map +1 -1
- package/dist/cabinet/run-layout.js +8 -5
- package/dist/cabinet/run-ops.d.ts +13 -2
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/surfaces.d.ts +1 -0
- package/dist/cabinet/surfaces.d.ts.map +1 -1
- package/dist/cabinet/surfaces.js +13 -1
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +30 -28
- package/dist/cabinet/wall-snap.d.ts.map +1 -1
- package/dist/cabinet/wall-snap.js +8 -8
- package/dist/ceiling/boundary-editor.d.ts.map +1 -1
- package/dist/ceiling/boundary-editor.js +5 -3
- package/dist/ceiling/definition.d.ts +4 -4
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.js +20 -15
- package/dist/ceiling/floorplan-affordances.d.ts +84 -4
- package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
- package/dist/ceiling/floorplan-affordances.js +0 -1
- package/dist/ceiling/floorplan-move.d.ts.map +1 -1
- package/dist/ceiling/floorplan-move.js +0 -1
- package/dist/ceiling/floorplan.d.ts +1 -1
- package/dist/ceiling/floorplan.d.ts.map +1 -1
- package/dist/ceiling/floorplan.js +2 -1
- package/dist/ceiling/height-bounds.d.ts +19 -0
- package/dist/ceiling/height-bounds.d.ts.map +1 -0
- package/dist/ceiling/height-bounds.js +24 -0
- package/dist/ceiling/hole-editor.d.ts.map +1 -1
- package/dist/ceiling/hole-editor.js +3 -4
- package/dist/ceiling/materials.d.ts +1 -1
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +10 -3
- package/dist/ceiling/paint.d.ts +2 -8
- package/dist/ceiling/paint.d.ts.map +1 -1
- package/dist/ceiling/paint.js +121 -24
- package/dist/ceiling/panel.d.ts.map +1 -1
- package/dist/ceiling/panel.js +40 -23
- package/dist/ceiling/renderer.d.ts.map +1 -1
- package/dist/ceiling/renderer.js +43 -6
- package/dist/chimney/definition.d.ts.map +1 -1
- package/dist/chimney/definition.js +1 -0
- package/dist/chimney/move-tool.d.ts.map +1 -1
- package/dist/chimney/move-tool.js +8 -2
- package/dist/chimney/paint.d.ts.map +1 -1
- package/dist/chimney/paint.js +3 -10
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.js +34 -5
- package/dist/column/floorplan-affordances.d.ts.map +1 -1
- package/dist/column/floorplan-affordances.js +11 -1
- package/dist/column/floorplan.d.ts +1 -1
- package/dist/column/floorplan.d.ts.map +1 -1
- package/dist/column/floorplan.js +69 -12
- package/dist/column/hosted-resize.d.ts +215 -0
- package/dist/column/hosted-resize.d.ts.map +1 -0
- package/dist/column/hosted-resize.js +9 -0
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +153 -149
- package/dist/column/renderer.d.ts.map +1 -1
- package/dist/column/renderer.js +29 -105
- package/dist/column/shape.d.ts +22 -0
- package/dist/column/shape.d.ts.map +1 -0
- package/dist/column/shape.js +120 -0
- package/dist/column/surface.d.ts +4 -0
- package/dist/column/surface.d.ts.map +1 -0
- package/dist/column/surface.js +73 -0
- package/dist/construction-dimension/floorplan.js +7 -3
- package/dist/cupola/definition.d.ts.map +1 -1
- package/dist/cupola/definition.js +3 -8
- package/dist/cupola/panel.d.ts.map +1 -1
- package/dist/cupola/panel.js +5 -23
- package/dist/door/definition.d.ts.map +1 -1
- package/dist/door/definition.js +52 -4
- package/dist/door/door-math.d.ts +6 -11
- package/dist/door/door-math.d.ts.map +1 -1
- package/dist/door/door-math.js +13 -17
- package/dist/door/floorplan-affordances.d.ts.map +1 -1
- package/dist/door/floorplan-affordances.js +8 -12
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +3 -1
- package/dist/door/floorplan.d.ts.map +1 -1
- package/dist/door/floorplan.js +55 -21
- package/dist/door/mechanism.d.ts +4 -0
- package/dist/door/mechanism.d.ts.map +1 -0
- package/dist/door/mechanism.js +24 -0
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +75 -52
- package/dist/door/paint.d.ts.map +1 -1
- package/dist/door/paint.js +3 -0
- package/dist/door/panel.d.ts.map +1 -1
- package/dist/door/panel.js +54 -308
- package/dist/door/placement.d.ts +45 -0
- package/dist/door/placement.d.ts.map +1 -0
- package/dist/door/placement.js +51 -0
- package/dist/door/preview.d.ts.map +1 -1
- package/dist/door/preview.js +2 -0
- package/dist/door/renderer.d.ts.map +1 -1
- package/dist/door/renderer.js +3 -2
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +112 -23
- package/dist/dormer/csg-geometry.d.ts.map +1 -1
- package/dist/dormer/csg-geometry.js +2 -0
- package/dist/dormer/definition.d.ts.map +1 -1
- package/dist/dormer/definition.js +1 -0
- package/dist/dormer/paint.d.ts.map +1 -1
- package/dist/dormer/paint.js +2 -5
- package/dist/dormer/panel.d.ts.map +1 -1
- package/dist/dormer/panel.js +4 -14
- package/dist/downspout/definition.d.ts.map +1 -1
- package/dist/downspout/definition.js +3 -2
- package/dist/duct-fitting/definition.d.ts.map +1 -1
- package/dist/duct-fitting/definition.js +2 -1
- package/dist/duct-fitting/geometry.d.ts.map +1 -1
- package/dist/duct-fitting/geometry.js +1 -1
- package/dist/duct-fitting/move-tool.d.ts.map +1 -1
- package/dist/duct-fitting/move-tool.js +8 -2
- package/dist/duct-segment/definition.d.ts.map +1 -1
- package/dist/duct-segment/definition.js +2 -2
- package/dist/duct-segment/geometry.d.ts.map +1 -1
- package/dist/duct-segment/geometry.js +1 -1
- package/dist/duct-segment/move-tool.d.ts.map +1 -1
- package/dist/duct-segment/move-tool.js +8 -2
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +11 -0
- package/dist/duct-terminal/tool.d.ts.map +1 -1
- package/dist/duct-terminal/tool.js +77 -8
- package/dist/elevator/definition.d.ts.map +1 -1
- package/dist/elevator/definition.js +3 -2
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +5 -27
- package/dist/elevator/parametrics.d.ts.map +1 -1
- package/dist/elevator/parametrics.js +98 -1
- package/dist/elevator/renderer.d.ts.map +1 -1
- package/dist/elevator/renderer.js +3 -4
- package/dist/eyebrow-vent/definition.d.ts.map +1 -1
- package/dist/eyebrow-vent/definition.js +3 -5
- package/dist/eyebrow-vent/paint.d.ts.map +1 -1
- package/dist/eyebrow-vent/paint.js +3 -6
- package/dist/eyebrow-vent/panel.d.ts.map +1 -1
- package/dist/eyebrow-vent/panel.js +5 -23
- package/dist/fence/actions/move-endpoint.d.ts +1 -1
- package/dist/fence/actions/move-endpoint.d.ts.map +1 -1
- package/dist/fence/actions/move-endpoint.js +2 -1
- package/dist/fence/definition.d.ts +2 -1
- package/dist/fence/definition.d.ts.map +1 -1
- package/dist/fence/definition.js +84 -28
- package/dist/fence/drafting.d.ts +36 -0
- package/dist/fence/drafting.d.ts.map +1 -0
- package/dist/fence/drafting.js +210 -0
- package/dist/fence/feature-tool.d.ts +4 -0
- package/dist/fence/feature-tool.d.ts.map +1 -0
- package/dist/fence/feature-tool.js +140 -0
- package/dist/fence/features.d.ts +2 -0
- package/dist/fence/features.d.ts.map +1 -0
- package/dist/fence/features.js +12 -0
- package/dist/fence/floorplan-affordances.d.ts.map +1 -1
- package/dist/fence/floorplan-affordances.js +2 -1
- package/dist/fence/floorplan.d.ts +2 -3
- package/dist/fence/floorplan.d.ts.map +1 -1
- package/dist/fence/floorplan.js +131 -71
- package/dist/fence/geometry-parts.d.ts +50 -0
- package/dist/fence/geometry-parts.d.ts.map +1 -0
- package/dist/fence/geometry-parts.js +1144 -0
- package/dist/fence/geometry.d.ts +2 -3
- package/dist/fence/geometry.d.ts.map +1 -1
- package/dist/fence/geometry.js +84 -7
- package/dist/fence/index.d.ts +1 -0
- package/dist/fence/index.d.ts.map +1 -1
- package/dist/fence/index.js +1 -0
- package/dist/fence/inspector-editors.d.ts +15 -0
- package/dist/fence/inspector-editors.d.ts.map +1 -1
- package/dist/fence/inspector-editors.js +128 -3
- package/dist/fence/lift.d.ts.map +1 -1
- package/dist/fence/lift.js +5 -2
- package/dist/fence/move-tool.js +2 -1
- package/dist/fence/panel-model.d.ts +4 -0
- package/dist/fence/panel-model.d.ts.map +1 -0
- package/dist/fence/panel-model.js +12 -0
- package/dist/fence/parametrics.d.ts +0 -12
- package/dist/fence/parametrics.d.ts.map +1 -1
- package/dist/fence/parametrics.js +185 -18
- package/dist/fence/system.d.ts.map +1 -1
- package/dist/fence/system.js +141 -31
- package/dist/fence/tool.d.ts.map +1 -1
- package/dist/fence/tool.js +257 -48
- package/dist/fence-feature/actions.d.ts +7 -0
- package/dist/fence-feature/actions.d.ts.map +1 -0
- package/dist/fence-feature/actions.js +26 -0
- package/dist/fence-feature/definition.d.ts +4 -0
- package/dist/fence-feature/definition.d.ts.map +1 -0
- package/dist/fence-feature/definition.js +112 -0
- package/dist/fence-feature/floorplan-affordances.d.ts +3 -0
- package/dist/fence-feature/floorplan-affordances.d.ts.map +1 -0
- package/dist/fence-feature/floorplan-affordances.js +37 -0
- package/dist/fence-feature/floorplan.d.ts +4 -0
- package/dist/fence-feature/floorplan.d.ts.map +1 -0
- package/dist/fence-feature/floorplan.js +120 -0
- package/dist/fence-feature/geometry.d.ts +5 -0
- package/dist/fence-feature/geometry.d.ts.map +1 -0
- package/dist/fence-feature/geometry.js +43 -0
- package/dist/fence-feature/handles.d.ts +5 -0
- package/dist/fence-feature/handles.d.ts.map +1 -0
- package/dist/fence-feature/handles.js +84 -0
- package/dist/fence-feature/inspector.d.ts +6 -0
- package/dist/fence-feature/inspector.d.ts.map +1 -0
- package/dist/fence-feature/inspector.js +214 -0
- package/dist/fence-feature/interaction.d.ts +3 -0
- package/dist/fence-feature/interaction.d.ts.map +1 -0
- package/dist/fence-feature/interaction.js +41 -0
- package/dist/fence-feature/move-session.d.ts +9 -0
- package/dist/fence-feature/move-session.d.ts.map +1 -0
- package/dist/fence-feature/move-session.js +48 -0
- package/dist/fence-feature/move-tool.d.ts +5 -0
- package/dist/fence-feature/move-tool.d.ts.map +1 -0
- package/dist/fence-feature/move-tool.js +58 -0
- package/dist/fence-feature/pick-target.d.ts +7 -0
- package/dist/fence-feature/pick-target.d.ts.map +1 -0
- package/dist/fence-feature/pick-target.js +52 -0
- package/dist/floor-opening/definition.d.ts +3 -0
- package/dist/floor-opening/definition.d.ts.map +1 -0
- package/dist/floor-opening/definition.js +41 -0
- package/dist/floor-opening/floorplan.d.ts +156 -0
- package/dist/floor-opening/floorplan.d.ts.map +1 -0
- package/dist/floor-opening/floorplan.js +63 -0
- package/dist/guide/definition.d.ts.map +1 -1
- package/dist/guide/definition.js +1 -0
- package/dist/gutter/definition.d.ts.map +1 -1
- package/dist/gutter/definition.js +3 -2
- package/dist/hvac-equipment/tool.d.ts.map +1 -1
- package/dist/hvac-equipment/tool.js +8 -2
- package/dist/imported-mesh/definition.d.ts.map +1 -1
- package/dist/imported-mesh/definition.js +2 -0
- package/dist/imported-mesh/geometry.d.ts +1 -1
- package/dist/imported-mesh/geometry.d.ts.map +1 -1
- package/dist/imported-mesh/geometry.js +40 -12
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/item/authored-face-host.d.ts +10 -0
- package/dist/item/authored-face-host.d.ts.map +1 -0
- package/dist/item/authored-face-host.js +87 -0
- package/dist/item/authored-params.d.ts +15 -0
- package/dist/item/authored-params.d.ts.map +1 -0
- package/dist/item/authored-params.js +72 -0
- package/dist/item/definition.d.ts +2 -2
- package/dist/item/definition.d.ts.map +1 -1
- package/dist/item/definition.js +35 -4
- package/dist/item/floorplan-move.d.ts.map +1 -1
- package/dist/item/floorplan-move.js +209 -130
- package/dist/item/floorplan.d.ts +22 -0
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +95 -6
- package/dist/item/index.d.ts +1 -0
- package/dist/item/index.d.ts.map +1 -1
- package/dist/item/index.js +1 -0
- package/dist/item/model-loader.d.ts +2 -0
- package/dist/item/model-loader.d.ts.map +1 -1
- package/dist/item/model-loader.js +55 -23
- package/dist/item/move-tool.d.ts +1 -1
- package/dist/item/move-tool.d.ts.map +1 -1
- package/dist/item/move-tool.js +19 -11
- package/dist/item/paint.d.ts.map +1 -1
- package/dist/item/paint.js +5 -24
- package/dist/item/panel.d.ts +1 -3
- package/dist/item/panel.d.ts.map +1 -1
- package/dist/item/panel.js +20 -24
- package/dist/item/placement-notice.d.ts +14 -0
- package/dist/item/placement-notice.d.ts.map +1 -0
- package/dist/item/placement-notice.js +38 -0
- package/dist/item/plan-symbols.d.ts +67 -0
- package/dist/item/plan-symbols.d.ts.map +1 -0
- package/dist/item/plan-symbols.js +407 -0
- package/dist/item/renderer.d.ts +10 -0
- package/dist/item/renderer.d.ts.map +1 -1
- package/dist/item/renderer.js +72 -40
- package/dist/item/script-param-defaults.d.ts +12 -0
- package/dist/item/script-param-defaults.d.ts.map +1 -0
- package/dist/item/script-param-defaults.js +34 -0
- package/dist/lean-to-extension/definition.d.ts.map +1 -1
- package/dist/lean-to-extension/definition.js +1 -2
- package/dist/lean-to-extension/geometry.d.ts.map +1 -1
- package/dist/lean-to-extension/geometry.js +1 -1
- package/dist/lean-to-extension/layout.d.ts.map +1 -1
- package/dist/lean-to-extension/layout.js +2 -3
- package/dist/lean-to-extension/placement-validation.d.ts.map +1 -1
- package/dist/lean-to-extension/placement-validation.js +5 -5
- package/dist/lean-to-extension/tool.d.ts.map +1 -1
- package/dist/lean-to-extension/tool.js +5 -5
- package/dist/level/renderer.js +1 -1
- package/dist/lineset/move-tool.d.ts.map +1 -1
- package/dist/lineset/move-tool.js +8 -2
- package/dist/lineset/tool.d.ts.map +1 -1
- package/dist/lineset/tool.js +1 -0
- package/dist/liquid-line/move-tool.d.ts.map +1 -1
- package/dist/liquid-line/move-tool.js +8 -2
- package/dist/liquid-line/tool.d.ts.map +1 -1
- package/dist/liquid-line/tool.js +5 -1
- package/dist/measurement/definition.d.ts.map +1 -1
- package/dist/measurement/definition.js +2 -1
- package/dist/pipe-fitting/move-tool.d.ts.map +1 -1
- package/dist/pipe-fitting/move-tool.js +8 -2
- package/dist/pipe-segment/move-tool.d.ts.map +1 -1
- package/dist/pipe-segment/move-tool.js +8 -2
- package/dist/pipe-segment/tool.d.ts.map +1 -1
- package/dist/pipe-segment/tool.js +14 -3
- package/dist/pipe-trap/tool.d.ts.map +1 -1
- package/dist/pipe-trap/tool.js +7 -8
- package/dist/procedural-item/animation.d.ts +8 -0
- package/dist/procedural-item/animation.d.ts.map +1 -0
- package/dist/procedural-item/animation.js +116 -0
- package/dist/procedural-item/definition.d.ts.map +1 -1
- package/dist/procedural-item/definition.js +77 -8
- package/dist/procedural-item/geometry.d.ts +5 -1
- package/dist/procedural-item/geometry.d.ts.map +1 -1
- package/dist/procedural-item/geometry.js +239 -15
- package/dist/procedural-item/renderer.d.ts.map +1 -1
- package/dist/procedural-item/renderer.js +272 -23
- package/dist/ridge-vent/definition.d.ts.map +1 -1
- package/dist/ridge-vent/definition.js +1 -0
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +5 -23
- package/dist/ridge-vent/renderer.d.ts.map +1 -1
- package/dist/ridge-vent/renderer.js +9 -8
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.js +8 -2
- package/dist/roof/floorplan.d.ts +8 -0
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +194 -18
- package/dist/roof/panel-model.d.ts +4 -0
- package/dist/roof/panel-model.d.ts.map +1 -0
- package/dist/roof/panel-model.js +155 -0
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +5 -13
- package/dist/roof/parametrics.d.ts.map +1 -1
- package/dist/roof/parametrics.js +16 -1
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/renderer.js +5 -2
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.js +1 -0
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +5 -24
- package/dist/roof-segment/parametrics.d.ts.map +1 -1
- package/dist/roof-segment/parametrics.js +176 -1
- package/dist/roof-segment/renderer.d.ts.map +1 -1
- package/dist/roof-segment/renderer.js +17 -8
- package/dist/scan/definition.d.ts.map +1 -1
- package/dist/scan/definition.js +1 -0
- package/dist/separator/definition.d.ts +3 -0
- package/dist/separator/definition.d.ts.map +1 -0
- package/dist/separator/definition.js +39 -0
- package/dist/separator/renderer.d.ts +5 -0
- package/dist/separator/renderer.d.ts.map +1 -0
- package/dist/separator/renderer.js +36 -0
- package/dist/shared/commit-opening-move.d.ts +4 -0
- package/dist/shared/commit-opening-move.d.ts.map +1 -0
- package/dist/shared/commit-opening-move.js +9 -0
- package/dist/shared/curtain-opening-limits.d.ts +14 -0
- package/dist/shared/curtain-opening-limits.d.ts.map +1 -0
- package/dist/shared/curtain-opening-limits.js +53 -0
- package/dist/shared/draft-axis-guides.d.ts +0 -6
- package/dist/shared/draft-axis-guides.d.ts.map +1 -1
- package/dist/shared/draft-axis-guides.js +1 -8
- package/dist/shared/duct-body-paint.d.ts +0 -4
- package/dist/shared/duct-body-paint.d.ts.map +1 -1
- package/dist/shared/duct-body-paint.js +1 -5
- package/dist/shared/hosted-resize.d.ts +12 -0
- package/dist/shared/hosted-resize.d.ts.map +1 -0
- package/dist/shared/hosted-resize.js +166 -0
- package/dist/shared/item-interaction-actions.d.ts +6 -0
- package/dist/shared/item-interaction-actions.d.ts.map +1 -0
- package/dist/shared/item-interaction-actions.js +27 -0
- package/dist/shared/item-interactions.d.ts +9 -0
- package/dist/shared/item-interactions.d.ts.map +1 -0
- package/dist/shared/item-interactions.js +74 -0
- package/dist/shared/item-light-placement.d.ts +2 -0
- package/dist/shared/item-light-placement.d.ts.map +1 -0
- package/dist/shared/item-light-placement.js +3 -0
- package/dist/shared/move-roof-tool.js +2 -1
- package/dist/shared/node-batch/batchable.d.ts +12 -0
- package/dist/shared/node-batch/batchable.d.ts.map +1 -0
- package/dist/shared/node-batch/batchable.js +41 -0
- package/dist/shared/node-batch/candidates.d.ts +7 -5
- package/dist/shared/node-batch/candidates.d.ts.map +1 -1
- package/dist/shared/node-batch/candidates.js +43 -59
- package/dist/shared/node-batch/release.d.ts +8 -0
- package/dist/shared/node-batch/release.d.ts.map +1 -0
- package/dist/shared/node-batch/release.js +16 -0
- package/dist/shared/node-batch/system.d.ts.map +1 -1
- package/dist/shared/node-batch/system.js +17 -12
- package/dist/shared/node-batch/types.d.ts +4 -1
- package/dist/shared/node-batch/types.d.ts.map +1 -1
- package/dist/shared/opening-documentation.d.ts +13 -1
- package/dist/shared/opening-documentation.d.ts.map +1 -1
- package/dist/shared/opening-documentation.js +245 -59
- package/dist/shared/opening-grid-follow.d.ts +8 -0
- package/dist/shared/opening-grid-follow.d.ts.map +1 -0
- package/dist/shared/opening-grid-follow.js +12 -0
- package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
- package/dist/shared/opening-guides-runtime.js +17 -14
- package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
- package/dist/shared/opening-placement-dimensions.js +3 -3
- package/dist/shared/opening-plane-offset.d.ts +23 -0
- package/dist/shared/opening-plane-offset.d.ts.map +1 -0
- package/dist/shared/opening-plane-offset.js +24 -0
- package/dist/shared/opening-property-preview-host.d.ts +3 -0
- package/dist/shared/opening-property-preview-host.d.ts.map +1 -0
- package/dist/shared/opening-property-preview-host.js +21 -0
- package/dist/shared/opening-property-preview.d.ts +19 -0
- package/dist/shared/opening-property-preview.d.ts.map +1 -0
- package/dist/shared/opening-property-preview.js +99 -0
- package/dist/shared/polygon-centroid-move.d.ts.map +1 -1
- package/dist/shared/polygon-centroid-move.js +4 -1
- package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
- package/dist/shared/polygon-vertex-affordance.js +19 -15
- package/dist/shared/resting-surface-plan.d.ts +2 -1
- package/dist/shared/resting-surface-plan.d.ts.map +1 -1
- package/dist/shared/resting-surface-plan.js +29 -4
- package/dist/shared/run-hangers.d.ts.map +1 -1
- package/dist/shared/run-hangers.js +5 -4
- package/dist/shared/scripted-opening-handles.d.ts +18 -0
- package/dist/shared/scripted-opening-handles.d.ts.map +1 -0
- package/dist/shared/scripted-opening-handles.js +53 -0
- package/dist/shared/scripted-opening.d.ts +25 -0
- package/dist/shared/scripted-opening.d.ts.map +1 -0
- package/dist/shared/scripted-opening.js +72 -0
- package/dist/shared/slot-paint.d.ts +14 -2
- package/dist/shared/slot-paint.d.ts.map +1 -1
- package/dist/shared/slot-paint.js +29 -29
- package/dist/shared/surface-counterparts.d.ts +12 -0
- package/dist/shared/surface-counterparts.d.ts.map +1 -0
- package/dist/shared/surface-counterparts.js +27 -0
- package/dist/shared/surface-paint.d.ts.map +1 -1
- package/dist/shared/surface-paint.js +2 -5
- package/dist/shared/swap-preview-material.d.ts +11 -0
- package/dist/shared/swap-preview-material.d.ts.map +1 -0
- package/dist/shared/swap-preview-material.js +16 -0
- package/dist/shared/system-checks.d.ts.map +1 -1
- package/dist/shared/system-checks.js +5 -3
- package/dist/shared/wall-attach-target.d.ts +4 -10
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +6 -63
- package/dist/shared/wall-event-from-grid.d.ts +5 -0
- package/dist/shared/wall-event-from-grid.d.ts.map +1 -0
- package/dist/shared/wall-event-from-grid.js +36 -0
- package/dist/shared/wall-opening-ceiling.d.ts +5 -15
- package/dist/shared/wall-opening-ceiling.d.ts.map +1 -1
- package/dist/shared/wall-opening-ceiling.js +10 -18
- package/dist/shelf/definition.d.ts.map +1 -1
- package/dist/shelf/definition.js +4 -2
- package/dist/shelf/floorplan.d.ts.map +1 -1
- package/dist/shelf/floorplan.js +9 -2
- package/dist/shelf/geometry.d.ts.map +1 -1
- package/dist/shelf/geometry.js +1 -2
- package/dist/shelf/paint.d.ts.map +1 -1
- package/dist/shelf/paint.js +4 -10
- package/dist/site/line-ribbon.d.ts +31 -0
- package/dist/site/line-ribbon.d.ts.map +1 -0
- package/dist/site/line-ribbon.js +117 -0
- package/dist/site/lot-mask.d.ts +18 -0
- package/dist/site/lot-mask.d.ts.map +1 -0
- package/dist/site/lot-mask.js +35 -0
- package/dist/site/panel.d.ts +10 -0
- package/dist/site/panel.d.ts.map +1 -0
- package/dist/site/panel.js +155 -0
- package/dist/site/parametrics.d.ts +7 -0
- package/dist/site/parametrics.d.ts.map +1 -1
- package/dist/site/parametrics.js +8 -0
- package/dist/site/recessed-slab-ground-holes.d.ts.map +1 -1
- package/dist/site/recessed-slab-ground-holes.js +5 -2
- package/dist/site/renderer.d.ts.map +1 -1
- package/dist/site/renderer.js +158 -20
- package/dist/site/setbacks.d.ts +33 -0
- package/dist/site/setbacks.d.ts.map +1 -0
- package/dist/site/setbacks.js +204 -0
- package/dist/site/terrain-geometry.d.ts +28 -1
- package/dist/site/terrain-geometry.d.ts.map +1 -1
- package/dist/site/terrain-geometry.js +78 -4
- package/dist/site/terrain-holes.d.ts +15 -0
- package/dist/site/terrain-holes.d.ts.map +1 -0
- package/dist/site/terrain-holes.js +74 -0
- package/dist/site/terrain-mesh.d.ts +9 -2
- package/dist/site/terrain-mesh.d.ts.map +1 -1
- package/dist/site/terrain-mesh.js +36 -9
- package/dist/site/terrain-renderer.d.ts +9 -2
- package/dist/site/terrain-renderer.d.ts.map +1 -1
- package/dist/site/terrain-renderer.js +14 -4
- package/dist/skylight/definition.d.ts.map +1 -1
- package/dist/skylight/definition.js +1 -0
- package/dist/slab/boundary-editor.d.ts +1 -1
- package/dist/slab/boundary-editor.d.ts.map +1 -1
- package/dist/slab/boundary-editor.js +13 -13
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.js +23 -3
- package/dist/slab/dependency-tracker.d.ts.map +1 -1
- package/dist/slab/dependency-tracker.js +67 -7
- package/dist/slab/elevation-limit.d.ts.map +1 -1
- package/dist/slab/elevation-limit.js +2 -2
- package/dist/slab/floorplan-affordances.d.ts +176 -4
- package/dist/slab/floorplan-affordances.d.ts.map +1 -1
- package/dist/slab/floorplan-affordances.js +0 -1
- package/dist/slab/floorplan-move.d.ts.map +1 -1
- package/dist/slab/floorplan-move.js +3 -4
- package/dist/slab/floorplan.d.ts +7 -0
- package/dist/slab/floorplan.d.ts.map +1 -1
- package/dist/slab/floorplan.js +22 -5
- package/dist/slab/geometry.d.ts.map +1 -1
- package/dist/slab/geometry.js +186 -76
- package/dist/slab/move-tool.js +7 -6
- package/dist/slab/paint.d.ts +18 -5
- package/dist/slab/paint.d.ts.map +1 -1
- package/dist/slab/paint.js +458 -9
- package/dist/slab/panel.d.ts.map +1 -1
- package/dist/slab/panel.js +28 -9
- package/dist/slab/placement-ownership.d.ts +2 -1
- package/dist/slab/placement-ownership.d.ts.map +1 -1
- package/dist/slab/placement-ownership.js +2 -2
- package/dist/slab/surface-split.d.ts +24 -0
- package/dist/slab/surface-split.d.ts.map +1 -0
- package/dist/slab/surface-split.js +389 -0
- package/dist/slab/tool.d.ts.map +1 -1
- package/dist/slab/tool.js +3 -3
- package/dist/solar-panel/definition.d.ts.map +1 -1
- package/dist/solar-panel/definition.js +1 -0
- package/dist/spawn/definition.d.ts.map +1 -1
- package/dist/spawn/definition.js +1 -0
- package/dist/stair/baluster-geometry.d.ts +21 -0
- package/dist/stair/baluster-geometry.d.ts.map +1 -0
- package/dist/stair/baluster-geometry.js +74 -0
- package/dist/stair/baluster-guard.d.ts +50 -0
- package/dist/stair/baluster-guard.d.ts.map +1 -0
- package/dist/stair/baluster-guard.js +71 -0
- package/dist/stair/boards-guard.d.ts +37 -0
- package/dist/stair/boards-guard.d.ts.map +1 -0
- package/dist/stair/boards-guard.js +61 -0
- package/dist/stair/cable-guard.d.ts +39 -0
- package/dist/stair/cable-guard.d.ts.map +1 -0
- package/dist/stair/cable-guard.js +105 -0
- package/dist/stair/construction-controls.d.ts +15 -0
- package/dist/stair/construction-controls.d.ts.map +1 -0
- package/dist/stair/construction-controls.js +29 -0
- package/dist/stair/continuous-railings.d.ts +10 -0
- package/dist/stair/continuous-railings.d.ts.map +1 -0
- package/dist/stair/continuous-railings.js +159 -0
- package/dist/stair/definition.d.ts.map +1 -1
- package/dist/stair/definition.js +18 -37
- package/dist/stair/documentation.d.ts +1 -1
- package/dist/stair/documentation.d.ts.map +1 -1
- package/dist/stair/documentation.js +10 -17
- package/dist/stair/floorplan-affordances.d.ts.map +1 -1
- package/dist/stair/floorplan-affordances.js +9 -25
- package/dist/stair/floorplan.d.ts +1 -23
- package/dist/stair/floorplan.d.ts.map +1 -1
- package/dist/stair/floorplan.js +102 -86
- package/dist/stair/glass-guard.d.ts +72 -0
- package/dist/stair/glass-guard.d.ts.map +1 -0
- package/dist/stair/glass-guard.js +167 -0
- package/dist/stair/guard-path.d.ts +119 -0
- package/dist/stair/guard-path.d.ts.map +1 -0
- package/dist/stair/guard-path.js +208 -0
- package/dist/stair/materials.d.ts +11 -0
- package/dist/stair/materials.d.ts.map +1 -0
- package/dist/stair/materials.js +51 -0
- package/dist/stair/metal-guard.d.ts +38 -0
- package/dist/stair/metal-guard.d.ts.map +1 -0
- package/dist/stair/metal-guard.js +79 -0
- package/dist/stair/paint.d.ts +32 -0
- package/dist/stair/paint.d.ts.map +1 -1
- package/dist/stair/paint.js +75 -36
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +154 -17
- package/dist/stair/parametrics.d.ts +1 -1
- package/dist/stair/parametrics.d.ts.map +1 -1
- package/dist/stair/parametrics.js +181 -1
- package/dist/stair/plan-entry.d.ts +31 -0
- package/dist/stair/plan-entry.d.ts.map +1 -0
- package/dist/stair/plan-entry.js +325 -0
- package/dist/stair/post-and-rail-guard.d.ts +31 -0
- package/dist/stair/post-and-rail-guard.d.ts.map +1 -0
- package/dist/stair/post-and-rail-guard.js +63 -0
- package/dist/stair/railing-controls.d.ts +9 -0
- package/dist/stair/railing-controls.d.ts.map +1 -0
- package/dist/stair/railing-controls.js +49 -0
- package/dist/stair/renderer.d.ts.map +1 -1
- package/dist/stair/renderer.js +259 -259
- package/dist/stair/use-stair-render-data.d.ts +317 -0
- package/dist/stair/use-stair-render-data.d.ts.map +1 -0
- package/dist/stair/use-stair-render-data.js +73 -0
- package/dist/stair-segment/definition.d.ts.map +1 -1
- package/dist/stair-segment/definition.js +52 -10
- package/dist/stair-segment/panel.d.ts.map +1 -1
- package/dist/stair-segment/panel.js +36 -42
- package/dist/stair-segment/parametrics.d.ts +1 -1
- package/dist/stair-segment/parametrics.d.ts.map +1 -1
- package/dist/stair-segment/parametrics.js +94 -1
- package/dist/stair-segment/renderer.d.ts.map +1 -1
- package/dist/stair-segment/renderer.js +16 -28
- package/dist/turbine-vent/definition.d.ts.map +1 -1
- package/dist/turbine-vent/definition.js +3 -5
- package/dist/turbine-vent/paint.d.ts.map +1 -1
- package/dist/turbine-vent/paint.js +2 -5
- package/dist/turbine-vent/panel.d.ts.map +1 -1
- package/dist/turbine-vent/panel.js +5 -23
- package/dist/unit/unit-panel.d.ts.map +1 -1
- package/dist/unit/unit-panel.js +6 -1
- package/dist/wall/actions.d.ts +3 -0
- package/dist/wall/actions.d.ts.map +1 -0
- package/dist/wall/actions.js +61 -0
- package/dist/wall/construction-dimensions.js +8 -5
- package/dist/wall/contextual-dimensions.js +4 -4
- package/dist/wall/curtain-opening-frame.d.ts +14 -0
- package/dist/wall/curtain-opening-frame.d.ts.map +1 -0
- package/dist/wall/curtain-opening-frame.js +111 -0
- package/dist/wall/curtain-panel-highlight.d.ts +3 -0
- package/dist/wall/curtain-panel-highlight.d.ts.map +1 -0
- package/dist/wall/curtain-panel-highlight.js +113 -0
- package/dist/wall/curtain-wall-adapter.d.ts +3 -0
- package/dist/wall/curtain-wall-adapter.d.ts.map +1 -0
- package/dist/wall/curtain-wall-adapter.js +55 -0
- package/dist/wall/curtain-wall-floorplan.d.ts +3 -0
- package/dist/wall/curtain-wall-floorplan.d.ts.map +1 -0
- package/dist/wall/curtain-wall-floorplan.js +91 -0
- package/dist/wall/curtain-wall-geometry.d.ts +4 -0
- package/dist/wall/curtain-wall-geometry.d.ts.map +1 -0
- package/dist/wall/curtain-wall-geometry.js +226 -0
- package/dist/wall/curtain-wall-layout.d.ts +16 -0
- package/dist/wall/curtain-wall-layout.d.ts.map +1 -0
- package/dist/wall/curtain-wall-layout.js +176 -0
- package/dist/wall/curtain-wall-materials.d.ts +5 -0
- package/dist/wall/curtain-wall-materials.d.ts.map +1 -0
- package/dist/wall/curtain-wall-materials.js +55 -0
- package/dist/wall/curtain-wall-panel.d.ts +14 -0
- package/dist/wall/curtain-wall-panel.d.ts.map +1 -0
- package/dist/wall/curtain-wall-panel.js +167 -0
- package/dist/wall/curtain-wall-piece-geometry.d.ts +5 -0
- package/dist/wall/curtain-wall-piece-geometry.d.ts.map +1 -0
- package/dist/wall/curtain-wall-piece-geometry.js +220 -0
- package/dist/wall/curtain-wall-shadow.d.ts +4 -0
- package/dist/wall/curtain-wall-shadow.d.ts.map +1 -0
- package/dist/wall/curtain-wall-shadow.js +15 -0
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +4 -0
- package/dist/wall/definition.d.ts +0 -15
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +92 -7
- package/dist/wall/floorplan-move.d.ts +1 -1
- package/dist/wall/floorplan-move.d.ts.map +1 -1
- package/dist/wall/floorplan-move.js +20 -83
- package/dist/wall/floorplan-tool.d.ts +4 -0
- package/dist/wall/floorplan-tool.d.ts.map +1 -0
- package/dist/wall/floorplan-tool.js +106 -0
- package/dist/wall/floorplan.d.ts +3 -1
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +189 -22
- package/dist/wall/length-patch.d.ts +3 -0
- package/dist/wall/length-patch.d.ts.map +1 -0
- package/dist/wall/length-patch.js +14 -0
- package/dist/wall/measurement.d.ts.map +1 -1
- package/dist/wall/measurement.js +5 -5
- package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
- package/dist/wall/move-endpoint-tool.js +20 -7
- package/dist/wall/move-shared.d.ts.map +1 -1
- package/dist/wall/move-shared.js +11 -7
- package/dist/wall/move-tool.d.ts.map +1 -1
- package/dist/wall/move-tool.js +140 -148
- package/dist/wall/paint.d.ts +26 -15
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +339 -115
- package/dist/wall/panel-model.d.ts +22 -0
- package/dist/wall/panel-model.d.ts.map +1 -0
- package/dist/wall/panel-model.js +175 -0
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +233 -61
- package/dist/wall/parametrics.d.ts.map +1 -1
- package/dist/wall/parametrics.js +3 -0
- package/dist/wall/property-preview.d.ts +7 -0
- package/dist/wall/property-preview.d.ts.map +1 -0
- package/dist/wall/property-preview.js +31 -0
- package/dist/wall/rectangle-command.d.ts +248 -0
- package/dist/wall/rectangle-command.d.ts.map +1 -0
- package/dist/wall/rectangle-command.js +22 -0
- package/dist/wall/rectangle-tool.d.ts +2 -0
- package/dist/wall/rectangle-tool.d.ts.map +1 -0
- package/dist/wall/rectangle-tool.js +165 -0
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +9 -4
- package/dist/wall/split-floorplan-layer.d.ts +4 -0
- package/dist/wall/split-floorplan-layer.d.ts.map +1 -0
- package/dist/wall/split-floorplan-layer.js +71 -0
- package/dist/wall/split-pointer.d.ts +3 -0
- package/dist/wall/split-pointer.d.ts.map +1 -0
- package/dist/wall/split-pointer.js +95 -0
- package/dist/wall/split-preview.d.ts +55 -0
- package/dist/wall/split-preview.d.ts.map +1 -0
- package/dist/wall/split-preview.js +106 -0
- package/dist/wall/split-session.d.ts +16 -0
- package/dist/wall/split-session.d.ts.map +1 -0
- package/dist/wall/split-session.js +144 -0
- package/dist/wall/split-store.d.ts +16 -0
- package/dist/wall/split-store.d.ts.map +1 -0
- package/dist/wall/split-store.js +6 -0
- package/dist/wall/split-tool.d.ts +10 -0
- package/dist/wall/split-tool.d.ts.map +1 -0
- package/dist/wall/split-tool.js +95 -0
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +39 -5
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +114 -50
- package/dist/wall/treatment-level-data.d.ts +3 -2
- package/dist/wall/treatment-level-data.d.ts.map +1 -1
- package/dist/wall/treatment-level-data.js +17 -13
- package/dist/wall/treatments.d.ts +10 -10
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +67 -54
- package/dist/wall/wall-batch-system.d.ts +7 -0
- package/dist/wall/wall-batch-system.d.ts.map +1 -1
- package/dist/wall/wall-batch-system.js +38 -3
- package/dist/wall/wall-batch.d.ts +6 -0
- package/dist/wall/wall-batch.d.ts.map +1 -1
- package/dist/wall/wall-batch.js +7 -1
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.js +60 -5
- package/dist/window/floorplan-affordances.d.ts.map +1 -1
- package/dist/window/floorplan-affordances.js +8 -10
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +3 -1
- package/dist/window/floorplan.d.ts.map +1 -1
- package/dist/window/floorplan.js +145 -60
- package/dist/window/mechanism.d.ts +4 -0
- package/dist/window/mechanism.d.ts.map +1 -0
- package/dist/window/mechanism.js +20 -0
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +83 -54
- package/dist/window/paint.d.ts.map +1 -1
- package/dist/window/paint.js +3 -0
- package/dist/window/panel.d.ts.map +1 -1
- package/dist/window/panel.js +50 -144
- package/dist/window/placement.d.ts +23 -0
- package/dist/window/placement.d.ts.map +1 -0
- package/dist/window/placement.js +66 -0
- package/dist/window/preview.d.ts.map +1 -1
- package/dist/window/preview.js +2 -0
- package/dist/window/renderer.d.ts.map +1 -1
- package/dist/window/renderer.js +3 -2
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +130 -26
- package/dist/window/window-math.d.ts +6 -14
- package/dist/window/window-math.d.ts.map +1 -1
- package/dist/window/window-math.js +13 -22
- package/dist/zone/contextual-dimensions.d.ts.map +1 -1
- package/dist/zone/contextual-dimensions.js +6 -28
- package/dist/zone/definition.d.ts.map +1 -1
- package/dist/zone/definition.js +4 -3
- package/dist/zone/floorplan-affordances.d.ts +200 -0
- package/dist/zone/floorplan-affordances.d.ts.map +1 -1
- package/dist/zone/floorplan.d.ts +1 -1
- package/dist/zone/floorplan.d.ts.map +1 -1
- package/dist/zone/floorplan.js +93 -53
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +6 -33
- package/dist/zone/quick-measurement.d.ts +2 -2
- package/dist/zone/quick-measurement.d.ts.map +1 -1
- package/dist/zone/quick-measurement.js +6 -5
- package/dist/zone/renderer.d.ts +1 -1
- package/dist/zone/renderer.d.ts.map +1 -1
- package/dist/zone/renderer.js +58 -146
- package/dist/zone/room-clear-dimensions.js +3 -3
- package/dist/zone/room-documentation.d.ts.map +1 -1
- package/dist/zone/room-documentation.js +2 -6
- package/package.json +12 -12
- package/dist/block/slots.d.ts +0 -4
- package/dist/block/slots.d.ts.map +0 -1
- package/dist/block/slots.js +0 -17
- package/dist/cabinet/slots.d.ts +0 -4
- package/dist/cabinet/slots.d.ts.map +0 -1
- package/dist/cabinet/slots.js +0 -24
- package/dist/ceiling/slots.d.ts +0 -6
- package/dist/ceiling/slots.d.ts.map +0 -1
- package/dist/ceiling/slots.js +0 -7
- package/dist/column/slots.d.ts +0 -9
- package/dist/column/slots.d.ts.map +0 -1
- package/dist/column/slots.js +0 -19
- package/dist/door/slots.d.ts +0 -9
- package/dist/door/slots.d.ts.map +0 -1
- package/dist/door/slots.js +0 -20
- package/dist/elevator/slots.d.ts +0 -8
- package/dist/elevator/slots.d.ts.map +0 -1
- package/dist/elevator/slots.js +0 -17
- package/dist/fence/slots.d.ts +0 -10
- package/dist/fence/slots.d.ts.map +0 -1
- package/dist/fence/slots.js +0 -23
- package/dist/lean-to-extension/slots.d.ts +0 -5
- package/dist/lean-to-extension/slots.d.ts.map +0 -1
- package/dist/lean-to-extension/slots.js +0 -15
- package/dist/shared/opening-documentation-fields.d.ts +0 -16
- package/dist/shared/opening-documentation-fields.d.ts.map +0 -1
- package/dist/shared/opening-documentation-fields.js +0 -54
- package/dist/shelf/slots.d.ts +0 -9
- package/dist/shelf/slots.d.ts.map +0 -1
- package/dist/shelf/slots.js +0 -30
- package/dist/slab/slots.d.ts +0 -10
- package/dist/slab/slots.d.ts.map +0 -1
- package/dist/slab/slots.js +0 -20
- package/dist/stair/floor-stack.d.ts +0 -10
- package/dist/stair/floor-stack.d.ts.map +0 -1
- package/dist/stair/floor-stack.js +0 -115
- package/dist/stair/slots.d.ts +0 -7
- package/dist/stair/slots.d.ts.map +0 -1
- package/dist/stair/slots.js +0 -13
- package/dist/wall/slots.d.ts +0 -10
- package/dist/wall/slots.d.ts.map +0 -1
- package/dist/wall/slots.js +0 -84
- package/dist/window/slots.d.ts +0 -5
- package/dist/window/slots.d.ts.map +0 -1
- package/dist/window/slots.js +0 -11
package/dist/window/tool.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { dormerWallFacePointToDormer, emitter, getEffectiveNode, holdHiddenWallPointerEvents, isCurvedWall, sceneRegistry, spatialGridManager, useLiveNodeOverrides, useScene, WallNode as WallNodeSchema, WindowNode, } from '@pascal-app/core';
|
|
2
|
+
import { beginSceneHistoryDraft, dormerWallFacePointToDormer, emitter, getEffectiveNode, holdHiddenWallPointerEvents, isCurvedWall, sceneRegistry, spatialGridManager, useLiveNodeOverrides, useScene, WallNode as WallNodeSchema, WindowNode, } from '@pascal-app/core';
|
|
3
|
+
import { windowTakesStyle } from '@pascal-app/core/building';
|
|
3
4
|
import { calculateItemRotation, clearPlacementSurface, EDITOR_LAYER, getSideFromNormal, isMagneticSnapActive, isValidWallSideFace, publishPlacementSurface, snapToHalf, triggerSFX, useAlignmentGuides, useEditor, useFacingPose, usePlacementPreview, useRegistryToolContext, } from '@pascal-app/editor';
|
|
4
5
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
5
6
|
import { BoxGeometry, EdgesGeometry, Vector3 } from 'three';
|
|
6
7
|
import { LineBasicNodeMaterial } from 'three/webgpu';
|
|
7
8
|
import { dormerEventFromHostedWindow, getDormerWindowWorldNormal, getDormerWindowWorldYaw, resolveDormerWindowTarget, } from '../shared/dormer-wall-opening-placement';
|
|
9
|
+
import { shouldFollowOpeningGrid, shouldHandleOpeningHostLeave, } from '../shared/opening-grid-follow';
|
|
8
10
|
import { clearOpeningGuides3D, publishOpeningGuidesForWallEvent, resolveSillSnap, } from '../shared/opening-guides-runtime';
|
|
9
11
|
import { getRoofWallOpeningCursorPose, resolveRoofWallOpeningTarget, worldToSelectedBuildingLocal, } from '../shared/roof-wall-opening-placement';
|
|
12
|
+
import { wallEventFromGrid } from '../shared/wall-event-from-grid';
|
|
10
13
|
import { collectWallOpeningAlignmentCandidates, resolveWallSlideAlignment, } from '../shared/wall-opening-alignment';
|
|
11
14
|
import { WindowFloorProjection } from './floor-projection';
|
|
15
|
+
import { placedWindowFields, useWindowPlacement } from './placement';
|
|
12
16
|
import WindowPreview from './preview';
|
|
13
17
|
import { clampToWall, DEFAULT_WINDOW_SILL_M, hasWallChildOverlap, wallLocalToWorld, } from './window-math';
|
|
14
18
|
// Shared edge material — reuse across renders, just toggle color
|
|
@@ -47,20 +51,50 @@ const WindowTool = () => {
|
|
|
47
51
|
// `floorY` feeds the floor "shadow" projection; `side` carries the R-flip so
|
|
48
52
|
// the floating ghost faces the side that will be committed.
|
|
49
53
|
const [fallbackPose, setFallbackPose] = useState(null);
|
|
50
|
-
|
|
54
|
+
const placedType = useWindowPlacement((state) => state.type);
|
|
55
|
+
const placedStyle = useWindowPlacement((state) => state.style);
|
|
56
|
+
// Ghost preview node — zeroed transform + the live facing side (rebuilds on R) and the
|
|
57
|
+
// chips' type and style (rebuilds on O / L).
|
|
58
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: placedWindowFields reads the chips' store
|
|
51
59
|
const ghostStub = useMemo(() => WindowNode.parse({
|
|
60
|
+
...placedWindowFields(),
|
|
52
61
|
position: [0, 0, 0],
|
|
53
62
|
rotation: [0, 0, 0],
|
|
54
63
|
side: fallbackPose?.side ?? 'front',
|
|
55
|
-
}), [fallbackPose?.side]);
|
|
64
|
+
}), [fallbackPose?.side, placedType, placedStyle]);
|
|
56
65
|
// The frame depth is a fixed parse default (the `side` flip doesn't change
|
|
57
66
|
// it); a ref lets the facing-pose publish inside the setup effect read it
|
|
58
67
|
// without re-subscribing every event listener.
|
|
59
68
|
const frameDepthRef = useRef(ghostStub.frameDepth);
|
|
60
69
|
useEffect(() => {
|
|
61
70
|
useScene.temporal.getState().pause();
|
|
71
|
+
// The draft is a created carry draft: undo history and every save leave it out
|
|
72
|
+
// (core `getSceneDocument`), so a reload mid-placement never finds it in the scene.
|
|
73
|
+
const draftHistoryEnds = new Map();
|
|
74
|
+
const createDraft = (node, parentId) => {
|
|
75
|
+
const end = beginSceneHistoryDraft(node.id, null);
|
|
76
|
+
draftHistoryEnds.set(node.id, end);
|
|
77
|
+
try {
|
|
78
|
+
useScene.getState().createNode(node, parentId);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
end();
|
|
82
|
+
draftHistoryEnds.delete(node.id);
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const deleteDraft = (id) => {
|
|
87
|
+
try {
|
|
88
|
+
useScene.getState().deleteNode(id);
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
draftHistoryEnds.get(id)?.();
|
|
92
|
+
draftHistoryEnds.delete(id);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
62
95
|
const ownedPreviewIds = new Set();
|
|
63
|
-
const fallbackPreview = WindowNode.parse({
|
|
96
|
+
const fallbackPreview = () => WindowNode.parse({
|
|
97
|
+
...placedWindowFields(),
|
|
64
98
|
position: [0, 0, 0],
|
|
65
99
|
rotation: [0, 0, 0],
|
|
66
100
|
side: 'front',
|
|
@@ -110,7 +144,7 @@ const WindowTool = () => {
|
|
|
110
144
|
const id = getLevelId();
|
|
111
145
|
return id ? (sceneRegistry.nodes.get(id)?.position.y ?? 0) : 0;
|
|
112
146
|
};
|
|
113
|
-
const getSlabElevationForWall = (wall) => spatialGridManager.getSlabElevationForWall(wall.parentId ?? '', wall.start, wall.end, wall.curveOffset ?? 0, wall.thickness, wall.supportSlabId);
|
|
147
|
+
const getSlabElevationForWall = (wall) => spatialGridManager.getSlabElevationForWall(wall.parentId ?? '', wall.start, wall.end, wall.curveOffset ?? 0, wall.thickness, wall.supportSlabId, wall.justification);
|
|
114
148
|
const markHostDirty = (hostId) => {
|
|
115
149
|
useScene.getState().dirtyNodes.add(hostId);
|
|
116
150
|
};
|
|
@@ -122,7 +156,7 @@ const WindowTool = () => {
|
|
|
122
156
|
}
|
|
123
157
|
const wallId = draft.parentId;
|
|
124
158
|
useLiveNodeOverrides.getState().clear(draft.id);
|
|
125
|
-
|
|
159
|
+
deleteDraft(draft.id);
|
|
126
160
|
draftRef.current = null;
|
|
127
161
|
clearPlacementPreview();
|
|
128
162
|
// Rebuild wall so it removes the cutout from the deleted draft
|
|
@@ -177,7 +211,8 @@ const WindowTool = () => {
|
|
|
177
211
|
floorY,
|
|
178
212
|
side: sideFlip ? 'back' : 'front',
|
|
179
213
|
});
|
|
180
|
-
const
|
|
214
|
+
const preview = fallbackPreview();
|
|
215
|
+
const halfWidth = preview.width / 2 + 0.5;
|
|
181
216
|
const wall = WallNodeSchema.parse({
|
|
182
217
|
end: [position[0] + halfWidth, position[2]],
|
|
183
218
|
id: fallbackWallId,
|
|
@@ -185,10 +220,10 @@ const WindowTool = () => {
|
|
|
185
220
|
thickness: 0.1,
|
|
186
221
|
});
|
|
187
222
|
const ghost = WindowNode.parse({
|
|
188
|
-
...
|
|
223
|
+
...preview,
|
|
189
224
|
metadata: { isTransient: true },
|
|
190
225
|
parentId: wall.id,
|
|
191
|
-
position: [halfWidth, FALLBACK_SILL_LIFT +
|
|
226
|
+
position: [halfWidth, FALLBACK_SILL_LIFT + preview.height / 2, 0],
|
|
192
227
|
rotation: [0, sideFlip ? Math.PI : 0, 0],
|
|
193
228
|
side: sideFlip ? 'back' : 'front',
|
|
194
229
|
wallId: wall.id,
|
|
@@ -217,31 +252,32 @@ const WindowTool = () => {
|
|
|
217
252
|
const itemRotation = sideFlip ? Math.PI : 0;
|
|
218
253
|
if (draftRef.current && draftRef.current.parentId !== event.node.id)
|
|
219
254
|
destroyDraft();
|
|
220
|
-
if (
|
|
221
|
-
|
|
255
|
+
if (draftRef.current) {
|
|
256
|
+
useLiveNodeOverrides.getState().set(draftRef.current.id, {
|
|
222
257
|
position: target.position,
|
|
223
258
|
rotation: [0, itemRotation, 0],
|
|
224
259
|
side,
|
|
225
260
|
parentId: event.node.id,
|
|
226
261
|
dormerId: event.node.id,
|
|
227
262
|
dormerFace: target.face,
|
|
228
|
-
|
|
263
|
+
wallId: undefined,
|
|
264
|
+
roofSegmentId: undefined,
|
|
265
|
+
roofFace: undefined,
|
|
229
266
|
});
|
|
230
|
-
useScene.getState().createNode(node, event.node.id);
|
|
231
|
-
draftRef.current = node;
|
|
232
267
|
}
|
|
233
268
|
else {
|
|
234
|
-
|
|
269
|
+
const node = WindowNode.parse({
|
|
270
|
+
...placedWindowFields(),
|
|
235
271
|
position: target.position,
|
|
236
272
|
rotation: [0, itemRotation, 0],
|
|
237
273
|
side,
|
|
238
274
|
parentId: event.node.id,
|
|
239
275
|
dormerId: event.node.id,
|
|
240
276
|
dormerFace: target.face,
|
|
241
|
-
|
|
242
|
-
roofSegmentId: undefined,
|
|
243
|
-
roofFace: undefined,
|
|
277
|
+
metadata: { isTransient: true },
|
|
244
278
|
});
|
|
279
|
+
createDraft(node, event.node.id);
|
|
280
|
+
draftRef.current = node;
|
|
245
281
|
}
|
|
246
282
|
publishDraftPreview(event.node);
|
|
247
283
|
clearOpeningGuides3D();
|
|
@@ -303,6 +339,7 @@ const WindowTool = () => {
|
|
|
303
339
|
const height = draftRef.current?.height ?? 1.5;
|
|
304
340
|
if (!draftRef.current) {
|
|
305
341
|
const node = WindowNode.parse({
|
|
342
|
+
...placedWindowFields(),
|
|
306
343
|
position: [0, DEFAULT_SILL_CENTER_Y, 0],
|
|
307
344
|
rotation: [0, itemRotation, 0],
|
|
308
345
|
side,
|
|
@@ -310,7 +347,7 @@ const WindowTool = () => {
|
|
|
310
347
|
parentId: wall.id,
|
|
311
348
|
metadata: { isTransient: true },
|
|
312
349
|
});
|
|
313
|
-
|
|
350
|
+
createDraft(node, wall.id);
|
|
314
351
|
draftRef.current = node;
|
|
315
352
|
}
|
|
316
353
|
const { clampedX, clampedY, valid } = resolveWallPlacement(wall, rawLocalX, rawLocalY, width, height, applySnap, draftRef.current.id);
|
|
@@ -362,7 +399,7 @@ const WindowTool = () => {
|
|
|
362
399
|
draftRef.current = null;
|
|
363
400
|
hostKind = null;
|
|
364
401
|
useLiveNodeOverrides.getState().clear(draft.id);
|
|
365
|
-
|
|
402
|
+
deleteDraft(draft.id);
|
|
366
403
|
useScene.temporal.getState().resume();
|
|
367
404
|
const levelId = getLevelId();
|
|
368
405
|
const state = useScene.getState();
|
|
@@ -418,7 +455,7 @@ const WindowTool = () => {
|
|
|
418
455
|
draftRef.current = null;
|
|
419
456
|
hostKind = null;
|
|
420
457
|
useLiveNodeOverrides.getState().clear(draft.id);
|
|
421
|
-
|
|
458
|
+
deleteDraft(draft.id);
|
|
422
459
|
useScene.temporal.getState().resume();
|
|
423
460
|
const state = useScene.getState();
|
|
424
461
|
const windowCount = Object.values(state.nodes).filter((node) => node.type === 'window').length;
|
|
@@ -519,7 +556,16 @@ const WindowTool = () => {
|
|
|
519
556
|
commitWindowAtWall(event.node, clampedX, clampedY, side, itemRotation);
|
|
520
557
|
event.stopPropagation();
|
|
521
558
|
};
|
|
522
|
-
|
|
559
|
+
// XR selectend produces a grid click without replaying the wall mesh's
|
|
560
|
+
// R3F pointer-up event. Use the latest valid wall hover for that release.
|
|
561
|
+
const onXRGridClick = (event) => {
|
|
562
|
+
if (event.nativeEvent?.pointerType !== 'xr' || !lastWallEvent)
|
|
563
|
+
return;
|
|
564
|
+
onWallClick(lastWallEvent);
|
|
565
|
+
};
|
|
566
|
+
const onWallLeave = (event) => {
|
|
567
|
+
if (!shouldHandleOpeningHostLeave(event.nativeEvent))
|
|
568
|
+
return;
|
|
523
569
|
if (hostKind !== 'wall')
|
|
524
570
|
return;
|
|
525
571
|
lastWallEvent = null;
|
|
@@ -538,8 +584,18 @@ const WindowTool = () => {
|
|
|
538
584
|
// timeStamp) — it owns the frame and has snapped the draft, so skip the
|
|
539
585
|
// floor follow this tick.
|
|
540
586
|
const ts = event.nativeEvent?.timeStamp ?? -1;
|
|
541
|
-
if (
|
|
587
|
+
if (!shouldFollowOpeningGrid({
|
|
588
|
+
eventTime: ts,
|
|
589
|
+
hasActiveHost: hostKind !== null,
|
|
590
|
+
lastHostEventTime: lastMeshEventTime,
|
|
591
|
+
pointerType: event.nativeEvent?.pointerType,
|
|
592
|
+
}))
|
|
542
593
|
return;
|
|
594
|
+
const wallEvent = wallEventFromGrid(event, activeLevelId, useScene.getState().nodes, sceneRegistry.nodes);
|
|
595
|
+
if (wallEvent) {
|
|
596
|
+
onWallHover(wallEvent);
|
|
597
|
+
return;
|
|
598
|
+
}
|
|
543
599
|
// Fresh floor-only frame: the cursor is off any wall/roof. Drop any draft
|
|
544
600
|
// and free-follow the cursor with the invalid (unplaceable) ghost.
|
|
545
601
|
hostKind = null;
|
|
@@ -548,6 +604,13 @@ const WindowTool = () => {
|
|
|
548
604
|
destroyDraft();
|
|
549
605
|
showGhostAt([x, y + FALLBACK_HEIGHT / 2 + FALLBACK_SILL_LIFT, z], y);
|
|
550
606
|
};
|
|
607
|
+
const onGridPointerUp = (event) => {
|
|
608
|
+
if (isCameraDragging() || !draftRef.current)
|
|
609
|
+
return;
|
|
610
|
+
const wallEvent = wallEventFromGrid(event, activeLevelId, useScene.getState().nodes, sceneRegistry.nodes);
|
|
611
|
+
if (wallEvent)
|
|
612
|
+
onWallClick(wallEvent);
|
|
613
|
+
};
|
|
551
614
|
// ── Dormer wall faces ──────────────────────────────────────────
|
|
552
615
|
// Dormer windows use the same WindowNode mesh and inspector as regular
|
|
553
616
|
// windows, but their host frame is supplied by DormerRenderer.
|
|
@@ -669,6 +732,7 @@ const WindowTool = () => {
|
|
|
669
732
|
}
|
|
670
733
|
else {
|
|
671
734
|
const node = WindowNode.parse({
|
|
735
|
+
...placedWindowFields(),
|
|
672
736
|
position,
|
|
673
737
|
rotation: [0, 0, 0],
|
|
674
738
|
side: 'front',
|
|
@@ -677,7 +741,7 @@ const WindowTool = () => {
|
|
|
677
741
|
parentId: segment.id,
|
|
678
742
|
metadata: { isTransient: true },
|
|
679
743
|
});
|
|
680
|
-
|
|
744
|
+
createDraft(node, segment.id);
|
|
681
745
|
draftRef.current = node;
|
|
682
746
|
}
|
|
683
747
|
publishDraftPreview(segment);
|
|
@@ -701,7 +765,7 @@ const WindowTool = () => {
|
|
|
701
765
|
draftRef.current = null;
|
|
702
766
|
hostKind = null;
|
|
703
767
|
useLiveNodeOverrides.getState().clear(draft.id);
|
|
704
|
-
|
|
768
|
+
deleteDraft(draft.id);
|
|
705
769
|
useScene.temporal.getState().resume();
|
|
706
770
|
const state = useScene.getState();
|
|
707
771
|
const windowCount = Object.values(state.nodes).filter((n) => n.type === 'window' && n.roofSegmentId !== undefined).length;
|
|
@@ -762,14 +826,28 @@ const WindowTool = () => {
|
|
|
762
826
|
// guard dropped R off-wall / before the first hover). Then re-renders the
|
|
763
827
|
// current preview so the flip shows live and matches commit.
|
|
764
828
|
const onKeyDown = (e) => {
|
|
765
|
-
|
|
829
|
+
const key = e.key.toLowerCase();
|
|
830
|
+
if (key !== 'r' && key !== 'o' && key !== 'l')
|
|
831
|
+
return;
|
|
832
|
+
if (key === 'l' && !windowTakesStyle(useWindowPlacement.getState().type))
|
|
766
833
|
return;
|
|
767
834
|
if (e.repeat)
|
|
768
835
|
return;
|
|
769
836
|
const t = e.target;
|
|
770
837
|
if (t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA' || t.isContentEditable))
|
|
771
838
|
return;
|
|
839
|
+
if (key !== 'r' && (e.metaKey || e.ctrlKey || e.altKey))
|
|
840
|
+
return;
|
|
772
841
|
e.preventDefault();
|
|
842
|
+
if (key !== 'r') {
|
|
843
|
+
// O / L cycle the chips; the store subscription re-previews.
|
|
844
|
+
if (key === 'o')
|
|
845
|
+
useWindowPlacement.getState().cycleType();
|
|
846
|
+
else
|
|
847
|
+
useWindowPlacement.getState().cycleStyle();
|
|
848
|
+
triggerSFX('sfx:item-rotate');
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
773
851
|
sideFlip = !sideFlip;
|
|
774
852
|
triggerSFX('sfx:item-rotate');
|
|
775
853
|
if (lastWallEvent) {
|
|
@@ -786,6 +864,7 @@ const WindowTool = () => {
|
|
|
786
864
|
emitter.on('wall:enter', onWallHover);
|
|
787
865
|
emitter.on('wall:move', onWallHover);
|
|
788
866
|
emitter.on('wall:click', onWallClick);
|
|
867
|
+
emitter.on('grid:click', onXRGridClick);
|
|
789
868
|
emitter.on('wall:leave', onWallLeave);
|
|
790
869
|
emitter.on('roof:enter', onRoofHover);
|
|
791
870
|
emitter.on('roof:move', onRoofHover);
|
|
@@ -800,8 +879,28 @@ const WindowTool = () => {
|
|
|
800
879
|
emitter.on('window:click', onDormerWindowClick);
|
|
801
880
|
emitter.on('window:leave', onDormerWindowLeave);
|
|
802
881
|
emitter.on('grid:move', onGridFreeFollow);
|
|
882
|
+
emitter.on('grid:pointerup', onGridPointerUp);
|
|
803
883
|
emitter.on('tool:cancel', onCancel);
|
|
804
884
|
window.addEventListener('keydown', onKeyDown);
|
|
885
|
+
// A chip changed (key or click): the draft takes the new type and style, then re-previews.
|
|
886
|
+
const unsubscribePlacement = useWindowPlacement.subscribe(() => {
|
|
887
|
+
const draft = draftRef.current;
|
|
888
|
+
if (draft) {
|
|
889
|
+
useScene.getState().updateNode(draft.id, placedWindowFields());
|
|
890
|
+
const live = useScene.getState().nodes[draft.id];
|
|
891
|
+
if (live?.type === 'window')
|
|
892
|
+
draftRef.current = live;
|
|
893
|
+
}
|
|
894
|
+
const parent = draft?.parentId ? useScene.getState().nodes[draft.parentId] : null;
|
|
895
|
+
if (lastWallEvent)
|
|
896
|
+
onWallHover(lastWallEvent);
|
|
897
|
+
else if (lastDormerEvent)
|
|
898
|
+
onDormerHover(lastDormerEvent);
|
|
899
|
+
else if (parent)
|
|
900
|
+
publishDraftPreview(parent);
|
|
901
|
+
else if (lastFloorPoint)
|
|
902
|
+
showGhostAt(lastFloorPoint.pos, lastFloorPoint.floorY);
|
|
903
|
+
});
|
|
805
904
|
// Placement tracks the cursor through wall events; keep walls hidden by
|
|
806
905
|
// the wall-mode pass (X-ray 'down' mode) pointer-targetable while the
|
|
807
906
|
// tool is active so a new window still snaps onto them (see the wall
|
|
@@ -809,6 +908,8 @@ const WindowTool = () => {
|
|
|
809
908
|
const releaseHiddenWallHold = holdHiddenWallPointerEvents();
|
|
810
909
|
return () => {
|
|
811
910
|
destroyDraft();
|
|
911
|
+
for (const end of draftHistoryEnds.values())
|
|
912
|
+
end();
|
|
812
913
|
hideCursor();
|
|
813
914
|
clearPlacementPreview();
|
|
814
915
|
useAlignmentGuides.getState().clear();
|
|
@@ -818,6 +919,7 @@ const WindowTool = () => {
|
|
|
818
919
|
emitter.off('wall:enter', onWallHover);
|
|
819
920
|
emitter.off('wall:move', onWallHover);
|
|
820
921
|
emitter.off('wall:click', onWallClick);
|
|
922
|
+
emitter.off('grid:click', onXRGridClick);
|
|
821
923
|
emitter.off('wall:leave', onWallLeave);
|
|
822
924
|
emitter.off('roof:enter', onRoofHover);
|
|
823
925
|
emitter.off('roof:move', onRoofHover);
|
|
@@ -832,8 +934,10 @@ const WindowTool = () => {
|
|
|
832
934
|
emitter.off('window:click', onDormerWindowClick);
|
|
833
935
|
emitter.off('window:leave', onDormerWindowLeave);
|
|
834
936
|
emitter.off('grid:move', onGridFreeFollow);
|
|
937
|
+
emitter.off('grid:pointerup', onGridPointerUp);
|
|
835
938
|
emitter.off('tool:cancel', onCancel);
|
|
836
939
|
window.removeEventListener('keydown', onKeyDown);
|
|
940
|
+
unsubscribePlacement();
|
|
837
941
|
};
|
|
838
942
|
}, [activeLevelId, isCameraDragging, selectNode]);
|
|
839
943
|
// Cursor geometry: window outline rectangle. Static dims, so build it once and
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type WallNode } from '@pascal-app/core';
|
|
2
2
|
/**
|
|
3
3
|
* Default sill height (metres from the floor to the BOTTOM of a window) for a
|
|
4
4
|
* fresh window that has no wall-face height yet — the off-wall ghost and the
|
|
@@ -8,24 +8,16 @@ import type { AnyNode, AnyNodeId, WallNode } from '@pascal-app/core';
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const DEFAULT_WINDOW_SILL_M = 0.5;
|
|
10
10
|
/**
|
|
11
|
-
* Converts wall-local (X along wall, Y = height above wall base
|
|
11
|
+
* Converts wall-local (X along wall, Y = height above wall base, Z = offset
|
|
12
|
+
* from the wall centre plane along its normal) to world XYZ.
|
|
12
13
|
* Wall XZ uses level-local coordinates (levels only offset in Y, not XZ).
|
|
13
14
|
* Pass levelYOffset (the level group's current world Y) and slabElevation (the
|
|
14
15
|
* wall mesh's Y within the level group) so the cursor lands at the correct world
|
|
15
16
|
* height — matching how WallSystem positions the wall mesh at slabElevation.
|
|
16
17
|
*/
|
|
17
|
-
export declare function wallLocalToWorld(wallNode: WallNode, localX: number, localY: number, levelYOffset?: number, slabElevation?: number): [number, number, number];
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
* ceiling is the wall's RESOLVED top (storey plane for plane-bound walls,
|
|
21
|
-
* stored height for explicit ones, minus the elected slab base) — `nodes` is
|
|
22
|
-
* required because a plane-bound wall's top lives on its level, not on the
|
|
23
|
-
* wall record.
|
|
24
|
-
*/
|
|
25
|
-
export declare function clampToWall(wallNode: WallNode, localX: number, localY: number, width: number, height: number, nodes: Readonly<Record<AnyNodeId, AnyNode>>): {
|
|
26
|
-
clampedX: number;
|
|
27
|
-
clampedY: number;
|
|
28
|
-
};
|
|
18
|
+
export declare function wallLocalToWorld(wallNode: WallNode, localX: number, localY: number, levelYOffset?: number, slabElevation?: number, localZ?: number): [number, number, number];
|
|
19
|
+
/** Window centre on its wall and under its ceiling: the shared rule in core (`clampWindowToWall`). */
|
|
20
|
+
export { clampWindowToWall as clampToWall } from '@pascal-app/core/building';
|
|
29
21
|
/**
|
|
30
22
|
* Wall-child overlap is shared by door + window placement (one source of
|
|
31
23
|
* truth in `shared/wall-attach-target.ts`). Re-exported here so existing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window-math.d.ts","sourceRoot":"","sources":["../../src/window/window-math.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"window-math.d.ts","sourceRoot":"","sources":["../../src/window/window-math.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AAEzB;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAExC;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,SAAI,EAChB,aAAa,SAAI,EACjB,MAAM,SAAI,GACT,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAW1B;AAED,sGAAsG;AACtG,OAAO,EAAE,iBAAiB,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5E;;;;GAIG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getWallBodyCenterOffset, getWallCurveFrameAt, getWallCurveLength, } from '@pascal-app/core';
|
|
2
2
|
/**
|
|
3
3
|
* Default sill height (metres from the floor to the BOTTOM of a window) for a
|
|
4
4
|
* fresh window that has no wall-face height yet — the off-wall ghost and the
|
|
@@ -8,36 +8,27 @@ import { resolveWallOpeningCeiling } from '../shared/wall-opening-ceiling';
|
|
|
8
8
|
*/
|
|
9
9
|
export const DEFAULT_WINDOW_SILL_M = 0.5;
|
|
10
10
|
/**
|
|
11
|
-
* Converts wall-local (X along wall, Y = height above wall base
|
|
11
|
+
* Converts wall-local (X along wall, Y = height above wall base, Z = offset
|
|
12
|
+
* from the wall centre plane along its normal) to world XYZ.
|
|
12
13
|
* Wall XZ uses level-local coordinates (levels only offset in Y, not XZ).
|
|
13
14
|
* Pass levelYOffset (the level group's current world Y) and slabElevation (the
|
|
14
15
|
* wall mesh's Y within the level group) so the cursor lands at the correct world
|
|
15
16
|
* height — matching how WallSystem positions the wall mesh at slabElevation.
|
|
16
17
|
*/
|
|
17
|
-
export function wallLocalToWorld(wallNode, localX, localY, levelYOffset = 0, slabElevation = 0) {
|
|
18
|
-
const
|
|
18
|
+
export function wallLocalToWorld(wallNode, localX, localY, levelYOffset = 0, slabElevation = 0, localZ = 0) {
|
|
19
|
+
const wallLength = getWallCurveLength(wallNode);
|
|
20
|
+
const frame = getWallCurveFrameAt(wallNode, wallLength > 1e-6 ? localX / wallLength : 0);
|
|
21
|
+
// `localZ` is measured from the body's centre plane, which a justified wall
|
|
22
|
+
// sets off its reference line.
|
|
23
|
+
const across = getWallBodyCenterOffset(wallNode) + localZ;
|
|
19
24
|
return [
|
|
20
|
-
|
|
25
|
+
frame.point.x + frame.normal.x * across,
|
|
21
26
|
slabElevation + localY + levelYOffset,
|
|
22
|
-
|
|
27
|
+
frame.point.y + frame.normal.y * across,
|
|
23
28
|
];
|
|
24
29
|
}
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
* ceiling is the wall's RESOLVED top (storey plane for plane-bound walls,
|
|
28
|
-
* stored height for explicit ones, minus the elected slab base) — `nodes` is
|
|
29
|
-
* required because a plane-bound wall's top lives on its level, not on the
|
|
30
|
-
* wall record.
|
|
31
|
-
*/
|
|
32
|
-
export function clampToWall(wallNode, localX, localY, width, height, nodes) {
|
|
33
|
-
const dx = wallNode.end[0] - wallNode.start[0];
|
|
34
|
-
const dz = wallNode.end[1] - wallNode.start[1];
|
|
35
|
-
const wallLength = Math.sqrt(dx * dx + dz * dz);
|
|
36
|
-
const wallHeight = resolveWallOpeningCeiling(wallNode, nodes);
|
|
37
|
-
const clampedX = Math.max(width / 2, Math.min(wallLength - width / 2, localX));
|
|
38
|
-
const clampedY = Math.max(height / 2, Math.min(wallHeight - height / 2, localY));
|
|
39
|
-
return { clampedX, clampedY };
|
|
40
|
-
}
|
|
30
|
+
/** Window centre on its wall and under its ceiling: the shared rule in core (`clampWindowToWall`). */
|
|
31
|
+
export { clampWindowToWall as clampToWall } from '@pascal-app/core/building';
|
|
41
32
|
/**
|
|
42
33
|
* Wall-child overlap is shared by door + window placement (one source of
|
|
43
34
|
* truth in `shared/wall-attach-target.ts`). Re-exported here so existing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextual-dimensions.d.ts","sourceRoot":"","sources":["../../src/zone/contextual-dimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAEpB,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AAGzB,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,eAAe,GACnB,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"contextual-dimensions.d.ts","sourceRoot":"","sources":["../../src/zone/contextual-dimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAEpB,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AAGzB,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,eAAe,GACnB,iBAAiB,GAAG,IAAI,CAgB1B"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { area as footprintArea, polygonInteriorPoint, } from '@pascal-app/core';
|
|
2
2
|
import { formatAreaLabel } from '@pascal-app/editor';
|
|
3
3
|
export function buildZoneContextualDimensions(node, ctx) {
|
|
4
|
-
|
|
4
|
+
if (node.autoFromWalls && node.enclosureStatus === 'open')
|
|
5
|
+
return null;
|
|
6
|
+
const polygon = node.polygon;
|
|
5
7
|
if (polygon.length < 3)
|
|
6
8
|
return null;
|
|
7
|
-
const {
|
|
9
|
+
const area = footprintArea([{ outer: polygon, holes: node.holes ?? [] }]);
|
|
10
|
+
const centroid = polygonInteriorPoint(node, true);
|
|
8
11
|
if (area <= 1e-6)
|
|
9
12
|
return null;
|
|
10
13
|
return {
|
|
@@ -16,28 +19,3 @@ export function buildZoneContextualDimensions(node, ctx) {
|
|
|
16
19
|
angle: 0,
|
|
17
20
|
};
|
|
18
21
|
}
|
|
19
|
-
function polygonAreaAndCentroid(points) {
|
|
20
|
-
let twiceSignedArea = 0;
|
|
21
|
-
let weightedX = 0;
|
|
22
|
-
let weightedY = 0;
|
|
23
|
-
for (let index = 0; index < points.length; index += 1) {
|
|
24
|
-
const current = points[index];
|
|
25
|
-
const next = points[(index + 1) % points.length];
|
|
26
|
-
const cross = current[0] * next[1] - next[0] * current[1];
|
|
27
|
-
twiceSignedArea += cross;
|
|
28
|
-
weightedX += (current[0] + next[0]) * cross;
|
|
29
|
-
weightedY += (current[1] + next[1]) * cross;
|
|
30
|
-
}
|
|
31
|
-
const area = Math.abs(twiceSignedArea) / 2;
|
|
32
|
-
if (Math.abs(twiceSignedArea) <= 1e-9) {
|
|
33
|
-
const sum = points.reduce((acc, point) => [acc[0] + point[0], acc[1] + point[1]], [0, 0]);
|
|
34
|
-
return {
|
|
35
|
-
area,
|
|
36
|
-
centroid: [sum[0] / points.length, sum[1] / points.length],
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
area,
|
|
41
|
-
centroid: [weightedX / (3 * twiceSignedArea), weightedY / (3 * twiceSignedArea)],
|
|
42
|
-
};
|
|
43
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/zone/definition.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/zone/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA8B,MAAM,kBAAkB,CAAA;AAelF,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGnC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,OAAO,QAAQ,CAoF1D,CAAA"}
|
package/dist/zone/definition.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ZoneNode as ZoneNodeSchema } from '@pascal-app/core';
|
|
2
2
|
import { polygonMeasurementFeatures } from '../shared/polygon-measurement';
|
|
3
3
|
import { buildZoneContextualDimensions } from './contextual-dimensions';
|
|
4
4
|
import { buildZoneFloorplan } from './floorplan';
|
|
@@ -46,12 +46,13 @@ export const zoneDefinition = {
|
|
|
46
46
|
featurePrefix: 'zone',
|
|
47
47
|
height: 0,
|
|
48
48
|
label: 'Zone',
|
|
49
|
-
polygon:
|
|
49
|
+
polygon: node.polygon,
|
|
50
50
|
}),
|
|
51
|
-
quickMeasure: (node
|
|
51
|
+
quickMeasure: (node) => zoneQuickMeasurement(node),
|
|
52
52
|
},
|
|
53
53
|
// No dirty consumer rebuilds this kind — see NodeDefinition.dirtyTracking.
|
|
54
54
|
dirtyTracking: false,
|
|
55
|
+
rendersChildren: false,
|
|
55
56
|
renderer: {
|
|
56
57
|
kind: 'parametric',
|
|
57
58
|
module: () => import('./renderer'),
|