@pascal-app/core 0.8.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/events/bus.d.ts +67 -13
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/hooks/scene-registry/item-clip-registry.d.ts +18 -0
- package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -0
- package/dist/hooks/scene-registry/item-clip-registry.js +10 -0
- package/dist/hooks/scene-registry/scene-registry.d.ts +14 -23
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
- package/dist/hooks/scene-registry/scene-registry.js +59 -26
- package/dist/hooks/scene-registry/scene-registry.test.d.ts +2 -0
- package/dist/hooks/scene-registry/scene-registry.test.d.ts.map +1 -0
- package/dist/hooks/scene-registry/scene-registry.test.js +26 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +14 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.js +51 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts +2 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.js +366 -0
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +79 -11
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +508 -141
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +28 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +109 -18
- package/dist/hooks/spatial-grid/wall-slab-overlap.test.d.ts +2 -0
- package/dist/hooks/spatial-grid/wall-slab-overlap.test.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/wall-slab-overlap.test.js +363 -0
- package/dist/index.d.ts +36 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -6
- package/dist/lib/level-name.d.ts +4 -0
- package/dist/lib/level-name.d.ts.map +1 -0
- package/dist/lib/level-name.js +10 -0
- package/dist/lib/measurement-geometry.d.ts +19 -0
- package/dist/lib/measurement-geometry.d.ts.map +1 -0
- package/dist/lib/measurement-geometry.js +232 -0
- package/dist/lib/measurement-geometry.test.d.ts +2 -0
- package/dist/lib/measurement-geometry.test.d.ts.map +1 -0
- package/dist/lib/measurement-geometry.test.js +102 -0
- package/dist/lib/polygon-geometry.d.ts +0 -1
- package/dist/lib/polygon-geometry.d.ts.map +1 -1
- package/dist/lib/polygon-geometry.js +0 -18
- package/dist/lib/polygon-relations.d.ts +10 -0
- package/dist/lib/polygon-relations.d.ts.map +1 -0
- package/dist/lib/polygon-relations.js +73 -0
- package/dist/lib/selection-proxy.d.ts +4 -0
- package/dist/lib/selection-proxy.d.ts.map +1 -0
- package/dist/lib/selection-proxy.js +12 -0
- package/dist/lib/slab-polygon.d.ts +31 -2
- package/dist/lib/slab-polygon.d.ts.map +1 -1
- package/dist/lib/slab-polygon.js +525 -31
- package/dist/lib/slab-polygon.test.d.ts +2 -0
- package/dist/lib/slab-polygon.test.d.ts.map +1 -0
- package/dist/lib/slab-polygon.test.js +635 -0
- package/dist/lib/slots.d.ts +14 -0
- package/dist/lib/slots.d.ts.map +1 -0
- package/dist/lib/slots.js +26 -0
- package/dist/lib/space-detection-pause.test.d.ts +2 -0
- package/dist/lib/space-detection-pause.test.d.ts.map +1 -0
- package/dist/lib/space-detection-pause.test.js +42 -0
- package/dist/lib/space-detection.d.ts +54 -2
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +599 -124
- package/dist/lib/space-detection.test.d.ts +2 -0
- package/dist/lib/space-detection.test.d.ts.map +1 -0
- package/dist/lib/space-detection.test.js +376 -0
- package/dist/lib/wall-distance.d.ts +60 -0
- package/dist/lib/wall-distance.d.ts.map +1 -0
- package/dist/lib/wall-distance.js +85 -0
- package/dist/lib/zone-quantities.d.ts +21 -0
- package/dist/lib/zone-quantities.d.ts.map +1 -0
- package/dist/lib/zone-quantities.js +183 -0
- package/dist/lib/zone-quantities.test.d.ts +2 -0
- package/dist/lib/zone-quantities.test.d.ts.map +1 -0
- package/dist/lib/zone-quantities.test.js +82 -0
- package/dist/material-library.d.ts +20 -1
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +3737 -200
- package/dist/registry/__bench__/relations-resolver.bench.d.ts +15 -0
- package/dist/registry/__bench__/relations-resolver.bench.d.ts.map +1 -0
- package/dist/registry/__bench__/relations-resolver.bench.js +170 -0
- package/dist/registry/handles.d.ts +394 -0
- package/dist/registry/handles.d.ts.map +1 -0
- package/dist/registry/handles.js +24 -0
- package/dist/registry/index.d.ts +7 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +4 -0
- package/dist/registry/registry.d.ts +136 -0
- package/dist/registry/registry.d.ts.map +1 -0
- package/dist/registry/registry.js +282 -0
- package/dist/registry/registry.test.d.ts +2 -0
- package/dist/registry/registry.test.d.ts.map +1 -0
- package/dist/registry/registry.test.js +196 -0
- package/dist/registry/relations-resolver.d.ts +42 -0
- package/dist/registry/relations-resolver.d.ts.map +1 -0
- package/dist/registry/relations-resolver.js +77 -0
- package/dist/registry/relations-resolver.test.d.ts +2 -0
- package/dist/registry/relations-resolver.test.d.ts.map +1 -0
- package/dist/registry/relations-resolver.test.js +183 -0
- package/dist/registry/scene-api.d.ts +44 -0
- package/dist/registry/scene-api.d.ts.map +1 -0
- package/dist/registry/scene-api.js +111 -0
- package/dist/registry/scene-api.test.d.ts +2 -0
- package/dist/registry/scene-api.test.d.ts.map +1 -0
- package/dist/registry/scene-api.test.js +183 -0
- package/dist/registry/subtree.d.ts +67 -0
- package/dist/registry/subtree.d.ts.map +1 -0
- package/dist/registry/subtree.js +123 -0
- package/dist/registry/subtree.test.d.ts +2 -0
- package/dist/registry/subtree.test.d.ts.map +1 -0
- package/dist/registry/subtree.test.js +163 -0
- package/dist/registry/types.d.ts +2099 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +1 -0
- package/dist/schema/index.d.ts +35 -4
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +32 -4
- package/dist/schema/material.d.ts +13 -2
- package/dist/schema/material.d.ts.map +1 -1
- package/dist/schema/material.js +17 -5
- package/dist/schema/material.test.d.ts +2 -0
- package/dist/schema/material.test.d.ts.map +1 -0
- package/dist/schema/material.test.js +43 -0
- package/dist/schema/nodes/box-vent.d.ts +74 -0
- package/dist/schema/nodes/box-vent.d.ts.map +1 -0
- package/dist/schema/nodes/box-vent.js +63 -0
- package/dist/schema/nodes/building.d.ts +1 -1
- package/dist/schema/nodes/building.d.ts.map +1 -1
- package/dist/schema/nodes/building.js +3 -2
- package/dist/schema/nodes/cabinet.d.ts +534 -0
- package/dist/schema/nodes/cabinet.d.ts.map +1 -0
- package/dist/schema/nodes/cabinet.js +137 -0
- package/dist/schema/nodes/ceiling.d.ts +5 -2
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +5 -1
- package/dist/schema/nodes/chimney.d.ts +158 -0
- package/dist/schema/nodes/chimney.d.ts.map +1 -0
- package/dist/schema/nodes/chimney.js +67 -0
- package/dist/schema/nodes/column.d.ts +600 -7
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +589 -6
- package/dist/schema/nodes/cupola.d.ts +66 -0
- package/dist/schema/nodes/cupola.d.ts.map +1 -0
- package/dist/schema/nodes/cupola.js +28 -0
- package/dist/schema/nodes/door.d.ts +13 -5
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +12 -0
- package/dist/schema/nodes/dormer.d.ts +228 -0
- package/dist/schema/nodes/dormer.d.ts.map +1 -0
- package/dist/schema/nodes/dormer.js +119 -0
- package/dist/schema/nodes/downspout.d.ts +75 -0
- package/dist/schema/nodes/downspout.d.ts.map +1 -0
- package/dist/schema/nodes/downspout.js +63 -0
- package/dist/schema/nodes/duct-fitting.d.ts +91 -0
- package/dist/schema/nodes/duct-fitting.d.ts.map +1 -0
- package/dist/schema/nodes/duct-fitting.js +92 -0
- package/dist/schema/nodes/duct-segment.d.ts +61 -0
- package/dist/schema/nodes/duct-segment.d.ts.map +1 -0
- package/dist/schema/nodes/duct-segment.js +73 -0
- package/dist/schema/nodes/duct-terminal.d.ts +57 -0
- package/dist/schema/nodes/duct-terminal.d.ts.map +1 -0
- package/dist/schema/nodes/duct-terminal.js +51 -0
- package/dist/schema/nodes/elevator.d.ts +106 -0
- package/dist/schema/nodes/elevator.d.ts.map +1 -0
- package/dist/schema/nodes/elevator.js +57 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts +68 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -0
- package/dist/schema/nodes/eyebrow-vent.js +40 -0
- package/dist/schema/nodes/fence.d.ts +19 -2
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +27 -2
- package/dist/schema/nodes/gutter.d.ts +84 -0
- package/dist/schema/nodes/gutter.d.ts.map +1 -0
- package/dist/schema/nodes/gutter.js +76 -0
- package/dist/schema/nodes/hvac-equipment.d.ts +63 -0
- package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -0
- package/dist/schema/nodes/hvac-equipment.js +55 -0
- package/dist/schema/nodes/item.d.ts +12 -0
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +20 -0
- package/dist/schema/nodes/level.d.ts +1 -1
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/level.js +4 -0
- package/dist/schema/nodes/lineset.d.ts +42 -0
- package/dist/schema/nodes/lineset.d.ts.map +1 -0
- package/dist/schema/nodes/lineset.js +38 -0
- package/dist/schema/nodes/liquid-line.d.ts +34 -0
- package/dist/schema/nodes/liquid-line.d.ts.map +1 -0
- package/dist/schema/nodes/liquid-line.js +24 -0
- package/dist/schema/nodes/measurement.d.ts +306 -0
- package/dist/schema/nodes/measurement.d.ts.map +1 -0
- package/dist/schema/nodes/measurement.js +87 -0
- package/dist/schema/nodes/measurement.test.d.ts +2 -0
- package/dist/schema/nodes/measurement.test.d.ts.map +1 -0
- package/dist/schema/nodes/measurement.test.js +139 -0
- package/dist/schema/nodes/pipe-fitting.d.ts +56 -0
- package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -0
- package/dist/schema/nodes/pipe-fitting.js +45 -0
- package/dist/schema/nodes/pipe-segment.d.ts +48 -0
- package/dist/schema/nodes/pipe-segment.d.ts.map +1 -0
- package/dist/schema/nodes/pipe-segment.js +36 -0
- package/dist/schema/nodes/pipe-trap.d.ts +43 -0
- package/dist/schema/nodes/pipe-trap.d.ts.map +1 -0
- package/dist/schema/nodes/pipe-trap.js +36 -0
- package/dist/schema/nodes/ridge-vent-defaults.test.d.ts +2 -0
- package/dist/schema/nodes/ridge-vent-defaults.test.d.ts.map +1 -0
- package/dist/schema/nodes/ridge-vent-defaults.test.js +205 -0
- package/dist/schema/nodes/ridge-vent.d.ts +82 -0
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -0
- package/dist/schema/nodes/ridge-vent.js +248 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts +90 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-shape.js +318 -0
- package/dist/schema/nodes/roof-segment-shape.test.d.ts +2 -0
- package/dist/schema/nodes/roof-segment-shape.test.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-shape.test.js +175 -0
- package/dist/schema/nodes/roof-segment-surface.test.d.ts +2 -0
- package/dist/schema/nodes/roof-segment-surface.test.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-surface.test.js +48 -0
- package/dist/schema/nodes/roof-segment-trim.test.d.ts +2 -0
- package/dist/schema/nodes/roof-segment-trim.test.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-trim.test.js +107 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts +101 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-walls.js +330 -0
- package/dist/schema/nodes/roof-segment-walls.test.d.ts +2 -0
- package/dist/schema/nodes/roof-segment-walls.test.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-walls.test.js +92 -0
- package/dist/schema/nodes/roof-segment.d.ts +273 -3
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +539 -3
- package/dist/schema/nodes/roof.d.ts +8 -8
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +4 -16
- package/dist/schema/nodes/shelf.d.ts +106 -0
- package/dist/schema/nodes/shelf.d.ts.map +1 -0
- package/dist/schema/nodes/shelf.js +90 -0
- package/dist/schema/nodes/site.d.ts +1 -122
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +2 -6
- package/dist/schema/nodes/skylight.d.ts +279 -0
- package/dist/schema/nodes/skylight.d.ts.map +1 -0
- package/dist/schema/nodes/skylight.js +152 -0
- package/dist/schema/nodes/slab.d.ts +5 -2
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +5 -1
- package/dist/schema/nodes/solar-panel.d.ts +117 -0
- package/dist/schema/nodes/solar-panel.d.ts.map +1 -0
- package/dist/schema/nodes/solar-panel.js +47 -0
- package/dist/schema/nodes/stair-segment.d.ts +4 -4
- package/dist/schema/nodes/stair.d.ts +13 -12
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +3 -0
- package/dist/schema/nodes/surface-hole-metadata.d.ts +2 -0
- package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -1
- package/dist/schema/nodes/surface-hole-metadata.js +3 -1
- package/dist/schema/nodes/turbine-vent.d.ts +68 -0
- package/dist/schema/nodes/turbine-vent.d.ts.map +1 -0
- package/dist/schema/nodes/turbine-vent.js +41 -0
- package/dist/schema/nodes/wall.d.ts +245 -6
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +257 -0
- package/dist/schema/nodes/wall.test.d.ts +2 -0
- package/dist/schema/nodes/wall.test.d.ts.map +1 -0
- package/dist/schema/nodes/wall.test.js +208 -0
- package/dist/schema/nodes/window.d.ts +11 -3
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +12 -0
- package/dist/schema/nodes/zone.d.ts +2 -0
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +6 -0
- package/dist/schema/scene-material.d.ts +41 -0
- package/dist/schema/scene-material.d.ts.map +1 -0
- package/dist/schema/scene-material.js +9 -0
- package/dist/schema/types.d.ts +2850 -655
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +49 -0
- package/dist/services/alignment-anchors.d.ts +100 -0
- package/dist/services/alignment-anchors.d.ts.map +1 -0
- package/dist/services/alignment-anchors.js +312 -0
- package/dist/services/alignment-anchors.test.d.ts +2 -0
- package/dist/services/alignment-anchors.test.d.ts.map +1 -0
- package/dist/services/alignment-anchors.test.js +383 -0
- package/dist/services/alignment.d.ts +131 -0
- package/dist/services/alignment.d.ts.map +1 -0
- package/dist/services/alignment.js +171 -0
- package/dist/services/alignment.test.d.ts +2 -0
- package/dist/services/alignment.test.d.ts.map +1 -0
- package/dist/services/alignment.test.js +92 -0
- package/dist/services/drag-session.d.ts +47 -0
- package/dist/services/drag-session.d.ts.map +1 -0
- package/dist/services/drag-session.js +100 -0
- package/dist/services/drag-session.test.d.ts +2 -0
- package/dist/services/drag-session.test.d.ts.map +1 -0
- package/dist/services/drag-session.test.js +219 -0
- package/dist/services/hosting.d.ts +88 -0
- package/dist/services/hosting.d.ts.map +1 -0
- package/dist/services/hosting.js +131 -0
- package/dist/services/hosting.test.d.ts +2 -0
- package/dist/services/hosting.test.d.ts.map +1 -0
- package/dist/services/hosting.test.js +230 -0
- package/dist/services/index.d.ts +13 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +12 -0
- package/dist/services/level-height.d.ts +28 -0
- package/dist/services/level-height.d.ts.map +1 -0
- package/dist/services/level-height.js +62 -0
- package/dist/services/movement.d.ts +48 -0
- package/dist/services/movement.d.ts.map +1 -0
- package/dist/services/movement.js +65 -0
- package/dist/services/movement.test.d.ts +2 -0
- package/dist/services/movement.test.d.ts.map +1 -0
- package/dist/services/movement.test.js +133 -0
- package/dist/services/opening-guides.d.ts +141 -0
- package/dist/services/opening-guides.d.ts.map +1 -0
- package/dist/services/opening-guides.js +267 -0
- package/dist/services/opening-guides.test.d.ts +2 -0
- package/dist/services/opening-guides.test.d.ts.map +1 -0
- package/dist/services/opening-guides.test.js +208 -0
- package/dist/services/port-connectivity.d.ts +115 -0
- package/dist/services/port-connectivity.d.ts.map +1 -0
- package/dist/services/port-connectivity.js +300 -0
- package/dist/services/port-connectivity.test.d.ts +2 -0
- package/dist/services/port-connectivity.test.d.ts.map +1 -0
- package/dist/services/port-connectivity.test.js +297 -0
- package/dist/services/riser-diagram.d.ts +40 -0
- package/dist/services/riser-diagram.d.ts.map +1 -0
- package/dist/services/riser-diagram.js +110 -0
- package/dist/services/riser-diagram.test.d.ts +2 -0
- package/dist/services/riser-diagram.test.d.ts.map +1 -0
- package/dist/services/riser-diagram.test.js +66 -0
- package/dist/services/single-undo-dance.test.d.ts +2 -0
- package/dist/services/single-undo-dance.test.d.ts.map +1 -0
- package/dist/services/single-undo-dance.test.js +210 -0
- package/dist/services/snap.d.ts +80 -0
- package/dist/services/snap.d.ts.map +1 -0
- package/dist/services/snap.js +140 -0
- package/dist/services/snap.test.d.ts +2 -0
- package/dist/services/snap.test.d.ts.map +1 -0
- package/dist/services/snap.test.js +137 -0
- package/dist/services/system-graph.d.ts +30 -0
- package/dist/services/system-graph.d.ts.map +1 -0
- package/dist/services/system-graph.js +164 -0
- package/dist/services/system-graph.test.d.ts +2 -0
- package/dist/services/system-graph.test.d.ts.map +1 -0
- package/dist/services/system-graph.test.js +138 -0
- package/dist/services/validate-dwv.d.ts +32 -0
- package/dist/services/validate-dwv.d.ts.map +1 -0
- package/dist/services/validate-dwv.js +118 -0
- package/dist/services/validate-dwv.test.d.ts +2 -0
- package/dist/services/validate-dwv.test.d.ts.map +1 -0
- package/dist/services/validate-dwv.test.js +109 -0
- package/dist/solar-panel-presets.d.ts +17 -0
- package/dist/solar-panel-presets.d.ts.map +1 -0
- package/dist/solar-panel-presets.js +43 -0
- package/dist/store/actions/node-actions.d.ts +14 -2
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +585 -15
- package/dist/store/actions/node-mutation-sanitize.test.d.ts +2 -0
- package/dist/store/actions/node-mutation-sanitize.test.d.ts.map +1 -0
- package/dist/store/actions/node-mutation-sanitize.test.js +147 -0
- package/dist/store/actions/reparent.test.d.ts +2 -0
- package/dist/store/actions/reparent.test.d.ts.map +1 -0
- package/dist/store/actions/reparent.test.js +212 -0
- package/dist/store/actions/ridge-vent-update.test.d.ts +2 -0
- package/dist/store/actions/ridge-vent-update.test.d.ts.map +1 -0
- package/dist/store/actions/ridge-vent-update.test.js +264 -0
- package/dist/store/history-control.d.ts +11 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +33 -0
- package/dist/store/use-interactive.d.ts +39 -0
- package/dist/store/use-interactive.d.ts.map +1 -1
- package/dist/store/use-interactive.js +75 -0
- package/dist/store/use-live-node-overrides.d.ts +22 -0
- package/dist/store/use-live-node-overrides.d.ts.map +1 -0
- package/dist/store/use-live-node-overrides.js +59 -0
- package/dist/store/use-scene-dirty-tracking.test.d.ts +2 -0
- package/dist/store/use-scene-dirty-tracking.test.d.ts.map +1 -0
- package/dist/store/use-scene-dirty-tracking.test.js +68 -0
- package/dist/store/use-scene-elevator-migration.test.d.ts +2 -0
- package/dist/store/use-scene-elevator-migration.test.d.ts.map +1 -0
- package/dist/store/use-scene-elevator-migration.test.js +109 -0
- package/dist/store/use-scene-measurement-roundtrip.test.d.ts +2 -0
- package/dist/store/use-scene-measurement-roundtrip.test.d.ts.map +1 -0
- package/dist/store/use-scene-measurement-roundtrip.test.js +97 -0
- package/dist/store/use-scene-plugins.test.d.ts +2 -0
- package/dist/store/use-scene-plugins.test.d.ts.map +1 -0
- package/dist/store/use-scene-plugins.test.js +51 -0
- package/dist/store/use-scene-wall-slot-migration.test.d.ts +2 -0
- package/dist/store/use-scene-wall-slot-migration.test.d.ts.map +1 -0
- package/dist/store/use-scene-wall-slot-migration.test.js +210 -0
- package/dist/store/use-scene-window-migration.test.d.ts +2 -0
- package/dist/store/use-scene-window-migration.test.d.ts.map +1 -0
- package/dist/store/use-scene-window-migration.test.js +85 -0
- package/dist/store/use-scene.d.ts +28 -2
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +546 -49
- package/dist/systems/elevator/elevator-dispatch.d.ts +12 -0
- package/dist/systems/elevator/elevator-dispatch.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-dispatch.js +57 -0
- package/dist/systems/elevator/elevator-geometry.d.ts +15 -0
- package/dist/systems/elevator/elevator-geometry.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-geometry.js +50 -0
- package/dist/systems/elevator/elevator-opening-sync.d.ts +6 -0
- package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-opening-sync.js +218 -0
- package/dist/systems/elevator/elevator-opening-sync.test.d.ts +2 -0
- package/dist/systems/elevator/elevator-opening-sync.test.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-opening-sync.test.js +146 -0
- package/dist/systems/elevator/elevator-opening-system.d.ts +2 -0
- package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-opening-system.js +48 -0
- package/dist/systems/elevator/elevator-runtime-system.d.ts +2 -0
- package/dist/systems/elevator/elevator-runtime-system.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-runtime-system.js +8 -0
- package/dist/systems/elevator/elevator-runtime.d.ts +18 -0
- package/dist/systems/elevator/elevator-runtime.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-runtime.js +225 -0
- package/dist/systems/elevator/elevator-runtime.test.d.ts +2 -0
- package/dist/systems/elevator/elevator-runtime.test.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-runtime.test.js +64 -0
- package/dist/systems/elevator/elevator-service.d.ts +19 -0
- package/dist/systems/elevator/elevator-service.d.ts.map +1 -0
- package/dist/systems/elevator/elevator-service.js +111 -0
- package/dist/systems/fence/fence-centerline.d.ts +12 -0
- package/dist/systems/fence/fence-centerline.d.ts.map +1 -0
- package/dist/systems/fence/fence-centerline.js +37 -0
- package/dist/systems/fence/fence-spline.d.ts +39 -0
- package/dist/systems/fence/fence-spline.d.ts.map +1 -0
- package/dist/systems/fence/fence-spline.js +196 -0
- package/dist/systems/fence/fence-spline.test.d.ts +2 -0
- package/dist/systems/fence/fence-spline.test.d.ts.map +1 -0
- package/dist/systems/fence/fence-spline.test.js +136 -0
- package/dist/systems/stair/stair-footprint.d.ts +44 -0
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -0
- package/dist/systems/stair/stair-footprint.js +178 -0
- package/dist/systems/stair/stair-opening-preview.d.ts +2447 -0
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -0
- package/dist/systems/stair/stair-opening-preview.js +93 -0
- package/dist/systems/stair/stair-opening-preview.test.d.ts +2 -0
- package/dist/systems/stair/stair-opening-preview.test.d.ts.map +1 -0
- package/dist/systems/stair/stair-opening-preview.test.js +80 -0
- package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.js +155 -147
- package/dist/systems/stair/stair-opening-sync.test.js +424 -2
- package/dist/systems/stair/stair-opening-system.d.ts +2 -0
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -0
- package/dist/systems/stair/stair-opening-system.js +104 -0
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +38 -2
- package/dist/systems/wall/wall-mitering.test.d.ts +2 -0
- package/dist/systems/wall/wall-mitering.test.d.ts.map +1 -0
- package/dist/systems/wall/wall-mitering.test.js +63 -0
- package/dist/systems/wall/wall-move.d.ts +48 -0
- package/dist/systems/wall/wall-move.d.ts.map +1 -0
- package/dist/systems/wall/wall-move.js +193 -0
- package/dist/utils/clone-scene-graph.d.ts +7 -4
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +29 -7
- package/dist/utils/clone-scene-graph.test.d.ts +2 -0
- package/dist/utils/clone-scene-graph.test.d.ts.map +1 -0
- package/dist/utils/clone-scene-graph.test.js +62 -0
- package/dist/utils/heal-scene-graph.d.ts +18 -0
- package/dist/utils/heal-scene-graph.d.ts.map +1 -0
- package/dist/utils/heal-scene-graph.js +90 -0
- package/dist/utils/heal-scene-graph.test.d.ts +2 -0
- package/dist/utils/heal-scene-graph.test.d.ts.map +1 -0
- package/dist/utils/heal-scene-graph.test.js +88 -0
- package/dist/validation/validate-build-json.d.ts +44 -0
- package/dist/validation/validate-build-json.d.ts.map +1 -0
- package/dist/validation/validate-build-json.js +256 -0
- package/package.json +11 -4
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
import { MaterialSchema } from '../material';
|
|
5
|
+
export const ElevatorDoorStyle = z.enum(['center-opening', 'single-left', 'single-right']);
|
|
6
|
+
export const ElevatorDoorPanelStyle = z.enum(['glass-frame', 'solid-panel', 'segmented-panel']);
|
|
7
|
+
export const ElevatorShaftStyle = z.enum(['solid', 'glass']);
|
|
8
|
+
export const ElevatorNode = BaseNode.extend({
|
|
9
|
+
id: objectId('elevator'),
|
|
10
|
+
type: nodeType('elevator'),
|
|
11
|
+
material: MaterialSchema.optional(),
|
|
12
|
+
materialPreset: z.string().optional(),
|
|
13
|
+
// Unified paint-slot refs (`scene:`/`library:` MaterialRef per slot id),
|
|
14
|
+
// matching the slot model items/slab/shelf use. Absent = declared default.
|
|
15
|
+
slots: z.record(z.string(), z.string()).optional(),
|
|
16
|
+
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
17
|
+
// Rotation around the Y axis in radians.
|
|
18
|
+
rotation: z.number().default(0),
|
|
19
|
+
width: z.number().default(1.84),
|
|
20
|
+
depth: z.number().default(1.84),
|
|
21
|
+
shaftWidth: z.number().optional(),
|
|
22
|
+
shaftDepth: z.number().optional(),
|
|
23
|
+
shaftWallThickness: z.number().default(0.09),
|
|
24
|
+
shaftStyle: ElevatorShaftStyle.default('solid'),
|
|
25
|
+
cabHeight: z.number().default(2.35),
|
|
26
|
+
doorWidth: z.number().default(0.95),
|
|
27
|
+
doorHeight: z.number().default(2.1),
|
|
28
|
+
doorStyle: ElevatorDoorStyle.default('center-opening'),
|
|
29
|
+
doorPanelStyle: ElevatorDoorPanelStyle.default('glass-frame'),
|
|
30
|
+
fromLevelId: z.string().nullable().default(null),
|
|
31
|
+
toLevelId: z.string().nullable().default(null),
|
|
32
|
+
servedLevelIds: z.array(z.string()).optional(),
|
|
33
|
+
disabledLevelIds: z.array(z.string()).default([]),
|
|
34
|
+
serviceOnlyLevelIds: z.array(z.string()).default([]),
|
|
35
|
+
defaultLevelId: z.string().nullable().default(null),
|
|
36
|
+
speed: z.number().default(2.2),
|
|
37
|
+
doorDurationMs: z.number().default(900),
|
|
38
|
+
dwellMs: z.number().default(1400),
|
|
39
|
+
}).describe(dedent `
|
|
40
|
+
Elevator node - a vertical transport core attached to a building.
|
|
41
|
+
- parentId: building that owns this elevator
|
|
42
|
+
- position: building-local shaft center on the X/Z plane
|
|
43
|
+
- rotation: rotation around the Y axis
|
|
44
|
+
- width/depth: cab footprint
|
|
45
|
+
- shaftWidth/shaftDepth: optional clear shaft footprint; falls back to cab footprint
|
|
46
|
+
- shaftWallThickness: visible shaft shell thickness
|
|
47
|
+
- shaftStyle: solid or glass shaft shell presentation
|
|
48
|
+
- cabHeight: visible elevator cab height
|
|
49
|
+
- doorWidth/doorHeight/doorStyle: landing and cab door movement/opening presentation
|
|
50
|
+
- doorPanelStyle: visual leaf style for glass-frame, solid-panel, or segmented-panel doors
|
|
51
|
+
- fromLevelId / toLevelId: source and destination levels used for service range and auto cutouts
|
|
52
|
+
- servedLevelIds: legacy optional explicit level list; used only when from/to are missing
|
|
53
|
+
- disabledLevelIds: stops visible in the service range but unavailable for public/cab requests
|
|
54
|
+
- serviceOnlyLevelIds: stops unavailable from landing calls but available from cab/admin controls
|
|
55
|
+
- defaultLevelId: starting/resting level, falling back to the lowest served level
|
|
56
|
+
- speed/doorDurationMs/dwellMs: runtime animation defaults
|
|
57
|
+
`);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const EyebrowVentNode: z.ZodObject<{
|
|
3
|
+
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
4
|
+
name: z.ZodOptional<z.ZodString>;
|
|
5
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
6
|
+
visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
7
|
+
camera: z.ZodOptional<z.ZodObject<{
|
|
8
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
9
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
10
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
11
|
+
perspective: "perspective";
|
|
12
|
+
orthographic: "orthographic";
|
|
13
|
+
}>>;
|
|
14
|
+
fov: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
zoom: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
}, z.core.$strip>>;
|
|
17
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
18
|
+
id: z.ZodDefault<z.ZodTemplateLiteral<`eyebrow-vent_${string}`>>;
|
|
19
|
+
type: z.ZodDefault<z.ZodLiteral<"eyebrow-vent">>;
|
|
20
|
+
material: z.ZodOptional<z.ZodObject<{
|
|
21
|
+
id: z.ZodOptional<z.ZodString>;
|
|
22
|
+
preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
|
|
23
|
+
custom: "custom";
|
|
24
|
+
white: "white";
|
|
25
|
+
brick: "brick";
|
|
26
|
+
concrete: "concrete";
|
|
27
|
+
wood: "wood";
|
|
28
|
+
glass: "glass";
|
|
29
|
+
metal: "metal";
|
|
30
|
+
plaster: "plaster";
|
|
31
|
+
tile: "tile";
|
|
32
|
+
marble: "marble";
|
|
33
|
+
}>>>;
|
|
34
|
+
properties: z.ZodOptional<z.ZodObject<{
|
|
35
|
+
color: z.ZodDefault<z.ZodString>;
|
|
36
|
+
roughness: z.ZodDefault<z.ZodNumber>;
|
|
37
|
+
metalness: z.ZodDefault<z.ZodNumber>;
|
|
38
|
+
opacity: z.ZodDefault<z.ZodNumber>;
|
|
39
|
+
transparent: z.ZodDefault<z.ZodBoolean>;
|
|
40
|
+
side: z.ZodDefault<z.ZodEnum<{
|
|
41
|
+
front: "front";
|
|
42
|
+
back: "back";
|
|
43
|
+
double: "double";
|
|
44
|
+
}>>;
|
|
45
|
+
}, z.core.$strip>>;
|
|
46
|
+
texture: z.ZodOptional<z.ZodObject<{
|
|
47
|
+
url: z.ZodString;
|
|
48
|
+
repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
49
|
+
scale: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
}, z.core.$strip>>;
|
|
51
|
+
}, z.core.$strip>>;
|
|
52
|
+
materialPreset: z.ZodDefault<z.ZodString>;
|
|
53
|
+
roofSegmentId: z.ZodOptional<z.ZodString>;
|
|
54
|
+
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
55
|
+
rotation: z.ZodDefault<z.ZodNumber>;
|
|
56
|
+
width: z.ZodDefault<z.ZodNumber>;
|
|
57
|
+
depth: z.ZodDefault<z.ZodNumber>;
|
|
58
|
+
height: z.ZodDefault<z.ZodNumber>;
|
|
59
|
+
style: z.ZodDefault<z.ZodEnum<{
|
|
60
|
+
scoop: "scoop";
|
|
61
|
+
"half-round": "half-round";
|
|
62
|
+
"slant-box": "slant-box";
|
|
63
|
+
}>>;
|
|
64
|
+
louverCount: z.ZodDefault<z.ZodNumber>;
|
|
65
|
+
backRatio: z.ZodDefault<z.ZodNumber>;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
export type EyebrowVentNode = z.infer<typeof EyebrowVentNode>;
|
|
68
|
+
//# sourceMappingURL=eyebrow-vent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eyebrow-vent.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/eyebrow-vent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2C3B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
import { MaterialSchema } from '../material';
|
|
5
|
+
export const EyebrowVentNode = BaseNode.extend({
|
|
6
|
+
id: objectId('eyebrow-vent'),
|
|
7
|
+
type: nodeType('eyebrow-vent'),
|
|
8
|
+
material: MaterialSchema.optional(),
|
|
9
|
+
// Default to the white preset so a freshly-placed vent reads as clean
|
|
10
|
+
// painted metal and the paint inspector shows "White" (matches box-vent).
|
|
11
|
+
materialPreset: z.string().default('preset-white'),
|
|
12
|
+
roofSegmentId: z.string().optional(),
|
|
13
|
+
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
14
|
+
rotation: z.number().default(0),
|
|
15
|
+
// `width` is the opening width (left↔right across the louvered face),
|
|
16
|
+
// `depth` the front-to-back projection along the roof, `height` the rise.
|
|
17
|
+
width: z.number().default(0.5),
|
|
18
|
+
depth: z.number().default(0.6),
|
|
19
|
+
height: z.number().default(0.3),
|
|
20
|
+
// Body shape:
|
|
21
|
+
// - `scoop` : rounded louvered opening that sweeps back and tapers
|
|
22
|
+
// into the flashing plate (the classic dormer "eyebrow").
|
|
23
|
+
// - `half-round` : a D-shaped half-round louver vent (flat louvered face,
|
|
24
|
+
// semicircular curved top, short body).
|
|
25
|
+
// - `slant-box` : a low box with a slanted top and a screened front.
|
|
26
|
+
style: z.enum(['scoop', 'half-round', 'slant-box']).default('scoop'),
|
|
27
|
+
// Number of horizontal louver slats across the front opening (0 = open /
|
|
28
|
+
// screened only).
|
|
29
|
+
louverCount: z.number().int().min(0).max(8).default(3),
|
|
30
|
+
// `slant-box` only: the low rear edge as a fraction of the tall front edge.
|
|
31
|
+
// 1 = flat-topped box, lower = the top slopes down more steeply toward the
|
|
32
|
+
// back.
|
|
33
|
+
backRatio: z.number().min(0.15).max(1).default(0.5),
|
|
34
|
+
}).describe(dedent `
|
|
35
|
+
Eyebrow vent — a low roof ventilator with a rounded, louvered front that
|
|
36
|
+
sits on a flashing plate. Three styles: a swept "scoop" eyebrow, a D-shaped
|
|
37
|
+
"half-round" louver vent, and a "slant-box" hood. Parented to a roof-segment;
|
|
38
|
+
position is segment-local. Rotation is around the segment's vertical axis
|
|
39
|
+
(post-slope tilt).
|
|
40
|
+
`);
|
|
@@ -3,11 +3,17 @@ export declare const FenceStyle: z.ZodEnum<{
|
|
|
3
3
|
slat: "slat";
|
|
4
4
|
rail: "rail";
|
|
5
5
|
privacy: "privacy";
|
|
6
|
+
horizontal: "horizontal";
|
|
6
7
|
}>;
|
|
7
8
|
export declare const FenceBaseStyle: z.ZodEnum<{
|
|
8
9
|
floating: "floating";
|
|
9
10
|
grounded: "grounded";
|
|
10
11
|
}>;
|
|
12
|
+
export declare const FencePostCap: z.ZodEnum<{
|
|
13
|
+
flat: "flat";
|
|
14
|
+
none: "none";
|
|
15
|
+
pyramid: "pyramid";
|
|
16
|
+
}>;
|
|
11
17
|
export declare const FenceNode: z.ZodObject<{
|
|
12
18
|
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
13
19
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -28,7 +34,7 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
28
34
|
type: z.ZodDefault<z.ZodLiteral<"fence">>;
|
|
29
35
|
material: z.ZodOptional<z.ZodObject<{
|
|
30
36
|
id: z.ZodOptional<z.ZodString>;
|
|
31
|
-
preset: z.ZodOptional<z.ZodEnum<{
|
|
37
|
+
preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
|
|
32
38
|
custom: "custom";
|
|
33
39
|
white: "white";
|
|
34
40
|
brick: "brick";
|
|
@@ -39,7 +45,7 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
39
45
|
plaster: "plaster";
|
|
40
46
|
tile: "tile";
|
|
41
47
|
marble: "marble";
|
|
42
|
-
}
|
|
48
|
+
}>>>;
|
|
43
49
|
properties: z.ZodOptional<z.ZodObject<{
|
|
44
50
|
color: z.ZodDefault<z.ZodString>;
|
|
45
51
|
roughness: z.ZodDefault<z.ZodNumber>;
|
|
@@ -59,8 +65,11 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
59
65
|
}, z.core.$strip>>;
|
|
60
66
|
}, z.core.$strip>>;
|
|
61
67
|
materialPreset: z.ZodOptional<z.ZodString>;
|
|
68
|
+
slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
62
69
|
start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
63
70
|
end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
71
|
+
path: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
|
|
72
|
+
tangents: z.ZodOptional<z.ZodArray<z.ZodNullable<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>>;
|
|
64
73
|
height: z.ZodDefault<z.ZodNumber>;
|
|
65
74
|
thickness: z.ZodDefault<z.ZodNumber>;
|
|
66
75
|
curveOffset: z.ZodOptional<z.ZodNumber>;
|
|
@@ -70,15 +79,23 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
70
79
|
topRailHeight: z.ZodDefault<z.ZodNumber>;
|
|
71
80
|
groundClearance: z.ZodDefault<z.ZodNumber>;
|
|
72
81
|
edgeInset: z.ZodDefault<z.ZodNumber>;
|
|
82
|
+
slatGap: z.ZodDefault<z.ZodNumber>;
|
|
83
|
+
postCap: z.ZodDefault<z.ZodEnum<{
|
|
84
|
+
flat: "flat";
|
|
85
|
+
none: "none";
|
|
86
|
+
pyramid: "pyramid";
|
|
87
|
+
}>>;
|
|
73
88
|
baseStyle: z.ZodDefault<z.ZodEnum<{
|
|
74
89
|
floating: "floating";
|
|
75
90
|
grounded: "grounded";
|
|
76
91
|
}>>;
|
|
92
|
+
showInfill: z.ZodDefault<z.ZodBoolean>;
|
|
77
93
|
color: z.ZodDefault<z.ZodString>;
|
|
78
94
|
style: z.ZodDefault<z.ZodEnum<{
|
|
79
95
|
slat: "slat";
|
|
80
96
|
rail: "rail";
|
|
81
97
|
privacy: "privacy";
|
|
98
|
+
horizontal: "horizontal";
|
|
82
99
|
}>>;
|
|
83
100
|
}, z.core.$strip>;
|
|
84
101
|
export type FenceNode = z.infer<typeof FenceNode>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fence.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/fence.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"fence.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/fence.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,UAAU;;;;;EAAoD,CAAA;AAC3E,eAAO,MAAM,cAAc;;;EAAmC,CAAA;AAC9D,eAAO,MAAM,YAAY;;;;EAAsC,CAAA;AAE/D,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqDrB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
|
|
@@ -2,15 +2,32 @@ import dedent from 'dedent';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
4
|
import { MaterialSchema } from '../material';
|
|
5
|
-
export const FenceStyle = z.enum(['slat', 'rail', 'privacy']);
|
|
5
|
+
export const FenceStyle = z.enum(['slat', 'rail', 'privacy', 'horizontal']);
|
|
6
6
|
export const FenceBaseStyle = z.enum(['floating', 'grounded']);
|
|
7
|
+
export const FencePostCap = z.enum(['none', 'flat', 'pyramid']);
|
|
7
8
|
export const FenceNode = BaseNode.extend({
|
|
8
9
|
id: objectId('fence'),
|
|
9
10
|
type: nodeType('fence'),
|
|
10
11
|
material: MaterialSchema.optional(),
|
|
11
12
|
materialPreset: z.string().optional(),
|
|
13
|
+
// Unified paint-slot refs (`scene:`/`library:` MaterialRef per slot id),
|
|
14
|
+
// matching the slot model items/slab/shelf use. Absent = declared default.
|
|
15
|
+
slots: z.record(z.string(), z.string()).optional(),
|
|
12
16
|
start: z.tuple([z.number(), z.number()]),
|
|
13
17
|
end: z.tuple([z.number(), z.number()]),
|
|
18
|
+
// Optional spline control points in level coordinate meters. When present
|
|
19
|
+
// (>= 2 points) the fence centerline is a smooth Catmull-Rom curve through
|
|
20
|
+
// these points and start/end/curveOffset no longer define the centerline.
|
|
21
|
+
// start/end are kept in sync with the first/last path point so consumers
|
|
22
|
+
// that read endpoints (handles, bbox, miter references) stay valid. Absent =
|
|
23
|
+
// the straight or single-arc fence defined by start/end (+ curveOffset).
|
|
24
|
+
path: z.array(z.tuple([z.number(), z.number()])).optional(),
|
|
25
|
+
// Optional per-control-point tangent handles, parallel to `path` (same
|
|
26
|
+
// length when present). Each entry is the OUT-handle offset vector [dx, dy]
|
|
27
|
+
// from its path point, in level meters; the IN handle is its mirror so the
|
|
28
|
+
// curve stays smooth through the point. `null` = use the automatic
|
|
29
|
+
// Catmull-Rom tangent for that point. Only meaningful for spline fences.
|
|
30
|
+
tangents: z.array(z.tuple([z.number(), z.number()]).nullable()).optional(),
|
|
14
31
|
height: z.number().default(1.8),
|
|
15
32
|
thickness: z.number().default(0.08),
|
|
16
33
|
curveOffset: z.number().optional(),
|
|
@@ -20,15 +37,23 @@ export const FenceNode = BaseNode.extend({
|
|
|
20
37
|
topRailHeight: z.number().default(0.04),
|
|
21
38
|
groundClearance: z.number().default(0),
|
|
22
39
|
edgeInset: z.number().default(0.015),
|
|
40
|
+
// Reveal between the boards of a `horizontal` fence (0 = flush cladding).
|
|
41
|
+
slatGap: z.number().default(0.01),
|
|
42
|
+
// Topper drawn on each `horizontal`-fence post.
|
|
43
|
+
postCap: FencePostCap.default('pyramid'),
|
|
23
44
|
baseStyle: FenceBaseStyle.default('grounded'),
|
|
45
|
+
showInfill: z.boolean().default(true),
|
|
24
46
|
color: z.string().default('#ffffff'),
|
|
25
47
|
style: FenceStyle.default('slat'),
|
|
26
48
|
}).describe(dedent `
|
|
27
49
|
Fence node - used to represent a fence segment in the building/site level coordinate system
|
|
28
50
|
- start/end: fence endpoints in level coordinate system
|
|
51
|
+
- path: optional list of [x, y] points; when set (>= 2) the centerline is a smooth spline through them
|
|
52
|
+
- tangents: optional per-point handle vectors (parallel to path); null entries fall back to the automatic tangent
|
|
29
53
|
- height/thickness: overall fence dimensions in meters
|
|
30
|
-
- curveOffset: midpoint sagitta offset used to bend the fence into an arc
|
|
54
|
+
- curveOffset: midpoint sagitta offset used to bend the fence into an arc (ignored when path is set)
|
|
31
55
|
- baseHeight/postSpacing/postSize/topRailHeight: exact geometric controls from the plan3D fence model
|
|
32
56
|
- groundClearance/edgeInset/baseStyle: fence support and inset configuration
|
|
57
|
+
- showInfill: whether to draw intermediate posts/slats between end posts
|
|
33
58
|
- color/style: visual appearance options
|
|
34
59
|
`);
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const GutterOutlet: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
offset: z.ZodDefault<z.ZodNumber>;
|
|
5
|
+
diameter: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export type GutterOutlet = z.infer<typeof GutterOutlet>;
|
|
8
|
+
export declare const GutterNode: z.ZodObject<{
|
|
9
|
+
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
10
|
+
name: z.ZodOptional<z.ZodString>;
|
|
11
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
12
|
+
visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
13
|
+
camera: z.ZodOptional<z.ZodObject<{
|
|
14
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
15
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
16
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
17
|
+
perspective: "perspective";
|
|
18
|
+
orthographic: "orthographic";
|
|
19
|
+
}>>;
|
|
20
|
+
fov: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
zoom: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
}, z.core.$strip>>;
|
|
23
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
24
|
+
id: z.ZodDefault<z.ZodTemplateLiteral<`gutter_${string}`>>;
|
|
25
|
+
type: z.ZodDefault<z.ZodLiteral<"gutter">>;
|
|
26
|
+
material: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
id: z.ZodOptional<z.ZodString>;
|
|
28
|
+
preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
|
|
29
|
+
custom: "custom";
|
|
30
|
+
white: "white";
|
|
31
|
+
brick: "brick";
|
|
32
|
+
concrete: "concrete";
|
|
33
|
+
wood: "wood";
|
|
34
|
+
glass: "glass";
|
|
35
|
+
metal: "metal";
|
|
36
|
+
plaster: "plaster";
|
|
37
|
+
tile: "tile";
|
|
38
|
+
marble: "marble";
|
|
39
|
+
}>>>;
|
|
40
|
+
properties: z.ZodOptional<z.ZodObject<{
|
|
41
|
+
color: z.ZodDefault<z.ZodString>;
|
|
42
|
+
roughness: z.ZodDefault<z.ZodNumber>;
|
|
43
|
+
metalness: z.ZodDefault<z.ZodNumber>;
|
|
44
|
+
opacity: z.ZodDefault<z.ZodNumber>;
|
|
45
|
+
transparent: z.ZodDefault<z.ZodBoolean>;
|
|
46
|
+
side: z.ZodDefault<z.ZodEnum<{
|
|
47
|
+
front: "front";
|
|
48
|
+
back: "back";
|
|
49
|
+
double: "double";
|
|
50
|
+
}>>;
|
|
51
|
+
}, z.core.$strip>>;
|
|
52
|
+
texture: z.ZodOptional<z.ZodObject<{
|
|
53
|
+
url: z.ZodString;
|
|
54
|
+
repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
55
|
+
scale: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
}, z.core.$strip>>;
|
|
57
|
+
}, z.core.$strip>>;
|
|
58
|
+
materialPreset: z.ZodDefault<z.ZodString>;
|
|
59
|
+
roofSegmentId: z.ZodOptional<z.ZodString>;
|
|
60
|
+
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
61
|
+
rotation: z.ZodDefault<z.ZodNumber>;
|
|
62
|
+
length: z.ZodDefault<z.ZodNumber>;
|
|
63
|
+
size: z.ZodDefault<z.ZodNumber>;
|
|
64
|
+
thickness: z.ZodDefault<z.ZodNumber>;
|
|
65
|
+
profile: z.ZodDefault<z.ZodEnum<{
|
|
66
|
+
box: "box";
|
|
67
|
+
"half-round": "half-round";
|
|
68
|
+
"k-style": "k-style";
|
|
69
|
+
}>>;
|
|
70
|
+
endCapLeft: z.ZodDefault<z.ZodBoolean>;
|
|
71
|
+
endCapRight: z.ZodDefault<z.ZodBoolean>;
|
|
72
|
+
hangerStyle: z.ZodDefault<z.ZodEnum<{
|
|
73
|
+
none: "none";
|
|
74
|
+
strap: "strap";
|
|
75
|
+
}>>;
|
|
76
|
+
hangerSpacing: z.ZodDefault<z.ZodNumber>;
|
|
77
|
+
outlets: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
78
|
+
id: z.ZodString;
|
|
79
|
+
offset: z.ZodDefault<z.ZodNumber>;
|
|
80
|
+
diameter: z.ZodDefault<z.ZodNumber>;
|
|
81
|
+
}, z.core.$strip>>>;
|
|
82
|
+
}, z.core.$strip>;
|
|
83
|
+
export type GutterNode = z.infer<typeof GutterNode>;
|
|
84
|
+
//# sourceMappingURL=gutter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gutter.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/gutter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,YAAY;;;;iBAUvB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAEvD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkEtB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
import { MaterialSchema } from '../material';
|
|
5
|
+
// A single drop outlet drilled in the gutter floor. A gutter can carry
|
|
6
|
+
// several so a long run can split between multiple downspouts (each
|
|
7
|
+
// downspout links to one outlet via its `outletId`).
|
|
8
|
+
export const GutterOutlet = z.object({
|
|
9
|
+
// Stable id the downspout references. Generated with `generateId('outlet')`.
|
|
10
|
+
id: z.string(),
|
|
11
|
+
// Position along the gutter length (gutter-local +X), signed from the
|
|
12
|
+
// CENTER. The geometry clamps it inside the end caps at build time, so
|
|
13
|
+
// a stored value that no longer fits just rides the nearest bound.
|
|
14
|
+
offset: z.number().default(0),
|
|
15
|
+
// Bore diameter of this drop. Default 0.07 m ≈ 3″. The cross-section
|
|
16
|
+
// SHAPE (round vs rectangular) follows the gutter's profile, not this.
|
|
17
|
+
diameter: z.number().default(0.07),
|
|
18
|
+
});
|
|
19
|
+
export const GutterNode = BaseNode.extend({
|
|
20
|
+
id: objectId('gutter'),
|
|
21
|
+
type: nodeType('gutter'),
|
|
22
|
+
material: MaterialSchema.optional(),
|
|
23
|
+
// White preset by default — matches the rest of the roof accessory
|
|
24
|
+
// family (box-vent / ridge-vent) so the paint inspector reads as
|
|
25
|
+
// "White" instead of "no material" on a freshly-placed gutter.
|
|
26
|
+
materialPreset: z.string().default('preset-white'),
|
|
27
|
+
roofSegmentId: z.string().optional(),
|
|
28
|
+
// Segment-local. The placement tool snaps to the eave line (Z =
|
|
29
|
+
// +depth/2, Y = wallHeight) of the segment under the cursor; X is
|
|
30
|
+
// wherever the user clicked. After placement the inspector + length
|
|
31
|
+
// handles can shift X along the eave.
|
|
32
|
+
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
33
|
+
// Rotation around the gutter's own local Y. Kept at 0 by default
|
|
34
|
+
// because the gutter's length axis is constrained to the eave
|
|
35
|
+
// direction (segment-local +X) — but exposed in case the user wants
|
|
36
|
+
// to tilt for a custom run.
|
|
37
|
+
rotation: z.number().default(0),
|
|
38
|
+
// Length along the eave (gutter-local +X).
|
|
39
|
+
length: z.number().default(2.0),
|
|
40
|
+
// Profile size — the vertical drop of the U-channel below the eave
|
|
41
|
+
// line. 5″ (0.127 m) is the most common residential gutter size; 6″
|
|
42
|
+
// (0.152 m) is the common commercial / heavy-duty size. Default
|
|
43
|
+
// rounds the residential value to 0.13 m.
|
|
44
|
+
size: z.number().default(0.13),
|
|
45
|
+
// Wall thickness of the U-channel. Visible on the rim from above; too
|
|
46
|
+
// thin reads as a paper strip, too thick reads as a curb.
|
|
47
|
+
thickness: z.number().default(0.006),
|
|
48
|
+
profile: z.enum(['k-style', 'half-round', 'box']).default('k-style'),
|
|
49
|
+
// End caps close the open ends of the U-channel so water can't run
|
|
50
|
+
// out the sides. Independent per-end because a downspout typically
|
|
51
|
+
// joins the gutter at one end while the other stays capped. Default
|
|
52
|
+
// true on both — matches a freshly-installed residential gutter.
|
|
53
|
+
endCapLeft: z.boolean().default(true),
|
|
54
|
+
endCapRight: z.boolean().default(true),
|
|
55
|
+
// Hangers are the metal straps that hold the gutter onto the
|
|
56
|
+
// fascia. 'strap' renders periodic bars across the rim; 'none'
|
|
57
|
+
// hides them (some plastic gutters use hidden clips). Spacing is
|
|
58
|
+
// metres between hanger centers; real residential code is roughly
|
|
59
|
+
// 0.6 m for snow-load areas, 0.75 m elsewhere.
|
|
60
|
+
hangerStyle: z.enum(['strap', 'none']).default('strap'),
|
|
61
|
+
hangerSpacing: z.number().default(0.6),
|
|
62
|
+
// Downspout outlets — short drop tubes descending from the gutter
|
|
63
|
+
// floor where downspouts connect. Empty by default so existing
|
|
64
|
+
// gutters don't sprout outlets on schema upgrade. Each is drilled
|
|
65
|
+
// through the trough floor via CSG; a downspout links to one by id.
|
|
66
|
+
outlets: z.array(GutterOutlet).default([]),
|
|
67
|
+
}).describe(dedent `
|
|
68
|
+
Gutter — a rain-water channel running along the eave of a roof
|
|
69
|
+
segment. Parented to a roof-segment; position is segment-local.
|
|
70
|
+
- length: span along the eave (gutter-local +X)
|
|
71
|
+
- size: profile drop below the eave line (vertical extent)
|
|
72
|
+
- profile: k-style (ogee fascia), half-round, or square box
|
|
73
|
+
- endCapLeft / endCapRight: close the trough at gutter-local -X / +X
|
|
74
|
+
- hangerStyle / hangerSpacing: visible metal straps across the rim
|
|
75
|
+
- outlets: drop-tube outlets (id + along-length offset + bore diameter)
|
|
76
|
+
`);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* HVAC equipment — the boxes duct systems start and end at: furnace,
|
|
4
|
+
* air handler, outdoor condenser.
|
|
5
|
+
*
|
|
6
|
+
* Phase 3 of the HVAC node system. Furnaces and air handlers expose
|
|
7
|
+
* typed duct ports (supply plenum on top, return drop on the side) so
|
|
8
|
+
* duct runs and fittings snap onto them. Every unit also exposes a
|
|
9
|
+
* refrigerant service port on its valve face — a condenser, the outdoor
|
|
10
|
+
* half of a split system, carries no duct ports but pipes to the indoor
|
|
11
|
+
* coil through a `lineset` run mating onto that port.
|
|
12
|
+
*
|
|
13
|
+
* Floor-placed: `position` is level-local meters with y at the base,
|
|
14
|
+
* `rotation` is yaw radians (the editor's default R-rotate applies).
|
|
15
|
+
*/
|
|
16
|
+
export declare const HvacEquipmentNode: z.ZodObject<{
|
|
17
|
+
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
18
|
+
name: z.ZodOptional<z.ZodString>;
|
|
19
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
20
|
+
visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
21
|
+
camera: z.ZodOptional<z.ZodObject<{
|
|
22
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
23
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
24
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
25
|
+
perspective: "perspective";
|
|
26
|
+
orthographic: "orthographic";
|
|
27
|
+
}>>;
|
|
28
|
+
fov: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
zoom: z.ZodOptional<z.ZodNumber>;
|
|
30
|
+
}, z.core.$strip>>;
|
|
31
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
32
|
+
id: z.ZodDefault<z.ZodTemplateLiteral<`hvac-equipment_${string}`>>;
|
|
33
|
+
type: z.ZodDefault<z.ZodLiteral<"hvac-equipment">>;
|
|
34
|
+
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
35
|
+
rotation: z.ZodDefault<z.ZodNumber>;
|
|
36
|
+
equipmentType: z.ZodDefault<z.ZodEnum<{
|
|
37
|
+
furnace: "furnace";
|
|
38
|
+
"air-handler": "air-handler";
|
|
39
|
+
condenser: "condenser";
|
|
40
|
+
}>>;
|
|
41
|
+
width: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
depth: z.ZodDefault<z.ZodNumber>;
|
|
43
|
+
height: z.ZodDefault<z.ZodNumber>;
|
|
44
|
+
supplyShape: z.ZodDefault<z.ZodEnum<{
|
|
45
|
+
round: "round";
|
|
46
|
+
rect: "rect";
|
|
47
|
+
oval: "oval";
|
|
48
|
+
}>>;
|
|
49
|
+
returnShape: z.ZodDefault<z.ZodEnum<{
|
|
50
|
+
round: "round";
|
|
51
|
+
rect: "rect";
|
|
52
|
+
oval: "oval";
|
|
53
|
+
}>>;
|
|
54
|
+
supplyDiameter: z.ZodDefault<z.ZodNumber>;
|
|
55
|
+
returnDiameter: z.ZodDefault<z.ZodNumber>;
|
|
56
|
+
supplyWidth: z.ZodDefault<z.ZodNumber>;
|
|
57
|
+
supplyHeight: z.ZodDefault<z.ZodNumber>;
|
|
58
|
+
returnWidth: z.ZodDefault<z.ZodNumber>;
|
|
59
|
+
returnHeight: z.ZodDefault<z.ZodNumber>;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
export type HvacEquipmentNode = z.infer<typeof HvacEquipmentNode>;
|
|
62
|
+
export type HvacEquipmentNodeId = HvacEquipmentNode['id'];
|
|
63
|
+
//# sourceMappingURL=hvac-equipment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hvac-equipment.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/hvac-equipment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuC7B,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AACjE,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
/**
|
|
5
|
+
* HVAC equipment — the boxes duct systems start and end at: furnace,
|
|
6
|
+
* air handler, outdoor condenser.
|
|
7
|
+
*
|
|
8
|
+
* Phase 3 of the HVAC node system. Furnaces and air handlers expose
|
|
9
|
+
* typed duct ports (supply plenum on top, return drop on the side) so
|
|
10
|
+
* duct runs and fittings snap onto them. Every unit also exposes a
|
|
11
|
+
* refrigerant service port on its valve face — a condenser, the outdoor
|
|
12
|
+
* half of a split system, carries no duct ports but pipes to the indoor
|
|
13
|
+
* coil through a `lineset` run mating onto that port.
|
|
14
|
+
*
|
|
15
|
+
* Floor-placed: `position` is level-local meters with y at the base,
|
|
16
|
+
* `rotation` is yaw radians (the editor's default R-rotate applies).
|
|
17
|
+
*/
|
|
18
|
+
export const HvacEquipmentNode = BaseNode.extend({
|
|
19
|
+
id: objectId('hvac-equipment'),
|
|
20
|
+
type: nodeType('hvac-equipment'),
|
|
21
|
+
// Level-local meters, y at the unit's base.
|
|
22
|
+
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
23
|
+
// Yaw in radians.
|
|
24
|
+
rotation: z.number().default(0),
|
|
25
|
+
equipmentType: z.enum(['furnace', 'air-handler', 'condenser']).default('furnace'),
|
|
26
|
+
// Cabinet dimensions in meters. Defaults match a typical upflow
|
|
27
|
+
// furnace cabinet (~22" × 28" footprint, ~43" tall).
|
|
28
|
+
width: z.number().min(0.3).max(2).default(0.56),
|
|
29
|
+
depth: z.number().min(0.3).max(2).default(0.71),
|
|
30
|
+
height: z.number().min(0.4).max(2.5).default(1.1),
|
|
31
|
+
// Duct collar cross-section on the supply / return connections. Round is
|
|
32
|
+
// the default; rect and oval (flat-oval) match the duct shapes a run
|
|
33
|
+
// might mate with. Condensers carry no duct collars (ignored).
|
|
34
|
+
supplyShape: z.enum(['round', 'rect', 'oval']).default('round'),
|
|
35
|
+
returnShape: z.enum(['round', 'rect', 'oval']).default('round'),
|
|
36
|
+
// Round collar diameters in inches.
|
|
37
|
+
supplyDiameter: z.number().min(6).max(30).default(8),
|
|
38
|
+
returnDiameter: z.number().min(6).max(30).default(8),
|
|
39
|
+
// Rect / oval collar cross-section in inches: width is the horizontal
|
|
40
|
+
// face, height the vertical. For oval, height is also the end-cap
|
|
41
|
+
// semicircle diameter (width ≥ height).
|
|
42
|
+
supplyWidth: z.number().min(6).max(30).default(12),
|
|
43
|
+
supplyHeight: z.number().min(6).max(30).default(8),
|
|
44
|
+
returnWidth: z.number().min(6).max(30).default(14),
|
|
45
|
+
returnHeight: z.number().min(6).max(30).default(8),
|
|
46
|
+
}).describe(dedent `
|
|
47
|
+
HVAC equipment cabinet - furnace, air handler, or outdoor condenser.
|
|
48
|
+
- position: [x, y, z] level-local meters (y = base)
|
|
49
|
+
- rotation: yaw radians
|
|
50
|
+
- equipmentType: furnace | air-handler | condenser
|
|
51
|
+
- width / depth / height: cabinet size in meters
|
|
52
|
+
- supplyShape / returnShape: round | rect | oval duct collar cross-section (ignored by condenser)
|
|
53
|
+
- supplyDiameter / returnDiameter: round collar sizes in inches
|
|
54
|
+
- supplyWidth / supplyHeight / returnWidth / returnHeight: rect / oval collar cross-section in inches
|
|
55
|
+
`);
|
|
@@ -157,7 +157,9 @@ declare const assetSchema: z.ZodObject<{
|
|
|
157
157
|
ceiling: "ceiling";
|
|
158
158
|
"wall-side": "wall-side";
|
|
159
159
|
}>>;
|
|
160
|
+
recessed: z.ZodOptional<z.ZodBoolean>;
|
|
160
161
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
162
|
+
functionTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
161
163
|
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
162
164
|
rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
163
165
|
scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
@@ -239,7 +241,15 @@ export declare const ItemNode: z.ZodObject<{
|
|
|
239
241
|
children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
|
|
240
242
|
wallId: z.ZodOptional<z.ZodString>;
|
|
241
243
|
wallT: z.ZodOptional<z.ZodNumber>;
|
|
244
|
+
roofSegmentId: z.ZodOptional<z.ZodString>;
|
|
245
|
+
roofFace: z.ZodOptional<z.ZodEnum<{
|
|
246
|
+
front: "front";
|
|
247
|
+
back: "back";
|
|
248
|
+
right: "right";
|
|
249
|
+
left: "left";
|
|
250
|
+
}>>;
|
|
242
251
|
collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
|
|
252
|
+
slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
243
253
|
asset: z.ZodObject<{
|
|
244
254
|
id: z.ZodString;
|
|
245
255
|
category: z.ZodString;
|
|
@@ -259,7 +269,9 @@ export declare const ItemNode: z.ZodObject<{
|
|
|
259
269
|
ceiling: "ceiling";
|
|
260
270
|
"wall-side": "wall-side";
|
|
261
271
|
}>>;
|
|
272
|
+
recessed: z.ZodOptional<z.ZodBoolean>;
|
|
262
273
|
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
274
|
+
functionTags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
263
275
|
offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
264
276
|
rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
265
277
|
scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,QAAA,MAAM,mBAAmB;;;;iBAIvB,CAAA;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;iBASvB,CAAA;AAEF,QAAA,MAAM,wBAAwB;;;;;;;;;;iBAO5B,CAAA;AAEF,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAIjB,CAAA;AAIF,QAAA,MAAM,qBAAqB;;;;;;;iBAOzB,CAAA;AAEF,QAAA,MAAM,iBAAiB;;;;;;iBAMrB,CAAA;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;2BAA2E,CAAA;AAI7F,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGrB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AACzE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AACnD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAC3D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,QAAA,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,QAAA,MAAM,mBAAmB;;;;iBAIvB,CAAA;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;iBASvB,CAAA;AAEF,QAAA,MAAM,wBAAwB;;;;;;;;;;iBAO5B,CAAA;AAEF,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAIjB,CAAA;AAIF,QAAA,MAAM,qBAAqB;;;;;;;iBAOzB,CAAA;AAEF,QAAA,MAAM,iBAAiB;;;;;;iBAMrB,CAAA;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;2BAA2E,CAAA;AAI7F,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGrB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AACzE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AACnD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAC3D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2Cf,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AACpD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAE/C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCnB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAM/D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAI5E"}
|