@pascal-app/nodes 1.0.6 → 1.0.7
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/README.md +1 -0
- package/dist/beam/actions/move-endpoint.d.ts +24 -0
- package/dist/beam/actions/move-endpoint.d.ts.map +1 -0
- package/dist/beam/actions/move-endpoint.js +54 -0
- package/dist/beam/definition.d.ts +14 -0
- package/dist/beam/definition.d.ts.map +1 -0
- package/dist/beam/definition.js +173 -0
- package/dist/beam/draft-settings.d.ts +17 -0
- package/dist/beam/draft-settings.d.ts.map +1 -0
- package/dist/beam/draft-settings.js +81 -0
- package/dist/beam/drafting.d.ts +35 -0
- package/dist/beam/drafting.d.ts.map +1 -0
- package/dist/beam/drafting.js +103 -0
- package/dist/beam/floorplan-affordances.d.ts +8 -0
- package/dist/beam/floorplan-affordances.d.ts.map +1 -0
- package/dist/beam/floorplan-affordances.js +40 -0
- package/dist/beam/floorplan-move.d.ts +11 -0
- package/dist/beam/floorplan-move.d.ts.map +1 -0
- package/dist/beam/floorplan-move.js +54 -0
- package/dist/beam/floorplan.d.ts +11 -0
- package/dist/beam/floorplan.d.ts.map +1 -0
- package/dist/beam/floorplan.js +91 -0
- package/dist/beam/geometry.d.ts +19 -0
- package/dist/beam/geometry.d.ts.map +1 -0
- package/dist/beam/geometry.js +63 -0
- package/dist/beam/index.d.ts +3 -0
- package/dist/beam/index.d.ts.map +1 -0
- package/dist/beam/index.js +2 -0
- package/dist/beam/move-endpoint-tool.d.ts +21 -0
- package/dist/beam/move-endpoint-tool.d.ts.map +1 -0
- package/dist/beam/move-endpoint-tool.js +49 -0
- package/dist/beam/move-tool.d.ts +12 -0
- package/dist/beam/move-tool.d.ts.map +1 -0
- package/dist/beam/move-tool.js +114 -0
- package/dist/beam/panel-model.d.ts +28 -0
- package/dist/beam/panel-model.d.ts.map +1 -0
- package/dist/beam/panel-model.js +123 -0
- package/dist/beam/panel.d.ts +13 -0
- package/dist/beam/panel.d.ts.map +1 -0
- package/dist/beam/panel.js +107 -0
- package/dist/beam/parametrics.d.ts +3 -0
- package/dist/beam/parametrics.d.ts.map +1 -0
- package/dist/beam/parametrics.js +4 -0
- package/dist/beam/renderer.d.ts +13 -0
- package/dist/beam/renderer.d.ts.map +1 -0
- package/dist/beam/renderer.js +36 -0
- package/dist/beam/schema.d.ts +2 -0
- package/dist/beam/schema.d.ts.map +1 -0
- package/dist/beam/schema.js +1 -0
- package/dist/beam/tool.d.ts +13 -0
- package/dist/beam/tool.d.ts.map +1 -0
- package/dist/beam/tool.js +152 -0
- package/dist/box-vent/panel.d.ts.map +1 -1
- package/dist/box-vent/panel.js +8 -7
- package/dist/cabinet/batchable.d.ts +10 -0
- package/dist/cabinet/batchable.d.ts.map +1 -0
- package/dist/cabinet/batchable.js +12 -0
- package/dist/cabinet/compartment-card.d.ts.map +1 -1
- package/dist/cabinet/compartment-card.js +142 -46
- package/dist/cabinet/countertop-layout.d.ts +5 -0
- package/dist/cabinet/countertop-layout.d.ts.map +1 -1
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +3 -0
- package/dist/cabinet/dimension-input.d.ts +6 -0
- package/dist/cabinet/dimension-input.d.ts.map +1 -0
- package/dist/cabinet/dimension-input.js +8 -0
- package/dist/cabinet/essential-controls.d.ts.map +1 -1
- package/dist/cabinet/essential-controls.js +82 -17
- package/dist/cabinet/index.d.ts +1 -1
- package/dist/cabinet/index.d.ts.map +1 -1
- package/dist/cabinet/index.js +1 -1
- package/dist/cabinet/kitchen-catalog.d.ts +17 -4
- package/dist/cabinet/kitchen-catalog.d.ts.map +1 -1
- package/dist/cabinet/kitchen-catalog.js +45 -7
- package/dist/cabinet/kitchen-collection.d.ts.map +1 -1
- package/dist/cabinet/kitchen-collection.js +21 -5
- package/dist/cabinet/kitchen-module-actions.d.ts.map +1 -1
- package/dist/cabinet/kitchen-module-actions.js +107 -14
- package/dist/cabinet/neighbor-placement.d.ts +10 -0
- package/dist/cabinet/neighbor-placement.d.ts.map +1 -1
- package/dist/cabinet/panel.d.ts.map +1 -1
- package/dist/cabinet/panel.js +127 -50
- package/dist/cabinet/run-finishing.d.ts +5 -0
- package/dist/cabinet/run-finishing.d.ts.map +1 -1
- package/dist/cabinet/run-ops.d.ts +5 -0
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/run-panel.d.ts.map +1 -1
- package/dist/cabinet/run-panel.js +203 -52
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +8 -5
- package/dist/ceiling/build-up-section.d.ts +7 -0
- package/dist/ceiling/build-up-section.d.ts.map +1 -0
- package/dist/ceiling/build-up-section.js +57 -0
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.js +3 -1
- package/dist/ceiling/floorplan-affordances.d.ts +112 -0
- package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
- package/dist/ceiling/materials.d.ts +5 -0
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +17 -0
- package/dist/ceiling/panel-model.d.ts +13 -0
- package/dist/ceiling/panel-model.d.ts.map +1 -0
- package/dist/ceiling/panel-model.js +49 -0
- package/dist/ceiling/panel.d.ts.map +1 -1
- package/dist/ceiling/panel.js +82 -18
- package/dist/ceiling/renderer.d.ts.map +1 -1
- package/dist/ceiling/renderer.js +10 -4
- package/dist/ceiling/tool.d.ts.map +1 -1
- package/dist/ceiling/tool.js +24 -4
- package/dist/chimney/panel.d.ts.map +1 -1
- package/dist/chimney/panel.js +113 -41
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.js +3 -0
- package/dist/column/floorplan.d.ts.map +1 -1
- package/dist/column/floorplan.js +17 -0
- package/dist/column/hosted-resize.d.ts +28 -1
- package/dist/column/hosted-resize.d.ts.map +1 -1
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +125 -37
- package/dist/column/post-options.d.ts +10 -0
- package/dist/column/post-options.d.ts.map +1 -0
- package/dist/column/post-options.js +71 -0
- package/dist/column/post-placement.d.ts +78 -0
- package/dist/column/post-placement.d.ts.map +1 -0
- package/dist/column/post-placement.js +157 -0
- package/dist/column/post-section.d.ts +17 -0
- package/dist/column/post-section.d.ts.map +1 -0
- package/dist/column/post-section.js +95 -0
- package/dist/column/post-tool.d.ts +11 -0
- package/dist/column/post-tool.d.ts.map +1 -0
- package/dist/column/post-tool.js +94 -0
- package/dist/column/tool.d.ts +3 -10
- package/dist/column/tool.d.ts.map +1 -1
- package/dist/column/tool.js +13 -1
- package/dist/cupola/panel.d.ts.map +1 -1
- package/dist/cupola/panel.js +14 -7
- package/dist/door/actions.d.ts +7 -0
- package/dist/door/actions.d.ts.map +1 -0
- package/dist/door/actions.js +32 -0
- package/dist/door/contextual-dimensions.d.ts.map +1 -1
- package/dist/door/contextual-dimensions.js +11 -1
- package/dist/door/definition.d.ts.map +1 -1
- package/dist/door/definition.js +34 -7
- package/dist/door/floorplan-affordances.d.ts.map +1 -1
- package/dist/door/floorplan-affordances.js +5 -2
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +28 -6
- package/dist/door/floorplan.d.ts +2 -0
- package/dist/door/floorplan.d.ts.map +1 -1
- package/dist/door/floorplan.js +89 -16
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +60 -16
- package/dist/door/paint.d.ts +2 -7
- package/dist/door/paint.d.ts.map +1 -1
- package/dist/door/paint.js +26 -2
- package/dist/door/panel.d.ts.map +1 -1
- package/dist/door/panel.js +242 -90
- package/dist/door/parametrics.js +1 -1
- package/dist/door/placement.d.ts.map +1 -1
- package/dist/door/placement.js +9 -2
- package/dist/door/swing.d.ts +22 -0
- package/dist/door/swing.d.ts.map +1 -0
- package/dist/door/swing.js +36 -0
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +76 -29
- package/dist/dormer/panel-actions-section.d.ts.map +1 -1
- package/dist/dormer/panel-actions-section.js +3 -1
- package/dist/dormer/panel-position-section.d.ts.map +1 -1
- package/dist/dormer/panel-position-section.js +4 -3
- package/dist/dormer/panel-windows-section.d.ts.map +1 -1
- package/dist/dormer/panel-windows-section.js +38 -1
- package/dist/dormer/panel.d.ts.map +1 -1
- package/dist/dormer/panel.js +24 -18
- package/dist/downspout/inspector-editors.d.ts.map +1 -1
- package/dist/downspout/inspector-editors.js +3 -2
- package/dist/duct-fitting/inspector-editors.d.ts.map +1 -1
- package/dist/duct-fitting/inspector-editors.js +6 -1
- package/dist/duct-fitting/tool.d.ts.map +1 -1
- package/dist/duct-fitting/tool.js +11 -2
- package/dist/duct-terminal/tool.d.ts.map +1 -1
- package/dist/duct-terminal/tool.js +11 -2
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +41 -18
- package/dist/eyebrow-vent/panel.d.ts.map +1 -1
- package/dist/eyebrow-vent/panel.js +16 -6
- package/dist/fence/drafting.d.ts +2 -3
- package/dist/fence/drafting.d.ts.map +1 -1
- package/dist/fence/drafting.js +2 -3
- package/dist/fence/inspector-editors.d.ts.map +1 -1
- package/dist/fence/inspector-editors.js +64 -21
- package/dist/fence/move-endpoint-tool.d.ts.map +1 -1
- package/dist/fence/move-endpoint-tool.js +11 -2
- package/dist/fence/system.d.ts.map +1 -1
- package/dist/fence/system.js +13 -0
- package/dist/fence-feature/actions.d.ts.map +1 -1
- package/dist/fence-feature/actions.js +5 -2
- package/dist/fence-feature/inspector.d.ts.map +1 -1
- package/dist/fence-feature/inspector.js +150 -34
- package/dist/fence-feature/move-session.d.ts +1 -1
- package/dist/floor-opening/floorplan.d.ts +29 -6
- package/dist/floor-opening/floorplan.d.ts.map +1 -1
- package/dist/floor-opening/floorplan.js +172 -14
- package/dist/gutter/downspouts-panel.d.ts.map +1 -1
- package/dist/gutter/downspouts-panel.js +14 -2
- package/dist/hvac-equipment/tool.d.ts.map +1 -1
- package/dist/hvac-equipment/tool.js +3 -2
- package/dist/i18n/definition-messages.d.ts +5 -0
- package/dist/i18n/definition-messages.d.ts.map +1 -0
- package/dist/i18n/definition-messages.js +771 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/item/authored-params.d.ts.map +1 -1
- package/dist/item/authored-params.js +19 -4
- package/dist/item/floorplan.d.ts +1 -1
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/panel.d.ts.map +1 -1
- package/dist/item/panel.js +9 -7
- package/dist/liquid-line/tool.d.ts.map +1 -1
- package/dist/liquid-line/tool.js +10 -3
- package/dist/measurement/tool.d.ts +1 -1
- package/dist/measurement/tool.d.ts.map +1 -1
- package/dist/measurement/tool.js +8 -8
- package/dist/pipe-fitting/tool.d.ts.map +1 -1
- package/dist/pipe-fitting/tool.js +3 -2
- package/dist/pipe-trap/tool.d.ts.map +1 -1
- package/dist/pipe-trap/tool.js +7 -2
- package/dist/procedural-item/renderer.d.ts.map +1 -1
- package/dist/procedural-item/renderer.js +8 -1
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +22 -9
- package/dist/roof/barrel-panel.d.ts.map +1 -1
- package/dist/roof/barrel-panel.js +7 -3
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.js +33 -3
- package/dist/roof/floorplan-overrides.d.ts +22 -0
- package/dist/roof/floorplan-overrides.d.ts.map +1 -0
- package/dist/roof/floorplan-overrides.js +46 -0
- package/dist/roof/floorplan-tool.d.ts +9 -0
- package/dist/roof/floorplan-tool.d.ts.map +1 -0
- package/dist/roof/floorplan-tool.js +168 -0
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +131 -41
- package/dist/roof/glazing-controls.d.ts +2 -1
- package/dist/roof/glazing-controls.d.ts.map +1 -1
- package/dist/roof/glazing-controls.js +51 -13
- package/dist/roof/glazing-panel-editor.d.ts.map +1 -1
- package/dist/roof/glazing-panel-editor.js +40 -13
- package/dist/roof/glazing-panel.d.ts.map +1 -1
- package/dist/roof/glazing-panel.js +73 -9
- package/dist/roof/paint.d.ts +19 -0
- package/dist/roof/paint.d.ts.map +1 -0
- package/dist/roof/paint.js +158 -0
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +90 -22
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/renderer.js +13 -2
- package/dist/roof/roof-footprint-source.d.ts +17 -0
- package/dist/roof/roof-footprint-source.d.ts.map +1 -1
- package/dist/roof/roof-footprint-source.js +14 -0
- package/dist/roof/roof-footprint.d.ts +36 -2
- package/dist/roof/roof-footprint.d.ts.map +1 -1
- package/dist/roof/roof-footprint.js +124 -2
- package/dist/roof/roof-materials.d.ts.map +1 -1
- package/dist/roof/roof-materials.js +10 -1
- package/dist/roof/roof-placement-mode.d.ts +0 -2
- package/dist/roof/roof-placement-mode.d.ts.map +1 -1
- package/dist/roof/roof-placement-mode.js +8 -6
- package/dist/roof/roof-plan-creases.d.ts +50 -0
- package/dist/roof/roof-plan-creases.d.ts.map +1 -0
- package/dist/roof/roof-plan-creases.js +194 -0
- package/dist/roof/roof-ridge-mode.d.ts +20 -0
- package/dist/roof/roof-ridge-mode.d.ts.map +1 -0
- package/dist/roof/roof-ridge-mode.js +16 -0
- package/dist/roof/tool.d.ts +17 -4
- package/dist/roof/tool.d.ts.map +1 -1
- package/dist/roof/tool.js +211 -113
- package/dist/roof/wall-catch.d.ts +106 -0
- package/dist/roof/wall-catch.d.ts.map +1 -0
- package/dist/roof/wall-catch.js +267 -0
- package/dist/roof-segment/build-up-section.d.ts +9 -0
- package/dist/roof-segment/build-up-section.d.ts.map +1 -0
- package/dist/roof-segment/build-up-section.js +191 -0
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.js +50 -5
- package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
- package/dist/roof-segment/floorplan-affordances.js +68 -19
- package/dist/roof-segment/floorplan.d.ts.map +1 -1
- package/dist/roof-segment/floorplan.js +16 -12
- package/dist/roof-segment/paint.d.ts +3 -1
- package/dist/roof-segment/paint.d.ts.map +1 -1
- package/dist/roof-segment/paint.js +43 -2
- package/dist/roof-segment/panel-model.d.ts +23 -0
- package/dist/roof-segment/panel-model.d.ts.map +1 -0
- package/dist/roof-segment/panel-model.js +64 -0
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +96 -14
- package/dist/roof-segment/parametrics.d.ts.map +1 -1
- package/dist/roof-segment/parametrics.js +4 -0
- package/dist/roof-segment/renderer.d.ts.map +1 -1
- package/dist/roof-segment/renderer.js +26 -5
- package/dist/separator/definition.d.ts.map +1 -1
- package/dist/separator/definition.js +10 -12
- package/dist/separator/floorplan-affordances.d.ts +9 -0
- package/dist/separator/floorplan-affordances.d.ts.map +1 -0
- package/dist/separator/floorplan-affordances.js +23 -0
- package/dist/separator/floorplan.d.ts +9 -0
- package/dist/separator/floorplan.d.ts.map +1 -0
- package/dist/separator/floorplan.js +54 -0
- package/dist/separator/renderer.d.ts +4 -0
- package/dist/separator/renderer.d.ts.map +1 -1
- package/dist/separator/renderer.js +21 -6
- package/dist/separator/selection.d.ts +10 -0
- package/dist/separator/selection.d.ts.map +1 -0
- package/dist/separator/selection.js +35 -0
- package/dist/shared/build-up-controls.d.ts +88 -0
- package/dist/shared/build-up-controls.d.ts.map +1 -0
- package/dist/shared/build-up-controls.js +139 -0
- package/dist/shared/curtain-opening-limits.d.ts.map +1 -1
- package/dist/shared/curtain-opening-limits.js +44 -14
- package/dist/shared/item-interaction-actions.d.ts.map +1 -1
- package/dist/shared/item-interaction-actions.js +11 -2
- package/dist/shared/layer-thickness.d.ts +2 -0
- package/dist/shared/layer-thickness.d.ts.map +1 -0
- package/dist/shared/layer-thickness.js +3 -0
- package/dist/shared/move-roof-tool.d.ts.map +1 -1
- package/dist/shared/move-roof-tool.js +100 -5
- package/dist/shared/node-batch/batchable.d.ts +2 -0
- package/dist/shared/node-batch/batchable.d.ts.map +1 -1
- package/dist/shared/node-batch/batchable.js +4 -0
- package/dist/shared/node-batch/candidates.d.ts +21 -5
- package/dist/shared/node-batch/candidates.d.ts.map +1 -1
- package/dist/shared/node-batch/candidates.js +85 -50
- package/dist/shared/node-batch/system.d.ts.map +1 -1
- package/dist/shared/node-batch/system.js +24 -15
- package/dist/shared/opening-casing-move.d.ts +16 -0
- package/dist/shared/opening-casing-move.d.ts.map +1 -0
- package/dist/shared/opening-casing-move.js +33 -0
- package/dist/shared/opening-casing-section.d.ts +15 -0
- package/dist/shared/opening-casing-section.d.ts.map +1 -0
- package/dist/shared/opening-casing-section.js +38 -0
- package/dist/shared/opening-casing.d.ts +26 -0
- package/dist/shared/opening-casing.d.ts.map +1 -0
- package/dist/shared/opening-casing.js +80 -0
- package/dist/shared/opening-depth-position.d.ts +13 -0
- package/dist/shared/opening-depth-position.d.ts.map +1 -0
- package/dist/shared/opening-depth-position.js +34 -0
- package/dist/shared/opening-documentation.d.ts.map +1 -1
- package/dist/shared/opening-documentation.js +17 -8
- package/dist/shared/opening-guides-runtime.d.ts +2 -1
- package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
- package/dist/shared/opening-guides-runtime.js +11 -7
- package/dist/shared/opening-labels.d.ts +11 -0
- package/dist/shared/opening-labels.d.ts.map +1 -0
- package/dist/shared/opening-labels.js +46 -0
- package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
- package/dist/shared/opening-placement-dimensions.js +11 -9
- package/dist/shared/opening-plane-offset.d.ts +4 -3
- package/dist/shared/opening-plane-offset.d.ts.map +1 -1
- package/dist/shared/opening-plane-offset.js +7 -4
- package/dist/shared/opening-swap.d.ts +8 -0
- package/dist/shared/opening-swap.d.ts.map +1 -0
- package/dist/shared/opening-swap.js +18 -0
- package/dist/shared/polygon-vertex-affordance.d.ts +19 -0
- package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
- package/dist/shared/polygon-vertex-affordance.js +65 -6
- package/dist/shared/roof-opening-host.d.ts +2 -1
- package/dist/shared/roof-opening-host.d.ts.map +1 -1
- package/dist/shared/roof-opening-host.js +14 -5
- package/dist/shared/roof-wall-opening-cut.d.ts.map +1 -1
- package/dist/shared/roof-wall-opening-cut.js +14 -6
- package/dist/shared/roof-wall-opening-placement.d.ts +2 -1
- package/dist/shared/roof-wall-opening-placement.d.ts.map +1 -1
- package/dist/shared/roof-wall-opening-placement.js +6 -4
- package/dist/shared/run-hanger-inspector.d.ts.map +1 -1
- package/dist/shared/run-hanger-inspector.js +39 -5
- package/dist/shared/system-check-panel.d.ts.map +1 -1
- package/dist/shared/system-check-panel.js +94 -15
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +6 -3
- package/dist/shelf/definition.d.ts.map +1 -1
- package/dist/shelf/definition.js +2 -0
- package/dist/site/ground-hole.d.ts +3 -3
- package/dist/site/ground-hole.js +3 -3
- package/dist/site/ground-veil.d.ts +5 -12
- package/dist/site/ground-veil.d.ts.map +1 -1
- package/dist/site/ground-veil.js +9 -33
- package/dist/site/panel.d.ts.map +1 -1
- package/dist/site/panel.js +52 -12
- package/dist/site/renderer.d.ts.map +1 -1
- package/dist/site/renderer.js +52 -23
- package/dist/skylight/panel.d.ts.map +1 -1
- package/dist/skylight/panel.js +49 -19
- package/dist/slab/deck-geometry.d.ts +28 -0
- package/dist/slab/deck-geometry.d.ts.map +1 -0
- package/dist/slab/deck-geometry.js +320 -0
- package/dist/slab/definition.d.ts +2 -1
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.js +6 -1
- package/dist/slab/dependency-tracker.d.ts.map +1 -1
- package/dist/slab/dependency-tracker.js +3 -0
- package/dist/slab/floorplan-affordances.d.ts +500 -0
- package/dist/slab/floorplan-affordances.d.ts.map +1 -1
- package/dist/slab/geometry.d.ts.map +1 -1
- package/dist/slab/geometry.js +46 -9
- package/dist/slab/panel.d.ts.map +1 -1
- package/dist/slab/panel.js +97 -21
- package/dist/slab/renderer.d.ts +11 -0
- package/dist/slab/renderer.d.ts.map +1 -0
- package/dist/slab/renderer.js +19 -0
- package/dist/slab/system.d.ts.map +1 -1
- package/dist/slab/system.js +12 -1
- package/dist/solar-panel/panel.d.ts.map +1 -1
- package/dist/solar-panel/panel.js +49 -14
- package/dist/stair/construction-controls.d.ts +3 -1
- package/dist/stair/construction-controls.d.ts.map +1 -1
- package/dist/stair/construction-controls.js +75 -12
- package/dist/stair/paint.d.ts +6 -0
- package/dist/stair/paint.d.ts.map +1 -1
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +243 -51
- package/dist/stair/parametrics.d.ts.map +1 -1
- package/dist/stair/parametrics.js +7 -0
- package/dist/stair/placement-defaults.d.ts +18 -0
- package/dist/stair/placement-defaults.d.ts.map +1 -0
- package/dist/stair/placement-defaults.js +27 -0
- package/dist/stair/railing-controls.d.ts.map +1 -1
- package/dist/stair/railing-controls.js +78 -18
- package/dist/stair/renderer.d.ts.map +1 -1
- package/dist/stair/renderer.js +16 -10
- package/dist/stair/structure-controls.d.ts +18 -0
- package/dist/stair/structure-controls.d.ts.map +1 -0
- package/dist/stair/structure-controls.js +275 -0
- package/dist/stair/tool.d.ts.map +1 -1
- package/dist/stair/tool.js +13 -9
- package/dist/stair/use-stair-render-data.d.ts +41 -0
- package/dist/stair/use-stair-render-data.d.ts.map +1 -1
- package/dist/stair-segment/panel.d.ts.map +1 -1
- package/dist/stair-segment/panel.js +65 -18
- package/dist/turbine-vent/panel.d.ts.map +1 -1
- package/dist/turbine-vent/panel.js +14 -5
- package/dist/unit/unit-panel.d.ts.map +1 -1
- package/dist/unit/unit-panel.js +28 -12
- package/dist/wall/actions.d.ts +1 -1
- package/dist/wall/actions.d.ts.map +1 -1
- package/dist/wall/actions.js +17 -13
- package/dist/wall/construction-dimensions.d.ts +6 -0
- package/dist/wall/construction-dimensions.d.ts.map +1 -1
- package/dist/wall/construction-dimensions.js +8 -0
- package/dist/wall/contextual-dimensions.d.ts +6 -0
- package/dist/wall/contextual-dimensions.d.ts.map +1 -1
- package/dist/wall/contextual-dimensions.js +104 -17
- package/dist/wall/curtain-opening-frame.d.ts.map +1 -1
- package/dist/wall/curtain-opening-frame.js +6 -4
- package/dist/wall/curtain-wall-layout.d.ts +1 -1
- package/dist/wall/curtain-wall-layout.d.ts.map +1 -1
- package/dist/wall/curtain-wall-layout.js +6 -4
- package/dist/wall/curtain-wall-materials.d.ts.map +1 -1
- package/dist/wall/curtain-wall-materials.js +8 -3
- package/dist/wall/curtain-wall-panel.d.ts.map +1 -1
- package/dist/wall/curtain-wall-panel.js +241 -37
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +2 -3
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +20 -5
- package/dist/wall/floorplan-affordances.d.ts.map +1 -1
- package/dist/wall/floorplan-affordances.js +9 -6
- package/dist/wall/floorplan-move.d.ts.map +1 -1
- package/dist/wall/floorplan-move.js +66 -16
- package/dist/wall/floorplan.d.ts +4 -5
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +62 -46
- package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
- package/dist/wall/move-endpoint-tool.js +1 -0
- package/dist/wall/move-tool.d.ts.map +1 -1
- package/dist/wall/move-tool.js +77 -12
- package/dist/wall/paint.d.ts +2 -2
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +11 -4
- package/dist/wall/panel-model.d.ts +17 -2
- package/dist/wall/panel-model.d.ts.map +1 -1
- package/dist/wall/panel-model.js +158 -18
- package/dist/wall/panel.d.ts +8 -0
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +228 -156
- package/dist/wall/parametrics.d.ts +1 -1
- package/dist/wall/parametrics.d.ts.map +1 -1
- package/dist/wall/parametrics.js +14 -1
- package/dist/wall/railing-wall-adapter.d.ts +7 -0
- package/dist/wall/railing-wall-adapter.d.ts.map +1 -0
- package/dist/wall/railing-wall-adapter.js +38 -0
- package/dist/wall/railing-wall-floorplan.d.ts +8 -0
- package/dist/wall/railing-wall-floorplan.d.ts.map +1 -0
- package/dist/wall/railing-wall-floorplan.js +27 -0
- package/dist/wall/railing-wall-geometry.d.ts +12 -0
- package/dist/wall/railing-wall-geometry.d.ts.map +1 -0
- package/dist/wall/railing-wall-geometry.js +51 -0
- package/dist/wall/railing-wall-guard.d.ts +81 -0
- package/dist/wall/railing-wall-guard.d.ts.map +1 -0
- package/dist/wall/railing-wall-guard.js +435 -0
- package/dist/wall/railing-wall-materials.d.ts +11 -0
- package/dist/wall/railing-wall-materials.d.ts.map +1 -0
- package/dist/wall/railing-wall-materials.js +31 -0
- package/dist/wall/railing-wall-panel-model.d.ts +30 -0
- package/dist/wall/railing-wall-panel-model.d.ts.map +1 -0
- package/dist/wall/railing-wall-panel-model.js +117 -0
- package/dist/wall/railing-wall-panel.d.ts +17 -0
- package/dist/wall/railing-wall-panel.d.ts.map +1 -0
- package/dist/wall/railing-wall-panel.js +42 -0
- package/dist/wall/rectangle-command.d.ts +79 -1
- 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 +2 -0
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +3 -1
- package/dist/wall/skirting-floor-gaps.d.ts +8 -0
- package/dist/wall/skirting-floor-gaps.d.ts.map +1 -0
- package/dist/wall/skirting-floor-gaps.js +36 -0
- package/dist/wall/system.d.ts +0 -14
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +6 -1
- package/dist/wall/tool.d.ts +16 -0
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +160 -47
- package/dist/wall/treatments.d.ts +3 -0
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +30 -7
- package/dist/window/actions.d.ts +7 -0
- package/dist/window/actions.d.ts.map +1 -0
- package/dist/window/actions.js +29 -0
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.js +11 -2
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +5 -0
- package/dist/window/floorplan.d.ts +2 -0
- package/dist/window/floorplan.d.ts.map +1 -1
- package/dist/window/floorplan.js +58 -1
- package/dist/window/mechanism.d.ts.map +1 -1
- package/dist/window/mechanism.js +21 -1
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +10 -3
- package/dist/window/paint.d.ts +2 -7
- package/dist/window/paint.d.ts.map +1 -1
- package/dist/window/paint.js +31 -3
- package/dist/window/panel.d.ts.map +1 -1
- package/dist/window/panel.js +311 -69
- package/dist/window/placement.d.ts.map +1 -1
- package/dist/window/placement.js +5 -1
- package/dist/window/swing.d.ts +13 -0
- package/dist/window/swing.d.ts.map +1 -0
- package/dist/window/swing.js +16 -0
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +19 -14
- package/dist/zone/floorplan-affordances.d.ts +136 -0
- package/dist/zone/floorplan-affordances.d.ts.map +1 -1
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +34 -9
- package/dist/zone/renderer.d.ts.map +1 -1
- package/dist/zone/renderer.js +9 -5
- package/package.json +14 -14
- package/dist/site/generic-foundation-geometry.d.ts +0 -16
- package/dist/site/generic-foundation-geometry.d.ts.map +0 -1
- package/dist/site/generic-foundation-geometry.js +0 -75
- package/dist/site/generic-foundation.d.ts +0 -4
- package/dist/site/generic-foundation.d.ts.map +0 -1
- package/dist/site/generic-foundation.js +0 -91
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/window/tool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/window/tool.tsx"],"names":[],"mappings":"AAmHA;;;;;;;;;GASG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAqqCvB,CAAA;eAEc,UAAU"}
|
package/dist/window/tool.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { beginSceneHistoryDraft, createSnapEaser, dormerWallFacePointToDormer, emitter, evaluateCorner, getEffectiveNode, holdHiddenWallPointerEvents, isCurvedWall, prefersReducedMotion, runAsSingleSceneHistoryStep, sceneRegistry, spatialGridManager, useLiveNodeOverrides, useScene, WallNode as WallNodeSchema, WindowNode, } from '@pascal-app/core';
|
|
2
|
+
import { beginSceneHistoryDraft, createSnapEaser, DEFAULT_WALL_THICKNESS, dormerWallFacePointToDormer, emitter, evaluateCorner, getEffectiveNode, getWallThickness, holdHiddenWallPointerEvents, isCurvedWall, isRailingWall, prefersReducedMotion, resolveOpeningFrameDepth, runAsSingleSceneHistoryStep, sceneRegistry, spatialGridManager, useLiveNodeOverrides, useScene, WallNode as WallNodeSchema, WindowNode, } from '@pascal-app/core';
|
|
3
3
|
import { windowTakesStyle } from '@pascal-app/core/building';
|
|
4
4
|
import { calculateItemRotation, clearPlacementSurface, EDITOR_LAYER, getSideFromNormal, isMagneticSnapActive, isTypingTarget, isValidWallSideFace, publishPlacementSurface, snapToHalf, triggerSFX, useAlignmentGuides, useEditor, useFacingPose, usePlacementPreview, useRegistryToolContext, } from '@pascal-app/editor';
|
|
5
5
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
@@ -64,10 +64,6 @@ const WindowTool = () => {
|
|
|
64
64
|
rotation: [0, 0, 0],
|
|
65
65
|
side: fallbackPose?.side ?? 'front',
|
|
66
66
|
}), [fallbackPose?.side, placedType, placedStyle]);
|
|
67
|
-
// The frame depth is a fixed parse default (the `side` flip doesn't change
|
|
68
|
-
// it); a ref lets the facing-pose publish inside the setup effect read it
|
|
69
|
-
// without re-subscribing every event listener.
|
|
70
|
-
const frameDepthRef = useRef(ghostStub.frameDepth);
|
|
71
67
|
useEffect(() => {
|
|
72
68
|
useScene.temporal.getState().pause();
|
|
73
69
|
// The draft is a created carry draft: undo history and every save leave it out
|
|
@@ -202,7 +198,7 @@ const WindowTool = () => {
|
|
|
202
198
|
// On-host cursor: the green/red wireframe outline tracks a live draft.
|
|
203
199
|
// Showing it always clears the off-host floating ghost (they never
|
|
204
200
|
// coexist — a draft means the cursor is on a valid host).
|
|
205
|
-
const updateCursor = (worldPosition, cursorRotationY, valid, indicatorYOffset) => {
|
|
201
|
+
const updateCursor = (worldPosition, cursorRotationY, valid, indicatorYOffset, hostThickness) => {
|
|
206
202
|
setFallbackPose(null);
|
|
207
203
|
const group = cursorGroupRef.current;
|
|
208
204
|
if (!group)
|
|
@@ -217,7 +213,7 @@ const WindowTool = () => {
|
|
|
217
213
|
useFacingPose.getState().set({
|
|
218
214
|
position: [worldPosition[0], worldPosition[1] + indicatorYOffset, worldPosition[2]],
|
|
219
215
|
rotationY: cursorRotationY,
|
|
220
|
-
depth:
|
|
216
|
+
depth: resolveOpeningFrameDepth({ frameDepth: draftRef.current?.frameDepth }, hostThickness),
|
|
221
217
|
});
|
|
222
218
|
};
|
|
223
219
|
// Off-host fallback: hide the wireframe outline and float the real window
|
|
@@ -305,7 +301,7 @@ const WindowTool = () => {
|
|
|
305
301
|
clearOpeningGuides3D();
|
|
306
302
|
const worldPosition = dormerWindowWorldPosition(event, target);
|
|
307
303
|
publishPlacementSurface(new Vector3(...worldPosition), getDormerWindowWorldNormal(event, target));
|
|
308
|
-
updateCursor(worldPosition, getDormerWindowWorldYaw(event, target), target.valid, 0);
|
|
304
|
+
updateCursor(worldPosition, getDormerWindowWorldYaw(event, target), target.valid, 0, DEFAULT_WALL_THICKNESS);
|
|
309
305
|
};
|
|
310
306
|
// Sill alignment (snap + guide): a sibling sill/centre/top wins over the
|
|
311
307
|
// grid when within threshold — it's the magnetic ("lines") component for the
|
|
@@ -432,7 +428,7 @@ const WindowTool = () => {
|
|
|
432
428
|
});
|
|
433
429
|
}
|
|
434
430
|
publishDraftPreview(wall);
|
|
435
|
-
updateCursor(wallLocalToWorld(wall, shownX, clampedY, getLevelYOffset(), getSlabElevationForWall(wall)), cursorRotationY, valid, -clampedY);
|
|
431
|
+
updateCursor(wallLocalToWorld(wall, shownX, clampedY, getLevelYOffset(), getSlabElevationForWall(wall)), cursorRotationY, valid, -clampedY, getWallThickness(wall));
|
|
436
432
|
if (draftRef.current) {
|
|
437
433
|
publishOpeningGuidesForWallEvent({
|
|
438
434
|
wall,
|
|
@@ -483,8 +479,10 @@ const WindowTool = () => {
|
|
|
483
479
|
awningDirection: draft.awningDirection,
|
|
484
480
|
casementStyle: draft.casementStyle,
|
|
485
481
|
hingesSide: draft.hingesSide,
|
|
482
|
+
casingFaceA: draft.casingFaceA,
|
|
483
|
+
casingFaceB: draft.casingFaceB,
|
|
484
|
+
casingWidth: draft.casingWidth,
|
|
486
485
|
frameThickness: draft.frameThickness,
|
|
487
|
-
frameDepth: draft.frameDepth,
|
|
488
486
|
columnRatios: draft.columnRatios,
|
|
489
487
|
rowRatios: draft.rowRatios,
|
|
490
488
|
columnDividerThickness: draft.columnDividerThickness,
|
|
@@ -548,8 +546,10 @@ const WindowTool = () => {
|
|
|
548
546
|
openingCornerRadii: draft.openingCornerRadii,
|
|
549
547
|
cornerRadius: draft.cornerRadius,
|
|
550
548
|
archHeight: draft.archHeight,
|
|
549
|
+
casingFaceA: draft.casingFaceA,
|
|
550
|
+
casingFaceB: draft.casingFaceB,
|
|
551
|
+
casingWidth: draft.casingWidth,
|
|
551
552
|
frameThickness: draft.frameThickness,
|
|
552
|
-
frameDepth: draft.frameDepth,
|
|
553
553
|
columnRatios: draft.columnRatios,
|
|
554
554
|
rowRatios: draft.rowRatios,
|
|
555
555
|
columnDividerThickness: draft.columnDividerThickness,
|
|
@@ -574,8 +574,10 @@ const WindowTool = () => {
|
|
|
574
574
|
const onWallHover = (event) => {
|
|
575
575
|
hostKind = 'wall';
|
|
576
576
|
lastMeshEventTime = event.nativeEvent?.timeStamp ?? -1;
|
|
577
|
+
// A railing takes no window: its openings are gaps a door leaves in the guard.
|
|
577
578
|
if (!isValidWallSideFace(event.normal) ||
|
|
578
579
|
isCurvedWall(event.node) ||
|
|
580
|
+
isRailingWall(event.node) ||
|
|
579
581
|
event.node.parentId !== getLevelId()) {
|
|
580
582
|
destroyDraft();
|
|
581
583
|
showWallFallbackCursor(event);
|
|
@@ -612,6 +614,7 @@ const WindowTool = () => {
|
|
|
612
614
|
return;
|
|
613
615
|
if (!isValidWallSideFace(event.normal) ||
|
|
614
616
|
isCurvedWall(event.node) ||
|
|
617
|
+
isRailingWall(event.node) ||
|
|
615
618
|
event.node.parentId !== getLevelId()) {
|
|
616
619
|
return;
|
|
617
620
|
}
|
|
@@ -776,7 +779,7 @@ const WindowTool = () => {
|
|
|
776
779
|
const updateRoofCursor = (target, roof) => {
|
|
777
780
|
const pose = getRoofWallOpeningCursorPose(target, roof);
|
|
778
781
|
if (pose)
|
|
779
|
-
updateCursor(pose.position, pose.rotationY, target.valid, -target.position[1]);
|
|
782
|
+
updateCursor(pose.position, pose.rotationY, target.valid, -target.position[1], DEFAULT_WALL_THICKNESS);
|
|
780
783
|
};
|
|
781
784
|
const onRoofHover = (event) => {
|
|
782
785
|
hostKind = 'roof';
|
|
@@ -853,8 +856,10 @@ const WindowTool = () => {
|
|
|
853
856
|
awningDirection: draft.awningDirection,
|
|
854
857
|
casementStyle: draft.casementStyle,
|
|
855
858
|
hingesSide: draft.hingesSide,
|
|
859
|
+
casingFaceA: draft.casingFaceA,
|
|
860
|
+
casingFaceB: draft.casingFaceB,
|
|
861
|
+
casingWidth: draft.casingWidth,
|
|
856
862
|
frameThickness: draft.frameThickness,
|
|
857
|
-
frameDepth: draft.frameDepth,
|
|
858
863
|
columnRatios: draft.columnRatios,
|
|
859
864
|
rowRatios: draft.rowRatios,
|
|
860
865
|
columnDividerThickness: draft.columnDividerThickness,
|
|
@@ -1029,7 +1034,7 @@ const WindowTool = () => {
|
|
|
1029
1034
|
// dispose on unmount rather than reallocating (and orphaning) an EdgesGeometry
|
|
1030
1035
|
// on every re-render during placement.
|
|
1031
1036
|
const edgesGeo = useMemo(() => {
|
|
1032
|
-
const boxGeo = new BoxGeometry(FALLBACK_WIDTH, FALLBACK_HEIGHT,
|
|
1037
|
+
const boxGeo = new BoxGeometry(FALLBACK_WIDTH, FALLBACK_HEIGHT, resolveOpeningFrameDepth({}, DEFAULT_WALL_THICKNESS));
|
|
1033
1038
|
const geo = new EdgesGeometry(boxGeo);
|
|
1034
1039
|
boxGeo.dispose();
|
|
1035
1040
|
return geo;
|
|
@@ -104,6 +104,16 @@ export declare const zoneMoveVertexAffordance: import("@pascal-app/core").Floorp
|
|
|
104
104
|
color: string;
|
|
105
105
|
intensity: number;
|
|
106
106
|
distance?: number | undefined;
|
|
107
|
+
spot?: {
|
|
108
|
+
direction: [number, number, number];
|
|
109
|
+
angle: number;
|
|
110
|
+
softness: number;
|
|
111
|
+
} | undefined;
|
|
112
|
+
shadows?: boolean | undefined;
|
|
113
|
+
glow?: {
|
|
114
|
+
size: number;
|
|
115
|
+
strength: number;
|
|
116
|
+
} | undefined;
|
|
107
117
|
}[];
|
|
108
118
|
undersides: {
|
|
109
119
|
part?: string | undefined;
|
|
@@ -122,6 +132,17 @@ export declare const zoneMoveVertexAffordance: import("@pascal-app/core").Floorp
|
|
|
122
132
|
}[] | undefined;
|
|
123
133
|
cutout: boolean;
|
|
124
134
|
collider: boolean;
|
|
135
|
+
shape?: {
|
|
136
|
+
tolerance: number;
|
|
137
|
+
bands: {
|
|
138
|
+
y0: number;
|
|
139
|
+
y1: number;
|
|
140
|
+
polygons: {
|
|
141
|
+
outer: [number, number][];
|
|
142
|
+
holes?: [number, number][][] | undefined;
|
|
143
|
+
}[];
|
|
144
|
+
}[];
|
|
145
|
+
} | undefined;
|
|
125
146
|
triangles: number;
|
|
126
147
|
coverage?: number | undefined;
|
|
127
148
|
uncovered?: {
|
|
@@ -136,6 +157,19 @@ export declare const zoneMoveVertexAffordance: import("@pascal-app/core").Floorp
|
|
|
136
157
|
} | undefined;
|
|
137
158
|
inputs: string;
|
|
138
159
|
} | undefined;
|
|
160
|
+
drop?: number | undefined;
|
|
161
|
+
} | undefined;
|
|
162
|
+
roomType?: "deck" | "patio" | "porch" | undefined;
|
|
163
|
+
porchFraming?: {
|
|
164
|
+
auto?: boolean | undefined;
|
|
165
|
+
postSize?: string | undefined;
|
|
166
|
+
postSpacing?: number | undefined;
|
|
167
|
+
beamSize?: string | undefined;
|
|
168
|
+
} | undefined;
|
|
169
|
+
decking?: {
|
|
170
|
+
boardSize?: "2x4" | "2x6" | "5/4x6" | "composite" | undefined;
|
|
171
|
+
gap?: number | undefined;
|
|
172
|
+
direction?: "diagonal" | "parallel" | "perpendicular" | undefined;
|
|
139
173
|
} | undefined;
|
|
140
174
|
ceiling?: {
|
|
141
175
|
regions?: {
|
|
@@ -277,6 +311,16 @@ export declare const zoneAddVertexAffordance: import("@pascal-app/core").Floorpl
|
|
|
277
311
|
color: string;
|
|
278
312
|
intensity: number;
|
|
279
313
|
distance?: number | undefined;
|
|
314
|
+
spot?: {
|
|
315
|
+
direction: [number, number, number];
|
|
316
|
+
angle: number;
|
|
317
|
+
softness: number;
|
|
318
|
+
} | undefined;
|
|
319
|
+
shadows?: boolean | undefined;
|
|
320
|
+
glow?: {
|
|
321
|
+
size: number;
|
|
322
|
+
strength: number;
|
|
323
|
+
} | undefined;
|
|
280
324
|
}[];
|
|
281
325
|
undersides: {
|
|
282
326
|
part?: string | undefined;
|
|
@@ -295,6 +339,17 @@ export declare const zoneAddVertexAffordance: import("@pascal-app/core").Floorpl
|
|
|
295
339
|
}[] | undefined;
|
|
296
340
|
cutout: boolean;
|
|
297
341
|
collider: boolean;
|
|
342
|
+
shape?: {
|
|
343
|
+
tolerance: number;
|
|
344
|
+
bands: {
|
|
345
|
+
y0: number;
|
|
346
|
+
y1: number;
|
|
347
|
+
polygons: {
|
|
348
|
+
outer: [number, number][];
|
|
349
|
+
holes?: [number, number][][] | undefined;
|
|
350
|
+
}[];
|
|
351
|
+
}[];
|
|
352
|
+
} | undefined;
|
|
298
353
|
triangles: number;
|
|
299
354
|
coverage?: number | undefined;
|
|
300
355
|
uncovered?: {
|
|
@@ -309,6 +364,19 @@ export declare const zoneAddVertexAffordance: import("@pascal-app/core").Floorpl
|
|
|
309
364
|
} | undefined;
|
|
310
365
|
inputs: string;
|
|
311
366
|
} | undefined;
|
|
367
|
+
drop?: number | undefined;
|
|
368
|
+
} | undefined;
|
|
369
|
+
roomType?: "deck" | "patio" | "porch" | undefined;
|
|
370
|
+
porchFraming?: {
|
|
371
|
+
auto?: boolean | undefined;
|
|
372
|
+
postSize?: string | undefined;
|
|
373
|
+
postSpacing?: number | undefined;
|
|
374
|
+
beamSize?: string | undefined;
|
|
375
|
+
} | undefined;
|
|
376
|
+
decking?: {
|
|
377
|
+
boardSize?: "2x4" | "2x6" | "5/4x6" | "composite" | undefined;
|
|
378
|
+
gap?: number | undefined;
|
|
379
|
+
direction?: "diagonal" | "parallel" | "perpendicular" | undefined;
|
|
312
380
|
} | undefined;
|
|
313
381
|
ceiling?: {
|
|
314
382
|
regions?: {
|
|
@@ -450,6 +518,16 @@ export declare const zoneMoveEdgeAffordance: import("@pascal-app/core").Floorpla
|
|
|
450
518
|
color: string;
|
|
451
519
|
intensity: number;
|
|
452
520
|
distance?: number | undefined;
|
|
521
|
+
spot?: {
|
|
522
|
+
direction: [number, number, number];
|
|
523
|
+
angle: number;
|
|
524
|
+
softness: number;
|
|
525
|
+
} | undefined;
|
|
526
|
+
shadows?: boolean | undefined;
|
|
527
|
+
glow?: {
|
|
528
|
+
size: number;
|
|
529
|
+
strength: number;
|
|
530
|
+
} | undefined;
|
|
453
531
|
}[];
|
|
454
532
|
undersides: {
|
|
455
533
|
part?: string | undefined;
|
|
@@ -468,6 +546,17 @@ export declare const zoneMoveEdgeAffordance: import("@pascal-app/core").Floorpla
|
|
|
468
546
|
}[] | undefined;
|
|
469
547
|
cutout: boolean;
|
|
470
548
|
collider: boolean;
|
|
549
|
+
shape?: {
|
|
550
|
+
tolerance: number;
|
|
551
|
+
bands: {
|
|
552
|
+
y0: number;
|
|
553
|
+
y1: number;
|
|
554
|
+
polygons: {
|
|
555
|
+
outer: [number, number][];
|
|
556
|
+
holes?: [number, number][][] | undefined;
|
|
557
|
+
}[];
|
|
558
|
+
}[];
|
|
559
|
+
} | undefined;
|
|
471
560
|
triangles: number;
|
|
472
561
|
coverage?: number | undefined;
|
|
473
562
|
uncovered?: {
|
|
@@ -482,6 +571,19 @@ export declare const zoneMoveEdgeAffordance: import("@pascal-app/core").Floorpla
|
|
|
482
571
|
} | undefined;
|
|
483
572
|
inputs: string;
|
|
484
573
|
} | undefined;
|
|
574
|
+
drop?: number | undefined;
|
|
575
|
+
} | undefined;
|
|
576
|
+
roomType?: "deck" | "patio" | "porch" | undefined;
|
|
577
|
+
porchFraming?: {
|
|
578
|
+
auto?: boolean | undefined;
|
|
579
|
+
postSize?: string | undefined;
|
|
580
|
+
postSpacing?: number | undefined;
|
|
581
|
+
beamSize?: string | undefined;
|
|
582
|
+
} | undefined;
|
|
583
|
+
decking?: {
|
|
584
|
+
boardSize?: "2x4" | "2x6" | "5/4x6" | "composite" | undefined;
|
|
585
|
+
gap?: number | undefined;
|
|
586
|
+
direction?: "diagonal" | "parallel" | "perpendicular" | undefined;
|
|
485
587
|
} | undefined;
|
|
486
588
|
ceiling?: {
|
|
487
589
|
regions?: {
|
|
@@ -623,6 +725,16 @@ export declare const zoneDeleteVertexAffordance: import("@pascal-app/core").Floo
|
|
|
623
725
|
color: string;
|
|
624
726
|
intensity: number;
|
|
625
727
|
distance?: number | undefined;
|
|
728
|
+
spot?: {
|
|
729
|
+
direction: [number, number, number];
|
|
730
|
+
angle: number;
|
|
731
|
+
softness: number;
|
|
732
|
+
} | undefined;
|
|
733
|
+
shadows?: boolean | undefined;
|
|
734
|
+
glow?: {
|
|
735
|
+
size: number;
|
|
736
|
+
strength: number;
|
|
737
|
+
} | undefined;
|
|
626
738
|
}[];
|
|
627
739
|
undersides: {
|
|
628
740
|
part?: string | undefined;
|
|
@@ -641,6 +753,17 @@ export declare const zoneDeleteVertexAffordance: import("@pascal-app/core").Floo
|
|
|
641
753
|
}[] | undefined;
|
|
642
754
|
cutout: boolean;
|
|
643
755
|
collider: boolean;
|
|
756
|
+
shape?: {
|
|
757
|
+
tolerance: number;
|
|
758
|
+
bands: {
|
|
759
|
+
y0: number;
|
|
760
|
+
y1: number;
|
|
761
|
+
polygons: {
|
|
762
|
+
outer: [number, number][];
|
|
763
|
+
holes?: [number, number][][] | undefined;
|
|
764
|
+
}[];
|
|
765
|
+
}[];
|
|
766
|
+
} | undefined;
|
|
644
767
|
triangles: number;
|
|
645
768
|
coverage?: number | undefined;
|
|
646
769
|
uncovered?: {
|
|
@@ -655,6 +778,19 @@ export declare const zoneDeleteVertexAffordance: import("@pascal-app/core").Floo
|
|
|
655
778
|
} | undefined;
|
|
656
779
|
inputs: string;
|
|
657
780
|
} | undefined;
|
|
781
|
+
drop?: number | undefined;
|
|
782
|
+
} | undefined;
|
|
783
|
+
roomType?: "deck" | "patio" | "porch" | undefined;
|
|
784
|
+
porchFraming?: {
|
|
785
|
+
auto?: boolean | undefined;
|
|
786
|
+
postSize?: string | undefined;
|
|
787
|
+
postSpacing?: number | undefined;
|
|
788
|
+
beamSize?: string | undefined;
|
|
789
|
+
} | undefined;
|
|
790
|
+
decking?: {
|
|
791
|
+
boardSize?: "2x4" | "2x6" | "5/4x6" | "composite" | undefined;
|
|
792
|
+
gap?: number | undefined;
|
|
793
|
+
direction?: "diagonal" | "parallel" | "perpendicular" | undefined;
|
|
658
794
|
} | undefined;
|
|
659
795
|
ceiling?: {
|
|
660
796
|
regions?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floorplan-affordances.d.ts","sourceRoot":"","sources":["../../src/zone/floorplan-affordances.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"floorplan-affordances.d.ts","sourceRoot":"","sources":["../../src/zone/floorplan-affordances.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAA;AACD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGnC,CAAA;AACD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAA;AACD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantities-panel.d.ts","sourceRoot":"","sources":["../../src/zone/quantities-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"quantities-panel.d.ts","sourceRoot":"","sources":["../../src/zone/quantities-panel.tsx"],"names":[],"mappings":"AAqNA,MAAM,CAAC,OAAO,UAAU,mBAAmB,uCAiG1C"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { deriveZoneQuantityReport, useLiveNodeOverrides, useScene, } from '@pascal-app/core';
|
|
4
|
-
import { formatAreaLabel, formatLinearMeasurement, formatVolumeLabel, PanelSection, } from '@pascal-app/editor';
|
|
3
|
+
import { deriveZoneQuantityReport, useLiveNodeOverrides, usePascalI18n, useScene, } from '@pascal-app/core';
|
|
4
|
+
import { displayRoomName, formatAreaLabel, formatLinearMeasurement, formatVolumeLabel, PanelSection, } from '@pascal-app/editor';
|
|
5
5
|
import { useViewer } from '@pascal-app/viewer';
|
|
6
6
|
import { useMemo } from 'react';
|
|
7
7
|
import { useShallow } from 'zustand/react/shallow';
|
|
8
8
|
import { PanelSelect } from '../shared/panel-fields.js';
|
|
9
9
|
import { buildingUnitsForZone } from './unit-membership.js';
|
|
10
10
|
function ZonePlanSketch({ edgeLengths, metricNotation, polygon, unit, }) {
|
|
11
|
+
const i18n = usePascalI18n();
|
|
11
12
|
if (polygon.length < 3) {
|
|
12
|
-
return (_jsx("div", { className: "flex h-28 items-center justify-center rounded-md border border-border/50 text-muted-foreground text-xs", children:
|
|
13
|
+
return (_jsx("div", { className: "flex h-28 items-center justify-center rounded-md border border-border/50 text-muted-foreground text-xs", children: i18n._({
|
|
14
|
+
id: 'node.zone.quantitiesPanel.zoneBoundaryUnavailable',
|
|
15
|
+
message: 'Zone boundary unavailable',
|
|
16
|
+
}) }));
|
|
13
17
|
}
|
|
14
18
|
const viewWidth = 276;
|
|
15
19
|
const viewHeight = 176;
|
|
@@ -27,7 +31,10 @@ function ZonePlanSketch({ edgeLengths, metricNotation, polygon, unit, }) {
|
|
|
27
31
|
const offsetY = (viewHeight - height * scale) / 2;
|
|
28
32
|
const projected = polygon.map(([x, y]) => [offsetX + (x - minX) * scale, offsetY + (maxY - y) * scale]);
|
|
29
33
|
const center = projected.reduce((sum, point) => [sum[0] + point[0] / projected.length, sum[1] + point[1] / projected.length], [0, 0]);
|
|
30
|
-
return (_jsxs("svg", { "aria-label":
|
|
34
|
+
return (_jsxs("svg", { "aria-label": i18n._({
|
|
35
|
+
id: 'node.zone.quantitiesPanel.topViewWithZoneEdgeDimensions',
|
|
36
|
+
message: 'Top view with zone edge dimensions',
|
|
37
|
+
}), className: "h-auto w-full rounded-md border border-cyan-950/20 bg-[#f8faf7]", role: "img", viewBox: `0 0 ${viewWidth} ${viewHeight}`, children: [_jsx("defs", { children: _jsx("pattern", { height: "12", id: "zone-quantity-grid", patternUnits: "userSpaceOnUse", width: "12", children: _jsx("path", { d: "M 12 0 L 0 0 0 12", fill: "none", stroke: "#0891b2", strokeOpacity: "0.08" }) }) }), _jsx("rect", { fill: "url(#zone-quantity-grid)", height: viewHeight, width: viewWidth }), _jsx("polygon", { fill: "#67e8f9", fillOpacity: "0.12", points: projected.map((point) => point.join(',')).join(' '), stroke: "#0e7490", strokeLinejoin: "round", strokeWidth: "1.5" }), projected.map((start, index) => {
|
|
31
38
|
const end = projected[(index + 1) % projected.length];
|
|
32
39
|
if (!end)
|
|
33
40
|
return null;
|
|
@@ -44,9 +51,13 @@ function ZonePlanSketch({ edgeLengths, metricNotation, polygon, unit, }) {
|
|
|
44
51
|
})] }));
|
|
45
52
|
}
|
|
46
53
|
function QuantityRow({ abbreviation, format, label, quantity, }) {
|
|
47
|
-
|
|
54
|
+
const i18n = usePascalI18n();
|
|
55
|
+
return (_jsxs("div", { className: "rounded-md border border-border/50 bg-background/35 px-2.5 py-2", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "font-mono font-semibold text-cyan-600 text-[10px]", children: abbreviation }), _jsx("span", { className: "text-muted-foreground text-xs", children: label }), _jsx("span", { className: "ml-auto font-mono font-medium text-foreground text-xs tabular-nums", children: quantity.status === 'available'
|
|
56
|
+
? format(quantity.value)
|
|
57
|
+
: i18n._({ id: 'node.zone.quantitiesPanel.notProven', message: 'Not proven' }) })] }), _jsx("div", { className: "mt-1 text-[10px] text-muted-foreground leading-snug", children: quantity.status === 'available' ? quantity.note : quantity.reason })] }));
|
|
48
58
|
}
|
|
49
59
|
function ZoneUnitPanel({ zone }) {
|
|
60
|
+
const i18n = usePascalI18n();
|
|
50
61
|
const units = useScene(useShallow((state) => buildingUnitsForZone(zone, (id) => state.nodes[id])));
|
|
51
62
|
if (units.length === 0)
|
|
52
63
|
return null;
|
|
@@ -71,12 +82,16 @@ function ZoneUnitPanel({ zone }) {
|
|
|
71
82
|
if (updates.length > 0)
|
|
72
83
|
updateNodes(updates);
|
|
73
84
|
};
|
|
74
|
-
return (_jsx(PanelSection, { title:
|
|
75
|
-
{ label: 'None', value: '' },
|
|
76
|
-
...units.map((unit) => ({
|
|
85
|
+
return (_jsx(PanelSection, { title: i18n._({ id: 'node.zone.quantitiesPanel.unit', message: 'Unit' }), children: _jsx(PanelSelect, { label: i18n._({ id: 'node.zone.quantitiesPanel.unit', message: 'Unit' }), onChange: handleChange, options: [
|
|
86
|
+
{ label: i18n._({ id: 'node.zone.quantitiesPanel.none', message: 'None' }), value: '' },
|
|
87
|
+
...units.map((unit) => ({
|
|
88
|
+
label: unit.name || i18n._({ id: 'node.zone.quantitiesPanel.unit', message: 'Unit' }),
|
|
89
|
+
value: unit.id,
|
|
90
|
+
})),
|
|
77
91
|
], value: current?.id ?? '' }) }));
|
|
78
92
|
}
|
|
79
93
|
export default function ZoneQuantitiesPanel() {
|
|
94
|
+
const i18n = usePascalI18n();
|
|
80
95
|
const selectedZoneId = useViewer((state) => state.selection.zoneId);
|
|
81
96
|
const unit = useViewer((state) => state.unit);
|
|
82
97
|
const metricNotation = useViewer((state) => state.metricNotation);
|
|
@@ -101,5 +116,15 @@ export default function ZoneQuantitiesPanel() {
|
|
|
101
116
|
const report = useMemo(() => (effectiveZone ? deriveZoneQuantityReport(effectiveZone, effectiveNodes) : null), [effectiveNodes, effectiveZone]);
|
|
102
117
|
if (!effectiveZone || !report)
|
|
103
118
|
return null;
|
|
104
|
-
return (_jsxs(_Fragment, { children: [_jsx(ZoneUnitPanel, { zone: effectiveZone }), _jsxs(PanelSection, { title: effectiveZone.spaceRole === 'room'
|
|
119
|
+
return (_jsxs(_Fragment, { children: [_jsx(ZoneUnitPanel, { zone: effectiveZone }), _jsxs(PanelSection, { title: effectiveZone.spaceRole === 'room'
|
|
120
|
+
? i18n._({ id: 'node.zone.quantitiesPanel.roomQuantities', message: 'Room quantities' })
|
|
121
|
+
: i18n._({ id: 'node.zone.quantitiesPanel.zoneQuantities', message: 'Zone quantities' }), children: [_jsxs("div", { className: "overflow-hidden rounded-md border border-cyan-950/20 bg-[#f8faf7] text-slate-950", children: [_jsxs("div", { className: "flex items-center border-cyan-950/15 border-b px-2.5 py-2", children: [_jsx("span", { className: "font-semibold text-[11px]", children: displayRoomName(effectiveZone.name ?? '', i18n) }), _jsx("span", { className: "ml-auto rounded-full border border-cyan-800/25 bg-cyan-50 px-2 py-0.5 text-cyan-900 text-[9px]", children: report.classification === 'enclosed-room'
|
|
122
|
+
? i18n._({ id: 'node.zone.quantitiesPanel.enclosedRoom', message: 'Enclosed room' })
|
|
123
|
+
: i18n._({
|
|
124
|
+
id: 'node.zone.quantitiesPanel.footprintOnly',
|
|
125
|
+
message: 'Footprint only',
|
|
126
|
+
}) })] }), _jsxs("div", { className: "flex items-baseline gap-2 px-2.5 py-2 font-mono text-[10px]", children: [_jsx("span", { className: "text-cyan-800", children: "A" }), _jsx("span", { children: formatAreaLabel(report.footprintArea, unit, 2) }), _jsx("span", { className: "ml-auto text-slate-600", children: "P" }), _jsx("span", { children: formatLinearMeasurement(report.perimeter, unit, metricNotation) })] })] }), _jsx(ZonePlanSketch, { edgeLengths: report.edgeLengths, metricNotation: metricNotation, polygon: effectiveZone.polygon, unit: unit }), _jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx(QuantityRow, { abbreviation: "Aw", format: (value) => formatAreaLabel(value, unit, 2), label: i18n._({ id: 'node.zone.quantitiesPanel.wallSurface', message: 'Wall surface' }), quantity: report.wallSurface }), _jsx(QuantityRow, { abbreviation: "Af", format: (value) => formatAreaLabel(value, unit, 2), label: i18n._({
|
|
127
|
+
id: 'node.zone.quantitiesPanel.floorSurface',
|
|
128
|
+
message: 'Floor surface',
|
|
129
|
+
}), quantity: report.floorSurface }), _jsx(QuantityRow, { abbreviation: "V", format: (value) => formatVolumeLabel(value, unit, 2), label: i18n._({ id: 'node.zone.quantitiesPanel.volume', message: 'Volume' }), quantity: report.volume })] })] })] }));
|
|
105
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/zone/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/zone/renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAA;AA8DzB,eAAO,MAAM,YAAY,aAAc;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,gCAWxD,CAAA;eA0Jc,YAAY"}
|
package/dist/zone/renderer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { polygonInteriorPoint, useLiveNodeOverrides, useRegistry, useScene, } from '@pascal-app/core';
|
|
3
|
+
import { FLOOR_SCRIPT_LIFT, floorScriptSurface, polygonInteriorPoint, useLiveNodeOverrides, useRegistry, useScene, } from '@pascal-app/core';
|
|
4
4
|
import { createZoneShape, createZoneWallGeometry, useNodeEvents, useViewer, ZONE_LAYER, } from '@pascal-app/viewer';
|
|
5
5
|
import { Html } from '@react-three/drei';
|
|
6
6
|
import { useEffect, useMemo, useRef } from 'react';
|
|
@@ -56,11 +56,15 @@ export const ZoneRenderer = ({ node }) => {
|
|
|
56
56
|
const script = node.floor?.script;
|
|
57
57
|
return (_jsxs("group", { ref: ref, visible: node.visible !== false, children: [showZones ? _jsx(ZoneVisuals, { node: node }) : null, script ? _jsx(FloorScriptModel, { node: node, script: script }) : null] }));
|
|
58
58
|
};
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
/**
|
|
60
|
+
* The room's floor finish its script built: in the level's plan, its y = 0 on the floor plate's
|
|
61
|
+
* top. A room with no plate has no floor for it to stand on.
|
|
62
|
+
*/
|
|
62
63
|
function FloorScriptModel({ node, script }) {
|
|
63
|
-
|
|
64
|
+
const surface = useScene((state) => floorScriptSurface(state.nodes, node.id));
|
|
65
|
+
if (surface === null)
|
|
66
|
+
return null;
|
|
67
|
+
return (_jsx("group", { "position-y": surface + FLOOR_SCRIPT_LIFT, children: _jsx(FinishScriptModel, { ownerId: node.id, parentId: node.parentId, script: script }) }));
|
|
64
68
|
}
|
|
65
69
|
function ZoneVisuals({ node }) {
|
|
66
70
|
// Group-transform drags publish a translated/rotated polygon to
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pascal-app/nodes",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "Built-in node bundles for the Pascal 3D editor — one folder per kind, exported as `builtinPlugin`",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -38,31 +38,31 @@
|
|
|
38
38
|
"prepublishOnly": "bun run build && bun test"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@pascal-app/core": "^1.0.
|
|
42
|
-
"@pascal-app/editor": "^1.0.
|
|
43
|
-
"@pascal-app/viewer": "^1.0.
|
|
41
|
+
"@pascal-app/core": "^1.0.7",
|
|
42
|
+
"@pascal-app/editor": "^1.0.7",
|
|
43
|
+
"@pascal-app/viewer": "^1.0.7",
|
|
44
44
|
"@react-three/drei": "^10",
|
|
45
45
|
"@react-three/fiber": "^9",
|
|
46
46
|
"lucide-react": "^1",
|
|
47
47
|
"react": "^18 || ^19",
|
|
48
48
|
"react-dom": "^18 || ^19",
|
|
49
|
-
"three": "^0.
|
|
49
|
+
"three": "^0.187",
|
|
50
50
|
"zustand": "^5"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@modelcontextprotocol/client": "^2.
|
|
54
|
-
"@modelcontextprotocol/server": "^2.
|
|
55
|
-
"@pascal-app/core": "^1.0.
|
|
56
|
-
"@pascal-app/editor": "^1.0.
|
|
57
|
-
"@pascal-app/mcp": "^1.0.
|
|
58
|
-
"@pascal-app/viewer": "^1.0.
|
|
53
|
+
"@modelcontextprotocol/client": "^2.4.0",
|
|
54
|
+
"@modelcontextprotocol/server": "^2.4.0",
|
|
55
|
+
"@pascal-app/core": "^1.0.7",
|
|
56
|
+
"@pascal-app/editor": "^1.0.7",
|
|
57
|
+
"@pascal-app/mcp": "^1.0.7",
|
|
58
|
+
"@pascal-app/viewer": "^1.0.7",
|
|
59
59
|
"@pascal/typescript-config": "*",
|
|
60
60
|
"@react-three/test-renderer": "^9.1.1",
|
|
61
|
-
"@types/bun": "^1.4.
|
|
62
|
-
"@types/node": "^26.6.
|
|
61
|
+
"@types/bun": "^1.4.4",
|
|
62
|
+
"@types/node": "^26.6.6",
|
|
63
63
|
"@types/react": "19.3.0",
|
|
64
64
|
"@types/react-dom": "19.3.0",
|
|
65
|
-
"@types/three": "^0.
|
|
65
|
+
"@types/three": "^0.187",
|
|
66
66
|
"typescript": "7.0.2"
|
|
67
67
|
},
|
|
68
68
|
"keywords": [
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { FoundationMember } from '@pascal-app/core';
|
|
2
|
-
/** The foundation members of one kind as one indexed mesh, in world coordinates. */
|
|
3
|
-
export type FoundationMesh = {
|
|
4
|
-
positions: Float32Array;
|
|
5
|
-
normals: Float32Array;
|
|
6
|
-
/** Metres along the run, for the courses of block to bond along the wall. */
|
|
7
|
-
along: Float32Array;
|
|
8
|
-
indices: Uint32Array;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* The runs of `kind` as closed boxes, six faces each with its own flat normal. A run is a prism on
|
|
12
|
-
* the plan line `from` to `to`, `width` across, from `bottomY` to `topY`. Corners are closed by the
|
|
13
|
-
* runs themselves (they overlap), so the boxes carry no joins.
|
|
14
|
-
*/
|
|
15
|
-
export declare function buildFoundationMesh(members: readonly FoundationMember[], kind: FoundationMember['kind']): FoundationMesh | null;
|
|
16
|
-
//# sourceMappingURL=generic-foundation-geometry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generic-foundation-geometry.d.ts","sourceRoot":"","sources":["../../src/site/generic-foundation-geometry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,oFAAoF;AACpF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,YAAY,CAAA;IACrB,6EAA6E;IAC7E,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,WAAW,CAAA;CACrB,CAAA;AAYD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EACpC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAC7B,cAAc,GAAG,IAAI,CA6DvB"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
const sub = (a, b) => [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
2
|
-
const cross = (a, b) => [
|
|
3
|
-
a[1] * b[2] - a[2] * b[1],
|
|
4
|
-
a[2] * b[0] - a[0] * b[2],
|
|
5
|
-
a[0] * b[1] - a[1] * b[0],
|
|
6
|
-
];
|
|
7
|
-
const dot = (a, b) => a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
|
8
|
-
/**
|
|
9
|
-
* The runs of `kind` as closed boxes, six faces each with its own flat normal. A run is a prism on
|
|
10
|
-
* the plan line `from` to `to`, `width` across, from `bottomY` to `topY`. Corners are closed by the
|
|
11
|
-
* runs themselves (they overlap), so the boxes carry no joins.
|
|
12
|
-
*/
|
|
13
|
-
export function buildFoundationMesh(members, kind) {
|
|
14
|
-
const runs = members.filter((member) => member.kind === kind);
|
|
15
|
-
if (runs.length === 0)
|
|
16
|
-
return null;
|
|
17
|
-
const positions = [];
|
|
18
|
-
const normals = [];
|
|
19
|
-
const along = [];
|
|
20
|
-
const indices = [];
|
|
21
|
-
const quad = (corners, outward, alongAt) => {
|
|
22
|
-
const [a, b, c] = corners;
|
|
23
|
-
const facing = dot(cross(sub(b, a), sub(c, a)), outward) >= 0;
|
|
24
|
-
const order = facing ? [0, 1, 2, 3] : [0, 3, 2, 1];
|
|
25
|
-
const base = positions.length / 3;
|
|
26
|
-
for (const index of order) {
|
|
27
|
-
positions.push(...corners[index]);
|
|
28
|
-
normals.push(...outward);
|
|
29
|
-
along.push(alongAt[index]);
|
|
30
|
-
}
|
|
31
|
-
indices.push(base, base + 1, base + 2, base, base + 2, base + 3);
|
|
32
|
-
};
|
|
33
|
-
for (const { from, to, width, bottomY, topY } of runs) {
|
|
34
|
-
const dx = to[0] - from[0];
|
|
35
|
-
const dz = to[1] - from[1];
|
|
36
|
-
const length = Math.hypot(dx, dz);
|
|
37
|
-
if (length < 1e-9 || topY - bottomY < 1e-9)
|
|
38
|
-
continue;
|
|
39
|
-
const [ux, uz] = [dx / length, dz / length];
|
|
40
|
-
const [nx, nz] = [-uz, ux];
|
|
41
|
-
const half = width / 2;
|
|
42
|
-
const at = (end, side, y) => [
|
|
43
|
-
end[0] + nx * half * side,
|
|
44
|
-
y,
|
|
45
|
-
end[1] + nz * half * side,
|
|
46
|
-
];
|
|
47
|
-
const [a0, a1, a2, a3] = [
|
|
48
|
-
at(from, 1, bottomY),
|
|
49
|
-
at(to, 1, bottomY),
|
|
50
|
-
at(to, -1, bottomY),
|
|
51
|
-
at(from, -1, bottomY),
|
|
52
|
-
];
|
|
53
|
-
const [b0, b1, b2, b3] = [
|
|
54
|
-
at(from, 1, topY),
|
|
55
|
-
at(to, 1, topY),
|
|
56
|
-
at(to, -1, topY),
|
|
57
|
-
at(from, -1, topY),
|
|
58
|
-
];
|
|
59
|
-
const run = [0, length, length, 0];
|
|
60
|
-
quad([b0, b1, b2, b3], [0, 1, 0], run);
|
|
61
|
-
quad([a0, a1, a2, a3], [0, -1, 0], run);
|
|
62
|
-
quad([a0, a1, b1, b0], [nx, 0, nz], [0, length, length, 0]);
|
|
63
|
-
quad([a3, a2, b2, b3], [-nx, 0, -nz], [0, length, length, 0]);
|
|
64
|
-
quad([a0, a3, b3, b0], [-ux, 0, -uz], [0, 0, 0, 0]);
|
|
65
|
-
quad([a1, a2, b2, b1], [ux, 0, uz], [length, length, length, length]);
|
|
66
|
-
}
|
|
67
|
-
if (indices.length === 0)
|
|
68
|
-
return null;
|
|
69
|
-
return {
|
|
70
|
-
positions: new Float32Array(positions),
|
|
71
|
-
normals: new Float32Array(normals),
|
|
72
|
-
along: new Float32Array(along),
|
|
73
|
-
indices: new Uint32Array(indices),
|
|
74
|
-
};
|
|
75
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { type FoundationMember } from '@pascal-app/core';
|
|
2
|
-
export declare function sameFoundation(a: readonly FoundationMember[], b: readonly FoundationMember[]): boolean;
|
|
3
|
-
export declare function GenericFoundation(): import("react").JSX.Element;
|
|
4
|
-
//# sourceMappingURL=generic-foundation.d.ts.map
|