@pascal-app/nodes 1.0.7 → 1.1.0
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 +42 -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 +133 -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 +32 -0
- package/dist/beam/floorplan.d.ts.map +1 -1
- package/dist/beam/floorplan.js +2 -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 +28 -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 +120 -0
- 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 +151 -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 +40 -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 +1375 -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 +751 -0
- 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 +125 -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 +71 -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 +219 -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 +59 -0
- package/dist/chimney/move-tool.d.ts.map +1 -1
- package/dist/chimney/move-tool.js +6 -4
- 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 +323 -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 +81 -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 +33 -91
- 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 +32 -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 +53 -0
- package/dist/construction-dimension/floorplan-tool.d.ts.map +1 -1
- package/dist/construction-dimension/floorplan-tool.js +2 -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 +103 -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 +43 -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 +246 -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 +88 -0
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +11 -8
- 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 +214 -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 +52 -0
- 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 +49 -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 +82 -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.d.ts +2 -2
- package/dist/duct-segment/continuation.d.ts.map +1 -1
- package/dist/duct-segment/continuation.js +53 -2
- 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 +100 -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 +89 -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 +1 -1
- 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 +112 -53
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +103 -27
- 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 +14 -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 +66 -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 +177 -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 +96 -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 +106 -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 +43 -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 +282 -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 +124 -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 +69 -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 +69 -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 +11 -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 +32 -0
- 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 +121 -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 +44 -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 +13 -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 +72 -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 +5 -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 +36 -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 +206 -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 +128 -0
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +2 -2
- 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 +392 -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 +46 -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 +38 -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 +72 -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 +31 -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 +70 -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 +26 -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 +43 -0
- package/dist/measurement/floorplan.d.ts.map +1 -1
- package/dist/measurement/floorplan.js +3 -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 +47 -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 +54 -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.d.ts +3 -2
- package/dist/pipe-segment/continuation.d.ts.map +1 -1
- package/dist/pipe-segment/continuation.js +60 -1
- 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 +48 -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 +78 -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 +34 -1
- 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 +122 -178
- 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 +123 -28
- 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 +13 -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 +43 -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 +255 -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 +84 -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 +148 -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 +42 -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 +183 -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 +101 -0
- 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/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 +305 -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 +59 -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 +13 -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 +27 -0
- 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-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 +1 -1
- 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 +155 -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 +122 -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 +218 -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 +50 -0
- package/dist/skylight/move-tool.d.ts.map +1 -1
- package/dist/skylight/move-tool.js +7 -5
- 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 +230 -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 +92 -0
- 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 +213 -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 +42 -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 +64 -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 +48 -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 +377 -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 +65 -0
- package/dist/stair/panel.js +2 -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 +18 -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 +35 -0
- 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 +66 -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 +40 -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 +2 -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 +184 -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 +100 -0
- package/dist/wall/floorplan.js +1 -1
- 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 +255 -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 +83 -0
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +7 -4
- 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 +38 -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 +55 -0
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +2 -2
- package/package.json +21 -10
|
@@ -1,390 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { ChimneyNode } from './schema.js';
|
|
6
|
-
// Side handle offsets in metres. Match the roof-segment values so a
|
|
7
|
-
// segment + chimney selected back-to-back use the same visual rhythm.
|
|
8
|
-
const SIDE_HANDLE_OFFSET = 0.25;
|
|
9
|
-
const HEIGHT_HANDLE_OFFSET = 0.25;
|
|
10
|
-
const ROTATE_CORNER_OFFSET = 0.35;
|
|
11
|
-
const MIN_BODY_DIM = 0.3;
|
|
12
|
-
const MIN_HEIGHT_ABOVE_RIDGE = 0.05;
|
|
13
|
-
const MIN_FLUE_HEIGHT = 0.05;
|
|
14
|
-
const MAX_FLUE_HEIGHT = 1.5;
|
|
15
|
-
const MIN_CAP_THICKNESS = 0.02;
|
|
16
|
-
const MAX_CAP_THICKNESS = 0.5;
|
|
17
|
-
const MIN_CAP_OVERHANG = 0;
|
|
18
|
-
const MAX_CAP_OVERHANG = 0.3;
|
|
19
|
-
// Cap-reveal gap between body top and cap base — mirrors the
|
|
20
|
-
// `CAP_REVEAL` constant in `geometry.ts`. Local copy because handle
|
|
21
|
-
// placements need to know the cap's Y range and the geometry's
|
|
22
|
-
// constant isn't exported. If you change it here, change it there.
|
|
23
|
-
const CAP_REVEAL = 0.003;
|
|
24
|
-
// Fallback Y when the host segment can't be resolved (shouldn't happen
|
|
25
|
-
// for a placed chimney, but `placement.position` runs synchronously and
|
|
26
|
-
// must always return a vector).
|
|
27
|
-
const FALLBACK_BODY_MID_Y = 1.5;
|
|
28
|
-
// Resolve the segment that hosts this chimney. Returns undefined if the
|
|
29
|
-
// chimney is unparented or the parent isn't in the scene yet.
|
|
30
|
-
function resolveHostSegment(node, sceneApi) {
|
|
31
|
-
if (!node.roofSegmentId)
|
|
32
|
-
return undefined;
|
|
33
|
-
return sceneApi.get(node.roofSegmentId);
|
|
34
|
-
}
|
|
35
|
-
// Mid-Y of the visible chimney body in the host segment's local frame.
|
|
36
|
-
// Matches the geometry builder: body runs from `baseY = max(0, wallHeight
|
|
37
|
-
// - 0.2)` up to `peakY + heightAboveRidge`. The handle Y picks the
|
|
38
|
-
// midpoint of the *visible* portion (deck plane → top) so chevrons sit
|
|
39
|
-
// next to the body, not buried inside the roof deck or floating over
|
|
40
|
-
// the eave.
|
|
41
|
-
function getBodyMidY(node, segment) {
|
|
42
|
-
const peakY = segment.wallHeight + getActiveRoofHeight(segment);
|
|
43
|
-
const topY = peakY + node.heightAboveRidge;
|
|
44
|
-
return (segment.wallHeight + topY) / 2;
|
|
45
|
-
}
|
|
46
|
-
// Top of the chimney body (where the cap reveal gap begins). Tracker
|
|
47
|
-
// handle and cap-thickness handle both reference this Y.
|
|
48
|
-
function getBodyTopY(node, segment) {
|
|
49
|
-
return segment.wallHeight + getActiveRoofHeight(segment) + node.heightAboveRidge;
|
|
50
|
-
}
|
|
51
|
-
// Cap base Y — the bottom of the cap slab. Sits just above the body
|
|
52
|
-
// top with a small reveal gap so a shadow line separates them.
|
|
53
|
-
function getCapBaseY(node, segment) {
|
|
54
|
-
return getBodyTopY(node, segment) + CAP_REVEAL;
|
|
55
|
-
}
|
|
56
|
-
// Cap top Y — the top of the cap slab. Falls back to body top when no
|
|
57
|
-
// cap is rendered (flues mount on whichever is the upper surface).
|
|
58
|
-
function getCapTopY(node, segment) {
|
|
59
|
-
if (!node.cap || node.capShape === 'none')
|
|
60
|
-
return getBodyTopY(node, segment);
|
|
61
|
-
return getCapBaseY(node, segment) + node.capThickness;
|
|
62
|
-
}
|
|
63
|
-
// Width arrow on the +X (right) or -X (left) side. Asymmetric resize:
|
|
64
|
-
// dragging one arrow grows the chimney outward from its own edge while
|
|
65
|
-
// the opposite edge stays world-fixed. Handles live in the chimney's
|
|
66
|
-
// registered ref frame (the nested inner group in the renderer that
|
|
67
|
-
// applies `node.position` / `node.rotation`), so placements are in
|
|
68
|
-
// chimney-local coordinates — no per-arrow rotation/translation
|
|
69
|
-
// compensation. `apply` keeps the world-fixed edge anchored even when
|
|
70
|
-
// the chimney is rotated by recentering `position` along the chimney's
|
|
71
|
-
// own +X arm in segment frame.
|
|
72
|
-
function chimneyWidthHandle(side) {
|
|
73
|
-
const sign = side === 'right' ? 1 : -1;
|
|
74
|
-
return {
|
|
75
|
-
kind: 'linear-resize',
|
|
76
|
-
axis: 'x',
|
|
77
|
-
anchor: side === 'right' ? 'min' : 'max',
|
|
78
|
-
// Portal into the roof (grandparent), not the segment (parent). Unpainted
|
|
79
|
-
// roof segments live inside a `visible={false}` wrapper, which would
|
|
80
|
-
// hide the handles. The roof itself is always visible. Skylight does
|
|
81
|
-
// the same.
|
|
82
|
-
portal: 'grandparent',
|
|
83
|
-
min: MIN_BODY_DIM,
|
|
84
|
-
currentValue: (n) => n.width,
|
|
85
|
-
apply: (initial, newWidth) => {
|
|
86
|
-
const rotY = initial.rotation ?? 0;
|
|
87
|
-
const armX = Math.cos(rotY);
|
|
88
|
-
const armZ = -Math.sin(rotY);
|
|
89
|
-
const anchorX = initial.position[0] - sign * (initial.width / 2) * armX;
|
|
90
|
-
const anchorZ = initial.position[2] - sign * (initial.width / 2) * armZ;
|
|
91
|
-
const newCenterX = anchorX + sign * (newWidth / 2) * armX;
|
|
92
|
-
const newCenterZ = anchorZ + sign * (newWidth / 2) * armZ;
|
|
93
|
-
return {
|
|
94
|
-
width: newWidth,
|
|
95
|
-
position: [newCenterX, initial.position[1], newCenterZ],
|
|
96
|
-
};
|
|
97
|
-
},
|
|
98
|
-
placement: {
|
|
99
|
-
position: (n, sceneApi) => {
|
|
100
|
-
const segment = resolveHostSegment(n, sceneApi);
|
|
101
|
-
const y = segment ? getBodyMidY(n, segment) : FALLBACK_BODY_MID_Y;
|
|
102
|
-
return [sign * (n.width / 2 + SIDE_HANDLE_OFFSET), y, 0];
|
|
103
|
-
},
|
|
104
|
-
// Chevron faces along the chimney's own ±X; the left arrow flips
|
|
105
|
-
// 180°. No node.rotation here — the registered inner group is
|
|
106
|
-
// already rotated by `node.rotation`, so chimney-local +X is the
|
|
107
|
-
// chevron's natural direction.
|
|
108
|
-
rotationY: () => (side === 'right' ? 0 : Math.PI),
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
// Depth arrow — symmetric on the +Z side. Only meaningful for square
|
|
113
|
-
// bodies; round chimneys are circular (depth field is ignored by the
|
|
114
|
-
// geometry builder, so a depth handle would just resize an invisible
|
|
115
|
-
// field). The chimneys factory below omits this descriptor for round
|
|
116
|
-
// bodies.
|
|
117
|
-
function chimneyDepthHandle() {
|
|
118
|
-
return {
|
|
119
|
-
kind: 'linear-resize',
|
|
120
|
-
axis: 'z',
|
|
121
|
-
anchor: 'center',
|
|
122
|
-
min: MIN_BODY_DIM,
|
|
123
|
-
currentValue: (n) => n.depth,
|
|
124
|
-
apply: (_n, newValue) => ({ depth: newValue }),
|
|
125
|
-
placement: {
|
|
126
|
-
position: (n, sceneApi) => {
|
|
127
|
-
const segment = resolveHostSegment(n, sceneApi);
|
|
128
|
-
const y = segment ? getBodyMidY(n, segment) : FALLBACK_BODY_MID_Y;
|
|
129
|
-
return [0, y, n.depth / 2 + SIDE_HANDLE_OFFSET];
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
// Height-above-ridge tracker. Dashed leader spans the chimney body's
|
|
135
|
-
// visible extent — from the roof deck plane up to the body top — and
|
|
136
|
-
// terminates in a draggable cube at the body top. Cap, flues, cricket
|
|
137
|
-
// and bands sit ABOVE the body and are explicitly excluded from the
|
|
138
|
-
// leader so the height affordance reads as "this is the body height",
|
|
139
|
-
// not "this is the whole stack height". Dragging the cube vertically
|
|
140
|
-
// adjusts `heightAboveRidge` 1:1.
|
|
141
|
-
function chimneyHeightAboveRidgeHandle() {
|
|
142
|
-
return {
|
|
143
|
-
kind: 'linear-resize',
|
|
144
|
-
axis: 'y',
|
|
145
|
-
anchor: 'min',
|
|
146
|
-
shape: 'tracker',
|
|
147
|
-
min: MIN_HEIGHT_ABOVE_RIDGE,
|
|
148
|
-
currentValue: (n) => n.heightAboveRidge,
|
|
149
|
-
apply: (initial, newValue) => ({
|
|
150
|
-
heightAboveRidge: Math.max(MIN_HEIGHT_ABOVE_RIDGE, newValue),
|
|
151
|
-
}),
|
|
152
|
-
placement: {
|
|
153
|
-
// Cube sits AT the body top (no offset) so the leader terminates
|
|
154
|
-
// exactly at the body's top edge — visually the "ceiling" of the
|
|
155
|
-
// body, before the cap reveal gap.
|
|
156
|
-
position: (n, sceneApi) => {
|
|
157
|
-
const segment = resolveHostSegment(n, sceneApi);
|
|
158
|
-
const y = segment ? getBodyTopY(n, segment) : FALLBACK_BODY_MID_Y;
|
|
159
|
-
return [0, y, 0];
|
|
160
|
-
},
|
|
161
|
-
},
|
|
162
|
-
// Leader bottom = deck plane (segment.wallHeight). The chimney body
|
|
163
|
-
// geometry actually extends a touch below the deck so the bottom
|
|
164
|
-
// doesn't show above the eave on low-slope roofs (`baseY = max(0,
|
|
165
|
-
// wallHeight - 0.2)`), but the visible portion starts at the deck —
|
|
166
|
-
// and starting the leader there is what reads as "body height" to
|
|
167
|
-
// the user.
|
|
168
|
-
trackerBaseY: (n, sceneApi) => {
|
|
169
|
-
const segment = resolveHostSegment(n, sceneApi);
|
|
170
|
-
return segment?.wallHeight ?? 0;
|
|
171
|
-
},
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
// Whole-chimney rotation gizmo at the +X/+Z corner of the body
|
|
175
|
-
// footprint. The registered inner group already centers on the chimney
|
|
176
|
-
// and applies its yaw, so the default rotation pivot (rideObject origin)
|
|
177
|
-
// is correct — no `rotationCenter` override needed.
|
|
178
|
-
function chimneyRotateHandle() {
|
|
179
|
-
return {
|
|
180
|
-
kind: 'arc-resize',
|
|
181
|
-
axis: 'angular',
|
|
182
|
-
shape: 'rotate',
|
|
183
|
-
apply: (initial, delta) => ({ rotation: (initial.rotation ?? 0) - delta }),
|
|
184
|
-
placement: {
|
|
185
|
-
position: (n, sceneApi) => {
|
|
186
|
-
const segment = resolveHostSegment(n, sceneApi);
|
|
187
|
-
const y = segment ? getBodyMidY(n, segment) : FALLBACK_BODY_MID_Y;
|
|
188
|
-
const isRound = n.bodyShape === 'round';
|
|
189
|
-
const halfX = n.width / 2 + ROTATE_CORNER_OFFSET;
|
|
190
|
-
const halfZ = (isRound ? n.width : n.depth) / 2 + ROTATE_CORNER_OFFSET;
|
|
191
|
-
return [halfX, y, halfZ];
|
|
192
|
-
},
|
|
193
|
-
// The two-headed icon's natural bias points along +X; aim it
|
|
194
|
-
// toward the corner (45° outward from the chimney's local frame).
|
|
195
|
-
rotationY: () => -Math.PI / 4,
|
|
196
|
-
},
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
// Flue-height chevron at the center of the cap top, pointing upward.
|
|
200
|
-
// Drag adjusts `flueHeight` for ALL flues uniformly — the schema only
|
|
201
|
-
// carries a single scalar. Placed at chimney center (X=Z=0) so the
|
|
202
|
-
// handle stays valid regardless of `flueCount` / `flueSpacing`. Anchor
|
|
203
|
-
// is 'min' so the flue base stays pinned to the cap and the top edge
|
|
204
|
-
// follows the pointer.
|
|
205
|
-
function chimneyFlueHeightHandle() {
|
|
206
|
-
return {
|
|
207
|
-
kind: 'linear-resize',
|
|
208
|
-
axis: 'y',
|
|
209
|
-
anchor: 'min',
|
|
210
|
-
portal: 'grandparent',
|
|
211
|
-
min: MIN_FLUE_HEIGHT,
|
|
212
|
-
max: MAX_FLUE_HEIGHT,
|
|
213
|
-
currentValue: (n) => n.flueHeight,
|
|
214
|
-
apply: (_n, newValue) => ({ flueHeight: newValue }),
|
|
215
|
-
placement: {
|
|
216
|
-
position: (n, sceneApi) => {
|
|
217
|
-
const segment = resolveHostSegment(n, sceneApi);
|
|
218
|
-
// Sit the chevron at the flue top so it visually attaches to
|
|
219
|
-
// the thing being dragged. Fallback Y mirrors the body-top
|
|
220
|
-
// fallback above.
|
|
221
|
-
const baseY = segment ? getCapTopY(n, segment) : FALLBACK_BODY_MID_Y;
|
|
222
|
-
return [0, baseY + n.flueHeight, 0];
|
|
223
|
-
},
|
|
224
|
-
},
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
// Cap-thickness chevron above the cap top, pointing upward. Anchor is
|
|
228
|
-
// 'min' so the cap base stays at body-top + reveal and the top edge
|
|
229
|
-
// follows the pointer.
|
|
230
|
-
function chimneyCapThicknessHandle() {
|
|
231
|
-
return {
|
|
232
|
-
kind: 'linear-resize',
|
|
233
|
-
axis: 'y',
|
|
234
|
-
anchor: 'min',
|
|
235
|
-
portal: 'grandparent',
|
|
236
|
-
min: MIN_CAP_THICKNESS,
|
|
237
|
-
max: MAX_CAP_THICKNESS,
|
|
238
|
-
currentValue: (n) => n.capThickness,
|
|
239
|
-
apply: (_n, newValue) => ({ capThickness: newValue }),
|
|
240
|
-
placement: {
|
|
241
|
-
position: (n, sceneApi) => {
|
|
242
|
-
const segment = resolveHostSegment(n, sceneApi);
|
|
243
|
-
// Offset toward +Z (away from chimney center on the depth axis)
|
|
244
|
-
// so the cap-thickness chevron doesn't overlap the flue-height
|
|
245
|
-
// chevron at X=0,Z=0. Pick the cap edge minus a small margin so
|
|
246
|
-
// it sits on top of the cap, not floating off to the side.
|
|
247
|
-
const isRound = n.bodyShape === 'round';
|
|
248
|
-
const halfZ = (isRound ? n.width : n.depth) / 2;
|
|
249
|
-
const z = halfZ * 0.35;
|
|
250
|
-
const y = segment ? getCapTopY(n, segment) : FALLBACK_BODY_MID_Y;
|
|
251
|
-
return [0, y, z];
|
|
252
|
-
},
|
|
253
|
-
},
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
// Cap-overhang radial chevron on the +X edge of the cap. Outward 1:1
|
|
257
|
-
// drag grows the overhang; the cap's half-extent is `width/2 + overhang`.
|
|
258
|
-
function chimneyCapOverhangHandle() {
|
|
259
|
-
return {
|
|
260
|
-
kind: 'radial-resize',
|
|
261
|
-
axis: 'x',
|
|
262
|
-
portal: 'grandparent',
|
|
263
|
-
min: MIN_CAP_OVERHANG,
|
|
264
|
-
max: MAX_CAP_OVERHANG,
|
|
265
|
-
currentValue: (n) => n.capOverhang,
|
|
266
|
-
apply: (_n, newValue) => ({ capOverhang: newValue }),
|
|
267
|
-
placement: {
|
|
268
|
-
position: (n, sceneApi) => {
|
|
269
|
-
const segment = resolveHostSegment(n, sceneApi);
|
|
270
|
-
// Cap mid-height in the chimney-local frame so the chevron sits
|
|
271
|
-
// on the cap edge, not above or below it.
|
|
272
|
-
const capBaseY = segment ? getCapBaseY(n, segment) : FALLBACK_BODY_MID_Y;
|
|
273
|
-
const y = capBaseY + n.capThickness / 2;
|
|
274
|
-
return [n.width / 2 + n.capOverhang + SIDE_HANDLE_OFFSET, y, 0];
|
|
275
|
-
},
|
|
276
|
-
},
|
|
277
|
-
};
|
|
278
|
-
}
|
|
279
|
-
const chimneyHandles = (node) => {
|
|
280
|
-
const descriptors = [
|
|
281
|
-
chimneyWidthHandle('right'),
|
|
282
|
-
chimneyWidthHandle('left'),
|
|
283
|
-
];
|
|
284
|
-
if (node.bodyShape !== 'round')
|
|
285
|
-
descriptors.push(chimneyDepthHandle());
|
|
286
|
-
descriptors.push(chimneyHeightAboveRidgeHandle(), chimneyRotateHandle());
|
|
287
|
-
// Conditional flue/cap handles are temporarily disabled — they fired
|
|
288
|
-
// a "Color target has no corresponding fragment stage output" WebGPU
|
|
289
|
-
// validation error that the original four handles don't trigger. The
|
|
290
|
-
// descriptor shapes (linear-resize y / radial-resize x) match other
|
|
291
|
-
// working handles in the codebase, so the cause is likely a TSL/MRT
|
|
292
|
-
// pipeline interaction we haven't pinned down. Re-enable one at a
|
|
293
|
-
// time after isolating the trigger; the factory + helpers are kept so
|
|
294
|
-
// we can flip them back on without re-deriving the placement math.
|
|
295
|
-
// if (node.cap && node.capShape !== 'none') {
|
|
296
|
-
// descriptors.push(chimneyCapThicknessHandle(), chimneyCapOverhangHandle())
|
|
297
|
-
// }
|
|
298
|
-
// if (node.flueCount > 0) descriptors.push(chimneyFlueHeightHandle())
|
|
299
|
-
return descriptors;
|
|
300
|
-
};
|
|
301
|
-
// Every fresh chimney starts as plain white (body + top). The paint
|
|
302
|
-
// flow / material picker writes preset refs or full `MaterialSchema`
|
|
303
|
-
// objects on top of this; until then both roles render `#ffffff`.
|
|
304
|
-
const WHITE_MATERIAL = {
|
|
305
|
-
properties: {
|
|
306
|
-
color: '#ffffff',
|
|
307
|
-
roughness: 0.85,
|
|
308
|
-
metalness: 0,
|
|
309
|
-
opacity: 1,
|
|
310
|
-
transparent: false,
|
|
311
|
-
side: 'front',
|
|
312
|
-
},
|
|
313
|
-
};
|
|
314
|
-
/**
|
|
315
|
-
* Chimney — a vertical masonry stack hosted on a roof segment.
|
|
316
|
-
*
|
|
317
|
-
* Three-checkbox model: `def.renderer` (custom — segment-aware
|
|
318
|
-
* geometry from `useScene`, body height derived from
|
|
319
|
-
* `segment.wallHeight + roofHeight + heightAboveRidge`), no `geometry`,
|
|
320
|
-
* no `system`.
|
|
321
|
-
*
|
|
322
|
-
* **Option C scope**: chimney ships in the registry shape with solid
|
|
323
|
-
* geometry. CSG-driven decoration (cap flue holes, body cavity,
|
|
324
|
-
* panels, bands) is preserved in the schema but not rendered yet —
|
|
325
|
-
* those re-light when roof-segment migrates to Stage B and introduces
|
|
326
|
-
* a `roofCutout` capability the parent segment can read.
|
|
327
|
-
*/
|
|
328
|
-
export const chimneyDefinition = {
|
|
329
|
-
kind: 'chimney',
|
|
330
|
-
schemaVersion: 1,
|
|
331
|
-
schema: ChimneyNode,
|
|
332
|
-
category: 'structure',
|
|
333
|
-
surfaceRole: 'wall',
|
|
334
|
-
defaults: () => {
|
|
335
|
-
const stub = ChimneyNodeSchema.parse({
|
|
336
|
-
id: 'chimney_default',
|
|
337
|
-
type: 'chimney',
|
|
338
|
-
material: WHITE_MATERIAL,
|
|
339
|
-
topMaterial: WHITE_MATERIAL,
|
|
340
|
-
});
|
|
341
|
-
const { id: _id, type: _type, ...rest } = stub;
|
|
342
|
-
return rest;
|
|
343
|
-
},
|
|
344
|
-
capabilities: {
|
|
345
|
-
exterior: true,
|
|
346
|
-
selectable: { hitVolume: 'bbox' },
|
|
347
|
-
duplicable: true,
|
|
348
|
-
deletable: true,
|
|
349
|
-
// Mounts on a roof segment via `roofSegmentId`. Dirty marks
|
|
350
|
-
// cascade to the host segment's parent roof so its merged shell
|
|
351
|
-
// re-renders. No `buildCut` — the chimney does its own self-trim
|
|
352
|
-
// via `trimChimneyBodyAgainstRoof`; the host roof shell stays solid
|
|
353
|
-
// underneath.
|
|
354
|
-
roofAccessory: {},
|
|
355
|
-
// Paint dispatch for the body / top surface split. The editor's
|
|
356
|
-
// selection-manager routes paint hover / click / preview through
|
|
357
|
-
// this entry rather than carrying a kind-name arm.
|
|
358
|
-
paint: chimneyPaint,
|
|
359
|
-
},
|
|
360
|
-
affordanceTools: {
|
|
361
|
-
// Drag-to-place tool for duplicate + move. Reuses the placement
|
|
362
|
-
// ghost preview but seeds it from the moving (cloned) node so the
|
|
363
|
-
// duplicate keeps the source's body shape, materials, panels, etc.
|
|
364
|
-
move: () => import('./move-tool.js'),
|
|
365
|
-
},
|
|
366
|
-
parametrics: chimneyParametrics,
|
|
367
|
-
handles: chimneyHandles,
|
|
368
|
-
floorplan: buildChimneyFloorplan,
|
|
369
|
-
rendersChildren: false,
|
|
370
|
-
renderer: {
|
|
371
|
-
kind: 'parametric',
|
|
372
|
-
module: () => import('./renderer.js'),
|
|
373
|
-
},
|
|
374
|
-
preview: () => import('./preview.js'),
|
|
375
|
-
tool: () => import('./tool.js'),
|
|
376
|
-
toolHints: [
|
|
377
|
-
{ key: 'Left click', label: 'Place chimney on roof' },
|
|
378
|
-
{ key: 'Esc', label: 'Cancel' },
|
|
379
|
-
],
|
|
380
|
-
presentation: {
|
|
381
|
-
label: 'Chimney',
|
|
382
|
-
description: 'Vertical masonry stack on a roof segment.',
|
|
383
|
-
icon: { kind: 'url', src: '/icons/chimney.webp' },
|
|
384
|
-
paletteSection: 'structure',
|
|
385
|
-
paletteOrder: 122,
|
|
386
|
-
},
|
|
387
|
-
mcp: {
|
|
388
|
-
description: 'A chimney on a roof segment. Square or round body; optional shoulder taper; sloped/flat/stepped cap; up to 4 protruding flues; optional cricket on the up-slope face.',
|
|
389
|
-
},
|
|
390
|
-
};
|
|
1
|
+
import { composeNodeDefinition } from '../definition-contributions.js';
|
|
2
|
+
import { chimneyEditContribution } from './definition.edit.js';
|
|
3
|
+
import { chimneyRenderDefinition } from './definition.render.js';
|
|
4
|
+
export const chimneyDefinition = composeNodeDefinition(chimneyRenderDefinition, chimneyEditContribution);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NodeRenderDefinition } from '../definition-contributions.js';
|
|
2
|
+
import { ChimneyNode } from './schema.js';
|
|
3
|
+
export declare const chimneyRenderDefinition: NodeRenderDefinition<typeof ChimneyNode> & {
|
|
4
|
+
kind: 'chimney';
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=definition.render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.render.d.ts","sourceRoot":"","sources":["../../src/chimney/definition.render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAgBtC,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,CAAC,OAAO,WAAW,CAAC,GAAG;IAC/E,IAAI,EAAE,SAAS,CAAA;CA6ChB,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ChimneyNode as ChimneyNodeSchema } from '@pascal-app/core';
|
|
2
|
+
import { ChimneyNode } from './schema.js';
|
|
3
|
+
// Every fresh chimney starts as plain white (body + top). The paint
|
|
4
|
+
// flow / material picker writes preset refs or full `MaterialSchema`
|
|
5
|
+
// objects on top of this; until then both roles render `#ffffff`.
|
|
6
|
+
const WHITE_MATERIAL = {
|
|
7
|
+
properties: {
|
|
8
|
+
color: '#ffffff',
|
|
9
|
+
roughness: 0.85,
|
|
10
|
+
metalness: 0,
|
|
11
|
+
opacity: 1,
|
|
12
|
+
transparent: false,
|
|
13
|
+
side: 'front',
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
export const chimneyRenderDefinition = {
|
|
17
|
+
kind: 'chimney',
|
|
18
|
+
schemaVersion: 1,
|
|
19
|
+
schema: ChimneyNode,
|
|
20
|
+
category: 'structure',
|
|
21
|
+
surfaceRole: 'wall',
|
|
22
|
+
defaults: () => {
|
|
23
|
+
const stub = ChimneyNodeSchema.parse({
|
|
24
|
+
id: 'chimney_default',
|
|
25
|
+
type: 'chimney',
|
|
26
|
+
material: WHITE_MATERIAL,
|
|
27
|
+
topMaterial: WHITE_MATERIAL,
|
|
28
|
+
});
|
|
29
|
+
const { id: _id, type: _type, ...rest } = stub;
|
|
30
|
+
return rest;
|
|
31
|
+
},
|
|
32
|
+
capabilities: {
|
|
33
|
+
exterior: true,
|
|
34
|
+
selectable: { hitVolume: 'bbox' },
|
|
35
|
+
duplicable: true,
|
|
36
|
+
deletable: true,
|
|
37
|
+
// Mounts on a roof segment via `roofSegmentId`. Dirty marks
|
|
38
|
+
// cascade to the host segment's parent roof so its merged shell
|
|
39
|
+
// re-renders. No `buildCut` — the chimney does its own self-trim
|
|
40
|
+
// via `trimChimneyBodyAgainstRoof`; the host roof shell stays solid
|
|
41
|
+
// underneath.
|
|
42
|
+
roofAccessory: {},
|
|
43
|
+
},
|
|
44
|
+
rendersChildren: false,
|
|
45
|
+
renderer: {
|
|
46
|
+
kind: 'parametric',
|
|
47
|
+
module: () => import('./renderer.js'),
|
|
48
|
+
},
|
|
49
|
+
presentation: {
|
|
50
|
+
label: 'Chimney',
|
|
51
|
+
description: 'Vertical masonry stack on a roof segment.',
|
|
52
|
+
icon: { kind: 'url', src: '/icons/chimney.webp' },
|
|
53
|
+
paletteSection: 'structure',
|
|
54
|
+
paletteOrder: 122,
|
|
55
|
+
},
|
|
56
|
+
mcp: {
|
|
57
|
+
description: 'A chimney on a roof segment. Square or round body; optional shoulder taper; sloped/flat/stepped cap; up to 4 protruding flues; optional cricket on the up-slope face.',
|
|
58
|
+
},
|
|
59
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/chimney/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAOjB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/chimney/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EAOjB,MAAM,kBAAkB,CAAA;AAoCzB;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,eAAe,aAAc;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,uCA8RvD,CAAA;eAEc,eAAe"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { ChimneyNode as ChimneyNodeSchema, emitter, sceneRegistry, useScene, } from '@pascal-app/core';
|
|
4
|
-
import { consumePlacementDragRelease, copyCollectionIds, markToolCancelConsumed, triggerSFX, useEditor, } from '@pascal-app/editor';
|
|
4
|
+
import { consumePlacementDragRelease, copyCollectionIds, isGridSnapActive, isMagneticSnapActive, markToolCancelConsumed, triggerSFX, useEditor, } from '@pascal-app/editor';
|
|
5
5
|
import { useViewer } from '@pascal-app/viewer';
|
|
6
6
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
7
7
|
import * as THREE from 'three';
|
|
@@ -89,9 +89,9 @@ const MoveChimneyTool = ({ node }) => {
|
|
|
89
89
|
if (!rawTarget)
|
|
90
90
|
return null;
|
|
91
91
|
return snapRoofSurfaceNodeTarget({
|
|
92
|
-
target: snapRelativeRoofDragTarget(rawTarget, event.nativeEvent?.
|
|
92
|
+
target: snapRelativeRoofDragTarget(rawTarget, event.nativeEvent?.altKey === true),
|
|
93
93
|
node,
|
|
94
|
-
bypass: event.nativeEvent?.
|
|
94
|
+
bypass: !isMagneticSnapActive() || event.nativeEvent?.altKey === true,
|
|
95
95
|
});
|
|
96
96
|
};
|
|
97
97
|
const clearTarget = () => {
|
|
@@ -108,7 +108,9 @@ const MoveChimneyTool = ({ node }) => {
|
|
|
108
108
|
const sx = Math.round(target.localX * 20) / 20;
|
|
109
109
|
const sz = Math.round(target.localZ * 20) / 20;
|
|
110
110
|
const prev = lastSnapRef.current;
|
|
111
|
-
if (
|
|
111
|
+
if (isGridSnapActive() &&
|
|
112
|
+
event.nativeEvent?.altKey !== true &&
|
|
113
|
+
(!prev || prev[0] !== sx || prev[1] !== sz)) {
|
|
112
114
|
triggerSFX('sfx:grid-snap');
|
|
113
115
|
lastSnapRef.current = [sx, sz];
|
|
114
116
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/column/__bench__/geometry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ColumnNode } from '@pascal-app/core';
|
|
2
|
+
import { createColumnShaftGeometry, createColumnSpiralGeometry } from '../geometry.js';
|
|
3
|
+
import { columnShaftLayout } from '../shape.js';
|
|
4
|
+
// Run with bun packages/nodes/src/column/__bench__/geometry.ts. CPU construction only; not viewer FPS.
|
|
5
|
+
for (const scenario of ['round spiral', 'rectangular spiral', 'bulged fluted']) {
|
|
6
|
+
const crossSection = scenario === 'rectangular spiral' ? 'rectangular' : 'round';
|
|
7
|
+
const node = ColumnNode.parse({
|
|
8
|
+
crossSection,
|
|
9
|
+
shaftProfile: scenario === 'bulged fluted' ? 'bulged' : 'tapered',
|
|
10
|
+
shaftBulge: 0.12,
|
|
11
|
+
shaftSegmentCount: 32,
|
|
12
|
+
shaftDetail: scenario === 'bulged fluted' ? 'fluted' : 'spiral',
|
|
13
|
+
fluteCount: scenario === 'bulged fluted' ? 16 : 0,
|
|
14
|
+
spiralRibCount: scenario === 'bulged fluted' ? 0 : 24,
|
|
15
|
+
spiralTwist: 1,
|
|
16
|
+
});
|
|
17
|
+
const { shaftHeight } = columnShaftLayout(node);
|
|
18
|
+
const start = performance.now();
|
|
19
|
+
let triangles = 0;
|
|
20
|
+
for (let i = 0; i < 30; i++) {
|
|
21
|
+
const geometries = [
|
|
22
|
+
createColumnShaftGeometry(node, shaftHeight),
|
|
23
|
+
createColumnSpiralGeometry(node, shaftHeight),
|
|
24
|
+
];
|
|
25
|
+
triangles = geometries.reduce((sum, geometry) => sum +
|
|
26
|
+
(geometry ? (geometry.index?.count ?? geometry.getAttribute('position').count) / 3 : 0), 0);
|
|
27
|
+
for (const geometry of geometries)
|
|
28
|
+
geometry?.dispose();
|
|
29
|
+
}
|
|
30
|
+
console.log({
|
|
31
|
+
scenario,
|
|
32
|
+
meshes: scenario === 'bulged fluted' ? 1 : 2,
|
|
33
|
+
triangles,
|
|
34
|
+
millisecondsPerBuild: (performance.now() - start) / 30,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ColumnNode } from '@pascal-app/core';
|
|
2
|
+
/** Conservative, origin-centred XZ envelope shared by plan, collision and handles. */
|
|
3
|
+
export declare function columnFootprintHalf(n: ColumnNode): {
|
|
4
|
+
halfX: number;
|
|
5
|
+
halfZ: number;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=bounds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounds.d.ts","sourceRoot":"","sources":["../../src/column/bounds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AASlD,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkJnF"}
|