@pascal-app/nodes 1.0.7 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -8
- package/dist/agent-operations/index.d.ts +5 -0
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +10 -0
- package/dist/agent-tools/index.d.ts +195 -0
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +82 -2
- package/dist/beam/definition.d.ts +64 -13
- package/dist/beam/definition.d.ts.map +1 -1
- package/dist/beam/definition.edit.d.ts +4 -0
- package/dist/beam/definition.edit.d.ts.map +1 -0
- package/dist/beam/definition.edit.js +131 -0
- package/dist/beam/definition.js +4 -173
- package/dist/beam/definition.render.d.ts +6 -0
- package/dist/beam/definition.render.d.ts.map +1 -0
- package/dist/beam/definition.render.js +34 -0
- package/dist/beam/floorplan.d.ts.map +1 -1
- package/dist/beam/floorplan.js +1 -2
- package/dist/beam/panel.d.ts.map +1 -1
- package/dist/beam/panel.js +2 -2
- package/dist/beam/tool.d.ts.map +1 -1
- package/dist/beam/tool.js +2 -2
- package/dist/block/definition.d.ts +67 -7
- package/dist/block/definition.d.ts.map +1 -1
- package/dist/block/definition.edit.d.ts +4 -0
- package/dist/block/definition.edit.d.ts.map +1 -0
- package/dist/block/definition.edit.js +26 -0
- package/dist/block/definition.js +5 -144
- package/dist/block/definition.render.d.ts +11 -0
- package/dist/block/definition.render.d.ts.map +1 -0
- package/dist/block/definition.render.js +122 -0
- package/dist/block/floorplan.d.ts.map +1 -1
- package/dist/block/floorplan.js +1 -2
- package/dist/box-vent/definition.d.ts +103 -29
- package/dist/box-vent/definition.d.ts.map +1 -1
- package/dist/box-vent/definition.edit.d.ts +4 -0
- package/dist/box-vent/definition.edit.d.ts.map +1 -0
- package/dist/box-vent/definition.edit.js +149 -0
- package/dist/box-vent/definition.js +4 -212
- package/dist/box-vent/definition.render.d.ts +6 -0
- package/dist/box-vent/definition.render.d.ts.map +1 -0
- package/dist/box-vent/definition.render.js +42 -0
- package/dist/box-vent/move-tool.d.ts.map +1 -1
- package/dist/box-vent/move-tool.js +6 -5
- package/dist/building/definition.d.ts +49 -11
- package/dist/building/definition.d.ts.map +1 -1
- package/dist/building/definition.edit.d.ts +4 -0
- package/dist/building/definition.edit.d.ts.map +1 -0
- package/dist/building/definition.edit.js +10 -0
- package/dist/building/definition.js +4 -54
- package/dist/building/definition.render.d.ts +6 -0
- package/dist/building/definition.render.d.ts.map +1 -0
- package/dist/building/definition.render.js +38 -0
- package/dist/builtin-definitions.d.ts +9784 -0
- package/dist/builtin-definitions.d.ts.map +1 -0
- package/dist/builtin-definitions.js +113 -0
- package/dist/builtin-edit-contributions.d.ts +9608 -0
- package/dist/builtin-edit-contributions.d.ts.map +1 -0
- package/dist/builtin-edit-contributions.js +112 -0
- package/dist/builtin-plugin-metadata.d.ts +5 -0
- package/dist/builtin-plugin-metadata.d.ts.map +1 -0
- package/dist/builtin-plugin-metadata.js +1 -0
- package/dist/cabinet/definition.d.ts +497 -25
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.edit.d.ts +5 -0
- package/dist/cabinet/definition.edit.d.ts.map +1 -0
- package/dist/cabinet/definition.edit.js +1372 -0
- package/dist/cabinet/definition.js +6 -2115
- package/dist/cabinet/definition.render.d.ts +66 -0
- package/dist/cabinet/definition.render.d.ts.map +1 -0
- package/dist/cabinet/definition.render.js +754 -0
- package/dist/cabinet/floorplan.js +1 -1
- package/dist/cabinet/kitchen-module-actions.d.ts.map +1 -1
- package/dist/cabinet/kitchen-module-actions.js +2 -2
- package/dist/cabinet/placement-dimensions.d.ts +36 -2
- package/dist/cabinet/placement-dimensions.d.ts.map +1 -1
- package/dist/cabinet/placement-dimensions.js +68 -2
- package/dist/cabinet/system.js +1 -1
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +268 -15
- package/dist/cabinet/wall-snap.d.ts +5 -1
- package/dist/cabinet/wall-snap.d.ts.map +1 -1
- package/dist/cabinet/wall-snap.js +2 -2
- package/dist/ceiling/definition.d.ts +152 -19
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.edit.d.ts +4 -0
- package/dist/ceiling/definition.edit.d.ts.map +1 -0
- package/dist/ceiling/definition.edit.js +123 -0
- package/dist/ceiling/definition.js +4 -207
- package/dist/ceiling/definition.render.d.ts +6 -0
- package/dist/ceiling/definition.render.d.ts.map +1 -0
- package/dist/ceiling/definition.render.js +73 -0
- package/dist/ceiling/panel.js +2 -2
- package/dist/chimney/definition.d.ts +186 -17
- package/dist/chimney/definition.d.ts.map +1 -1
- package/dist/chimney/definition.edit.d.ts +4 -0
- package/dist/chimney/definition.edit.d.ts.map +1 -0
- package/dist/chimney/definition.edit.js +217 -0
- package/dist/chimney/definition.js +4 -390
- package/dist/chimney/definition.render.d.ts +6 -0
- package/dist/chimney/definition.render.d.ts.map +1 -0
- package/dist/chimney/definition.render.js +61 -0
- package/dist/chimney/move-tool.d.ts.map +1 -1
- package/dist/chimney/move-tool.js +6 -4
- package/dist/chimney/panel.js +1 -1
- package/dist/column/__bench__/geometry.d.ts +2 -0
- package/dist/column/__bench__/geometry.d.ts.map +1 -0
- package/dist/column/__bench__/geometry.js +36 -0
- package/dist/column/bounds.d.ts +7 -0
- package/dist/column/bounds.d.ts.map +1 -0
- package/dist/column/bounds.js +127 -0
- package/dist/column/definition.d.ts +372 -20
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.edit.d.ts +4 -0
- package/dist/column/definition.edit.d.ts.map +1 -0
- package/dist/column/definition.edit.js +320 -0
- package/dist/column/definition.js +4 -439
- package/dist/column/definition.render.d.ts +6 -0
- package/dist/column/definition.render.d.ts.map +1 -0
- package/dist/column/definition.render.js +84 -0
- package/dist/column/edit-policy.d.ts +5 -0
- package/dist/column/edit-policy.d.ts.map +1 -0
- package/dist/column/edit-policy.js +43 -0
- package/dist/column/floorplan-affordances.d.ts.map +1 -1
- package/dist/column/floorplan-affordances.js +2 -0
- package/dist/column/floorplan-move.d.ts.map +1 -1
- package/dist/column/floorplan-move.js +5 -1
- package/dist/column/floorplan.d.ts.map +1 -1
- package/dist/column/floorplan.js +34 -93
- package/dist/column/geometry.d.ts +13 -0
- package/dist/column/geometry.d.ts.map +1 -0
- package/dist/column/geometry.js +294 -0
- package/dist/column/hosted-resize.d.ts +3 -2
- package/dist/column/hosted-resize.d.ts.map +1 -1
- package/dist/column/hosted-resize.js +7 -1
- package/dist/column/inspector-highlight.d.ts +29 -0
- package/dist/column/inspector-highlight.d.ts.map +1 -0
- package/dist/column/inspector-highlight.js +166 -0
- package/dist/column/paint.d.ts.map +1 -1
- package/dist/column/paint.js +12 -2
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +451 -363
- package/dist/column/parametrics.js +1 -1
- package/dist/column/post-section.d.ts.map +1 -1
- package/dist/column/post-section.js +2 -2
- package/dist/column/preset-gallery.d.ts +8 -0
- package/dist/column/preset-gallery.d.ts.map +1 -0
- package/dist/column/preset-gallery.js +98 -0
- package/dist/column/presets.d.ts +16 -0
- package/dist/column/presets.d.ts.map +1 -0
- package/dist/column/presets.js +96 -0
- package/dist/column/property-preview.d.ts +8 -0
- package/dist/column/property-preview.d.ts.map +1 -0
- package/dist/column/property-preview.js +50 -0
- package/dist/column/renderer.d.ts +13 -1
- package/dist/column/renderer.d.ts.map +1 -1
- package/dist/column/renderer.js +174 -198
- package/dist/column/shape.d.ts +4 -4
- package/dist/column/shape.d.ts.map +1 -1
- package/dist/column/shape.js +1 -1
- package/dist/column/surface.d.ts.map +1 -1
- package/dist/column/surface.js +15 -8
- package/dist/column/tool.d.ts.map +1 -1
- package/dist/column/tool.js +21 -10
- package/dist/construction-dimension/definition.d.ts +129 -3
- package/dist/construction-dimension/definition.d.ts.map +1 -1
- package/dist/construction-dimension/definition.edit.d.ts +4 -0
- package/dist/construction-dimension/definition.edit.d.ts.map +1 -0
- package/dist/construction-dimension/definition.edit.js +30 -0
- package/dist/construction-dimension/definition.js +4 -83
- package/dist/construction-dimension/definition.render.d.ts +6 -0
- package/dist/construction-dimension/definition.render.d.ts.map +1 -0
- package/dist/construction-dimension/definition.render.js +55 -0
- package/dist/construction-dimension/floorplan-tool.d.ts.map +1 -1
- package/dist/construction-dimension/floorplan-tool.js +2 -2
- package/dist/construction-dimension/floorplan.d.ts.map +1 -1
- package/dist/construction-dimension/floorplan.js +1 -2
- package/dist/cupola/definition.d.ts +95 -10
- package/dist/cupola/definition.d.ts.map +1 -1
- package/dist/cupola/definition.edit.d.ts +4 -0
- package/dist/cupola/definition.edit.d.ts.map +1 -0
- package/dist/cupola/definition.edit.js +101 -0
- package/dist/cupola/definition.js +4 -148
- package/dist/cupola/definition.render.d.ts +6 -0
- package/dist/cupola/definition.render.d.ts.map +1 -0
- package/dist/cupola/definition.render.js +45 -0
- package/dist/cupola/move-tool.d.ts.map +1 -1
- package/dist/cupola/move-tool.js +6 -5
- package/dist/definition-contributions.d.ts +14 -0
- package/dist/definition-contributions.d.ts.map +1 -0
- package/dist/definition-contributions.js +8 -0
- package/dist/door/definition.d.ts +350 -22
- package/dist/door/definition.d.ts.map +1 -1
- package/dist/door/definition.edit.d.ts +4 -0
- package/dist/door/definition.edit.d.ts.map +1 -0
- package/dist/door/definition.edit.js +241 -0
- package/dist/door/definition.js +4 -341
- package/dist/door/definition.render.d.ts +6 -0
- package/dist/door/definition.render.d.ts.map +1 -0
- package/dist/door/definition.render.js +94 -0
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +11 -8
- package/dist/door/floorplan.d.ts.map +1 -1
- package/dist/door/floorplan.js +1 -2
- package/dist/door/mechanism.d.ts.map +1 -1
- package/dist/door/mechanism.js +1 -2
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +25 -23
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +2 -1
- package/dist/dormer/definition.d.ts +240 -11
- package/dist/dormer/definition.d.ts.map +1 -1
- package/dist/dormer/definition.edit.d.ts +4 -0
- package/dist/dormer/definition.edit.d.ts.map +1 -0
- package/dist/dormer/definition.edit.js +212 -0
- package/dist/dormer/definition.js +4 -319
- package/dist/dormer/definition.render.d.ts +6 -0
- package/dist/dormer/definition.render.d.ts.map +1 -0
- package/dist/dormer/definition.render.js +54 -0
- package/dist/dormer/panel-position-section.js +1 -1
- package/dist/downspout/definition.d.ts +108 -16
- package/dist/downspout/definition.d.ts.map +1 -1
- package/dist/downspout/definition.edit.d.ts +4 -0
- package/dist/downspout/definition.edit.d.ts.map +1 -0
- package/dist/downspout/definition.edit.js +134 -0
- package/dist/downspout/definition.js +4 -188
- package/dist/downspout/definition.render.d.ts +6 -0
- package/dist/downspout/definition.render.d.ts.map +1 -0
- package/dist/downspout/definition.render.js +46 -0
- package/dist/duct-fitting/definition.d.ts +99 -11
- package/dist/duct-fitting/definition.d.ts.map +1 -1
- package/dist/duct-fitting/definition.edit.d.ts +4 -0
- package/dist/duct-fitting/definition.edit.d.ts.map +1 -0
- package/dist/duct-fitting/definition.edit.js +47 -0
- package/dist/duct-fitting/definition.js +4 -135
- package/dist/duct-fitting/definition.render.d.ts +6 -0
- package/dist/duct-fitting/definition.render.d.ts.map +1 -0
- package/dist/duct-fitting/definition.render.js +84 -0
- package/dist/duct-fitting/floorplan.js +1 -1
- package/dist/duct-fitting/geometry.js +2 -1
- package/dist/duct-fitting/move-tool.d.ts.map +1 -1
- package/dist/duct-fitting/move-tool.js +19 -13
- package/dist/duct-fitting/selection.d.ts.map +1 -1
- package/dist/duct-fitting/selection.js +92 -80
- package/dist/duct-segment/continuation-handle.d.ts +8 -0
- package/dist/duct-segment/continuation-handle.d.ts.map +1 -0
- package/dist/duct-segment/continuation-handle.js +36 -0
- package/dist/duct-segment/continuation.d.ts +3 -7
- package/dist/duct-segment/continuation.d.ts.map +1 -1
- package/dist/duct-segment/continuation.js +54 -37
- package/dist/duct-segment/definition.d.ts +91 -3
- package/dist/duct-segment/definition.d.ts.map +1 -1
- package/dist/duct-segment/definition.edit.d.ts +4 -0
- package/dist/duct-segment/definition.edit.d.ts.map +1 -0
- package/dist/duct-segment/definition.edit.js +98 -0
- package/dist/duct-segment/definition.js +4 -181
- package/dist/duct-segment/definition.render.d.ts +6 -0
- package/dist/duct-segment/definition.render.d.ts.map +1 -0
- package/dist/duct-segment/definition.render.js +91 -0
- package/dist/duct-segment/edit-inspector.d.ts +5 -0
- package/dist/duct-segment/edit-inspector.d.ts.map +1 -0
- package/dist/duct-segment/edit-inspector.js +163 -0
- package/dist/duct-segment/edit-operation.d.ts +17 -0
- package/dist/duct-segment/edit-operation.d.ts.map +1 -0
- package/dist/duct-segment/edit-operation.js +283 -0
- package/dist/duct-segment/floorplan.js +2 -2
- package/dist/duct-segment/geometry.d.ts +0 -40
- package/dist/duct-segment/geometry.d.ts.map +1 -1
- package/dist/duct-segment/geometry.js +2 -77
- package/dist/duct-segment/move-tool.d.ts.map +1 -1
- package/dist/duct-segment/move-tool.js +34 -35
- package/dist/duct-segment/parametrics.d.ts.map +1 -1
- package/dist/duct-segment/parametrics.js +2 -35
- package/dist/duct-segment/profile.d.ts +42 -0
- package/dist/duct-segment/profile.d.ts.map +1 -0
- package/dist/duct-segment/profile.js +78 -0
- package/dist/duct-segment/selection.d.ts.map +1 -1
- package/dist/duct-segment/selection.js +114 -54
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +105 -28
- package/dist/duct-terminal/definition.d.ts +68 -12
- package/dist/duct-terminal/definition.d.ts.map +1 -1
- package/dist/duct-terminal/definition.edit.d.ts +4 -0
- package/dist/duct-terminal/definition.edit.d.ts.map +1 -0
- package/dist/duct-terminal/definition.edit.js +12 -0
- package/dist/duct-terminal/definition.js +4 -87
- package/dist/duct-terminal/definition.render.d.ts +6 -0
- package/dist/duct-terminal/definition.render.d.ts.map +1 -0
- package/dist/duct-terminal/definition.render.js +68 -0
- package/dist/duct-terminal/geometry.d.ts.map +1 -1
- package/dist/duct-terminal/geometry.js +2 -1
- package/dist/duct-terminal/parametrics.d.ts.map +1 -1
- package/dist/duct-terminal/parametrics.js +1 -0
- package/dist/duct-terminal/ports.js +1 -1
- package/dist/elevator/__bench__/runtime.d.ts +2 -0
- package/dist/elevator/__bench__/runtime.d.ts.map +1 -0
- package/dist/elevator/__bench__/runtime.js +38 -0
- package/dist/elevator/definition.d.ts +117 -10
- package/dist/elevator/definition.d.ts.map +1 -1
- package/dist/elevator/definition.edit.d.ts +4 -0
- package/dist/elevator/definition.edit.d.ts.map +1 -0
- package/dist/elevator/definition.edit.js +167 -0
- package/dist/elevator/definition.js +4 -258
- package/dist/elevator/definition.render.d.ts +11 -0
- package/dist/elevator/definition.render.d.ts.map +1 -0
- package/dist/elevator/definition.render.js +106 -0
- package/dist/elevator/floorplan-affordances.d.ts.map +1 -1
- package/dist/elevator/floorplan-affordances.js +11 -9
- package/dist/elevator/floorplan.d.ts +19 -0
- package/dist/elevator/floorplan.d.ts.map +1 -1
- package/dist/elevator/floorplan.js +3 -9
- package/dist/elevator/inspection.d.ts +17 -0
- package/dist/elevator/inspection.d.ts.map +1 -0
- package/dist/elevator/inspection.js +78 -0
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +152 -100
- package/dist/elevator/parametrics.d.ts +1 -1
- package/dist/elevator/parametrics.d.ts.map +1 -1
- package/dist/elevator/parametrics.js +7 -10
- package/dist/elevator/presets.d.ts +17 -0
- package/dist/elevator/presets.d.ts.map +1 -0
- package/dist/elevator/presets.js +52 -0
- package/dist/elevator/renderer.d.ts +2 -1
- package/dist/elevator/renderer.d.ts.map +1 -1
- package/dist/elevator/renderer.edit.d.ts +5 -0
- package/dist/elevator/renderer.edit.d.ts.map +1 -0
- package/dist/elevator/renderer.edit.js +8 -0
- package/dist/elevator/renderer.js +159 -60
- package/dist/elevator/tool.d.ts +2 -0
- package/dist/elevator/tool.d.ts.map +1 -0
- package/dist/elevator/tool.js +250 -0
- package/dist/eyebrow-vent/definition.d.ts +97 -11
- package/dist/eyebrow-vent/definition.d.ts.map +1 -1
- package/dist/eyebrow-vent/definition.edit.d.ts +4 -0
- package/dist/eyebrow-vent/definition.edit.d.ts.map +1 -0
- package/dist/eyebrow-vent/definition.edit.js +104 -0
- package/dist/eyebrow-vent/definition.js +4 -152
- package/dist/eyebrow-vent/definition.render.d.ts +6 -0
- package/dist/eyebrow-vent/definition.render.d.ts.map +1 -0
- package/dist/eyebrow-vent/definition.render.js +45 -0
- package/dist/eyebrow-vent/move-tool.d.ts.map +1 -1
- package/dist/eyebrow-vent/move-tool.js +6 -5
- package/dist/fence/definition.d.ts +186 -17
- package/dist/fence/definition.d.ts.map +1 -1
- package/dist/fence/definition.edit.d.ts +4 -0
- package/dist/fence/definition.edit.d.ts.map +1 -0
- package/dist/fence/definition.edit.js +276 -0
- package/dist/fence/definition.js +5 -413
- package/dist/fence/definition.render.d.ts +8 -0
- package/dist/fence/definition.render.d.ts.map +1 -0
- package/dist/fence/definition.render.js +126 -0
- package/dist/fence/move-endpoint-tool.d.ts.map +1 -1
- package/dist/fence/move-endpoint-tool.js +2 -2
- package/dist/fence/tool.js +2 -2
- package/dist/fence-feature/definition.d.ts +270 -3
- package/dist/fence-feature/definition.d.ts.map +1 -1
- package/dist/fence-feature/definition.edit.d.ts +5 -0
- package/dist/fence-feature/definition.edit.d.ts.map +1 -0
- package/dist/fence-feature/definition.edit.js +66 -0
- package/dist/fence-feature/definition.js +5 -116
- package/dist/fence-feature/definition.render.d.ts +9 -0
- package/dist/fence-feature/definition.render.d.ts.map +1 -0
- package/dist/fence-feature/definition.render.js +72 -0
- package/dist/floor-opening/definition.d.ts +58 -2
- package/dist/floor-opening/definition.d.ts.map +1 -1
- package/dist/floor-opening/definition.edit.d.ts +4 -0
- package/dist/floor-opening/definition.edit.d.ts.map +1 -0
- package/dist/floor-opening/definition.edit.js +9 -0
- package/dist/floor-opening/definition.js +4 -41
- package/dist/floor-opening/definition.render.d.ts +6 -0
- package/dist/floor-opening/definition.render.d.ts.map +1 -0
- package/dist/floor-opening/definition.render.js +35 -0
- package/dist/floor-opening/floorplan-affordances.d.ts +150 -0
- package/dist/floor-opening/floorplan-affordances.d.ts.map +1 -0
- package/dist/floor-opening/floorplan-affordances.js +67 -0
- package/dist/floor-opening/floorplan.d.ts +2 -151
- package/dist/floor-opening/floorplan.d.ts.map +1 -1
- package/dist/floor-opening/floorplan.js +0 -66
- package/dist/guide/definition.d.ts +65 -9
- package/dist/guide/definition.d.ts.map +1 -1
- package/dist/guide/definition.edit.d.ts +4 -0
- package/dist/guide/definition.edit.d.ts.map +1 -0
- package/dist/guide/definition.edit.js +4 -0
- package/dist/guide/definition.js +4 -53
- package/dist/guide/definition.render.d.ts +6 -0
- package/dist/guide/definition.render.d.ts.map +1 -0
- package/dist/guide/definition.render.js +45 -0
- package/dist/gutter/definition.d.ts +113 -18
- package/dist/gutter/definition.d.ts.map +1 -1
- package/dist/gutter/definition.edit.d.ts +4 -0
- package/dist/gutter/definition.edit.d.ts.map +1 -0
- package/dist/gutter/definition.edit.js +119 -0
- package/dist/gutter/definition.js +4 -176
- package/dist/gutter/definition.render.d.ts +6 -0
- package/dist/gutter/definition.render.d.ts.map +1 -0
- package/dist/gutter/definition.render.js +46 -0
- package/dist/gutter/move-tool.d.ts.map +1 -1
- package/dist/gutter/move-tool.js +5 -4
- package/dist/hvac-equipment/definition.d.ts +72 -12
- package/dist/hvac-equipment/definition.d.ts.map +1 -1
- package/dist/hvac-equipment/definition.edit.d.ts +4 -0
- package/dist/hvac-equipment/definition.edit.d.ts.map +1 -0
- package/dist/hvac-equipment/definition.edit.js +11 -0
- package/dist/hvac-equipment/definition.js +4 -92
- package/dist/hvac-equipment/definition.render.d.ts +6 -0
- package/dist/hvac-equipment/definition.render.d.ts.map +1 -0
- package/dist/hvac-equipment/definition.render.js +74 -0
- package/dist/hvac-equipment/floorplan.js +1 -1
- package/dist/hvac-equipment/geometry.d.ts.map +1 -1
- package/dist/hvac-equipment/geometry.js +2 -1
- package/dist/hvac-equipment/parametrics.d.ts.map +1 -1
- package/dist/hvac-equipment/parametrics.js +1 -0
- package/dist/hvac-equipment/ports.js +1 -1
- package/dist/i18n/definition-messages.js +1 -1
- package/dist/imported-mesh/definition.d.ts +54 -4
- package/dist/imported-mesh/definition.d.ts.map +1 -1
- package/dist/imported-mesh/definition.edit.d.ts +4 -0
- package/dist/imported-mesh/definition.edit.d.ts.map +1 -0
- package/dist/imported-mesh/definition.edit.js +3 -0
- package/dist/imported-mesh/definition.js +4 -40
- package/dist/imported-mesh/definition.render.d.ts +6 -0
- package/dist/imported-mesh/definition.render.d.ts.map +1 -0
- package/dist/imported-mesh/definition.render.js +38 -0
- package/dist/index.d.ts +3 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -136
- package/dist/item/definition.d.ts +280 -31
- package/dist/item/definition.d.ts.map +1 -1
- package/dist/item/definition.edit.d.ts +4 -0
- package/dist/item/definition.edit.d.ts.map +1 -0
- package/dist/item/definition.edit.js +203 -0
- package/dist/item/definition.js +4 -356
- package/dist/item/definition.render.d.ts +6 -0
- package/dist/item/definition.render.d.ts.map +1 -0
- package/dist/item/definition.render.js +132 -0
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +1 -2
- package/dist/item/plan-symbols.js +1 -1
- package/dist/item/renderer.d.ts.map +1 -1
- package/dist/item/renderer.js +2 -2
- package/dist/lean-to-extension/definition.d.ts +177 -3
- package/dist/lean-to-extension/definition.d.ts.map +1 -1
- package/dist/lean-to-extension/definition.edit.d.ts +4 -0
- package/dist/lean-to-extension/definition.edit.d.ts.map +1 -0
- package/dist/lean-to-extension/definition.edit.js +390 -0
- package/dist/lean-to-extension/definition.js +4 -433
- package/dist/lean-to-extension/definition.render.d.ts +6 -0
- package/dist/lean-to-extension/definition.render.d.ts.map +1 -0
- package/dist/lean-to-extension/definition.render.js +48 -0
- package/dist/level/definition.d.ts +49 -8
- package/dist/level/definition.d.ts.map +1 -1
- package/dist/level/definition.edit.d.ts +4 -0
- package/dist/level/definition.edit.d.ts.map +1 -0
- package/dist/level/definition.edit.js +4 -0
- package/dist/level/definition.js +4 -60
- package/dist/level/definition.render.d.ts +6 -0
- package/dist/level/definition.render.d.ts.map +1 -0
- package/dist/level/definition.render.js +53 -0
- package/dist/lineset/definition.d.ts +49 -14
- package/dist/lineset/definition.d.ts.map +1 -1
- package/dist/lineset/definition.edit.d.ts +4 -0
- package/dist/lineset/definition.edit.d.ts.map +1 -0
- package/dist/lineset/definition.edit.js +36 -0
- package/dist/lineset/definition.js +4 -119
- package/dist/lineset/definition.render.d.ts +6 -0
- package/dist/lineset/definition.render.d.ts.map +1 -0
- package/dist/lineset/definition.render.js +74 -0
- package/dist/lineset/floorplan.js +1 -1
- package/dist/lineset/geometry.js +1 -1
- package/dist/lineset/move-tool.d.ts.map +1 -1
- package/dist/lineset/move-tool.js +14 -7
- package/dist/liquid-line/definition.d.ts +47 -15
- package/dist/liquid-line/definition.d.ts.map +1 -1
- package/dist/liquid-line/definition.edit.d.ts +4 -0
- package/dist/liquid-line/definition.edit.d.ts.map +1 -0
- package/dist/liquid-line/definition.edit.js +29 -0
- package/dist/liquid-line/definition.js +4 -111
- package/dist/liquid-line/definition.render.d.ts +6 -0
- package/dist/liquid-line/definition.render.d.ts.map +1 -0
- package/dist/liquid-line/definition.render.js +72 -0
- package/dist/liquid-line/floorplan.js +1 -1
- package/dist/liquid-line/geometry.js +1 -1
- package/dist/measurement/definition.d.ts +126 -3
- package/dist/measurement/definition.d.ts.map +1 -1
- package/dist/measurement/definition.edit.d.ts +4 -0
- package/dist/measurement/definition.edit.d.ts.map +1 -0
- package/dist/measurement/definition.edit.js +24 -0
- package/dist/measurement/definition.js +4 -67
- package/dist/measurement/definition.render.d.ts +6 -0
- package/dist/measurement/definition.render.d.ts.map +1 -0
- package/dist/measurement/definition.render.js +45 -0
- package/dist/measurement/floorplan.d.ts.map +1 -1
- package/dist/measurement/floorplan.js +2 -2
- package/dist/measurement/renderer.d.ts.map +1 -1
- package/dist/measurement/renderer.js +2 -3
- package/dist/measurement/selection.d.ts.map +1 -1
- package/dist/measurement/selection.js +2 -2
- package/dist/measurement/tool.d.ts +2 -2
- package/dist/measurement/tool.d.ts.map +1 -1
- package/dist/measurement/tool.js +3 -3
- package/dist/pipe-fitting/definition.d.ts +73 -9
- package/dist/pipe-fitting/definition.d.ts.map +1 -1
- package/dist/pipe-fitting/definition.edit.d.ts +4 -0
- package/dist/pipe-fitting/definition.edit.d.ts.map +1 -0
- package/dist/pipe-fitting/definition.edit.js +45 -0
- package/dist/pipe-fitting/definition.js +4 -105
- package/dist/pipe-fitting/definition.render.d.ts +6 -0
- package/dist/pipe-fitting/definition.render.d.ts.map +1 -0
- package/dist/pipe-fitting/definition.render.js +56 -0
- package/dist/pipe-fitting/floorplan.js +1 -1
- package/dist/pipe-fitting/geometry.js +1 -1
- package/dist/pipe-fitting/move-tool.d.ts +1 -1
- package/dist/pipe-fitting/move-tool.d.ts.map +1 -1
- package/dist/pipe-fitting/move-tool.js +28 -22
- package/dist/pipe-fitting/parametrics.d.ts.map +1 -1
- package/dist/pipe-fitting/parametrics.js +1 -0
- package/dist/pipe-fitting/ports.js +1 -1
- package/dist/pipe-fitting/selection.d.ts.map +1 -1
- package/dist/pipe-fitting/selection.js +73 -29
- package/dist/pipe-segment/collar-connection.d.ts +12 -0
- package/dist/pipe-segment/collar-connection.d.ts.map +1 -0
- package/dist/pipe-segment/collar-connection.js +58 -0
- package/dist/pipe-segment/connect-operation.d.ts +9 -0
- package/dist/pipe-segment/connect-operation.d.ts.map +1 -0
- package/dist/pipe-segment/connect-operation.js +44 -0
- package/dist/pipe-segment/continuation-handle.d.ts +9 -0
- package/dist/pipe-segment/continuation-handle.d.ts.map +1 -0
- package/dist/pipe-segment/continuation-handle.js +35 -0
- package/dist/pipe-segment/continuation.d.ts +4 -7
- package/dist/pipe-segment/continuation.d.ts.map +1 -1
- package/dist/pipe-segment/continuation.js +62 -36
- package/dist/pipe-segment/definition.d.ts +78 -13
- package/dist/pipe-segment/definition.d.ts.map +1 -1
- package/dist/pipe-segment/definition.edit.d.ts +4 -0
- package/dist/pipe-segment/definition.edit.d.ts.map +1 -0
- package/dist/pipe-segment/definition.edit.js +46 -0
- package/dist/pipe-segment/definition.js +4 -132
- package/dist/pipe-segment/definition.render.d.ts +6 -0
- package/dist/pipe-segment/definition.render.d.ts.map +1 -0
- package/dist/pipe-segment/definition.render.js +80 -0
- package/dist/pipe-segment/floorplan.d.ts +1 -1
- package/dist/pipe-segment/floorplan.d.ts.map +1 -1
- package/dist/pipe-segment/floorplan.js +35 -2
- package/dist/pipe-segment/geometry.d.ts.map +1 -1
- package/dist/pipe-segment/geometry.js +2 -1
- package/dist/pipe-segment/grade-affordance.d.ts +8 -0
- package/dist/pipe-segment/grade-affordance.d.ts.map +1 -0
- package/dist/pipe-segment/grade-affordance.js +116 -0
- package/dist/pipe-segment/grade-inspector.d.ts +5 -0
- package/dist/pipe-segment/grade-inspector.d.ts.map +1 -0
- package/dist/pipe-segment/grade-inspector.js +91 -0
- package/dist/pipe-segment/grade-label.d.ts +7 -0
- package/dist/pipe-segment/grade-label.d.ts.map +1 -0
- package/dist/pipe-segment/grade-label.js +32 -0
- package/dist/pipe-segment/grade-operation.d.ts +22 -0
- package/dist/pipe-segment/grade-operation.d.ts.map +1 -0
- package/dist/pipe-segment/grade-operation.js +114 -0
- package/dist/pipe-segment/move-tool.d.ts.map +1 -1
- package/dist/pipe-segment/move-tool.js +38 -15
- package/dist/pipe-segment/offset-inspector.d.ts +5 -0
- package/dist/pipe-segment/offset-inspector.d.ts.map +1 -0
- package/dist/pipe-segment/offset-inspector.js +112 -0
- package/dist/pipe-segment/offset-operation.d.ts +9 -0
- package/dist/pipe-segment/offset-operation.d.ts.map +1 -0
- package/dist/pipe-segment/offset-operation.js +104 -0
- package/dist/pipe-segment/parametrics.d.ts.map +1 -1
- package/dist/pipe-segment/parametrics.js +1 -9
- package/dist/pipe-segment/resize-inspector.d.ts +5 -0
- package/dist/pipe-segment/resize-inspector.d.ts.map +1 -0
- package/dist/pipe-segment/resize-inspector.js +75 -0
- package/dist/pipe-segment/resize-operation.d.ts +8 -0
- package/dist/pipe-segment/resize-operation.d.ts.map +1 -0
- package/dist/pipe-segment/resize-operation.js +143 -0
- package/dist/pipe-segment/run-move.d.ts +65 -0
- package/dist/pipe-segment/run-move.d.ts.map +1 -0
- package/dist/pipe-segment/run-move.js +110 -0
- package/dist/pipe-segment/selection.d.ts.map +1 -1
- package/dist/pipe-segment/selection.js +124 -179
- package/dist/pipe-segment/slope.d.ts +3 -0
- package/dist/pipe-segment/slope.d.ts.map +1 -1
- package/dist/pipe-segment/slope.js +47 -0
- package/dist/pipe-segment/tool.d.ts.map +1 -1
- package/dist/pipe-segment/tool.js +125 -29
- package/dist/pipe-trap/definition.d.ts +54 -9
- package/dist/pipe-trap/definition.d.ts.map +1 -1
- package/dist/pipe-trap/definition.edit.d.ts +4 -0
- package/dist/pipe-trap/definition.edit.d.ts.map +1 -0
- package/dist/pipe-trap/definition.edit.js +11 -0
- package/dist/pipe-trap/definition.js +4 -59
- package/dist/pipe-trap/definition.render.d.ts +6 -0
- package/dist/pipe-trap/definition.render.d.ts.map +1 -0
- package/dist/pipe-trap/definition.render.js +45 -0
- package/dist/pipe-trap/geometry.d.ts.map +1 -1
- package/dist/pipe-trap/geometry.js +2 -1
- package/dist/pipe-trap/parametrics.d.ts.map +1 -1
- package/dist/pipe-trap/parametrics.js +1 -0
- package/dist/procedural-item/definition.d.ts +734 -3
- package/dist/procedural-item/definition.d.ts.map +1 -1
- package/dist/procedural-item/definition.edit.d.ts +4 -0
- package/dist/procedural-item/definition.edit.d.ts.map +1 -0
- package/dist/procedural-item/definition.edit.js +202 -0
- package/dist/procedural-item/definition.js +4 -325
- package/dist/procedural-item/definition.render.d.ts +6 -0
- package/dist/procedural-item/definition.render.d.ts.map +1 -0
- package/dist/procedural-item/definition.render.js +137 -0
- package/dist/procedural-item/renderer.d.ts.map +1 -1
- package/dist/procedural-item/renderer.edit.d.ts +5 -0
- package/dist/procedural-item/renderer.edit.d.ts.map +1 -0
- package/dist/procedural-item/renderer.edit.js +49 -0
- package/dist/procedural-item/renderer.js +4 -21
- package/dist/render.d.ts +4 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +4 -0
- package/dist/ridge-vent/definition.d.ts +95 -15
- package/dist/ridge-vent/definition.d.ts.map +1 -1
- package/dist/ridge-vent/definition.edit.d.ts +4 -0
- package/dist/ridge-vent/definition.edit.d.ts.map +1 -0
- package/dist/ridge-vent/definition.edit.js +146 -0
- package/dist/ridge-vent/definition.js +4 -197
- package/dist/ridge-vent/definition.render.d.ts +6 -0
- package/dist/ridge-vent/definition.render.d.ts.map +1 -0
- package/dist/ridge-vent/definition.render.js +44 -0
- package/dist/ridge-vent/move-tool.d.ts.map +1 -1
- package/dist/ridge-vent/move-tool.js +5 -4
- package/dist/roof/barrel-panel.d.ts.map +1 -1
- package/dist/roof/barrel-panel.js +2 -2
- package/dist/roof/definition.d.ts +325 -8
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.edit.d.ts +4 -0
- package/dist/roof/definition.edit.d.ts.map +1 -0
- package/dist/roof/definition.edit.js +181 -0
- package/dist/roof/definition.js +4 -284
- package/dist/roof/definition.render.d.ts +7 -0
- package/dist/roof/definition.render.d.ts.map +1 -0
- package/dist/roof/definition.render.js +112 -0
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +1 -2
- package/dist/roof/geometry-notice.d.ts +5 -0
- package/dist/roof/geometry-notice.d.ts.map +1 -0
- package/dist/roof/geometry-notice.js +27 -0
- package/dist/roof/glazing-controls.d.ts.map +1 -1
- package/dist/roof/glazing-controls.js +2 -2
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +4 -3
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/renderer.js +10 -5
- package/dist/roof/tool.d.ts +3 -0
- package/dist/roof/tool.d.ts.map +1 -1
- package/dist/roof/tool.js +56 -170
- package/dist/roof/type-thumbnail-assets.d.ts +3 -0
- package/dist/roof/type-thumbnail-assets.d.ts.map +1 -0
- package/dist/roof/type-thumbnail-assets.js +12 -0
- package/dist/roof/type-thumbnail.d.ts +5 -0
- package/dist/roof/type-thumbnail.d.ts.map +1 -0
- package/dist/roof/type-thumbnail.js +5 -0
- package/dist/roof-segment/definition.d.ts +564 -9
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.edit.d.ts +4 -0
- package/dist/roof-segment/definition.edit.d.ts.map +1 -0
- package/dist/roof-segment/definition.edit.js +303 -0
- package/dist/roof-segment/definition.js +4 -364
- package/dist/roof-segment/definition.render.d.ts +6 -0
- package/dist/roof-segment/definition.render.d.ts.map +1 -0
- package/dist/roof-segment/definition.render.js +61 -0
- package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
- package/dist/roof-segment/floorplan-affordances.js +2 -2
- package/dist/roof-segment/paint.d.ts +0 -1
- package/dist/roof-segment/paint.d.ts.map +1 -1
- package/dist/roof-segment/paint.js +0 -1
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +32 -34
- package/dist/roof-segment/parametrics.d.ts.map +1 -1
- package/dist/roof-segment/parametrics.js +13 -11
- package/dist/roof-segment/slots.d.ts +2 -0
- package/dist/roof-segment/slots.d.ts.map +1 -0
- package/dist/roof-segment/slots.js +1 -0
- package/dist/scan/definition.d.ts +57 -7
- package/dist/scan/definition.d.ts.map +1 -1
- package/dist/scan/definition.edit.d.ts +4 -0
- package/dist/scan/definition.edit.d.ts.map +1 -0
- package/dist/scan/definition.edit.js +4 -0
- package/dist/scan/definition.js +4 -52
- package/dist/scan/definition.render.d.ts +6 -0
- package/dist/scan/definition.render.d.ts.map +1 -0
- package/dist/scan/definition.render.js +46 -0
- package/dist/separator/definition.d.ts +47 -2
- package/dist/separator/definition.d.ts.map +1 -1
- package/dist/separator/definition.edit.d.ts +4 -0
- package/dist/separator/definition.edit.d.ts.map +1 -0
- package/dist/separator/definition.edit.js +11 -0
- package/dist/separator/definition.js +4 -37
- package/dist/separator/definition.render.d.ts +6 -0
- package/dist/separator/definition.render.d.ts.map +1 -0
- package/dist/separator/definition.render.js +29 -0
- package/dist/separator/floorplan.js +1 -1
- package/dist/separator/renderer.d.ts +2 -1
- package/dist/separator/renderer.d.ts.map +1 -1
- package/dist/separator/renderer.edit.d.ts +5 -0
- package/dist/separator/renderer.edit.d.ts.map +1 -0
- package/dist/separator/renderer.edit.js +8 -0
- package/dist/separator/renderer.js +3 -5
- package/dist/separator/selection.d.ts.map +1 -1
- package/dist/separator/selection.js +2 -2
- package/dist/shared/accessory-placement.js +1 -1
- package/dist/shared/auto-fitting.js +1 -1
- package/dist/shared/auto-offset-tag.d.ts +1 -1
- package/dist/shared/auto-offset-tag.d.ts.map +1 -1
- package/dist/shared/auto-offset-tag.js +3 -1
- package/dist/shared/automatic-run-end-cap.d.ts +5 -0
- package/dist/shared/automatic-run-end-cap.d.ts.map +1 -1
- package/dist/shared/automatic-run-end-cap.js +17 -9
- package/dist/shared/connection-feedback.d.ts +6 -3
- package/dist/shared/connection-feedback.d.ts.map +1 -1
- package/dist/shared/connection-feedback.js +29 -6
- package/dist/shared/curtain-opening-limits.d.ts.map +1 -1
- package/dist/shared/curtain-opening-limits.js +2 -3
- package/dist/shared/draft-axis-guides.d.ts.map +1 -1
- package/dist/shared/draft-axis-guides.js +2 -1
- package/dist/shared/duct-adapter.js +1 -1
- package/dist/shared/duct-collar-inspector.d.ts +5 -0
- package/dist/shared/duct-collar-inspector.d.ts.map +1 -0
- package/dist/shared/duct-collar-inspector.js +36 -0
- package/dist/shared/follower-frames.d.ts +15 -0
- package/dist/shared/follower-frames.d.ts.map +1 -0
- package/dist/shared/follower-frames.js +36 -0
- package/dist/shared/handle-drag-scope.d.ts +14 -0
- package/dist/shared/handle-drag-scope.d.ts.map +1 -0
- package/dist/shared/handle-drag-scope.js +36 -0
- package/dist/shared/hosted-resize.d.ts +3 -1
- package/dist/shared/hosted-resize.d.ts.map +1 -1
- package/dist/shared/hosted-resize.js +10 -8
- package/dist/shared/live-preview.d.ts +16 -0
- package/dist/shared/live-preview.d.ts.map +1 -0
- package/dist/shared/live-preview.js +36 -0
- package/dist/shared/opening-documentation.d.ts +1 -1
- package/dist/shared/opening-documentation.d.ts.map +1 -1
- package/dist/shared/opening-documentation.js +1 -2
- package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
- package/dist/shared/opening-guides-runtime.js +2 -2
- package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
- package/dist/shared/opening-placement-dimensions.js +2 -3
- package/dist/shared/path-point-affordance.d.ts.map +1 -1
- package/dist/shared/path-point-affordance.js +19 -24
- package/dist/shared/path-segment-affordance.d.ts +2 -1
- package/dist/shared/path-segment-affordance.d.ts.map +1 -1
- package/dist/shared/path-segment-affordance.js +11 -8
- package/dist/shared/pipe-collar-inspector.d.ts +5 -0
- package/dist/shared/pipe-collar-inspector.d.ts.map +1 -0
- package/dist/shared/pipe-collar-inspector.js +27 -0
- package/dist/shared/refrigerant-line-selection.d.ts.map +1 -1
- package/dist/shared/refrigerant-line-selection.js +46 -29
- package/dist/shared/relative-roof-drag.d.ts.map +1 -1
- package/dist/shared/relative-roof-drag.js +5 -4
- package/dist/shared/roof-surface.d.ts.map +1 -1
- package/dist/shared/roof-surface.js +2 -0
- package/dist/shared/run-hangers.d.ts.map +1 -1
- package/dist/shared/run-hangers.js +2 -2
- package/dist/shared/run-move-connectivity.d.ts +15 -6
- package/dist/shared/run-move-connectivity.d.ts.map +1 -1
- package/dist/shared/run-move-connectivity.js +14 -5
- package/dist/shared/run-tool-options.d.ts +8 -0
- package/dist/shared/run-tool-options.d.ts.map +1 -0
- package/dist/shared/run-tool-options.js +166 -0
- package/dist/shared/system-checks.d.ts.map +1 -1
- package/dist/shared/system-checks.js +2 -1
- package/dist/shared/vertical-offset.js +1 -1
- package/dist/shared/wall-opening-ceiling.d.ts +6 -0
- package/dist/shared/wall-opening-ceiling.d.ts.map +1 -1
- package/dist/shared/wall-opening-ceiling.js +36 -7
- package/dist/shelf/definition.d.ts +108 -3
- package/dist/shelf/definition.d.ts.map +1 -1
- package/dist/shelf/definition.edit.d.ts +4 -0
- package/dist/shelf/definition.edit.d.ts.map +1 -0
- package/dist/shelf/definition.edit.js +153 -0
- package/dist/shelf/definition.js +4 -272
- package/dist/shelf/definition.render.d.ts +6 -0
- package/dist/shelf/definition.render.d.ts.map +1 -0
- package/dist/shelf/definition.render.js +124 -0
- package/dist/site/definition.d.ts +312 -9
- package/dist/site/definition.d.ts.map +1 -1
- package/dist/site/definition.edit.d.ts +4 -0
- package/dist/site/definition.edit.d.ts.map +1 -0
- package/dist/site/definition.edit.js +4 -0
- package/dist/site/definition.js +4 -55
- package/dist/site/definition.render.d.ts +6 -0
- package/dist/site/definition.render.d.ts.map +1 -0
- package/dist/site/definition.render.js +47 -0
- package/dist/skylight/definition.d.ts +158 -9
- package/dist/skylight/definition.d.ts.map +1 -1
- package/dist/skylight/definition.edit.d.ts +4 -0
- package/dist/skylight/definition.edit.d.ts.map +1 -0
- package/dist/skylight/definition.edit.js +216 -0
- package/dist/skylight/definition.js +4 -271
- package/dist/skylight/definition.render.d.ts +6 -0
- package/dist/skylight/definition.render.d.ts.map +1 -0
- package/dist/skylight/definition.render.js +52 -0
- package/dist/skylight/move-tool.d.ts.map +1 -1
- package/dist/skylight/move-tool.js +7 -5
- package/dist/skylight/panel.js +1 -1
- package/dist/slab/definition.d.ts +289 -20
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.edit.d.ts +4 -0
- package/dist/slab/definition.edit.d.ts.map +1 -0
- package/dist/slab/definition.edit.js +226 -0
- package/dist/slab/definition.js +4 -334
- package/dist/slab/definition.render.d.ts +6 -0
- package/dist/slab/definition.render.d.ts.map +1 -0
- package/dist/slab/definition.render.js +96 -0
- package/dist/slab/floorplan.d.ts.map +1 -1
- package/dist/slab/floorplan.js +1 -2
- package/dist/slab/panel.js +2 -2
- package/dist/solar-panel/definition.d.ts +145 -14
- package/dist/solar-panel/definition.d.ts.map +1 -1
- package/dist/solar-panel/definition.edit.d.ts +4 -0
- package/dist/solar-panel/definition.edit.d.ts.map +1 -0
- package/dist/solar-panel/definition.edit.js +211 -0
- package/dist/solar-panel/definition.js +4 -263
- package/dist/solar-panel/definition.render.d.ts +6 -0
- package/dist/solar-panel/definition.render.d.ts.map +1 -0
- package/dist/solar-panel/definition.render.js +44 -0
- package/dist/solar-panel/move-tool.d.ts.map +1 -1
- package/dist/solar-panel/move-tool.js +7 -5
- package/dist/spawn/definition.d.ts +48 -3
- package/dist/spawn/definition.d.ts.map +1 -1
- package/dist/spawn/definition.edit.d.ts +4 -0
- package/dist/spawn/definition.edit.d.ts.map +1 -0
- package/dist/spawn/definition.edit.js +55 -0
- package/dist/spawn/definition.js +4 -109
- package/dist/spawn/definition.render.d.ts +6 -0
- package/dist/spawn/definition.render.d.ts.map +1 -0
- package/dist/spawn/definition.render.js +50 -0
- package/dist/stair/definition.d.ts +334 -8
- package/dist/stair/definition.d.ts.map +1 -1
- package/dist/stair/definition.edit.d.ts +4 -0
- package/dist/stair/definition.edit.d.ts.map +1 -0
- package/dist/stair/definition.edit.js +364 -0
- package/dist/stair/definition.js +4 -443
- package/dist/stair/definition.render.d.ts +6 -0
- package/dist/stair/definition.render.d.ts.map +1 -0
- package/dist/stair/definition.render.js +75 -0
- package/dist/stair/documentation.d.ts.map +1 -1
- package/dist/stair/documentation.js +1 -2
- package/dist/stair/floorplan.d.ts.map +1 -1
- package/dist/stair/floorplan.js +1 -2
- package/dist/stair/panel.js +2 -2
- package/dist/stair/plan-entry.d.ts.map +1 -1
- package/dist/stair/plan-entry.js +1 -2
- package/dist/stair/structure-controls.d.ts.map +1 -1
- package/dist/stair/structure-controls.js +2 -2
- package/dist/stair-segment/definition.d.ts +130 -7
- package/dist/stair-segment/definition.d.ts.map +1 -1
- package/dist/stair-segment/definition.edit.d.ts +4 -0
- package/dist/stair-segment/definition.edit.d.ts.map +1 -0
- package/dist/stair-segment/definition.edit.js +135 -0
- package/dist/stair-segment/definition.js +4 -172
- package/dist/stair-segment/definition.render.d.ts +6 -0
- package/dist/stair-segment/definition.render.d.ts.map +1 -0
- package/dist/stair-segment/definition.render.js +38 -0
- package/dist/structural-grid/definition.d.ts +50 -3
- package/dist/structural-grid/definition.d.ts.map +1 -1
- package/dist/structural-grid/definition.edit.d.ts +4 -0
- package/dist/structural-grid/definition.edit.d.ts.map +1 -0
- package/dist/structural-grid/definition.edit.js +16 -0
- package/dist/structural-grid/definition.js +4 -51
- package/dist/structural-grid/definition.render.d.ts +6 -0
- package/dist/structural-grid/definition.render.d.ts.map +1 -0
- package/dist/structural-grid/definition.render.js +37 -0
- package/dist/structural-grid/floorplan.js +1 -1
- package/dist/turbine-vent/definition.d.ts +97 -23
- package/dist/turbine-vent/definition.d.ts.map +1 -1
- package/dist/turbine-vent/definition.edit.d.ts +4 -0
- package/dist/turbine-vent/definition.edit.d.ts.map +1 -0
- package/dist/turbine-vent/definition.edit.js +64 -0
- package/dist/turbine-vent/definition.js +4 -121
- package/dist/turbine-vent/definition.render.d.ts +6 -0
- package/dist/turbine-vent/definition.render.d.ts.map +1 -0
- package/dist/turbine-vent/definition.render.js +42 -0
- package/dist/turbine-vent/move-tool.d.ts.map +1 -1
- package/dist/turbine-vent/move-tool.js +6 -5
- package/dist/unit/definition.d.ts +53 -9
- package/dist/unit/definition.d.ts.map +1 -1
- package/dist/unit/definition.edit.d.ts +4 -0
- package/dist/unit/definition.edit.d.ts.map +1 -0
- package/dist/unit/definition.edit.js +4 -0
- package/dist/unit/definition.js +4 -38
- package/dist/unit/definition.render.d.ts +6 -0
- package/dist/unit/definition.render.d.ts.map +1 -0
- package/dist/unit/definition.render.js +30 -0
- package/dist/unit/unit-panel.d.ts.map +1 -1
- package/dist/unit/unit-panel.js +2 -2
- package/dist/wall/contextual-dimensions.d.ts.map +1 -1
- package/dist/wall/contextual-dimensions.js +1 -2
- package/dist/wall/curtain-wall-panel.d.ts.map +1 -1
- package/dist/wall/curtain-wall-panel.js +2 -2
- package/dist/wall/definition.d.ts +809 -3
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.edit.d.ts +4 -0
- package/dist/wall/definition.edit.d.ts.map +1 -0
- package/dist/wall/definition.edit.js +179 -0
- package/dist/wall/definition.js +4 -279
- package/dist/wall/definition.render.d.ts +6 -0
- package/dist/wall/definition.render.d.ts.map +1 -0
- package/dist/wall/definition.render.js +105 -0
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +2 -3
- package/dist/wall/measurement.d.ts.map +1 -1
- package/dist/wall/measurement.js +22 -5
- package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
- package/dist/wall/move-endpoint-tool.js +3 -3
- package/dist/wall/move-shared.js +1 -1
- package/dist/wall/panel-model.d.ts.map +1 -1
- package/dist/wall/panel-model.js +4 -3
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +15 -6
- package/dist/wall/quick-measurement.js +1 -1
- package/dist/wall/rectangle-command.d.ts +1 -0
- package/dist/wall/rectangle-command.d.ts.map +1 -1
- package/dist/wall/rectangle-tool.js +2 -2
- package/dist/wall/split-floorplan-layer.d.ts.map +1 -1
- package/dist/wall/split-floorplan-layer.js +2 -2
- package/dist/wall/split-tool.d.ts.map +1 -1
- package/dist/wall/split-tool.js +2 -2
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +138 -36
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +36 -16
- package/dist/window/definition.d.ts +356 -15
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.edit.d.ts +4 -0
- package/dist/window/definition.edit.d.ts.map +1 -0
- package/dist/window/definition.edit.js +250 -0
- package/dist/window/definition.js +5 -338
- package/dist/window/definition.render.d.ts +8 -0
- package/dist/window/definition.render.d.ts.map +1 -0
- package/dist/window/definition.render.js +89 -0
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +7 -4
- package/dist/window/floorplan.d.ts.map +1 -1
- package/dist/window/floorplan.js +1 -2
- package/dist/window/mechanism.js +1 -1
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +7 -11
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +5 -2
- package/dist/zone/contextual-dimensions.d.ts.map +1 -1
- package/dist/zone/contextual-dimensions.js +1 -2
- package/dist/zone/definition.d.ts +264 -9
- package/dist/zone/definition.d.ts.map +1 -1
- package/dist/zone/definition.edit.d.ts +4 -0
- package/dist/zone/definition.edit.d.ts.map +1 -0
- package/dist/zone/definition.edit.js +36 -0
- package/dist/zone/definition.js +4 -97
- package/dist/zone/definition.render.d.ts +6 -0
- package/dist/zone/definition.render.d.ts.map +1 -0
- package/dist/zone/definition.render.js +57 -0
- package/dist/zone/floorplan.d.ts.map +1 -1
- package/dist/zone/floorplan.js +1 -2
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +2 -2
- package/dist/zone/room-clear-dimensions.d.ts.map +1 -1
- package/dist/zone/room-clear-dimensions.js +1 -2
- package/dist/zone/room-documentation.d.ts +1 -2
- package/dist/zone/room-documentation.d.ts.map +1 -1
- package/dist/zone/room-documentation.js +1 -1
- package/package.json +21 -10
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { ELEVATOR_MIN_CAB_DIMENSION, ELEVATOR_MIN_CAB_HEIGHT, getElevatorCabDepth, getElevatorCabWidth, getElevatorShaftDepth, getElevatorShaftWallThickness, getElevatorShaftWidth, normalizeElevatorDimensions, resolveElevatorDimensions, resolveElevatorLevels, } from '@pascal-app/core';
|
|
2
|
+
import { elevatorOuterHalfExtents } from './definition.render.js';
|
|
3
|
+
import { elevatorResizeAffordance, elevatorRotateAffordance } from './floorplan-affordances.js';
|
|
4
|
+
import { elevatorPaint } from './paint.js';
|
|
5
|
+
import { elevatorParametrics } from './parametrics.js';
|
|
6
|
+
const SIDE_HANDLE_OFFSET = 0.22;
|
|
7
|
+
const HEIGHT_HANDLE_OFFSET = 0.3;
|
|
8
|
+
const MOVE_FRONT_OFFSET = 0.35;
|
|
9
|
+
const MIN_ELEVATOR_DIM = ELEVATOR_MIN_CAB_DIMENSION;
|
|
10
|
+
const MIN_CAB_HEIGHT = ELEVATOR_MIN_CAB_HEIGHT;
|
|
11
|
+
const ROTATE_CORNER_OFFSET = 0.4;
|
|
12
|
+
const ROTATE_RING_OFFSET = 0.08;
|
|
13
|
+
// Symmetric width / depth arrows around the cab footprint. The descriptor
|
|
14
|
+
// edits the CAB dimension (`width` / `depth`) — but the arrow must sit
|
|
15
|
+
// outside the SHAFT shell so it doesn't disappear inside the rendered
|
|
16
|
+
// elevator. Placement uses the shaft's outer extent + wall thickness +
|
|
17
|
+
// padding so the arrow clears the visible body on both `solid` and
|
|
18
|
+
// `glass` shafts. `anchor: 'center'` means dragging outward grows the
|
|
19
|
+
// full span 2× the pointer delta; node.position stays put.
|
|
20
|
+
function elevatorAxisHandle(axis) {
|
|
21
|
+
return {
|
|
22
|
+
kind: 'linear-resize',
|
|
23
|
+
axis,
|
|
24
|
+
anchor: 'center',
|
|
25
|
+
min: MIN_ELEVATOR_DIM,
|
|
26
|
+
currentValue: (n) => axis === 'x' ? resolveElevatorDimensions(n).width : resolveElevatorDimensions(n).depth,
|
|
27
|
+
apply: (n, newValue) => normalizeElevatorDimensions({
|
|
28
|
+
...n,
|
|
29
|
+
...(axis === 'x' ? { width: newValue } : { depth: newValue }),
|
|
30
|
+
}),
|
|
31
|
+
placement: {
|
|
32
|
+
position: (n) => {
|
|
33
|
+
const cabWidth = getElevatorCabWidth(n);
|
|
34
|
+
const cabDepth = getElevatorCabDepth(n);
|
|
35
|
+
const wallThickness = getElevatorShaftWallThickness(n);
|
|
36
|
+
const outerHalf = axis === 'x'
|
|
37
|
+
? getElevatorShaftWidth(n, cabWidth) / 2 + wallThickness
|
|
38
|
+
: getElevatorShaftDepth(n, cabDepth) / 2 + wallThickness;
|
|
39
|
+
const yMid = Math.max(n.cabHeight, MIN_CAB_HEIGHT) / 2;
|
|
40
|
+
return axis === 'x'
|
|
41
|
+
? [outerHalf + SIDE_HANDLE_OFFSET, yMid, 0]
|
|
42
|
+
: [0, yMid, outerHalf + SIDE_HANDLE_OFFSET];
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// Cab-height arrow — `anchor: 'min'` keeps the cab floor fixed and grows
|
|
48
|
+
// the cab upward. The arrow itself sits above the full SHAFT top (not
|
|
49
|
+
// just the cab) so a multi-level elevator's arrow appears outside the
|
|
50
|
+
// rendered body rather than buried inside the shaft. `resolveElevatorLevels`
|
|
51
|
+
// walks the building's level chain to find shaftTopY; the fallback
|
|
52
|
+
// (cabHeight + 0.3) matches the renderer's own when no service levels
|
|
53
|
+
// are configured yet.
|
|
54
|
+
function elevatorCabHeightHandle() {
|
|
55
|
+
return {
|
|
56
|
+
kind: 'linear-resize',
|
|
57
|
+
axis: 'y',
|
|
58
|
+
anchor: 'min',
|
|
59
|
+
min: MIN_CAB_HEIGHT,
|
|
60
|
+
currentValue: (n) => Math.max(n.cabHeight, MIN_CAB_HEIGHT),
|
|
61
|
+
apply: (n, newValue) => normalizeElevatorDimensions({ ...n, cabHeight: newValue }),
|
|
62
|
+
placement: {
|
|
63
|
+
position: (n, scene) => {
|
|
64
|
+
const { shaftTopY } = resolveElevatorLevels(n, scene.nodes());
|
|
65
|
+
const cabTop = Math.max(n.cabHeight, MIN_CAB_HEIGHT) + 0.3;
|
|
66
|
+
const top = Math.max(shaftTopY, cabTop);
|
|
67
|
+
return [0, top + HEIGHT_HANDLE_OFFSET, 0];
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// Rotation handle — sits at the front-right corner of the shaft
|
|
73
|
+
// footprint. `arc-resize` does the angular drag math (raycasts a
|
|
74
|
+
// horizontal plane at the arrow's Y, measures cursor angle around the
|
|
75
|
+
// elevator's local origin, returns the delta to apply). On hover or
|
|
76
|
+
// drag the decoration ring traces the shaft's bounding circle through
|
|
77
|
+
// all four corners — same idiom as the column radius ring.
|
|
78
|
+
function elevatorRotateHandle() {
|
|
79
|
+
return {
|
|
80
|
+
kind: 'arc-resize',
|
|
81
|
+
axis: 'angular',
|
|
82
|
+
shape: 'rotate',
|
|
83
|
+
// The cursor delta `atan2(hit.z - center.z, hit.x - center.x)` ticks
|
|
84
|
+
// up in the opposite handedness from three.js's Y-rotation (positive
|
|
85
|
+
// Ry takes +X → -Z, while atan2(z,x) increases as we go +X → +Z).
|
|
86
|
+
// Negate so dragging the cursor CCW around the elevator (as seen
|
|
87
|
+
// from above) actually rotates the elevator CCW.
|
|
88
|
+
apply: (initial, delta) => ({ rotation: (initial.rotation ?? 0) - delta }),
|
|
89
|
+
placement: {
|
|
90
|
+
// Offset along +Z only so the gizmo sticks out the front of the
|
|
91
|
+
// shaft rather than diagonally at the corner — matches the column's
|
|
92
|
+
// one-direction rotate placement.
|
|
93
|
+
position: (n) => {
|
|
94
|
+
const { halfX, halfZ } = elevatorOuterHalfExtents(n);
|
|
95
|
+
const yMid = Math.max(n.cabHeight, MIN_CAB_HEIGHT) / 2;
|
|
96
|
+
return [halfX, yMid, halfZ + ROTATE_CORNER_OFFSET];
|
|
97
|
+
},
|
|
98
|
+
// Fixed −45° tilt — leans the curve clockwise (as seen from above)
|
|
99
|
+
// toward the shaft's front face.
|
|
100
|
+
rotationY: () => -Math.PI / 4,
|
|
101
|
+
},
|
|
102
|
+
decoration: {
|
|
103
|
+
kind: 'ring',
|
|
104
|
+
// Bounding circle through the shaft corners — drawn slightly larger
|
|
105
|
+
// so it sits outside the visible shell.
|
|
106
|
+
radius: (n) => {
|
|
107
|
+
const { halfX, halfZ } = elevatorOuterHalfExtents(n);
|
|
108
|
+
return Math.hypot(halfX, halfZ) + ROTATE_RING_OFFSET;
|
|
109
|
+
},
|
|
110
|
+
y: (n) => Math.max(n.cabHeight, MIN_CAB_HEIGHT) / 2,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function elevatorMoveHandle() {
|
|
115
|
+
return {
|
|
116
|
+
// Tap-to-engage: hand the elevator to its move tool (same path the
|
|
117
|
+
// floating action menu's Move button takes via `setMovingNode`) so the
|
|
118
|
+
// 3D grip and the floating-UI button share one move flow — green
|
|
119
|
+
// bounding box, alignment guides, R/T rotation, click-to-commit.
|
|
120
|
+
kind: 'tap-action',
|
|
121
|
+
shape: 'move-cross',
|
|
122
|
+
cursor: 'move',
|
|
123
|
+
onActivate: (node, _scene, editor) => editor.engageMove(node),
|
|
124
|
+
placement: {
|
|
125
|
+
position: (n) => {
|
|
126
|
+
const { halfZ } = elevatorOuterHalfExtents(n);
|
|
127
|
+
return [0, 0.02, halfZ + MOVE_FRONT_OFFSET];
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const elevatorHandles = [
|
|
133
|
+
elevatorAxisHandle('x'),
|
|
134
|
+
elevatorAxisHandle('z'),
|
|
135
|
+
elevatorCabHeightHandle(),
|
|
136
|
+
elevatorRotateHandle(),
|
|
137
|
+
elevatorMoveHandle(),
|
|
138
|
+
];
|
|
139
|
+
export const elevatorEditContribution = {
|
|
140
|
+
snapProfile: 'structural',
|
|
141
|
+
// Placed as a footprint (R/T rotates), not a directional draw → no angle-lock
|
|
142
|
+
// mode. The toolHints presence routes it through the contextual HUD so the
|
|
143
|
+
// snapping chip shows during placement.
|
|
144
|
+
snapDraftDirectional: false,
|
|
145
|
+
toolHints: [
|
|
146
|
+
{ key: 'Left click', label: 'Place elevator' },
|
|
147
|
+
{ key: 'R / T', label: 'Rotate' },
|
|
148
|
+
{ key: 'Esc', label: 'Cancel' },
|
|
149
|
+
],
|
|
150
|
+
capabilities: {
|
|
151
|
+
paint: elevatorPaint,
|
|
152
|
+
},
|
|
153
|
+
tool: () => import('./tool.js'),
|
|
154
|
+
renderer: {
|
|
155
|
+
kind: 'parametric',
|
|
156
|
+
module: () => import('./renderer.edit.js'),
|
|
157
|
+
},
|
|
158
|
+
parametrics: elevatorParametrics,
|
|
159
|
+
handles: elevatorHandles,
|
|
160
|
+
// 2D drag affordance for the rotate-arrow emitted at the elevator's
|
|
161
|
+
// front-right corner. Body move uses the generic move-arrow / move-
|
|
162
|
+
// handle path emitted by the floor-plan builder.
|
|
163
|
+
floorplanAffordances: {
|
|
164
|
+
'elevator-resize': elevatorResizeAffordance,
|
|
165
|
+
'elevator-rotate': elevatorRotateAffordance,
|
|
166
|
+
},
|
|
167
|
+
};
|
|
@@ -1,258 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { elevatorParametrics } from './parametrics.js';
|
|
6
|
-
import { ElevatorNode } from './schema.js';
|
|
7
|
-
const SIDE_HANDLE_OFFSET = 0.22;
|
|
8
|
-
const HEIGHT_HANDLE_OFFSET = 0.3;
|
|
9
|
-
const MOVE_FRONT_OFFSET = 0.35;
|
|
10
|
-
const MIN_ELEVATOR_DIM = 0.6;
|
|
11
|
-
const MIN_CAB_HEIGHT = 1.4;
|
|
12
|
-
const ROTATE_CORNER_OFFSET = 0.4;
|
|
13
|
-
const ROTATE_RING_OFFSET = 0.08;
|
|
14
|
-
// Symmetric width / depth arrows around the cab footprint. The descriptor
|
|
15
|
-
// edits the CAB dimension (`width` / `depth`) — but the arrow must sit
|
|
16
|
-
// outside the SHAFT shell so it doesn't disappear inside the rendered
|
|
17
|
-
// elevator. Placement uses the shaft's outer extent + wall thickness +
|
|
18
|
-
// padding so the arrow clears the visible body on both `solid` and
|
|
19
|
-
// `glass` shafts. `anchor: 'center'` means dragging outward grows the
|
|
20
|
-
// full span 2× the pointer delta; node.position stays put.
|
|
21
|
-
function elevatorAxisHandle(axis) {
|
|
22
|
-
return {
|
|
23
|
-
kind: 'linear-resize',
|
|
24
|
-
axis,
|
|
25
|
-
anchor: 'center',
|
|
26
|
-
min: MIN_ELEVATOR_DIM,
|
|
27
|
-
currentValue: (n) => (axis === 'x' ? n.width : n.depth),
|
|
28
|
-
apply: (_n, newValue) => (axis === 'x' ? { width: newValue } : { depth: newValue }),
|
|
29
|
-
placement: {
|
|
30
|
-
position: (n) => {
|
|
31
|
-
const cabWidth = getElevatorCabWidth(n);
|
|
32
|
-
const cabDepth = getElevatorCabDepth(n);
|
|
33
|
-
const wallThickness = getElevatorShaftWallThickness(n);
|
|
34
|
-
const outerHalf = axis === 'x'
|
|
35
|
-
? getElevatorShaftWidth(n, cabWidth) / 2 + wallThickness
|
|
36
|
-
: getElevatorShaftDepth(n, cabDepth) / 2 + wallThickness;
|
|
37
|
-
const yMid = Math.max(n.cabHeight, MIN_CAB_HEIGHT) / 2;
|
|
38
|
-
return axis === 'x'
|
|
39
|
-
? [outerHalf + SIDE_HANDLE_OFFSET, yMid, 0]
|
|
40
|
-
: [0, yMid, outerHalf + SIDE_HANDLE_OFFSET];
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
// Cab-height arrow — `anchor: 'min'` keeps the cab floor fixed and grows
|
|
46
|
-
// the cab upward. The arrow itself sits above the full SHAFT top (not
|
|
47
|
-
// just the cab) so a multi-level elevator's arrow appears outside the
|
|
48
|
-
// rendered body rather than buried inside the shaft. `resolveElevatorLevels`
|
|
49
|
-
// walks the building's level chain to find shaftTopY; the fallback
|
|
50
|
-
// (cabHeight + 0.3) matches the renderer's own when no service levels
|
|
51
|
-
// are configured yet.
|
|
52
|
-
function elevatorCabHeightHandle() {
|
|
53
|
-
return {
|
|
54
|
-
kind: 'linear-resize',
|
|
55
|
-
axis: 'y',
|
|
56
|
-
anchor: 'min',
|
|
57
|
-
min: MIN_CAB_HEIGHT,
|
|
58
|
-
currentValue: (n) => Math.max(n.cabHeight, MIN_CAB_HEIGHT),
|
|
59
|
-
apply: (_n, newValue) => ({ cabHeight: newValue }),
|
|
60
|
-
placement: {
|
|
61
|
-
position: (n, scene) => {
|
|
62
|
-
const { shaftTopY } = resolveElevatorLevels(n, scene.nodes());
|
|
63
|
-
const cabTop = Math.max(n.cabHeight, MIN_CAB_HEIGHT) + 0.3;
|
|
64
|
-
const top = Math.max(shaftTopY, cabTop);
|
|
65
|
-
return [0, top + HEIGHT_HANDLE_OFFSET, 0];
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
function elevatorOuterHalfExtents(n) {
|
|
71
|
-
const cabWidth = getElevatorCabWidth(n);
|
|
72
|
-
const cabDepth = getElevatorCabDepth(n);
|
|
73
|
-
const wallThickness = getElevatorShaftWallThickness(n);
|
|
74
|
-
return {
|
|
75
|
-
halfX: getElevatorShaftWidth(n, cabWidth) / 2 + wallThickness,
|
|
76
|
-
halfZ: getElevatorShaftDepth(n, cabDepth) / 2 + wallThickness,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
// Rotation handle — sits at the front-right corner of the shaft
|
|
80
|
-
// footprint. `arc-resize` does the angular drag math (raycasts a
|
|
81
|
-
// horizontal plane at the arrow's Y, measures cursor angle around the
|
|
82
|
-
// elevator's local origin, returns the delta to apply). On hover or
|
|
83
|
-
// drag the decoration ring traces the shaft's bounding circle through
|
|
84
|
-
// all four corners — same idiom as the column radius ring.
|
|
85
|
-
function elevatorRotateHandle() {
|
|
86
|
-
return {
|
|
87
|
-
kind: 'arc-resize',
|
|
88
|
-
axis: 'angular',
|
|
89
|
-
shape: 'rotate',
|
|
90
|
-
// The cursor delta `atan2(hit.z - center.z, hit.x - center.x)` ticks
|
|
91
|
-
// up in the opposite handedness from three.js's Y-rotation (positive
|
|
92
|
-
// Ry takes +X → -Z, while atan2(z,x) increases as we go +X → +Z).
|
|
93
|
-
// Negate so dragging the cursor CCW around the elevator (as seen
|
|
94
|
-
// from above) actually rotates the elevator CCW.
|
|
95
|
-
apply: (initial, delta) => ({ rotation: (initial.rotation ?? 0) - delta }),
|
|
96
|
-
placement: {
|
|
97
|
-
// Offset along +Z only so the gizmo sticks out the front of the
|
|
98
|
-
// shaft rather than diagonally at the corner — matches the column's
|
|
99
|
-
// one-direction rotate placement.
|
|
100
|
-
position: (n) => {
|
|
101
|
-
const { halfX, halfZ } = elevatorOuterHalfExtents(n);
|
|
102
|
-
const yMid = Math.max(n.cabHeight, MIN_CAB_HEIGHT) / 2;
|
|
103
|
-
return [halfX, yMid, halfZ + ROTATE_CORNER_OFFSET];
|
|
104
|
-
},
|
|
105
|
-
// Fixed −45° tilt — leans the curve clockwise (as seen from above)
|
|
106
|
-
// toward the shaft's front face.
|
|
107
|
-
rotationY: () => -Math.PI / 4,
|
|
108
|
-
},
|
|
109
|
-
decoration: {
|
|
110
|
-
kind: 'ring',
|
|
111
|
-
// Bounding circle through the shaft corners — drawn slightly larger
|
|
112
|
-
// so it sits outside the visible shell.
|
|
113
|
-
radius: (n) => {
|
|
114
|
-
const { halfX, halfZ } = elevatorOuterHalfExtents(n);
|
|
115
|
-
return Math.hypot(halfX, halfZ) + ROTATE_RING_OFFSET;
|
|
116
|
-
},
|
|
117
|
-
y: (n) => Math.max(n.cabHeight, MIN_CAB_HEIGHT) / 2,
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
function elevatorMoveHandle() {
|
|
122
|
-
return {
|
|
123
|
-
// Tap-to-engage: hand the elevator to its move tool (same path the
|
|
124
|
-
// floating action menu's Move button takes via `setMovingNode`) so the
|
|
125
|
-
// 3D grip and the floating-UI button share one move flow — green
|
|
126
|
-
// bounding box, alignment guides, R/T rotation, click-to-commit.
|
|
127
|
-
kind: 'tap-action',
|
|
128
|
-
shape: 'move-cross',
|
|
129
|
-
cursor: 'move',
|
|
130
|
-
onActivate: (node, _scene, editor) => editor.engageMove(node),
|
|
131
|
-
placement: {
|
|
132
|
-
position: (n) => {
|
|
133
|
-
const { halfZ } = elevatorOuterHalfExtents(n);
|
|
134
|
-
return [0, 0.02, halfZ + MOVE_FRONT_OFFSET];
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
const elevatorHandles = [
|
|
140
|
-
elevatorAxisHandle('x'),
|
|
141
|
-
elevatorAxisHandle('z'),
|
|
142
|
-
elevatorCabHeightHandle(),
|
|
143
|
-
elevatorRotateHandle(),
|
|
144
|
-
elevatorMoveHandle(),
|
|
145
|
-
];
|
|
146
|
-
/**
|
|
147
|
-
* Elevator — Stage A registration. Wrap-exports the legacy renderer +
|
|
148
|
-
* the three legacy systems (runtime / interaction / opening) bundled
|
|
149
|
-
* as one `def.system`. Move / inspector still go through legacy
|
|
150
|
-
* (`MoveElevatorTool`, `<ElevatorPanel>`) via panel-manager's
|
|
151
|
-
* hardcoded switch.
|
|
152
|
-
*/
|
|
153
|
-
export const elevatorDefinition = {
|
|
154
|
-
kind: 'elevator',
|
|
155
|
-
schemaVersion: 1,
|
|
156
|
-
schema: ElevatorNode,
|
|
157
|
-
category: 'structure',
|
|
158
|
-
snapProfile: 'structural',
|
|
159
|
-
// Placed as a footprint (R/T rotates), not a directional draw → no angle-lock
|
|
160
|
-
// mode. The toolHints presence routes it through the contextual HUD so the
|
|
161
|
-
// snapping chip shows during placement.
|
|
162
|
-
snapDraftDirectional: false,
|
|
163
|
-
toolHints: [
|
|
164
|
-
{ key: 'Left click', label: 'Place elevator' },
|
|
165
|
-
{ key: 'R / T', label: 'Rotate' },
|
|
166
|
-
{ key: 'Esc', label: 'Cancel' },
|
|
167
|
-
],
|
|
168
|
-
surfaceRole: 'joinery',
|
|
169
|
-
defaults: () => {
|
|
170
|
-
const stub = ElevatorNodeSchema.parse({ id: 'elevator_default', type: 'elevator' });
|
|
171
|
-
const { id: _id, type: _type, ...rest } = stub;
|
|
172
|
-
return rest;
|
|
173
|
-
},
|
|
174
|
-
capabilities: {
|
|
175
|
-
surfacePlacement: 'floor-only',
|
|
176
|
-
selectable: { hitVolume: 'bbox' },
|
|
177
|
-
// Generic XZ translate so the floating action menu's Move button
|
|
178
|
-
// (and the side move-arrows emitted from `def.floorplan`) drive the
|
|
179
|
-
// 2D body-move flow through `FloorplanRegistryMoveOverlay`'s
|
|
180
|
-
// Path 2 — position[0] / position[2] update with a 0.5m grid snap.
|
|
181
|
-
movable: { axes: ['x', 'z'], gridSnap: true },
|
|
182
|
-
// Align by the OUTER SHAFT (shaft + wall — what's drawn in plan and 3D),
|
|
183
|
-
// not the cab `width × depth`: the cab is inset by the shaft wall +
|
|
184
|
-
// clearance, so cab corners sit ~9 cm inside the visible edge — past the
|
|
185
|
-
// 8 cm snap, which is why the elevator never surfaced a guide. A `box`
|
|
186
|
-
// shape (not `aabb`) because the elevator is `movable`, so the anchor
|
|
187
|
-
// bridge relocates this same footprint to the drag point.
|
|
188
|
-
alignmentFootprint: (node) => {
|
|
189
|
-
const e = node;
|
|
190
|
-
const { halfX, halfZ } = elevatorOuterHalfExtents(e);
|
|
191
|
-
return {
|
|
192
|
-
shape: 'box',
|
|
193
|
-
dimensions: [halfX * 2, 1, halfZ * 2],
|
|
194
|
-
rotation: [0, e.rotation ?? 0, 0],
|
|
195
|
-
};
|
|
196
|
-
},
|
|
197
|
-
// Drag box wraps just the OUTER SHAFT × full shaft height — same footprint
|
|
198
|
-
// alignment uses, same height the rendered shell occupies. Without this
|
|
199
|
-
// override, `DragBoundingBox` would measure the whole mesh tree (per-level
|
|
200
|
-
// landing assemblies, cab interior, buttons) and the box would feel
|
|
201
|
-
// vertically off-centre when the elevator's lowest served level isn't the
|
|
202
|
-
// building origin.
|
|
203
|
-
dragBounds: (node, nodes) => {
|
|
204
|
-
const e = node;
|
|
205
|
-
const { halfX, halfZ } = elevatorOuterHalfExtents(e);
|
|
206
|
-
const { shaftBaseY, totalHeight } = resolveElevatorLevels(e, nodes ?? {});
|
|
207
|
-
const cabHeight = Math.max(e.cabHeight, 1.4);
|
|
208
|
-
const shaftHeight = Math.max(totalHeight, cabHeight + 0.3);
|
|
209
|
-
return {
|
|
210
|
-
size: [halfX * 2, shaftHeight, halfZ * 2],
|
|
211
|
-
centerY: shaftBaseY + shaftHeight / 2,
|
|
212
|
-
};
|
|
213
|
-
},
|
|
214
|
-
duplicable: true,
|
|
215
|
-
deletable: true,
|
|
216
|
-
slots: (node) => elevatorSlots(node),
|
|
217
|
-
paint: elevatorPaint,
|
|
218
|
-
},
|
|
219
|
-
parametrics: elevatorParametrics,
|
|
220
|
-
handles: elevatorHandles,
|
|
221
|
-
// No dirty consumer rebuilds this kind — see NodeDefinition.dirtyTracking.
|
|
222
|
-
dirtyTracking: false,
|
|
223
|
-
rendersChildren: false,
|
|
224
|
-
renderer: {
|
|
225
|
-
kind: 'parametric',
|
|
226
|
-
module: () => import('./renderer.js'),
|
|
227
|
-
},
|
|
228
|
-
system: {
|
|
229
|
-
module: () => import('./system.js'),
|
|
230
|
-
priority: 3,
|
|
231
|
-
},
|
|
232
|
-
floorplan: buildElevatorFloorplan,
|
|
233
|
-
// Elevators are parented to the building (siblings of levels), so the
|
|
234
|
-
// floor-plan layer's level-rooted DFS never reaches them. Declaring
|
|
235
|
-
// `floorplanScope: 'building'` tells `FloorplanRegistryLayer` to walk
|
|
236
|
-
// building-scoped kinds separately and synthesise `ctx.parent` as the
|
|
237
|
-
// active level — that's what `buildElevatorFloorplan` reads via
|
|
238
|
-
// `ctx.parent?.id` to decide whether this floor is in the elevator's
|
|
239
|
-
// service range.
|
|
240
|
-
floorplanScope: 'building',
|
|
241
|
-
// 2D drag affordance for the rotate-arrow emitted at the elevator's
|
|
242
|
-
// front-right corner. Body move uses the generic move-arrow / move-
|
|
243
|
-
// handle path emitted by the floor-plan builder.
|
|
244
|
-
floorplanAffordances: {
|
|
245
|
-
'elevator-resize': elevatorResizeAffordance,
|
|
246
|
-
'elevator-rotate': elevatorRotateAffordance,
|
|
247
|
-
},
|
|
248
|
-
presentation: {
|
|
249
|
-
label: 'Elevator',
|
|
250
|
-
description: 'A multi-level elevator shaft with configurable openings per level.',
|
|
251
|
-
icon: { kind: 'url', src: '/icons/wallcut.webp' },
|
|
252
|
-
paletteSection: 'structure',
|
|
253
|
-
paletteOrder: 80,
|
|
254
|
-
},
|
|
255
|
-
mcp: {
|
|
256
|
-
description: 'A multi-level elevator with shaft + openings per level.',
|
|
257
|
-
},
|
|
258
|
-
};
|
|
1
|
+
import { composeNodeDefinition } from '../definition-contributions.js';
|
|
2
|
+
import { elevatorEditContribution } from './definition.edit.js';
|
|
3
|
+
import { elevatorRenderDefinition } from './definition.render.js';
|
|
4
|
+
export const elevatorDefinition = composeNodeDefinition(elevatorRenderDefinition, elevatorEditContribution);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ElevatorNode as ElevatorNodeType } from '@pascal-app/core';
|
|
2
|
+
import type { NodeRenderDefinition } from '../definition-contributions.js';
|
|
3
|
+
import { ElevatorNode } from './schema.js';
|
|
4
|
+
export declare function elevatorOuterHalfExtents(n: ElevatorNodeType): {
|
|
5
|
+
halfX: number;
|
|
6
|
+
halfZ: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const elevatorRenderDefinition: NodeRenderDefinition<typeof ElevatorNode> & {
|
|
9
|
+
kind: 'elevator';
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=definition.render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.render.d.ts","sourceRoot":"","sources":["../../src/elevator/definition.render.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,IAAI,gBAAgB,EAUtC,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,gBAAgB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ9F;AAED,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,OAAO,YAAY,CAAC,GAAG;IACjF,IAAI,EAAE,UAAU,CAAA;CA8FjB,CAAA"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { ElevatorNode as ElevatorNodeSchema, elevatorSlots, getElevatorCabDepth, getElevatorCabWidth, getElevatorShaftDepth, getElevatorShaftWallThickness, getElevatorShaftWidth, resolveElevatorDimensions, resolveElevatorLevels, resolveElevatorNodeSupportY, } from '@pascal-app/core';
|
|
2
|
+
import { buildElevatorFloorplan } from './floorplan.js';
|
|
3
|
+
import { ElevatorNode } from './schema.js';
|
|
4
|
+
export function elevatorOuterHalfExtents(n) {
|
|
5
|
+
const cabWidth = getElevatorCabWidth(n);
|
|
6
|
+
const cabDepth = getElevatorCabDepth(n);
|
|
7
|
+
const wallThickness = getElevatorShaftWallThickness(n);
|
|
8
|
+
return {
|
|
9
|
+
halfX: getElevatorShaftWidth(n, cabWidth) / 2 + wallThickness,
|
|
10
|
+
halfZ: getElevatorShaftDepth(n, cabDepth) / 2 + wallThickness,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export const elevatorRenderDefinition = {
|
|
14
|
+
kind: 'elevator',
|
|
15
|
+
schemaVersion: 1,
|
|
16
|
+
schema: ElevatorNode,
|
|
17
|
+
category: 'structure',
|
|
18
|
+
surfaceRole: 'joinery',
|
|
19
|
+
defaults: () => {
|
|
20
|
+
const stub = ElevatorNodeSchema.parse({ id: 'elevator_default', type: 'elevator' });
|
|
21
|
+
const { id: _id, type: _type, ...rest } = stub;
|
|
22
|
+
return rest;
|
|
23
|
+
},
|
|
24
|
+
capabilities: {
|
|
25
|
+
surfacePlacement: 'floor-only',
|
|
26
|
+
selectable: { hitVolume: 'bbox' },
|
|
27
|
+
// Generic XZ translate so the floating action menu's Move button
|
|
28
|
+
// (and the side move-arrows emitted from `def.floorplan`) drive the
|
|
29
|
+
// 2D body-move flow through `FloorplanRegistryMoveOverlay`'s
|
|
30
|
+
// Path 2 — position[0] / position[2] update with a 0.5m grid snap.
|
|
31
|
+
movable: {
|
|
32
|
+
axes: ['x', 'z'],
|
|
33
|
+
gridSnap: true,
|
|
34
|
+
resolvePosition: ({ node, position, nodes }) => [
|
|
35
|
+
position[0],
|
|
36
|
+
resolveElevatorNodeSupportY(node, position, nodes),
|
|
37
|
+
position[2],
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
// Align by the OUTER SHAFT (shaft + wall — what's drawn in plan and 3D),
|
|
41
|
+
// not the cab `width × depth`: the cab is inset by the shaft wall +
|
|
42
|
+
// clearance, so cab corners sit ~9 cm inside the visible edge — past the
|
|
43
|
+
// 8 cm snap, which is why the elevator never surfaced a guide. A `box`
|
|
44
|
+
// shape (not `aabb`) because the elevator is `movable`, so the anchor
|
|
45
|
+
// bridge relocates this same footprint to the drag point.
|
|
46
|
+
alignmentFootprint: (node) => {
|
|
47
|
+
const e = node;
|
|
48
|
+
const { halfX, halfZ } = elevatorOuterHalfExtents(e);
|
|
49
|
+
return {
|
|
50
|
+
shape: 'box',
|
|
51
|
+
dimensions: [halfX * 2, 1, halfZ * 2],
|
|
52
|
+
rotation: [0, e.rotation ?? 0, 0],
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
// Drag box wraps just the OUTER SHAFT × full shaft height — same footprint
|
|
56
|
+
// alignment uses, same height the rendered shell occupies. Without this
|
|
57
|
+
// override, `DragBoundingBox` would measure the whole mesh tree (per-level
|
|
58
|
+
// landing assemblies, cab interior, buttons) and the box would feel
|
|
59
|
+
// vertically off-centre when the elevator's lowest served level isn't the
|
|
60
|
+
// building origin.
|
|
61
|
+
dragBounds: (node, nodes) => {
|
|
62
|
+
const e = node;
|
|
63
|
+
const { halfX, halfZ } = elevatorOuterHalfExtents(e);
|
|
64
|
+
const { shaftBaseY, totalHeight } = resolveElevatorLevels(e, nodes ?? {});
|
|
65
|
+
const cabHeight = resolveElevatorDimensions(e).cabHeight;
|
|
66
|
+
const shaftHeight = Math.max(totalHeight, cabHeight + 0.3);
|
|
67
|
+
return {
|
|
68
|
+
size: [halfX * 2, shaftHeight, halfZ * 2],
|
|
69
|
+
centerY: shaftBaseY + shaftHeight / 2,
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
duplicable: true,
|
|
73
|
+
deletable: true,
|
|
74
|
+
slots: (node) => elevatorSlots(node),
|
|
75
|
+
},
|
|
76
|
+
// No dirty consumer rebuilds this kind — see NodeDefinition.dirtyTracking.
|
|
77
|
+
dirtyTracking: false,
|
|
78
|
+
rendersChildren: false,
|
|
79
|
+
renderer: {
|
|
80
|
+
kind: 'parametric',
|
|
81
|
+
module: () => import('./renderer.js'),
|
|
82
|
+
},
|
|
83
|
+
system: {
|
|
84
|
+
module: () => import('./system.js'),
|
|
85
|
+
priority: 3,
|
|
86
|
+
},
|
|
87
|
+
floorplan: buildElevatorFloorplan,
|
|
88
|
+
// Elevators are parented to the building (siblings of levels), so the
|
|
89
|
+
// floor-plan layer's level-rooted DFS never reaches them. Declaring
|
|
90
|
+
// `floorplanScope: 'building'` tells `FloorplanRegistryLayer` to walk
|
|
91
|
+
// building-scoped kinds separately and synthesise `ctx.parent` as the
|
|
92
|
+
// active level — that's what `buildElevatorFloorplan` reads via
|
|
93
|
+
// `ctx.parent?.id` to decide whether this floor is in the elevator's
|
|
94
|
+
// service range.
|
|
95
|
+
floorplanScope: 'building',
|
|
96
|
+
presentation: {
|
|
97
|
+
label: 'Elevator',
|
|
98
|
+
description: 'A multi-level elevator shaft with configurable openings per level.',
|
|
99
|
+
icon: { kind: 'url', src: '/icons/elevator.webp' },
|
|
100
|
+
paletteSection: 'structure',
|
|
101
|
+
paletteOrder: 80,
|
|
102
|
+
},
|
|
103
|
+
mcp: {
|
|
104
|
+
description: 'A multi-level elevator with shaft + openings per level.',
|
|
105
|
+
},
|
|
106
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floorplan-affordances.d.ts","sourceRoot":"","sources":["../../src/elevator/floorplan-affordances.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"floorplan-affordances.d.ts","sourceRoot":"","sources":["../../src/elevator/floorplan-affordances.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAKzB,MAAM,kBAAkB,CAAA;AAQzB;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,CAAC,YAAY,CAuDtE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,CAAC,YAAY,CAgCtE,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useLiveNodeOverrides, useScene, } from '@pascal-app/core';
|
|
1
|
+
import { ELEVATOR_MIN_CAB_DIMENSION, normalizeElevatorDimensions, resolveElevatorDimensions, useLiveNodeOverrides, useScene, } from '@pascal-app/core';
|
|
2
2
|
import { isAngleSnapActive } from '@pascal-app/editor';
|
|
3
3
|
import { rotateAffordanceDelta } from '../shared/rotate-affordance.js';
|
|
4
|
-
const MIN_ELEVATOR_DIM =
|
|
4
|
+
const MIN_ELEVATOR_DIM = ELEVATOR_MIN_CAB_DIMENSION;
|
|
5
5
|
/**
|
|
6
6
|
* Elevator width / depth drag (floor-plan). Mirrors the 3D
|
|
7
7
|
* `linear-resize` handles declared in `definition.ts` — `anchor: 'center'`
|
|
@@ -13,7 +13,7 @@ export const elevatorResizeAffordance = {
|
|
|
13
13
|
start({ node, payload, initialPlanPoint }) {
|
|
14
14
|
const { axis, side } = payload;
|
|
15
15
|
const elevatorId = node.id;
|
|
16
|
-
const initialValue = axis === 'x' ? node.width : node.depth;
|
|
16
|
+
const initialValue = axis === 'x' ? resolveElevatorDimensions(node).width : resolveElevatorDimensions(node).depth;
|
|
17
17
|
const cx = node.position[0];
|
|
18
18
|
const cz = node.position[2];
|
|
19
19
|
const rotation = node.rotation ?? 0;
|
|
@@ -38,9 +38,10 @@ export const elevatorResizeAffordance = {
|
|
|
38
38
|
const delta = (currentLocal - initialLocal) * side;
|
|
39
39
|
const newValue = Math.max(MIN_ELEVATOR_DIM, initialValue + 2 * delta);
|
|
40
40
|
lastValue = newValue;
|
|
41
|
-
useLiveNodeOverrides
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
useLiveNodeOverrides.getState().set(elevatorId, normalizeElevatorDimensions({
|
|
42
|
+
...node,
|
|
43
|
+
...(axis === 'x' ? { width: newValue } : { depth: newValue }),
|
|
44
|
+
}));
|
|
44
45
|
useScene.getState().markDirty(elevatorId);
|
|
45
46
|
},
|
|
46
47
|
canCommit() {
|
|
@@ -48,9 +49,10 @@ export const elevatorResizeAffordance = {
|
|
|
48
49
|
},
|
|
49
50
|
commit() {
|
|
50
51
|
useLiveNodeOverrides.getState().clear(elevatorId);
|
|
51
|
-
useScene
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
useScene.getState().updateNode(elevatorId, normalizeElevatorDimensions({
|
|
53
|
+
...node,
|
|
54
|
+
...(axis === 'x' ? { width: lastValue } : { depth: lastValue }),
|
|
55
|
+
}));
|
|
54
56
|
},
|
|
55
57
|
};
|
|
56
58
|
},
|
|
@@ -1,3 +1,22 @@
|
|
|
1
1
|
import { type ElevatorNode, type FloorplanGeometry, type GeometryContext } from '@pascal-app/core';
|
|
2
|
+
/**
|
|
3
|
+
* Stage C floor-plan emitter for elevator. Architectural symbol style:
|
|
4
|
+
*
|
|
5
|
+
* - **Outer shaft outline** — outer face of the shaft wall.
|
|
6
|
+
* - **Inner shaft outline** — inner face of the shaft wall, offset
|
|
7
|
+
* inward by `shaftWallThickness`. The two outlines together read as
|
|
8
|
+
* a hollow wall in plan.
|
|
9
|
+
* - **Dashed X** — two diagonals across the shaft interior, the
|
|
10
|
+
* universal architectural mark for an elevator cab.
|
|
11
|
+
* - **Door opening** — two small jamb stubs flanking the opening at
|
|
12
|
+
* the front face, with a dashed line spanning the opening (the
|
|
13
|
+
* closed door).
|
|
14
|
+
* - **Selection / runtime chrome** — selected → palette stroke;
|
|
15
|
+
* cab-on-level → green tint on the X; target/queued → sky accent.
|
|
16
|
+
*
|
|
17
|
+
* Reads live overrides (`useLiveNodeOverrides`) and runtime cab state
|
|
18
|
+
* (`useInteractive.elevators[id]`) non-reactively; the registry layer
|
|
19
|
+
* subscribes to both stores so this builder re-runs on change.
|
|
20
|
+
*/
|
|
2
21
|
export declare function buildElevatorFloorplan(node: ElevatorNode, ctx: GeometryContext): FloorplanGeometry | null;
|
|
3
22
|
//# sourceMappingURL=floorplan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/elevator/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAEtB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/elevator/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EAKrB,MAAM,kBAAkB,CAAA;AAEzB;;;;;;;;;;;;;;;;;;GAkBG;AAEH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,eAAe,GACnB,iBAAiB,GAAG,IAAI,CAwU1B"}
|