@pascal-app/core 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +235 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.js +129 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.js +635 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts +52 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/cases.js +689 -0
- package/dist/agent-operations/__fixtures__/find-by-type-cases.d.ts +7 -0
- package/dist/agent-operations/__fixtures__/find-by-type-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/find-by-type-cases.js +21 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.d.ts +17 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.js +506 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/room-cases.js +338 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts +5 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +137 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +6 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/structure-cases.js +588 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.js +302 -0
- package/dist/agent-operations/achieved.d.ts +16 -0
- package/dist/agent-operations/achieved.d.ts.map +1 -0
- package/dist/agent-operations/achieved.js +28 -0
- package/dist/agent-operations/add-column.d.ts +23 -0
- package/dist/agent-operations/add-column.d.ts.map +1 -0
- package/dist/agent-operations/add-column.js +97 -0
- package/dist/agent-operations/add-level.d.ts +14 -0
- package/dist/agent-operations/add-level.d.ts.map +1 -0
- package/dist/agent-operations/add-level.js +94 -0
- package/dist/agent-operations/add-object.d.ts +114 -0
- package/dist/agent-operations/add-object.d.ts.map +1 -0
- package/dist/agent-operations/add-object.js +361 -0
- package/dist/agent-operations/add-wall.d.ts +15 -0
- package/dist/agent-operations/add-wall.d.ts.map +1 -0
- package/dist/agent-operations/add-wall.js +47 -0
- package/dist/agent-operations/apply-changes.d.ts +16 -0
- package/dist/agent-operations/apply-changes.d.ts.map +1 -0
- package/dist/agent-operations/apply-changes.js +93 -0
- package/dist/agent-operations/apply-outcome.d.ts +15 -0
- package/dist/agent-operations/apply-outcome.d.ts.map +1 -0
- package/dist/agent-operations/apply-outcome.js +18 -0
- package/dist/agent-operations/collections.d.ts +28 -0
- package/dist/agent-operations/collections.d.ts.map +1 -0
- package/dist/agent-operations/collections.js +130 -0
- package/dist/agent-operations/create-room.d.ts +36 -0
- package/dist/agent-operations/create-room.d.ts.map +1 -0
- package/dist/agent-operations/create-room.js +177 -0
- package/dist/agent-operations/create-stair.d.ts +33 -0
- package/dist/agent-operations/create-stair.d.ts.map +1 -0
- package/dist/agent-operations/create-stair.js +247 -0
- package/dist/agent-operations/delete-node.d.ts +6 -0
- package/dist/agent-operations/delete-node.d.ts.map +1 -0
- package/dist/agent-operations/delete-node.js +9 -0
- package/dist/agent-operations/door-clearance.d.ts +135 -0
- package/dist/agent-operations/door-clearance.d.ts.map +1 -0
- package/dist/agent-operations/door-clearance.js +334 -0
- package/dist/agent-operations/duplicate-level.d.ts +12 -0
- package/dist/agent-operations/duplicate-level.d.ts.map +1 -0
- package/dist/agent-operations/duplicate-level.js +54 -0
- package/dist/agent-operations/find-by-type.d.ts +11 -0
- package/dist/agent-operations/find-by-type.d.ts.map +1 -0
- package/dist/agent-operations/find-by-type.js +94 -0
- package/dist/agent-operations/furnish-room.d.ts +18 -0
- package/dist/agent-operations/furnish-room.d.ts.map +1 -0
- package/dist/agent-operations/furnish-room.js +259 -0
- package/dist/agent-operations/get-node.d.ts +9 -0
- package/dist/agent-operations/get-node.d.ts.map +1 -0
- package/dist/agent-operations/get-node.js +33 -0
- package/dist/agent-operations/hosted-services.d.ts +13 -0
- package/dist/agent-operations/hosted-services.d.ts.map +1 -0
- package/dist/agent-operations/hosted-services.js +22 -0
- package/dist/agent-operations/index.d.ts +277 -0
- package/dist/agent-operations/index.d.ts.map +1 -0
- package/dist/agent-operations/index.js +80 -0
- package/dist/agent-operations/layout-clearance.d.ts +108 -0
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -0
- package/dist/agent-operations/layout-clearance.js +190 -0
- package/dist/agent-operations/level-reads.d.ts +33 -0
- package/dist/agent-operations/level-reads.d.ts.map +1 -0
- package/dist/agent-operations/level-reads.js +161 -0
- package/dist/agent-operations/level-target.d.ts +11 -0
- package/dist/agent-operations/level-target.d.ts.map +1 -0
- package/dist/agent-operations/level-target.js +29 -0
- package/dist/agent-operations/list-levels.d.ts +4 -0
- package/dist/agent-operations/list-levels.d.ts.map +1 -0
- package/dist/agent-operations/list-levels.js +31 -0
- package/dist/agent-operations/material-preset.d.ts +11 -0
- package/dist/agent-operations/material-preset.d.ts.map +1 -0
- package/dist/agent-operations/material-preset.js +74 -0
- package/dist/agent-operations/material-refs.d.ts +24 -0
- package/dist/agent-operations/material-refs.d.ts.map +1 -0
- package/dist/agent-operations/material-refs.js +100 -0
- package/dist/agent-operations/node-patch.d.ts +3 -0
- package/dist/agent-operations/node-patch.d.ts.map +1 -0
- package/dist/agent-operations/node-patch.js +114 -0
- package/dist/agent-operations/paint.d.ts +21 -0
- package/dist/agent-operations/paint.d.ts.map +1 -0
- package/dist/agent-operations/paint.js +219 -0
- package/dist/agent-operations/place-items.d.ts +20 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -0
- package/dist/agent-operations/place-items.js +226 -0
- package/dist/agent-operations/plan-geometry.d.ts +24 -0
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -0
- package/dist/agent-operations/plan-geometry.js +94 -0
- package/dist/agent-operations/room-structure.d.ts +87 -0
- package/dist/agent-operations/room-structure.d.ts.map +1 -0
- package/dist/agent-operations/room-structure.js +144 -0
- package/dist/agent-operations/scene-materials.d.ts +15 -0
- package/dist/agent-operations/scene-materials.d.ts.map +1 -0
- package/dist/agent-operations/scene-materials.js +62 -0
- package/dist/agent-operations/scene-measure.d.ts +73 -0
- package/dist/agent-operations/scene-measure.d.ts.map +1 -0
- package/dist/agent-operations/scene-measure.js +73 -0
- package/dist/agent-operations/scene-queries.d.ts +4510 -0
- package/dist/agent-operations/scene-queries.d.ts.map +1 -0
- package/dist/agent-operations/scene-queries.js +84 -0
- package/dist/agent-operations/scene-view.d.ts +98 -0
- package/dist/agent-operations/scene-view.d.ts.map +1 -0
- package/dist/agent-operations/scene-view.js +559 -0
- package/dist/agent-operations/search-assets.d.ts +14 -0
- package/dist/agent-operations/search-assets.d.ts.map +1 -0
- package/dist/agent-operations/search-assets.js +42 -0
- package/dist/agent-operations/search-materials.d.ts +12 -0
- package/dist/agent-operations/search-materials.d.ts.map +1 -0
- package/dist/agent-operations/search-materials.js +111 -0
- package/dist/agent-operations/stairs.d.ts +5 -0
- package/dist/agent-operations/stairs.d.ts.map +1 -0
- package/dist/agent-operations/stairs.js +70 -0
- package/dist/agent-operations/types.d.ts +59 -0
- package/dist/agent-operations/types.d.ts.map +1 -0
- package/dist/agent-operations/types.js +1 -0
- package/dist/agent-operations/verify-scene.d.ts +50 -0
- package/dist/agent-operations/verify-scene.d.ts.map +1 -0
- package/dist/agent-operations/verify-scene.js +369 -0
- package/dist/agent-operations/wall-opening.d.ts +65 -0
- package/dist/agent-operations/wall-opening.d.ts.map +1 -0
- package/dist/agent-operations/wall-opening.js +55 -0
- package/dist/agent-tools/achieved.d.ts +9 -0
- package/dist/agent-tools/achieved.d.ts.map +1 -0
- package/dist/agent-tools/achieved.js +8 -0
- package/dist/agent-tools/add-object.d.ts +43 -0
- package/dist/agent-tools/add-object.d.ts.map +1 -0
- package/dist/agent-tools/add-object.js +86 -0
- package/dist/agent-tools/assets.d.ts +13 -0
- package/dist/agent-tools/assets.d.ts.map +1 -0
- package/dist/agent-tools/assets.js +18 -0
- package/dist/agent-tools/clear-scene.d.ts +10 -0
- package/dist/agent-tools/clear-scene.d.ts.map +1 -0
- package/dist/agent-tools/clear-scene.js +9 -0
- package/dist/agent-tools/collections.d.ts +35 -0
- package/dist/agent-tools/collections.d.ts.map +1 -0
- package/dist/agent-tools/collections.js +31 -0
- package/dist/agent-tools/columns.d.ts +44 -0
- package/dist/agent-tools/columns.d.ts.map +1 -0
- package/dist/agent-tools/columns.js +59 -0
- package/dist/agent-tools/contract.d.ts +68 -0
- package/dist/agent-tools/contract.d.ts.map +1 -0
- package/dist/agent-tools/contract.js +1 -0
- package/dist/agent-tools/create-room.d.ts +63 -0
- package/dist/agent-tools/create-room.d.ts.map +1 -0
- package/dist/agent-tools/create-room.js +90 -0
- package/dist/agent-tools/find-by-type.d.ts +11 -0
- package/dist/agent-tools/find-by-type.d.ts.map +1 -0
- package/dist/agent-tools/find-by-type.js +14 -0
- package/dist/agent-tools/furnish-room.d.ts +26 -0
- package/dist/agent-tools/furnish-room.d.ts.map +1 -0
- package/dist/agent-tools/furnish-room.js +35 -0
- package/dist/agent-tools/hosted-services.d.ts +402 -0
- package/dist/agent-tools/hosted-services.d.ts.map +1 -0
- package/dist/agent-tools/hosted-services.js +148 -0
- package/dist/agent-tools/index.d.ts +864 -0
- package/dist/agent-tools/index.d.ts.map +1 -0
- package/dist/agent-tools/index.js +82 -0
- package/dist/agent-tools/levels.d.ts +72 -0
- package/dist/agent-tools/levels.d.ts.map +1 -0
- package/dist/agent-tools/levels.js +76 -0
- package/dist/agent-tools/measurement.d.ts +37 -0
- package/dist/agent-tools/measurement.d.ts.map +1 -0
- package/dist/agent-tools/measurement.js +94 -0
- package/dist/agent-tools/node-id.d.ts +3 -0
- package/dist/agent-tools/node-id.d.ts.map +1 -0
- package/dist/agent-tools/node-id.js +2 -0
- package/dist/agent-tools/nodes.d.ts +17 -0
- package/dist/agent-tools/nodes.d.ts.map +1 -0
- package/dist/agent-tools/nodes.js +13 -0
- package/dist/agent-tools/paint.d.ts +46 -0
- package/dist/agent-tools/paint.d.ts.map +1 -0
- package/dist/agent-tools/paint.js +29 -0
- package/dist/agent-tools/place-items.d.ts +19 -0
- package/dist/agent-tools/place-items.d.ts.map +1 -0
- package/dist/agent-tools/place-items.js +29 -0
- package/dist/agent-tools/refusal.d.ts +20 -0
- package/dist/agent-tools/refusal.d.ts.map +1 -0
- package/dist/agent-tools/refusal.js +29 -0
- package/dist/agent-tools/room-structure.d.ts +438 -0
- package/dist/agent-tools/room-structure.d.ts.map +1 -0
- package/dist/agent-tools/room-structure.js +207 -0
- package/dist/agent-tools/search-materials.d.ts +20 -0
- package/dist/agent-tools/search-materials.d.ts.map +1 -0
- package/dist/agent-tools/search-materials.js +32 -0
- package/dist/agent-tools/stairs.d.ts +86 -0
- package/dist/agent-tools/stairs.d.ts.map +1 -0
- package/dist/agent-tools/stairs.js +103 -0
- package/dist/agent-tools/verify-scene.d.ts +13 -0
- package/dist/agent-tools/verify-scene.d.ts.map +1 -0
- package/dist/agent-tools/verify-scene.js +21 -0
- package/dist/agent-tools/view-scene.d.ts +43 -0
- package/dist/agent-tools/view-scene.d.ts.map +1 -0
- package/dist/agent-tools/view-scene.js +80 -0
- package/dist/agent-tools/wall-openings.d.ts +163 -0
- package/dist/agent-tools/wall-openings.d.ts.map +1 -0
- package/dist/agent-tools/wall-openings.js +144 -0
- package/dist/agent-tools/walls.d.ts +21 -0
- package/dist/agent-tools/walls.d.ts.map +1 -0
- package/dist/agent-tools/walls.js +30 -0
- package/dist/agent-tools/write-target.d.ts +12 -0
- package/dist/agent-tools/write-target.d.ts.map +1 -0
- package/dist/agent-tools/write-target.js +10 -0
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +736 -0
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -0
- package/dist/building/__fixtures__/wall-opening-cases.js +307 -0
- package/dist/building/door-types.d.ts +22 -0
- package/dist/building/door-types.d.ts.map +1 -0
- package/dist/building/door-types.js +167 -0
- package/dist/building/floor-item-fit.d.ts +38 -0
- package/dist/building/floor-item-fit.d.ts.map +1 -0
- package/dist/building/floor-item-fit.js +47 -0
- package/dist/building/index.d.ts +7 -0
- package/dist/building/index.d.ts.map +1 -0
- package/dist/building/index.js +6 -0
- package/dist/building/level-duplication.d.ts +8983 -0
- package/dist/building/level-duplication.d.ts.map +1 -0
- package/dist/building/level-duplication.js +314 -0
- package/dist/building/opening-style-presets.d.ts +46 -0
- package/dist/building/opening-style-presets.d.ts.map +1 -0
- package/dist/building/opening-style-presets.js +195 -0
- package/dist/building/wall-openings.d.ts +445 -0
- package/dist/building/wall-openings.d.ts.map +1 -0
- package/dist/building/wall-openings.js +231 -0
- package/dist/building/window-types.d.ts +17 -0
- package/dist/building/window-types.d.ts.map +1 -0
- package/dist/building/window-types.js +31 -0
- package/dist/commands/structure/apply-zone-transform.d.ts +23 -0
- package/dist/commands/structure/apply-zone-transform.d.ts.map +1 -0
- package/dist/commands/structure/apply-zone-transform.js +55 -0
- package/dist/commands/structure/create-mezzanine.d.ts +12 -0
- package/dist/commands/structure/create-mezzanine.d.ts.map +1 -0
- package/dist/commands/structure/create-mezzanine.js +46 -0
- package/dist/commands/structure/create-zone.d.ts +32 -0
- package/dist/commands/structure/create-zone.d.ts.map +1 -0
- package/dist/commands/structure/create-zone.js +126 -0
- package/dist/commands/structure/delete-zone.d.ts +51 -0
- package/dist/commands/structure/delete-zone.d.ts.map +1 -0
- package/dist/commands/structure/delete-zone.js +354 -0
- package/dist/commands/structure/divide-zone.d.ts +38 -0
- package/dist/commands/structure/divide-zone.d.ts.map +1 -0
- package/dist/commands/structure/divide-zone.js +186 -0
- package/dist/commands/structure/duplicate-zone.d.ts +7 -0
- package/dist/commands/structure/duplicate-zone.d.ts.map +1 -0
- package/dist/commands/structure/duplicate-zone.js +21 -0
- package/dist/commands/structure/floor-opening.d.ts +36 -0
- package/dist/commands/structure/floor-opening.d.ts.map +1 -0
- package/dist/commands/structure/floor-opening.js +124 -0
- package/dist/commands/structure/index.d.ts +22 -0
- package/dist/commands/structure/index.d.ts.map +1 -0
- package/dist/commands/structure/index.js +20 -0
- package/dist/commands/structure/lock-outside-faces.d.ts +12 -0
- package/dist/commands/structure/lock-outside-faces.d.ts.map +1 -0
- package/dist/commands/structure/lock-outside-faces.js +32 -0
- package/dist/commands/structure/merge-zones.d.ts +5 -0
- package/dist/commands/structure/merge-zones.d.ts.map +1 -0
- package/dist/commands/structure/merge-zones.js +22 -0
- package/dist/commands/structure/mezzanine-content.d.ts +16 -0
- package/dist/commands/structure/mezzanine-content.d.ts.map +1 -0
- package/dist/commands/structure/mezzanine-content.js +109 -0
- package/dist/commands/structure/plan-mezzanine-stair.d.ts +7 -0
- package/dist/commands/structure/plan-mezzanine-stair.d.ts.map +1 -0
- package/dist/commands/structure/plan-mezzanine-stair.js +127 -0
- package/dist/commands/structure/plan-wall-deletion.d.ts +9 -0
- package/dist/commands/structure/plan-wall-deletion.d.ts.map +1 -0
- package/dist/commands/structure/plan-wall-deletion.js +151 -0
- package/dist/commands/structure/rebase-floor-reference.d.ts +7 -0
- package/dist/commands/structure/rebase-floor-reference.d.ts.map +1 -0
- package/dist/commands/structure/rebase-floor-reference.js +90 -0
- package/dist/commands/structure/resize-mezzanine.d.ts +8 -0
- package/dist/commands/structure/resize-mezzanine.d.ts.map +1 -0
- package/dist/commands/structure/resize-mezzanine.js +43 -0
- package/dist/commands/structure/rotate-zone.d.ts +8 -0
- package/dist/commands/structure/rotate-zone.d.ts.map +1 -0
- package/dist/commands/structure/rotate-zone.js +28 -0
- package/dist/commands/structure/set-floor-foundation.d.ts +62 -0
- package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -0
- package/dist/commands/structure/set-floor-foundation.js +162 -0
- package/dist/commands/structure/set-room-floor-construction.d.ts +8 -0
- package/dist/commands/structure/set-room-floor-construction.d.ts.map +1 -0
- package/dist/commands/structure/set-room-floor-construction.js +72 -0
- package/dist/commands/structure/set-wall-geometry.d.ts +10 -0
- package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -0
- package/dist/commands/structure/set-wall-geometry.js +52 -0
- package/dist/commands/structure/set-zone-edges.d.ts +14 -0
- package/dist/commands/structure/set-zone-edges.d.ts.map +1 -0
- package/dist/commands/structure/set-zone-edges.js +143 -0
- package/dist/commands/structure/set-zone-intent.d.ts +39 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -0
- package/dist/commands/structure/set-zone-intent.js +125 -0
- package/dist/commands/structure/shared.d.ts +4512 -0
- package/dist/commands/structure/shared.d.ts.map +1 -0
- package/dist/commands/structure/shared.js +102 -0
- package/dist/commands/structure/transform-zone.d.ts +23 -0
- package/dist/commands/structure/transform-zone.d.ts.map +1 -0
- package/dist/commands/structure/transform-zone.js +472 -0
- package/dist/commands/structure/validate-mezzanine.d.ts +5 -0
- package/dist/commands/structure/validate-mezzanine.d.ts.map +1 -0
- package/dist/commands/structure/validate-mezzanine.js +46 -0
- package/dist/commands/structure/zone-crossings.d.ts +8 -0
- package/dist/commands/structure/zone-crossings.d.ts.map +1 -0
- package/dist/commands/structure/zone-crossings.js +162 -0
- package/dist/commands/structure/zone-drop.d.ts +4 -0
- package/dist/commands/structure/zone-drop.d.ts.map +1 -0
- package/dist/commands/structure/zone-drop.js +68 -0
- package/dist/commands/structure/zone-insertion.d.ts +4 -0
- package/dist/commands/structure/zone-insertion.d.ts.map +1 -0
- package/dist/commands/structure/zone-insertion.js +200 -0
- package/dist/commands/structure/zone-transform-content.d.ts +6 -0
- package/dist/commands/structure/zone-transform-content.d.ts.map +1 -0
- package/dist/commands/structure/zone-transform-content.js +117 -0
- package/dist/commands/structure/zone-wall-merge.d.ts +4977 -0
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -0
- package/dist/commands/structure/zone-wall-merge.js +135 -0
- package/dist/contracts/reference-discovery.d.ts +18 -0
- package/dist/contracts/reference-discovery.d.ts.map +1 -0
- package/dist/contracts/reference-discovery.js +100 -0
- package/dist/contracts/reference-inventory.d.ts +44 -0
- package/dist/contracts/reference-inventory.d.ts.map +1 -0
- package/dist/contracts/reference-inventory.js +872 -0
- package/dist/events/bus.d.ts +70 -9
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/hooks/scene-registry/item-clip-registry.d.ts +6 -3
- package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -1
- package/dist/hooks/scene-registry/item-clip-registry.js +2 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.js +15 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +3 -2
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +53 -66
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1612 -127
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +86 -83
- package/dist/hooks/spatial-grid/support-host-patch.d.ts +1 -0
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +12 -5
- package/dist/index.d.ts +80 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -11
- package/dist/lib/__bench__/near-linear-walls.d.ts +2 -0
- package/dist/lib/__bench__/near-linear-walls.d.ts.map +1 -0
- package/dist/lib/__bench__/near-linear-walls.js +24 -0
- package/dist/lib/__bench__/structure-preview.bench.d.ts +2 -0
- package/dist/lib/__bench__/structure-preview.bench.d.ts.map +1 -0
- package/dist/lib/__bench__/structure-preview.bench.js +72 -0
- package/dist/lib/__fixtures__/mezzanine.d.ts +13968 -0
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -0
- package/dist/lib/__fixtures__/mezzanine.js +43 -0
- package/dist/lib/absorb-wall-separators.d.ts +4483 -0
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -0
- package/dist/lib/absorb-wall-separators.js +65 -0
- package/dist/lib/angle-accumulator.d.ts +3 -0
- package/dist/lib/angle-accumulator.d.ts.map +1 -0
- package/dist/lib/angle-accumulator.js +13 -0
- package/dist/lib/artifact-store.d.ts +31 -0
- package/dist/lib/artifact-store.d.ts.map +1 -0
- package/dist/lib/artifact-store.js +42 -0
- package/dist/lib/assembly-stack.d.ts +54 -0
- package/dist/lib/assembly-stack.d.ts.map +1 -0
- package/dist/lib/assembly-stack.js +52 -0
- package/dist/lib/asset-storage.d.ts.map +1 -1
- package/dist/lib/asset-storage.js +3 -0
- package/dist/lib/canonical-opening-ring.d.ts +3 -0
- package/dist/lib/canonical-opening-ring.d.ts.map +1 -0
- package/dist/lib/canonical-opening-ring.js +14 -0
- package/dist/lib/ceiling-children.d.ts +8 -0
- package/dist/lib/ceiling-children.d.ts.map +1 -0
- package/dist/lib/ceiling-children.js +36 -0
- package/dist/lib/ceiling-surface.d.ts +40 -0
- package/dist/lib/ceiling-surface.d.ts.map +1 -0
- package/dist/lib/ceiling-surface.js +65 -0
- package/dist/lib/cutter-host.d.ts +5 -0
- package/dist/lib/cutter-host.d.ts.map +1 -0
- package/dist/lib/cutter-host.js +30 -0
- package/dist/lib/floor-construction-lift.d.ts +4 -0
- package/dist/lib/floor-construction-lift.d.ts.map +1 -0
- package/dist/lib/floor-construction-lift.js +54 -0
- package/dist/lib/floor-footprint-key.d.ts +3 -0
- package/dist/lib/floor-footprint-key.d.ts.map +1 -0
- package/dist/lib/floor-footprint-key.js +9 -0
- package/dist/lib/floor-footprint-name.d.ts +11 -0
- package/dist/lib/floor-footprint-name.d.ts.map +1 -0
- package/dist/lib/floor-footprint-name.js +52 -0
- package/dist/lib/floor-foundation-datum.d.ts +31 -0
- package/dist/lib/floor-foundation-datum.d.ts.map +1 -0
- package/dist/lib/floor-foundation-datum.js +226 -0
- package/dist/lib/floor-foundation-stack.d.ts +16 -0
- package/dist/lib/floor-foundation-stack.d.ts.map +1 -0
- package/dist/lib/floor-foundation-stack.js +214 -0
- package/dist/lib/floor-intent-changes.d.ts +10 -0
- package/dist/lib/floor-intent-changes.d.ts.map +1 -0
- package/dist/lib/floor-intent-changes.js +461 -0
- package/dist/lib/floor-opening-footprints.d.ts +24 -0
- package/dist/lib/floor-opening-footprints.d.ts.map +1 -0
- package/dist/lib/floor-opening-footprints.js +127 -0
- package/dist/lib/floor-opening-intent.d.ts +16 -0
- package/dist/lib/floor-opening-intent.d.ts.map +1 -0
- package/dist/lib/floor-opening-intent.js +82 -0
- package/dist/lib/floor-plate-id.d.ts +5 -0
- package/dist/lib/floor-plate-id.d.ts.map +1 -0
- package/dist/lib/floor-plate-id.js +20 -0
- package/dist/lib/floor-plate-paint.d.ts +8 -0
- package/dist/lib/floor-plate-paint.d.ts.map +1 -0
- package/dist/lib/floor-plate-paint.js +11 -0
- package/dist/lib/floor-plates.d.ts +211 -0
- package/dist/lib/floor-plates.d.ts.map +1 -0
- package/dist/lib/floor-plates.js +729 -0
- package/dist/lib/floor-room-faces.d.ts +5 -0
- package/dist/lib/floor-room-faces.d.ts.map +1 -0
- package/dist/lib/floor-room-faces.js +29 -0
- package/dist/lib/floor-step-finish.d.ts +49 -0
- package/dist/lib/floor-step-finish.d.ts.map +1 -0
- package/dist/lib/floor-step-finish.js +128 -0
- package/dist/lib/geometry-script-node.d.ts +82 -0
- package/dist/lib/geometry-script-node.d.ts.map +1 -0
- package/dist/lib/geometry-script-node.js +147 -0
- package/dist/lib/geometry-surfaces.d.ts +61 -0
- package/dist/lib/geometry-surfaces.d.ts.map +1 -0
- package/dist/lib/geometry-surfaces.js +156 -0
- package/dist/lib/item-slab-support.d.ts +14 -0
- package/dist/lib/item-slab-support.d.ts.map +1 -0
- package/dist/lib/item-slab-support.js +40 -0
- package/dist/lib/level-footprints.d.ts +23 -0
- package/dist/lib/level-footprints.d.ts.map +1 -0
- package/dist/lib/level-footprints.js +398 -0
- package/dist/lib/level-name.d.ts +7 -0
- package/dist/lib/level-name.d.ts.map +1 -1
- package/dist/lib/level-name.js +11 -3
- package/dist/lib/new-zone.d.ts +10 -0
- package/dist/lib/new-zone.d.ts.map +1 -0
- package/dist/lib/new-zone.js +10 -0
- package/dist/lib/node-ancestry.d.ts +30 -0
- package/dist/lib/node-ancestry.d.ts.map +1 -0
- package/dist/lib/node-ancestry.js +76 -0
- package/dist/lib/object-cuts.d.ts +11 -0
- package/dist/lib/object-cuts.d.ts.map +1 -0
- package/dist/lib/object-cuts.js +63 -0
- package/dist/lib/opening-floor-datum.d.ts +24 -0
- package/dist/lib/opening-floor-datum.d.ts.map +1 -0
- package/dist/lib/opening-floor-datum.js +145 -0
- package/dist/lib/own-floor-intent.d.ts +15 -0
- package/dist/lib/own-floor-intent.d.ts.map +1 -0
- package/dist/lib/own-floor-intent.js +201 -0
- package/dist/lib/plate-reference.d.ts +3 -0
- package/dist/lib/plate-reference.d.ts.map +1 -0
- package/dist/lib/plate-reference.js +91 -0
- package/dist/lib/plate-surface.d.ts +120 -0
- package/dist/lib/plate-surface.d.ts.map +1 -0
- package/dist/lib/plate-surface.js +725 -0
- package/dist/lib/polygon-boolean.d.ts +17 -0
- package/dist/lib/polygon-boolean.d.ts.map +1 -0
- package/dist/lib/polygon-boolean.js +195 -0
- package/dist/lib/polygon-label.d.ts +7 -0
- package/dist/lib/polygon-label.d.ts.map +1 -0
- package/dist/lib/polygon-label.js +94 -0
- package/dist/lib/room-drawn-floor.d.ts +29 -0
- package/dist/lib/room-drawn-floor.d.ts.map +1 -0
- package/dist/lib/room-drawn-floor.js +88 -0
- package/dist/lib/room-floor-choices.d.ts +11 -0
- package/dist/lib/room-floor-choices.d.ts.map +1 -0
- package/dist/lib/room-floor-choices.js +60 -0
- package/dist/lib/room-floor-feasibility.d.ts +25 -0
- package/dist/lib/room-floor-feasibility.d.ts.map +1 -0
- package/dist/lib/room-floor-feasibility.js +293 -0
- package/dist/lib/room-floor-plate.d.ts +3 -0
- package/dist/lib/room-floor-plate.d.ts.map +1 -0
- package/dist/lib/room-floor-plate.js +4 -0
- package/dist/lib/room-graph.d.ts +79 -0
- package/dist/lib/room-graph.d.ts.map +1 -0
- package/dist/lib/room-graph.js +1265 -0
- package/dist/lib/room-name.d.ts +10 -0
- package/dist/lib/room-name.d.ts.map +1 -0
- package/dist/lib/room-name.js +22 -0
- package/dist/lib/room-topology-index.d.ts +53 -5
- package/dist/lib/room-topology-index.d.ts.map +1 -1
- package/dist/lib/room-topology-index.js +176 -30
- package/dist/lib/room-vertical-placement.d.ts +12 -0
- package/dist/lib/room-vertical-placement.d.ts.map +1 -0
- package/dist/lib/room-vertical-placement.js +28 -0
- package/dist/lib/room-zone-adoption.d.ts +74 -0
- package/dist/lib/room-zone-adoption.d.ts.map +1 -0
- package/dist/lib/room-zone-adoption.js +150 -0
- package/dist/lib/setback-envelope.d.ts +73 -0
- package/dist/lib/setback-envelope.d.ts.map +1 -0
- package/dist/lib/setback-envelope.js +506 -0
- package/dist/lib/slab-polygon.d.ts.map +1 -1
- package/dist/lib/slab-polygon.js +33 -12
- package/dist/lib/slots.d.ts +20 -0
- package/dist/lib/slots.d.ts.map +1 -1
- package/dist/lib/slots.js +44 -0
- package/dist/lib/space-detection.d.ts +14 -94
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +244 -1616
- package/dist/lib/structure-commit.d.ts +38 -0
- package/dist/lib/structure-commit.d.ts.map +1 -0
- package/dist/lib/structure-commit.js +52 -0
- package/dist/lib/structure-kernel.d.ts +66 -0
- package/dist/lib/structure-kernel.d.ts.map +1 -0
- package/dist/lib/structure-kernel.js +735 -0
- package/dist/lib/structure-reconcile.d.ts +15 -0
- package/dist/lib/structure-reconcile.d.ts.map +1 -0
- package/dist/lib/structure-reconcile.js +218 -0
- package/dist/lib/terrain-contours.d.ts +29 -0
- package/dist/lib/terrain-contours.d.ts.map +1 -0
- package/dist/lib/terrain-contours.js +199 -0
- package/dist/lib/terrain-source-persisted.d.ts +42 -0
- package/dist/lib/terrain-source-persisted.d.ts.map +1 -0
- package/dist/lib/terrain-source-persisted.js +68 -0
- package/dist/lib/terrain-source.d.ts +2 -40
- package/dist/lib/terrain-source.d.ts.map +1 -1
- package/dist/lib/terrain-source.js +2 -68
- package/dist/lib/terrain-support-query.d.ts +83 -0
- package/dist/lib/terrain-support-query.d.ts.map +1 -0
- package/dist/lib/terrain-support-query.js +187 -0
- package/dist/lib/terrain-support.d.ts +1 -77
- package/dist/lib/terrain-support.d.ts.map +1 -1
- package/dist/lib/terrain-support.js +3 -181
- package/dist/lib/unit-containment.js +2 -2
- package/dist/lib/unit-report.d.ts.map +1 -1
- package/dist/lib/unit-report.js +5 -4
- package/dist/lib/zone-colors.d.ts +11 -0
- package/dist/lib/zone-colors.d.ts.map +1 -0
- package/dist/lib/zone-colors.js +32 -0
- package/dist/lib/zone-quantities.d.ts.map +1 -1
- package/dist/lib/zone-quantities.js +113 -223
- package/dist/material-library.d.ts +9 -1
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +550 -1
- package/dist/node-slots/block.d.ts +7 -0
- package/dist/node-slots/block.d.ts.map +1 -0
- package/dist/node-slots/block.js +27 -0
- package/dist/node-slots/cabinet.d.ts +4 -0
- package/dist/node-slots/cabinet.d.ts.map +1 -0
- package/dist/node-slots/cabinet.js +24 -0
- package/dist/node-slots/ceiling.d.ts +6 -0
- package/dist/node-slots/ceiling.d.ts.map +1 -0
- package/dist/node-slots/ceiling.js +7 -0
- package/dist/node-slots/column.d.ts +9 -0
- package/dist/node-slots/column.d.ts.map +1 -0
- package/dist/node-slots/column.js +24 -0
- package/dist/node-slots/door.d.ts +9 -0
- package/dist/node-slots/door.d.ts.map +1 -0
- package/dist/node-slots/door.js +20 -0
- package/dist/node-slots/duct.d.ts +5 -0
- package/dist/node-slots/duct.d.ts.map +1 -0
- package/dist/node-slots/duct.js +5 -0
- package/dist/node-slots/elevator.d.ts +9 -0
- package/dist/node-slots/elevator.d.ts.map +1 -0
- package/dist/node-slots/elevator.js +17 -0
- package/dist/node-slots/fence.d.ts +10 -0
- package/dist/node-slots/fence.d.ts.map +1 -0
- package/dist/node-slots/fence.js +23 -0
- package/dist/node-slots/index.d.ts +25 -0
- package/dist/node-slots/index.d.ts.map +1 -0
- package/dist/node-slots/index.js +92 -0
- package/dist/node-slots/lean-to-extension.d.ts +5 -0
- package/dist/node-slots/lean-to-extension.d.ts.map +1 -0
- package/dist/node-slots/lean-to-extension.js +15 -0
- package/dist/node-slots/procedural-item.d.ts +4 -0
- package/dist/node-slots/procedural-item.d.ts.map +1 -0
- package/dist/node-slots/procedural-item.js +3 -0
- package/dist/node-slots/roof-accessories.d.ts +9 -0
- package/dist/node-slots/roof-accessories.d.ts.map +1 -0
- package/dist/node-slots/roof-accessories.js +34 -0
- package/dist/node-slots/shelf.d.ts +9 -0
- package/dist/node-slots/shelf.d.ts.map +1 -0
- package/dist/node-slots/shelf.js +30 -0
- package/dist/node-slots/slab.d.ts +7 -0
- package/dist/node-slots/slab.d.ts.map +1 -0
- package/dist/node-slots/slab.js +21 -0
- package/dist/node-slots/stair.d.ts +8 -0
- package/dist/node-slots/stair.d.ts.map +1 -0
- package/dist/node-slots/stair.js +17 -0
- package/dist/node-slots/wall.d.ts +12 -0
- package/dist/node-slots/wall.d.ts.map +1 -0
- package/dist/node-slots/wall.js +55 -0
- package/dist/node-slots/window.d.ts +5 -0
- package/dist/node-slots/window.d.ts.map +1 -0
- package/dist/node-slots/window.js +11 -0
- package/dist/procedural-items/design-placement.d.ts +49 -0
- package/dist/procedural-items/design-placement.d.ts.map +1 -0
- package/dist/procedural-items/design-placement.js +129 -0
- package/dist/procedural-items/design.d.ts +261 -0
- package/dist/procedural-items/design.d.ts.map +1 -0
- package/dist/procedural-items/design.js +707 -0
- package/dist/procedural-items/fixtures.d.ts +464 -24
- package/dist/procedural-items/fixtures.d.ts.map +1 -1
- package/dist/procedural-items/index.d.ts +5 -0
- package/dist/procedural-items/index.d.ts.map +1 -1
- package/dist/procedural-items/index.js +5 -0
- package/dist/procedural-items/integration.d.ts +127 -6
- package/dist/procedural-items/integration.d.ts.map +1 -1
- package/dist/procedural-items/joints.d.ts +56 -0
- package/dist/procedural-items/joints.d.ts.map +1 -0
- package/dist/procedural-items/joints.js +251 -0
- package/dist/procedural-items/library-colors.d.ts +12 -0
- package/dist/procedural-items/library-colors.d.ts.map +1 -1
- package/dist/procedural-items/library-colors.js +37 -3
- package/dist/procedural-items/motion-controller.d.ts +29 -0
- package/dist/procedural-items/motion-controller.d.ts.map +1 -0
- package/dist/procedural-items/motion-controller.js +130 -0
- package/dist/procedural-items/node.d.ts +490 -24
- package/dist/procedural-items/node.d.ts.map +1 -1
- package/dist/procedural-items/query.d.ts +18 -1
- package/dist/procedural-items/query.d.ts.map +1 -1
- package/dist/procedural-items/query.js +78 -39
- package/dist/procedural-items/recipe.d.ts +258 -14
- package/dist/procedural-items/recipe.d.ts.map +1 -1
- package/dist/procedural-items/recipe.js +933 -61
- package/dist/procedural-items/section.d.ts +27 -0
- package/dist/procedural-items/section.d.ts.map +1 -0
- package/dist/procedural-items/section.js +237 -0
- package/dist/procedural-items/spatial.d.ts +21 -0
- package/dist/procedural-items/spatial.d.ts.map +1 -1
- package/dist/procedural-items/spatial.js +90 -0
- package/dist/registry/handles.d.ts +2 -0
- package/dist/registry/handles.d.ts.map +1 -1
- package/dist/registry/index.d.ts +6 -4
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +4 -2
- package/dist/registry/mechanism.d.ts +9 -0
- package/dist/registry/mechanism.d.ts.map +1 -0
- package/dist/registry/mechanism.js +21 -0
- package/dist/registry/registry.d.ts +6 -3
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +59 -22
- package/dist/registry/scene-api.d.ts +20 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +26 -13
- package/dist/registry/subtree.d.ts +8 -0
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +53 -0
- package/dist/registry/types.d.ts +340 -11
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
- package/dist/schema/__fixtures__/node-fixtures.js +2 -0
- package/dist/schema/assembly.d.ts +153 -0
- package/dist/schema/assembly.d.ts.map +1 -0
- package/dist/schema/assembly.js +155 -0
- package/dist/schema/asset-url.d.ts +2 -1
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/asset-url.js +5 -2
- package/dist/schema/base.d.ts +26 -0
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +2 -0
- package/dist/schema/collection-templates.d.ts +46 -0
- package/dist/schema/collection-templates.d.ts.map +1 -0
- package/dist/schema/collection-templates.js +14 -0
- package/dist/schema/collections.d.ts +7 -0
- package/dist/schema/collections.d.ts.map +1 -1
- package/dist/schema/cut.d.ts +29 -0
- package/dist/schema/cut.d.ts.map +1 -0
- package/dist/schema/cut.js +50 -0
- package/dist/schema/geometry-metadata.d.ts +51 -0
- package/dist/schema/geometry-metadata.d.ts.map +1 -0
- package/dist/schema/geometry-metadata.js +57 -0
- package/dist/schema/geometry-source.d.ts +250 -0
- package/dist/schema/geometry-source.d.ts.map +1 -0
- package/dist/schema/geometry-source.js +130 -0
- package/dist/schema/index.d.ts +19 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +21 -5
- package/dist/schema/nodes/block.d.ts +26 -0
- package/dist/schema/nodes/block.d.ts.map +1 -1
- package/dist/schema/nodes/block.js +1 -1
- package/dist/schema/nodes/box-vent.d.ts +26 -0
- package/dist/schema/nodes/box-vent.d.ts.map +1 -1
- package/dist/schema/nodes/building.d.ts +26 -0
- package/dist/schema/nodes/building.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.d.ts +61 -9
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.d.ts +37 -0
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +8 -0
- package/dist/schema/nodes/chimney.d.ts +26 -0
- package/dist/schema/nodes/chimney.d.ts.map +1 -1
- package/dist/schema/nodes/column.d.ts +126 -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 +26 -0
- package/dist/schema/nodes/construction-dimension.d.ts.map +1 -1
- package/dist/schema/nodes/cupola.d.ts +26 -0
- package/dist/schema/nodes/cupola.d.ts.map +1 -1
- package/dist/schema/nodes/curtain-wall.d.ts +5 -5
- package/dist/schema/nodes/door.d.ts +139 -20
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +18 -33
- package/dist/schema/nodes/dormer.d.ts +28 -2
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +27 -1
- package/dist/schema/nodes/downspout.d.ts.map +1 -1
- package/dist/schema/nodes/duct-fitting.d.ts +27 -1
- package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
- package/dist/schema/nodes/duct-segment.d.ts +27 -1
- package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
- package/dist/schema/nodes/duct-terminal.d.ts +26 -0
- package/dist/schema/nodes/duct-terminal.d.ts.map +1 -1
- package/dist/schema/nodes/elevator.d.ts +26 -0
- package/dist/schema/nodes/elevator.d.ts.map +1 -1
- package/dist/schema/nodes/eyebrow-vent.d.ts +26 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
- package/dist/schema/nodes/fence-feature.d.ts +141 -0
- package/dist/schema/nodes/fence-feature.d.ts.map +1 -0
- package/dist/schema/nodes/fence-feature.js +21 -0
- package/dist/schema/nodes/fence.d.ts +186 -0
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +92 -7
- package/dist/schema/nodes/floor-opening.d.ts +61 -0
- package/dist/schema/nodes/floor-opening.d.ts.map +1 -0
- package/dist/schema/nodes/floor-opening.js +17 -0
- package/dist/schema/nodes/guide.d.ts +26 -0
- package/dist/schema/nodes/guide.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.d.ts +26 -0
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/hvac-equipment.d.ts +26 -0
- package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -1
- package/dist/schema/nodes/imported-mesh.d.ts +26 -0
- package/dist/schema/nodes/imported-mesh.d.ts.map +1 -1
- package/dist/schema/nodes/item.d.ts +153 -2
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +13 -0
- package/dist/schema/nodes/lean-to-extension.d.ts +26 -0
- package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -1
- package/dist/schema/nodes/level.d.ts +27 -1
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/lineset.d.ts +26 -0
- package/dist/schema/nodes/lineset.d.ts.map +1 -1
- package/dist/schema/nodes/liquid-line.d.ts +26 -0
- package/dist/schema/nodes/liquid-line.d.ts.map +1 -1
- package/dist/schema/nodes/measurement.d.ts +26 -0
- package/dist/schema/nodes/measurement.d.ts.map +1 -1
- package/dist/schema/nodes/opening-types.d.ts +41 -0
- package/dist/schema/nodes/opening-types.d.ts.map +1 -0
- package/dist/schema/nodes/opening-types.js +48 -0
- package/dist/schema/nodes/pipe-fitting.d.ts +26 -0
- package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-segment.d.ts +26 -0
- package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-trap.d.ts +26 -0
- package/dist/schema/nodes/pipe-trap.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.d.ts +26 -0
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.js +2 -1
- package/dist/schema/nodes/roof-segment.d.ts +30 -2
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +9 -0
- package/dist/schema/nodes/roof.d.ts +101 -0
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +6 -0
- package/dist/schema/nodes/scan.d.ts +26 -0
- package/dist/schema/nodes/scan.d.ts.map +1 -1
- package/dist/schema/nodes/separator.d.ts +50 -0
- package/dist/schema/nodes/separator.d.ts.map +1 -0
- package/dist/schema/nodes/separator.js +8 -0
- package/dist/schema/nodes/shelf.d.ts +26 -0
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/site.d.ts +192 -0
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +178 -1
- package/dist/schema/nodes/skylight.d.ts +30 -4
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +84 -0
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +37 -2
- package/dist/schema/nodes/solar-panel.d.ts +26 -0
- package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
- package/dist/schema/nodes/spawn.d.ts +26 -0
- package/dist/schema/nodes/spawn.d.ts.map +1 -1
- package/dist/schema/nodes/stair-construction.d.ts +21 -0
- package/dist/schema/nodes/stair-construction.d.ts.map +1 -0
- package/dist/schema/nodes/stair-construction.js +13 -0
- package/dist/schema/nodes/stair-design-targets.d.ts +9 -0
- package/dist/schema/nodes/stair-design-targets.d.ts.map +1 -0
- package/dist/schema/nodes/stair-design-targets.js +7 -0
- package/dist/schema/nodes/stair-segment.d.ts +72 -4
- package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
- package/dist/schema/nodes/stair-segment.js +13 -0
- package/dist/schema/nodes/stair.d.ts +119 -2
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +59 -2
- package/dist/schema/nodes/structural-grid.d.ts +26 -0
- package/dist/schema/nodes/structural-grid.d.ts.map +1 -1
- package/dist/schema/nodes/surface-hole-metadata.d.ts +3 -0
- package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -1
- package/dist/schema/nodes/surface-hole-metadata.js +2 -1
- package/dist/schema/nodes/surface-paint-region.d.ts +14 -0
- package/dist/schema/nodes/surface-paint-region.d.ts.map +1 -0
- package/dist/schema/nodes/surface-paint-region.js +12 -0
- package/dist/schema/nodes/turbine-vent.d.ts +26 -0
- package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
- package/dist/schema/nodes/unit.d.ts +26 -0
- package/dist/schema/nodes/unit.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +352 -61
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +185 -186
- package/dist/schema/nodes/window.d.ts +139 -20
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +12 -14
- package/dist/schema/nodes/zone.d.ts +69 -1
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +46 -0
- package/dist/schema/provenance.d.ts +118 -0
- package/dist/schema/provenance.d.ts.map +1 -0
- package/dist/schema/provenance.js +76 -0
- package/dist/schema/source-ref.d.ts +23 -0
- package/dist/schema/source-ref.d.ts.map +1 -0
- package/dist/schema/source-ref.js +29 -0
- package/dist/schema/types.d.ts +3317 -68
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +7 -0
- package/dist/services/alignment-anchors.d.ts +2 -1
- package/dist/services/alignment-anchors.d.ts.map +1 -1
- package/dist/services/alignment-anchors.js +9 -6
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/level-height.d.ts.map +1 -1
- package/dist/services/level-height.js +6 -4
- package/dist/services/storey.d.ts +21 -1
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +94 -8
- package/dist/services/surface-hosting.d.ts.map +1 -1
- package/dist/services/surface-hosting.js +4 -1
- package/dist/store/actions/node-actions.d.ts +4563 -8
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +495 -174
- package/dist/store/derived-node-guard.d.ts +84 -0
- package/dist/store/derived-node-guard.d.ts.map +1 -0
- package/dist/store/derived-node-guard.js +586 -0
- package/dist/store/history-control.d.ts +34 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +99 -1
- package/dist/store/history-drafts.d.ts +48 -0
- package/dist/store/history-drafts.d.ts.map +1 -0
- package/dist/store/history-drafts.js +403 -0
- package/dist/store/history-invalidation.d.ts.map +1 -1
- package/dist/store/history-invalidation.js +1 -0
- package/dist/store/item-interaction.d.ts +28 -0
- package/dist/store/item-interaction.d.ts.map +1 -0
- package/dist/store/item-interaction.js +34 -0
- package/dist/store/registered-node-defaults.d.ts +11 -0
- package/dist/store/registered-node-defaults.d.ts.map +1 -0
- package/dist/store/registered-node-defaults.js +25 -0
- package/dist/store/scene-annotations.d.ts +8969 -0
- package/dist/store/scene-annotations.d.ts.map +1 -0
- package/dist/store/scene-annotations.js +107 -0
- package/dist/store/use-interactive.d.ts +23 -1
- package/dist/store/use-interactive.d.ts.map +1 -1
- package/dist/store/use-interactive.js +128 -5
- package/dist/store/use-scene.d.ts +68 -12
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +416 -305
- package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-sync.js +4 -6
- package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-system.js +12 -6
- package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-service.js +8 -3
- package/dist/systems/fence/fence-centerline.d.ts.map +1 -1
- package/dist/systems/fence/fence-centerline.js +6 -5
- package/dist/systems/fence/fence-features.d.ts +36 -0
- package/dist/systems/fence/fence-features.d.ts.map +1 -0
- package/dist/systems/fence/fence-features.js +105 -0
- package/dist/systems/fence/fence-spline.d.ts +8 -5
- package/dist/systems/fence/fence-spline.d.ts.map +1 -1
- package/dist/systems/fence/fence-spline.js +51 -16
- package/dist/systems/owned-floor-openings.d.ts +9 -0
- package/dist/systems/owned-floor-openings.d.ts.map +1 -0
- package/dist/systems/owned-floor-openings.js +326 -0
- package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -0
- package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -0
- package/dist/systems/reconcile-owned-floor-openings.js +25 -0
- package/dist/systems/slab/__fixtures__/doorway-steps.d.ts +8 -0
- package/dist/systems/slab/__fixtures__/doorway-steps.d.ts.map +1 -0
- package/dist/systems/slab/__fixtures__/doorway-steps.js +62 -0
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +5636 -0
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -0
- package/dist/systems/slab/__fixtures__/floor-step.js +66 -0
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +5775 -0
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -0
- package/dist/systems/slab/__fixtures__/raised-room.js +54 -0
- package/dist/systems/slab/ensure-slab-openings.d.ts +9 -0
- package/dist/systems/slab/ensure-slab-openings.d.ts.map +1 -0
- package/dist/systems/slab/ensure-slab-openings.js +41 -0
- package/dist/systems/slab/slab-support.d.ts +25 -6
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +471 -54
- package/dist/systems/stair/stair-base-elevation.d.ts +3 -0
- package/dist/systems/stair/stair-base-elevation.d.ts.map +1 -0
- package/dist/systems/stair/stair-base-elevation.js +49 -0
- package/dist/systems/stair/stair-clearance.d.ts +39 -0
- package/dist/systems/stair/stair-clearance.d.ts.map +1 -0
- package/dist/systems/stair/stair-clearance.js +508 -0
- package/dist/systems/stair/stair-construction.d.ts +37 -0
- package/dist/systems/stair/stair-construction.d.ts.map +1 -0
- package/dist/systems/stair/stair-construction.js +314 -0
- package/dist/systems/stair/stair-detail-budget.d.ts +13 -0
- package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -0
- package/dist/systems/stair/stair-detail-budget.js +64 -0
- package/dist/systems/stair/stair-flight.d.ts +2 -2
- package/dist/systems/stair/stair-flight.d.ts.map +1 -1
- package/dist/systems/stair/stair-flight.js +4 -3
- package/dist/systems/stair/stair-floor-footprints.d.ts +7 -0
- package/dist/systems/stair/stair-floor-footprints.d.ts.map +1 -0
- package/dist/systems/stair/stair-floor-footprints.js +113 -0
- package/dist/systems/stair/stair-footprint.d.ts +3 -1
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +97 -44
- package/dist/systems/stair/stair-layout.d.ts +39 -0
- package/dist/systems/stair/stair-layout.d.ts.map +1 -0
- package/dist/systems/stair/stair-layout.js +58 -0
- package/dist/systems/stair/stair-opening-preview.d.ts +1612 -80
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.d.ts +8 -2
- package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.js +136 -315
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.js +40 -8
- package/dist/systems/stair/stair-presets.d.ts +276 -0
- package/dist/systems/stair/stair-presets.d.ts.map +1 -0
- package/dist/systems/stair/stair-presets.js +151 -0
- package/dist/systems/stair/stair-rail-budget.d.ts +6 -0
- package/dist/systems/stair/stair-rail-budget.d.ts.map +1 -0
- package/dist/systems/stair/stair-rail-budget.js +36 -0
- package/dist/systems/stair/stair-rail-path.d.ts +22 -0
- package/dist/systems/stair/stair-rail-path.d.ts.map +1 -0
- package/dist/systems/stair/stair-rail-path.js +497 -0
- package/dist/systems/stair/stair-rise-edit.d.ts +9 -0
- package/dist/systems/stair/stair-rise-edit.d.ts.map +1 -0
- package/dist/systems/stair/stair-rise-edit.js +46 -0
- package/dist/systems/stair/stair-rise-query.d.ts +24 -0
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -0
- package/dist/systems/stair/stair-rise-query.js +125 -0
- package/dist/systems/stair/stair-rise.d.ts +4 -19
- package/dist/systems/stair/stair-rise.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise.js +8 -71
- package/dist/systems/stair/stair-sizing.d.ts +414 -0
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -0
- package/dist/systems/stair/stair-sizing.js +255 -0
- package/dist/systems/stair/stair-sweep-edit.d.ts +7 -0
- package/dist/systems/stair/stair-sweep-edit.d.ts.map +1 -0
- package/dist/systems/stair/stair-sweep-edit.js +8 -0
- package/dist/systems/stair/stair-walking-line.d.ts +5 -0
- package/dist/systems/stair/stair-walking-line.d.ts.map +1 -0
- package/dist/systems/stair/stair-walking-line.js +91 -0
- package/dist/systems/stair/stair-winder.d.ts +36 -0
- package/dist/systems/stair/stair-winder.d.ts.map +1 -0
- package/dist/systems/stair/stair-winder.js +173 -0
- package/dist/systems/wall/wall-assembly.d.ts +234 -0
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -0
- package/dist/systems/wall/wall-assembly.js +854 -0
- package/dist/systems/wall/wall-curve.d.ts +2 -1
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +21 -5
- package/dist/systems/wall/wall-finish.d.ts +102 -0
- package/dist/systems/wall/wall-finish.d.ts.map +1 -0
- package/dist/systems/wall/wall-finish.js +264 -0
- package/dist/systems/wall/wall-footprint.d.ts +3 -0
- package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
- package/dist/systems/wall/wall-footprint.js +15 -13
- package/dist/systems/wall/wall-frame.d.ts +45 -0
- package/dist/systems/wall/wall-frame.d.ts.map +1 -0
- package/dist/systems/wall/wall-frame.js +162 -0
- package/dist/systems/wall/wall-layer-bands.d.ts +38 -0
- package/dist/systems/wall/wall-layer-bands.d.ts.map +1 -0
- package/dist/systems/wall/wall-layer-bands.js +109 -0
- package/dist/systems/wall/wall-merge.d.ts +20 -1
- package/dist/systems/wall/wall-merge.d.ts.map +1 -1
- package/dist/systems/wall/wall-merge.js +189 -18
- package/dist/systems/wall/wall-mitering.d.ts +6 -5
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +70 -20
- package/dist/systems/wall/wall-operations.d.ts +1 -1
- package/dist/systems/wall/wall-operations.d.ts.map +1 -1
- package/dist/systems/wall/wall-operations.js +2 -1
- package/dist/systems/wall/wall-paint-plan.d.ts +30 -0
- package/dist/systems/wall/wall-paint-plan.d.ts.map +1 -0
- package/dist/systems/wall/wall-paint-plan.js +167 -0
- package/dist/systems/wall/wall-room-sides.d.ts +6 -0
- package/dist/systems/wall/wall-room-sides.d.ts.map +1 -0
- package/dist/systems/wall/wall-room-sides.js +14 -0
- package/dist/systems/wall/wall-step-openings.d.ts +17 -0
- package/dist/systems/wall/wall-step-openings.d.ts.map +1 -0
- package/dist/systems/wall/wall-step-openings.js +32 -0
- package/dist/systems/wall/wall-top.d.ts +2 -6
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +3 -9
- package/dist/systems/wall/wall-topology.d.ts +21 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +405 -4
- package/dist/utils/clone-scene-graph.d.ts +6 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +123 -15
- package/dist/utils/ensure-scene-openings.d.ts +8965 -0
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -0
- package/dist/utils/ensure-scene-openings.js +29 -0
- package/dist/utils/exterior-threshold-migration.d.ts +4 -0
- package/dist/utils/exterior-threshold-migration.d.ts.map +1 -0
- package/dist/utils/exterior-threshold-migration.js +114 -0
- package/dist/utils/floor-follow-migration.d.ts +3 -0
- package/dist/utils/floor-follow-migration.d.ts.map +1 -0
- package/dist/utils/floor-follow-migration.js +29 -0
- package/dist/utils/floor-opening-migration.d.ts +13 -0
- package/dist/utils/floor-opening-migration.d.ts.map +1 -0
- package/dist/utils/floor-opening-migration.js +148 -0
- package/dist/utils/floor-piece-adoption.d.ts +50 -0
- package/dist/utils/floor-piece-adoption.d.ts.map +1 -0
- package/dist/utils/floor-piece-adoption.js +182 -0
- package/dist/utils/floor-plate-migration.d.ts +4507 -0
- package/dist/utils/floor-plate-migration.d.ts.map +1 -0
- package/dist/utils/floor-plate-migration.js +1360 -0
- package/dist/utils/heal-plan-coordinates.d.ts +2 -0
- package/dist/utils/heal-plan-coordinates.d.ts.map +1 -0
- package/dist/utils/heal-plan-coordinates.js +69 -0
- package/dist/utils/heal-scene-graph.d.ts +20 -6
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +61 -16
- package/dist/utils/legacy-material-slots.d.ts +23 -0
- package/dist/utils/legacy-material-slots.d.ts.map +1 -0
- package/dist/utils/legacy-material-slots.js +120 -0
- package/dist/utils/legacy-opening-datums.d.ts +11 -0
- package/dist/utils/legacy-opening-datums.d.ts.map +1 -0
- package/dist/utils/legacy-opening-datums.js +92 -0
- package/dist/utils/legacy-wall-datums.d.ts +6 -0
- package/dist/utils/legacy-wall-datums.d.ts.map +1 -0
- package/dist/utils/legacy-wall-datums.js +199 -0
- package/dist/utils/load-migration.d.ts +28 -0
- package/dist/utils/load-migration.d.ts.map +1 -0
- package/dist/utils/load-migration.js +89 -0
- package/dist/utils/node-defaults.d.ts +37 -0
- package/dist/utils/node-defaults.d.ts.map +1 -0
- package/dist/utils/node-defaults.js +96 -0
- package/dist/utils/normalize-legacy-structure.d.ts +2 -0
- package/dist/utils/normalize-legacy-structure.d.ts.map +1 -0
- package/dist/utils/normalize-legacy-structure.js +61 -0
- package/dist/utils/omit-undefined.d.ts +2 -0
- package/dist/utils/omit-undefined.d.ts.map +1 -0
- package/dist/utils/omit-undefined.js +17 -0
- package/dist/utils/owned-floor-opening-migration.d.ts +4489 -0
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -0
- package/dist/utils/owned-floor-opening-migration.js +365 -0
- package/dist/utils/reconcile-structure-on-load.d.ts +8965 -0
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -0
- package/dist/utils/reconcile-structure-on-load.js +307 -0
- package/dist/utils/room-zone-migration.d.ts +18 -0
- package/dist/utils/room-zone-migration.d.ts.map +1 -0
- package/dist/utils/room-zone-migration.js +258 -0
- package/dist/utils/scene-migrations.d.ts +16 -1
- package/dist/utils/scene-migrations.d.ts.map +1 -1
- package/dist/utils/scene-migrations.js +15 -1
- package/dist/utils/structure-id.d.ts +4 -0
- package/dist/utils/structure-id.d.ts.map +1 -0
- package/dist/utils/structure-id.js +115 -0
- package/dist/utils/vertical-scene-migration.d.ts +8 -8
- package/dist/utils/vertical-scene-migration.d.ts.map +1 -1
- package/dist/utils/vertical-scene-migration.js +18 -8
- package/dist/utils/wall-assembly-migration.d.ts +14 -0
- package/dist/utils/wall-assembly-migration.d.ts.map +1 -0
- package/dist/utils/wall-assembly-migration.js +23 -0
- package/dist/utils/wall-face-migration.d.ts +23 -0
- package/dist/utils/wall-face-migration.d.ts.map +1 -0
- package/dist/utils/wall-face-migration.js +246 -0
- package/dist/validation/opening-bounds.d.ts +36 -0
- package/dist/validation/opening-bounds.d.ts.map +1 -0
- package/dist/validation/opening-bounds.js +34 -0
- 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 +36 -1
- package/package.json +36 -3
- package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +0 -13
- package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +0 -1
- package/dist/services/surface-hosting-procedural-parity.fixtures.js +0 -4691
- package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +0 -1060
- package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +0 -1
- package/dist/services/surface-hosting-shelf-parity.fixtures.js +0 -3127
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { planWallDeletion } from '../../commands/structure/plan-wall-deletion.js';
|
|
2
|
+
import { withoutFloorStepOverrideKeys } from '../../lib/floor-step-finish.js';
|
|
3
|
+
import { isSpaceDetectionPaused } from '../../lib/space-detection.js';
|
|
1
4
|
import { nodeRegistry } from '../../registry/registry.js';
|
|
2
5
|
import { validateNodeRelations } from '../../registry/validate-relations.js';
|
|
3
6
|
import { AnyNode as AnyNodeSchema, createDefaultGuttersForSegment, createDefaultRidgeVentsForSegment, DownspoutNode as DownspoutNodeSchema, defaultDownspoutMetadata, generateId, getDefaultGutterSide, isAutoGutterEnabled, isAutoRidgeVentEnabled, isDefaultDownspoutNode, isDefaultGutterNode, isDefaultRidgeVentNode, parseNode, planAutomaticDownspouts, resolveAutomaticDownspoutLength, } from '../../schema/index.js';
|
|
7
|
+
import { Provenance } from '../../schema/provenance.js';
|
|
4
8
|
import { constrainWallCurveOffsetToAvoidIntersections } from '../../systems/wall/wall-curve.js';
|
|
5
|
-
import { areWallStylesCompatible, areWallsCollinearAcrossPoint, buildMergedWallAttachmentUpdates, getWallEndpointAtPoint, resolveMergedWallEndpoints, } from '../../systems/wall/wall-merge.js';
|
|
9
|
+
import { areWallStylesCompatible, areWallsCollinearAcrossPoint, buildMergedWallAttachmentUpdates, getWallEndpointAtPoint, mergeWallFaceRegions, planMergedZoneReferences, resolveMergedWallEndpoints, } from '../../systems/wall/wall-merge.js';
|
|
10
|
+
import { convertDerivedPlateHoleWrites, DERIVED_WRITER_TOKEN, derivedDeletionIntent, derivedDetachPatch, filterDerivedNodeWrites, isDerivedNode, } from '../derived-node-guard.js';
|
|
6
11
|
import { activeSceneCommitNodeIds, addActiveSceneCommitNodeIds, runWithSceneCommitNodeIds, } from '../history-control.js';
|
|
7
12
|
const DEFAULT_RIDGE_VENT_REFRESH_FIELDS = new Set([
|
|
8
13
|
'roofType',
|
|
@@ -367,12 +372,42 @@ function warnSanitizedNodeMutation(mutation, nodeId, issues) {
|
|
|
367
372
|
// A broken diagnostic sink must not interrupt a node mutation either.
|
|
368
373
|
}
|
|
369
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* Source ids cannot be repaired the way the numeric fallback repairs a value:
|
|
377
|
+
* any fix would drop or rewrite them (D5). A write that sets an invalid
|
|
378
|
+
* `provenance` throws, whatever the node's kind (a plain plugin kind never
|
|
379
|
+
* reaches a schema that knows the field), so the mutation applies nothing.
|
|
380
|
+
*/
|
|
381
|
+
function assertProvenanceWrite(nodeId, value) {
|
|
382
|
+
if (value === undefined)
|
|
383
|
+
return;
|
|
384
|
+
const parsed = Provenance.safeParse(value);
|
|
385
|
+
if (parsed.success)
|
|
386
|
+
return;
|
|
387
|
+
const issue = parsed.error.issues[0];
|
|
388
|
+
const at = ['provenance', ...(issue?.path ?? [])].join('.');
|
|
389
|
+
throw new Error(`Node "${nodeId}": provenance refused at ${at}: ${issue?.message}`);
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* A strict kind parses everything but `provenance`, which core checks on write
|
|
393
|
+
* and carries verbatim: a stored over-cap value (kept at load) must not make
|
|
394
|
+
* the node uneditable, and a schema that never declared the base field must
|
|
395
|
+
* not drop it.
|
|
396
|
+
*/
|
|
397
|
+
function parseStrict(schema, candidate) {
|
|
398
|
+
if (!Object.hasOwn(candidate, 'provenance'))
|
|
399
|
+
return schema.parse(candidate);
|
|
400
|
+
const { provenance, ...rest } = candidate;
|
|
401
|
+
const parsed = schema.parse(rest);
|
|
402
|
+
return provenance === undefined ? parsed : { ...parsed, provenance };
|
|
403
|
+
}
|
|
370
404
|
function parseCreatedNode(node, parentId) {
|
|
371
405
|
const candidate = { ...node, parentId };
|
|
406
|
+
assertProvenanceWrite(candidate.id, candidate.provenance);
|
|
372
407
|
const registered = nodeRegistry.get(candidate.type)?.schema;
|
|
373
408
|
// Generated definitions must reject invalid geometry instead of retaining a failed parse.
|
|
374
409
|
if (registered?.meta?.()?.strictMutations === true)
|
|
375
|
-
return registered
|
|
410
|
+
return parseStrict(registered, candidate);
|
|
376
411
|
const parsed = parseNode(candidate);
|
|
377
412
|
if (parsed.success)
|
|
378
413
|
return parsed.data;
|
|
@@ -398,6 +433,9 @@ function mergeNodeUpdate(currentNode, patch) {
|
|
|
398
433
|
return merged;
|
|
399
434
|
}
|
|
400
435
|
function parseUpdatedNode(currentNode, data) {
|
|
436
|
+
// Only a write of the field is checked: a stored over-cap value stays editable.
|
|
437
|
+
if (Object.hasOwn(data, 'provenance'))
|
|
438
|
+
assertProvenanceWrite(currentNode.id, data.provenance);
|
|
401
439
|
const candidate = mergeNodeUpdate(currentNode, data);
|
|
402
440
|
// Graph links survive schemas that omit children; only an explicit patch may change them.
|
|
403
441
|
const preserveChildren = (updated) => !Object.hasOwn(data, 'children') &&
|
|
@@ -408,7 +446,7 @@ function parseUpdatedNode(currentNode, data) {
|
|
|
408
446
|
const registered = nodeRegistry.get(currentNode.type)?.schema;
|
|
409
447
|
// Generated definitions must reject invalid geometry instead of retaining a failed parse.
|
|
410
448
|
if (registered?.meta?.()?.strictMutations === true)
|
|
411
|
-
return preserveChildren(registered
|
|
449
|
+
return preserveChildren(parseStrict(registered, candidate));
|
|
412
450
|
const parsed = parseNode(candidate);
|
|
413
451
|
if (parsed.success)
|
|
414
452
|
return preserveChildren(parsed.data);
|
|
@@ -788,6 +826,11 @@ function buildWallMergePlans(nodes, idsToDelete) {
|
|
|
788
826
|
continue;
|
|
789
827
|
}
|
|
790
828
|
const { start, end } = resolveMergedWallEndpoints(primary, secondary, junction);
|
|
829
|
+
// A heal that would repaint a room or overflow a side's regions leaves the walls split.
|
|
830
|
+
const mergedFaceRegions = mergeWallFaceRegions([primary, secondary], start, end);
|
|
831
|
+
const zoneUpdates = planMergedZoneReferences(nodes, primary, secondary, start, end);
|
|
832
|
+
if (!(mergedFaceRegions && zoneUpdates))
|
|
833
|
+
continue;
|
|
791
834
|
const mergedChildren = Array.from(new Set([...(primary.children ?? []), ...(secondary.children ?? [])]));
|
|
792
835
|
const attachmentUpdates = buildMergedWallAttachmentUpdates(primary, secondary, primary.id, start, end, nodes);
|
|
793
836
|
mergePlans.push({
|
|
@@ -796,7 +839,9 @@ function buildWallMergePlans(nodes, idsToDelete) {
|
|
|
796
839
|
mergedStart: start,
|
|
797
840
|
mergedEnd: end,
|
|
798
841
|
mergedChildren,
|
|
842
|
+
mergedFaceRegions: mergedFaceRegions.length > 0 ? mergedFaceRegions : undefined,
|
|
799
843
|
attachmentUpdates,
|
|
844
|
+
zoneUpdates,
|
|
800
845
|
});
|
|
801
846
|
usedWallIds.add(primary.id);
|
|
802
847
|
usedWallIds.add(secondary.id);
|
|
@@ -804,17 +849,21 @@ function buildWallMergePlans(nodes, idsToDelete) {
|
|
|
804
849
|
}
|
|
805
850
|
return mergePlans;
|
|
806
851
|
}
|
|
807
|
-
const createNodesActionImpl = (set, get, ops) => {
|
|
852
|
+
const createNodesActionImpl = (set, get, ops, options) => {
|
|
808
853
|
if (get().readOnly)
|
|
809
854
|
return;
|
|
855
|
+
ops = filterDerivedNodeWrites(get().nodes, { create: ops }, options).create;
|
|
856
|
+
if (!ops.length)
|
|
857
|
+
return;
|
|
810
858
|
const extraNodesToMarkDirty = new Set();
|
|
811
859
|
const extraNodesToClearDirty = new Set();
|
|
812
860
|
set((state) => {
|
|
813
861
|
const nextNodes = { ...state.nodes };
|
|
814
862
|
const nextRootIds = [...state.rootNodeIds];
|
|
815
|
-
|
|
863
|
+
const nextCollections = { ...state.collections };
|
|
864
|
+
for (const { node, parentId, collectionIds } of ops) {
|
|
816
865
|
const effectiveParentId = parentId ?? node.parentId ?? null;
|
|
817
|
-
const newNode = parseCreatedNode(node, effectiveParentId);
|
|
866
|
+
const newNode = joinCollections(nextCollections, parseCreatedNode(node, effectiveParentId), collectionIds);
|
|
818
867
|
nextNodes[newNode.id] = newNode;
|
|
819
868
|
// 2. Update the Parent's children list. We append to ANY container
|
|
820
869
|
// parent (kind has `children` in its schema) — if the field is
|
|
@@ -853,7 +902,12 @@ const createNodesActionImpl = (set, get, ops) => {
|
|
|
853
902
|
}
|
|
854
903
|
refreshDefaultGuttersForRoofIds(nextNodes, refreshedRoofIds, extraNodesToMarkDirty, extraNodesToClearDirty);
|
|
855
904
|
addActiveSceneCommitNodeIds([...extraNodesToMarkDirty, ...extraNodesToClearDirty]);
|
|
856
|
-
|
|
905
|
+
const joined = Object.entries(nextCollections).some(([id, collection]) => state.collections[id] !== collection);
|
|
906
|
+
return {
|
|
907
|
+
nodes: nextNodes,
|
|
908
|
+
rootNodeIds: nextRootIds,
|
|
909
|
+
...(joined && { collections: nextCollections }),
|
|
910
|
+
};
|
|
857
911
|
});
|
|
858
912
|
// 4. System Sync
|
|
859
913
|
ops.forEach(({ node, parentId }) => {
|
|
@@ -868,11 +922,55 @@ const createNodesActionImpl = (set, get, ops) => {
|
|
|
868
922
|
for (const id of extraNodesToClearDirty)
|
|
869
923
|
get().clearDirty(id);
|
|
870
924
|
};
|
|
871
|
-
|
|
925
|
+
/**
|
|
926
|
+
* A created node joins the collections it is given, or an item those its mirror
|
|
927
|
+
* names, so a duplicate or a same-project paste stays a member; ids of
|
|
928
|
+
* collections this scene lacks (a paste from another project) are dropped.
|
|
929
|
+
* Writes the joined collections into `collections` and returns the node, an
|
|
930
|
+
* item with its mirror set to what it joined.
|
|
931
|
+
*/
|
|
932
|
+
export function joinCollections(collections, node, requested = node.type === 'item' ? node.collectionIds : undefined) {
|
|
933
|
+
const collectionIds = (requested ?? []).filter((id) => collections[id]);
|
|
934
|
+
for (const id of collectionIds) {
|
|
935
|
+
const collection = collections[id];
|
|
936
|
+
if (!collection.nodeIds.includes(node.id))
|
|
937
|
+
collections[id] = { ...collection, nodeIds: [...collection.nodeIds, node.id] };
|
|
938
|
+
}
|
|
939
|
+
if (node.type !== 'item' || sameIds(node.collectionIds ?? [], collectionIds))
|
|
940
|
+
return node;
|
|
941
|
+
return { ...node, collectionIds };
|
|
942
|
+
}
|
|
943
|
+
function sameIds(left, right) {
|
|
944
|
+
return left.length === right.length && left.every((id, index) => right[index] === id);
|
|
945
|
+
}
|
|
946
|
+
/** The collections `id` belongs to: membership lives on the collection for every kind. */
|
|
947
|
+
export function collectionIdsOf(collections, id) {
|
|
948
|
+
return Object.values(collections)
|
|
949
|
+
.filter((collection) => collection.nodeIds.includes(id))
|
|
950
|
+
.map((collection) => collection.id);
|
|
951
|
+
}
|
|
952
|
+
/** Membership lives on the collection; only items mirror it, so every collection is checked. */
|
|
953
|
+
function removeFromCollections(collections, id) {
|
|
954
|
+
for (const [collectionId, collection] of Object.entries(collections)) {
|
|
955
|
+
if (collection.nodeIds.includes(id))
|
|
956
|
+
collections[collectionId] = {
|
|
957
|
+
...collection,
|
|
958
|
+
nodeIds: collection.nodeIds.filter((nodeId) => nodeId !== id),
|
|
959
|
+
};
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
const applyNodeChangesActionImpl = (set, get, changes, options) => {
|
|
872
963
|
if (get().readOnly)
|
|
873
964
|
return;
|
|
965
|
+
changes = convertDerivedPlateHoleWrites(get().nodes, changes, options);
|
|
966
|
+
changes = filterDerivedNodeWrites(get().nodes, changes, options);
|
|
967
|
+
if (!changes.create?.length && !changes.update?.length && !changes.delete?.length)
|
|
968
|
+
return;
|
|
874
969
|
const createOps = changes.create ?? [];
|
|
875
|
-
const
|
|
970
|
+
const deletionIntent = options?.derivedWriter === DERIVED_WRITER_TOKEN
|
|
971
|
+
? []
|
|
972
|
+
: derivedDeletionIntent(get().nodes, changes.delete ?? []);
|
|
973
|
+
const updateOps = [...(changes.update ?? []), ...deletionIntent];
|
|
876
974
|
const deleteOps = changes.delete ?? [];
|
|
877
975
|
const nodesToMarkDirty = new Set();
|
|
878
976
|
const nodesToClearDirty = new Set();
|
|
@@ -923,9 +1021,9 @@ const applyNodeChangesActionImpl = (set, get, changes) => {
|
|
|
923
1021
|
}
|
|
924
1022
|
nodesToMarkDirty.add(id);
|
|
925
1023
|
}
|
|
926
|
-
for (const { node, parentId } of createOps) {
|
|
1024
|
+
for (const { node, parentId, collectionIds } of createOps) {
|
|
927
1025
|
const effectiveParentId = parentId ?? node.parentId ?? null;
|
|
928
|
-
const newNode = parseCreatedNode(node, effectiveParentId);
|
|
1026
|
+
const newNode = joinCollections(nextCollections, parseCreatedNode(node, effectiveParentId), collectionIds);
|
|
929
1027
|
nextNodes[newNode.id] = newNode;
|
|
930
1028
|
nodesToMarkDirty.add(newNode.id);
|
|
931
1029
|
if (newNode.type === 'roof-segment' && effectiveParentId) {
|
|
@@ -984,17 +1082,7 @@ const applyNodeChangesActionImpl = (set, get, changes) => {
|
|
|
984
1082
|
}
|
|
985
1083
|
}
|
|
986
1084
|
resolvedRootIds = resolvedRootIds.filter((rootId) => rootId !== id);
|
|
987
|
-
|
|
988
|
-
for (const collectionId of node.collectionIds) {
|
|
989
|
-
const collection = nextCollections[collectionId];
|
|
990
|
-
if (collection) {
|
|
991
|
-
nextCollections[collectionId] = {
|
|
992
|
-
...collection,
|
|
993
|
-
nodeIds: collection.nodeIds.filter((nodeId) => nodeId !== id),
|
|
994
|
-
};
|
|
995
|
-
}
|
|
996
|
-
}
|
|
997
|
-
}
|
|
1085
|
+
removeFromCollections(nextCollections, id);
|
|
998
1086
|
delete nextNodes[id];
|
|
999
1087
|
}
|
|
1000
1088
|
refreshDefaultGuttersForRoofIds(nextNodes, roofsToRefresh, nodesToMarkDirty, nodesToClearDirty);
|
|
@@ -1022,9 +1110,17 @@ const applyNodeChangesActionImpl = (set, get, changes) => {
|
|
|
1022
1110
|
}
|
|
1023
1111
|
}
|
|
1024
1112
|
};
|
|
1025
|
-
const updateNodesActionImpl = (set, get, updates) => {
|
|
1113
|
+
const updateNodesActionImpl = (set, get, updates, options, deferDirty = true) => {
|
|
1026
1114
|
if (get().readOnly)
|
|
1027
1115
|
return;
|
|
1116
|
+
const converted = convertDerivedPlateHoleWrites(get().nodes, { update: updates }, options);
|
|
1117
|
+
if (converted.create?.length || converted.delete?.length) {
|
|
1118
|
+
applyNodeChangesActionImpl(set, get, converted, options);
|
|
1119
|
+
return;
|
|
1120
|
+
}
|
|
1121
|
+
updates = filterDerivedNodeWrites(get().nodes, { update: converted.update ?? [] }, options).update;
|
|
1122
|
+
if (!updates.length)
|
|
1123
|
+
return;
|
|
1028
1124
|
const parentsToUpdate = new Set();
|
|
1029
1125
|
const extraNodesToUpdate = new Set();
|
|
1030
1126
|
const extraNodesToDelete = new Set();
|
|
@@ -1101,6 +1197,13 @@ const updateNodesActionImpl = (set, get, updates) => {
|
|
|
1101
1197
|
]);
|
|
1102
1198
|
return { nodes: nextNodes };
|
|
1103
1199
|
});
|
|
1200
|
+
if (!deferDirty) {
|
|
1201
|
+
for (const id of [...updates.map((u) => u.id), ...parentsToUpdate, ...extraNodesToUpdate])
|
|
1202
|
+
get().markDirty(id);
|
|
1203
|
+
for (const id of extraNodesToDelete)
|
|
1204
|
+
get().clearDirty(id);
|
|
1205
|
+
return;
|
|
1206
|
+
}
|
|
1104
1207
|
// Batch dirty-marking into a single RAF to avoid redundant callbacks during rapid updates
|
|
1105
1208
|
for (const u of updates) {
|
|
1106
1209
|
// Visibility is applied by React before the deferred dirty callback. Mark
|
|
@@ -1130,175 +1233,309 @@ const updateNodesActionImpl = (set, get, updates) => {
|
|
|
1130
1233
|
pendingRafId = null;
|
|
1131
1234
|
});
|
|
1132
1235
|
};
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1236
|
+
/**
|
|
1237
|
+
* The delete store action's planner, without committing: the requested ids,
|
|
1238
|
+
* their `children` subtrees and kind `onDeleteCascade` companions, collinear
|
|
1239
|
+
* walls merged across a deleted junction, the separators that keep two rooms
|
|
1240
|
+
* apart when the wall between them goes, derived-construction deletion intent,
|
|
1241
|
+
* neighbour patches, support and unit cleanup, and the default gutter and
|
|
1242
|
+
* downspout refresh.
|
|
1243
|
+
*
|
|
1244
|
+
* The refresh mints gutters, downspouts and outlets with random ids, and which
|
|
1245
|
+
* existing defaults it keeps can depend on them. With `mintDefaults: false`
|
|
1246
|
+
* (a preview, such as the MCP patch dry run) the refresh does not run: the
|
|
1247
|
+
* existing defaults it would touch are listed in `unsettledIds`, and the plan
|
|
1248
|
+
* is deterministic and equals the commit for every other existing id. The
|
|
1249
|
+
* delete action mints.
|
|
1250
|
+
*/
|
|
1251
|
+
export function planNodeDeletion(scene, ids, { mintDefaults = true, options, wallDeletionPlan, } = {}) {
|
|
1136
1252
|
const parentsToMarkDirty = new Set();
|
|
1137
1253
|
const nodesToMarkDirty = new Set();
|
|
1138
1254
|
const deletedIds = new Set();
|
|
1139
|
-
const mergePlans = buildWallMergePlans(
|
|
1255
|
+
const mergePlans = buildWallMergePlans(scene.nodes, ids);
|
|
1140
1256
|
const requestedDeleteIds = new Set(ids);
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1257
|
+
// Deleting derived construction is an intent edit ("this room has no
|
|
1258
|
+
// ceiling"), not a refusal — the reconciler must not rebuild it.
|
|
1259
|
+
const deletionIntent = options?.derivedWriter === DERIVED_WRITER_TOKEN ? [] : derivedDeletionIntent(scene.nodes, ids);
|
|
1260
|
+
// A preview names the separators a room-preserving delete adds without random ids.
|
|
1261
|
+
let previewCount = 0;
|
|
1262
|
+
const previewId = (kind) => {
|
|
1263
|
+
let id;
|
|
1264
|
+
do
|
|
1265
|
+
id = `${kind}_preview${++previewCount}`;
|
|
1266
|
+
while (id in scene.nodes);
|
|
1267
|
+
return id;
|
|
1268
|
+
};
|
|
1269
|
+
const nextNodes = { ...scene.nodes };
|
|
1270
|
+
const nextCollections = { ...scene.collections };
|
|
1271
|
+
let nextRootIds = [...scene.rootNodeIds];
|
|
1272
|
+
// Collect all ids to delete (the requested ids + all their descendants) before
|
|
1273
|
+
// mutating anything, so the recursive walk reads consistent state.
|
|
1274
|
+
const allIds = new Set();
|
|
1275
|
+
const collect = (id) => {
|
|
1276
|
+
if (allIds.has(id))
|
|
1277
|
+
return;
|
|
1278
|
+
allIds.add(id);
|
|
1279
|
+
const node = nextNodes[id];
|
|
1280
|
+
const cascadeDeletes = node
|
|
1281
|
+
? nodeRegistry
|
|
1282
|
+
.get(node.type)
|
|
1283
|
+
?.parametrics?.onDeleteCascade?.(node, nextNodes, allIds, requestedDeleteIds)
|
|
1284
|
+
: null;
|
|
1285
|
+
if (cascadeDeletes) {
|
|
1286
|
+
for (const companionId of cascadeDeletes)
|
|
1287
|
+
collect(companionId);
|
|
1288
|
+
}
|
|
1289
|
+
if (node && 'children' in node) {
|
|
1290
|
+
for (const cid of node.children)
|
|
1291
|
+
collect(cid);
|
|
1292
|
+
}
|
|
1293
|
+
};
|
|
1294
|
+
for (const id of ids)
|
|
1295
|
+
collect(id);
|
|
1296
|
+
if (wallDeletionPlan ||
|
|
1297
|
+
(options?.derivedWriter !== DERIVED_WRITER_TOKEN && !isSpaceDetectionPaused())) {
|
|
1298
|
+
const plan = wallDeletionPlan ??
|
|
1299
|
+
planWallDeletion(scene.nodes, {
|
|
1300
|
+
nodeIds: [...allIds],
|
|
1301
|
+
mintId: mintDefaults ? generateId : previewId,
|
|
1302
|
+
});
|
|
1303
|
+
for (const change of plan.changes) {
|
|
1304
|
+
if (change.op === 'delete')
|
|
1305
|
+
collect(change.id);
|
|
1306
|
+
else if (change.op === 'update') {
|
|
1307
|
+
const current = nextNodes[change.id];
|
|
1308
|
+
if (current)
|
|
1309
|
+
nextNodes[change.id] = parseUpdatedNode(current, change.data);
|
|
1310
|
+
nodesToMarkDirty.add(change.id);
|
|
1161
1311
|
}
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1312
|
+
else {
|
|
1313
|
+
const node = change.node;
|
|
1314
|
+
nextNodes[node.id] = node;
|
|
1315
|
+
nodesToMarkDirty.add(node.id);
|
|
1316
|
+
const parent = node.parentId ? nextNodes[node.parentId] : undefined;
|
|
1317
|
+
if (parent && 'children' in parent && Array.isArray(parent.children)) {
|
|
1318
|
+
nextNodes[parent.id] = { ...parent, children: [...parent.children, node.id] };
|
|
1319
|
+
parentsToMarkDirty.add(parent.id);
|
|
1320
|
+
}
|
|
1165
1321
|
}
|
|
1166
|
-
};
|
|
1167
|
-
for (const id of ids)
|
|
1168
|
-
collect(id);
|
|
1169
|
-
for (const plan of mergePlans) {
|
|
1170
|
-
allIds.add(plan.secondaryWallId);
|
|
1171
1322
|
}
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1323
|
+
}
|
|
1324
|
+
for (const plan of mergePlans) {
|
|
1325
|
+
allIds.add(plan.secondaryWallId);
|
|
1326
|
+
}
|
|
1327
|
+
const affectedRoofIds = new Set();
|
|
1328
|
+
for (const id of allIds) {
|
|
1329
|
+
const node = nextNodes[id];
|
|
1330
|
+
addLeanToHostRoofId(node, nextNodes, affectedRoofIds);
|
|
1331
|
+
if (node?.type === 'roof-segment' && node.parentId) {
|
|
1332
|
+
affectedRoofIds.add(node.parentId);
|
|
1179
1333
|
}
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1334
|
+
}
|
|
1335
|
+
for (const id of allIds)
|
|
1336
|
+
deletedIds.add(id);
|
|
1337
|
+
// Let each deleted kind undo what it imposed on its neighbours (e.g. an
|
|
1338
|
+
// auto-inserted elbow re-extends the duct runs it trimmed back onto the
|
|
1339
|
+
// corner it replaced). Read against pre-deletion `nextNodes`; skip
|
|
1340
|
+
// patches that target a node also being deleted.
|
|
1341
|
+
for (const id of allIds) {
|
|
1342
|
+
const node = nextNodes[id];
|
|
1343
|
+
if (!node)
|
|
1344
|
+
continue;
|
|
1345
|
+
const onDelete = nodeRegistry.get(node.type)?.parametrics?.onDelete;
|
|
1346
|
+
if (!onDelete)
|
|
1347
|
+
continue;
|
|
1348
|
+
for (const { id: targetId, data } of onDelete(node, nextNodes, allIds, requestedDeleteIds)) {
|
|
1349
|
+
if (allIds.has(targetId))
|
|
1189
1350
|
continue;
|
|
1190
|
-
const
|
|
1191
|
-
if (!
|
|
1351
|
+
const target = nextNodes[targetId];
|
|
1352
|
+
if (!target)
|
|
1192
1353
|
continue;
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
continue;
|
|
1196
|
-
const target = nextNodes[targetId];
|
|
1197
|
-
if (!target)
|
|
1198
|
-
continue;
|
|
1199
|
-
nextNodes[targetId] = { ...target, ...data };
|
|
1200
|
-
nodesToMarkDirty.add(targetId);
|
|
1201
|
-
}
|
|
1354
|
+
nextNodes[targetId] = { ...target, ...data };
|
|
1355
|
+
nodesToMarkDirty.add(targetId);
|
|
1202
1356
|
}
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1357
|
+
}
|
|
1358
|
+
for (const plan of mergePlans) {
|
|
1359
|
+
const primaryWall = nextNodes[plan.primaryWallId];
|
|
1360
|
+
if (!(primaryWall && primaryWall.type === 'wall') || allIds.has(plan.primaryWallId)) {
|
|
1361
|
+
continue;
|
|
1362
|
+
}
|
|
1363
|
+
const { faceRegions: _regions, ...keptWall } = primaryWall;
|
|
1364
|
+
nextNodes[plan.primaryWallId] = {
|
|
1365
|
+
...keptWall,
|
|
1366
|
+
...(plan.mergedFaceRegions ? { faceRegions: plan.mergedFaceRegions } : {}),
|
|
1367
|
+
start: plan.mergedStart,
|
|
1368
|
+
end: plan.mergedEnd,
|
|
1369
|
+
children: plan.mergedChildren,
|
|
1370
|
+
};
|
|
1371
|
+
nodesToMarkDirty.add(plan.primaryWallId);
|
|
1372
|
+
for (const update of plan.zoneUpdates) {
|
|
1373
|
+
if (allIds.has(update.id))
|
|
1206
1374
|
continue;
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
...
|
|
1210
|
-
start: plan.mergedStart,
|
|
1211
|
-
end: plan.mergedEnd,
|
|
1212
|
-
children: plan.mergedChildren,
|
|
1213
|
-
};
|
|
1214
|
-
nodesToMarkDirty.add(plan.primaryWallId);
|
|
1215
|
-
for (const update of plan.attachmentUpdates) {
|
|
1216
|
-
if (allIds.has(update.id))
|
|
1217
|
-
continue;
|
|
1218
|
-
const child = nextNodes[update.id];
|
|
1219
|
-
if (!child)
|
|
1220
|
-
continue;
|
|
1221
|
-
nextNodes[update.id] = { ...child, ...update.data };
|
|
1222
|
-
nodesToMarkDirty.add(update.id);
|
|
1223
|
-
}
|
|
1375
|
+
const zone = nextNodes[update.id];
|
|
1376
|
+
if (zone)
|
|
1377
|
+
nextNodes[update.id] = { ...zone, ...update.data };
|
|
1224
1378
|
}
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
if (nextNodes[id]?.type === 'slab')
|
|
1234
|
-
deletedSlabIds.add(id);
|
|
1379
|
+
for (const update of plan.attachmentUpdates) {
|
|
1380
|
+
if (allIds.has(update.id))
|
|
1381
|
+
continue;
|
|
1382
|
+
const child = nextNodes[update.id];
|
|
1383
|
+
if (!child)
|
|
1384
|
+
continue;
|
|
1385
|
+
nextNodes[update.id] = { ...child, ...update.data };
|
|
1386
|
+
nodesToMarkDirty.add(update.id);
|
|
1235
1387
|
}
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1388
|
+
}
|
|
1389
|
+
// Deleting a slab strips `supportSlabId` / `deckSlabId` references from
|
|
1390
|
+
// surviving nodes in the same undo commit (mirrors the collectionIds
|
|
1391
|
+
// cleanup below), so those nodes re-elect their support / re-derive
|
|
1392
|
+
// their rise. Deletion is the ONLY writer — a host merely reshaped away
|
|
1393
|
+
// keeps the field and the read path falls back, letting hosting resume
|
|
1394
|
+
// if the slab returns.
|
|
1395
|
+
const deletedSlabIds = new Set();
|
|
1396
|
+
for (const id of allIds) {
|
|
1397
|
+
if (nextNodes[id]?.type === 'slab')
|
|
1398
|
+
deletedSlabIds.add(id);
|
|
1399
|
+
}
|
|
1400
|
+
if (deletedSlabIds.size > 0) {
|
|
1401
|
+
for (const [nodeId, node] of Object.entries(nextNodes)) {
|
|
1402
|
+
if (allIds.has(nodeId))
|
|
1403
|
+
continue;
|
|
1404
|
+
const patch = {};
|
|
1405
|
+
const hostId = node.supportSlabId;
|
|
1406
|
+
if (hostId && deletedSlabIds.has(hostId))
|
|
1407
|
+
patch.supportSlabId = undefined;
|
|
1408
|
+
const deckId = node.deckSlabId;
|
|
1409
|
+
if (deckId && deletedSlabIds.has(deckId))
|
|
1410
|
+
patch.deckSlabId = undefined;
|
|
1411
|
+
if (Object.keys(patch).length > 0) {
|
|
1412
|
+
nextNodes[nodeId] = { ...node, ...patch };
|
|
1413
|
+
nodesToMarkDirty.add(nodeId);
|
|
1251
1414
|
}
|
|
1252
1415
|
}
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1416
|
+
}
|
|
1417
|
+
// A deleted door takes its step paint with it, in the same undo step; every
|
|
1418
|
+
// other doorway keeps its own.
|
|
1419
|
+
for (const node of Object.values(nextNodes)) {
|
|
1420
|
+
if (node.type !== 'zone' || allIds.has(node.id))
|
|
1421
|
+
continue;
|
|
1422
|
+
const pruned = withoutFloorStepOverrideKeys(node, allIds);
|
|
1423
|
+
if (!pruned)
|
|
1424
|
+
continue;
|
|
1425
|
+
nextNodes[node.id] = pruned;
|
|
1426
|
+
nodesToMarkDirty.add(node.id);
|
|
1427
|
+
}
|
|
1428
|
+
const deletedZoneIds = new Set();
|
|
1429
|
+
for (const id of allIds) {
|
|
1430
|
+
if (nextNodes[id]?.type === 'zone')
|
|
1431
|
+
deletedZoneIds.add(id);
|
|
1432
|
+
}
|
|
1433
|
+
if (deletedZoneIds.size > 0) {
|
|
1434
|
+
for (const node of Object.values(nextNodes)) {
|
|
1435
|
+
if (node.type !== 'unit' || allIds.has(node.id))
|
|
1436
|
+
continue;
|
|
1437
|
+
const members = node.members.filter((id) => !deletedZoneIds.has(id));
|
|
1438
|
+
if (members.length === node.members.length)
|
|
1439
|
+
continue;
|
|
1440
|
+
nextNodes[node.id] = { ...node, members };
|
|
1441
|
+
nodesToMarkDirty.add(node.id);
|
|
1257
1442
|
}
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1443
|
+
}
|
|
1444
|
+
for (const id of allIds) {
|
|
1445
|
+
const node = nextNodes[id];
|
|
1446
|
+
if (!node)
|
|
1447
|
+
continue;
|
|
1448
|
+
// Legacy graphs can link children without a reciprocal parentId.
|
|
1449
|
+
const parentId = (node.parentId ??
|
|
1450
|
+
Object.values(nextNodes).find((candidate) => 'children' in candidate && candidate.children?.some((childId) => childId === id))?.id);
|
|
1451
|
+
if (parentId && nextNodes[parentId] && !allIds.has(parentId)) {
|
|
1452
|
+
const parent = nextNodes[parentId];
|
|
1453
|
+
if (parent.children) {
|
|
1454
|
+
nextNodes[parent.id] = {
|
|
1455
|
+
...parent,
|
|
1456
|
+
children: parent.children.filter((cid) => cid !== id),
|
|
1457
|
+
};
|
|
1458
|
+
parentsToMarkDirty.add(parent.id);
|
|
1267
1459
|
}
|
|
1268
1460
|
}
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1461
|
+
// 2. Remove from root list
|
|
1462
|
+
nextRootIds = nextRootIds.filter((rid) => rid !== id);
|
|
1463
|
+
// 3. Remove from any collections it belongs to
|
|
1464
|
+
removeFromCollections(nextCollections, id);
|
|
1465
|
+
// 4. Delete the node itself
|
|
1466
|
+
delete nextNodes[id];
|
|
1467
|
+
}
|
|
1468
|
+
for (const { id, data } of deletionIntent) {
|
|
1469
|
+
const zone = nextNodes[id];
|
|
1470
|
+
if (!zone)
|
|
1471
|
+
continue;
|
|
1472
|
+
nextNodes[id] = { ...zone, ...data };
|
|
1473
|
+
nodesToMarkDirty.add(id);
|
|
1474
|
+
}
|
|
1475
|
+
const unsettledIds = new Set();
|
|
1476
|
+
const regeneratedHostIds = new Set();
|
|
1477
|
+
if (mintDefaults) {
|
|
1478
|
+
refreshDefaultGuttersForRoofIds(nextNodes, affectedRoofIds, nodesToMarkDirty, deletedIds);
|
|
1479
|
+
}
|
|
1480
|
+
else {
|
|
1481
|
+
collectRefreshedDefaults(nextNodes, affectedRoofIds, unsettledIds, regeneratedHostIds);
|
|
1482
|
+
}
|
|
1483
|
+
return {
|
|
1484
|
+
nodes: nextNodes,
|
|
1485
|
+
rootNodeIds: nextRootIds,
|
|
1486
|
+
collections: nextCollections,
|
|
1487
|
+
deletedIds,
|
|
1488
|
+
parentsToMarkDirty,
|
|
1489
|
+
nodesToMarkDirty,
|
|
1490
|
+
unsettledIds,
|
|
1491
|
+
regeneratedHostIds,
|
|
1492
|
+
};
|
|
1493
|
+
}
|
|
1494
|
+
/**
|
|
1495
|
+
* The existing nodes the default gutter refresh of `roofIds` may keep, move or
|
|
1496
|
+
* replace: each roof's default gutters and the downspouts on them. Which of
|
|
1497
|
+
* them survive depends on the gutters the refresh mints, whose ids are random.
|
|
1498
|
+
* `hosts` receives the roof segments whose `children` the refresh rewrites.
|
|
1499
|
+
*/
|
|
1500
|
+
function collectRefreshedDefaults(nodes, roofIds, out, hosts) {
|
|
1501
|
+
const gutterIds = new Set();
|
|
1502
|
+
for (const roofId of new Set(roofIds)) {
|
|
1503
|
+
const roof = nodes[roofId];
|
|
1504
|
+
if (roof?.type !== 'roof')
|
|
1505
|
+
continue;
|
|
1506
|
+
for (const segmentId of roof.children ?? []) {
|
|
1507
|
+
const segment = nodes[segmentId];
|
|
1508
|
+
if (segment?.type !== 'roof-segment')
|
|
1272
1509
|
continue;
|
|
1273
|
-
|
|
1274
|
-
const
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
if (parent.children) {
|
|
1278
|
-
nextNodes[parent.id] = {
|
|
1279
|
-
...parent,
|
|
1280
|
-
children: parent.children.filter((cid) => cid !== id),
|
|
1281
|
-
};
|
|
1282
|
-
parentsToMarkDirty.add(parent.id);
|
|
1283
|
-
}
|
|
1284
|
-
}
|
|
1285
|
-
// 2. Remove from root list
|
|
1286
|
-
nextRootIds = nextRootIds.filter((rid) => rid !== id);
|
|
1287
|
-
// 3. Remove from any collections it belongs to
|
|
1288
|
-
if ('collectionIds' in node && node.collectionIds) {
|
|
1289
|
-
for (const cid of node.collectionIds) {
|
|
1290
|
-
const col = nextCollections[cid];
|
|
1291
|
-
if (col) {
|
|
1292
|
-
nextCollections[cid] = { ...col, nodeIds: col.nodeIds.filter((nid) => nid !== id) };
|
|
1293
|
-
}
|
|
1510
|
+
hosts.add(segment.id);
|
|
1511
|
+
for (const childId of segment.children ?? []) {
|
|
1512
|
+
if (isDefaultGutterNode(nodes[childId], segment.id)) {
|
|
1513
|
+
gutterIds.add(childId);
|
|
1294
1514
|
}
|
|
1295
1515
|
}
|
|
1296
|
-
// 4. Delete the node itself
|
|
1297
|
-
delete nextNodes[id];
|
|
1298
1516
|
}
|
|
1299
|
-
|
|
1517
|
+
}
|
|
1518
|
+
for (const id of gutterIds)
|
|
1519
|
+
out.add(id);
|
|
1520
|
+
for (const node of Object.values(nodes)) {
|
|
1521
|
+
if (node?.type === 'downspout' && node.gutterId && gutterIds.has(node.gutterId)) {
|
|
1522
|
+
out.add(node.id);
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
const deleteNodesActionImpl = (set, get, ids, options, wallDeletionPlan) => {
|
|
1527
|
+
if (get().readOnly)
|
|
1528
|
+
return;
|
|
1529
|
+
let deletedIds = new Set();
|
|
1530
|
+
let parentsToMarkDirty = new Set();
|
|
1531
|
+
let nodesToMarkDirty = new Set();
|
|
1532
|
+
set((state) => {
|
|
1533
|
+
const plan = planNodeDeletion(state, ids, { options, wallDeletionPlan });
|
|
1534
|
+
deletedIds = plan.deletedIds;
|
|
1535
|
+
parentsToMarkDirty = plan.parentsToMarkDirty;
|
|
1536
|
+
nodesToMarkDirty = plan.nodesToMarkDirty;
|
|
1300
1537
|
addActiveSceneCommitNodeIds([...deletedIds, ...parentsToMarkDirty, ...nodesToMarkDirty]);
|
|
1301
|
-
return { nodes:
|
|
1538
|
+
return { nodes: plan.nodes, rootNodeIds: plan.rootNodeIds, collections: plan.collections };
|
|
1302
1539
|
});
|
|
1303
1540
|
// Deleted ids must leave the dirty set: every consumer skips missing
|
|
1304
1541
|
// nodes without clearing them, so a mark on a deleted node would sit in
|
|
@@ -1328,17 +1565,101 @@ function validatedSet(set) {
|
|
|
1328
1565
|
return patch;
|
|
1329
1566
|
});
|
|
1330
1567
|
}
|
|
1331
|
-
|
|
1568
|
+
/** Runs the same deletion hooks and update constraints for headless scene owners. */
|
|
1569
|
+
export function planSceneNodeChanges(snapshot, changes) {
|
|
1570
|
+
const dirtyIds = new Set();
|
|
1571
|
+
let state = {
|
|
1572
|
+
...snapshot,
|
|
1573
|
+
readOnly: false,
|
|
1574
|
+
markDirty: (id) => {
|
|
1575
|
+
dirtyIds.add(id);
|
|
1576
|
+
},
|
|
1577
|
+
clearDirty: (id) => {
|
|
1578
|
+
dirtyIds.delete(id);
|
|
1579
|
+
},
|
|
1580
|
+
};
|
|
1581
|
+
const set = (update) => {
|
|
1582
|
+
state = { ...state, ...update(state) };
|
|
1583
|
+
};
|
|
1584
|
+
if (changes.update?.length)
|
|
1585
|
+
updateNodesActionImpl(set, () => state, changes.update, undefined, false);
|
|
1586
|
+
if (changes.delete?.length)
|
|
1587
|
+
deleteNodesActionImpl(set, () => state, changes.delete, undefined, changes.wallDeletionPlan);
|
|
1588
|
+
return {
|
|
1589
|
+
nodes: state.nodes,
|
|
1590
|
+
rootNodeIds: state.rootNodeIds,
|
|
1591
|
+
collections: state.collections,
|
|
1592
|
+
dirtyIds: [...dirtyIds],
|
|
1593
|
+
};
|
|
1594
|
+
}
|
|
1595
|
+
export const createNodesAction = (set, get, ops, options) => runWithSceneCommitNodeIds(ops.flatMap(({ node, parentId }) => {
|
|
1332
1596
|
const effectiveParentId = parentId ?? node.parentId;
|
|
1333
1597
|
return effectiveParentId ? [node.id, effectiveParentId] : [node.id];
|
|
1334
|
-
}), () => createNodesActionImpl(validatedSet(set), get, ops));
|
|
1335
|
-
export const applyNodeChangesAction = (set, get, changes) => runWithSceneCommitNodeIds([
|
|
1598
|
+
}), () => createNodesActionImpl(validatedSet(set), get, ops, options));
|
|
1599
|
+
export const applyNodeChangesAction = (set, get, changes, options) => runWithSceneCommitNodeIds([
|
|
1336
1600
|
...(changes.create ?? []).flatMap(({ node, parentId }) => {
|
|
1337
1601
|
const effectiveParentId = parentId ?? node.parentId;
|
|
1338
1602
|
return effectiveParentId ? [node.id, effectiveParentId] : [node.id];
|
|
1339
1603
|
}),
|
|
1340
1604
|
...(changes.update ?? []).map(({ id }) => id),
|
|
1341
1605
|
...(changes.delete ?? []),
|
|
1342
|
-
], () => applyNodeChangesActionImpl(validatedSet(set), get, changes));
|
|
1343
|
-
export const updateNodesAction = (set, get, updates) => runWithSceneCommitNodeIds(updates.map(({ id }) => id), () => updateNodesActionImpl(validatedSet(set), get, updates));
|
|
1344
|
-
export const deleteNodesAction = (set, get, ids) => runWithSceneCommitNodeIds(ids, () => deleteNodesActionImpl(validatedSet(set), get, ids));
|
|
1606
|
+
], () => applyNodeChangesActionImpl(validatedSet(set), get, changes, options));
|
|
1607
|
+
export const updateNodesAction = (set, get, updates, options) => runWithSceneCommitNodeIds(updates.map(({ id }) => id), () => updateNodesActionImpl(validatedSet(set), get, updates, options));
|
|
1608
|
+
export const deleteNodesAction = (set, get, ids, options) => runWithSceneCommitNodeIds(ids, () => deleteNodesActionImpl(validatedSet(set), get, ids, options));
|
|
1609
|
+
/**
|
|
1610
|
+
* The sanctioned conversion from derived construction to an authored surface:
|
|
1611
|
+
* the boundary editors' polygon edit, a 2D reshape, a manual move. Clears the
|
|
1612
|
+
* derived markers (and the zone link) in the same update that carries the
|
|
1613
|
+
* caller's own change, so the reconciler stops owning the surface from this
|
|
1614
|
+
* commit on.
|
|
1615
|
+
*/
|
|
1616
|
+
export const detachDerivedNodeAction = (set, get, id, data) => {
|
|
1617
|
+
const node = get().nodes[id];
|
|
1618
|
+
if (!node)
|
|
1619
|
+
return;
|
|
1620
|
+
// An automatic ceiling draws its room's paint regions; once it is its own it
|
|
1621
|
+
// keeps them on itself.
|
|
1622
|
+
const zone = node.type === 'ceiling' && node.zoneId ? get().nodes[node.zoneId] : null;
|
|
1623
|
+
const keptRegions = node.type === 'ceiling' &&
|
|
1624
|
+
isDerivedNode(node) &&
|
|
1625
|
+
zone?.type === 'zone' &&
|
|
1626
|
+
zone.ceiling?.regions?.length &&
|
|
1627
|
+
!(data && 'regions' in data)
|
|
1628
|
+
? { regions: zone.ceiling.regions }
|
|
1629
|
+
: {};
|
|
1630
|
+
// Spread through a plain record: merging two `Partial<AnyNode>` unions
|
|
1631
|
+
// explodes into a union TypeScript cannot represent.
|
|
1632
|
+
const patch = {
|
|
1633
|
+
...data,
|
|
1634
|
+
...keptRegions,
|
|
1635
|
+
...(isDerivedNode(node) ? derivedDetachPatch(node) : {}),
|
|
1636
|
+
...(node.type === 'slab' && isDerivedNode(node)
|
|
1637
|
+
? { associatedZoneIds: node.zoneIds ?? [] }
|
|
1638
|
+
: {}),
|
|
1639
|
+
};
|
|
1640
|
+
if (Object.keys(patch).length === 0)
|
|
1641
|
+
return;
|
|
1642
|
+
const ownerUpdates = node.type === 'slab' && isDerivedNode(node)
|
|
1643
|
+
? (node.zoneIds ?? []).flatMap((zoneId) => {
|
|
1644
|
+
const zone = get().nodes[zoneId];
|
|
1645
|
+
return zone?.type === 'zone'
|
|
1646
|
+
? [{ id: zone.id, data: { floor: { ...zone.floor, sourceSlabId: node.id } } }]
|
|
1647
|
+
: [];
|
|
1648
|
+
})
|
|
1649
|
+
: [];
|
|
1650
|
+
runWithSceneCommitNodeIds([id, ...ownerUpdates.map(({ id }) => id)], () => updateNodesActionImpl(validatedSet(set), get, [{ id, data: patch }, ...ownerUpdates], {
|
|
1651
|
+
derivedWriter: DERIVED_WRITER_TOKEN,
|
|
1652
|
+
}));
|
|
1653
|
+
};
|
|
1654
|
+
/**
|
|
1655
|
+
* What the default gutter refresh of `roofIds` would touch, without running
|
|
1656
|
+
* it: the existing default gutters and downspouts it may keep or replace, and
|
|
1657
|
+
* the roof segments whose `children` it rewrites. For previews of edits that
|
|
1658
|
+
* trigger the refresh (a roof segment update, a delete).
|
|
1659
|
+
*/
|
|
1660
|
+
export function previewDefaultGutterRefresh(nodes, roofIds) {
|
|
1661
|
+
const unsettledIds = new Set();
|
|
1662
|
+
const regeneratedHostIds = new Set();
|
|
1663
|
+
collectRefreshedDefaults(nodes, roofIds, unsettledIds, regeneratedHostIds);
|
|
1664
|
+
return { unsettledIds, regeneratedHostIds };
|
|
1665
|
+
}
|