@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/skylight/definition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/skylight/definition.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAG9B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.edit.d.ts","sourceRoot":"","sources":["../../src/skylight/definition.edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AA2M5C,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,OAAO,YAAY,CA6B9E,CAAA"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { buildSkylightFloorplan } from './floorplan.js';
|
|
2
|
+
import { closeSkylightOpenState, isOperableSkylightNode, toggleSkylightOpenState, } from './interaction.js';
|
|
3
|
+
import { skylightParametrics } from './parametrics.js';
|
|
4
|
+
// In-world handle constants. Offsets are measured from the skylight's
|
|
5
|
+
// edge to the arrow's CENTER, so they need to clear half the chevron's
|
|
6
|
+
// own length (~13 cm at default scale) plus the frame's outward depth
|
|
7
|
+
// before there's any visible gap. 0.35 m leaves ~15 cm of clear space
|
|
8
|
+
// between the chevron's tail and the skylight frame for a typical
|
|
9
|
+
// flat / opening skylight; rotate gizmo gets a matching cushion.
|
|
10
|
+
const SIDE_HANDLE_OFFSET = 0.35;
|
|
11
|
+
const ROTATE_CORNER_OFFSET = 0.35;
|
|
12
|
+
// Small +X bump so the rotate gizmo reads as sitting *beside* the corner
|
|
13
|
+
// instead of perched on its edge — visually separates it from the
|
|
14
|
+
// width chevron that shares the +X side.
|
|
15
|
+
const ROTATE_CORNER_X_OFFSET = 0.2;
|
|
16
|
+
// Lift the rotate gizmo a little off the surface so it floats above the
|
|
17
|
+
// frame instead of sinking into the curb / shingles around the corner.
|
|
18
|
+
const ROTATE_CORNER_Y_OFFSET = 0.18;
|
|
19
|
+
const ROTATE_RING_OFFSET = 0.06;
|
|
20
|
+
// Curb arrow sits a small distance above the current curb top so it stays
|
|
21
|
+
// grabbable when the curb collapses to zero (flat / walk-on look) and
|
|
22
|
+
// doesn't sink into the frame for tall lantern curbs.
|
|
23
|
+
const CURB_HANDLE_OFFSET = 0.18;
|
|
24
|
+
const MIN_SKYLIGHT_DIM = 0.2;
|
|
25
|
+
const MIN_FRAME_THICKNESS = 0.005;
|
|
26
|
+
// Width arrows live on ±X (left / right edges of the skylight footprint).
|
|
27
|
+
// Asymmetric resize: each arrow only moves its own edge, the opposite
|
|
28
|
+
// edge stays put — same pattern as the door and the roof-segment width
|
|
29
|
+
// handles. `position` is in segment-surface-tangent coords, so after
|
|
30
|
+
// changing width we recenter `position` by half the delta along the
|
|
31
|
+
// skylight's own +X axis (rotated by `node.rotation` since the inner
|
|
32
|
+
// rotation-y group puts skylight-local X at an angle relative to
|
|
33
|
+
// segment-local X).
|
|
34
|
+
function skylightWidthHandle(side) {
|
|
35
|
+
const sign = side === 'right' ? 1 : -1;
|
|
36
|
+
return {
|
|
37
|
+
kind: 'linear-resize',
|
|
38
|
+
axis: 'x',
|
|
39
|
+
anchor: side === 'right' ? 'min' : 'max',
|
|
40
|
+
min: MIN_SKYLIGHT_DIM,
|
|
41
|
+
currentValue: (n) => n.width,
|
|
42
|
+
apply: (initial, newWidth) => {
|
|
43
|
+
const rotY = initial.rotation ?? 0;
|
|
44
|
+
const armX = Math.cos(rotY);
|
|
45
|
+
const armZ = -Math.sin(rotY);
|
|
46
|
+
const anchorX = initial.position[0] - sign * (initial.width / 2) * armX;
|
|
47
|
+
const anchorZ = initial.position[2] - sign * (initial.width / 2) * armZ;
|
|
48
|
+
const newCenterX = anchorX + sign * (newWidth / 2) * armX;
|
|
49
|
+
const newCenterZ = anchorZ + sign * (newWidth / 2) * armZ;
|
|
50
|
+
return {
|
|
51
|
+
width: newWidth,
|
|
52
|
+
position: [newCenterX, initial.position[1], newCenterZ],
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
placement: {
|
|
56
|
+
position: (n) => [sign * (n.width / 2 + SIDE_HANDLE_OFFSET), 0, 0],
|
|
57
|
+
rotationY: () => (side === 'right' ? 0 : Math.PI),
|
|
58
|
+
},
|
|
59
|
+
// Grandparent so handles render inside the roof (visible) instead of
|
|
60
|
+
// the segment mesh, which lives inside the roof renderer's
|
|
61
|
+
// `<group visible={false}>` segments wrapper. See skylight/renderer
|
|
62
|
+
// for the matching composed-transform group that backs this.
|
|
63
|
+
portal: 'grandparent',
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Height arrows on ±Z. Skylight `height` is the dimension along the
|
|
67
|
+
// roof's slope direction (X is across-slope). Same asymmetric pattern as
|
|
68
|
+
// width — anchored edge stays world-fixed, position recenters by half
|
|
69
|
+
// delta along the skylight's own +Z axis (rotated by `node.rotation`).
|
|
70
|
+
function skylightHeightHandle(side) {
|
|
71
|
+
const sign = side === 'top' ? 1 : -1;
|
|
72
|
+
return {
|
|
73
|
+
kind: 'linear-resize',
|
|
74
|
+
axis: 'z',
|
|
75
|
+
anchor: side === 'top' ? 'min' : 'max',
|
|
76
|
+
min: MIN_SKYLIGHT_DIM,
|
|
77
|
+
currentValue: (n) => n.height,
|
|
78
|
+
apply: (initial, newHeight) => {
|
|
79
|
+
const rotY = initial.rotation ?? 0;
|
|
80
|
+
// Skylight-local +Z projects onto segment-surface +X / +Z as
|
|
81
|
+
// (sin r, cos r) — orthogonal to the (cos r, -sin r) basis used
|
|
82
|
+
// for the +X axis above.
|
|
83
|
+
const armX = Math.sin(rotY);
|
|
84
|
+
const armZ = Math.cos(rotY);
|
|
85
|
+
const anchorX = initial.position[0] - sign * (initial.height / 2) * armX;
|
|
86
|
+
const anchorZ = initial.position[2] - sign * (initial.height / 2) * armZ;
|
|
87
|
+
const newCenterX = anchorX + sign * (newHeight / 2) * armX;
|
|
88
|
+
const newCenterZ = anchorZ + sign * (newHeight / 2) * armZ;
|
|
89
|
+
return {
|
|
90
|
+
height: newHeight,
|
|
91
|
+
position: [newCenterX, initial.position[1], newCenterZ],
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
placement: {
|
|
95
|
+
position: (n) => [0, 0, sign * (n.height / 2 + SIDE_HANDLE_OFFSET)],
|
|
96
|
+
// The +Z chevron points along +Z by default (axis 'z' auto-rotates
|
|
97
|
+
// -π/2 in LinearArrow). For the -Z handle, add +π so it flips.
|
|
98
|
+
rotationY: () => (side === 'top' ? 0 : Math.PI),
|
|
99
|
+
},
|
|
100
|
+
portal: 'grandparent',
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// Rotate gizmo at the +X+Z corner of the footprint, with a ring guide
|
|
104
|
+
// traced around the corner-diagonal radius — same idiom as the roof-
|
|
105
|
+
// segment / column / elevator rotate gizmos. Negate the cursor delta to
|
|
106
|
+
// match three.js Y-rotation handedness.
|
|
107
|
+
function skylightRotateHandle() {
|
|
108
|
+
return {
|
|
109
|
+
kind: 'arc-resize',
|
|
110
|
+
axis: 'angular',
|
|
111
|
+
shape: 'rotate',
|
|
112
|
+
apply: (initial, delta) => ({ rotation: (initial.rotation ?? 0) - delta }),
|
|
113
|
+
placement: {
|
|
114
|
+
position: (n) => {
|
|
115
|
+
const halfX = n.width / 2;
|
|
116
|
+
const halfZ = n.height / 2;
|
|
117
|
+
return [
|
|
118
|
+
halfX + ROTATE_CORNER_X_OFFSET,
|
|
119
|
+
ROTATE_CORNER_Y_OFFSET,
|
|
120
|
+
halfZ + ROTATE_CORNER_OFFSET,
|
|
121
|
+
];
|
|
122
|
+
},
|
|
123
|
+
rotationY: () => -Math.PI / 4,
|
|
124
|
+
},
|
|
125
|
+
decoration: {
|
|
126
|
+
kind: 'ring',
|
|
127
|
+
radius: (n) => Math.hypot(n.width / 2, n.height / 2) + ROTATE_RING_OFFSET,
|
|
128
|
+
y: () => 0,
|
|
129
|
+
},
|
|
130
|
+
portal: 'grandparent',
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// Curb-height arrow — vertical chevron above the skylight, dragged up
|
|
134
|
+
// to raise the curb. Auto-enables `curb: true` when the user grows from
|
|
135
|
+
// zero so the geometry actually has a curb to show; preserves `curb`
|
|
136
|
+
// flag once it's been set. Placement floats just above the curb top so
|
|
137
|
+
// it tracks the value as the user drags and stays above the frame for
|
|
138
|
+
// tall lantern curbs.
|
|
139
|
+
function skylightCurbHeightHandle() {
|
|
140
|
+
return {
|
|
141
|
+
kind: 'linear-resize',
|
|
142
|
+
axis: 'y',
|
|
143
|
+
anchor: 'min',
|
|
144
|
+
min: 0,
|
|
145
|
+
currentValue: (n) => n.curbHeight ?? 0,
|
|
146
|
+
apply: (initial, newValue) => ({
|
|
147
|
+
curbHeight: newValue,
|
|
148
|
+
// Without this, dragging the arrow on a walk-on (curb: false)
|
|
149
|
+
// skylight would change `curbHeight` invisibly because the
|
|
150
|
+
// geometry path ignores it when `curb` is false.
|
|
151
|
+
curb: initial.curb || newValue > 0,
|
|
152
|
+
}),
|
|
153
|
+
placement: {
|
|
154
|
+
position: (n) => [0, (n.curbHeight ?? 0) + CURB_HANDLE_OFFSET, 0],
|
|
155
|
+
},
|
|
156
|
+
portal: 'grandparent',
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
// Frame-thickness arrow — diagonal chevron at the -X+Z (top-left) corner,
|
|
160
|
+
// pointing outward along the corner bisector. Lives on the opposite
|
|
161
|
+
// corner from the rotate gizmo so they don't compete. axis='z' (instead
|
|
162
|
+
// of 'x') so dragging outward toward +Z grows the value 1:1; LinearArrow
|
|
163
|
+
// auto-rotates a 'z'-axis chevron by -π/2 (so it points +Z), and the
|
|
164
|
+
// extra -π/4 here swings the chevron to -X+Z. The X+Z offsets match
|
|
165
|
+
// SIDE_HANDLE_OFFSET on each axis, so the arrow sits the same visual
|
|
166
|
+
// distance from the corner that the side chevrons sit from their edges.
|
|
167
|
+
function skylightFrameThicknessHandle() {
|
|
168
|
+
return {
|
|
169
|
+
kind: 'linear-resize',
|
|
170
|
+
axis: 'z',
|
|
171
|
+
anchor: 'min',
|
|
172
|
+
min: MIN_FRAME_THICKNESS,
|
|
173
|
+
currentValue: (n) => n.frameThickness ?? 0.05,
|
|
174
|
+
apply: (_n, newValue) => ({ frameThickness: newValue }),
|
|
175
|
+
placement: {
|
|
176
|
+
position: (n) => [-(n.width / 2) - SIDE_HANDLE_OFFSET, 0, n.height / 2 + SIDE_HANDLE_OFFSET],
|
|
177
|
+
rotationY: () => -Math.PI / 4,
|
|
178
|
+
},
|
|
179
|
+
portal: 'grandparent',
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
const skylightHandles = [
|
|
183
|
+
skylightWidthHandle('right'),
|
|
184
|
+
skylightWidthHandle('left'),
|
|
185
|
+
skylightHeightHandle('top'),
|
|
186
|
+
skylightHeightHandle('bottom'),
|
|
187
|
+
skylightCurbHeightHandle(),
|
|
188
|
+
skylightFrameThicknessHandle(),
|
|
189
|
+
skylightRotateHandle(),
|
|
190
|
+
];
|
|
191
|
+
export const skylightEditContribution = {
|
|
192
|
+
snapProfile: 'item',
|
|
193
|
+
parametrics: skylightParametrics,
|
|
194
|
+
handles: skylightHandles,
|
|
195
|
+
floorplan: buildSkylightFloorplan,
|
|
196
|
+
preview: () => import('./preview.js'),
|
|
197
|
+
tool: () => import('./tool.js'),
|
|
198
|
+
affordanceTools: {
|
|
199
|
+
move: () => import('./move-tool.js'),
|
|
200
|
+
},
|
|
201
|
+
toolHints: [
|
|
202
|
+
{ key: 'Left click', label: 'Place skylight on roof' },
|
|
203
|
+
{ key: 'Esc', label: 'Cancel' },
|
|
204
|
+
],
|
|
205
|
+
// R toggles open ↔ closed on operable types (opening / sliding); T
|
|
206
|
+
// forces close. The animation runs through `useInteractive` and the
|
|
207
|
+
// skylight system; see `./interaction.ts`.
|
|
208
|
+
keyboardActions: {
|
|
209
|
+
r: {
|
|
210
|
+
appliesTo: (node) => node.type === 'skylight' && isOperableSkylightNode(node),
|
|
211
|
+
run: (node) => toggleSkylightOpenState(node.id),
|
|
212
|
+
},
|
|
213
|
+
t: {
|
|
214
|
+
appliesTo: (node) => node.type === 'skylight' && isOperableSkylightNode(node),
|
|
215
|
+
run: (node) => closeSkylightOpenState(node.id),
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
};
|
|
@@ -1,271 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { buildSkylightRoofCut } from './roof-cut.js';
|
|
6
|
-
import { SkylightNode } from './schema.js';
|
|
7
|
-
// In-world handle constants. Offsets are measured from the skylight's
|
|
8
|
-
// edge to the arrow's CENTER, so they need to clear half the chevron's
|
|
9
|
-
// own length (~13 cm at default scale) plus the frame's outward depth
|
|
10
|
-
// before there's any visible gap. 0.35 m leaves ~15 cm of clear space
|
|
11
|
-
// between the chevron's tail and the skylight frame for a typical
|
|
12
|
-
// flat / opening skylight; rotate gizmo gets a matching cushion.
|
|
13
|
-
const SIDE_HANDLE_OFFSET = 0.35;
|
|
14
|
-
const ROTATE_CORNER_OFFSET = 0.35;
|
|
15
|
-
// Small +X bump so the rotate gizmo reads as sitting *beside* the corner
|
|
16
|
-
// instead of perched on its edge — visually separates it from the
|
|
17
|
-
// width chevron that shares the +X side.
|
|
18
|
-
const ROTATE_CORNER_X_OFFSET = 0.2;
|
|
19
|
-
// Lift the rotate gizmo a little off the surface so it floats above the
|
|
20
|
-
// frame instead of sinking into the curb / shingles around the corner.
|
|
21
|
-
const ROTATE_CORNER_Y_OFFSET = 0.18;
|
|
22
|
-
const ROTATE_RING_OFFSET = 0.06;
|
|
23
|
-
// Curb arrow sits a small distance above the current curb top so it stays
|
|
24
|
-
// grabbable when the curb collapses to zero (flat / walk-on look) and
|
|
25
|
-
// doesn't sink into the frame for tall lantern curbs.
|
|
26
|
-
const CURB_HANDLE_OFFSET = 0.18;
|
|
27
|
-
const MIN_SKYLIGHT_DIM = 0.2;
|
|
28
|
-
const MIN_FRAME_THICKNESS = 0.005;
|
|
29
|
-
// Width arrows live on ±X (left / right edges of the skylight footprint).
|
|
30
|
-
// Asymmetric resize: each arrow only moves its own edge, the opposite
|
|
31
|
-
// edge stays put — same pattern as the door and the roof-segment width
|
|
32
|
-
// handles. `position` is in segment-surface-tangent coords, so after
|
|
33
|
-
// changing width we recenter `position` by half the delta along the
|
|
34
|
-
// skylight's own +X axis (rotated by `node.rotation` since the inner
|
|
35
|
-
// rotation-y group puts skylight-local X at an angle relative to
|
|
36
|
-
// segment-local X).
|
|
37
|
-
function skylightWidthHandle(side) {
|
|
38
|
-
const sign = side === 'right' ? 1 : -1;
|
|
39
|
-
return {
|
|
40
|
-
kind: 'linear-resize',
|
|
41
|
-
axis: 'x',
|
|
42
|
-
anchor: side === 'right' ? 'min' : 'max',
|
|
43
|
-
min: MIN_SKYLIGHT_DIM,
|
|
44
|
-
currentValue: (n) => n.width,
|
|
45
|
-
apply: (initial, newWidth) => {
|
|
46
|
-
const rotY = initial.rotation ?? 0;
|
|
47
|
-
const armX = Math.cos(rotY);
|
|
48
|
-
const armZ = -Math.sin(rotY);
|
|
49
|
-
const anchorX = initial.position[0] - sign * (initial.width / 2) * armX;
|
|
50
|
-
const anchorZ = initial.position[2] - sign * (initial.width / 2) * armZ;
|
|
51
|
-
const newCenterX = anchorX + sign * (newWidth / 2) * armX;
|
|
52
|
-
const newCenterZ = anchorZ + sign * (newWidth / 2) * armZ;
|
|
53
|
-
return {
|
|
54
|
-
width: newWidth,
|
|
55
|
-
position: [newCenterX, initial.position[1], newCenterZ],
|
|
56
|
-
};
|
|
57
|
-
},
|
|
58
|
-
placement: {
|
|
59
|
-
position: (n) => [sign * (n.width / 2 + SIDE_HANDLE_OFFSET), 0, 0],
|
|
60
|
-
rotationY: () => (side === 'right' ? 0 : Math.PI),
|
|
61
|
-
},
|
|
62
|
-
// Grandparent so handles render inside the roof (visible) instead of
|
|
63
|
-
// the segment mesh, which lives inside the roof renderer's
|
|
64
|
-
// `<group visible={false}>` segments wrapper. See skylight/renderer
|
|
65
|
-
// for the matching composed-transform group that backs this.
|
|
66
|
-
portal: 'grandparent',
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
// Height arrows on ±Z. Skylight `height` is the dimension along the
|
|
70
|
-
// roof's slope direction (X is across-slope). Same asymmetric pattern as
|
|
71
|
-
// width — anchored edge stays world-fixed, position recenters by half
|
|
72
|
-
// delta along the skylight's own +Z axis (rotated by `node.rotation`).
|
|
73
|
-
function skylightHeightHandle(side) {
|
|
74
|
-
const sign = side === 'top' ? 1 : -1;
|
|
75
|
-
return {
|
|
76
|
-
kind: 'linear-resize',
|
|
77
|
-
axis: 'z',
|
|
78
|
-
anchor: side === 'top' ? 'min' : 'max',
|
|
79
|
-
min: MIN_SKYLIGHT_DIM,
|
|
80
|
-
currentValue: (n) => n.height,
|
|
81
|
-
apply: (initial, newHeight) => {
|
|
82
|
-
const rotY = initial.rotation ?? 0;
|
|
83
|
-
// Skylight-local +Z projects onto segment-surface +X / +Z as
|
|
84
|
-
// (sin r, cos r) — orthogonal to the (cos r, -sin r) basis used
|
|
85
|
-
// for the +X axis above.
|
|
86
|
-
const armX = Math.sin(rotY);
|
|
87
|
-
const armZ = Math.cos(rotY);
|
|
88
|
-
const anchorX = initial.position[0] - sign * (initial.height / 2) * armX;
|
|
89
|
-
const anchorZ = initial.position[2] - sign * (initial.height / 2) * armZ;
|
|
90
|
-
const newCenterX = anchorX + sign * (newHeight / 2) * armX;
|
|
91
|
-
const newCenterZ = anchorZ + sign * (newHeight / 2) * armZ;
|
|
92
|
-
return {
|
|
93
|
-
height: newHeight,
|
|
94
|
-
position: [newCenterX, initial.position[1], newCenterZ],
|
|
95
|
-
};
|
|
96
|
-
},
|
|
97
|
-
placement: {
|
|
98
|
-
position: (n) => [0, 0, sign * (n.height / 2 + SIDE_HANDLE_OFFSET)],
|
|
99
|
-
// The +Z chevron points along +Z by default (axis 'z' auto-rotates
|
|
100
|
-
// -π/2 in LinearArrow). For the -Z handle, add +π so it flips.
|
|
101
|
-
rotationY: () => (side === 'top' ? 0 : Math.PI),
|
|
102
|
-
},
|
|
103
|
-
portal: 'grandparent',
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
// Rotate gizmo at the +X+Z corner of the footprint, with a ring guide
|
|
107
|
-
// traced around the corner-diagonal radius — same idiom as the roof-
|
|
108
|
-
// segment / column / elevator rotate gizmos. Negate the cursor delta to
|
|
109
|
-
// match three.js Y-rotation handedness.
|
|
110
|
-
function skylightRotateHandle() {
|
|
111
|
-
return {
|
|
112
|
-
kind: 'arc-resize',
|
|
113
|
-
axis: 'angular',
|
|
114
|
-
shape: 'rotate',
|
|
115
|
-
apply: (initial, delta) => ({ rotation: (initial.rotation ?? 0) - delta }),
|
|
116
|
-
placement: {
|
|
117
|
-
position: (n) => {
|
|
118
|
-
const halfX = n.width / 2;
|
|
119
|
-
const halfZ = n.height / 2;
|
|
120
|
-
return [
|
|
121
|
-
halfX + ROTATE_CORNER_X_OFFSET,
|
|
122
|
-
ROTATE_CORNER_Y_OFFSET,
|
|
123
|
-
halfZ + ROTATE_CORNER_OFFSET,
|
|
124
|
-
];
|
|
125
|
-
},
|
|
126
|
-
rotationY: () => -Math.PI / 4,
|
|
127
|
-
},
|
|
128
|
-
decoration: {
|
|
129
|
-
kind: 'ring',
|
|
130
|
-
radius: (n) => Math.hypot(n.width / 2, n.height / 2) + ROTATE_RING_OFFSET,
|
|
131
|
-
y: () => 0,
|
|
132
|
-
},
|
|
133
|
-
portal: 'grandparent',
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
// Curb-height arrow — vertical chevron above the skylight, dragged up
|
|
137
|
-
// to raise the curb. Auto-enables `curb: true` when the user grows from
|
|
138
|
-
// zero so the geometry actually has a curb to show; preserves `curb`
|
|
139
|
-
// flag once it's been set. Placement floats just above the curb top so
|
|
140
|
-
// it tracks the value as the user drags and stays above the frame for
|
|
141
|
-
// tall lantern curbs.
|
|
142
|
-
function skylightCurbHeightHandle() {
|
|
143
|
-
return {
|
|
144
|
-
kind: 'linear-resize',
|
|
145
|
-
axis: 'y',
|
|
146
|
-
anchor: 'min',
|
|
147
|
-
min: 0,
|
|
148
|
-
currentValue: (n) => n.curbHeight ?? 0,
|
|
149
|
-
apply: (initial, newValue) => ({
|
|
150
|
-
curbHeight: newValue,
|
|
151
|
-
// Without this, dragging the arrow on a walk-on (curb: false)
|
|
152
|
-
// skylight would change `curbHeight` invisibly because the
|
|
153
|
-
// geometry path ignores it when `curb` is false.
|
|
154
|
-
curb: initial.curb || newValue > 0,
|
|
155
|
-
}),
|
|
156
|
-
placement: {
|
|
157
|
-
position: (n) => [0, (n.curbHeight ?? 0) + CURB_HANDLE_OFFSET, 0],
|
|
158
|
-
},
|
|
159
|
-
portal: 'grandparent',
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
// Frame-thickness arrow — diagonal chevron at the -X+Z (top-left) corner,
|
|
163
|
-
// pointing outward along the corner bisector. Lives on the opposite
|
|
164
|
-
// corner from the rotate gizmo so they don't compete. axis='z' (instead
|
|
165
|
-
// of 'x') so dragging outward toward +Z grows the value 1:1; LinearArrow
|
|
166
|
-
// auto-rotates a 'z'-axis chevron by -π/2 (so it points +Z), and the
|
|
167
|
-
// extra -π/4 here swings the chevron to -X+Z. The X+Z offsets match
|
|
168
|
-
// SIDE_HANDLE_OFFSET on each axis, so the arrow sits the same visual
|
|
169
|
-
// distance from the corner that the side chevrons sit from their edges.
|
|
170
|
-
function skylightFrameThicknessHandle() {
|
|
171
|
-
return {
|
|
172
|
-
kind: 'linear-resize',
|
|
173
|
-
axis: 'z',
|
|
174
|
-
anchor: 'min',
|
|
175
|
-
min: MIN_FRAME_THICKNESS,
|
|
176
|
-
currentValue: (n) => n.frameThickness ?? 0.05,
|
|
177
|
-
apply: (_n, newValue) => ({ frameThickness: newValue }),
|
|
178
|
-
placement: {
|
|
179
|
-
position: (n) => [-(n.width / 2) - SIDE_HANDLE_OFFSET, 0, n.height / 2 + SIDE_HANDLE_OFFSET],
|
|
180
|
-
rotationY: () => -Math.PI / 4,
|
|
181
|
-
},
|
|
182
|
-
portal: 'grandparent',
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
const skylightHandles = [
|
|
186
|
-
skylightWidthHandle('right'),
|
|
187
|
-
skylightWidthHandle('left'),
|
|
188
|
-
skylightHeightHandle('top'),
|
|
189
|
-
skylightHeightHandle('bottom'),
|
|
190
|
-
skylightCurbHeightHandle(),
|
|
191
|
-
skylightFrameThicknessHandle(),
|
|
192
|
-
skylightRotateHandle(),
|
|
193
|
-
];
|
|
194
|
-
/**
|
|
195
|
-
* Skylight — a framed glass opening hosted on a roof segment. All five
|
|
196
|
-
* type variants (flat / walk-on / lantern / opening / sliding) render
|
|
197
|
-
* with the archive's full geometry; the animation system advances
|
|
198
|
-
* `operationState` via `useInteractive.skylightAnimations`.
|
|
199
|
-
*/
|
|
200
|
-
export const skylightDefinition = {
|
|
201
|
-
kind: 'skylight',
|
|
202
|
-
schemaVersion: 1,
|
|
203
|
-
schema: SkylightNode,
|
|
204
|
-
category: 'structure',
|
|
205
|
-
surfaceRole: 'glazing',
|
|
206
|
-
defaults: () => {
|
|
207
|
-
const stub = SkylightNodeSchema.parse({
|
|
208
|
-
id: 'skylight_default',
|
|
209
|
-
type: 'skylight',
|
|
210
|
-
});
|
|
211
|
-
const { id: _id, type: _type, ...rest } = stub;
|
|
212
|
-
return rest;
|
|
213
|
-
},
|
|
214
|
-
capabilities: {
|
|
215
|
-
exterior: true,
|
|
216
|
-
selectable: { hitVolume: 'bbox' },
|
|
217
|
-
duplicable: true,
|
|
218
|
-
deletable: true,
|
|
219
|
-
// Mounts on a roof segment via `roofSegmentId`. Dirty marks
|
|
220
|
-
// cascade to the host segment's parent roof so its merged shell
|
|
221
|
-
// re-CSGs with the new cut. `buildCut` returns the segment-local
|
|
222
|
-
// box that's subtracted from shin / deck / wall.
|
|
223
|
-
roofAccessory: {
|
|
224
|
-
buildCut: (node, hostSegment) => buildSkylightRoofCut(node, hostSegment),
|
|
225
|
-
},
|
|
226
|
-
},
|
|
227
|
-
parametrics: skylightParametrics,
|
|
228
|
-
handles: skylightHandles,
|
|
229
|
-
floorplan: buildSkylightFloorplan,
|
|
230
|
-
rendersChildren: false,
|
|
231
|
-
renderer: {
|
|
232
|
-
kind: 'parametric',
|
|
233
|
-
module: () => import('./renderer.js'),
|
|
234
|
-
},
|
|
235
|
-
preview: () => import('./preview.js'),
|
|
236
|
-
system: {
|
|
237
|
-
module: () => import('./system.js'),
|
|
238
|
-
priority: 3,
|
|
239
|
-
},
|
|
240
|
-
tool: () => import('./tool.js'),
|
|
241
|
-
affordanceTools: {
|
|
242
|
-
move: () => import('./move-tool.js'),
|
|
243
|
-
},
|
|
244
|
-
toolHints: [
|
|
245
|
-
{ key: 'Left click', label: 'Place skylight on roof' },
|
|
246
|
-
{ key: 'Esc', label: 'Cancel' },
|
|
247
|
-
],
|
|
248
|
-
presentation: {
|
|
249
|
-
label: 'Skylight',
|
|
250
|
-
description: 'Framed glass opening on a roof segment.',
|
|
251
|
-
icon: { kind: 'url', src: '/icons/skylight.webp' },
|
|
252
|
-
paletteSection: 'structure',
|
|
253
|
-
paletteOrder: 124,
|
|
254
|
-
},
|
|
255
|
-
mcp: {
|
|
256
|
-
description: 'A skylight on a roof segment. Five type variants (flat / walk-on / lantern / opening / sliding) — geometry beyond box stub coming later.',
|
|
257
|
-
},
|
|
258
|
-
// R toggles open ↔ closed on operable types (opening / sliding); T
|
|
259
|
-
// forces close. The animation runs through `useInteractive` and the
|
|
260
|
-
// skylight system; see `./interaction.ts`.
|
|
261
|
-
keyboardActions: {
|
|
262
|
-
r: {
|
|
263
|
-
appliesTo: (node) => node.type === 'skylight' && isOperableSkylightNode(node),
|
|
264
|
-
run: (node) => toggleSkylightOpenState(node.id),
|
|
265
|
-
},
|
|
266
|
-
t: {
|
|
267
|
-
appliesTo: (node) => node.type === 'skylight' && isOperableSkylightNode(node),
|
|
268
|
-
run: (node) => closeSkylightOpenState(node.id),
|
|
269
|
-
},
|
|
270
|
-
},
|
|
271
|
-
};
|
|
1
|
+
import { composeNodeDefinition } from '../definition-contributions.js';
|
|
2
|
+
import { skylightEditContribution } from './definition.edit.js';
|
|
3
|
+
import { skylightRenderDefinition } from './definition.render.js';
|
|
4
|
+
export const skylightDefinition = composeNodeDefinition(skylightRenderDefinition, skylightEditContribution);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { NodeRenderDefinition } from '../definition-contributions.js';
|
|
2
|
+
import { SkylightNode } from './schema.js';
|
|
3
|
+
export declare const skylightRenderDefinition: NodeRenderDefinition<typeof SkylightNode> & {
|
|
4
|
+
kind: 'skylight';
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=definition.render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.render.d.ts","sourceRoot":"","sources":["../../src/skylight/definition.render.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,CAAC,OAAO,YAAY,CAAC,GAAG;IACjF,IAAI,EAAE,UAAU,CAAA;CAiDjB,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { SkylightNode as SkylightNodeSchema, } from '@pascal-app/core';
|
|
2
|
+
import { buildSkylightRoofCut } from './roof-cut.js';
|
|
3
|
+
import { SkylightNode } from './schema.js';
|
|
4
|
+
export const skylightRenderDefinition = {
|
|
5
|
+
kind: 'skylight',
|
|
6
|
+
schemaVersion: 1,
|
|
7
|
+
schema: SkylightNode,
|
|
8
|
+
category: 'structure',
|
|
9
|
+
surfaceRole: 'glazing',
|
|
10
|
+
defaults: () => {
|
|
11
|
+
const stub = SkylightNodeSchema.parse({
|
|
12
|
+
id: 'skylight_default',
|
|
13
|
+
type: 'skylight',
|
|
14
|
+
});
|
|
15
|
+
const { id: _id, type: _type, ...rest } = stub;
|
|
16
|
+
return rest;
|
|
17
|
+
},
|
|
18
|
+
capabilities: {
|
|
19
|
+
exterior: true,
|
|
20
|
+
selectable: { hitVolume: 'bbox' },
|
|
21
|
+
duplicable: true,
|
|
22
|
+
deletable: true,
|
|
23
|
+
// Mounts on a roof segment via `roofSegmentId`. Dirty marks
|
|
24
|
+
// cascade to the host segment's parent roof so its merged shell
|
|
25
|
+
// re-CSGs with the new cut. `buildCut` returns the segment-local
|
|
26
|
+
// box that's subtracted from shin / deck / wall.
|
|
27
|
+
roofAccessory: {
|
|
28
|
+
buildCut: (node, hostSegment) => buildSkylightRoofCut(node, hostSegment),
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
rendersChildren: false,
|
|
32
|
+
renderer: {
|
|
33
|
+
kind: 'parametric',
|
|
34
|
+
module: () => import('./renderer.js'),
|
|
35
|
+
},
|
|
36
|
+
system: {
|
|
37
|
+
module: () => import('./system.js'),
|
|
38
|
+
priority: 3,
|
|
39
|
+
},
|
|
40
|
+
presentation: {
|
|
41
|
+
label: 'Skylight',
|
|
42
|
+
description: 'Framed glass opening on a roof segment.',
|
|
43
|
+
icon: { kind: 'url', src: '/icons/skylight.webp' },
|
|
44
|
+
paletteSection: 'structure',
|
|
45
|
+
paletteOrder: 124,
|
|
46
|
+
},
|
|
47
|
+
mcp: {
|
|
48
|
+
description: 'A skylight on a roof segment. Five type variants (flat / walk-on / lantern / opening / sliding) — geometry beyond box stub coming later.',
|
|
49
|
+
},
|
|
50
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/skylight/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"move-tool.d.ts","sourceRoot":"","sources":["../../src/skylight/move-tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,YAAY,EAGlB,MAAM,kBAAkB,CAAA;AA0BzB,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,sCAqQxE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { emitter, sceneRegistry, useScene, } from '@pascal-app/core';
|
|
4
|
-
import { consumePlacementDragRelease, markToolCancelConsumed, triggerSFX, useEditor, } from '@pascal-app/editor';
|
|
4
|
+
import { consumePlacementDragRelease, isGridSnapActive, isMagneticSnapActive, markToolCancelConsumed, stripPlacementMetadataFlags, triggerSFX, useEditor, } from '@pascal-app/editor';
|
|
5
5
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
6
|
import * as THREE from 'three';
|
|
7
7
|
import { createRelativeRoofDrag, roofSegmentLocalToBuildingLocal, snapRelativeRoofDragTarget, } from '../shared/relative-roof-drag.js';
|
|
@@ -58,9 +58,9 @@ export default function MoveSkylightTool({ node }) {
|
|
|
58
58
|
if (!rawTarget)
|
|
59
59
|
return null;
|
|
60
60
|
return snapRoofSurfaceNodeTarget({
|
|
61
|
-
target: snapRelativeRoofDragTarget(rawTarget, event.nativeEvent?.
|
|
61
|
+
target: snapRelativeRoofDragTarget(rawTarget, event.nativeEvent?.altKey === true),
|
|
62
62
|
node,
|
|
63
|
-
bypass: event.nativeEvent?.
|
|
63
|
+
bypass: !isMagneticSnapActive() || event.nativeEvent?.altKey === true,
|
|
64
64
|
});
|
|
65
65
|
};
|
|
66
66
|
// Resolve which segment the cursor is over, then derive the same
|
|
@@ -97,7 +97,9 @@ export default function MoveSkylightTool({ node }) {
|
|
|
97
97
|
const onRoofMove = (event) => {
|
|
98
98
|
const sx = Math.round(event.position[0] * 20) / 20;
|
|
99
99
|
const sz = Math.round(event.position[2] * 20) / 20;
|
|
100
|
-
if (
|
|
100
|
+
if (isGridSnapActive() &&
|
|
101
|
+
event.nativeEvent?.altKey !== true &&
|
|
102
|
+
(sx !== lastSnapX || sz !== lastSnapZ)) {
|
|
101
103
|
triggerSFX('sfx:grid-snap');
|
|
102
104
|
lastSnapX = sx;
|
|
103
105
|
lastSnapZ = sz;
|
|
@@ -133,7 +135,7 @@ export default function MoveSkylightTool({ node }) {
|
|
|
133
135
|
position: [target.localX, target.localY, target.localZ],
|
|
134
136
|
rotation: finalRotation,
|
|
135
137
|
visible: true,
|
|
136
|
-
metadata:
|
|
138
|
+
metadata: stripPlacementMetadataFlags(original.metadata),
|
|
137
139
|
});
|
|
138
140
|
if (original.roofSegmentId && original.roofSegmentId !== targetSegmentId) {
|
|
139
141
|
const oldSeg = st.nodes[original.roofSegmentId];
|