@pascal-app/core 0.9.1 → 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -10
- package/dist/events/bus.d.ts +49 -2
- 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 +8 -1
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
- package/dist/hooks/scene-registry/scene-registry.js +27 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +17 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.js +61 -8
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +135 -28
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +427 -271
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +46 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +208 -9
- package/dist/hooks/spatial-grid/support-host-id.d.ts +3 -0
- package/dist/hooks/spatial-grid/support-host-id.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/support-host-id.js +2 -0
- package/dist/hooks/spatial-grid/support-host-patch.d.ts +51 -0
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/support-host-patch.js +164 -0
- package/dist/index.d.ts +33 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -10
- 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 +23 -0
- package/dist/lib/measurement-geometry.d.ts.map +1 -0
- package/dist/lib/measurement-geometry.js +249 -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/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 +557 -31
- 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.d.ts +40 -6
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +574 -192
- package/dist/lib/terrain-brush.d.ts +163 -0
- package/dist/lib/terrain-brush.d.ts.map +1 -0
- package/dist/lib/terrain-brush.js +359 -0
- package/dist/lib/terrain-codec.d.ts +51 -0
- package/dist/lib/terrain-codec.d.ts.map +1 -0
- package/dist/lib/terrain-codec.js +167 -0
- package/dist/lib/terrain-field.d.ts +150 -0
- package/dist/lib/terrain-field.d.ts.map +1 -0
- package/dist/lib/terrain-field.js +248 -0
- package/dist/lib/terrain-raycast.d.ts +44 -0
- package/dist/lib/terrain-raycast.d.ts.map +1 -0
- package/dist/lib/terrain-raycast.js +188 -0
- package/dist/lib/terrain-source.d.ts +60 -0
- package/dist/lib/terrain-source.d.ts.map +1 -0
- package/dist/lib/terrain-source.js +90 -0
- package/dist/lib/terrain-support.d.ts +60 -0
- package/dist/lib/terrain-support.d.ts.map +1 -0
- package/dist/lib/terrain-support.js +150 -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 +428 -0
- package/dist/material-library.d.ts +28 -1
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +2233 -441
- package/dist/registry/handles.d.ts +91 -3
- package/dist/registry/handles.d.ts.map +1 -1
- package/dist/registry/index.d.ts +3 -3
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/registry.d.ts +46 -3
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +82 -1
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +8 -1
- package/dist/registry/types.d.ts +781 -39
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/index.d.ts +27 -8
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +23 -6
- package/dist/schema/material.d.ts +3 -2
- package/dist/schema/material.d.ts.map +1 -1
- package/dist/schema/material.js +7 -5
- package/dist/schema/nodes/box-vent.d.ts +2 -2
- package/dist/schema/nodes/cabinet.d.ts +536 -0
- package/dist/schema/nodes/cabinet.d.ts.map +1 -0
- package/dist/schema/nodes/cabinet.js +139 -0
- package/dist/schema/nodes/ceiling.d.ts +4 -3
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +11 -1
- package/dist/schema/nodes/chimney.d.ts +4 -4
- package/dist/schema/nodes/column.d.ts +4 -2
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +5 -0
- package/dist/schema/nodes/construction-dimension.d.ts +195 -0
- package/dist/schema/nodes/construction-dimension.d.ts.map +1 -0
- package/dist/schema/nodes/construction-dimension.js +151 -0
- package/dist/schema/nodes/cupola.d.ts +2 -2
- package/dist/schema/nodes/door.d.ts +42 -5
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +32 -0
- package/dist/schema/nodes/dormer.d.ts +8 -8
- package/dist/schema/nodes/dormer.js +1 -1
- package/dist/schema/nodes/downspout.d.ts +2 -2
- 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 +58 -0
- package/dist/schema/nodes/duct-terminal.d.ts.map +1 -0
- package/dist/schema/nodes/duct-terminal.js +53 -0
- package/dist/schema/nodes/elevator.d.ts +3 -2
- package/dist/schema/nodes/elevator.d.ts.map +1 -1
- package/dist/schema/nodes/elevator.js +3 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts +2 -2
- package/dist/schema/nodes/fence.d.ts +20 -2
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +33 -2
- package/dist/schema/nodes/gutter.d.ts +2 -2
- package/dist/schema/nodes/hvac-equipment.d.ts +64 -0
- package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -0
- package/dist/schema/nodes/hvac-equipment.js +57 -0
- package/dist/schema/nodes/item.d.ts +9 -0
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +24 -0
- package/dist/schema/nodes/level.d.ts +2 -1
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/level.js +12 -31
- 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/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.d.ts +18 -3
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.js +221 -3
- 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-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.d.ts +84 -8
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +290 -5
- package/dist/schema/nodes/roof.d.ts +8 -8
- package/dist/schema/nodes/shelf.d.ts +4 -2
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/shelf.js +8 -0
- package/dist/schema/nodes/site.d.ts +9 -0
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +8 -6
- package/dist/schema/nodes/skylight.d.ts +10 -10
- package/dist/schema/nodes/slab.d.ts +8 -2
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +18 -2
- package/dist/schema/nodes/solar-panel.d.ts +4 -4
- package/dist/schema/nodes/spawn.d.ts +1 -0
- package/dist/schema/nodes/spawn.d.ts.map +1 -1
- package/dist/schema/nodes/spawn.js +2 -0
- package/dist/schema/nodes/stair-segment.d.ts +4 -4
- package/dist/schema/nodes/stair.d.ts +16 -13
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +11 -1
- package/dist/schema/nodes/structural-grid.d.ts +27 -0
- package/dist/schema/nodes/structural-grid.d.ts.map +1 -0
- package/dist/schema/nodes/structural-grid.js +17 -0
- package/dist/schema/nodes/turbine-vent.d.ts +2 -2
- package/dist/schema/nodes/wall.d.ts +248 -6
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +266 -0
- package/dist/schema/nodes/window.d.ts +40 -3
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +30 -0
- package/dist/schema/nodes/zone.d.ts +22 -0
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +21 -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/terrain.d.ts +28 -0
- package/dist/schema/terrain.d.ts.map +1 -0
- package/dist/schema/terrain.js +30 -0
- package/dist/schema/types.d.ts +1300 -97
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +27 -0
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts +80 -0
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -0
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.js +89 -0
- package/dist/services/alignment-anchors.d.ts.map +1 -1
- package/dist/services/alignment-anchors.js +30 -1
- package/dist/services/alignment.d.ts +5 -0
- package/dist/services/alignment.d.ts.map +1 -1
- package/dist/services/alignment.js +2 -0
- package/dist/services/hosting.d.ts +8 -0
- package/dist/services/hosting.d.ts.map +1 -1
- package/dist/services/hosting.js +13 -4
- package/dist/services/index.d.ts +9 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +9 -2
- package/dist/services/level-height.d.ts +27 -0
- package/dist/services/level-height.d.ts.map +1 -0
- package/dist/services/level-height.js +94 -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/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/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/snap.d.ts +9 -1
- package/dist/services/snap.d.ts.map +1 -1
- package/dist/services/snap.js +21 -1
- package/dist/services/storey.d.ts +103 -0
- package/dist/services/storey.d.ts.map +1 -0
- package/dist/services/storey.js +296 -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/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/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +141 -4
- package/dist/store/history-control.d.ts +31 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +130 -0
- package/dist/store/use-live-terrain.d.ts +65 -0
- package/dist/store/use-live-terrain.d.ts.map +1 -0
- package/dist/store/use-live-terrain.js +31 -0
- package/dist/store/use-live-transforms.d.ts +8 -0
- package/dist/store/use-live-transforms.d.ts.map +1 -1
- package/dist/store/use-scene.d.ts +47 -3
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +992 -55
- package/dist/systems/elevator/elevator-opening-system.d.ts +1 -0
- package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-system.js +27 -21
- package/dist/systems/elevator/elevator-service.d.ts +0 -2
- package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-service.js +2 -24
- 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/slab/slab-placement.d.ts +11 -0
- package/dist/systems/slab/slab-placement.d.ts.map +1 -0
- package/dist/systems/slab/slab-placement.js +14 -0
- package/dist/systems/slab/slab-support.d.ts +137 -0
- package/dist/systems/slab/slab-support.d.ts.map +1 -0
- package/dist/systems/slab/slab-support.js +557 -0
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +21 -11
- package/dist/systems/stair/stair-opening-preview.d.ts +1300 -505
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.js +19 -33
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.js +32 -4
- package/dist/systems/stair/stair-rise.d.ts +22 -0
- package/dist/systems/stair/stair-rise.d.ts.map +1 -0
- package/dist/systems/stair/stair-rise.js +79 -0
- package/dist/systems/wall/wall-curve.d.ts +10 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +1 -1
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +44 -8
- package/dist/systems/wall/wall-top.d.ts +40 -0
- package/dist/systems/wall/wall-top.d.ts.map +1 -0
- package/dist/systems/wall/wall-top.js +46 -0
- package/dist/utils/clone-scene-graph.d.ts +1 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +56 -5
- 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 +106 -0
- package/dist/validation/validate-build-json.d.ts +3 -0
- package/dist/validation/validate-build-json.d.ts.map +1 -1
- package/dist/validation/validate-build-json.js +90 -5
- package/package.json +4 -4
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts +0 -2
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts.map +0 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.test.js +0 -273
- package/dist/lib/space-detection-pause.test.d.ts +0 -2
- package/dist/lib/space-detection-pause.test.d.ts.map +0 -1
- package/dist/lib/space-detection-pause.test.js +0 -42
- package/dist/lib/space-detection.test.d.ts +0 -2
- package/dist/lib/space-detection.test.d.ts.map +0 -1
- package/dist/lib/space-detection.test.js +0 -77
- package/dist/registry/registry.test.d.ts +0 -2
- package/dist/registry/registry.test.d.ts.map +0 -1
- package/dist/registry/registry.test.js +0 -183
- package/dist/registry/relations-resolver.test.d.ts +0 -2
- package/dist/registry/relations-resolver.test.d.ts.map +0 -1
- package/dist/registry/relations-resolver.test.js +0 -183
- package/dist/registry/scene-api.test.d.ts +0 -2
- package/dist/registry/scene-api.test.d.ts.map +0 -1
- package/dist/registry/scene-api.test.js +0 -183
- package/dist/registry/subtree.test.d.ts +0 -2
- package/dist/registry/subtree.test.d.ts.map +0 -1
- package/dist/registry/subtree.test.js +0 -133
- package/dist/schema/asset-url.test.d.ts +0 -2
- package/dist/schema/asset-url.test.d.ts.map +0 -1
- package/dist/schema/asset-url.test.js +0 -134
- package/dist/services/alignment-anchors.test.d.ts +0 -2
- package/dist/services/alignment-anchors.test.d.ts.map +0 -1
- package/dist/services/alignment-anchors.test.js +0 -383
- package/dist/services/alignment.test.d.ts +0 -2
- package/dist/services/alignment.test.d.ts.map +0 -1
- package/dist/services/alignment.test.js +0 -92
- package/dist/services/drag-session.test.d.ts +0 -2
- package/dist/services/drag-session.test.d.ts.map +0 -1
- package/dist/services/drag-session.test.js +0 -219
- package/dist/services/hosting.test.d.ts +0 -2
- package/dist/services/hosting.test.d.ts.map +0 -1
- package/dist/services/hosting.test.js +0 -199
- package/dist/services/movement.test.d.ts +0 -2
- package/dist/services/movement.test.d.ts.map +0 -1
- package/dist/services/movement.test.js +0 -133
- package/dist/services/single-undo-dance.test.d.ts +0 -2
- package/dist/services/single-undo-dance.test.d.ts.map +0 -1
- package/dist/services/single-undo-dance.test.js +0 -210
- package/dist/services/snap.test.d.ts +0 -2
- package/dist/services/snap.test.d.ts.map +0 -1
- package/dist/services/snap.test.js +0 -95
- package/dist/store/actions/node-mutation-sanitize.test.d.ts +0 -2
- package/dist/store/actions/node-mutation-sanitize.test.d.ts.map +0 -1
- package/dist/store/actions/node-mutation-sanitize.test.js +0 -147
- package/dist/store/actions/reparent.test.d.ts +0 -2
- package/dist/store/actions/reparent.test.d.ts.map +0 -1
- package/dist/store/actions/reparent.test.js +0 -212
- package/dist/store/use-scene-elevator-migration.test.d.ts +0 -2
- package/dist/store/use-scene-elevator-migration.test.d.ts.map +0 -1
- package/dist/store/use-scene-elevator-migration.test.js +0 -109
- package/dist/systems/elevator/elevator-opening-sync.test.d.ts +0 -2
- package/dist/systems/elevator/elevator-opening-sync.test.d.ts.map +0 -1
- package/dist/systems/elevator/elevator-opening-sync.test.js +0 -146
- package/dist/systems/elevator/elevator-runtime.test.d.ts +0 -2
- package/dist/systems/elevator/elevator-runtime.test.d.ts.map +0 -1
- package/dist/systems/elevator/elevator-runtime.test.js +0 -64
- package/dist/systems/stair/stair-opening-preview.test.d.ts +0 -2
- package/dist/systems/stair/stair-opening-preview.test.d.ts.map +0 -1
- package/dist/systems/stair/stair-opening-preview.test.js +0 -80
- package/dist/systems/stair/stair-opening-sync.test.d.ts +0 -2
- package/dist/systems/stair/stair-opening-sync.test.d.ts.map +0 -1
- package/dist/systems/stair/stair-opening-sync.test.js +0 -446
- package/dist/utils/clone-scene-graph.test.d.ts +0 -2
- package/dist/utils/clone-scene-graph.test.d.ts.map +0 -1
- package/dist/utils/clone-scene-graph.test.js +0 -59
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const MeasurementPoint: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
3
|
+
export declare const MeasurementFeatureParameter: z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>;
|
|
4
|
+
export declare const MeasurementFeatureReference: z.ZodObject<{
|
|
5
|
+
nodeId: z.ZodString;
|
|
6
|
+
featureId: z.ZodString;
|
|
7
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
export declare const MeasurementFeatureAnchor: z.ZodObject<{
|
|
10
|
+
kind: z.ZodLiteral<"feature">;
|
|
11
|
+
reference: z.ZodObject<{
|
|
12
|
+
nodeId: z.ZodString;
|
|
13
|
+
featureId: z.ZodString;
|
|
14
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
/** A tuple is a free anchor and remains the compact legacy representation. */
|
|
19
|
+
export declare const MeasurementAnchor: z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
20
|
+
kind: z.ZodLiteral<"feature">;
|
|
21
|
+
reference: z.ZodObject<{
|
|
22
|
+
nodeId: z.ZodString;
|
|
23
|
+
featureId: z.ZodString;
|
|
24
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
27
|
+
}, z.core.$strip>]>;
|
|
28
|
+
export declare const DistanceMeasurement: z.ZodObject<{
|
|
29
|
+
kind: z.ZodLiteral<"distance">;
|
|
30
|
+
points: z.ZodTuple<[z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
31
|
+
kind: z.ZodLiteral<"feature">;
|
|
32
|
+
reference: z.ZodObject<{
|
|
33
|
+
nodeId: z.ZodString;
|
|
34
|
+
featureId: z.ZodString;
|
|
35
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
36
|
+
}, z.core.$strip>;
|
|
37
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
38
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
39
|
+
kind: z.ZodLiteral<"feature">;
|
|
40
|
+
reference: z.ZodObject<{
|
|
41
|
+
nodeId: z.ZodString;
|
|
42
|
+
featureId: z.ZodString;
|
|
43
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
46
|
+
}, z.core.$strip>]>], null>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export declare const AngleMeasurement: z.ZodObject<{
|
|
49
|
+
kind: z.ZodLiteral<"angle">;
|
|
50
|
+
points: z.ZodTuple<[z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
51
|
+
kind: z.ZodLiteral<"feature">;
|
|
52
|
+
reference: z.ZodObject<{
|
|
53
|
+
nodeId: z.ZodString;
|
|
54
|
+
featureId: z.ZodString;
|
|
55
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
58
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
59
|
+
kind: z.ZodLiteral<"feature">;
|
|
60
|
+
reference: z.ZodObject<{
|
|
61
|
+
nodeId: z.ZodString;
|
|
62
|
+
featureId: z.ZodString;
|
|
63
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
64
|
+
}, z.core.$strip>;
|
|
65
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
66
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
67
|
+
kind: z.ZodLiteral<"feature">;
|
|
68
|
+
reference: z.ZodObject<{
|
|
69
|
+
nodeId: z.ZodString;
|
|
70
|
+
featureId: z.ZodString;
|
|
71
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
72
|
+
}, z.core.$strip>;
|
|
73
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
74
|
+
}, z.core.$strip>]>], null>;
|
|
75
|
+
}, z.core.$strip>;
|
|
76
|
+
export declare const AreaMeasurement: z.ZodObject<{
|
|
77
|
+
kind: z.ZodLiteral<"area">;
|
|
78
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
79
|
+
kind: z.ZodLiteral<"feature">;
|
|
80
|
+
reference: z.ZodObject<{
|
|
81
|
+
nodeId: z.ZodString;
|
|
82
|
+
featureId: z.ZodString;
|
|
83
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
86
|
+
}, z.core.$strip>]>>;
|
|
87
|
+
}, z.core.$strip>;
|
|
88
|
+
export declare const PerimeterMeasurement: z.ZodObject<{
|
|
89
|
+
kind: z.ZodLiteral<"perimeter">;
|
|
90
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
91
|
+
kind: z.ZodLiteral<"feature">;
|
|
92
|
+
reference: z.ZodObject<{
|
|
93
|
+
nodeId: z.ZodString;
|
|
94
|
+
featureId: z.ZodString;
|
|
95
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
96
|
+
}, z.core.$strip>;
|
|
97
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
98
|
+
}, z.core.$strip>]>>;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
export declare const VolumeMeasurement: z.ZodObject<{
|
|
101
|
+
kind: z.ZodLiteral<"volume">;
|
|
102
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
103
|
+
kind: z.ZodLiteral<"feature">;
|
|
104
|
+
reference: z.ZodObject<{
|
|
105
|
+
nodeId: z.ZodString;
|
|
106
|
+
featureId: z.ZodString;
|
|
107
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
108
|
+
}, z.core.$strip>;
|
|
109
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
110
|
+
}, z.core.$strip>]>>;
|
|
111
|
+
extrusion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
112
|
+
}, z.core.$strip>;
|
|
113
|
+
export declare const MeasurementPayload: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
114
|
+
kind: z.ZodLiteral<"distance">;
|
|
115
|
+
points: z.ZodTuple<[z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
116
|
+
kind: z.ZodLiteral<"feature">;
|
|
117
|
+
reference: z.ZodObject<{
|
|
118
|
+
nodeId: z.ZodString;
|
|
119
|
+
featureId: z.ZodString;
|
|
120
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
121
|
+
}, z.core.$strip>;
|
|
122
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
123
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
124
|
+
kind: z.ZodLiteral<"feature">;
|
|
125
|
+
reference: z.ZodObject<{
|
|
126
|
+
nodeId: z.ZodString;
|
|
127
|
+
featureId: z.ZodString;
|
|
128
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
129
|
+
}, z.core.$strip>;
|
|
130
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
131
|
+
}, z.core.$strip>]>], null>;
|
|
132
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
133
|
+
kind: z.ZodLiteral<"angle">;
|
|
134
|
+
points: z.ZodTuple<[z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
135
|
+
kind: z.ZodLiteral<"feature">;
|
|
136
|
+
reference: z.ZodObject<{
|
|
137
|
+
nodeId: z.ZodString;
|
|
138
|
+
featureId: z.ZodString;
|
|
139
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
140
|
+
}, z.core.$strip>;
|
|
141
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
142
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
143
|
+
kind: z.ZodLiteral<"feature">;
|
|
144
|
+
reference: z.ZodObject<{
|
|
145
|
+
nodeId: z.ZodString;
|
|
146
|
+
featureId: z.ZodString;
|
|
147
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
148
|
+
}, z.core.$strip>;
|
|
149
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
150
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
151
|
+
kind: z.ZodLiteral<"feature">;
|
|
152
|
+
reference: z.ZodObject<{
|
|
153
|
+
nodeId: z.ZodString;
|
|
154
|
+
featureId: z.ZodString;
|
|
155
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
156
|
+
}, z.core.$strip>;
|
|
157
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
158
|
+
}, z.core.$strip>]>], null>;
|
|
159
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
160
|
+
kind: z.ZodLiteral<"area">;
|
|
161
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
162
|
+
kind: z.ZodLiteral<"feature">;
|
|
163
|
+
reference: z.ZodObject<{
|
|
164
|
+
nodeId: z.ZodString;
|
|
165
|
+
featureId: z.ZodString;
|
|
166
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
167
|
+
}, z.core.$strip>;
|
|
168
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
169
|
+
}, z.core.$strip>]>>;
|
|
170
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
171
|
+
kind: z.ZodLiteral<"perimeter">;
|
|
172
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
173
|
+
kind: z.ZodLiteral<"feature">;
|
|
174
|
+
reference: z.ZodObject<{
|
|
175
|
+
nodeId: z.ZodString;
|
|
176
|
+
featureId: z.ZodString;
|
|
177
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
178
|
+
}, z.core.$strip>;
|
|
179
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
180
|
+
}, z.core.$strip>]>>;
|
|
181
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
182
|
+
kind: z.ZodLiteral<"volume">;
|
|
183
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
184
|
+
kind: z.ZodLiteral<"feature">;
|
|
185
|
+
reference: z.ZodObject<{
|
|
186
|
+
nodeId: z.ZodString;
|
|
187
|
+
featureId: z.ZodString;
|
|
188
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
189
|
+
}, z.core.$strip>;
|
|
190
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
191
|
+
}, z.core.$strip>]>>;
|
|
192
|
+
extrusion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
193
|
+
}, z.core.$strip>], "kind">;
|
|
194
|
+
export declare const MeasurementNode: z.ZodObject<{
|
|
195
|
+
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
196
|
+
name: z.ZodOptional<z.ZodString>;
|
|
197
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
198
|
+
visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
199
|
+
camera: z.ZodOptional<z.ZodObject<{
|
|
200
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
201
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
202
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
203
|
+
perspective: "perspective";
|
|
204
|
+
orthographic: "orthographic";
|
|
205
|
+
}>>;
|
|
206
|
+
fov: z.ZodOptional<z.ZodNumber>;
|
|
207
|
+
zoom: z.ZodOptional<z.ZodNumber>;
|
|
208
|
+
}, z.core.$strip>>;
|
|
209
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
210
|
+
id: z.ZodDefault<z.ZodTemplateLiteral<`measurement_${string}`>>;
|
|
211
|
+
type: z.ZodDefault<z.ZodLiteral<"measurement">>;
|
|
212
|
+
measurement: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
213
|
+
kind: z.ZodLiteral<"distance">;
|
|
214
|
+
points: z.ZodTuple<[z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
215
|
+
kind: z.ZodLiteral<"feature">;
|
|
216
|
+
reference: z.ZodObject<{
|
|
217
|
+
nodeId: z.ZodString;
|
|
218
|
+
featureId: z.ZodString;
|
|
219
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
220
|
+
}, z.core.$strip>;
|
|
221
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
222
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
223
|
+
kind: z.ZodLiteral<"feature">;
|
|
224
|
+
reference: z.ZodObject<{
|
|
225
|
+
nodeId: z.ZodString;
|
|
226
|
+
featureId: z.ZodString;
|
|
227
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
228
|
+
}, z.core.$strip>;
|
|
229
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
230
|
+
}, z.core.$strip>]>], null>;
|
|
231
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
232
|
+
kind: z.ZodLiteral<"angle">;
|
|
233
|
+
points: z.ZodTuple<[z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
234
|
+
kind: z.ZodLiteral<"feature">;
|
|
235
|
+
reference: z.ZodObject<{
|
|
236
|
+
nodeId: z.ZodString;
|
|
237
|
+
featureId: z.ZodString;
|
|
238
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
239
|
+
}, z.core.$strip>;
|
|
240
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
241
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
242
|
+
kind: z.ZodLiteral<"feature">;
|
|
243
|
+
reference: z.ZodObject<{
|
|
244
|
+
nodeId: z.ZodString;
|
|
245
|
+
featureId: z.ZodString;
|
|
246
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
247
|
+
}, z.core.$strip>;
|
|
248
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
249
|
+
}, z.core.$strip>]>, z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
250
|
+
kind: z.ZodLiteral<"feature">;
|
|
251
|
+
reference: z.ZodObject<{
|
|
252
|
+
nodeId: z.ZodString;
|
|
253
|
+
featureId: z.ZodString;
|
|
254
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
255
|
+
}, z.core.$strip>;
|
|
256
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
257
|
+
}, z.core.$strip>]>], null>;
|
|
258
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
259
|
+
kind: z.ZodLiteral<"area">;
|
|
260
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
261
|
+
kind: z.ZodLiteral<"feature">;
|
|
262
|
+
reference: z.ZodObject<{
|
|
263
|
+
nodeId: z.ZodString;
|
|
264
|
+
featureId: z.ZodString;
|
|
265
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
266
|
+
}, z.core.$strip>;
|
|
267
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
268
|
+
}, z.core.$strip>]>>;
|
|
269
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
270
|
+
kind: z.ZodLiteral<"perimeter">;
|
|
271
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
272
|
+
kind: z.ZodLiteral<"feature">;
|
|
273
|
+
reference: z.ZodObject<{
|
|
274
|
+
nodeId: z.ZodString;
|
|
275
|
+
featureId: z.ZodString;
|
|
276
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
277
|
+
}, z.core.$strip>;
|
|
278
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
279
|
+
}, z.core.$strip>]>>;
|
|
280
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
281
|
+
kind: z.ZodLiteral<"volume">;
|
|
282
|
+
base: z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
283
|
+
kind: z.ZodLiteral<"feature">;
|
|
284
|
+
reference: z.ZodObject<{
|
|
285
|
+
nodeId: z.ZodString;
|
|
286
|
+
featureId: z.ZodString;
|
|
287
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
288
|
+
}, z.core.$strip>;
|
|
289
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
290
|
+
}, z.core.$strip>]>>;
|
|
291
|
+
extrusion: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
292
|
+
}, z.core.$strip>], "kind">;
|
|
293
|
+
}, z.core.$strip>;
|
|
294
|
+
export type MeasurementPoint = z.infer<typeof MeasurementPoint>;
|
|
295
|
+
export type MeasurementFeatureParameter = z.infer<typeof MeasurementFeatureParameter>;
|
|
296
|
+
export type MeasurementFeatureReference = z.infer<typeof MeasurementFeatureReference>;
|
|
297
|
+
export type MeasurementFeatureAnchor = z.infer<typeof MeasurementFeatureAnchor>;
|
|
298
|
+
export type MeasurementAnchor = z.infer<typeof MeasurementAnchor>;
|
|
299
|
+
export type DistanceMeasurement = z.infer<typeof DistanceMeasurement>;
|
|
300
|
+
export type AngleMeasurement = z.infer<typeof AngleMeasurement>;
|
|
301
|
+
export type AreaMeasurement = z.infer<typeof AreaMeasurement>;
|
|
302
|
+
export type PerimeterMeasurement = z.infer<typeof PerimeterMeasurement>;
|
|
303
|
+
export type VolumeMeasurement = z.infer<typeof VolumeMeasurement>;
|
|
304
|
+
export type MeasurementPayload = z.infer<typeof MeasurementPayload>;
|
|
305
|
+
export type MeasurementNode = z.infer<typeof MeasurementNode>;
|
|
306
|
+
//# sourceMappingURL=measurement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measurement.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/measurement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,gBAAgB,2DAAkE,CAAA;AAE/F,eAAO,MAAM,2BAA2B,+DAAuD,CAAA;AAE/F,eAAO,MAAM,2BAA2B;;;;iBAItC,CAAA;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;iBAInC,CAAA;AAEF,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB;;;;;;;;mBAAwD,CAAA;AAiBtF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;iBAG9B,CAAA;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG3B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;iBAG1B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;iBAG/B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;iBAsB1B,CAAA;AAEJ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAM7B,CAAA;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC/D,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AACrF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AACrF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAC/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AACjE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC7D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AACjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { areMeasurementPointsCoplanar, MEASUREMENT_PLANAR_TOLERANCE, measurementNormal, } from '../../lib/measurement-geometry';
|
|
4
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
5
|
+
const FiniteCoordinate = z.number().finite();
|
|
6
|
+
export const MeasurementPoint = z.tuple([FiniteCoordinate, FiniteCoordinate, FiniteCoordinate]);
|
|
7
|
+
export const MeasurementFeatureParameter = z.union([z.string(), z.boolean(), FiniteCoordinate]);
|
|
8
|
+
export const MeasurementFeatureReference = z.object({
|
|
9
|
+
nodeId: z.string().min(1),
|
|
10
|
+
featureId: z.string().min(1),
|
|
11
|
+
parameters: z.record(z.string(), MeasurementFeatureParameter).optional(),
|
|
12
|
+
});
|
|
13
|
+
export const MeasurementFeatureAnchor = z.object({
|
|
14
|
+
kind: z.literal('feature'),
|
|
15
|
+
reference: MeasurementFeatureReference,
|
|
16
|
+
fallback: MeasurementPoint,
|
|
17
|
+
});
|
|
18
|
+
/** A tuple is a free anchor and remains the compact legacy representation. */
|
|
19
|
+
export const MeasurementAnchor = z.union([MeasurementPoint, MeasurementFeatureAnchor]);
|
|
20
|
+
const fallbackPoint = (anchor) => Array.isArray(anchor) ? anchor : anchor.fallback;
|
|
21
|
+
const PlanarMeasurementBase = z
|
|
22
|
+
.array(MeasurementAnchor)
|
|
23
|
+
.min(3)
|
|
24
|
+
.superRefine((anchors, ctx) => {
|
|
25
|
+
if (!areMeasurementPointsCoplanar(anchors.map(fallbackPoint), MEASUREMENT_PLANAR_TOLERANCE)) {
|
|
26
|
+
ctx.addIssue({
|
|
27
|
+
code: 'custom',
|
|
28
|
+
message: 'Measurement base must be planar and enclose an area',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
export const DistanceMeasurement = z.object({
|
|
33
|
+
kind: z.literal('distance'),
|
|
34
|
+
points: z.tuple([MeasurementAnchor, MeasurementAnchor]),
|
|
35
|
+
});
|
|
36
|
+
export const AngleMeasurement = z.object({
|
|
37
|
+
kind: z.literal('angle'),
|
|
38
|
+
points: z.tuple([MeasurementAnchor, MeasurementAnchor, MeasurementAnchor]),
|
|
39
|
+
});
|
|
40
|
+
export const AreaMeasurement = z.object({
|
|
41
|
+
kind: z.literal('area'),
|
|
42
|
+
base: PlanarMeasurementBase,
|
|
43
|
+
});
|
|
44
|
+
export const PerimeterMeasurement = z.object({
|
|
45
|
+
kind: z.literal('perimeter'),
|
|
46
|
+
base: PlanarMeasurementBase,
|
|
47
|
+
});
|
|
48
|
+
export const VolumeMeasurement = z
|
|
49
|
+
.object({
|
|
50
|
+
kind: z.literal('volume'),
|
|
51
|
+
base: PlanarMeasurementBase,
|
|
52
|
+
extrusion: MeasurementPoint,
|
|
53
|
+
})
|
|
54
|
+
.superRefine((measurement, ctx) => {
|
|
55
|
+
const normal = measurementNormal(measurement.base.map(fallbackPoint));
|
|
56
|
+
const normalComponent = normal
|
|
57
|
+
? Math.abs(normal[0] * measurement.extrusion[0] +
|
|
58
|
+
normal[1] * measurement.extrusion[1] +
|
|
59
|
+
normal[2] * measurement.extrusion[2])
|
|
60
|
+
: 0;
|
|
61
|
+
if (normalComponent <= 1e-9) {
|
|
62
|
+
ctx.addIssue({
|
|
63
|
+
code: 'custom',
|
|
64
|
+
path: ['extrusion'],
|
|
65
|
+
message: 'Measurement extrusion must have a non-zero normal component',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
export const MeasurementPayload = z.discriminatedUnion('kind', [
|
|
70
|
+
DistanceMeasurement,
|
|
71
|
+
AngleMeasurement,
|
|
72
|
+
AreaMeasurement,
|
|
73
|
+
PerimeterMeasurement,
|
|
74
|
+
VolumeMeasurement,
|
|
75
|
+
]);
|
|
76
|
+
export const MeasurementNode = BaseNode.extend({
|
|
77
|
+
id: objectId('measurement'),
|
|
78
|
+
type: nodeType('measurement'),
|
|
79
|
+
measurement: MeasurementPayload,
|
|
80
|
+
}).describe(dedent `
|
|
81
|
+
Measurement node - a persistent level-local 3D measurement annotation
|
|
82
|
+
- distance: exactly two level-local anchors
|
|
83
|
+
- angle: exactly three anchors, with the middle anchor as the vertex
|
|
84
|
+
- area/perimeter: an ordered planar base with at least three anchors
|
|
85
|
+
- volume: an ordered planar base with an extrusion vector
|
|
86
|
+
- an anchor is either a free point tuple or a semantic feature reference with a fallback
|
|
87
|
+
`);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* DWV pipe fitting — the joints drain systems are actually built from:
|
|
4
|
+
* elbows (bends), wyes (45° branch entries, the code-preferred way to
|
|
5
|
+
* join horizontal drains), sanitary tees (square branch entries), and
|
|
6
|
+
* crosses (two opposed branches where a run passes straight through).
|
|
7
|
+
*
|
|
8
|
+
* Local-frame conventions (before `rotation`):
|
|
9
|
+
* - elbow: inlet faces -X, outlet turned `angle`° in XZ.
|
|
10
|
+
* - wye: run along X (inlet -X, outlet +X), branch collar at
|
|
11
|
+
* 45° between +X and +Z.
|
|
12
|
+
* - sanitary-tee: run along X, branch collar faces +Z.
|
|
13
|
+
* - cross: run along X, two opposed branch collars on ±Z.
|
|
14
|
+
*/
|
|
15
|
+
export declare const PipeFittingNode: z.ZodObject<{
|
|
16
|
+
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
17
|
+
name: z.ZodOptional<z.ZodString>;
|
|
18
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
19
|
+
visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
20
|
+
camera: z.ZodOptional<z.ZodObject<{
|
|
21
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
22
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
23
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
24
|
+
perspective: "perspective";
|
|
25
|
+
orthographic: "orthographic";
|
|
26
|
+
}>>;
|
|
27
|
+
fov: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
zoom: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
}, z.core.$strip>>;
|
|
30
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
31
|
+
id: z.ZodDefault<z.ZodTemplateLiteral<`pipe-fitting_${string}`>>;
|
|
32
|
+
type: z.ZodDefault<z.ZodLiteral<"pipe-fitting">>;
|
|
33
|
+
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
34
|
+
rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
35
|
+
fittingType: z.ZodDefault<z.ZodEnum<{
|
|
36
|
+
elbow: "elbow";
|
|
37
|
+
cross: "cross";
|
|
38
|
+
wye: "wye";
|
|
39
|
+
"sanitary-tee": "sanitary-tee";
|
|
40
|
+
}>>;
|
|
41
|
+
angle: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
diameter: z.ZodDefault<z.ZodNumber>;
|
|
43
|
+
diameter2: z.ZodDefault<z.ZodNumber>;
|
|
44
|
+
pipeMaterial: z.ZodDefault<z.ZodEnum<{
|
|
45
|
+
pvc: "pvc";
|
|
46
|
+
abs: "abs";
|
|
47
|
+
"cast-iron": "cast-iron";
|
|
48
|
+
}>>;
|
|
49
|
+
system: z.ZodDefault<z.ZodEnum<{
|
|
50
|
+
waste: "waste";
|
|
51
|
+
vent: "vent";
|
|
52
|
+
}>>;
|
|
53
|
+
}, z.core.$strip>;
|
|
54
|
+
export type PipeFittingNode = z.infer<typeof PipeFittingNode>;
|
|
55
|
+
export type PipeFittingNodeId = PipeFittingNode['id'];
|
|
56
|
+
//# sourceMappingURL=pipe-fitting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-fitting.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/pipe-fitting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8B3B,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
/**
|
|
5
|
+
* DWV pipe fitting — the joints drain systems are actually built from:
|
|
6
|
+
* elbows (bends), wyes (45° branch entries, the code-preferred way to
|
|
7
|
+
* join horizontal drains), sanitary tees (square branch entries), and
|
|
8
|
+
* crosses (two opposed branches where a run passes straight through).
|
|
9
|
+
*
|
|
10
|
+
* Local-frame conventions (before `rotation`):
|
|
11
|
+
* - elbow: inlet faces -X, outlet turned `angle`° in XZ.
|
|
12
|
+
* - wye: run along X (inlet -X, outlet +X), branch collar at
|
|
13
|
+
* 45° between +X and +Z.
|
|
14
|
+
* - sanitary-tee: run along X, branch collar faces +Z.
|
|
15
|
+
* - cross: run along X, two opposed branch collars on ±Z.
|
|
16
|
+
*/
|
|
17
|
+
export const PipeFittingNode = BaseNode.extend({
|
|
18
|
+
id: objectId('pipe-fitting'),
|
|
19
|
+
type: nodeType('pipe-fitting'),
|
|
20
|
+
// Level-local meters.
|
|
21
|
+
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
22
|
+
// XYZ euler radians.
|
|
23
|
+
rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
24
|
+
fittingType: z.enum(['elbow', 'wye', 'sanitary-tee', 'cross']).default('elbow'),
|
|
25
|
+
// Elbow turn in degrees — DWV bends ship as 22.5 / 45 / 90 ("long
|
|
26
|
+
// sweep" for drains); adjustable range matches the duct elbow. 0° is a
|
|
27
|
+
// straight coupling — what an elbow flattens to when its run is dragged
|
|
28
|
+
// into line with the fixed collar.
|
|
29
|
+
angle: z.number().min(0).max(90).default(90),
|
|
30
|
+
// Run nominal size in inches.
|
|
31
|
+
diameter: z.number().min(1.25).max(8).default(2),
|
|
32
|
+
// Branch collar size (wye / sanitary-tee).
|
|
33
|
+
diameter2: z.number().min(1.25).max(8).default(2),
|
|
34
|
+
pipeMaterial: z.enum(['pvc', 'abs', 'cast-iron']).default('pvc'),
|
|
35
|
+
system: z.enum(['waste', 'vent']).default('waste'),
|
|
36
|
+
}).describe(dedent `
|
|
37
|
+
DWV pipe fitting - elbow (bend), wye (45° branch), sanitary tee (square branch), or cross (two opposed branches).
|
|
38
|
+
- position: [x, y, z] level-local meters
|
|
39
|
+
- rotation: [x, y, z] euler radians
|
|
40
|
+
- fittingType: elbow | wye | sanitary-tee | cross
|
|
41
|
+
- angle: elbow turn in degrees (22.5 / 45 / 90 typical)
|
|
42
|
+
- diameter: run size in inches; diameter2: branch collar size (both branches for a cross)
|
|
43
|
+
- pipeMaterial: pvc | abs | cast-iron
|
|
44
|
+
- system: waste | vent
|
|
45
|
+
`);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* DWV pipe segment — drain / waste / vent runs in US residential
|
|
4
|
+
* plumbing. Phase 2 of the distribution-system effort: the plumbing
|
|
5
|
+
* sibling of `duct-segment`, sharing the polyline model and the typed
|
|
6
|
+
* port machinery.
|
|
7
|
+
*
|
|
8
|
+
* The defining difference from ducts is SLOPE: drains must fall
|
|
9
|
+
* (IPC: ¼" per foot for pipes under 3", ⅛" allowed at 3"+). Slope is
|
|
10
|
+
* stored implicitly in the path's Y coordinates — the draw tool drops
|
|
11
|
+
* Y as you draw a waste run; vents run level or vertical.
|
|
12
|
+
*
|
|
13
|
+
* Path coordinates are level-local meters. Y may be negative (drains
|
|
14
|
+
* drop below the floor into the joist / crawl space).
|
|
15
|
+
*/
|
|
16
|
+
export declare const PipeSegmentNode: 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<`pipe-segment_${string}`>>;
|
|
33
|
+
type: z.ZodDefault<z.ZodLiteral<"pipe-segment">>;
|
|
34
|
+
path: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
35
|
+
diameter: z.ZodDefault<z.ZodNumber>;
|
|
36
|
+
pipeMaterial: z.ZodDefault<z.ZodEnum<{
|
|
37
|
+
pvc: "pvc";
|
|
38
|
+
abs: "abs";
|
|
39
|
+
"cast-iron": "cast-iron";
|
|
40
|
+
}>>;
|
|
41
|
+
system: z.ZodDefault<z.ZodEnum<{
|
|
42
|
+
waste: "waste";
|
|
43
|
+
vent: "vent";
|
|
44
|
+
}>>;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
export type PipeSegmentNode = z.infer<typeof PipeSegmentNode>;
|
|
47
|
+
export type PipeSegmentNodeId = PipeSegmentNode['id'];
|
|
48
|
+
//# sourceMappingURL=pipe-segment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-segment.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/pipe-segment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoB3B,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
/**
|
|
5
|
+
* DWV pipe segment — drain / waste / vent runs in US residential
|
|
6
|
+
* plumbing. Phase 2 of the distribution-system effort: the plumbing
|
|
7
|
+
* sibling of `duct-segment`, sharing the polyline model and the typed
|
|
8
|
+
* port machinery.
|
|
9
|
+
*
|
|
10
|
+
* The defining difference from ducts is SLOPE: drains must fall
|
|
11
|
+
* (IPC: ¼" per foot for pipes under 3", ⅛" allowed at 3"+). Slope is
|
|
12
|
+
* stored implicitly in the path's Y coordinates — the draw tool drops
|
|
13
|
+
* Y as you draw a waste run; vents run level or vertical.
|
|
14
|
+
*
|
|
15
|
+
* Path coordinates are level-local meters. Y may be negative (drains
|
|
16
|
+
* drop below the floor into the joist / crawl space).
|
|
17
|
+
*/
|
|
18
|
+
export const PipeSegmentNode = BaseNode.extend({
|
|
19
|
+
id: objectId('pipe-segment'),
|
|
20
|
+
type: nodeType('pipe-segment'),
|
|
21
|
+
// Polyline path in level-local meters. Minimum two points.
|
|
22
|
+
path: z.array(z.tuple([z.number(), z.number(), z.number()])).min(2),
|
|
23
|
+
// Nominal pipe size in inches. Residential DWV: 1¼ (lav tailpiece) to
|
|
24
|
+
// 4 (building drain); 6 covers oversized mains.
|
|
25
|
+
diameter: z.number().min(1.25).max(8).default(2),
|
|
26
|
+
pipeMaterial: z.enum(['pvc', 'abs', 'cast-iron']).default('pvc'),
|
|
27
|
+
// Which DWV role the run plays. Waste carries water (sloped); vent
|
|
28
|
+
// carries air (level or vertical, dashed in plan).
|
|
29
|
+
system: z.enum(['waste', 'vent']).default('waste'),
|
|
30
|
+
}).describe(dedent `
|
|
31
|
+
DWV pipe segment - drain / waste / vent run as a polyline of 3D points.
|
|
32
|
+
- path: list of [x, y, z] points in level-local meters (min 2; y may go below the floor)
|
|
33
|
+
- diameter: nominal size in inches (1.5 / 2 / 3 / 4 typical residential)
|
|
34
|
+
- pipeMaterial: pvc | abs | cast-iron
|
|
35
|
+
- system: waste (sloped drains) | vent (level / vertical air pipes)
|
|
36
|
+
`);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* DWV trap — the P-trap between a fixture and the waste system. Holds a
|
|
4
|
+
* water seal that blocks sewer gas; every drained fixture has exactly
|
|
5
|
+
* one. Modeled as an explicit fitting (not folded into the fixture) so
|
|
6
|
+
* the trap-arm rule (IPC 909.1 max developed length to the vent) has a
|
|
7
|
+
* node to attach to and the inspector can edit size + arm length.
|
|
8
|
+
*
|
|
9
|
+
* Local-frame convention (before `rotation`): inlet faces +Y (up, to
|
|
10
|
+
* the fixture tailpiece), outlet faces +X (the horizontal trap arm
|
|
11
|
+
* toward the vented waste line).
|
|
12
|
+
*/
|
|
13
|
+
export declare const PipeTrapNode: z.ZodObject<{
|
|
14
|
+
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
15
|
+
name: z.ZodOptional<z.ZodString>;
|
|
16
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
17
|
+
visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
18
|
+
camera: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
20
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
21
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
22
|
+
perspective: "perspective";
|
|
23
|
+
orthographic: "orthographic";
|
|
24
|
+
}>>;
|
|
25
|
+
fov: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
zoom: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
}, z.core.$strip>>;
|
|
28
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
29
|
+
id: z.ZodDefault<z.ZodTemplateLiteral<`pipe-trap_${string}`>>;
|
|
30
|
+
type: z.ZodDefault<z.ZodLiteral<"pipe-trap">>;
|
|
31
|
+
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
32
|
+
rotation: z.ZodDefault<z.ZodNumber>;
|
|
33
|
+
diameter: z.ZodDefault<z.ZodNumber>;
|
|
34
|
+
pipeMaterial: z.ZodDefault<z.ZodEnum<{
|
|
35
|
+
pvc: "pvc";
|
|
36
|
+
abs: "abs";
|
|
37
|
+
"cast-iron": "cast-iron";
|
|
38
|
+
}>>;
|
|
39
|
+
armLengthM: z.ZodDefault<z.ZodNumber>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
export type PipeTrapNode = z.infer<typeof PipeTrapNode>;
|
|
42
|
+
export type PipeTrapNodeId = PipeTrapNode['id'];
|
|
43
|
+
//# sourceMappingURL=pipe-trap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-trap.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/pipe-trap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBxB,CAAA;AACD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACvD,MAAM,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA"}
|