@pascal-app/core 0.9.2 → 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 +21 -2
- package/dist/events/bus.d.ts.map +1 -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 +116 -66
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +316 -441
- 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 +193 -12
- 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 +23 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -10
- package/dist/lib/measurement-geometry.d.ts +4 -0
- package/dist/lib/measurement-geometry.d.ts.map +1 -1
- package/dist/lib/measurement-geometry.js +27 -10
- package/dist/lib/slab-polygon.d.ts.map +1 -1
- package/dist/lib/slab-polygon.js +33 -1
- package/dist/lib/space-detection.d.ts +15 -4
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +174 -88
- 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/zone-quantities.d.ts +1 -1
- package/dist/lib/zone-quantities.d.ts.map +1 -1
- package/dist/lib/zone-quantities.js +311 -66
- package/dist/material-library.d.ts +9 -1
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +56 -4
- package/dist/registry/handles.d.ts +16 -1
- package/dist/registry/handles.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +5 -2
- package/dist/registry/types.d.ts +64 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/index.d.ts +6 -3
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +6 -3
- package/dist/schema/nodes/cabinet.d.ts +2 -0
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.js +4 -2
- package/dist/schema/nodes/ceiling.d.ts +1 -1
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +7 -1
- package/dist/schema/nodes/column.d.ts +1 -0
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +2 -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/door.d.ts +29 -0
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +20 -0
- package/dist/schema/nodes/duct-terminal.d.ts +1 -0
- package/dist/schema/nodes/duct-terminal.d.ts.map +1 -1
- package/dist/schema/nodes/duct-terminal.js +2 -0
- package/dist/schema/nodes/fence.d.ts +2 -0
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +8 -0
- package/dist/schema/nodes/hvac-equipment.d.ts +1 -0
- package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -1
- package/dist/schema/nodes/hvac-equipment.js +2 -0
- package/dist/schema/nodes/item.d.ts +1 -0
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +13 -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 -33
- package/dist/schema/nodes/shelf.d.ts +1 -0
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/shelf.js +2 -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/slab.d.ts +5 -0
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +14 -2
- 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.d.ts +3 -1
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +8 -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/wall.d.ts +5 -2
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +13 -4
- package/dist/schema/nodes/window.d.ts +29 -0
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +18 -0
- package/dist/schema/nodes/zone.d.ts +20 -0
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +15 -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 +211 -3
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +4 -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/index.d.ts +2 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -1
- package/dist/services/level-height.d.ts +8 -9
- package/dist/services/level-height.d.ts.map +1 -1
- package/dist/services/level-height.js +48 -16
- 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/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +47 -3
- package/dist/store/history-control.d.ts +20 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +110 -13
- 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 +31 -2
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +638 -8
- 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/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-opening-preview.d.ts +1060 -935
- 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 +18 -15
- 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.js +6 -6
- 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.map +1 -1
- package/dist/utils/clone-scene-graph.js +34 -3
- package/dist/utils/heal-scene-graph.d.ts +1 -1
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +25 -9
- package/dist/validation/validate-build-json.d.ts +2 -0
- package/dist/validation/validate-build-json.d.ts.map +1 -1
- package/dist/validation/validate-build-json.js +59 -3
- package/package.json +2 -2
- package/dist/hooks/scene-registry/scene-registry.test.d.ts +0 -2
- package/dist/hooks/scene-registry/scene-registry.test.d.ts.map +0 -1
- package/dist/hooks/scene-registry/scene-registry.test.js +0 -26
- 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 -366
- package/dist/hooks/spatial-grid/wall-slab-overlap.test.d.ts +0 -2
- package/dist/hooks/spatial-grid/wall-slab-overlap.test.d.ts.map +0 -1
- package/dist/hooks/spatial-grid/wall-slab-overlap.test.js +0 -363
- package/dist/lib/measurement-geometry.test.d.ts +0 -2
- package/dist/lib/measurement-geometry.test.d.ts.map +0 -1
- package/dist/lib/measurement-geometry.test.js +0 -102
- package/dist/lib/slab-polygon.test.d.ts +0 -2
- package/dist/lib/slab-polygon.test.d.ts.map +0 -1
- package/dist/lib/slab-polygon.test.js +0 -635
- 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 -376
- package/dist/lib/zone-quantities.test.d.ts +0 -2
- package/dist/lib/zone-quantities.test.d.ts.map +0 -1
- package/dist/lib/zone-quantities.test.js +0 -82
- 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 -196
- 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 -163
- 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/schema/material.test.d.ts +0 -2
- package/dist/schema/material.test.d.ts.map +0 -1
- package/dist/schema/material.test.js +0 -43
- package/dist/schema/nodes/measurement.test.d.ts +0 -2
- package/dist/schema/nodes/measurement.test.d.ts.map +0 -1
- package/dist/schema/nodes/measurement.test.js +0 -139
- package/dist/schema/nodes/ridge-vent-defaults.test.d.ts +0 -2
- package/dist/schema/nodes/ridge-vent-defaults.test.d.ts.map +0 -1
- package/dist/schema/nodes/ridge-vent-defaults.test.js +0 -205
- package/dist/schema/nodes/roof-segment-shape.test.d.ts +0 -2
- package/dist/schema/nodes/roof-segment-shape.test.d.ts.map +0 -1
- package/dist/schema/nodes/roof-segment-shape.test.js +0 -175
- package/dist/schema/nodes/roof-segment-surface.test.d.ts +0 -2
- package/dist/schema/nodes/roof-segment-surface.test.d.ts.map +0 -1
- package/dist/schema/nodes/roof-segment-surface.test.js +0 -48
- package/dist/schema/nodes/roof-segment-trim.test.d.ts +0 -2
- package/dist/schema/nodes/roof-segment-trim.test.d.ts.map +0 -1
- package/dist/schema/nodes/roof-segment-trim.test.js +0 -107
- package/dist/schema/nodes/roof-segment-walls.test.d.ts +0 -2
- package/dist/schema/nodes/roof-segment-walls.test.d.ts.map +0 -1
- package/dist/schema/nodes/roof-segment-walls.test.js +0 -92
- package/dist/schema/nodes/wall.test.d.ts +0 -2
- package/dist/schema/nodes/wall.test.d.ts.map +0 -1
- package/dist/schema/nodes/wall.test.js +0 -208
- 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 -230
- 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/opening-guides.test.d.ts +0 -2
- package/dist/services/opening-guides.test.d.ts.map +0 -1
- package/dist/services/opening-guides.test.js +0 -208
- package/dist/services/port-connectivity.test.d.ts +0 -2
- package/dist/services/port-connectivity.test.d.ts.map +0 -1
- package/dist/services/port-connectivity.test.js +0 -297
- package/dist/services/riser-diagram.test.d.ts +0 -2
- package/dist/services/riser-diagram.test.d.ts.map +0 -1
- package/dist/services/riser-diagram.test.js +0 -66
- 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 -137
- package/dist/services/system-graph.test.d.ts +0 -2
- package/dist/services/system-graph.test.d.ts.map +0 -1
- package/dist/services/system-graph.test.js +0 -138
- package/dist/services/validate-dwv.test.d.ts +0 -2
- package/dist/services/validate-dwv.test.d.ts.map +0 -1
- package/dist/services/validate-dwv.test.js +0 -109
- 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/actions/ridge-vent-update.test.d.ts +0 -2
- package/dist/store/actions/ridge-vent-update.test.d.ts.map +0 -1
- package/dist/store/actions/ridge-vent-update.test.js +0 -264
- package/dist/store/use-scene-dirty-tracking.test.d.ts +0 -2
- package/dist/store/use-scene-dirty-tracking.test.d.ts.map +0 -1
- package/dist/store/use-scene-dirty-tracking.test.js +0 -68
- 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/store/use-scene-measurement-roundtrip.test.d.ts +0 -2
- package/dist/store/use-scene-measurement-roundtrip.test.d.ts.map +0 -1
- package/dist/store/use-scene-measurement-roundtrip.test.js +0 -97
- package/dist/store/use-scene-plugins.test.d.ts +0 -2
- package/dist/store/use-scene-plugins.test.d.ts.map +0 -1
- package/dist/store/use-scene-plugins.test.js +0 -51
- package/dist/store/use-scene-wall-slot-migration.test.d.ts +0 -2
- package/dist/store/use-scene-wall-slot-migration.test.d.ts.map +0 -1
- package/dist/store/use-scene-wall-slot-migration.test.js +0 -210
- package/dist/store/use-scene-window-migration.test.d.ts +0 -2
- package/dist/store/use-scene-window-migration.test.d.ts.map +0 -1
- package/dist/store/use-scene-window-migration.test.js +0 -85
- 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/fence/fence-spline.test.d.ts +0 -2
- package/dist/systems/fence/fence-spline.test.d.ts.map +0 -1
- package/dist/systems/fence/fence-spline.test.js +0 -136
- 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 -485
- package/dist/systems/wall/wall-mitering.test.d.ts +0 -2
- package/dist/systems/wall/wall-mitering.test.d.ts.map +0 -1
- package/dist/systems/wall/wall-mitering.test.js +0 -63
- 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 -62
- package/dist/utils/heal-scene-graph.test.d.ts +0 -2
- package/dist/utils/heal-scene-graph.test.d.ts.map +0 -1
- package/dist/utils/heal-scene-graph.test.js +0 -88
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const ConstructionDimensionBaseline: z.ZodObject<{
|
|
3
|
+
origin: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
4
|
+
direction: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
5
|
+
}, z.core.$strip>;
|
|
6
|
+
export declare const ConstructionDimensionChainMode: z.ZodEnum<{
|
|
7
|
+
"point-to-point": "point-to-point";
|
|
8
|
+
continuous: "continuous";
|
|
9
|
+
}>;
|
|
10
|
+
export declare const ConstructionDimensionMode: z.ZodEnum<{
|
|
11
|
+
radius: "radius";
|
|
12
|
+
linear: "linear";
|
|
13
|
+
diameter: "diameter";
|
|
14
|
+
"center-mark": "center-mark";
|
|
15
|
+
chord: "chord";
|
|
16
|
+
"arc-length": "arc-length";
|
|
17
|
+
angular: "angular";
|
|
18
|
+
coordinate: "coordinate";
|
|
19
|
+
}>;
|
|
20
|
+
export declare const ConstructionDrawingType: z.ZodEnum<{
|
|
21
|
+
"floor-plan": "floor-plan";
|
|
22
|
+
"foundation-plan": "foundation-plan";
|
|
23
|
+
"reflected-ceiling-plan": "reflected-ceiling-plan";
|
|
24
|
+
"roof-plan": "roof-plan";
|
|
25
|
+
"site-plan": "site-plan";
|
|
26
|
+
}>;
|
|
27
|
+
export declare const ConstructionDimensionDrawingPresentation: z.ZodEnum<{
|
|
28
|
+
shown: "shown";
|
|
29
|
+
omit: "omit";
|
|
30
|
+
controlled: "controlled";
|
|
31
|
+
}>;
|
|
32
|
+
export declare const ConstructionDimensionDrawingOverride: z.ZodObject<{
|
|
33
|
+
drawingType: z.ZodEnum<{
|
|
34
|
+
"floor-plan": "floor-plan";
|
|
35
|
+
"foundation-plan": "foundation-plan";
|
|
36
|
+
"reflected-ceiling-plan": "reflected-ceiling-plan";
|
|
37
|
+
"roof-plan": "roof-plan";
|
|
38
|
+
"site-plan": "site-plan";
|
|
39
|
+
}>;
|
|
40
|
+
presentation: z.ZodEnum<{
|
|
41
|
+
shown: "shown";
|
|
42
|
+
omit: "omit";
|
|
43
|
+
controlled: "controlled";
|
|
44
|
+
}>;
|
|
45
|
+
suppressedSegmentIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export declare const ConstructionDimensionDatumPolicy: z.ZodEnum<{
|
|
48
|
+
centerline: "centerline";
|
|
49
|
+
"wall-face": "wall-face";
|
|
50
|
+
"structural-face": "structural-face";
|
|
51
|
+
"finish-face": "finish-face";
|
|
52
|
+
}>;
|
|
53
|
+
export declare const ConstructionDimensionTerminator: z.ZodEnum<{
|
|
54
|
+
"architectural-tick": "architectural-tick";
|
|
55
|
+
"filled-arrow": "filled-arrow";
|
|
56
|
+
"open-arrow": "open-arrow";
|
|
57
|
+
dot: "dot";
|
|
58
|
+
}>;
|
|
59
|
+
export declare const ConstructionDimensionTextPosition: z.ZodEnum<{
|
|
60
|
+
above: "above";
|
|
61
|
+
centered: "centered";
|
|
62
|
+
}>;
|
|
63
|
+
export declare const ConstructionDimensionImperialPrecision: z.ZodEnum<{
|
|
64
|
+
1: "1";
|
|
65
|
+
"1/2": "1/2";
|
|
66
|
+
"1/4": "1/4";
|
|
67
|
+
"1/8": "1/8";
|
|
68
|
+
"1/16": "1/16";
|
|
69
|
+
}>;
|
|
70
|
+
export declare const ConstructionDimensionMetricNotation: z.ZodEnum<{
|
|
71
|
+
meters: "meters";
|
|
72
|
+
millimeters: "millimeters";
|
|
73
|
+
}>;
|
|
74
|
+
export declare const ConstructionDimensionNode: z.ZodObject<{
|
|
75
|
+
object: z.ZodDefault<z.ZodLiteral<"node">>;
|
|
76
|
+
name: z.ZodOptional<z.ZodString>;
|
|
77
|
+
parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
78
|
+
visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
79
|
+
camera: z.ZodOptional<z.ZodObject<{
|
|
80
|
+
position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
81
|
+
target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
82
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
83
|
+
perspective: "perspective";
|
|
84
|
+
orthographic: "orthographic";
|
|
85
|
+
}>>;
|
|
86
|
+
fov: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
zoom: z.ZodOptional<z.ZodNumber>;
|
|
88
|
+
}, z.core.$strip>>;
|
|
89
|
+
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
90
|
+
id: z.ZodDefault<z.ZodTemplateLiteral<`construction-dimension_${string}`>>;
|
|
91
|
+
type: z.ZodDefault<z.ZodLiteral<"construction-dimension">>;
|
|
92
|
+
anchors: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
|
|
93
|
+
kind: z.ZodLiteral<"feature">;
|
|
94
|
+
reference: z.ZodObject<{
|
|
95
|
+
nodeId: z.ZodString;
|
|
96
|
+
featureId: z.ZodString;
|
|
97
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
100
|
+
}, z.core.$strip>]>>>;
|
|
101
|
+
baseline: z.ZodDefault<z.ZodObject<{
|
|
102
|
+
origin: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
103
|
+
direction: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
104
|
+
}, z.core.$strip>>;
|
|
105
|
+
chainMode: z.ZodDefault<z.ZodEnum<{
|
|
106
|
+
"point-to-point": "point-to-point";
|
|
107
|
+
continuous: "continuous";
|
|
108
|
+
}>>;
|
|
109
|
+
mode: z.ZodDefault<z.ZodEnum<{
|
|
110
|
+
radius: "radius";
|
|
111
|
+
linear: "linear";
|
|
112
|
+
diameter: "diameter";
|
|
113
|
+
"center-mark": "center-mark";
|
|
114
|
+
chord: "chord";
|
|
115
|
+
"arc-length": "arc-length";
|
|
116
|
+
angular: "angular";
|
|
117
|
+
coordinate: "coordinate";
|
|
118
|
+
}>>;
|
|
119
|
+
featureCount: z.ZodDefault<z.ZodNumber>;
|
|
120
|
+
showCenterMark: z.ZodDefault<z.ZodBoolean>;
|
|
121
|
+
prefix: z.ZodDefault<z.ZodString>;
|
|
122
|
+
suffix: z.ZodDefault<z.ZodString>;
|
|
123
|
+
textOverride: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
124
|
+
datumPolicy: z.ZodDefault<z.ZodEnum<{
|
|
125
|
+
centerline: "centerline";
|
|
126
|
+
"wall-face": "wall-face";
|
|
127
|
+
"structural-face": "structural-face";
|
|
128
|
+
"finish-face": "finish-face";
|
|
129
|
+
}>>;
|
|
130
|
+
terminator: z.ZodDefault<z.ZodEnum<{
|
|
131
|
+
"architectural-tick": "architectural-tick";
|
|
132
|
+
"filled-arrow": "filled-arrow";
|
|
133
|
+
"open-arrow": "open-arrow";
|
|
134
|
+
dot: "dot";
|
|
135
|
+
}>>;
|
|
136
|
+
textPosition: z.ZodDefault<z.ZodEnum<{
|
|
137
|
+
above: "above";
|
|
138
|
+
centered: "centered";
|
|
139
|
+
}>>;
|
|
140
|
+
imperialPrecision: z.ZodDefault<z.ZodEnum<{
|
|
141
|
+
1: "1";
|
|
142
|
+
"1/2": "1/2";
|
|
143
|
+
"1/4": "1/4";
|
|
144
|
+
"1/8": "1/8";
|
|
145
|
+
"1/16": "1/16";
|
|
146
|
+
}>>;
|
|
147
|
+
metricNotation: z.ZodDefault<z.ZodEnum<{
|
|
148
|
+
meters: "meters";
|
|
149
|
+
millimeters: "millimeters";
|
|
150
|
+
}>>;
|
|
151
|
+
extensionStartGap: z.ZodDefault<z.ZodNumber>;
|
|
152
|
+
extensionOvershoot: z.ZodDefault<z.ZodNumber>;
|
|
153
|
+
drawingType: z.ZodDefault<z.ZodEnum<{
|
|
154
|
+
"floor-plan": "floor-plan";
|
|
155
|
+
"foundation-plan": "foundation-plan";
|
|
156
|
+
"reflected-ceiling-plan": "reflected-ceiling-plan";
|
|
157
|
+
"roof-plan": "roof-plan";
|
|
158
|
+
"site-plan": "site-plan";
|
|
159
|
+
}>>;
|
|
160
|
+
drawingOverrides: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
161
|
+
drawingType: z.ZodEnum<{
|
|
162
|
+
"floor-plan": "floor-plan";
|
|
163
|
+
"foundation-plan": "foundation-plan";
|
|
164
|
+
"reflected-ceiling-plan": "reflected-ceiling-plan";
|
|
165
|
+
"roof-plan": "roof-plan";
|
|
166
|
+
"site-plan": "site-plan";
|
|
167
|
+
}>;
|
|
168
|
+
presentation: z.ZodEnum<{
|
|
169
|
+
shown: "shown";
|
|
170
|
+
omit: "omit";
|
|
171
|
+
controlled: "controlled";
|
|
172
|
+
}>;
|
|
173
|
+
suppressedSegmentIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
|
|
174
|
+
}, z.core.$strip>>>;
|
|
175
|
+
controllingDimensionId: z.ZodDefault<z.ZodNullable<z.ZodDefault<z.ZodTemplateLiteral<`construction-dimension_${string}`>>>>;
|
|
176
|
+
}, z.core.$strip>;
|
|
177
|
+
export type ConstructionDimensionBaseline = z.infer<typeof ConstructionDimensionBaseline>;
|
|
178
|
+
export type ConstructionDimensionChainMode = z.infer<typeof ConstructionDimensionChainMode>;
|
|
179
|
+
export type ConstructionDimensionMode = z.infer<typeof ConstructionDimensionMode>;
|
|
180
|
+
export type ConstructionDrawingType = z.infer<typeof ConstructionDrawingType>;
|
|
181
|
+
export type ConstructionDimensionDrawingPresentation = z.infer<typeof ConstructionDimensionDrawingPresentation>;
|
|
182
|
+
export type ConstructionDimensionDrawingOverride = z.infer<typeof ConstructionDimensionDrawingOverride>;
|
|
183
|
+
export type ConstructionDimensionDatumPolicy = z.infer<typeof ConstructionDimensionDatumPolicy>;
|
|
184
|
+
export type ConstructionDimensionTerminator = z.infer<typeof ConstructionDimensionTerminator>;
|
|
185
|
+
export type ConstructionDimensionTextPosition = z.infer<typeof ConstructionDimensionTextPosition>;
|
|
186
|
+
export type ConstructionDimensionImperialPrecision = z.infer<typeof ConstructionDimensionImperialPrecision>;
|
|
187
|
+
export type ConstructionDimensionMetricNotation = z.infer<typeof ConstructionDimensionMetricNotation>;
|
|
188
|
+
export type ConstructionDimensionNode = z.infer<typeof ConstructionDimensionNode>;
|
|
189
|
+
export declare const CONSTRUCTION_DRAWING_TYPES: ("floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan")[];
|
|
190
|
+
export declare function resolveConstructionDimensionDrawingPresentation(node: Pick<ConstructionDimensionNode, 'drawingType' | 'drawingOverrides'>, drawingType: ConstructionDrawingType): ConstructionDimensionDrawingPresentation;
|
|
191
|
+
export declare function resolveConstructionDimensionDrawingOverride(node: Pick<ConstructionDimensionNode, 'drawingOverrides'>, drawingType: ConstructionDrawingType): ConstructionDimensionDrawingOverride | null;
|
|
192
|
+
export declare function setConstructionDimensionDrawingPresentation(node: Pick<ConstructionDimensionNode, 'drawingType' | 'drawingOverrides'>, drawingType: ConstructionDrawingType, presentation: ConstructionDimensionDrawingPresentation): ConstructionDimensionDrawingOverride[];
|
|
193
|
+
export declare function setConstructionDimensionDrawingSuppressedSegments(node: Pick<ConstructionDimensionNode, 'drawingType' | 'drawingOverrides'>, drawingType: ConstructionDrawingType, suppressedSegmentIndexes: readonly number[]): ConstructionDimensionDrawingOverride[];
|
|
194
|
+
export declare function constructionDimensionRequiredAnchorCount(mode: ConstructionDimensionMode): number;
|
|
195
|
+
//# sourceMappingURL=construction-dimension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construction-dimension.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/construction-dimension.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,6BAA6B;;;iBAatC,CAAA;AAEJ,eAAO,MAAM,8BAA8B;;;EAA2C,CAAA;AACtF,eAAO,MAAM,yBAAyB;;;;;;;;;EASpC,CAAA;AACF,eAAO,MAAM,uBAAuB;;;;;;EAMlC,CAAA;AACF,eAAO,MAAM,wCAAwC;;;;EAA0C,CAAA;AAC/F,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;iBAI/C,CAAA;AACF,eAAO,MAAM,gCAAgC;;;;;EAK3C,CAAA;AACF,eAAO,MAAM,+BAA+B;;;;;EAK1C,CAAA;AACF,eAAO,MAAM,iCAAiC;;;EAAgC,CAAA;AAC9E,eAAO,MAAM,sCAAsC;;;;;;EAA6C,CAAA;AAChG,eAAO,MAAM,mCAAmC;;;EAAoC,CAAA;AAEpF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4CrC,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAA;AACzF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAC3F,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AACjF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC7E,MAAM,MAAM,wCAAwC,GAAG,CAAC,CAAC,KAAK,CAC5D,OAAO,wCAAwC,CAChD,CAAA;AACD,MAAM,MAAM,oCAAoC,GAAG,CAAC,CAAC,KAAK,CACxD,OAAO,oCAAoC,CAC5C,CAAA;AACD,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAC/F,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAC7F,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAA;AACjG,MAAM,MAAM,sCAAsC,GAAG,CAAC,CAAC,KAAK,CAC1D,OAAO,sCAAsC,CAC9C,CAAA;AACD,MAAM,MAAM,mCAAmC,GAAG,CAAC,CAAC,KAAK,CACvD,OAAO,mCAAmC,CAC3C,CAAA;AACD,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,eAAO,MAAM,0BAA0B,6FAAkC,CAAA;AAEzE,wBAAgB,+CAA+C,CAC7D,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,aAAa,GAAG,kBAAkB,CAAC,EACzE,WAAW,EAAE,uBAAuB,GACnC,wCAAwC,CAM1C;AAED,wBAAgB,2CAA2C,CACzD,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,EACzD,WAAW,EAAE,uBAAuB,GACnC,oCAAoC,GAAG,IAAI,CAM7C;AAED,wBAAgB,2CAA2C,CACzD,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,aAAa,GAAG,kBAAkB,CAAC,EACzE,WAAW,EAAE,uBAAuB,EACpC,YAAY,EAAE,wCAAwC,GACrD,oCAAoC,EAAE,CAYxC;AAED,wBAAgB,iDAAiD,CAC/D,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,aAAa,GAAG,kBAAkB,CAAC,EACzE,WAAW,EAAE,uBAAuB,EACpC,wBAAwB,EAAE,SAAS,MAAM,EAAE,GAC1C,oCAAoC,EAAE,CAUxC;AAED,wBAAgB,wCAAwC,CAAC,IAAI,EAAE,yBAAyB,GAAG,MAAM,CAEhG"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import dedent from 'dedent';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
+
import { MeasurementAnchor } from './measurement';
|
|
5
|
+
const FiniteCoordinate = z.number().finite();
|
|
6
|
+
export const ConstructionDimensionBaseline = z
|
|
7
|
+
.object({
|
|
8
|
+
origin: z.tuple([FiniteCoordinate, FiniteCoordinate]).default([0, 0.6]),
|
|
9
|
+
direction: z.tuple([FiniteCoordinate, FiniteCoordinate]).default([1, 0]),
|
|
10
|
+
})
|
|
11
|
+
.superRefine((baseline, ctx) => {
|
|
12
|
+
if (Math.hypot(baseline.direction[0], baseline.direction[1]) <= 1e-9) {
|
|
13
|
+
ctx.addIssue({
|
|
14
|
+
code: 'custom',
|
|
15
|
+
path: ['direction'],
|
|
16
|
+
message: 'Construction dimension baseline direction must be non-zero',
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
export const ConstructionDimensionChainMode = z.enum(['point-to-point', 'continuous']);
|
|
21
|
+
export const ConstructionDimensionMode = z.enum([
|
|
22
|
+
'linear',
|
|
23
|
+
'radius',
|
|
24
|
+
'diameter',
|
|
25
|
+
'center-mark',
|
|
26
|
+
'chord',
|
|
27
|
+
'arc-length',
|
|
28
|
+
'angular',
|
|
29
|
+
'coordinate',
|
|
30
|
+
]);
|
|
31
|
+
export const ConstructionDrawingType = z.enum([
|
|
32
|
+
'floor-plan',
|
|
33
|
+
'foundation-plan',
|
|
34
|
+
'reflected-ceiling-plan',
|
|
35
|
+
'roof-plan',
|
|
36
|
+
'site-plan',
|
|
37
|
+
]);
|
|
38
|
+
export const ConstructionDimensionDrawingPresentation = z.enum(['shown', 'omit', 'controlled']);
|
|
39
|
+
export const ConstructionDimensionDrawingOverride = z.object({
|
|
40
|
+
drawingType: ConstructionDrawingType,
|
|
41
|
+
presentation: ConstructionDimensionDrawingPresentation,
|
|
42
|
+
suppressedSegmentIndexes: z.array(z.number().int().min(0).max(999)).max(200).default([]),
|
|
43
|
+
});
|
|
44
|
+
export const ConstructionDimensionDatumPolicy = z.enum([
|
|
45
|
+
'centerline',
|
|
46
|
+
'wall-face',
|
|
47
|
+
'structural-face',
|
|
48
|
+
'finish-face',
|
|
49
|
+
]);
|
|
50
|
+
export const ConstructionDimensionTerminator = z.enum([
|
|
51
|
+
'architectural-tick',
|
|
52
|
+
'filled-arrow',
|
|
53
|
+
'open-arrow',
|
|
54
|
+
'dot',
|
|
55
|
+
]);
|
|
56
|
+
export const ConstructionDimensionTextPosition = z.enum(['above', 'centered']);
|
|
57
|
+
export const ConstructionDimensionImperialPrecision = z.enum(['1', '1/2', '1/4', '1/8', '1/16']);
|
|
58
|
+
export const ConstructionDimensionMetricNotation = z.enum(['meters', 'millimeters']);
|
|
59
|
+
export const ConstructionDimensionNode = BaseNode.extend({
|
|
60
|
+
id: objectId('construction-dimension'),
|
|
61
|
+
type: nodeType('construction-dimension'),
|
|
62
|
+
anchors: z
|
|
63
|
+
.array(MeasurementAnchor)
|
|
64
|
+
.min(2)
|
|
65
|
+
.default([
|
|
66
|
+
[0, 0, 0],
|
|
67
|
+
[1, 0, 0],
|
|
68
|
+
]),
|
|
69
|
+
baseline: ConstructionDimensionBaseline.default({ origin: [0, 0.6], direction: [1, 0] }),
|
|
70
|
+
chainMode: ConstructionDimensionChainMode.default('point-to-point'),
|
|
71
|
+
mode: ConstructionDimensionMode.default('linear'),
|
|
72
|
+
featureCount: z.number().int().min(1).max(999).default(1),
|
|
73
|
+
showCenterMark: z.boolean().default(true),
|
|
74
|
+
prefix: z.string().max(40).default(''),
|
|
75
|
+
suffix: z.string().max(40).default(''),
|
|
76
|
+
textOverride: z.string().trim().min(1).max(120).nullable().default(null),
|
|
77
|
+
datumPolicy: ConstructionDimensionDatumPolicy.default('centerline'),
|
|
78
|
+
terminator: ConstructionDimensionTerminator.default('architectural-tick'),
|
|
79
|
+
textPosition: ConstructionDimensionTextPosition.default('above'),
|
|
80
|
+
imperialPrecision: ConstructionDimensionImperialPrecision.default('1/16'),
|
|
81
|
+
metricNotation: ConstructionDimensionMetricNotation.default('meters'),
|
|
82
|
+
extensionStartGap: z.number().finite().min(0).max(1).default(0.075),
|
|
83
|
+
extensionOvershoot: z.number().finite().min(0).max(1).default(0.12),
|
|
84
|
+
drawingType: ConstructionDrawingType.default('floor-plan'),
|
|
85
|
+
drawingOverrides: z.array(ConstructionDimensionDrawingOverride).max(5).default([]),
|
|
86
|
+
controllingDimensionId: objectId('construction-dimension').nullable().default(null),
|
|
87
|
+
}).describe(dedent `
|
|
88
|
+
Construction dimension node - an associative floor-plan construction dimension
|
|
89
|
+
- anchors: two or more free or semantic feature anchors that supply the witness origins
|
|
90
|
+
- baseline.origin: a point on the independently placed dimension line
|
|
91
|
+
- baseline.direction: the fixed plan direction used to project the witness origins
|
|
92
|
+
- chainMode: point-to-point for one segment or continuous for adjacent dimension strings
|
|
93
|
+
- mode: linear, radius, diameter, center mark, chord, arc length, angular, or coordinate
|
|
94
|
+
- featureCount: repeated-feature multiplier used by diameter/radius and other notation
|
|
95
|
+
- showCenterMark: displays the resolved circle/angle center where applicable
|
|
96
|
+
- prefix/suffix/textOverride: document notation overrides without changing geometry
|
|
97
|
+
- datumPolicy/terminator/textPosition/imperialPrecision/metricNotation/extensionStartGap/extensionOvershoot: dimension-standard overrides
|
|
98
|
+
- drawingType: the primary persistent drawing that owns the dimension
|
|
99
|
+
- drawingOverrides: omit, show, or foundation-control presentation per drawing type
|
|
100
|
+
- controllingDimensionId: foundation dimension whose associative geometry controls this dimension
|
|
101
|
+
`);
|
|
102
|
+
export const CONSTRUCTION_DRAWING_TYPES = ConstructionDrawingType.options;
|
|
103
|
+
export function resolveConstructionDimensionDrawingPresentation(node, drawingType) {
|
|
104
|
+
let override;
|
|
105
|
+
for (const entry of node.drawingOverrides) {
|
|
106
|
+
if (entry.drawingType === drawingType)
|
|
107
|
+
override = entry;
|
|
108
|
+
}
|
|
109
|
+
return override?.presentation ?? (node.drawingType === drawingType ? 'shown' : 'omit');
|
|
110
|
+
}
|
|
111
|
+
export function resolveConstructionDimensionDrawingOverride(node, drawingType) {
|
|
112
|
+
let override;
|
|
113
|
+
for (const entry of node.drawingOverrides) {
|
|
114
|
+
if (entry.drawingType === drawingType)
|
|
115
|
+
override = entry;
|
|
116
|
+
}
|
|
117
|
+
return override ?? null;
|
|
118
|
+
}
|
|
119
|
+
export function setConstructionDimensionDrawingPresentation(node, drawingType, presentation) {
|
|
120
|
+
const defaultPresentation = node.drawingType === drawingType ? 'shown' : 'omit';
|
|
121
|
+
const existing = resolveConstructionDimensionDrawingOverride(node, drawingType);
|
|
122
|
+
const withoutDrawing = node.drawingOverrides.filter((entry) => entry.drawingType !== drawingType);
|
|
123
|
+
const next = {
|
|
124
|
+
drawingType,
|
|
125
|
+
presentation,
|
|
126
|
+
suppressedSegmentIndexes: existing?.suppressedSegmentIndexes ?? [],
|
|
127
|
+
};
|
|
128
|
+
return isDefaultConstructionDimensionDrawingOverride(next, defaultPresentation)
|
|
129
|
+
? withoutDrawing
|
|
130
|
+
: [...withoutDrawing, next];
|
|
131
|
+
}
|
|
132
|
+
export function setConstructionDimensionDrawingSuppressedSegments(node, drawingType, suppressedSegmentIndexes) {
|
|
133
|
+
const defaultPresentation = node.drawingType === drawingType ? 'shown' : 'omit';
|
|
134
|
+
const existing = resolveConstructionDimensionDrawingOverride(node, drawingType);
|
|
135
|
+
const presentation = existing?.presentation ?? defaultPresentation;
|
|
136
|
+
const suppressed = normalizeSuppressedSegmentIndexes(suppressedSegmentIndexes);
|
|
137
|
+
const withoutDrawing = node.drawingOverrides.filter((entry) => entry.drawingType !== drawingType);
|
|
138
|
+
const next = { drawingType, presentation, suppressedSegmentIndexes: suppressed };
|
|
139
|
+
return isDefaultConstructionDimensionDrawingOverride(next, defaultPresentation)
|
|
140
|
+
? withoutDrawing
|
|
141
|
+
: [...withoutDrawing, next];
|
|
142
|
+
}
|
|
143
|
+
export function constructionDimensionRequiredAnchorCount(mode) {
|
|
144
|
+
return mode === 'arc-length' || mode === 'angular' ? 3 : 2;
|
|
145
|
+
}
|
|
146
|
+
function isDefaultConstructionDimensionDrawingOverride(override, defaultPresentation) {
|
|
147
|
+
return (override.presentation === defaultPresentation && override.suppressedSegmentIndexes.length === 0);
|
|
148
|
+
}
|
|
149
|
+
function normalizeSuppressedSegmentIndexes(indexes) {
|
|
150
|
+
return [...new Set(indexes.filter((index) => Number.isInteger(index) && index >= 0))].sort((left, right) => left - right);
|
|
151
|
+
}
|
|
@@ -16,6 +16,16 @@ export declare const DoorCategory: z.ZodEnum<{
|
|
|
16
16
|
interior: "interior";
|
|
17
17
|
garage: "garage";
|
|
18
18
|
}>;
|
|
19
|
+
export declare const OpeningConstructionType: z.ZodEnum<{
|
|
20
|
+
framed: "framed";
|
|
21
|
+
masonry: "masonry";
|
|
22
|
+
}>;
|
|
23
|
+
export declare const OpeningDimensionReference: z.ZodEnum<{
|
|
24
|
+
nominal: "nominal";
|
|
25
|
+
"rough-opening": "rough-opening";
|
|
26
|
+
"masonry-opening": "masonry-opening";
|
|
27
|
+
"finish-opening": "finish-opening";
|
|
28
|
+
}>;
|
|
19
29
|
export declare const DoorType: z.ZodEnum<{
|
|
20
30
|
double: "double";
|
|
21
31
|
hinged: "hinged";
|
|
@@ -35,6 +45,8 @@ export declare const DoorTrackStyle: z.ZodEnum<{
|
|
|
35
45
|
overhead: "overhead";
|
|
36
46
|
}>;
|
|
37
47
|
export type DoorCategory = z.infer<typeof DoorCategory>;
|
|
48
|
+
export type OpeningConstructionType = z.infer<typeof OpeningConstructionType>;
|
|
49
|
+
export type OpeningDimensionReference = z.infer<typeof OpeningDimensionReference>;
|
|
38
50
|
export type DoorType = z.infer<typeof DoorType>;
|
|
39
51
|
export type DoorTrackStyle = z.infer<typeof DoorTrackStyle>;
|
|
40
52
|
export declare const DoorNode: z.ZodObject<{
|
|
@@ -104,6 +116,23 @@ export declare const DoorNode: z.ZodObject<{
|
|
|
104
116
|
}>>;
|
|
105
117
|
width: z.ZodDefault<z.ZodNumber>;
|
|
106
118
|
height: z.ZodDefault<z.ZodNumber>;
|
|
119
|
+
mark: z.ZodOptional<z.ZodString>;
|
|
120
|
+
constructionType: z.ZodDefault<z.ZodEnum<{
|
|
121
|
+
framed: "framed";
|
|
122
|
+
masonry: "masonry";
|
|
123
|
+
}>>;
|
|
124
|
+
dimensionReference: z.ZodDefault<z.ZodEnum<{
|
|
125
|
+
nominal: "nominal";
|
|
126
|
+
"rough-opening": "rough-opening";
|
|
127
|
+
"masonry-opening": "masonry-opening";
|
|
128
|
+
"finish-opening": "finish-opening";
|
|
129
|
+
}>>;
|
|
130
|
+
roughOpeningWidth: z.ZodOptional<z.ZodNumber>;
|
|
131
|
+
roughOpeningHeight: z.ZodOptional<z.ZodNumber>;
|
|
132
|
+
masonryOpeningWidth: z.ZodOptional<z.ZodNumber>;
|
|
133
|
+
masonryOpeningHeight: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
finishOpeningWidth: z.ZodOptional<z.ZodNumber>;
|
|
135
|
+
finishOpeningHeight: z.ZodOptional<z.ZodNumber>;
|
|
107
136
|
doorCategory: z.ZodDefault<z.ZodEnum<{
|
|
108
137
|
interior: "interior";
|
|
109
138
|
garage: "garage";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"door.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/door.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,WAAW;;;;;;;;;;;iBAWtB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD,eAAO,MAAM,YAAY;;;EAAiC,CAAA;AAC1D,eAAO,MAAM,QAAQ;;;;;;;;;;;EAWnB,CAAA;AACF,eAAO,MAAM,cAAc;;;;;EAAoD,CAAA;AAE/E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACvD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;AAC/C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"door.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/door.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,WAAW;;;;;;;;;;;iBAWtB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD,eAAO,MAAM,YAAY;;;EAAiC,CAAA;AAC1D,eAAO,MAAM,uBAAuB;;;EAAgC,CAAA;AACpE,eAAO,MAAM,yBAAyB;;;;;EAKpC,CAAA;AACF,eAAO,MAAM,QAAQ;;;;;;;;;;;EAWnB,CAAA;AACF,eAAO,MAAM,cAAc;;;;;EAAoD,CAAA;AAE/E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACvD,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC7E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AACjF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;AAC/C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiHnB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
|
|
@@ -13,6 +13,13 @@ export const DoorSegment = z.object({
|
|
|
13
13
|
panelInset: z.number().default(0.04),
|
|
14
14
|
});
|
|
15
15
|
export const DoorCategory = z.enum(['interior', 'garage']);
|
|
16
|
+
export const OpeningConstructionType = z.enum(['framed', 'masonry']);
|
|
17
|
+
export const OpeningDimensionReference = z.enum([
|
|
18
|
+
'nominal',
|
|
19
|
+
'rough-opening',
|
|
20
|
+
'masonry-opening',
|
|
21
|
+
'finish-opening',
|
|
22
|
+
]);
|
|
16
23
|
export const DoorType = z.enum([
|
|
17
24
|
'hinged',
|
|
18
25
|
'double',
|
|
@@ -49,6 +56,19 @@ export const DoorNode = BaseNode.extend({
|
|
|
49
56
|
// Overall dimensions
|
|
50
57
|
width: z.number().default(0.9),
|
|
51
58
|
height: z.number().default(2.1),
|
|
59
|
+
// Construction-document identity. `mark` overrides the deterministic
|
|
60
|
+
// level fallback (101, 102, ...). Rough-opening dimensions stay optional
|
|
61
|
+
// because they are manufacturer/framing inputs, not safe derivations from
|
|
62
|
+
// the nominal modeled size.
|
|
63
|
+
mark: z.string().trim().max(16).optional(),
|
|
64
|
+
constructionType: OpeningConstructionType.default('framed'),
|
|
65
|
+
dimensionReference: OpeningDimensionReference.default('nominal'),
|
|
66
|
+
roughOpeningWidth: z.number().positive().optional(),
|
|
67
|
+
roughOpeningHeight: z.number().positive().optional(),
|
|
68
|
+
masonryOpeningWidth: z.number().positive().optional(),
|
|
69
|
+
masonryOpeningHeight: z.number().positive().optional(),
|
|
70
|
+
finishOpeningWidth: z.number().positive().optional(),
|
|
71
|
+
finishOpeningHeight: z.number().positive().optional(),
|
|
52
72
|
// Door family
|
|
53
73
|
doorCategory: DoorCategory.default('interior'),
|
|
54
74
|
doorType: DoorType.default('hinged'),
|
|
@@ -31,6 +31,7 @@ export declare const DuctTerminalNode: z.ZodObject<{
|
|
|
31
31
|
type: z.ZodDefault<z.ZodLiteral<"duct-terminal">>;
|
|
32
32
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
33
33
|
rotation: z.ZodDefault<z.ZodNumber>;
|
|
34
|
+
supportSlabId: z.ZodOptional<z.ZodString>;
|
|
34
35
|
terminalType: z.ZodDefault<z.ZodEnum<{
|
|
35
36
|
"supply-register": "supply-register";
|
|
36
37
|
diffuser: "diffuser";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duct-terminal.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/duct-terminal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"duct-terminal.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/duct-terminal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuC5B,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -20,6 +20,8 @@ export const DuctTerminalNode = BaseNode.extend({
|
|
|
20
20
|
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
21
21
|
// Yaw in radians.
|
|
22
22
|
rotation: z.number().default(0),
|
|
23
|
+
// Persisted slab-support host — see ItemNode.supportSlabId for the rules.
|
|
24
|
+
supportSlabId: z.string().optional(),
|
|
23
25
|
terminalType: z.enum(['supply-register', 'diffuser', 'return-grille']).default('supply-register'),
|
|
24
26
|
// Which surface the terminal mounts on. Drives face orientation and
|
|
25
27
|
// which way the collar (and its port) points.
|
|
@@ -72,6 +72,8 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
72
72
|
tangents: z.ZodOptional<z.ZodArray<z.ZodNullable<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>>;
|
|
73
73
|
height: z.ZodDefault<z.ZodNumber>;
|
|
74
74
|
thickness: z.ZodDefault<z.ZodNumber>;
|
|
75
|
+
supportSlabId: z.ZodOptional<z.ZodString>;
|
|
76
|
+
supportOffset: z.ZodOptional<z.ZodNumber>;
|
|
75
77
|
curveOffset: z.ZodOptional<z.ZodNumber>;
|
|
76
78
|
baseHeight: z.ZodDefault<z.ZodNumber>;
|
|
77
79
|
postSpacing: z.ZodDefault<z.ZodNumber>;
|
|
@@ -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;;;;;EAAoD,CAAA;AAC3E,eAAO,MAAM,cAAc;;;EAAmC,CAAA;AAC9D,eAAO,MAAM,YAAY;;;;EAAsC,CAAA;AAE/D,eAAO,MAAM,SAAS
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6DrB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
|
|
@@ -30,6 +30,12 @@ export const FenceNode = BaseNode.extend({
|
|
|
30
30
|
tangents: z.array(z.tuple([z.number(), z.number()]).nullable()).optional(),
|
|
31
31
|
height: z.number().default(1.8),
|
|
32
32
|
thickness: z.number().default(0.08),
|
|
33
|
+
// Persisted slab-support host — the fence sits on that slab's walking
|
|
34
|
+
// surface (see ItemNode.supportSlabId for the host rules).
|
|
35
|
+
supportSlabId: z.string().optional(),
|
|
36
|
+
// Manual vertical offset from the elected slab or level support. This moves
|
|
37
|
+
// the complete fence body without changing its height.
|
|
38
|
+
supportOffset: z.number().finite().optional(),
|
|
33
39
|
curveOffset: z.number().optional(),
|
|
34
40
|
baseHeight: z.number().default(0.22),
|
|
35
41
|
postSpacing: z.number().default(2),
|
|
@@ -51,6 +57,8 @@ export const FenceNode = BaseNode.extend({
|
|
|
51
57
|
- path: optional list of [x, y] points; when set (>= 2) the centerline is a smooth spline through them
|
|
52
58
|
- tangents: optional per-point handle vectors (parallel to path); null entries fall back to the automatic tangent
|
|
53
59
|
- height/thickness: overall fence dimensions in meters
|
|
60
|
+
- supportSlabId: optional slab host; the fence stands on that slab's walking surface (elevation)
|
|
61
|
+
- supportOffset: manual vertical offset from the elected support surface
|
|
54
62
|
- curveOffset: midpoint sagitta offset used to bend the fence into an arc (ignored when path is set)
|
|
55
63
|
- baseHeight/postSpacing/postSize/topRailHeight: exact geometric controls from the plan3D fence model
|
|
56
64
|
- groundClearance/edgeInset/baseStyle: fence support and inset configuration
|
|
@@ -33,6 +33,7 @@ export declare const HvacEquipmentNode: z.ZodObject<{
|
|
|
33
33
|
type: z.ZodDefault<z.ZodLiteral<"hvac-equipment">>;
|
|
34
34
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
35
35
|
rotation: z.ZodDefault<z.ZodNumber>;
|
|
36
|
+
supportSlabId: z.ZodOptional<z.ZodString>;
|
|
36
37
|
equipmentType: z.ZodDefault<z.ZodEnum<{
|
|
37
38
|
furnace: "furnace";
|
|
38
39
|
"air-handler": "air-handler";
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyC7B,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AACjE,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -22,6 +22,8 @@ export const HvacEquipmentNode = BaseNode.extend({
|
|
|
22
22
|
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
23
23
|
// Yaw in radians.
|
|
24
24
|
rotation: z.number().default(0),
|
|
25
|
+
// Persisted slab-support host — see ItemNode.supportSlabId for the rules.
|
|
26
|
+
supportSlabId: z.string().optional(),
|
|
25
27
|
equipmentType: z.enum(['furnace', 'air-handler', 'condenser']).default('furnace'),
|
|
26
28
|
// Cabinet dimensions in meters. Defaults match a typical upflow
|
|
27
29
|
// furnace cabinet (~22" × 28" footprint, ~43" tall).
|
|
@@ -248,6 +248,7 @@ export declare const ItemNode: z.ZodObject<{
|
|
|
248
248
|
right: "right";
|
|
249
249
|
left: "left";
|
|
250
250
|
}>>;
|
|
251
|
+
supportSlabId: z.ZodOptional<z.ZodString>;
|
|
251
252
|
collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
|
|
252
253
|
slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
253
254
|
asset: z.ZodObject<{
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuDnB,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"}
|
|
@@ -115,6 +115,19 @@ export const ItemNode = BaseNode.extend({
|
|
|
115
115
|
// mounts the node inside the face frame (`getRoofWallFaceFrame`).
|
|
116
116
|
roofSegmentId: z.string().optional(),
|
|
117
117
|
roofFace: z.enum(['front', 'back', 'right', 'left']).optional(),
|
|
118
|
+
// Persisted floor-support host (canonical doc — the same field on other
|
|
119
|
+
// floor-placed kinds and walls follows these rules). Written at
|
|
120
|
+
// placement/commit ONLY when overlapping slabs disagree on elevation
|
|
121
|
+
// (ambiguity); absent/null means "elect the support fresh on every
|
|
122
|
+
// read", which is the historical behavior. Read paths PREFER this slab
|
|
123
|
+
// while it still exists and still overlaps the node's footprint, and
|
|
124
|
+
// silently fall back to election otherwise. Deleting the host slab
|
|
125
|
+
// strips the field (deleteNodesAction); a host merely reshaped away is
|
|
126
|
+
// deliberately kept so hosting resumes if the slab's polygon returns.
|
|
127
|
+
// The sentinel value 'ground' (GROUND_SUPPORT_ID) pins the node to the
|
|
128
|
+
// level base — written when a pointer-capped commit elected the ground
|
|
129
|
+
// while a slab (e.g. an elevated deck) still overlapped the footprint.
|
|
130
|
+
supportSlabId: z.string().optional(),
|
|
118
131
|
// Denormalized references to collections this node belongs to
|
|
119
132
|
collectionIds: z.array(z.custom()).optional(),
|
|
120
133
|
// Per-slot material overrides. Key = slot id (see deriveSlotId), value = a
|
|
@@ -17,8 +17,9 @@ export declare const LevelNode: z.ZodObject<{
|
|
|
17
17
|
metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
|
|
18
18
|
id: z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>;
|
|
19
19
|
type: z.ZodDefault<z.ZodLiteral<"level">>;
|
|
20
|
-
children: z.ZodDefault<z.ZodArray<z.
|
|
20
|
+
children: z.ZodDefault<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`item_${string}` | `ceiling_${string}` | `column_${string}` | `wall_${string}` | `fence_${string}` | `construction-dimension_${string}` | `structural-grid_${string}` | `zone_${string}` | `slab_${string}` | `roof_${string}` | `stair_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}`, string>>>>;
|
|
21
21
|
level: z.ZodDefault<z.ZodNumber>;
|
|
22
|
+
height: z.ZodOptional<z.ZodNumber>;
|
|
22
23
|
}, z.core.$strip>;
|
|
23
24
|
export type LevelNode = z.infer<typeof LevelNode>;
|
|
24
25
|
//# sourceMappingURL=level.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/level.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/level.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAyDvB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;iBAqBrB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
|