@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/fence/geometry.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type GeometryContext } from '@pascal-app/core';
|
|
1
|
+
import { type FenceWithFeatures, type GeometryContext } from '@pascal-app/core';
|
|
2
2
|
import { type ColorPreset, type RenderShading } from '@pascal-app/viewer';
|
|
3
3
|
import { Group } from 'three';
|
|
4
|
-
|
|
5
|
-
export declare function buildFenceGeometry(node: FenceNode, ctx?: GeometryContext, shading?: RenderShading, textures?: boolean, colorPreset?: ColorPreset, sceneTheme?: string): Group;
|
|
4
|
+
export declare function buildFenceGeometry(node: FenceWithFeatures, ctx?: GeometryContext, shading?: RenderShading, textures?: boolean, colorPreset?: ColorPreset, sceneTheme?: string, mode?: 'body' | 'features'): Group;
|
|
6
5
|
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/fence/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/fence/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,iBAAiB,EAGtB,KAAK,eAAe,EAIrB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAEL,KAAK,WAAW,EAIhB,KAAK,aAAa,EAGnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAa,KAAK,EAAqC,MAAM,OAAO,CAAA;AAkH3E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,EACvB,GAAG,CAAC,EAAE,eAAe,EACrB,OAAO,GAAE,aAA0B,EACnC,QAAQ,UAAO,EACf,WAAW,GAAE,WAAoB,EACjC,UAAU,CAAC,EAAE,MAAM,EACnB,IAAI,GAAE,MAAM,GAAG,UAAmB,GACjC,KAAK,CAuIP"}
|
package/dist/fence/geometry.js
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
import { getMaterialPresetByRef } from '@pascal-app/core';
|
|
2
|
-
import { applyMaterialPresetToMaterials, createDefaultMaterial, createMaterial, createSurfaceRoleMaterial,
|
|
1
|
+
import { FENCE_SLOT_DEFAULTS, fenceWithFeatures, floorConstructionLift, getMaterialPresetByRef, liftedManualSlab, plateLevelContext, } from '@pascal-app/core';
|
|
2
|
+
import { applyMaterialPresetToMaterials, createDefaultMaterial, createMaterial, createSurfaceRoleMaterial, resolveMaterialRef, resolveSlotDefaultMaterial, } from '@pascal-app/viewer';
|
|
3
3
|
import { FrontSide, Group, Mesh } from 'three';
|
|
4
|
+
import { generateFenceSlotGeometries, } from './geometry-parts';
|
|
4
5
|
import { resolveFenceLiftElevation } from './lift';
|
|
5
|
-
import { FENCE_SLOT_DEFAULTS } from './slots';
|
|
6
6
|
const FENCE_SLOT_ORDER = ['posts', 'infill', 'base', 'rail'];
|
|
7
7
|
const fenceMaterialCache = new Map();
|
|
8
|
+
function sharedFenceCorners(node, siblings) {
|
|
9
|
+
const omitted = new Set();
|
|
10
|
+
const neighbors = {};
|
|
11
|
+
for (const sibling of siblings) {
|
|
12
|
+
if (sibling.type !== 'fence' || sibling.visible === false)
|
|
13
|
+
continue;
|
|
14
|
+
for (const endpoint of ['start', 'end']) {
|
|
15
|
+
const point = node[endpoint];
|
|
16
|
+
if (![sibling.start, sibling.end].some((other) => Math.hypot(point[0] - other[0], point[1] - other[1]) < 0.001))
|
|
17
|
+
continue;
|
|
18
|
+
if (sibling.height > node.height || (sibling.height === node.height && sibling.id < node.id))
|
|
19
|
+
omitted.add(endpoint);
|
|
20
|
+
if (!neighbors[endpoint])
|
|
21
|
+
neighbors[endpoint] = sibling;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return { omittedPosts: omitted, neighbors };
|
|
25
|
+
}
|
|
8
26
|
function getFenceSlotMaterial(node, slotId, shading, textures, colorPreset, sceneTheme, sceneMaterials) {
|
|
9
27
|
if (!textures) {
|
|
10
28
|
return createSurfaceRoleMaterial('joinery', colorPreset, FrontSide, sceneTheme);
|
|
@@ -48,9 +66,44 @@ function getLegacyFenceMaterial(node, shading) {
|
|
|
48
66
|
fenceMaterialCache.set(cacheKey, material);
|
|
49
67
|
return material;
|
|
50
68
|
}
|
|
51
|
-
export function buildFenceGeometry(node, ctx, shading = 'rendered', textures = true, colorPreset = 'clay', sceneTheme) {
|
|
69
|
+
export function buildFenceGeometry(node, ctx, shading = 'rendered', textures = true, colorPreset = 'clay', sceneTheme, mode = 'body') {
|
|
70
|
+
const previewFeatures = node.features ?? [];
|
|
71
|
+
if (mode === 'body')
|
|
72
|
+
node = fenceWithFeatures(node, ctx?.children ?? []);
|
|
52
73
|
const group = new Group();
|
|
53
|
-
const
|
|
74
|
+
const nodes = ctx ? (plateLevelContext(ctx.parent, ctx.resolve).nodes ?? {}) : {};
|
|
75
|
+
const constructionLift = floorConstructionLift(nodes, node);
|
|
76
|
+
const startGround = (ctx?.levelBaseAt?.(node.start[0], node.start[1]) ?? 0) + constructionLift;
|
|
77
|
+
const surfaceId = node.supportSurfaceNodeId;
|
|
78
|
+
const surfaceAt = surfaceId
|
|
79
|
+
? (x, z) => ctx?.surfaceHeightAt?.(surfaceId, x, z) ?? null
|
|
80
|
+
: undefined;
|
|
81
|
+
const startSurface = surfaceAt?.(node.start[0], node.start[1]) ?? null;
|
|
82
|
+
const startBase = startSurface ?? startGround;
|
|
83
|
+
const followsTerrain = (node.path?.length ?? 0) >= 2 || Math.abs(node.curveOffset ?? 0) > 1e-4;
|
|
84
|
+
const chosenHost = node.surfaceMode === 'selected'
|
|
85
|
+
? node.supportSurfaceNodeId
|
|
86
|
+
: undefined;
|
|
87
|
+
const sampledSupport = followsTerrain && !node.supportSlabId && ctx?.supportHeightAt
|
|
88
|
+
? (x, z) => Math.max(ctx.supportHeightAt(x, z, chosenHost), (ctx.levelBaseAt?.(x, z) ?? 0) + constructionLift)
|
|
89
|
+
: undefined;
|
|
90
|
+
const levelHeight = node.surfaceMode === 'level' ? sampledSupport?.(node.start[0], node.start[1]) : undefined;
|
|
91
|
+
const supportAt = levelHeight !== undefined ? () => levelHeight : sampledSupport;
|
|
92
|
+
const sampledStart = supportAt?.(node.start[0], node.start[1]) ?? startBase;
|
|
93
|
+
const sampledGround = new Map();
|
|
94
|
+
const corners = mode === 'body' && ctx ? sharedFenceCorners(node, ctx.siblings) : undefined;
|
|
95
|
+
const gateLeaves = [];
|
|
96
|
+
const geometries = generateFenceSlotGeometries(node, supportAt
|
|
97
|
+
? (x, z) => {
|
|
98
|
+
const key = `${x},${z}`;
|
|
99
|
+
const cached = sampledGround.get(key);
|
|
100
|
+
if (cached !== undefined)
|
|
101
|
+
return cached;
|
|
102
|
+
const height = supportAt(x, z) - sampledStart;
|
|
103
|
+
sampledGround.set(key, height);
|
|
104
|
+
return height;
|
|
105
|
+
}
|
|
106
|
+
: undefined, mode, corners?.omittedPosts, corners?.neighbors, mode === 'features' ? gateLeaves : undefined);
|
|
54
107
|
// A hosted railing (`supportSlabId`) stands on its slab's walking surface;
|
|
55
108
|
// an unhosted one stands on the ground, which `ctx.levelBaseAt` resolves at
|
|
56
109
|
// the fence's own start point — the anchor its plan geometry is measured
|
|
@@ -58,9 +111,17 @@ export function buildFenceGeometry(node, ctx, shading = 'rendered', textures = t
|
|
|
58
111
|
// is under this fence. The builder emits local-space children, so the lift
|
|
59
112
|
// lives on an inner group rather than the registered (React-transformed)
|
|
60
113
|
// root.
|
|
61
|
-
const
|
|
62
|
-
? resolveFenceLiftElevation(node, (id) =>
|
|
114
|
+
const baseLift = ctx
|
|
115
|
+
? resolveFenceLiftElevation(node, (id) => {
|
|
116
|
+
const host = ctx.resolve(id);
|
|
117
|
+
return host?.type === 'slab' ? liftedManualSlab(nodes, host) : host;
|
|
118
|
+
}, startGround)
|
|
63
119
|
: 0;
|
|
120
|
+
const lift = supportAt
|
|
121
|
+
? sampledStart + (node.supportOffset ?? 0)
|
|
122
|
+
: startSurface !== null && !node.supportSlabId
|
|
123
|
+
? startSurface + (node.supportOffset ?? 0)
|
|
124
|
+
: baseLift;
|
|
64
125
|
const meshParent = new Group();
|
|
65
126
|
meshParent.position.y = lift;
|
|
66
127
|
group.add(meshParent);
|
|
@@ -75,5 +136,21 @@ export function buildFenceGeometry(node, ctx, shading = 'rendered', textures = t
|
|
|
75
136
|
mesh.userData.slotId = slotId;
|
|
76
137
|
meshParent.add(mesh);
|
|
77
138
|
}
|
|
139
|
+
for (const leaf of gateLeaves) {
|
|
140
|
+
const pivot = new Group();
|
|
141
|
+
pivot.position.set(leaf.hinge.x, 0, leaf.hinge.z);
|
|
142
|
+
pivot.rotation.y = leaf.rotationY;
|
|
143
|
+
pivot.userData.pascalFenceGateLeaf = { openRotationY: leaf.openRotationY };
|
|
144
|
+
const mesh = new Mesh(leaf.geometry, getFenceSlotMaterial(node, 'infill', shading, textures, colorPreset, sceneTheme, ctx?.materials));
|
|
145
|
+
mesh.position.set(-leaf.hinge.x, 0, -leaf.hinge.z);
|
|
146
|
+
mesh.castShadow = true;
|
|
147
|
+
mesh.receiveShadow = true;
|
|
148
|
+
mesh.userData.slotId = 'infill';
|
|
149
|
+
pivot.add(mesh);
|
|
150
|
+
meshParent.add(pivot);
|
|
151
|
+
}
|
|
152
|
+
if (mode === 'body' && previewFeatures.length > 0) {
|
|
153
|
+
group.add(buildFenceGeometry({ ...node, features: previewFeatures }, ctx, shading, textures, colorPreset, sceneTheme, 'features'));
|
|
154
|
+
}
|
|
78
155
|
return group;
|
|
79
156
|
}
|
package/dist/fence/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/fence/index.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import { type FenceNode } from '@pascal-app/core';
|
|
2
|
+
export declare function FencePatternInfo({ node }: {
|
|
3
|
+
node: FenceNode;
|
|
4
|
+
}): import("react").JSX.Element;
|
|
5
|
+
export declare function FencePicketRailProjectionEditor({ node, onUpdate, }: {
|
|
6
|
+
node: FenceNode;
|
|
7
|
+
onUpdate: (patch: Partial<FenceNode>) => void;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
export declare function FenceSurfaceEditor({ node, onUpdate, }: {
|
|
10
|
+
node: FenceNode;
|
|
11
|
+
onUpdate: (patch: Partial<FenceNode>) => void;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
2
13
|
/**
|
|
3
14
|
* Custom inspector editors for fence fields that don't map to a single
|
|
4
15
|
* node property in the canonical way:
|
|
@@ -21,4 +32,8 @@ export declare function FenceCurveEditor({ node, onUpdate, }: {
|
|
|
21
32
|
node: FenceNode;
|
|
22
33
|
onUpdate: (patch: Partial<FenceNode>) => void;
|
|
23
34
|
}): import("react").JSX.Element;
|
|
35
|
+
export declare function FencePathEditor({ node, onUpdate, }: {
|
|
36
|
+
node: FenceNode;
|
|
37
|
+
onUpdate: (patch: Partial<FenceNode>) => void;
|
|
38
|
+
}): import("react").JSX.Element;
|
|
24
39
|
//# sourceMappingURL=inspector-editors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspector-editors.d.ts","sourceRoot":"","sources":["../../src/fence/inspector-editors.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"inspector-editors.d.ts","sourceRoot":"","sources":["../../src/fence/inspector-editors.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,SAAS,EAgBf,MAAM,kBAAkB,CAAA;AAGzB,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,+BAa7D;AAED,wBAAgB,+BAA+B,CAAC,EAC9C,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC9C,+BAgBA;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC9C,+BAqEA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC9C,+BA8BA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC9C,+BA6CA;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,SAAS,CAAA;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC9C,+BAyKA"}
|
|
@@ -1,7 +1,49 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { getClampedWallCurveOffset, getMaxWallCurveOffset, getWallCurveLength, normalizeWallCurveOffset, } from '@pascal-app/core';
|
|
2
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { clampFencePicketRailProjection, findLevelAncestorId, getClampedWallCurveOffset, getFenceCenterlineLength, getFenceControlHandle, getFenceSpanMode, getMaxWallCurveOffset, getTwoPointFenceCurveTangents, getWallArcData, getWallCurveFrameAt, getWallCurveLength, maxFencePicketRailProjection, nodeRegistry, normalizeWallCurveOffset, sampleFenceSpline, useScene, } from '@pascal-app/core';
|
|
4
4
|
import { SliderControl } from '@pascal-app/editor';
|
|
5
|
+
export function FencePatternInfo({ node }) {
|
|
6
|
+
const subject = node.style === 'picket'
|
|
7
|
+
? 'pickets in each bay between posts'
|
|
8
|
+
: node.style === 'horizontal'
|
|
9
|
+
? 'posts along the full fence'
|
|
10
|
+
: 'infill pieces between the two end posts';
|
|
11
|
+
return (_jsxs("p", { className: "text-xs text-muted-foreground", children: ["Distribution controls ", subject, ". Spacing is measured between centers. The available width limits the count so pieces do not overlap."] }));
|
|
12
|
+
}
|
|
13
|
+
export function FencePicketRailProjectionEditor({ node, onUpdate, }) {
|
|
14
|
+
const max = maxFencePicketRailProjection(node.postSize);
|
|
15
|
+
return (_jsx(SliderControl, { label: "Picket rail projection", max: max, min: 0.001, onChange: (value) => onUpdate({ picketRailProjection: clampFencePicketRailProjection(value, node.postSize) }), precision: 3, step: 0.002, unit: "m", value: clampFencePicketRailProjection(node.picketRailProjection, node.postSize) }));
|
|
16
|
+
}
|
|
17
|
+
export function FenceSurfaceEditor({ node, onUpdate, }) {
|
|
18
|
+
const nodes = useScene((state) => state.nodes);
|
|
19
|
+
const levelId = findLevelAncestorId(node.id, nodes);
|
|
20
|
+
const hosts = Object.values(nodes).filter((candidate) => candidate.id !== node.id &&
|
|
21
|
+
candidate.visible !== false &&
|
|
22
|
+
(candidate.type === 'slab' ||
|
|
23
|
+
!!nodeRegistry.get(candidate.type)?.capabilities.surfaces?.top) &&
|
|
24
|
+
findLevelAncestorId(candidate.id, nodes) === levelId);
|
|
25
|
+
const selectedId = node.supportSurfaceNodeId ?? node.supportSlabId ?? '';
|
|
26
|
+
return (_jsxs("div", { className: "space-y-2 text-xs", children: [_jsxs("label", { className: "flex items-center justify-between gap-2", children: ["Surface behavior", _jsxs("select", { className: "rounded border bg-background p-1", value: node.surfaceMode, onChange: (event) => {
|
|
27
|
+
const mode = event.target.value;
|
|
28
|
+
if (mode === 'selected' && !selectedId && hosts[0]) {
|
|
29
|
+
const host = hosts[0];
|
|
30
|
+
onUpdate({
|
|
31
|
+
surfaceMode: mode,
|
|
32
|
+
supportSlabId: host.type === 'slab' ? host.id : undefined,
|
|
33
|
+
supportSurfaceNodeId: host.type === 'slab' ? undefined : host.id,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
onUpdate({ surfaceMode: mode });
|
|
38
|
+
}
|
|
39
|
+
}, children: [_jsx("option", { value: "auto", children: "Follow highest surface" }), _jsx("option", { disabled: hosts.length === 0, value: "selected", children: "Follow selected surface" }), _jsx("option", { value: "level", children: "Hold starting height" })] })] }), node.surfaceMode === 'selected' && (_jsxs("label", { className: "flex items-center justify-between gap-2", children: ["Surface", _jsxs("select", { className: "min-w-0 max-w-40 rounded border bg-background p-1", value: selectedId, onChange: (event) => {
|
|
40
|
+
const host = nodes[event.target.value];
|
|
41
|
+
onUpdate({
|
|
42
|
+
supportSlabId: host?.type === 'slab' ? host.id : undefined,
|
|
43
|
+
supportSurfaceNodeId: host && host.type !== 'slab' ? host.id : undefined,
|
|
44
|
+
});
|
|
45
|
+
}, children: [_jsx("option", { value: "", children: "Choose a surface" }), hosts.map((host) => (_jsxs("option", { value: host.id, children: [host.name || host.type, " (", host.type, ")"] }, host.id)))] })] })), node.surfaceMode === 'selected' && !selectedId && (_jsx("p", { className: "text-muted-foreground", children: "Choose a slab or shaped surface on this level." }))] }));
|
|
46
|
+
}
|
|
5
47
|
/**
|
|
6
48
|
* Custom inspector editors for fence fields that don't map to a single
|
|
7
49
|
* node property in the canonical way:
|
|
@@ -39,5 +81,88 @@ export function FenceLengthEditor({ node, onUpdate, }) {
|
|
|
39
81
|
export function FenceCurveEditor({ node, onUpdate, }) {
|
|
40
82
|
const curveOffset = getClampedWallCurveOffset(node);
|
|
41
83
|
const maxCurveOffset = getMaxWallCurveOffset(node);
|
|
42
|
-
return (_jsx(SliderControl, { label: "Curve", max: Math.max(0.01, maxCurveOffset), min: -Math.max(0.01, maxCurveOffset), onChange: (value) => onUpdate({ curveOffset: normalizeWallCurveOffset(node, value) }), precision: 2, step: 0.1, unit: "m", value: curveOffset }))
|
|
84
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsx(SliderControl, { label: "Curve", max: Math.max(0.01, maxCurveOffset), min: -Math.max(0.01, maxCurveOffset), onChange: (value) => onUpdate({ curveOffset: normalizeWallCurveOffset(node, value) }), precision: 2, step: 0.1, unit: "m", value: curveOffset }), _jsx("button", { type: "button", className: "rounded border px-2 py-1 text-xs", onClick: () => {
|
|
85
|
+
const arc = getWallArcData(node);
|
|
86
|
+
const spans = arc ? 4 : 1;
|
|
87
|
+
const handleLength = arc
|
|
88
|
+
? (4 / 3) * arc.radius * Math.tan(Math.abs(arc.delta) / spans / 4)
|
|
89
|
+
: getWallCurveLength(node) / 3;
|
|
90
|
+
const frames = Array.from({ length: spans + 1 }, (_, i) => getWallCurveFrameAt(node, i / spans));
|
|
91
|
+
onUpdate({
|
|
92
|
+
path: frames.map((frame) => [frame.point.x, frame.point.y]),
|
|
93
|
+
spanModes: Array.from({ length: spans }, () => arc ? 'curve' : 'straight'),
|
|
94
|
+
tangents: frames.map((frame) => [
|
|
95
|
+
frame.tangent.x * handleLength,
|
|
96
|
+
frame.tangent.y * handleLength,
|
|
97
|
+
]),
|
|
98
|
+
curveOffset: undefined,
|
|
99
|
+
});
|
|
100
|
+
}, children: "Edit path" })] }));
|
|
101
|
+
}
|
|
102
|
+
export function FencePathEditor({ node, onUpdate, }) {
|
|
103
|
+
const path = node.path ?? [];
|
|
104
|
+
const tangents = path.map((_, i) => node.tangents?.[i] ?? null);
|
|
105
|
+
const spanModes = path
|
|
106
|
+
.slice(1)
|
|
107
|
+
.map((_, i) => getFenceSpanMode(path, node.tangents, node.spanModes, i));
|
|
108
|
+
const update = (points, handles = tangents, modes = spanModes) => {
|
|
109
|
+
if (points.length < 2)
|
|
110
|
+
return;
|
|
111
|
+
onUpdate({
|
|
112
|
+
path: points,
|
|
113
|
+
tangents: handles,
|
|
114
|
+
spanModes: modes,
|
|
115
|
+
start: points[0],
|
|
116
|
+
end: points.at(-1),
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
return (_jsxs("div", { className: "space-y-2 text-xs", children: [_jsxs("p", { children: [path.length, " points \u00B7 ", getFenceCenterlineLength(node).toFixed(2), " m"] }), _jsx("p", { className: "text-muted-foreground", children: "Set each span to straight or curved, then drag its points and curve handles in either view." }), path.map((point, index) => (_jsxs("details", { className: "rounded border p-2", children: [_jsxs("summary", { className: "cursor-pointer", children: ["Point ", index + 1] }), _jsx("div", { className: "mt-2 flex gap-2", children: ['X', 'Z'].map((axis, coordinate) => (_jsxs("label", { className: "min-w-0 flex-1", children: [axis, " (m)", _jsx("input", { type: "number", step: "0.05", className: "w-full rounded border bg-transparent p-1", defaultValue: point[coordinate], onBlur: (event) => {
|
|
120
|
+
const value = event.currentTarget.valueAsNumber;
|
|
121
|
+
if (!Number.isFinite(value) || value === point[coordinate])
|
|
122
|
+
return;
|
|
123
|
+
update(path.map((p, i) => i === index ? (coordinate === 0 ? [value, p[1]] : [p[0], value]) : p));
|
|
124
|
+
} }, `${index}-${axis}-${point[coordinate]}`)] }, axis))) }), index < path.length - 1 && (_jsxs("label", { className: "mt-2 flex items-center justify-between", children: ["Span to point ", index + 2, _jsxs("select", { className: "rounded border bg-background p-1", value: spanModes[index], onChange: (event) => {
|
|
125
|
+
const modes = [...spanModes];
|
|
126
|
+
modes[index] = event.target.value;
|
|
127
|
+
const handles = path.length === 2 && modes[index] === 'curve' && spanModes[index] === 'straight'
|
|
128
|
+
? (getTwoPointFenceCurveTangents(path) ?? tangents)
|
|
129
|
+
: tangents;
|
|
130
|
+
update(path, handles, modes);
|
|
131
|
+
}, children: [_jsx("option", { value: "straight", children: "Straight" }), _jsx("option", { value: "curve", children: "Curved" })] })] })), (spanModes[index - 1] === 'curve' || spanModes[index] === 'curve') && (_jsxs("label", { className: "mt-2 flex items-center justify-between", children: ["Join", _jsxs("select", { className: "rounded border bg-background p-1", value: tangents[index]?.[0] === 0 && tangents[index]?.[1] === 0 ? 'corner' : 'smooth', onChange: (event) => {
|
|
132
|
+
const handles = [...tangents];
|
|
133
|
+
handles[index] = event.target.value === 'corner' ? [0, 0] : null;
|
|
134
|
+
update(path, handles);
|
|
135
|
+
}, children: [_jsx("option", { value: "smooth", children: "Smooth" }), _jsx("option", { value: "corner", children: "Corner" })] })] })), _jsxs("div", { className: "mt-2 flex gap-2", children: [index < path.length - 1 && (_jsx("button", { type: "button", className: "rounded border px-2 py-1", onClick: () => {
|
|
136
|
+
const a = getFenceControlHandle(path, node.tangents, index);
|
|
137
|
+
const b = getFenceControlHandle(path, node.tangents, index + 1);
|
|
138
|
+
const samples = sampleFenceSpline([point, path[index + 1]], [
|
|
139
|
+
[a.x, a.y],
|
|
140
|
+
[b.x, b.y],
|
|
141
|
+
], 2, [spanModes[index]]);
|
|
142
|
+
const midpoint = samples[1];
|
|
143
|
+
const points = [...path];
|
|
144
|
+
points.splice(index + 1, 0, [midpoint.x, midpoint.y]);
|
|
145
|
+
const handles = [...tangents];
|
|
146
|
+
handles.splice(index + 1, 0, null);
|
|
147
|
+
const modes = [...spanModes];
|
|
148
|
+
modes.splice(index, 1, spanModes[index], spanModes[index]);
|
|
149
|
+
update(points, handles, modes);
|
|
150
|
+
}, children: "Add point after" })), index === path.length - 1 && (_jsx("button", { type: "button", className: "rounded border px-2 py-1", onClick: () => {
|
|
151
|
+
const previous = path[index - 1];
|
|
152
|
+
update([
|
|
153
|
+
...path,
|
|
154
|
+
[point[0] + point[0] - previous[0], point[1] + point[1] - previous[1]],
|
|
155
|
+
], [...tangents, null], [...spanModes, 'straight']);
|
|
156
|
+
}, children: "Extend path" })), _jsx("button", { type: "button", className: "rounded border px-2 py-1 disabled:opacity-40", disabled: path.length <= 2, onClick: () => {
|
|
157
|
+
const modes = [...spanModes];
|
|
158
|
+
if (index === 0)
|
|
159
|
+
modes.shift();
|
|
160
|
+
else if (index === path.length - 1)
|
|
161
|
+
modes.pop();
|
|
162
|
+
else
|
|
163
|
+
modes.splice(index - 1, 2, spanModes[index - 1] === 'straight' && spanModes[index] === 'straight'
|
|
164
|
+
? 'straight'
|
|
165
|
+
: 'curve');
|
|
166
|
+
update(path.filter((_, i) => i !== index), tangents.filter((_, i) => i !== index), modes);
|
|
167
|
+
}, children: "Remove point" })] })] }, `curve-editor-${index}`)))] }));
|
|
43
168
|
}
|
package/dist/fence/lift.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lift.d.ts","sourceRoot":"","sources":["../../src/fence/lift.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"lift.d.ts","sourceRoot":"","sources":["../../src/fence/lift.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAOb,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,GAAG,eAAe,GAAG,UAAU,CAAC,EACrE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,EAC5C,SAAS,SAAI,GACZ,MAAM,CAQR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,GAAG,UAAU,CAAC,EACtF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAWR"}
|
package/dist/fence/lift.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { findLevelAncestorId, levelBaseElevationAt, } from '@pascal-app/core';
|
|
1
|
+
import { findLevelAncestorId, floorConstructionLift, levelBaseElevationAt, liftedManualSlab, } from '@pascal-app/core';
|
|
2
2
|
/**
|
|
3
3
|
* Elevation (meters above the level plane) a hosted fence stands at.
|
|
4
4
|
*
|
|
@@ -47,5 +47,8 @@ export function resolveFenceLiftElevation(node, resolve, levelBase = 0) {
|
|
|
47
47
|
export function resolveFenceLiftElevationForNodes(node, nodes) {
|
|
48
48
|
const levelId = findLevelAncestorId(node.id, nodes);
|
|
49
49
|
const levelBase = levelId ? levelBaseElevationAt(nodes, levelId, node.start[0], node.start[1]) : 0;
|
|
50
|
-
return resolveFenceLiftElevation(node, (id) =>
|
|
50
|
+
return resolveFenceLiftElevation(node, (id) => {
|
|
51
|
+
const host = nodes[id];
|
|
52
|
+
return host?.type === 'slab' ? liftedManualSlab(nodes, host) : host;
|
|
53
|
+
}, levelBase + (nodes[node.id] ? floorConstructionLift(nodes, nodes[node.id]) : 0));
|
|
51
54
|
}
|
package/dist/fence/move-tool.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { constrainWallMoveDeltaToAxis, emitter, getPerpendicularWallMoveAxis, isCurvedWall, isSplineFence, resolveFenceSupportSlabPatch, useLiveNodeOverrides, useScene, } from '@pascal-app/core';
|
|
4
|
-
import { CursorSphere, consumePlacementDragRelease, getSegmentGridStep, isGridSnapActive, isMagneticSnapActive, markToolCancelConsumed,
|
|
4
|
+
import { CursorSphere, consumePlacementDragRelease, getSegmentGridStep, isGridSnapActive, isMagneticSnapActive, markToolCancelConsumed, triggerSFX, useEditor, } from '@pascal-app/editor';
|
|
5
5
|
import { useViewer } from '@pascal-app/viewer';
|
|
6
6
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
7
|
+
import { snapFenceDraftPoint } from './drafting';
|
|
7
8
|
/**
|
|
8
9
|
* Phase 5 Stage D — fence whole-move tool.
|
|
9
10
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-model.d.ts","sourceRoot":"","sources":["../../src/fence/panel-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGxD,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,SAAS,CAUrD,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { beginFenceFeaturePlacement } from './features';
|
|
2
|
+
export const fencePanelModel = {
|
|
3
|
+
rows() {
|
|
4
|
+
return ['gate', 'opening'].map((kind) => ({
|
|
5
|
+
id: `add-${kind}`,
|
|
6
|
+
kind: 'action',
|
|
7
|
+
section: 'Gates & openings',
|
|
8
|
+
label: kind === 'gate' ? 'Add Gate' : 'Add Opening',
|
|
9
|
+
onSelect: () => beginFenceFeaturePlacement(kind),
|
|
10
|
+
}));
|
|
11
|
+
},
|
|
12
|
+
};
|
|
@@ -1,16 +1,4 @@
|
|
|
1
1
|
import { type ParametricDescriptor } from '@pascal-app/core';
|
|
2
2
|
import type { FenceNode } from './schema';
|
|
3
|
-
/**
|
|
4
|
-
* Inspector descriptor for fence. Mirrors the legacy `FencePanel`
|
|
5
|
-
* layout 1:1:
|
|
6
|
-
* - **Style** (segmented controls): style, baseStyle, showInfill toggle.
|
|
7
|
-
* - **Dimensions**: Length (derived from start/end), Curve (sagitta
|
|
8
|
-
* with dynamic bounds), Height, Thickness.
|
|
9
|
-
* - **Structure**: Base Height, Top Rail, Post Spacing, Post Size,
|
|
10
|
-
* Post Cap + Slat Gap (horizontal-only), Ground Clear, Edge Inset.
|
|
11
|
-
*
|
|
12
|
-
* Length + Curve use the `custom` field kind because they don't map
|
|
13
|
-
* to single number fields with static bounds — see `inspector-editors.tsx`.
|
|
14
|
-
*/
|
|
15
3
|
export declare const fenceParametrics: ParametricDescriptor<FenceNode>;
|
|
16
4
|
//# sourceMappingURL=parametrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parametrics.d.ts","sourceRoot":"","sources":["../../src/fence/parametrics.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"parametrics.d.ts","sourceRoot":"","sources":["../../src/fence/parametrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAA;AASzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,eAAO,MAAM,gBAAgB,EAAE,oBAAoB,CAAC,SAAS,CA4P5D,CAAA"}
|