@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,12 +1,22 @@
|
|
|
1
1
|
import type { Collection, CollectionId } from '../schema/collections.js';
|
|
2
2
|
import type { SceneMaterial, SceneMaterialId } from '../schema/scene-material.js';
|
|
3
3
|
import type { AnyNode, AnyNodeId } from '../schema/types.js';
|
|
4
|
+
export declare function isRestoringSceneHistory(): boolean;
|
|
5
|
+
export declare function runAsSceneHistoryRestore<T>(run: () => T): T;
|
|
6
|
+
/**
|
|
7
|
+
* Whether the scene is being written by a collaborator's change (a shared
|
|
8
|
+
* operation or snapshot applied from the host), not by this client — what a
|
|
9
|
+
* live session that takes back its own writes must leave alone.
|
|
10
|
+
*/
|
|
11
|
+
export declare function isApplyingRemoteSceneChange(): boolean;
|
|
12
|
+
export declare function runAsRemoteSceneChange<T>(run: () => T): T;
|
|
4
13
|
export type SceneSnapshot = {
|
|
5
14
|
nodes: Record<AnyNodeId, AnyNode>;
|
|
6
15
|
rootNodeIds: AnyNodeId[];
|
|
7
16
|
collections: Record<CollectionId, Collection>;
|
|
8
17
|
materials: Record<SceneMaterialId, SceneMaterial>;
|
|
9
18
|
installedPlugins: string[];
|
|
19
|
+
hasExplicitPluginInstallState?: boolean;
|
|
10
20
|
};
|
|
11
21
|
export type SceneCommitOrigin = 'local' | 'load' | 'host';
|
|
12
22
|
export type SceneCommit = {
|
|
@@ -43,6 +53,30 @@ export declare function notifySceneCommit(commit: SceneCommit): void;
|
|
|
43
53
|
export declare function pauseSceneHistory(sceneStore: TemporalStoreLike): void;
|
|
44
54
|
export declare function resumeSceneHistory(sceneStore: TemporalStoreLike): void;
|
|
45
55
|
export declare function acquireSceneHistoryPause(sceneStore: TemporalStoreLike): () => void;
|
|
56
|
+
export type SceneHistoryPauseSession = {
|
|
57
|
+
/**
|
|
58
|
+
* Runs one committing write with this gesture's pauses lifted, then takes them back.
|
|
59
|
+
* The write lands as tracked history only when no other owner is pausing it.
|
|
60
|
+
*/
|
|
61
|
+
commitStep<T>(write: () => T): T;
|
|
62
|
+
/** Releases this session's pause. Idempotent. */
|
|
63
|
+
end(): void;
|
|
64
|
+
};
|
|
65
|
+
export type SceneHistoryPauseSessionOptions = {
|
|
66
|
+
/** Sessions with the same key co-own one gesture; see `beginSceneHistoryPauseSession`. */
|
|
67
|
+
gesture?: string;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Holds a refcounted pause for a whole gesture (drag). Unlike a raw
|
|
71
|
+
* `temporal.pause()`, cooperating systems see the gesture through
|
|
72
|
+
* `getSceneHistoryPauseDepth()`, and their balanced pause/resume pairs cannot
|
|
73
|
+
* resume history under it.
|
|
74
|
+
*
|
|
75
|
+
* Sessions opened with the same `gesture` key co-own the gesture (the 3D mover
|
|
76
|
+
* and the 2D move overlay of one moving node): either one's `commitStep` lifts
|
|
77
|
+
* both pauses, so whichever view drops records the one step.
|
|
78
|
+
*/
|
|
79
|
+
export declare function beginSceneHistoryPauseSession(sceneStore: TemporalStoreLike, options?: SceneHistoryPauseSessionOptions): SceneHistoryPauseSession;
|
|
46
80
|
export declare function getSceneHistoryPauseDepth(): number;
|
|
47
81
|
export declare function resetSceneHistoryPauseDepth(): void;
|
|
48
82
|
export declare function runAsSingleSceneHistoryStep<TPastState, TResult>(sceneStore: TemporalHistoryStoreLike<TPastState>, run: () => TResult): TResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-control.d.ts","sourceRoot":"","sources":["../../src/store/history-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAKzD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACjC,WAAW,EAAE,SAAS,EAAE,CAAA;IACxB,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IAC7C,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;IACjD,gBAAgB,EAAE,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"history-control.d.ts","sourceRoot":"","sources":["../../src/store/history-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAKzD,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAO3D;AAID;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAOzD;AAKD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IACjC,WAAW,EAAE,SAAS,EAAE,CAAA;IACxB,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IAC7C,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;IACjD,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,6BAA6B,CAAC,EAAE,OAAO,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEzD,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,EAAE,aAAa,CAAA;IACrB,OAAO,EAAE,aAAa,CAAA;IACtB,cAAc,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;AAE/D,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE;QACR,QAAQ,IAAI;YACV,KAAK,IAAI,IAAI,CAAA;YACb,MAAM,IAAI,IAAI,CAAA;SACf,CAAA;KACF,CAAA;CACF,CAAA;AAED,KAAK,wBAAwB,CAAC,UAAU,IAAI;IAC1C,QAAQ,EAAE;QACR,QAAQ,IAAI;YACV,UAAU,EAAE,UAAU,EAAE,CAAA;SACzB,CAAA;QACD,QAAQ,CAAC,KAAK,EAAE;YAAE,UAAU,EAAE,UAAU,EAAE,CAAA;SAAE,GAAG,IAAI,CAAA;KACpD,CAAA;CACF,CAAA;AAeD,wBAAgB,wBAAwB,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,CAO7E;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAI9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAC/C,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC5B,GAAG,EAAE,MAAM,OAAO,GACjB,OAAO,CAYT;AA2BD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CASzF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAK/E;AAYD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAyB3D;AAyBD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAKrE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAStE;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAelF;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IAChC,iDAAiD;IACjD,GAAG,IAAI,IAAI,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AA2BD;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,iBAAiB,EAC7B,OAAO,GAAE,+BAAoC,GAC5C,wBAAwB,CA6B1B;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAOlD;AAkBD,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,OAAO,EAC7D,UAAU,EAAE,wBAAwB,CAAC,UAAU,CAAC,EAChD,GAAG,EAAE,MAAM,OAAO,GACjB,OAAO,CAuBT"}
|
|
@@ -1,3 +1,35 @@
|
|
|
1
|
+
import { withSceneHistoryDraftSuspended } from './history-drafts.js';
|
|
2
|
+
let sceneHistoryRestoreDepth = 0;
|
|
3
|
+
export function isRestoringSceneHistory() {
|
|
4
|
+
return sceneHistoryRestoreDepth > 0;
|
|
5
|
+
}
|
|
6
|
+
export function runAsSceneHistoryRestore(run) {
|
|
7
|
+
sceneHistoryRestoreDepth += 1;
|
|
8
|
+
try {
|
|
9
|
+
return run();
|
|
10
|
+
}
|
|
11
|
+
finally {
|
|
12
|
+
sceneHistoryRestoreDepth -= 1;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
let remoteSceneOperationDepth = 0;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the scene is being written by a collaborator's change (a shared
|
|
18
|
+
* operation or snapshot applied from the host), not by this client — what a
|
|
19
|
+
* live session that takes back its own writes must leave alone.
|
|
20
|
+
*/
|
|
21
|
+
export function isApplyingRemoteSceneChange() {
|
|
22
|
+
return remoteSceneOperationDepth > 0;
|
|
23
|
+
}
|
|
24
|
+
export function runAsRemoteSceneChange(run) {
|
|
25
|
+
remoteSceneOperationDepth += 1;
|
|
26
|
+
try {
|
|
27
|
+
return run();
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
remoteSceneOperationDepth -= 1;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
1
33
|
let sceneHistoryPauseDepth = 0;
|
|
2
34
|
const sceneHistoryPauseLeases = new Set();
|
|
3
35
|
const sceneCommitListeners = new Set();
|
|
@@ -71,7 +103,8 @@ export function areSceneSnapshotsEqual(left, right) {
|
|
|
71
103
|
areSemanticValuesEqual(left.rootNodeIds, right.rootNodeIds) &&
|
|
72
104
|
areSemanticValuesEqual(left.collections, right.collections) &&
|
|
73
105
|
areSemanticValuesEqual(left.materials, right.materials) &&
|
|
74
|
-
areSemanticValuesEqual(left.installedPlugins, right.installedPlugins)
|
|
106
|
+
areSemanticValuesEqual(left.installedPlugins, right.installedPlugins) &&
|
|
107
|
+
(left.hasExplicitPluginInstallState ?? false) === (right.hasExplicitPluginInstallState ?? false));
|
|
75
108
|
}
|
|
76
109
|
export function subscribeSceneCommits(listener) {
|
|
77
110
|
sceneCommitListeners.add(listener);
|
|
@@ -163,12 +196,77 @@ export function acquireSceneHistoryPause(sceneStore) {
|
|
|
163
196
|
}
|
|
164
197
|
};
|
|
165
198
|
}
|
|
199
|
+
const gesturePauseHolders = new Map();
|
|
200
|
+
const livePauseHolders = new Set();
|
|
201
|
+
/** Lifts `holders`' pauses for `write`, then takes back those that have not ended. */
|
|
202
|
+
function runWithHoldersLifted(sceneStore, holders, write) {
|
|
203
|
+
const lifted = [...holders].filter((holder) => holder.release);
|
|
204
|
+
for (const holder of lifted) {
|
|
205
|
+
const release = holder.release;
|
|
206
|
+
holder.release = null;
|
|
207
|
+
release();
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
return write();
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
for (const holder of lifted) {
|
|
214
|
+
if (!holder.ended)
|
|
215
|
+
holder.release = acquireSceneHistoryPause(sceneStore);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Holds a refcounted pause for a whole gesture (drag). Unlike a raw
|
|
221
|
+
* `temporal.pause()`, cooperating systems see the gesture through
|
|
222
|
+
* `getSceneHistoryPauseDepth()`, and their balanced pause/resume pairs cannot
|
|
223
|
+
* resume history under it.
|
|
224
|
+
*
|
|
225
|
+
* Sessions opened with the same `gesture` key co-own the gesture (the 3D mover
|
|
226
|
+
* and the 2D move overlay of one moving node): either one's `commitStep` lifts
|
|
227
|
+
* both pauses, so whichever view drops records the one step.
|
|
228
|
+
*/
|
|
229
|
+
export function beginSceneHistoryPauseSession(sceneStore, options = {}) {
|
|
230
|
+
const { gesture } = options;
|
|
231
|
+
const holder = {
|
|
232
|
+
release: acquireSceneHistoryPause(sceneStore),
|
|
233
|
+
ended: false,
|
|
234
|
+
};
|
|
235
|
+
livePauseHolders.add(holder);
|
|
236
|
+
let coOwners = new Set([holder]);
|
|
237
|
+
if (gesture) {
|
|
238
|
+
coOwners = gesturePauseHolders.get(gesture) ?? new Set();
|
|
239
|
+
coOwners.add(holder);
|
|
240
|
+
gesturePauseHolders.set(gesture, coOwners);
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
commitStep(write) {
|
|
244
|
+
return runWithHoldersLifted(sceneStore, coOwners, () => withSceneHistoryDraftSuspended(gesture, write));
|
|
245
|
+
},
|
|
246
|
+
end() {
|
|
247
|
+
if (holder.ended)
|
|
248
|
+
return;
|
|
249
|
+
holder.ended = true;
|
|
250
|
+
holder.release?.();
|
|
251
|
+
holder.release = null;
|
|
252
|
+
livePauseHolders.delete(holder);
|
|
253
|
+
coOwners.delete(holder);
|
|
254
|
+
if (gesture && coOwners.size === 0)
|
|
255
|
+
gesturePauseHolders.delete(gesture);
|
|
256
|
+
},
|
|
257
|
+
};
|
|
258
|
+
}
|
|
166
259
|
export function getSceneHistoryPauseDepth() {
|
|
167
260
|
return sceneHistoryPauseDepth + sceneHistoryPauseLeases.size;
|
|
168
261
|
}
|
|
169
262
|
export function resetSceneHistoryPauseDepth() {
|
|
170
263
|
sceneHistoryPauseDepth = 0;
|
|
171
264
|
sceneHistoryPauseLeases.clear();
|
|
265
|
+
// Open sessions no longer hold anything; a later commitStep must not re-take their pause.
|
|
266
|
+
for (const holder of livePauseHolders)
|
|
267
|
+
holder.release = null;
|
|
268
|
+
livePauseHolders.clear();
|
|
269
|
+
gesturePauseHolders.clear();
|
|
172
270
|
}
|
|
173
271
|
function retainedPastStateCount(before, after) {
|
|
174
272
|
for (let start = 0; start < before.length; start += 1) {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { AnyNode, AnyNodeId } from '../schema/types.js';
|
|
2
|
+
type NodeMap = Record<AnyNodeId, AnyNode>;
|
|
3
|
+
/**
|
|
4
|
+
* Registers `id` as a carried draft; returns the call that ends it. A second holder of a node
|
|
5
|
+
* already carried (split view) shares its registration, which ends with its last holder.
|
|
6
|
+
*/
|
|
7
|
+
export declare function beginSceneHistoryDraft(id: AnyNodeId, original: AnyNode | null, nodes: NodeMap): () => void;
|
|
8
|
+
/**
|
|
9
|
+
* Runs a gesture's committing write with `id` visible to history, so whichever co-owner of the
|
|
10
|
+
* gesture drops it (the 3D mover or the 2D move overlay) records the change.
|
|
11
|
+
*/
|
|
12
|
+
export declare function withSceneHistoryDraftSuspended<T>(id: string | undefined, write: () => T): T;
|
|
13
|
+
export declare function hasSceneHistoryDrafts(): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Records a carry's own write: each field it changed on an adopted draft is held with the value
|
|
16
|
+
* it had before (kept from an earlier carry write while the carry still held it) and the value
|
|
17
|
+
* the carry wrote. A write back to that earlier value ends the hold.
|
|
18
|
+
*/
|
|
19
|
+
export declare function noteSceneHistoryDraftWrite(before: NodeMap, after: NodeMap): void;
|
|
20
|
+
/**
|
|
21
|
+
* Updates that put an adopted draft's held fields back to their values before the carry,
|
|
22
|
+
* leaving everything others wrote. A parent that no longer exists is never restored.
|
|
23
|
+
*/
|
|
24
|
+
export declare function sceneHistoryDraftRevertUpdates(nodes: NodeMap, ids: Iterable<AnyNodeId>): Array<{
|
|
25
|
+
id: AnyNodeId;
|
|
26
|
+
data: Record<string, unknown>;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* A drop committed these drafts' carried state: nothing the carry wrote is left to revert, so a
|
|
30
|
+
* co-holder's later cancel or cleanup (the 3D mover after a split-view 2D drop) keeps the drop.
|
|
31
|
+
*/
|
|
32
|
+
export declare function settleSceneHistoryDrafts(ids: Iterable<AnyNodeId>): void;
|
|
33
|
+
export declare function clearSceneHistoryDrafts(): void;
|
|
34
|
+
/** Created drafts: history excludes them (and their subtrees) like fresh-placement nodes. */
|
|
35
|
+
export declare function createdSceneHistoryDraftIds(): AnyNodeId[];
|
|
36
|
+
/**
|
|
37
|
+
* Records the carry-owned fields of adopted drafts as they were before the carry. The original
|
|
38
|
+
* parent link is restored only while that parent still exists. `historyNodes` may be `nodes`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function withAdoptedDraftsAsOriginal(nodes: NodeMap, historyNodes: NodeMap): NodeMap;
|
|
41
|
+
/**
|
|
42
|
+
* After an undo or redo, puts back what the carry holds: a created draft (and its subtree)
|
|
43
|
+
* whole, and on an adopted draft only its held fields, as they were just before the jump.
|
|
44
|
+
* Everything else keeps the jumped-to state. Returns null when nothing needs restoring.
|
|
45
|
+
*/
|
|
46
|
+
export declare function withDraftsRestored(before: NodeMap, after: NodeMap): NodeMap | null;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=history-drafts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-drafts.d.ts","sourceRoot":"","sources":["../../src/store/history-drafts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAgDzD,KAAK,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAWzC;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,OAAO,GAAG,IAAI,EACxB,KAAK,EAAE,OAAO,GACb,MAAM,IAAI,CAmBZ;AAcD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAW3F;AA4BD,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAwChF;AAiCD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,GACvB,KAAK,CAAC;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAsBzD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,CAOvE;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,6FAA6F;AAC7F,wBAAgB,2BAA2B,IAAI,SAAS,EAAE,CAIzD;AAiDD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAmC1F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAwFlF"}
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/** Structural equality for node field values (plain data: arrays, objects, primitives). */
|
|
2
|
+
function sameValue(a, b) {
|
|
3
|
+
if (a === b)
|
|
4
|
+
return true;
|
|
5
|
+
if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null)
|
|
6
|
+
return false;
|
|
7
|
+
if (Array.isArray(a) !== Array.isArray(b))
|
|
8
|
+
return false;
|
|
9
|
+
const aKeys = Object.keys(a);
|
|
10
|
+
const bKeys = Object.keys(b);
|
|
11
|
+
if (aKeys.length !== bKeys.length)
|
|
12
|
+
return false;
|
|
13
|
+
return aKeys.every((key) => sameValue(a[key], b[key]));
|
|
14
|
+
}
|
|
15
|
+
const sceneHistoryDrafts = new Map();
|
|
16
|
+
const faceHostFields = ['roofSegmentId', 'roofFace', 'blockFaceId'];
|
|
17
|
+
const childIdsOf = (node) => node && 'children' in node && Array.isArray(node.children) ? node.children : [];
|
|
18
|
+
const attachmentsOf = (node) => node && 'attachments' in node && node.attachments && typeof node.attachments === 'object'
|
|
19
|
+
? node.attachments
|
|
20
|
+
: undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Registers `id` as a carried draft; returns the call that ends it. A second holder of a node
|
|
23
|
+
* already carried (split view) shares its registration, which ends with its last holder.
|
|
24
|
+
*/
|
|
25
|
+
export function beginSceneHistoryDraft(id, original, nodes) {
|
|
26
|
+
const existing = sceneHistoryDrafts.get(id);
|
|
27
|
+
if (existing && !existing.ended) {
|
|
28
|
+
existing.refs += 1;
|
|
29
|
+
return releaseOnce(id, existing);
|
|
30
|
+
}
|
|
31
|
+
const parent = original?.parentId ? nodes[original.parentId] : undefined;
|
|
32
|
+
const draft = {
|
|
33
|
+
original,
|
|
34
|
+
parentIndex: childIdsOf(parent).indexOf(id),
|
|
35
|
+
attachment: attachmentsOf(parent)?.[id],
|
|
36
|
+
owned: new Map(),
|
|
37
|
+
hostEntries: new Map(),
|
|
38
|
+
refs: 1,
|
|
39
|
+
ended: false,
|
|
40
|
+
suspended: false,
|
|
41
|
+
};
|
|
42
|
+
sceneHistoryDrafts.set(id, draft);
|
|
43
|
+
return releaseOnce(id, draft);
|
|
44
|
+
}
|
|
45
|
+
function releaseOnce(id, draft) {
|
|
46
|
+
let released = false;
|
|
47
|
+
return () => {
|
|
48
|
+
if (released)
|
|
49
|
+
return;
|
|
50
|
+
released = true;
|
|
51
|
+
draft.refs -= 1;
|
|
52
|
+
if (draft.refs > 0)
|
|
53
|
+
return;
|
|
54
|
+
draft.ended = true;
|
|
55
|
+
if (sceneHistoryDrafts.get(id) === draft)
|
|
56
|
+
sceneHistoryDrafts.delete(id);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Runs a gesture's committing write with `id` visible to history, so whichever co-owner of the
|
|
61
|
+
* gesture drops it (the 3D mover or the 2D move overlay) records the change.
|
|
62
|
+
*/
|
|
63
|
+
export function withSceneHistoryDraftSuspended(id, write) {
|
|
64
|
+
const draft = id ? sceneHistoryDrafts.get(id) : undefined;
|
|
65
|
+
if (!(id && draft))
|
|
66
|
+
return write();
|
|
67
|
+
// Visible to history for this write, but still the carry's: its own restore can revert it.
|
|
68
|
+
const wasSuspended = draft.suspended;
|
|
69
|
+
draft.suspended = true;
|
|
70
|
+
try {
|
|
71
|
+
return write();
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
draft.suspended = wasSuspended;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** A host's attachment entry for `id`, or ABSENT. */
|
|
78
|
+
const ABSENT = Symbol('absent');
|
|
79
|
+
function hostEntry(nodes, hostId, id) {
|
|
80
|
+
const attachments = attachmentsOf(nodes[hostId]);
|
|
81
|
+
return attachments && Object.hasOwn(attachments, id) ? attachments[id] : ABSENT;
|
|
82
|
+
}
|
|
83
|
+
/** `host` with its attachment entry for `id` set to `value` (ABSENT removes it). */
|
|
84
|
+
function withHostEntry(host, id, value) {
|
|
85
|
+
const { [id]: _previous, ...rest } = attachmentsOf(host) ?? {};
|
|
86
|
+
return {
|
|
87
|
+
...host,
|
|
88
|
+
attachments: value === ABSENT ? rest : { ...rest, [id]: value },
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function heldHostEntries(draft, id, nodes) {
|
|
92
|
+
return [...draft.hostEntries].filter(([hostId, entry]) => nodes[hostId] && sameValue(hostEntry(nodes, hostId, id), entry.carried));
|
|
93
|
+
}
|
|
94
|
+
export function hasSceneHistoryDrafts() {
|
|
95
|
+
return sceneHistoryDrafts.size > 0;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Records a carry's own write: each field it changed on an adopted draft is held with the value
|
|
99
|
+
* it had before (kept from an earlier carry write while the carry still held it) and the value
|
|
100
|
+
* the carry wrote. A write back to that earlier value ends the hold.
|
|
101
|
+
*/
|
|
102
|
+
export function noteSceneHistoryDraftWrite(before, after) {
|
|
103
|
+
for (const [id, draft] of sceneHistoryDrafts) {
|
|
104
|
+
const previous = before[id];
|
|
105
|
+
const next = after[id];
|
|
106
|
+
if (!(draft.original && previous && next))
|
|
107
|
+
continue;
|
|
108
|
+
const hosts = new Set([
|
|
109
|
+
previous.parentId,
|
|
110
|
+
next.parentId,
|
|
111
|
+
draft.original.parentId,
|
|
112
|
+
...draft.hostEntries.keys(),
|
|
113
|
+
].filter((hostId) => typeof hostId === 'string'));
|
|
114
|
+
for (const hostId of hosts) {
|
|
115
|
+
const was = hostEntry(before, hostId, id);
|
|
116
|
+
const now = hostEntry(after, hostId, id);
|
|
117
|
+
if (sameValue(was, now))
|
|
118
|
+
continue;
|
|
119
|
+
const held = draft.hostEntries.get(hostId);
|
|
120
|
+
const baseline = held && sameValue(held.carried, was) ? held.baseline : was;
|
|
121
|
+
if (sameValue(baseline, now))
|
|
122
|
+
draft.hostEntries.delete(hostId);
|
|
123
|
+
else
|
|
124
|
+
draft.hostEntries.set(hostId, { baseline, carried: now });
|
|
125
|
+
}
|
|
126
|
+
if (previous === next)
|
|
127
|
+
continue;
|
|
128
|
+
for (const key of new Set([...Object.keys(previous), ...Object.keys(next)])) {
|
|
129
|
+
if (sameValue(previous[key], next[key]))
|
|
130
|
+
continue;
|
|
131
|
+
const held = key === 'metadata'
|
|
132
|
+
? heldFields(draft, before[id]).find(([name]) => name === key)?.[1]
|
|
133
|
+
: draft.owned.get(key);
|
|
134
|
+
const baseline = held && sameValue(held.carried, previous[key])
|
|
135
|
+
? held.baseline
|
|
136
|
+
: { present: Object.hasOwn(previous, key), value: previous[key] };
|
|
137
|
+
if (baseline.present === Object.hasOwn(next, key) && sameValue(baseline.value, next[key])) {
|
|
138
|
+
draft.owned.delete(key);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
draft.owned.set(key, { baseline, carried: next[key] });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The fields the carry still holds on an adopted draft: those whose live value is still the
|
|
148
|
+
* carry's. A foreign write over one ends the hold (until the carry writes it again).
|
|
149
|
+
*/
|
|
150
|
+
function heldFields(draft, live) {
|
|
151
|
+
const values = live;
|
|
152
|
+
return [...draft.owned].flatMap(([key, field]) => {
|
|
153
|
+
if (sameValue(values[key], field.carried))
|
|
154
|
+
return [[key, field]];
|
|
155
|
+
if (key !== 'metadata')
|
|
156
|
+
return [];
|
|
157
|
+
const current = values[key];
|
|
158
|
+
const carried = field.carried;
|
|
159
|
+
const baseline = (field.baseline.present ? field.baseline.value : {});
|
|
160
|
+
if (!(current && carried && baseline))
|
|
161
|
+
return [];
|
|
162
|
+
// Metadata writers commonly spread the current record before adding their own key.
|
|
163
|
+
// Retain ownership of unchanged carry keys without masking that writer's additions.
|
|
164
|
+
const heldKeys = [...new Set([...Object.keys(baseline), ...Object.keys(carried)])].filter((name) => !sameValue(baseline[name], carried[name]) && sameValue(current[name], carried[name]));
|
|
165
|
+
if (heldKeys.length === 0)
|
|
166
|
+
return [];
|
|
167
|
+
const restored = { ...current };
|
|
168
|
+
for (const name of heldKeys) {
|
|
169
|
+
if (Object.hasOwn(baseline, name))
|
|
170
|
+
restored[name] = baseline[name];
|
|
171
|
+
else
|
|
172
|
+
delete restored[name];
|
|
173
|
+
}
|
|
174
|
+
return [[key, { baseline: { present: true, value: restored }, carried: current, heldKeys }]];
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Updates that put an adopted draft's held fields back to their values before the carry,
|
|
179
|
+
* leaving everything others wrote. A parent that no longer exists is never restored.
|
|
180
|
+
*/
|
|
181
|
+
export function sceneHistoryDraftRevertUpdates(nodes, ids) {
|
|
182
|
+
const updates = [];
|
|
183
|
+
for (const id of ids) {
|
|
184
|
+
const draft = sceneHistoryDrafts.get(id);
|
|
185
|
+
const live = nodes[id];
|
|
186
|
+
if (!(draft?.original && live))
|
|
187
|
+
continue;
|
|
188
|
+
const data = {};
|
|
189
|
+
for (const [key, { baseline }] of heldFields(draft, live)) {
|
|
190
|
+
if (key === 'parentId' && baseline.value && !nodes[baseline.value])
|
|
191
|
+
continue;
|
|
192
|
+
data[key] = baseline.present ? baseline.value : undefined;
|
|
193
|
+
}
|
|
194
|
+
if (Object.keys(data).length > 0)
|
|
195
|
+
updates.push({ id, data });
|
|
196
|
+
for (const [hostId, { baseline }] of heldHostEntries(draft, id, nodes)) {
|
|
197
|
+
const pending = updates.find((update) => update.id === hostId);
|
|
198
|
+
const host = { ...nodes[hostId], ...(pending?.data ?? {}) };
|
|
199
|
+
const attachments = withHostEntry(host, id, baseline)
|
|
200
|
+
.attachments;
|
|
201
|
+
if (pending)
|
|
202
|
+
pending.data.attachments = attachments;
|
|
203
|
+
else
|
|
204
|
+
updates.push({ id: hostId, data: { attachments } });
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return updates;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* A drop committed these drafts' carried state: nothing the carry wrote is left to revert, so a
|
|
211
|
+
* co-holder's later cancel or cleanup (the 3D mover after a split-view 2D drop) keeps the drop.
|
|
212
|
+
*/
|
|
213
|
+
export function settleSceneHistoryDrafts(ids) {
|
|
214
|
+
for (const id of ids) {
|
|
215
|
+
const draft = sceneHistoryDrafts.get(id);
|
|
216
|
+
if (!draft)
|
|
217
|
+
continue;
|
|
218
|
+
draft.owned.clear();
|
|
219
|
+
draft.hostEntries.clear();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
export function clearSceneHistoryDrafts() {
|
|
223
|
+
sceneHistoryDrafts.clear();
|
|
224
|
+
}
|
|
225
|
+
/** Created drafts: history excludes them (and their subtrees) like fresh-placement nodes. */
|
|
226
|
+
export function createdSceneHistoryDraftIds() {
|
|
227
|
+
return [...sceneHistoryDrafts]
|
|
228
|
+
.filter(([, draft]) => !(draft.original || draft.suspended))
|
|
229
|
+
.map(([id]) => id);
|
|
230
|
+
}
|
|
231
|
+
/** Moves `id` from wherever it lives in `nodes` to `parentId` (at `index`), with `attachment`. */
|
|
232
|
+
function placeChild(nodes, id, fromParentId, toParentId, index, attachment) {
|
|
233
|
+
const update = (parentId, edit) => {
|
|
234
|
+
const parent = nodes[parentId];
|
|
235
|
+
if (!parent)
|
|
236
|
+
return;
|
|
237
|
+
const next = { ...parent };
|
|
238
|
+
edit(next);
|
|
239
|
+
nodes[parentId] = next;
|
|
240
|
+
};
|
|
241
|
+
if (fromParentId && fromParentId !== toParentId) {
|
|
242
|
+
update(fromParentId, (parent) => {
|
|
243
|
+
const children = parent.children;
|
|
244
|
+
if (Array.isArray(children))
|
|
245
|
+
parent.children = children.filter((child) => child !== id);
|
|
246
|
+
const attachments = parent.attachments;
|
|
247
|
+
if (attachments && Object.hasOwn(attachments, id)) {
|
|
248
|
+
const { [id]: _removed, ...rest } = attachments;
|
|
249
|
+
parent.attachments = rest;
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
if (!toParentId)
|
|
254
|
+
return;
|
|
255
|
+
update(toParentId, (parent) => {
|
|
256
|
+
const children = parent.children;
|
|
257
|
+
if (Array.isArray(children) && !children.includes(id)) {
|
|
258
|
+
const next = [...children];
|
|
259
|
+
next.splice(index < 0 ? next.length : Math.min(index, next.length), 0, id);
|
|
260
|
+
parent.children = next;
|
|
261
|
+
}
|
|
262
|
+
const attachments = parent.attachments;
|
|
263
|
+
if (attachment === undefined) {
|
|
264
|
+
if (attachments && Object.hasOwn(attachments, id)) {
|
|
265
|
+
const { [id]: _removed, ...rest } = attachments;
|
|
266
|
+
parent.attachments = rest;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else if (attachments?.[id] !== attachment) {
|
|
270
|
+
parent.attachments = { ...(attachments ?? {}), [id]: attachment };
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Records the carry-owned fields of adopted drafts as they were before the carry. The original
|
|
276
|
+
* parent link is restored only while that parent still exists. `historyNodes` may be `nodes`.
|
|
277
|
+
*/
|
|
278
|
+
export function withAdoptedDraftsAsOriginal(nodes, historyNodes) {
|
|
279
|
+
let result = null;
|
|
280
|
+
for (const [id, draft] of sceneHistoryDrafts) {
|
|
281
|
+
if (draft.suspended)
|
|
282
|
+
continue;
|
|
283
|
+
const live = nodes[id];
|
|
284
|
+
const held = draft.original && live ? heldFields(draft, live) : [];
|
|
285
|
+
const heldHosts = draft.original && live ? heldHostEntries(draft, id, nodes) : [];
|
|
286
|
+
if (!(draft.original && live) || held.length + heldHosts.length === 0)
|
|
287
|
+
continue;
|
|
288
|
+
const heldParent = held.find(([key]) => key === 'parentId')?.[1].baseline;
|
|
289
|
+
const originalParentId = heldParent?.value;
|
|
290
|
+
const restoreParent = Boolean(heldParent) && (!originalParentId || Boolean(nodes[originalParentId]));
|
|
291
|
+
const recorded = { ...live };
|
|
292
|
+
for (const [key, { baseline }] of held) {
|
|
293
|
+
if (key === 'parentId' && !restoreParent)
|
|
294
|
+
continue;
|
|
295
|
+
if (baseline.present)
|
|
296
|
+
recorded[key] = baseline.value;
|
|
297
|
+
else
|
|
298
|
+
delete recorded[key];
|
|
299
|
+
}
|
|
300
|
+
result ??= { ...historyNodes };
|
|
301
|
+
result[id] = recorded;
|
|
302
|
+
if (restoreParent) {
|
|
303
|
+
placeChild(result, id, live.parentId, originalParentId, originalParentId === draft.original.parentId ? draft.parentIndex : -1, originalParentId === draft.original.parentId ? draft.attachment : undefined);
|
|
304
|
+
}
|
|
305
|
+
for (const [hostId, { baseline }] of heldHosts) {
|
|
306
|
+
if (result[hostId])
|
|
307
|
+
result[hostId] = withHostEntry(result[hostId], id, baseline);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return result ?? historyNodes;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* After an undo or redo, puts back what the carry holds: a created draft (and its subtree)
|
|
314
|
+
* whole, and on an adopted draft only its held fields, as they were just before the jump.
|
|
315
|
+
* Everything else keeps the jumped-to state. Returns null when nothing needs restoring.
|
|
316
|
+
*/
|
|
317
|
+
export function withDraftsRestored(before, after) {
|
|
318
|
+
let result = null;
|
|
319
|
+
for (const [id, draft] of sceneHistoryDrafts) {
|
|
320
|
+
if (draft.suspended)
|
|
321
|
+
continue;
|
|
322
|
+
const live = before[id];
|
|
323
|
+
if (!live)
|
|
324
|
+
continue;
|
|
325
|
+
if (draft.original) {
|
|
326
|
+
const jumped = after[id];
|
|
327
|
+
if (!jumped)
|
|
328
|
+
continue;
|
|
329
|
+
for (const [hostId, { carried }] of heldHostEntries(draft, id, before)) {
|
|
330
|
+
const host = (result ?? after)[hostId];
|
|
331
|
+
if (!host || sameValue(hostEntry(result ?? after, hostId, id), carried))
|
|
332
|
+
continue;
|
|
333
|
+
result ??= { ...after };
|
|
334
|
+
result[hostId] = withHostEntry(host, id, carried);
|
|
335
|
+
}
|
|
336
|
+
const values = live;
|
|
337
|
+
const heldEntries = new Map(heldFields(draft, live));
|
|
338
|
+
const held = [...heldEntries]
|
|
339
|
+
.map(([key]) => key)
|
|
340
|
+
.filter((key) => !sameValue(values[key], jumped[key]));
|
|
341
|
+
if (held.length === 0)
|
|
342
|
+
continue;
|
|
343
|
+
result ??= { ...after };
|
|
344
|
+
const restored = { ...jumped };
|
|
345
|
+
const lostParent = live.parentId && !result[live.parentId];
|
|
346
|
+
for (const key of held) {
|
|
347
|
+
// A missing host's binding must not replace the jumped-to parent's valid binding.
|
|
348
|
+
if (lostParent && (key === 'parentId' || faceHostFields.includes(key)))
|
|
349
|
+
continue;
|
|
350
|
+
const heldKeys = heldEntries.get(key)?.heldKeys;
|
|
351
|
+
if (heldKeys) {
|
|
352
|
+
const metadata = { ...restored[key] };
|
|
353
|
+
const carried = values[key];
|
|
354
|
+
for (const name of heldKeys) {
|
|
355
|
+
if (Object.hasOwn(carried, name))
|
|
356
|
+
metadata[name] = carried[name];
|
|
357
|
+
else
|
|
358
|
+
delete metadata[name];
|
|
359
|
+
}
|
|
360
|
+
restored[key] = metadata;
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
if (Object.hasOwn(values, key))
|
|
364
|
+
restored[key] = values[key];
|
|
365
|
+
else
|
|
366
|
+
delete restored[key];
|
|
367
|
+
}
|
|
368
|
+
result[id] = restored;
|
|
369
|
+
const parentId = live.parentId;
|
|
370
|
+
if (held.includes('parentId') && parentId && result[parentId]) {
|
|
371
|
+
const beforeParent = before[parentId];
|
|
372
|
+
placeChild(result, id, jumped.parentId, parentId, childIdsOf(beforeParent).indexOf(id), attachmentsOf(beforeParent)?.[id]);
|
|
373
|
+
}
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
376
|
+
const subtree = [id];
|
|
377
|
+
for (let index = 0; index < subtree.length; index++) {
|
|
378
|
+
for (const childId of childIdsOf(before[subtree[index]]))
|
|
379
|
+
subtree.push(childId);
|
|
380
|
+
}
|
|
381
|
+
if (subtree.every((nodeId) => after[nodeId] === before[nodeId]))
|
|
382
|
+
continue;
|
|
383
|
+
result ??= { ...after };
|
|
384
|
+
for (const nodeId of subtree)
|
|
385
|
+
result[nodeId] = before[nodeId];
|
|
386
|
+
let parentId = live.parentId;
|
|
387
|
+
const visited = new Set();
|
|
388
|
+
while (parentId && !result[parentId] && !visited.has(parentId)) {
|
|
389
|
+
visited.add(parentId);
|
|
390
|
+
parentId = before[parentId]?.parentId;
|
|
391
|
+
}
|
|
392
|
+
if (parentId !== live.parentId) {
|
|
393
|
+
const restored = { ...live, parentId: parentId ?? null };
|
|
394
|
+
for (const key of faceHostFields)
|
|
395
|
+
delete restored[key];
|
|
396
|
+
result[id] = restored;
|
|
397
|
+
}
|
|
398
|
+
const previousParentId = after[id]?.parentId;
|
|
399
|
+
const beforeParent = parentId ? before[parentId] : undefined;
|
|
400
|
+
placeChild(result, id, previousParentId, parentId, childIdsOf(beforeParent).indexOf(id), attachmentsOf(beforeParent)?.[id]);
|
|
401
|
+
}
|
|
402
|
+
return result;
|
|
403
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history-invalidation.d.ts","sourceRoot":"","sources":["../../src/store/history-invalidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAY,MAAM,WAAW,CAAA;AAG7D,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,GAAG,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"history-invalidation.d.ts","sourceRoot":"","sources":["../../src/store/history-invalidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAY,MAAM,WAAW,CAAA;AAG7D,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,GAAG,CAAC,SAAS,CAAC,CA0EhB"}
|
|
@@ -20,6 +20,7 @@ export function getHistoryDirtyNodeIds(before, after) {
|
|
|
20
20
|
if (previous?.type !== 'wall' ||
|
|
21
21
|
next?.type !== 'wall' ||
|
|
22
22
|
previous.thickness !== next.thickness ||
|
|
23
|
+
previous.justification !== next.justification ||
|
|
23
24
|
previous.height !== next.height ||
|
|
24
25
|
previous.curveOffset !== next.curveOffset) {
|
|
25
26
|
changedHosts.add(id);
|