@pascal-app/nodes 1.0.3 → 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 +18 -3
- 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.map +1 -1
- package/dist/block/hosted-edit.js +25 -0
- 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/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 +2 -2
- package/dist/box-vent/definition.d.ts.map +1 -1
- package/dist/box-vent/definition.js +2 -5
- package/dist/box-vent/panel.d.ts.map +1 -1
- package/dist/box-vent/panel.js +5 -28
- 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 +1 -2
- 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/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/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +22 -24
- 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 +15 -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 +41 -5
- 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 +24 -2
- package/dist/column/floorplan-affordances.d.ts.map +1 -1
- package/dist/column/floorplan-affordances.js +5 -0
- package/dist/column/floorplan.d.ts +1 -1
- package/dist/column/floorplan.d.ts.map +1 -1
- package/dist/column/floorplan.js +47 -2
- package/dist/column/hosted-resize.d.ts +101 -2
- package/dist/column/hosted-resize.d.ts.map +1 -1
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +147 -146
- package/dist/column/renderer.d.ts.map +1 -1
- package/dist/column/renderer.js +6 -4
- package/dist/column/surface.d.ts.map +1 -1
- package/dist/column/surface.js +7 -0
- package/dist/construction-dimension/floorplan.js +7 -3
- package/dist/cupola/definition.d.ts.map +1 -1
- package/dist/cupola/definition.js +2 -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 +12 -3
- package/dist/door/door-math.d.ts +5 -10
- package/dist/door/door-math.d.ts.map +1 -1
- package/dist/door/door-math.js +14 -15
- 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 +72 -48
- 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 +34 -259
- 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 +92 -21
- package/dist/dormer/csg-geometry.d.ts.map +1 -1
- package/dist/dormer/csg-geometry.js +2 -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 +2 -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/elevator/definition.d.ts.map +1 -1
- package/dist/elevator/definition.js +1 -2
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +5 -27
- package/dist/elevator/parametrics.js +1 -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 +2 -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 +83 -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 +256 -47
- 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/gutter/definition.d.ts.map +1 -1
- package/dist/gutter/definition.js +2 -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 +33 -4
- package/dist/item/floorplan.d.ts +1 -1
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +35 -5
- 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.js +4 -4
- 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 +64 -38
- 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/lineset/move-tool.d.ts.map +1 -1
- package/dist/lineset/move-tool.js +8 -2
- package/dist/liquid-line/move-tool.d.ts.map +1 -1
- package/dist/liquid-line/move-tool.js +8 -2
- package/dist/measurement/definition.js +1 -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/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 +74 -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/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 +4 -1
- 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.map +1 -1
- package/dist/roof/panel-model.js +10 -6
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +3 -10
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/renderer.js +5 -2
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +5 -24
- package/dist/roof-segment/renderer.d.ts.map +1 -1
- package/dist/roof-segment/renderer.js +17 -8
- 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/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/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-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/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/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-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 +3 -10
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +3 -63
- 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 +1 -1
- 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 +150 -19
- 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/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 +19 -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/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 +16 -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 +32 -15
- 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 +51 -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 +21 -8
- 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 +2 -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.map +1 -1
- package/dist/wall/actions.js +7 -2
- package/dist/wall/construction-dimensions.js +8 -5
- package/dist/wall/contextual-dimensions.js +4 -4
- package/dist/wall/curtain-wall-materials.d.ts +1 -1
- package/dist/wall/curtain-wall-materials.d.ts.map +1 -1
- package/dist/wall/curtain-wall-materials.js +2 -2
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +4 -0
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +41 -17
- 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.map +1 -1
- package/dist/wall/floorplan-tool.js +10 -11
- package/dist/wall/floorplan.d.ts +3 -1
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +184 -21
- 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 +118 -148
- package/dist/wall/paint.d.ts +26 -15
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +306 -117
- package/dist/wall/panel-model.d.ts +18 -0
- package/dist/wall/panel-model.d.ts.map +1 -1
- package/dist/wall/panel-model.js +77 -19
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +217 -41
- package/dist/wall/parametrics.d.ts.map +1 -1
- package/dist/wall/parametrics.js +3 -0
- package/dist/wall/rectangle-command.d.ts +111 -12
- package/dist/wall/rectangle-command.d.ts.map +1 -1
- package/dist/wall/rectangle-tool.d.ts.map +1 -1
- package/dist/wall/rectangle-tool.js +26 -8
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +4 -2
- package/dist/wall/split-floorplan-layer.d.ts.map +1 -1
- package/dist/wall/split-floorplan-layer.js +7 -7
- package/dist/wall/split-session.d.ts.map +1 -1
- package/dist/wall/split-session.js +7 -1
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +36 -4
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +105 -49
- 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 +35 -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 +12 -4
- 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 +79 -48
- 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 +32 -88
- 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 +96 -24
- 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 +14 -20
- 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 +3 -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 +3 -14
- 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 +11 -11
- 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/item/__fixtures__/main-floorplan.d.ts +0 -26
- package/dist/item/__fixtures__/main-floorplan.d.ts.map +0 -1
- package/dist/item/__fixtures__/main-floorplan.js +0 -297
- 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/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/drawing-mode.d.ts +0 -12
- package/dist/wall/drawing-mode.d.ts.map +0 -1
- package/dist/wall/drawing-mode.js +0 -38
- package/dist/wall/slots.d.ts +0 -10
- package/dist/wall/slots.d.ts.map +0 -1
- package/dist/wall/slots.js +0 -92
- package/dist/window/slots.d.ts +0 -5
- package/dist/window/slots.d.ts.map +0 -1
- package/dist/window/slots.js +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-shared.d.ts","sourceRoot":"","sources":["../../src/wall/move-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"move-shared.d.ts","sourceRoot":"","sources":["../../src/wall/move-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAMd,QAAQ,EACR,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,aAAa,EAEnB,MAAM,kBAAkB,CAAA;AAczB,wBAAgB,SAAS,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,WAE3D;AAMD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAQvF;AAED,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAA;AAEzC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,aAAa,CAAA;IAC5B,WAAW,EAAE,aAAa,CAAA;CAC3B,GAAG,kBAAkB,EAAE,CA2CvB;AA8BD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,UAiB/C;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EACpD,OAAO,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC,GACzD,QAAQ,EAAE,CASZ;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAC1D,SAAS,EAAE,aAAa,CAAA;IACxB,OAAO,EAAE,aAAa,CAAA;IACtB,aAAa,EAAE,QAAQ,EAAE,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAoClD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,aAAa,CAAA;IACpB,GAAG,EAAE,aAAa,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAC1D,SAAS,EAAE,aAAa,CAAA;IACxB,OAAO,EAAE,aAAa,CAAA;IACtB,aAAa,EAAE,QAAQ,EAAE,CAAA;CAC1B,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAyCrD"}
|
package/dist/wall/move-shared.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getMaterialPresetByRef, parseMaterialRef, resolveMaterial, useScene, WallNode as WallSchema, } from '@pascal-app/core';
|
|
1
|
+
import { getMaterialPresetByRef, parseMaterialColor, parseMaterialRef, resolveMaterial, useScene, WallNode as WallSchema, } from '@pascal-app/core';
|
|
2
2
|
import { isSegmentLongEnough } from '@pascal-app/editor';
|
|
3
3
|
import { resolveWallOpeningCeiling } from '../shared/wall-opening-ceiling';
|
|
4
4
|
/**
|
|
@@ -66,9 +66,12 @@ function wallSegmentExists(walls, start, end, parentId) {
|
|
|
66
66
|
((samePoint(wall.start, start) && samePoint(wall.end, end)) ||
|
|
67
67
|
(samePoint(wall.start, end) && samePoint(wall.end, start))));
|
|
68
68
|
}
|
|
69
|
-
// Resolve a wall slot ref (`library:`/`scene:`) to a swatch colour,
|
|
70
|
-
// undefined when the ref is absent / dangling / colourless.
|
|
69
|
+
// Resolve a wall slot ref (`library:`/`scene:`) or colour to a swatch colour,
|
|
70
|
+
// or undefined when the ref is absent / dangling / colourless.
|
|
71
71
|
function resolveWallSlotRefColor(ref) {
|
|
72
|
+
const color = parseMaterialColor(ref);
|
|
73
|
+
if (color)
|
|
74
|
+
return color;
|
|
72
75
|
const parsed = parseMaterialRef(ref);
|
|
73
76
|
if (!parsed)
|
|
74
77
|
return undefined;
|
|
@@ -79,17 +82,18 @@ function resolveWallSlotRefColor(ref) {
|
|
|
79
82
|
return sceneMaterial ? resolveMaterial(sceneMaterial.material).color : undefined;
|
|
80
83
|
}
|
|
81
84
|
export function getWallGhostColor(wall) {
|
|
82
|
-
const slotColor = resolveWallSlotRefColor(wall.slots?.
|
|
85
|
+
const slotColor = resolveWallSlotRefColor(wall.slots?.a) ?? resolveWallSlotRefColor(wall.slots?.b);
|
|
83
86
|
if (slotColor) {
|
|
84
87
|
return slotColor;
|
|
85
88
|
}
|
|
89
|
+
const legacy = wall.legacyFaceMaterials;
|
|
86
90
|
const presetColor = getMaterialPresetByRef(wall.materialPreset)?.mapProperties.color ??
|
|
87
|
-
getMaterialPresetByRef(
|
|
88
|
-
getMaterialPresetByRef(
|
|
91
|
+
getMaterialPresetByRef(legacy?.a?.materialPreset)?.mapProperties.color ??
|
|
92
|
+
getMaterialPresetByRef(legacy?.b?.materialPreset)?.mapProperties.color;
|
|
89
93
|
if (presetColor) {
|
|
90
94
|
return presetColor;
|
|
91
95
|
}
|
|
92
|
-
return resolveMaterial(wall.material ??
|
|
96
|
+
return resolveMaterial(wall.material ?? legacy?.a?.material ?? legacy?.b?.material).color;
|
|
93
97
|
}
|
|
94
98
|
export function getWallsAfterUpdates(nodes, updates) {
|
|
95
99
|
const updateById = new Map(updates.map((update) => [update.id, update.data]));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/wall/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/wall/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAgBL,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AA0HzB,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CA+hBrD,CAAA;AAED,eAAe,YAAY,CAAA"}
|
package/dist/wall/move-tool.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
4
|
-
import { CursorSphere, EDITOR_LAYER, getSegmentGridStep, isSegmentLongEnough, markToolCancelConsumed, snapBuildingLocalToWorldGrid, snapScalarToGrid, triggerSFX, useEditor, } from '@pascal-app/editor';
|
|
3
|
+
import { beginSceneHistoryPauseSession, createLevelStructurePreview, emitter, getPerpendicularWallMoveAxis, getPlannedLinkedWallUpdates, planWallEndRejoins, planWallMoveJunctions, resolveMovedWallSupportSlabPatch, useLiveNodeOverrides, useScene, } from '@pascal-app/core';
|
|
4
|
+
import { CursorSphere, EDITOR_LAYER, getSegmentGridStep, isSegmentLongEnough, markToolCancelConsumed, snapBuildingLocalToWorldGrid, snapScalarToGrid, triggerSFX, useEditor, WALL_CONNECT_SNAP_RADIUS, } from '@pascal-app/editor';
|
|
5
5
|
import { useViewer } from '@pascal-app/viewer';
|
|
6
6
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
7
7
|
import { BufferGeometry, DoubleSide, Float32BufferAttribute } from 'three';
|
|
@@ -18,11 +18,11 @@ import { buildBridgeWallCreates, buildBridgeWallPreviews, getLinkedWallSnapshots
|
|
|
18
18
|
* move with the dragged wall via `planWallMoveJunctions`.
|
|
19
19
|
* - **Bridge wall ghost previews** — when a corner separates, a
|
|
20
20
|
* translucent ghost shows the new wall that would be inserted.
|
|
21
|
-
* - **Auto-slab live preview** —
|
|
22
|
-
* tick so room slabs adapt to the new wall layout
|
|
23
|
-
* - **
|
|
24
|
-
*
|
|
25
|
-
*
|
|
21
|
+
* - **Auto-slab live preview** — the structure kernel previews the level's
|
|
22
|
+
* rooms every tick, so room slabs adapt to the new wall layout live.
|
|
23
|
+
* - **One undo step** — the drag writes no history; the drop writes walls,
|
|
24
|
+
* supports and the sync's derived rooms as one step, through a pause
|
|
25
|
+
* session shared with the 2D move overlay (`commitStep`).
|
|
26
26
|
* - **`isNew` metadata strip** — first commit after a fresh wall
|
|
27
27
|
* placement clears the placement marker.
|
|
28
28
|
* - **Activation grace** (150ms).
|
|
@@ -34,12 +34,6 @@ function rotateVector([x, z], angle) {
|
|
|
34
34
|
const sin = Math.sin(angle);
|
|
35
35
|
return [x * cos - z * sin, x * sin + z * cos];
|
|
36
36
|
}
|
|
37
|
-
function getLevelSlabs(levelId, nodes) {
|
|
38
|
-
return Object.values(nodes).filter((entry) => entry?.type === 'slab' && (entry.parentId ?? null) === levelId);
|
|
39
|
-
}
|
|
40
|
-
function getLevelCeilings(levelId, nodes) {
|
|
41
|
-
return Object.values(nodes).filter((entry) => entry?.type === 'ceiling' && (entry.parentId ?? null) === levelId);
|
|
42
|
-
}
|
|
43
37
|
function setPreviewGeometryAttributes(geometry, positions, normals, uvs) {
|
|
44
38
|
geometry.setAttribute('position', new Float32BufferAttribute(positions, 3));
|
|
45
39
|
geometry.setAttribute('normal', new Float32BufferAttribute(normals, 3));
|
|
@@ -58,9 +52,7 @@ function GhostWallPreviewMesh({ preview }) {
|
|
|
58
52
|
const dz = preview.end[1] - preview.start[1];
|
|
59
53
|
const length = Math.hypot(dx, dz);
|
|
60
54
|
const angle = -Math.atan2(dz, dx);
|
|
61
|
-
const geometry = useMemo(() =>
|
|
62
|
-
return length < 0.01 ? null : createWallPreviewGeometry(length, preview.height);
|
|
63
|
-
}, [length, preview.height]);
|
|
55
|
+
const geometry = useMemo(() => (length < 0.01 ? null : createWallPreviewGeometry(length, preview.height)), [length, preview.height]);
|
|
64
56
|
useEffect(() => () => geometry?.dispose(), [geometry]);
|
|
65
57
|
if (!geometry) {
|
|
66
58
|
return null;
|
|
@@ -119,7 +111,6 @@ export const MoveWallTool = ({ node }) => {
|
|
|
119
111
|
const originalCenter = originalCenterRef.current;
|
|
120
112
|
const originalHalfVector = originalHalfVectorRef.current;
|
|
121
113
|
const levelId = node.parentId ?? null;
|
|
122
|
-
pauseSceneHistory(useScene);
|
|
123
114
|
let shouldRestoreOnCleanup = true;
|
|
124
115
|
let active = true;
|
|
125
116
|
// Wall ids that currently carry a live position override. Cleared on commit
|
|
@@ -136,71 +127,74 @@ export const MoveWallTool = ({ node }) => {
|
|
|
136
127
|
// the final plan is written once, atomically, on commit.
|
|
137
128
|
const overrides = useLiveNodeOverrides.getState();
|
|
138
129
|
const sceneState = useScene.getState();
|
|
130
|
+
const previewIds = new Set(updates.map((entry) => entry.id));
|
|
131
|
+
for (const id of touchedWallIds) {
|
|
132
|
+
if (previewIds.has(id))
|
|
133
|
+
continue;
|
|
134
|
+
overrides.clear(id);
|
|
135
|
+
if (sceneState.nodes[id])
|
|
136
|
+
sceneState.markDirty(id);
|
|
137
|
+
touchedWallIds.delete(id);
|
|
138
|
+
}
|
|
139
139
|
overrides.setMany(updates.map((entry) => [entry.id, { start: entry.start, end: entry.end }]));
|
|
140
140
|
for (const entry of updates) {
|
|
141
141
|
touchedWallIds.add(entry.id);
|
|
142
142
|
sceneState.markDirty(entry.id);
|
|
143
143
|
}
|
|
144
144
|
};
|
|
145
|
-
// Live auto-slab / auto-ceiling preview
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
//
|
|
151
|
-
// the
|
|
152
|
-
//
|
|
153
|
-
//
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
145
|
+
// Live auto-slab / auto-ceiling preview: the structure kernel's plan for the
|
|
146
|
+
// moved walls, published as polygon overrides so `GeometrySystem` /
|
|
147
|
+
// `CeilingSystem` rebuild through the `getEffectiveNode` merge while the
|
|
148
|
+
// store stays at pre-drag values. Surfaces a new, merged or split room
|
|
149
|
+
// needs appear at commit.
|
|
150
|
+
// The drag writes nothing to the store, so a new `nodes` reference means someone else
|
|
151
|
+
// changed the scene (a collaborator, an agent). Linked walls and the structure preview
|
|
152
|
+
// are read again from it: the drop must commit a linked wall's other end as it is now,
|
|
153
|
+
// and pick up a newly connected wall the same way the arm-time read would have.
|
|
154
|
+
const levelNodesOf = (nodes) => Object.fromEntries(Object.values(nodes)
|
|
155
|
+
.filter((entry) => entry.parentId === levelId)
|
|
156
|
+
.map((entry) => [entry.id, entry]));
|
|
157
|
+
let linkedNodes = useScene.getState().nodes;
|
|
158
|
+
let previewStructure = levelId ? createLevelStructurePreview(levelId, linkedNodes) : null;
|
|
159
|
+
let dragNodes = levelNodesOf(linkedNodes);
|
|
160
|
+
const refreshLinkedWalls = () => {
|
|
161
|
+
const nodes = useScene.getState().nodes;
|
|
162
|
+
if (nodes === linkedNodes)
|
|
163
|
+
return;
|
|
164
|
+
linkedNodes = nodes;
|
|
165
|
+
previewStructure = levelId ? createLevelStructurePreview(levelId, nodes) : null;
|
|
166
|
+
dragNodes = levelNodesOf(nodes);
|
|
167
|
+
if (isNew)
|
|
168
|
+
return;
|
|
169
|
+
linkedOriginalsRef.current = getLinkedWallSnapshots({
|
|
170
|
+
wallId: nodeId,
|
|
171
|
+
wallParentId: node.parentId ?? null,
|
|
172
|
+
originalStart,
|
|
173
|
+
originalEnd,
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
const touchedStructureIds = new Set();
|
|
173
177
|
const publishLiveSurfaceOverrides = (walls) => {
|
|
174
|
-
if (!levelId)
|
|
178
|
+
if (!(levelId && previewStructure))
|
|
175
179
|
return;
|
|
176
180
|
const levelWalls = walls.filter((wall) => (wall.parentId ?? null) === levelId);
|
|
177
181
|
const sceneState = useScene.getState();
|
|
178
|
-
const
|
|
179
|
-
// Plan against the pre-drag scene — `getLevelSlabs/Ceilings`
|
|
180
|
-
// reads from the unchanged store, so the matcher's "remap
|
|
181
|
-
// existing room → existing slab" logic sees stable IDs across
|
|
182
|
-
// ticks. Without this anchor, IDs would drift as overrides
|
|
183
|
-
// re-flowed through the planner.
|
|
184
|
-
const existingSlabs = getLevelSlabs(levelId, sceneState.nodes);
|
|
185
|
-
const slabPlan = planAutoSlabsForLevel(roomPolygons, existingSlabs);
|
|
186
|
-
const levelNode = sceneState.nodes[levelId];
|
|
187
|
-
const ceilingPlan = planAutoCeilingsForLevel(roomPolygons, getLevelCeilings(levelId, sceneState.nodes), {
|
|
188
|
-
storeyHeight: levelNode?.type === 'level' ? getStoredLevelHeight(levelNode) : undefined,
|
|
189
|
-
ceilingClampBound: (polygon) => getCeilingClampBound(levelId, sceneState.nodes, polygon),
|
|
190
|
-
});
|
|
191
|
-
latestSurfacePlans = { slabs: slabPlan, ceilings: ceilingPlan };
|
|
182
|
+
const structurePlan = previewStructure(levelWalls);
|
|
192
183
|
const overrideEntries = [];
|
|
193
|
-
for (const update of
|
|
194
|
-
if (update.data
|
|
184
|
+
for (const update of structurePlan) {
|
|
185
|
+
if (!('polygon' in update.data || 'holes' in update.data))
|
|
195
186
|
continue;
|
|
196
|
-
overrideEntries.push([update.id,
|
|
197
|
-
|
|
187
|
+
overrideEntries.push([update.id, update.data]);
|
|
188
|
+
touchedStructureIds.add(update.id);
|
|
198
189
|
}
|
|
199
|
-
|
|
200
|
-
|
|
190
|
+
const previewIds = new Set(overrideEntries.map(([id]) => id));
|
|
191
|
+
for (const id of touchedStructureIds) {
|
|
192
|
+
if (previewIds.has(id))
|
|
201
193
|
continue;
|
|
202
|
-
|
|
203
|
-
|
|
194
|
+
useLiveNodeOverrides.getState().clear(id);
|
|
195
|
+
if (sceneState.nodes[id])
|
|
196
|
+
sceneState.markDirty(id);
|
|
197
|
+
touchedStructureIds.delete(id);
|
|
204
198
|
}
|
|
205
199
|
if (overrideEntries.length > 0) {
|
|
206
200
|
useLiveNodeOverrides.getState().setMany(overrideEntries);
|
|
@@ -209,56 +203,16 @@ export const MoveWallTool = ({ node }) => {
|
|
|
209
203
|
}
|
|
210
204
|
}
|
|
211
205
|
};
|
|
212
|
-
// Commit-time: flush the last live plan into the scene store as
|
|
213
|
-
// one atomic write, then drop overrides so the renderer reads
|
|
214
|
-
// from the now-current store state. Called from `commitPreview`
|
|
215
|
-
// *while history is resumed*, so the entire surface delta is one
|
|
216
|
-
// undoable step alongside the wall update.
|
|
217
|
-
const commitSurfacesToStore = () => {
|
|
218
|
-
if (!levelId || !latestSurfacePlans)
|
|
219
|
-
return;
|
|
220
|
-
const { slabs, ceilings } = latestSurfacePlans;
|
|
221
|
-
const update = [
|
|
222
|
-
...slabs.update.map((entry) => ({
|
|
223
|
-
id: entry.id,
|
|
224
|
-
data: entry.data,
|
|
225
|
-
})),
|
|
226
|
-
...ceilings.update.map((entry) => ({
|
|
227
|
-
id: entry.id,
|
|
228
|
-
data: entry.data,
|
|
229
|
-
})),
|
|
230
|
-
];
|
|
231
|
-
const create = [
|
|
232
|
-
...slabs.create.map((slab) => ({
|
|
233
|
-
node: slab,
|
|
234
|
-
parentId: levelId,
|
|
235
|
-
})),
|
|
236
|
-
...ceilings.create.map((ceiling) => ({
|
|
237
|
-
node: ceiling,
|
|
238
|
-
parentId: levelId,
|
|
239
|
-
})),
|
|
240
|
-
];
|
|
241
|
-
const deleteIds = [
|
|
242
|
-
...slabs.delete.map((id) => id),
|
|
243
|
-
...ceilings.delete.map((id) => id),
|
|
244
|
-
];
|
|
245
|
-
if (update.length === 0 && create.length === 0 && deleteIds.length === 0)
|
|
246
|
-
return;
|
|
247
|
-
useScene.getState().applyNodeChanges({
|
|
248
|
-
update,
|
|
249
|
-
create,
|
|
250
|
-
delete: deleteIds,
|
|
251
|
-
});
|
|
252
|
-
};
|
|
253
206
|
const clearSurfaceOverrides = () => {
|
|
254
207
|
const overrides = useLiveNodeOverrides.getState();
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
for (const id of touchedCeilingIds)
|
|
208
|
+
const sceneState = useScene.getState();
|
|
209
|
+
for (const id of touchedStructureIds) {
|
|
258
210
|
overrides.clear(id);
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
211
|
+
// A surface the commit deleted (rooms merged) has nothing left to rebuild.
|
|
212
|
+
if (sceneState.nodes[id])
|
|
213
|
+
sceneState.markDirty(id);
|
|
214
|
+
}
|
|
215
|
+
touchedStructureIds.clear();
|
|
262
216
|
};
|
|
263
217
|
// Drop the wall position overrides and mark the walls dirty so they rebuild
|
|
264
218
|
// from the now-authoritative store value (after commit) or the unchanged
|
|
@@ -268,7 +222,8 @@ export const MoveWallTool = ({ node }) => {
|
|
|
268
222
|
const sceneState = useScene.getState();
|
|
269
223
|
for (const id of touchedWallIds) {
|
|
270
224
|
overrides.clear(id);
|
|
271
|
-
sceneState.
|
|
225
|
+
if (sceneState.nodes[id])
|
|
226
|
+
sceneState.markDirty(id);
|
|
272
227
|
}
|
|
273
228
|
touchedWallIds.clear();
|
|
274
229
|
};
|
|
@@ -286,7 +241,8 @@ export const MoveWallTool = ({ node }) => {
|
|
|
286
241
|
};
|
|
287
242
|
const applyPreview = (nextStart, nextEnd) => {
|
|
288
243
|
const previous = previewRef.current ?? { start: originalStart, end: originalEnd };
|
|
289
|
-
if (
|
|
244
|
+
if (useScene.getState().nodes === linkedNodes &&
|
|
245
|
+
nextStart[0] === previous.start[0] &&
|
|
290
246
|
nextStart[1] === previous.start[1] &&
|
|
291
247
|
nextEnd[0] === previous.end[0] &&
|
|
292
248
|
nextEnd[1] === previous.end[1])
|
|
@@ -296,6 +252,7 @@ export const MoveWallTool = ({ node }) => {
|
|
|
296
252
|
const centerX = (nextStart[0] + nextEnd[0]) / 2;
|
|
297
253
|
const centerZ = (nextStart[1] + nextEnd[1]) / 2;
|
|
298
254
|
setCursorLocalPos([centerX, 0, centerZ]);
|
|
255
|
+
refreshLinkedWalls();
|
|
299
256
|
const previewPlan = getMovePlan(nextStart, nextEnd);
|
|
300
257
|
const previewUpdates = [
|
|
301
258
|
{ id: nodeId, start: nextStart, end: nextEnd },
|
|
@@ -307,7 +264,7 @@ export const MoveWallTool = ({ node }) => {
|
|
|
307
264
|
.map((entry) => entry.id),
|
|
308
265
|
...previewPlan.wallsToDelete.map((wall) => wall.id),
|
|
309
266
|
]);
|
|
310
|
-
const previewSceneWalls = getWallsAfterUpdates(
|
|
267
|
+
const previewSceneWalls = getWallsAfterUpdates(dragNodes, previewUpdates.map((entry) => ({
|
|
311
268
|
id: entry.id,
|
|
312
269
|
data: { start: entry.start, end: entry.end },
|
|
313
270
|
}))).filter((wall) => !previewCollapsedWallIds.has(wall.id));
|
|
@@ -318,10 +275,12 @@ export const MoveWallTool = ({ node }) => {
|
|
|
318
275
|
existingWalls: previewSceneWalls,
|
|
319
276
|
});
|
|
320
277
|
const nextGhostWalls = bridgePreviews.map((preview) => preview.ghost);
|
|
321
|
-
const virtualBridgeWalls = bridgePreviews.map((preview) => preview.wall);
|
|
322
278
|
setGhostWallPreviews(nextGhostWalls);
|
|
323
279
|
applyNodePreview(previewUpdates);
|
|
324
|
-
publishLiveSurfaceOverrides([
|
|
280
|
+
publishLiveSurfaceOverrides([
|
|
281
|
+
...previewSceneWalls,
|
|
282
|
+
...bridgePreviews.map((preview) => preview.wall),
|
|
283
|
+
]);
|
|
325
284
|
};
|
|
326
285
|
const restoreOriginal = () => {
|
|
327
286
|
setGhostWallPreviews([]);
|
|
@@ -400,12 +359,8 @@ export const MoveWallTool = ({ node }) => {
|
|
|
400
359
|
const commitPreview = () => {
|
|
401
360
|
const preview = previewRef.current ?? { start: originalStart, end: originalEnd };
|
|
402
361
|
shouldRestoreOnCleanup = false;
|
|
403
|
-
// The store was never touched during the drag (the preview was
|
|
404
|
-
// override-driven for both walls and surfaces), so there is no baseline to
|
|
405
|
-
// restore before the tracked commit — just resume history and write the
|
|
406
|
-
// final plan as one undoable change.
|
|
407
362
|
setGhostWallPreviews([]);
|
|
408
|
-
|
|
363
|
+
refreshLinkedWalls();
|
|
409
364
|
const commitPlan = getMovePlan(preview.start, preview.end);
|
|
410
365
|
const linkedWallUpdates = getPlannedLinkedWallUpdates(commitPlan, originalStart, originalEnd, preview.start, preview.end);
|
|
411
366
|
const collapsedLinkedWallIds = new Set([
|
|
@@ -441,31 +396,46 @@ export const MoveWallTool = ({ node }) => {
|
|
|
441
396
|
existingWalls,
|
|
442
397
|
wallCount: Object.values(sceneState.nodes).filter((entry) => entry?.type === 'wall').length,
|
|
443
398
|
});
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
399
|
+
// Elect each moved wall's support from its final line (keeping its current
|
|
400
|
+
// slab while that still carries it) and put any change in the same batch,
|
|
401
|
+
// so the live sync reconciles the drop in one pass.
|
|
402
|
+
const withSupport = (wall) => {
|
|
403
|
+
const patch = resolveMovedWallSupportSlabPatch(wall, sceneState.nodes);
|
|
404
|
+
return patch.supportSlabId === wall.supportSlabId ? {} : patch;
|
|
405
|
+
};
|
|
406
|
+
const wallUpdates = commitUpdates.map((entry) => ({
|
|
407
|
+
id: entry.id,
|
|
408
|
+
data: {
|
|
409
|
+
...entry.data,
|
|
410
|
+
...withSupport({ ...sceneState.nodes[entry.id], ...entry.data }),
|
|
411
|
+
},
|
|
412
|
+
}));
|
|
413
|
+
const wallCreates = bridgeCreates.map((entry) => ({
|
|
414
|
+
...entry,
|
|
415
|
+
node: {
|
|
416
|
+
...entry.node,
|
|
417
|
+
...withSupport({ ...entry.node, parentId: entry.parentId ?? null }),
|
|
418
|
+
},
|
|
419
|
+
}));
|
|
420
|
+
// One history step, one write. The live structure sync reconciles sides,
|
|
421
|
+
// rooms, slabs and ceilings inside it, and its derived writes join the step.
|
|
422
|
+
// The drag writes nothing to the store (the preview is live overrides), so history is
|
|
423
|
+
// paused only for this drop. Keyed by the moving wall: in split view the 2D move overlay
|
|
424
|
+
// co-owns the gesture, and commitStep lifts its pause too.
|
|
425
|
+
const changes = planWallEndRejoins(sceneState.nodes, commitUpdates.map(({ id }) => id), WALL_CONNECT_SNAP_RADIUS, {
|
|
426
|
+
update: wallUpdates,
|
|
427
|
+
create: wallCreates,
|
|
447
428
|
delete: Array.from(collapsedLinkedWallIds),
|
|
448
429
|
});
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
...commitUpdates.map((entry) => entry.id),
|
|
457
|
-
...bridgeCreates.map((entry) => entry.node.id),
|
|
458
|
-
];
|
|
459
|
-
const committedNodes = useScene.getState().nodes;
|
|
460
|
-
useScene.getState().updateNodes(affectedWallIds.flatMap((id) => {
|
|
461
|
-
const wall = committedNodes[id];
|
|
462
|
-
return wall?.type === 'wall'
|
|
463
|
-
? [{ id, data: resolveMovedWallSupportSlabPatch(wall, committedNodes) }]
|
|
464
|
-
: [];
|
|
465
|
-
}));
|
|
430
|
+
const drop = beginSceneHistoryPauseSession(useScene, { gesture: nodeId });
|
|
431
|
+
try {
|
|
432
|
+
drop.commitStep(() => useScene.getState().applyNodeChanges(changes));
|
|
433
|
+
}
|
|
434
|
+
finally {
|
|
435
|
+
drop.end();
|
|
436
|
+
}
|
|
466
437
|
clearSurfaceOverrides();
|
|
467
438
|
clearWallOverrides();
|
|
468
|
-
pauseSceneHistory(useScene);
|
|
469
439
|
// Claim teardown ownership so the 2D overlay's cleanup skips its
|
|
470
440
|
// own revert when split-view has both mounted — see
|
|
471
441
|
// `movingNodeOrigin` in `use-editor.tsx`.
|
|
@@ -490,6 +460,8 @@ export const MoveWallTool = ({ node }) => {
|
|
|
490
460
|
commitPreview();
|
|
491
461
|
};
|
|
492
462
|
const onKeyDown = (event) => {
|
|
463
|
+
if (!active)
|
|
464
|
+
return;
|
|
493
465
|
if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {
|
|
494
466
|
return;
|
|
495
467
|
}
|
|
@@ -521,7 +493,6 @@ export const MoveWallTool = ({ node }) => {
|
|
|
521
493
|
shouldRestoreOnCleanup = false;
|
|
522
494
|
restoreOriginal();
|
|
523
495
|
useViewer.getState().setSelection({ selectedIds: [nodeId] });
|
|
524
|
-
resumeSceneHistory(useScene);
|
|
525
496
|
markToolCancelConsumed();
|
|
526
497
|
// Claim teardown ownership so the 2D overlay doesn't redundantly
|
|
527
498
|
// revert the same baseline on its own cleanup.
|
|
@@ -545,7 +516,6 @@ export const MoveWallTool = ({ node }) => {
|
|
|
545
516
|
restoreOriginal();
|
|
546
517
|
}
|
|
547
518
|
}
|
|
548
|
-
resumeSceneHistory(useScene);
|
|
549
519
|
emitter.off('grid:move', onGridMove);
|
|
550
520
|
emitter.off('tool:cancel', onCancel);
|
|
551
521
|
window.removeEventListener('pointerup', onPointerUp);
|
package/dist/wall/paint.d.ts
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import { type PaintCapability, type WallNode } from '@pascal-app/core';
|
|
2
|
-
import { type Ray } from 'three';
|
|
1
|
+
import { type AnyNode, type WallPaintRole as CoreWallPaintRole, type PaintCapability, type WallFace, type WallNode, type WallSurfaceSlotId, wallRegionRole, wallRoomFaceRole, wallRoomFinishRole } from '@pascal-app/core';
|
|
2
|
+
import { type BufferGeometry, type Ray } from 'three';
|
|
3
|
+
type ResolvedWallPaintRole = {
|
|
4
|
+
kind: 'slot';
|
|
5
|
+
slotId: WallSurfaceSlotId | CurtainWallRole;
|
|
6
|
+
} | Exclude<CoreWallPaintRole, {
|
|
7
|
+
kind: 'slot';
|
|
8
|
+
}>;
|
|
9
|
+
declare const CURTAIN_WALL_ROLES: readonly ["curtain-frame", "curtain-glass", "curtain-solid"];
|
|
10
|
+
type CurtainWallRole = (typeof CURTAIN_WALL_ROLES)[number];
|
|
11
|
+
export { wallRegionRole, wallRoomFaceRole, wallRoomFinishRole };
|
|
12
|
+
export declare function parseWallPaintRole(role: string): ResolvedWallPaintRole | null;
|
|
3
13
|
/**
|
|
4
|
-
* Resolve which wall
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* groups aren't conclusive. Front/back of the wall maps to the
|
|
8
|
-
* node's `frontSide` / `backSide` semantic; absent that, front
|
|
9
|
-
* → interior, back → exterior.
|
|
10
|
-
*
|
|
11
|
-
* Returns null when the click is too oblique (or lands on the wall's
|
|
12
|
-
* end-cap, etc.) to confidently assign a side.
|
|
14
|
+
* Resolve which wall surface the user clicked: a trim slot, a paint region,
|
|
15
|
+
* the room finish on that face, or the face slot itself. Returns null when the
|
|
16
|
+
* click is too oblique (or lands on the wall's end-cap, etc.) to pick a face.
|
|
13
17
|
*/
|
|
14
18
|
export declare function resolveWallRole(args: {
|
|
15
19
|
node: WallNode;
|
|
@@ -22,12 +26,19 @@ export declare function resolveWallRole(args: {
|
|
|
22
26
|
normal: readonly [number, number, number] | undefined;
|
|
23
27
|
localPosition: readonly [number, number, number] | undefined;
|
|
24
28
|
ray?: Ray;
|
|
29
|
+
nodes?: Readonly<Record<string, AnyNode | undefined>>;
|
|
25
30
|
}): string | null;
|
|
26
31
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
|
|
32
|
+
* The wall's face triangles regrouped by the material index `indexFor` gives
|
|
33
|
+
* each (the face and station its centre lies at); caps keep theirs. Null when
|
|
34
|
+
* nothing moves.
|
|
35
|
+
*/
|
|
36
|
+
export declare function regroupWallFaces(geometry: BufferGeometry, wall: WallNode, indexFor: (face: WallFace, u: number, v: number) => number | null): BufferGeometry['groups'] | null;
|
|
37
|
+
/**
|
|
38
|
+
* Capability binding for the wall kind on the unified slot model. Face and trim
|
|
39
|
+
* slots write `node.slots[slotId]` like every other kind; regions write the
|
|
40
|
+
* region's finish and room roles write the zone, because a room's wall finish
|
|
41
|
+
* belongs to the room, not to one of its walls.
|
|
31
42
|
*/
|
|
32
43
|
export declare const wallPaint: PaintCapability;
|
|
33
44
|
//# sourceMappingURL=paint.d.ts.map
|
package/dist/wall/paint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/wall/paint.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/wall/paint.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,aAAa,IAAI,iBAAiB,EAMvC,KAAK,eAAe,EAapB,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,kBAAkB,CAAA;AAQzB,OAAO,EACL,KAAK,cAAc,EAInB,KAAK,GAAG,EAGT,MAAM,OAAO,CAAA;AAgBd,KAAK,qBAAqB,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAA;CAAE,GAC7D,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAIhD,QAAA,MAAM,kBAAkB,8DAA+D,CAAA;AACvF,KAAK,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAM1D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAA;AAE/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAK7E;AA6BD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAA;IAC/C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IACrD,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IAC5D,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC,CAAA;CACtD,GAAG,MAAM,GAAG,IAAI,CAsChB;AAqJD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAChE,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CA4CjC;AA2FD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,eAgCvB,CAAA"}
|