@pascal-app/core 1.0.3 → 1.0.5
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 +247 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.js +429 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.js +176 -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 +1005 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts +67 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/cases.js +868 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +14 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.js +709 -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__/finish-cases.d.ts +7 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/finish-cases.js +758 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.js +370 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.js +321 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts +2237 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/native-materials.js +82 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.js +639 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts +24 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/notation-cases.js +356 -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 +584 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +19726 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.js +106 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts +9 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-cases.js +382 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/room-cases.js +473 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.js +417 -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 +149 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts +290 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/site-cases.js +780 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +7 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/structure-cases.js +1215 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +313 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.js +350 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts +50 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.js +425 -0
- package/dist/agent-operations/achieved.d.ts +21 -0
- package/dist/agent-operations/achieved.d.ts.map +1 -0
- package/dist/agent-operations/achieved.js +48 -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 +99 -0
- package/dist/agent-operations/add-fence.d.ts +18 -0
- package/dist/agent-operations/add-fence.d.ts.map +1 -0
- package/dist/agent-operations/add-fence.js +48 -0
- package/dist/agent-operations/add-level.d.ts +17 -0
- package/dist/agent-operations/add-level.d.ts.map +1 -0
- package/dist/agent-operations/add-level.js +130 -0
- package/dist/agent-operations/add-object.d.ts +143 -0
- package/dist/agent-operations/add-object.d.ts.map +1 -0
- package/dist/agent-operations/add-object.js +522 -0
- package/dist/agent-operations/add-wall.d.ts +13 -0
- package/dist/agent-operations/add-wall.d.ts.map +1 -0
- package/dist/agent-operations/add-wall.js +73 -0
- package/dist/agent-operations/apply-changes.d.ts +22 -0
- package/dist/agent-operations/apply-changes.d.ts.map +1 -0
- package/dist/agent-operations/apply-changes.js +125 -0
- package/dist/agent-operations/apply-outcome.d.ts +21 -0
- package/dist/agent-operations/apply-outcome.d.ts.map +1 -0
- package/dist/agent-operations/apply-outcome.js +33 -0
- package/dist/agent-operations/asset-views.d.ts +75 -0
- package/dist/agent-operations/asset-views.d.ts.map +1 -0
- package/dist/agent-operations/asset-views.js +234 -0
- package/dist/agent-operations/author-scene.d.ts +157 -0
- package/dist/agent-operations/author-scene.d.ts.map +1 -0
- package/dist/agent-operations/author-scene.js +1076 -0
- package/dist/agent-operations/authored-scene-merge.d.ts +4 -0
- package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -0
- package/dist/agent-operations/authored-scene-merge.js +96 -0
- package/dist/agent-operations/batch.d.ts +22 -0
- package/dist/agent-operations/batch.d.ts.map +1 -0
- package/dist/agent-operations/batch.js +104 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts +31 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/ceiling-object-observations.js +111 -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/corner-window.d.ts +19 -0
- package/dist/agent-operations/corner-window.d.ts.map +1 -0
- package/dist/agent-operations/corner-window.js +84 -0
- package/dist/agent-operations/create-roof.d.ts +32 -0
- package/dist/agent-operations/create-roof.d.ts.map +1 -0
- package/dist/agent-operations/create-roof.js +304 -0
- package/dist/agent-operations/create-room.d.ts +38 -0
- package/dist/agent-operations/create-room.d.ts.map +1 -0
- package/dist/agent-operations/create-room.js +245 -0
- package/dist/agent-operations/create-stair.d.ts +11 -0
- package/dist/agent-operations/create-stair.d.ts.map +1 -0
- package/dist/agent-operations/create-stair.js +330 -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/design-brief.d.ts +38 -0
- package/dist/agent-operations/design-brief.d.ts.map +1 -0
- package/dist/agent-operations/design-brief.js +300 -0
- package/dist/agent-operations/designs.d.ts +24 -0
- package/dist/agent-operations/designs.d.ts.map +1 -0
- package/dist/agent-operations/designs.js +48 -0
- package/dist/agent-operations/door-clearance.d.ts +150 -0
- package/dist/agent-operations/door-clearance.d.ts.map +1 -0
- package/dist/agent-operations/door-clearance.js +391 -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 +55 -0
- package/dist/agent-operations/find-by-type.d.ts +18 -0
- package/dist/agent-operations/find-by-type.d.ts.map +1 -0
- package/dist/agent-operations/find-by-type.js +317 -0
- package/dist/agent-operations/furnish-room.d.ts +39 -0
- package/dist/agent-operations/furnish-room.d.ts.map +1 -0
- package/dist/agent-operations/furnish-room.js +306 -0
- package/dist/agent-operations/furniture-kind.d.ts +22 -0
- package/dist/agent-operations/furniture-kind.d.ts.map +1 -0
- package/dist/agent-operations/furniture-kind.js +69 -0
- package/dist/agent-operations/get-node.d.ts +12 -0
- package/dist/agent-operations/get-node.d.ts.map +1 -0
- package/dist/agent-operations/get-node.js +105 -0
- package/dist/agent-operations/hosted-services.d.ts +14 -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 +489 -0
- package/dist/agent-operations/index.d.ts.map +1 -0
- package/dist/agent-operations/index.js +141 -0
- package/dist/agent-operations/item-space.d.ts +22 -0
- package/dist/agent-operations/item-space.d.ts.map +1 -0
- package/dist/agent-operations/item-space.js +69 -0
- package/dist/agent-operations/layout-clearance.d.ts +157 -0
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -0
- package/dist/agent-operations/layout-clearance.js +500 -0
- package/dist/agent-operations/level-height-fill.d.ts +12 -0
- package/dist/agent-operations/level-height-fill.d.ts.map +1 -0
- package/dist/agent-operations/level-height-fill.js +59 -0
- package/dist/agent-operations/level-reads.d.ts +37 -0
- package/dist/agent-operations/level-reads.d.ts.map +1 -0
- package/dist/agent-operations/level-reads.js +168 -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 +54 -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 +68 -0
- package/dist/agent-operations/material-refs.d.ts +30 -0
- package/dist/agent-operations/material-refs.d.ts.map +1 -0
- package/dist/agent-operations/material-refs.js +105 -0
- package/dist/agent-operations/merge-windows.d.ts +6 -0
- package/dist/agent-operations/merge-windows.d.ts.map +1 -0
- package/dist/agent-operations/merge-windows.js +27 -0
- package/dist/agent-operations/move-roofs.d.ts +9 -0
- package/dist/agent-operations/move-roofs.d.ts.map +1 -0
- package/dist/agent-operations/move-roofs.js +29 -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 +22 -0
- package/dist/agent-operations/paint.d.ts.map +1 -0
- package/dist/agent-operations/paint.js +329 -0
- package/dist/agent-operations/photo-elevation.d.ts +155 -0
- package/dist/agent-operations/photo-elevation.d.ts.map +1 -0
- package/dist/agent-operations/photo-elevation.js +761 -0
- package/dist/agent-operations/place-in-room.d.ts +29 -0
- package/dist/agent-operations/place-in-room.d.ts.map +1 -0
- package/dist/agent-operations/place-in-room.js +403 -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 +239 -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 +97 -0
- package/dist/agent-operations/point-context.d.ts +139 -0
- package/dist/agent-operations/point-context.d.ts.map +1 -0
- package/dist/agent-operations/point-context.js +1 -0
- package/dist/agent-operations/project-files.d.ts +9 -0
- package/dist/agent-operations/project-files.d.ts.map +1 -0
- package/dist/agent-operations/project-files.js +25 -0
- package/dist/agent-operations/record-made.d.ts +18 -0
- package/dist/agent-operations/record-made.d.ts.map +1 -0
- package/dist/agent-operations/record-made.js +28 -0
- package/dist/agent-operations/roof-footprint.d.ts +24 -0
- package/dist/agent-operations/roof-footprint.d.ts.map +1 -0
- package/dist/agent-operations/roof-footprint.js +242 -0
- package/dist/agent-operations/roof-writes.d.ts +20 -0
- package/dist/agent-operations/roof-writes.d.ts.map +1 -0
- package/dist/agent-operations/roof-writes.js +165 -0
- package/dist/agent-operations/room-findings.d.ts +54 -0
- package/dist/agent-operations/room-findings.d.ts.map +1 -0
- package/dist/agent-operations/room-findings.js +143 -0
- package/dist/agent-operations/room-floor-script.d.ts +23 -0
- package/dist/agent-operations/room-floor-script.d.ts.map +1 -0
- package/dist/agent-operations/room-floor-script.js +54 -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-checkpoint.d.ts +94 -0
- package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/scene-checkpoint.js +176 -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 +4941 -0
- package/dist/agent-operations/scene-queries.d.ts.map +1 -0
- package/dist/agent-operations/scene-queries.js +74 -0
- package/dist/agent-operations/scene-review.d.ts +52 -0
- package/dist/agent-operations/scene-review.d.ts.map +1 -0
- package/dist/agent-operations/scene-review.js +106 -0
- package/dist/agent-operations/scene-view.d.ts +165 -0
- package/dist/agent-operations/scene-view.d.ts.map +1 -0
- package/dist/agent-operations/scene-view.js +916 -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 +43 -0
- package/dist/agent-operations/search-materials.d.ts +18 -0
- package/dist/agent-operations/search-materials.d.ts.map +1 -0
- package/dist/agent-operations/search-materials.js +165 -0
- package/dist/agent-operations/set-checkpoint.d.ts +9 -0
- package/dist/agent-operations/set-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/set-checkpoint.js +31 -0
- package/dist/agent-operations/set-ground-level.d.ts +12 -0
- package/dist/agent-operations/set-ground-level.d.ts.map +1 -0
- package/dist/agent-operations/set-ground-level.js +61 -0
- package/dist/agent-operations/site.d.ts +21 -0
- package/dist/agent-operations/site.d.ts.map +1 -0
- package/dist/agent-operations/site.js +123 -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 +118 -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 +84 -0
- package/dist/agent-operations/verify-scene.d.ts.map +1 -0
- package/dist/agent-operations/verify-scene.js +548 -0
- package/dist/agent-operations/wall-face-script.d.ts +28 -0
- package/dist/agent-operations/wall-face-script.d.ts.map +1 -0
- package/dist/agent-operations/wall-face-script.js +62 -0
- package/dist/agent-operations/wall-object-observations.d.ts +41 -0
- package/dist/agent-operations/wall-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/wall-object-observations.js +249 -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-operations/wall-skirting.d.ts +24 -0
- package/dist/agent-operations/wall-skirting.d.ts.map +1 -0
- package/dist/agent-operations/wall-skirting.js +85 -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 +47 -0
- package/dist/agent-tools/add-object.d.ts.map +1 -0
- package/dist/agent-tools/add-object.js +92 -0
- package/dist/agent-tools/assets.d.ts +21 -0
- package/dist/agent-tools/assets.d.ts.map +1 -0
- package/dist/agent-tools/assets.js +30 -0
- package/dist/agent-tools/author-scene.d.ts +651 -0
- package/dist/agent-tools/author-scene.d.ts.map +1 -0
- package/dist/agent-tools/author-scene.js +252 -0
- package/dist/agent-tools/batch.d.ts +25 -0
- package/dist/agent-tools/batch.d.ts.map +1 -0
- package/dist/agent-tools/batch.js +61 -0
- package/dist/agent-tools/checkpoints.d.ts +13 -0
- package/dist/agent-tools/checkpoints.d.ts.map +1 -0
- package/dist/agent-tools/checkpoints.js +16 -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/corner-window.d.ts +46 -0
- package/dist/agent-tools/corner-window.d.ts.map +1 -0
- package/dist/agent-tools/corner-window.js +47 -0
- package/dist/agent-tools/create-room.d.ts +64 -0
- package/dist/agent-tools/create-room.d.ts.map +1 -0
- package/dist/agent-tools/create-room.js +97 -0
- package/dist/agent-tools/design-brief.d.ts +408 -0
- package/dist/agent-tools/design-brief.d.ts.map +1 -0
- package/dist/agent-tools/design-brief.js +149 -0
- package/dist/agent-tools/designs.d.ts +34 -0
- package/dist/agent-tools/designs.d.ts.map +1 -0
- package/dist/agent-tools/designs.js +50 -0
- package/dist/agent-tools/fences.d.ts +28 -0
- package/dist/agent-tools/fences.d.ts.map +1 -0
- package/dist/agent-tools/fences.js +31 -0
- package/dist/agent-tools/find-by-type.d.ts +18 -0
- package/dist/agent-tools/find-by-type.d.ts.map +1 -0
- package/dist/agent-tools/find-by-type.js +35 -0
- package/dist/agent-tools/furnish-room.d.ts +28 -0
- package/dist/agent-tools/furnish-room.d.ts.map +1 -0
- package/dist/agent-tools/furnish-room.js +37 -0
- package/dist/agent-tools/hosted-services.d.ts +438 -0
- package/dist/agent-tools/hosted-services.d.ts.map +1 -0
- package/dist/agent-tools/hosted-services.js +181 -0
- package/dist/agent-tools/index.d.ts +1543 -0
- package/dist/agent-tools/index.d.ts.map +1 -0
- package/dist/agent-tools/index.js +126 -0
- package/dist/agent-tools/levels.d.ts +80 -0
- package/dist/agent-tools/levels.d.ts.map +1 -0
- package/dist/agent-tools/levels.js +87 -0
- package/dist/agent-tools/measurement.d.ts +55 -0
- package/dist/agent-tools/measurement.d.ts.map +1 -0
- package/dist/agent-tools/measurement.js +144 -0
- package/dist/agent-tools/merge-windows.d.ts +10 -0
- package/dist/agent-tools/merge-windows.d.ts.map +1 -0
- package/dist/agent-tools/merge-windows.js +12 -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/notation-inventory.d.ts +16 -0
- package/dist/agent-tools/notation-inventory.d.ts.map +1 -0
- package/dist/agent-tools/notation-inventory.js +105 -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/photo-elevation.d.ts +32 -0
- package/dist/agent-tools/photo-elevation.d.ts.map +1 -0
- package/dist/agent-tools/photo-elevation.js +73 -0
- package/dist/agent-tools/place-in-room.d.ts +35 -0
- package/dist/agent-tools/place-in-room.d.ts.map +1 -0
- package/dist/agent-tools/place-in-room.js +61 -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/project-files.d.ts +189 -0
- package/dist/agent-tools/project-files.d.ts.map +1 -0
- package/dist/agent-tools/project-files.js +99 -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/retired.d.ts +21 -0
- package/dist/agent-tools/retired.d.ts.map +1 -0
- package/dist/agent-tools/retired.js +29 -0
- package/dist/agent-tools/roofs.d.ts +100 -0
- package/dist/agent-tools/roofs.d.ts.map +1 -0
- package/dist/agent-tools/roofs.js +96 -0
- package/dist/agent-tools/room-structure.d.ts +446 -0
- package/dist/agent-tools/room-structure.d.ts.map +1 -0
- package/dist/agent-tools/room-structure.js +210 -0
- package/dist/agent-tools/search-materials.d.ts +39 -0
- package/dist/agent-tools/search-materials.d.ts.map +1 -0
- package/dist/agent-tools/search-materials.js +31 -0
- package/dist/agent-tools/site.d.ts +27 -0
- package/dist/agent-tools/site.d.ts.map +1 -0
- package/dist/agent-tools/site.js +40 -0
- package/dist/agent-tools/sources.d.ts +12 -0
- package/dist/agent-tools/sources.d.ts.map +1 -0
- package/dist/agent-tools/sources.js +11 -0
- package/dist/agent-tools/stairs.d.ts +106 -0
- package/dist/agent-tools/stairs.d.ts.map +1 -0
- package/dist/agent-tools/stairs.js +146 -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 +81 -0
- package/dist/agent-tools/view-scene.d.ts.map +1 -0
- package/dist/agent-tools/view-scene.js +123 -0
- package/dist/agent-tools/wall-openings.d.ts +167 -0
- package/dist/agent-tools/wall-openings.d.ts.map +1 -0
- package/dist/agent-tools/wall-openings.js +148 -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 +35 -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 +940 -0
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -0
- package/dist/building/__fixtures__/wall-opening-cases.js +367 -0
- package/dist/building/corner-window.d.ts +56 -0
- package/dist/building/corner-window.d.ts.map +1 -0
- package/dist/building/corner-window.js +179 -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/ground-level.d.ts +26 -0
- package/dist/building/ground-level.d.ts.map +1 -0
- package/dist/building/ground-level.js +58 -0
- package/dist/building/index.d.ts +12 -0
- package/dist/building/index.d.ts.map +1 -0
- package/dist/building/index.js +11 -0
- package/dist/building/level-duplication.d.ts +9842 -0
- package/dist/building/level-duplication.d.ts.map +1 -0
- package/dist/building/level-duplication.js +328 -0
- package/dist/building/level-insertion.d.ts +55 -0
- package/dist/building/level-insertion.d.ts.map +1 -0
- package/dist/building/level-insertion.js +35 -0
- package/dist/building/merge-windows.d.ts +58 -0
- package/dist/building/merge-windows.d.ts.map +1 -0
- package/dist/building/merge-windows.js +189 -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/photo-elevation.d.ts +125 -0
- package/dist/building/photo-elevation.d.ts.map +1 -0
- package/dist/building/photo-elevation.js +404 -0
- package/dist/building/wall-gaps.d.ts +13 -0
- package/dist/building/wall-gaps.d.ts.map +1 -0
- package/dist/building/wall-gaps.js +158 -0
- package/dist/building/wall-openings.d.ts +480 -0
- package/dist/building/wall-openings.d.ts.map +1 -0
- package/dist/building/wall-openings.js +259 -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/capture/schema.d.ts +22 -22
- package/dist/capture/source.d.ts.map +1 -1
- package/dist/capture/source.js +1 -1
- 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 +43 -0
- package/dist/commands/structure/create-zone.d.ts.map +1 -0
- package/dist/commands/structure/create-zone.js +175 -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 +43 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -0
- package/dist/commands/structure/set-zone-intent.js +144 -0
- package/dist/commands/structure/shared.d.ts +4941 -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 +5792 -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 +952 -0
- package/dist/events/bus.d.ts +90 -10
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/capture-sessions.d.ts +5 -0
- package/dist/events/capture-sessions.d.ts.map +1 -0
- package/dist/events/capture-sessions.js +31 -0
- 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/scene-registry/scene-registry.d.ts.map +1 -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 +4 -4
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +56 -71
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3948 -2034
- 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/spatial-grid.d.ts.map +1 -1
- 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 +21 -5
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts +3 -3
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -1
- package/dist/index.d.ts +109 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +103 -12
- 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 +15636 -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 +4912 -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/below-grade-footprints.d.ts +65 -0
- package/dist/lib/below-grade-footprints.d.ts.map +1 -0
- package/dist/lib/below-grade-footprints.js +181 -0
- package/dist/lib/building-footprint.d.ts +33 -0
- package/dist/lib/building-footprint.d.ts.map +1 -0
- package/dist/lib/building-footprint.js +89 -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/corner-pair.d.ts +1129 -0
- package/dist/lib/corner-pair.d.ts.map +1 -0
- package/dist/lib/corner-pair.js +130 -0
- package/dist/lib/corner-snap.d.ts +54 -0
- package/dist/lib/corner-snap.d.ts.map +1 -0
- package/dist/lib/corner-snap.js +125 -0
- package/dist/lib/critically-damped.d.ts +11 -0
- package/dist/lib/critically-damped.d.ts.map +1 -0
- package/dist/lib/critically-damped.js +14 -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/deepest-drawn.d.ts +18 -0
- package/dist/lib/deepest-drawn.d.ts.map +1 -0
- package/dist/lib/deepest-drawn.js +65 -0
- package/dist/lib/door-operation.d.ts +1 -1
- package/dist/lib/exterior-wall-loops.d.ts +17 -0
- package/dist/lib/exterior-wall-loops.d.ts.map +1 -0
- package/dist/lib/exterior-wall-loops.js +334 -0
- package/dist/lib/finish-script.d.ts +61 -0
- package/dist/lib/finish-script.d.ts.map +1 -0
- package/dist/lib/finish-script.js +86 -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 +10 -0
- package/dist/lib/floor-plate-paint.d.ts.map +1 -0
- package/dist/lib/floor-plate-paint.js +31 -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-script.d.ts +24 -0
- package/dist/lib/floor-script.d.ts.map +1 -0
- package/dist/lib/floor-script.js +51 -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/foundation-construction.d.ts +73 -0
- package/dist/lib/foundation-construction.d.ts.map +1 -0
- package/dist/lib/foundation-construction.js +242 -0
- package/dist/lib/foundation-standard.d.ts +30 -0
- package/dist/lib/foundation-standard.d.ts.map +1 -0
- package/dist/lib/foundation-standard.js +30 -0
- package/dist/lib/foundation-wall.d.ts +36 -0
- package/dist/lib/foundation-wall.d.ts.map +1 -0
- package/dist/lib/foundation-wall.js +66 -0
- package/dist/lib/generic-foundation.d.ts +40 -0
- package/dist/lib/generic-foundation.d.ts.map +1 -0
- package/dist/lib/generic-foundation.js +200 -0
- package/dist/lib/geometry-script-node.d.ts +111 -0
- package/dist/lib/geometry-script-node.d.ts.map +1 -0
- package/dist/lib/geometry-script-node.js +173 -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/grade-standing.d.ts +38 -0
- package/dist/lib/grade-standing.d.ts.map +1 -0
- package/dist/lib/grade-standing.js +137 -0
- package/dist/lib/ground-level.d.ts +20 -0
- package/dist/lib/ground-level.d.ts.map +1 -0
- package/dist/lib/ground-level.js +49 -0
- package/dist/lib/ground-over-part.d.ts +13 -0
- package/dist/lib/ground-over-part.d.ts.map +1 -0
- package/dist/lib/ground-over-part.js +94 -0
- package/dist/lib/ground-seat.d.ts +47 -0
- package/dist/lib/ground-seat.d.ts.map +1 -0
- package/dist/lib/ground-seat.js +61 -0
- package/dist/lib/ground-window.d.ts +39 -0
- package/dist/lib/ground-window.d.ts.map +1 -0
- package/dist/lib/ground-window.js +147 -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 +144 -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 +727 -0
- package/dist/lib/point-ask.d.ts +9 -0
- package/dist/lib/point-ask.d.ts.map +1 -0
- package/dist/lib/point-ask.js +36 -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 +1267 -0
- package/dist/lib/room-name.d.ts +12 -0
- package/dist/lib/room-name.d.ts.map +1 -0
- package/dist/lib/room-name.js +24 -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/script-inputs-key.d.ts +3 -0
- package/dist/lib/script-inputs-key.d.ts.map +1 -0
- package/dist/lib/script-inputs-key.js +13 -0
- package/dist/lib/setback-envelope.d.ts +163 -0
- package/dist/lib/setback-envelope.d.ts.map +1 -0
- package/dist/lib/setback-envelope.js +822 -0
- package/dist/lib/site-flatwork.d.ts +11 -0
- package/dist/lib/site-flatwork.d.ts.map +1 -0
- package/dist/lib/site-flatwork.js +11 -0
- package/dist/lib/site-ground-height.d.ts +13 -0
- package/dist/lib/site-ground-height.d.ts.map +1 -0
- package/dist/lib/site-ground-height.js +16 -0
- package/dist/lib/site-placement.d.ts +362 -0
- package/dist/lib/site-placement.d.ts.map +1 -0
- package/dist/lib/site-placement.js +942 -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/snap-ease.d.ts +20 -0
- package/dist/lib/snap-ease.d.ts.map +1 -0
- package/dist/lib/snap-ease.js +50 -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 +737 -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/surface-support-references.d.ts +4 -0
- package/dist/lib/surface-support-references.d.ts.map +1 -0
- package/dist/lib/surface-support-references.js +19 -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 +93 -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/wall-face-script.d.ts +66 -0
- package/dist/lib/wall-face-script.d.ts.map +1 -0
- package/dist/lib/wall-face-script.js +235 -0
- 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 +117 -228
- package/dist/material-kinds.d.ts +9 -0
- package/dist/material-kinds.d.ts.map +1 -0
- package/dist/material-kinds.js +30 -0
- package/dist/material-library.d.ts +13 -5
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +622 -27
- 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 +26 -0
- package/dist/node-slots/index.d.ts.map +1 -0
- package/dist/node-slots/index.js +98 -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/roof.d.ts +5 -0
- package/dist/node-slots/roof.d.ts.map +1 -0
- package/dist/node-slots/roof.js +12 -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 +10 -0
- package/dist/node-slots/stair.d.ts.map +1 -0
- package/dist/node-slots/stair.js +21 -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 +515 -75
- 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 +156 -35
- 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 +34 -22
- 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 +528 -62
- package/dist/procedural-items/node.d.ts.map +1 -1
- package/dist/procedural-items/query.d.ts +19 -2
- 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 +260 -16
- 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 +21 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +29 -13
- package/dist/registry/subtree.d.ts +8 -0
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +55 -0
- package/dist/registry/types.d.ts +460 -12
- 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 +28 -2
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +2 -0
- package/dist/schema/camera.d.ts +1 -1
- 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 +260 -0
- package/dist/schema/geometry-source.d.ts.map +1 -0
- package/dist/schema/geometry-source.js +144 -0
- package/dist/schema/index.d.ts +27 -12
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +29 -10
- package/dist/schema/material.d.ts +33 -33
- package/dist/schema/nodes/barrel-roof.d.ts +3 -0
- package/dist/schema/nodes/barrel-roof.d.ts.map +1 -0
- package/dist/schema/nodes/barrel-roof.js +11 -0
- package/dist/schema/nodes/block.d.ts +27 -1
- 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 +32 -6
- package/dist/schema/nodes/box-vent.d.ts.map +1 -1
- package/dist/schema/nodes/building.d.ts +28 -1
- package/dist/schema/nodes/building.d.ts.map +1 -1
- package/dist/schema/nodes/building.js +2 -0
- package/dist/schema/nodes/cabinet.d.ts +167 -114
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.js +1 -1
- package/dist/schema/nodes/ceiling.d.ts +44 -7
- 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 +42 -16
- package/dist/schema/nodes/chimney.d.ts.map +1 -1
- package/dist/schema/nodes/column.d.ts +321 -187
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +4 -0
- package/dist/schema/nodes/construction-dimension.d.ts +53 -27
- package/dist/schema/nodes/construction-dimension.d.ts.map +1 -1
- package/dist/schema/nodes/cupola.d.ts +34 -8
- package/dist/schema/nodes/cupola.d.ts.map +1 -1
- package/dist/schema/nodes/curtain-wall.d.ts +21 -20
- package/dist/schema/nodes/curtain-wall.d.ts.map +1 -1
- package/dist/schema/nodes/curtain-wall.js +23 -0
- package/dist/schema/nodes/door.d.ts +170 -44
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +37 -33
- package/dist/schema/nodes/dormer.d.ts +56 -29
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +36 -10
- package/dist/schema/nodes/downspout.d.ts.map +1 -1
- package/dist/schema/nodes/duct-fitting.d.ts +44 -18
- package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
- package/dist/schema/nodes/duct-segment.d.ts +34 -8
- package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
- package/dist/schema/nodes/duct-terminal.d.ts +31 -5
- package/dist/schema/nodes/duct-terminal.d.ts.map +1 -1
- package/dist/schema/nodes/elevator.d.ts +34 -8
- package/dist/schema/nodes/elevator.d.ts.map +1 -1
- package/dist/schema/nodes/eyebrow-vent.d.ts +32 -6
- 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-types.d.ts +32 -0
- package/dist/schema/nodes/fence-types.d.ts.map +1 -0
- package/dist/schema/nodes/fence-types.js +22 -0
- package/dist/schema/nodes/fence.d.ts +175 -18
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +76 -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 +27 -1
- package/dist/schema/nodes/guide.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.d.ts +33 -7
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.js +6 -5
- package/dist/schema/nodes/hvac-equipment.d.ts +32 -6
- package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -1
- package/dist/schema/nodes/imported-mesh.d.ts +27 -1
- package/dist/schema/nodes/imported-mesh.d.ts.map +1 -1
- package/dist/schema/nodes/item.d.ts +169 -13
- 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 +55 -29
- package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -1
- package/dist/schema/nodes/level.d.ts +28 -2
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/lineset.d.ts +27 -1
- package/dist/schema/nodes/lineset.d.ts.map +1 -1
- package/dist/schema/nodes/liquid-line.d.ts +27 -1
- package/dist/schema/nodes/liquid-line.d.ts.map +1 -1
- package/dist/schema/nodes/measurement.d.ts +27 -1
- 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 +34 -8
- package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-segment.d.ts +30 -4
- package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-trap.d.ts +28 -2
- package/dist/schema/nodes/pipe-trap.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.d.ts +33 -7
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.js +3 -1
- package/dist/schema/nodes/roof-glazing-config.d.ts +90 -0
- package/dist/schema/nodes/roof-glazing-config.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing-config.js +34 -0
- package/dist/schema/nodes/roof-glazing.d.ts +57 -0
- package/dist/schema/nodes/roof-glazing.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing.js +514 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts +4 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-resize.js +21 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts +5 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-shape.js +44 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.js +26 -1
- package/dist/schema/nodes/roof-segment.d.ts +175 -40
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +100 -20
- package/dist/schema/nodes/roof-types.d.ts +14 -0
- package/dist/schema/nodes/roof-types.d.ts.map +1 -0
- package/dist/schema/nodes/roof-types.js +14 -0
- package/dist/schema/nodes/roof.d.ts +122 -21
- 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 +27 -1
- 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 +35 -9
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/site-facts.d.ts +64 -0
- package/dist/schema/nodes/site-facts.d.ts.map +1 -0
- package/dist/schema/nodes/site-facts.js +73 -0
- package/dist/schema/nodes/site.d.ts +235 -1
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +115 -1
- package/dist/schema/nodes/skylight.d.ts +64 -38
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +91 -7
- 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 +40 -14
- package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
- package/dist/schema/nodes/spawn.d.ts +27 -1
- 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-defaults.d.ts +16 -0
- package/dist/schema/nodes/stair-defaults.d.ts.map +1 -0
- package/dist/schema/nodes/stair-defaults.js +15 -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 +78 -10
- 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-types.d.ts +29 -0
- package/dist/schema/nodes/stair-types.d.ts.map +1 -0
- package/dist/schema/nodes/stair-types.js +23 -0
- package/dist/schema/nodes/stair.d.ts +131 -38
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +46 -3
- package/dist/schema/nodes/structural-grid.d.ts +27 -1
- package/dist/schema/nodes/structural-grid.d.ts.map +1 -1
- package/dist/schema/nodes/surface-hole-metadata.d.ts +4 -1
- 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 +32 -6
- package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
- package/dist/schema/nodes/unit.d.ts +29 -3
- package/dist/schema/nodes/unit.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +771 -147
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +204 -186
- package/dist/schema/nodes/window.d.ts +173 -38
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +22 -14
- package/dist/schema/nodes/zone.d.ts +291 -4
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +56 -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/scene-material.d.ts +5 -5
- package/dist/schema/site-presentation.d.ts +100 -0
- package/dist/schema/site-presentation.d.ts.map +1 -0
- package/dist/schema/site-presentation.js +83 -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 +4442 -653
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +7 -0
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -1
- 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 +5 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +5 -1
- package/dist/services/level-height.d.ts.map +1 -1
- package/dist/services/level-height.js +10 -4
- package/dist/services/port-connectivity.d.ts +4 -0
- package/dist/services/port-connectivity.d.ts.map +1 -1
- package/dist/services/port-connectivity.js +35 -0
- package/dist/services/project-file-sink.d.ts +9 -0
- package/dist/services/project-file-sink.d.ts.map +1 -0
- package/dist/services/project-file-sink.js +13 -0
- package/dist/services/roof-bearing.d.ts +62 -0
- package/dist/services/roof-bearing.d.ts.map +1 -0
- package/dist/services/roof-bearing.js +234 -0
- package/dist/services/roof-level.d.ts +121 -0
- package/dist/services/roof-level.d.ts.map +1 -0
- package/dist/services/roof-level.js +280 -0
- package/dist/services/roof-move.d.ts +83 -0
- package/dist/services/roof-move.d.ts.map +1 -0
- package/dist/services/roof-move.js +316 -0
- package/dist/services/stair-surface-snap.d.ts +14 -0
- package/dist/services/stair-surface-snap.d.ts.map +1 -0
- package/dist/services/stair-surface-snap.js +116 -0
- package/dist/services/storey-datum.d.ts +12 -0
- package/dist/services/storey-datum.d.ts.map +1 -0
- package/dist/services/storey-datum.js +18 -0
- package/dist/services/storey.d.ts +72 -6
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +215 -12
- package/dist/services/surface-hosting.d.ts.map +1 -1
- package/dist/services/surface-hosting.js +4 -1
- package/dist/solar-panel-presets.d.ts +2 -2
- package/dist/store/actions/node-actions.d.ts +4994 -8
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +541 -175
- 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 +73 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +183 -5
- 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 +9827 -0
- package/dist/store/scene-annotations.d.ts.map +1 -0
- package/dist/store/scene-annotations.js +107 -0
- package/dist/store/scene-preview.d.ts +16 -0
- package/dist/store/scene-preview.d.ts.map +1 -0
- package/dist/store/scene-preview.js +144 -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-live-node-overrides.d.ts.map +1 -1
- package/dist/store/use-live-terrain.d.ts.map +1 -1
- package/dist/store/use-live-transforms.d.ts.map +1 -1
- 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 +452 -308
- package/dist/systems/elevator/elevator-dispatch.js +1 -1
- 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 +347 -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/roof/roof-elevation-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation-system.js +9 -3
- package/dist/systems/roof/roof-elevation.d.ts +5 -0
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation.js +91 -62
- 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 +6743 -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 +6848 -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 +30 -8
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +547 -62
- 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 +9 -1
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +123 -57
- 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 +4022 -2061
- 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 +284 -0
- package/dist/systems/stair/stair-presets.d.ts.map +1 -0
- package/dist/systems/stair/stair-presets.js +158 -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 +40 -0
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -0
- package/dist/systems/stair/stair-rise-query.js +175 -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 +416 -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 +245 -0
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -0
- package/dist/systems/wall/wall-assembly.js +875 -0
- package/dist/systems/wall/wall-curve.d.ts +7 -1
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +34 -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 +170 -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 +14 -0
- package/dist/systems/wall/wall-room-sides.d.ts.map +1 -0
- package/dist/systems/wall/wall-room-sides.js +67 -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 +7 -8
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +15 -13
- package/dist/systems/wall/wall-topology.d.ts +25 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +408 -5
- package/dist/systems/wall/wall-trim.d.ts +7 -0
- package/dist/systems/wall/wall-trim.d.ts.map +1 -0
- package/dist/systems/wall/wall-trim.js +10 -0
- 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 +131 -15
- package/dist/utils/ensure-scene-openings.d.ts +9823 -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 +4936 -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 +32 -6
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +78 -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 +4918 -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 +4918 -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/semantic-equal.d.ts +3 -0
- package/dist/utils/semantic-equal.d.ts.map +1 -0
- package/dist/utils/semantic-equal.js +26 -0
- 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/types.d.ts.map +1 -1
- 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 +69 -10
- 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
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { refuse } from '../agent-tools/refusal.js';
|
|
2
|
+
import { matchPascalMaterial } from '../procedural-items/library-colors.js';
|
|
3
|
+
import { GeometrySourceMeta } from '../schema/geometry-metadata.js';
|
|
4
|
+
import { artifactUrl } from './artifact-store.js';
|
|
5
|
+
export const isScriptedNode = (node) => Boolean(node?.source) &&
|
|
6
|
+
(node.type === 'item' ||
|
|
7
|
+
node.type === 'window' ||
|
|
8
|
+
node.type === 'door' ||
|
|
9
|
+
node.type === 'column');
|
|
10
|
+
/**
|
|
11
|
+
* Merges reuse metadata into a source's, dropping `meta` when nothing is left:
|
|
12
|
+
* the scene carries no empty object.
|
|
13
|
+
*/
|
|
14
|
+
export function withSourceMeta(source, next, parent) {
|
|
15
|
+
const { meta: previous, ...rest } = source;
|
|
16
|
+
const meta = GeometrySourceMeta.parse({
|
|
17
|
+
...previous,
|
|
18
|
+
...Object.fromEntries(Object.entries(GeometrySourceMeta.parse(next)).filter(([, value]) => value !== undefined)),
|
|
19
|
+
...(parent ? { parent } : {}),
|
|
20
|
+
});
|
|
21
|
+
return (Object.keys(meta).length > 0 ? { ...rest, meta } : rest);
|
|
22
|
+
}
|
|
23
|
+
/** The `source` a compile produces, the same on every kind. */
|
|
24
|
+
export const scriptSource = (compiled, meta = {}, previous) => withSourceMeta({
|
|
25
|
+
kind: 'script',
|
|
26
|
+
meta: previous?.meta,
|
|
27
|
+
language: compiled.language,
|
|
28
|
+
script: compiled.script,
|
|
29
|
+
params: compiled.params,
|
|
30
|
+
artifact: compiled.sha256,
|
|
31
|
+
// Worker structured clones retain optional undefined fields; durable scene writes are JSON.
|
|
32
|
+
manifest: JSON.parse(JSON.stringify(compiled.manifest)),
|
|
33
|
+
}, meta,
|
|
34
|
+
// A params-only rebuild runs the same script: its lineage stays where it was.
|
|
35
|
+
previous && previous.script !== compiled.script ? previous.script : undefined);
|
|
36
|
+
/**
|
|
37
|
+
* What a scripted object is, for reuse, whatever its kind: the name from the
|
|
38
|
+
* node, an item's category from its asset, the rest from `source.meta`.
|
|
39
|
+
*/
|
|
40
|
+
export function scriptedObjectMeta(node) {
|
|
41
|
+
const { description, category, tags, parent } = node.source.meta ?? {};
|
|
42
|
+
return {
|
|
43
|
+
name: node.name,
|
|
44
|
+
description,
|
|
45
|
+
category: node.type === 'item' ? node.asset.category : category,
|
|
46
|
+
tags,
|
|
47
|
+
parent,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A scripted node's thumbnail and floor-plan image as `artifact://` URLs, or
|
|
52
|
+
* null until an editor has taken them of the GLB the node shows now.
|
|
53
|
+
*/
|
|
54
|
+
export function scriptImages(node) {
|
|
55
|
+
if (!isScriptedNode(node))
|
|
56
|
+
return null;
|
|
57
|
+
const { images, artifact } = node.source;
|
|
58
|
+
if (images?.artifact !== artifact)
|
|
59
|
+
return null;
|
|
60
|
+
return { thumbnail: artifactUrl(images.thumbnail), floorPlan: artifactUrl(images.floorPlan) };
|
|
61
|
+
}
|
|
62
|
+
const matchSlot = (slot) => matchPascalMaterial({ ...slot, name: `${slot.id} ${slot.label ?? ''}` });
|
|
63
|
+
/**
|
|
64
|
+
* Paint and automatic matching write the same overrides. A rebuild keeps every
|
|
65
|
+
* pick, but a slot still holding what the previous build matched is matched
|
|
66
|
+
* again, so a script edit to that finish shows.
|
|
67
|
+
*/
|
|
68
|
+
export function matchScriptSlotsToLibrary(manifest, overrides = {}, previous) {
|
|
69
|
+
const slots = { ...overrides };
|
|
70
|
+
for (const slot of manifest.slots) {
|
|
71
|
+
if (Object.hasOwn(overrides, slot.id)) {
|
|
72
|
+
const before = previous?.slots.find((candidate) => candidate.id === slot.id);
|
|
73
|
+
if (!before || overrides[slot.id] !== matchSlot(before))
|
|
74
|
+
continue;
|
|
75
|
+
delete slots[slot.id];
|
|
76
|
+
}
|
|
77
|
+
const ref = matchSlot(slot);
|
|
78
|
+
if (ref)
|
|
79
|
+
slots[slot.id] = ref;
|
|
80
|
+
}
|
|
81
|
+
return slots;
|
|
82
|
+
}
|
|
83
|
+
/** Width, height and depth of what the script built. */
|
|
84
|
+
export function scriptedSize(manifest) {
|
|
85
|
+
const { min, max } = manifest.bounds;
|
|
86
|
+
return [max[0] - min[0], max[1] - min[1], max[2] - min[2]];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* A compile whose bounds are not finite numbers cannot be sized or placed, and what is built from
|
|
90
|
+
* it would fail its schema with a raw validation array or carry a non-finite size: refused before
|
|
91
|
+
* anything is built, whichever scripted tool it came to. A mesh at a position that is not a number
|
|
92
|
+
* leaves NaN bounds (null once they crossed a JSON hop).
|
|
93
|
+
*/
|
|
94
|
+
export function requireMeasured(compiled, subject) {
|
|
95
|
+
const { min, max } = compiled.manifest.bounds;
|
|
96
|
+
if ([...min, ...max].every(Number.isFinite))
|
|
97
|
+
return;
|
|
98
|
+
const label = subject.label ? `"${subject.label}"` : (subject.nodeId ?? 'The object');
|
|
99
|
+
refuse('unmeasurable_object', `${label} cannot be measured: its bounds are not finite numbers (min [${min.map(String).join(', ')}], max [${max.map(String).join(', ')}]) with params ${JSON.stringify(compiled.params)}. A mesh in the script has a position, rotation or scale that is not a number (a helper called one argument short passes the next value in its place). Fix the script and call ${subject.tool} again; nothing was ${subject.nodeId ? 'changed' : 'added'}.`, { label: subject.label ?? subject.nodeId });
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Where the script's origin (the bottom centre of what it built) sits in the
|
|
103
|
+
* node's own frame: a window or door is placed by its centre.
|
|
104
|
+
*/
|
|
105
|
+
export function scriptedOrigin(node) {
|
|
106
|
+
if (node.type !== 'window' && node.type !== 'door')
|
|
107
|
+
return [0, 0, 0];
|
|
108
|
+
return [0, -scriptedSize(node.source.manifest)[1] / 2, 0];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Where a ceiling item's origin sits in the ceiling's frame (y = 0 is the ceiling plane): a recessed
|
|
112
|
+
* fixture seats flush; a scripted object is origined at its top (the compiler's ceiling mount), so
|
|
113
|
+
* it hangs from its bounds' top; a catalog model is origined at its bottom and hangs its full height.
|
|
114
|
+
*/
|
|
115
|
+
export function ceilingSeatY(item, height) {
|
|
116
|
+
if (item.asset.recessed)
|
|
117
|
+
return 0;
|
|
118
|
+
if (item.source)
|
|
119
|
+
return -(item.source.manifest.bounds.max[1] ?? 0) * (item.scale?.[1] ?? 1);
|
|
120
|
+
return -height;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The item's controls from what the module emitted: a light switch for its
|
|
124
|
+
* lights, an open/close toggle for an `open` clip (closing plays `close`, or
|
|
125
|
+
* `open` reversed), a `loop` clip that runs throughout, and a play toggle per
|
|
126
|
+
* other clip, labelled with its name. Light offsets are in the node's frame,
|
|
127
|
+
* `origin` being where the script's origin sits in it (`scriptedOrigin`).
|
|
128
|
+
*/
|
|
129
|
+
export function scriptInteractive(manifest, origin = [0, 0, 0]) {
|
|
130
|
+
const controls = [];
|
|
131
|
+
const effects = [];
|
|
132
|
+
if (manifest.lights.length > 0) {
|
|
133
|
+
controls.push({ kind: 'toggle', label: 'Lights', default: true });
|
|
134
|
+
for (const light of manifest.lights) {
|
|
135
|
+
effects.push({
|
|
136
|
+
kind: 'light',
|
|
137
|
+
color: light.color,
|
|
138
|
+
intensityRange: [0, light.intensity],
|
|
139
|
+
distance: light.distance,
|
|
140
|
+
offset: [
|
|
141
|
+
light.position[0] + origin[0],
|
|
142
|
+
light.position[1] + origin[1],
|
|
143
|
+
light.position[2] + origin[2],
|
|
144
|
+
],
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const clip = (name) => manifest.animations.some((animation) => animation.name === name);
|
|
149
|
+
if (clip('open')) {
|
|
150
|
+
effects.push({
|
|
151
|
+
kind: 'animation',
|
|
152
|
+
mode: 'open-close',
|
|
153
|
+
control: controls.length,
|
|
154
|
+
clips: { on: 'open', off: clip('close') ? 'close' : undefined },
|
|
155
|
+
});
|
|
156
|
+
controls.push({ kind: 'toggle', label: 'Open', default: false });
|
|
157
|
+
}
|
|
158
|
+
if (clip('loop'))
|
|
159
|
+
effects.push({ kind: 'animation', mode: 'ambient', clips: { loop: 'loop' } });
|
|
160
|
+
// Every other clip gets its own play toggle, labelled with its name.
|
|
161
|
+
for (const { name } of manifest.animations) {
|
|
162
|
+
if (name === 'open' || name === 'close' || name === 'loop')
|
|
163
|
+
continue;
|
|
164
|
+
effects.push({
|
|
165
|
+
kind: 'animation',
|
|
166
|
+
mode: 'ambient',
|
|
167
|
+
control: controls.length,
|
|
168
|
+
clips: { on: name },
|
|
169
|
+
});
|
|
170
|
+
controls.push({ kind: 'toggle', label: name, default: false });
|
|
171
|
+
}
|
|
172
|
+
return effects.length > 0 ? { controls, effects } : undefined;
|
|
173
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { GeometryArtifactManifest } from '../schema/geometry-source.js';
|
|
2
|
+
type Surface = GeometryArtifactManifest['surfaces'][number];
|
|
3
|
+
type Manifest = Pick<GeometryArtifactManifest, 'surfaces' | 'parts'>;
|
|
4
|
+
/**
|
|
5
|
+
* Where something dropped at local (x, z) comes to rest on an authored
|
|
6
|
+
* object: its main surface when the point is over it (a bench anywhere on a
|
|
7
|
+
* porch lands on the landing, not on the beam), otherwise the highest
|
|
8
|
+
* non-roof surface under the point. `maxY` caps the search. Null when
|
|
9
|
+
* nothing is under the point.
|
|
10
|
+
*/
|
|
11
|
+
export declare function geometrySurfaceAt(manifest: Manifest & Pick<GeometryArtifactManifest, 'bounds'>, x: number, z: number, maxY?: number): Surface | null;
|
|
12
|
+
/**
|
|
13
|
+
* The one height an authored object offers as "where things rest" (the
|
|
14
|
+
* item's `asset.surface`): its highest main surface, so a porch rests things
|
|
15
|
+
* on its landing and a table on its top. Null when it has none.
|
|
16
|
+
*/
|
|
17
|
+
export declare function geometryRestingHeight(manifest: Manifest & Pick<GeometryArtifactManifest, 'bounds'>): number | null;
|
|
18
|
+
/**
|
|
19
|
+
* Where a ceiling item hangs from an authored object above local (x, z): the
|
|
20
|
+
* lowest underside over the point (a beam before the vault plane above it),
|
|
21
|
+
* with its height there — sloped undersides included. Null when none is over it.
|
|
22
|
+
*/
|
|
23
|
+
export declare function geometryUndersideAt(manifest: Pick<GeometryArtifactManifest, 'undersides'>, x: number, z: number): {
|
|
24
|
+
part?: string;
|
|
25
|
+
y: number;
|
|
26
|
+
normal: [number, number, number];
|
|
27
|
+
} | null;
|
|
28
|
+
/**
|
|
29
|
+
* The rotation that seats a flush fixture (a recessed can) on a sloped
|
|
30
|
+
* underside: its +Y goes into the surface, against the downward `normal`,
|
|
31
|
+
* then it keeps its own turn `yaw`. Euler XYZ, as items store rotation.
|
|
32
|
+
*/
|
|
33
|
+
export declare function flushMountRotation(normal: readonly [number, number, number], yaw: number): [number, number, number];
|
|
34
|
+
/**
|
|
35
|
+
* Whether a ceiling fixture sits flush on a surface (tilting with a slope)
|
|
36
|
+
* rather than hanging plumb: flagged `recessed`, or shallow enough that it
|
|
37
|
+
* can only be a can or a surface light (catalog data often lacks the flag).
|
|
38
|
+
*/
|
|
39
|
+
export declare function mountsFlush(asset: {
|
|
40
|
+
recessed?: boolean;
|
|
41
|
+
dimensions?: readonly number[];
|
|
42
|
+
}): boolean;
|
|
43
|
+
/** The closest point to (x, z) inside a convex outline (itself when inside). */
|
|
44
|
+
export declare function nearestPointIn(polygon: readonly [number, number][], x: number, z: number): [number, number];
|
|
45
|
+
/**
|
|
46
|
+
* Where a child item of an authored object sits after the object is rebuilt:
|
|
47
|
+
* a resting item back on the surface under it (moved onto the main surface
|
|
48
|
+
* when that shrank away from it), a hanging one from the underside above it.
|
|
49
|
+
* Positions are in the object's frame; `scale` is the object's. Null when
|
|
50
|
+
* nothing applies (wall-mounted children, objects without surfaces).
|
|
51
|
+
*/
|
|
52
|
+
export declare function resettledPosition(manifest: Pick<GeometryArtifactManifest, 'surfaces' | 'undersides' | 'parts' | 'bounds'>, child: {
|
|
53
|
+
position: readonly [number, number, number];
|
|
54
|
+
asset: {
|
|
55
|
+
attachTo?: string;
|
|
56
|
+
recessed?: boolean;
|
|
57
|
+
dimensions?: readonly number[];
|
|
58
|
+
};
|
|
59
|
+
}, scale: readonly [number, number, number]): [number, number, number] | null;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=geometry-surfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry-surfaces.d.ts","sourceRoot":"","sources":["../../src/lib/geometry-surfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAEzE,KAAK,OAAO,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAC3D,KAAK,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE,UAAU,GAAG,OAAO,CAAC,CAAA;AAyCpE;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,EAC7D,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,SAA2B,GAC9B,OAAO,GAAG,IAAI,CAMhB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,GAC5D,MAAM,GAAG,IAAI,CAEf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EAAE,YAAY,CAAC,EACtD,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,IAAI,CASvE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACzC,GAAG,EAAE,MAAM,GACV,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAoB1B;AAKD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,GAAG,OAAO,CAEV;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EACpC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBlB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,IAAI,CAAC,wBAAwB,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC,EACxF,KAAK,EAAE;IACL,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;CACjF,EACD,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACvC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAiBjC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/** Part types whose tops shelter rather than hold: nothing is placed on a porch roof. */
|
|
2
|
+
const SHELTER_TYPES = new Set(['roof', 'canopy', 'awning', 'ceiling']);
|
|
3
|
+
function receives(manifest, surface) {
|
|
4
|
+
if (!surface.part)
|
|
5
|
+
return true;
|
|
6
|
+
const type = manifest.parts.find((part) => part.id === surface.part)?.type;
|
|
7
|
+
return !(type && SHELTER_TYPES.has(type));
|
|
8
|
+
}
|
|
9
|
+
function contains(polygon, x, z) {
|
|
10
|
+
let inside = false;
|
|
11
|
+
for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
|
|
12
|
+
const [xi, zi] = polygon[i];
|
|
13
|
+
const [xj, zj] = polygon[j];
|
|
14
|
+
if (zi > z !== zj > z && x < ((xj - xi) * (z - zi)) / (zj - zi) + xi)
|
|
15
|
+
inside = !inside;
|
|
16
|
+
}
|
|
17
|
+
return inside;
|
|
18
|
+
}
|
|
19
|
+
function area(polygon) {
|
|
20
|
+
let sum = 0;
|
|
21
|
+
for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
|
|
22
|
+
sum += (polygon[j][0] + polygon[i][0]) * (polygon[j][1] - polygon[i][1]);
|
|
23
|
+
}
|
|
24
|
+
return Math.abs(sum) / 2;
|
|
25
|
+
}
|
|
26
|
+
/** Non-roof surfaces covering at least half the object's footprint: its landing, its top. */
|
|
27
|
+
function mainSurfaces(manifest) {
|
|
28
|
+
const { min, max } = manifest.bounds;
|
|
29
|
+
const footprint = (max[0] - min[0]) * (max[2] - min[2]);
|
|
30
|
+
return manifest.surfaces.filter((surface) => receives(manifest, surface) && area(surface.polygon) >= footprint / 2);
|
|
31
|
+
}
|
|
32
|
+
const highest = (surfaces) => surfaces.reduce((best, s) => (!best || s.y > best.y ? s : best), null);
|
|
33
|
+
/**
|
|
34
|
+
* Where something dropped at local (x, z) comes to rest on an authored
|
|
35
|
+
* object: its main surface when the point is over it (a bench anywhere on a
|
|
36
|
+
* porch lands on the landing, not on the beam), otherwise the highest
|
|
37
|
+
* non-roof surface under the point. `maxY` caps the search. Null when
|
|
38
|
+
* nothing is under the point.
|
|
39
|
+
*/
|
|
40
|
+
export function geometrySurfaceAt(manifest, x, z, maxY = Number.POSITIVE_INFINITY) {
|
|
41
|
+
const under = (surface) => surface.y <= maxY && contains(surface.polygon, x, z);
|
|
42
|
+
return (highest(mainSurfaces(manifest).filter(under)) ??
|
|
43
|
+
highest(manifest.surfaces.filter((s) => receives(manifest, s) && under(s))));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The one height an authored object offers as "where things rest" (the
|
|
47
|
+
* item's `asset.surface`): its highest main surface, so a porch rests things
|
|
48
|
+
* on its landing and a table on its top. Null when it has none.
|
|
49
|
+
*/
|
|
50
|
+
export function geometryRestingHeight(manifest) {
|
|
51
|
+
return highest(mainSurfaces(manifest))?.y ?? null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Where a ceiling item hangs from an authored object above local (x, z): the
|
|
55
|
+
* lowest underside over the point (a beam before the vault plane above it),
|
|
56
|
+
* with its height there — sloped undersides included. Null when none is over it.
|
|
57
|
+
*/
|
|
58
|
+
export function geometryUndersideAt(manifest, x, z) {
|
|
59
|
+
let best = null;
|
|
60
|
+
for (const underside of manifest.undersides) {
|
|
61
|
+
const [a, b, c, d] = underside.plane;
|
|
62
|
+
if (b === 0 || !contains(underside.polygon, x, z))
|
|
63
|
+
continue;
|
|
64
|
+
const y = -(a * x + c * z + d) / b;
|
|
65
|
+
if (!best || y < best.y)
|
|
66
|
+
best = { part: underside.part, y, normal: [a, b, c] };
|
|
67
|
+
}
|
|
68
|
+
return best;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The rotation that seats a flush fixture (a recessed can) on a sloped
|
|
72
|
+
* underside: its +Y goes into the surface, against the downward `normal`,
|
|
73
|
+
* then it keeps its own turn `yaw`. Euler XYZ, as items store rotation.
|
|
74
|
+
*/
|
|
75
|
+
export function flushMountRotation(normal, yaw) {
|
|
76
|
+
// Quaternion turning +Y onto -normal (the direction into the surface).
|
|
77
|
+
const [vx, vy, vz] = [-normal[0], -normal[1], -normal[2]];
|
|
78
|
+
let [qx, qy, qz, qw] = [vz, 0, -vx, 1 + vy];
|
|
79
|
+
const length = Math.hypot(qx, qy, qz, qw) || 1;
|
|
80
|
+
[qx, qy, qz, qw] = [qx / length, qy / length, qz / length, qw / length];
|
|
81
|
+
// Then the fixture's own yaw about its local +Y.
|
|
82
|
+
const [sy, cy] = [Math.sin(yaw / 2), Math.cos(yaw / 2)];
|
|
83
|
+
const [x, y, z, w] = [qx * cy - qz * sy, qw * sy + qy * cy, qz * cy + qx * sy, qw * cy - qy * sy];
|
|
84
|
+
const m11 = 1 - 2 * (y * y + z * z);
|
|
85
|
+
const m12 = 2 * (x * y - w * z);
|
|
86
|
+
const m13 = 2 * (x * z + w * y);
|
|
87
|
+
const m22 = 1 - 2 * (x * x + z * z);
|
|
88
|
+
const m23 = 2 * (y * z - w * x);
|
|
89
|
+
const m32 = 2 * (y * z + w * x);
|
|
90
|
+
const m33 = 1 - 2 * (x * x + y * y);
|
|
91
|
+
const ry = Math.asin(Math.max(-1, Math.min(1, m13)));
|
|
92
|
+
return Math.abs(m13) < 0.9999999
|
|
93
|
+
? [Math.atan2(-m23, m33), ry, Math.atan2(-m12, m11)]
|
|
94
|
+
: [Math.atan2(m32, m22), ry, 0];
|
|
95
|
+
}
|
|
96
|
+
/** At or under this height a ceiling fixture mounts flush (a can, a surface light) rather than hangs. */
|
|
97
|
+
const FLUSH_MOUNT_MAX_HEIGHT = 0.15;
|
|
98
|
+
/**
|
|
99
|
+
* Whether a ceiling fixture sits flush on a surface (tilting with a slope)
|
|
100
|
+
* rather than hanging plumb: flagged `recessed`, or shallow enough that it
|
|
101
|
+
* can only be a can or a surface light (catalog data often lacks the flag).
|
|
102
|
+
*/
|
|
103
|
+
export function mountsFlush(asset) {
|
|
104
|
+
return Boolean(asset.recessed) || (asset.dimensions?.[1] ?? 1) <= FLUSH_MOUNT_MAX_HEIGHT;
|
|
105
|
+
}
|
|
106
|
+
/** The closest point to (x, z) inside a convex outline (itself when inside). */
|
|
107
|
+
export function nearestPointIn(polygon, x, z) {
|
|
108
|
+
if (contains(polygon, x, z))
|
|
109
|
+
return [x, z];
|
|
110
|
+
let best = [x, z];
|
|
111
|
+
let bestDistance = Number.POSITIVE_INFINITY;
|
|
112
|
+
for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
|
|
113
|
+
const [ax, az] = polygon[j];
|
|
114
|
+
const [bx, bz] = polygon[i];
|
|
115
|
+
const dx = bx - ax;
|
|
116
|
+
const dz = bz - az;
|
|
117
|
+
const t = Math.max(0, Math.min(1, ((x - ax) * dx + (z - az) * dz) / (dx * dx + dz * dz || 1)));
|
|
118
|
+
const px = ax + t * dx;
|
|
119
|
+
const pz = az + t * dz;
|
|
120
|
+
const distance = Math.hypot(px - x, pz - z);
|
|
121
|
+
if (distance < bestDistance) {
|
|
122
|
+
bestDistance = distance;
|
|
123
|
+
best = [px, pz];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return best;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Where a child item of an authored object sits after the object is rebuilt:
|
|
130
|
+
* a resting item back on the surface under it (moved onto the main surface
|
|
131
|
+
* when that shrank away from it), a hanging one from the underside above it.
|
|
132
|
+
* Positions are in the object's frame; `scale` is the object's. Null when
|
|
133
|
+
* nothing applies (wall-mounted children, objects without surfaces).
|
|
134
|
+
*/
|
|
135
|
+
export function resettledPosition(manifest, child, scale) {
|
|
136
|
+
const [sx, sy, sz] = scale;
|
|
137
|
+
const x = child.position[0] / sx;
|
|
138
|
+
const z = child.position[2] / sz;
|
|
139
|
+
if (child.asset.attachTo === 'ceiling') {
|
|
140
|
+
const underside = geometryUndersideAt(manifest, x, z);
|
|
141
|
+
if (!underside)
|
|
142
|
+
return null;
|
|
143
|
+
const drop = mountsFlush(child.asset) ? 0.02 : (child.asset.dimensions?.[1] ?? 0);
|
|
144
|
+
return [child.position[0], underside.y * sy - drop, child.position[2]];
|
|
145
|
+
}
|
|
146
|
+
if (child.asset.attachTo)
|
|
147
|
+
return null;
|
|
148
|
+
const surface = geometrySurfaceAt(manifest, x, z);
|
|
149
|
+
if (surface)
|
|
150
|
+
return [child.position[0], surface.y * sy, child.position[2]];
|
|
151
|
+
const main = mainSurfaces(manifest).sort((a, b) => b.y - a.y)[0];
|
|
152
|
+
if (!main)
|
|
153
|
+
return null;
|
|
154
|
+
const [nx, nz] = nearestPointIn(main.polygon, x, z);
|
|
155
|
+
return [nx * sx, main.y * sy, nz * sz];
|
|
156
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AnyNode, AnyNodeId, LevelNode } from '../schema/index.js';
|
|
2
|
+
import { type TerrainField } from './terrain-field.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where a level stands against the ground as it actually lies: at grade, below it everywhere,
|
|
5
|
+
* or below it on part of its footprint — a hillside can bury half a floor whose other half
|
|
6
|
+
* walks out. `isLevelBelowGrade` alone only knows the flat datum, so a street raised 6 m over
|
|
7
|
+
* a garden level left every floor "at grade" and the ground never veiled.
|
|
8
|
+
*/
|
|
9
|
+
export type LevelGradeStanding = 'at-grade' | 'partly-below-grade' | 'below-grade';
|
|
10
|
+
/**
|
|
11
|
+
* `levelId`'s standing against the ground. When its building names a ground level, the line is the
|
|
12
|
+
* word: a level under it is below grade, and one at or over it is not buried by the stack's own
|
|
13
|
+
* elevations (a basement added under a house, a floor the stack lifted). Where the sculpted terrain
|
|
14
|
+
* stands over a floor's slabs (sampled against the field, the ground over each slab's own floor
|
|
15
|
+
* where it stands more than {@link BELOW_GRADE_TOLERANCE} above it: a split level's sunken room is
|
|
16
|
+
* judged at its own height, not at the raised part's) it still decides how much of that floor is
|
|
17
|
+
* buried: a hillside buries half a floor whose other half walks out, and a floor under the line the
|
|
18
|
+
* terrain leaves out of the ground reads as partly below. Without a named ground level, or a field,
|
|
19
|
+
* the flat datum answers exactly as before. `'at-grade'` for an id that is no level.
|
|
20
|
+
*/
|
|
21
|
+
export declare function levelGradeStanding(nodes: Record<AnyNodeId, AnyNode>, levelId: string): LevelGradeStanding;
|
|
22
|
+
/** Whether a floor at world Y `floorY` lies under a flat site's datum by more than the tolerance. */
|
|
23
|
+
export declare function floorBuriedOnFlatSite(floorY: number): boolean;
|
|
24
|
+
/** The site's terrain field for the site this level stands on, or null on a flat site. */
|
|
25
|
+
export declare function terrainFieldOverLevel(nodes: Record<AnyNodeId, AnyNode>, level: LevelNode): TerrainField | null;
|
|
26
|
+
/**
|
|
27
|
+
* World XZ samples over the level's floor slabs: each slab's corners plus a grid across it no
|
|
28
|
+
* coarser than the terrain's own spacing, capped so a big plate stays cheap. Slabs are the
|
|
29
|
+
* footprint the grade ring already trusts (`belowGradeFootprints`).
|
|
30
|
+
*/
|
|
31
|
+
export declare function footprintSamples(nodes: Record<AnyNodeId, AnyNode>, level: LevelNode, field: TerrainField): Array<[number, number]>;
|
|
32
|
+
/**
|
|
33
|
+
* {@link footprintSamples} with the world Y of the top of the floor slab each sample lies on as a
|
|
34
|
+
* third coordinate: a level with floors at several heights (a split level) is buried by the ground
|
|
35
|
+
* over each of them, not over the highest alone.
|
|
36
|
+
*/
|
|
37
|
+
export declare function footprintFloorSamples(nodes: Record<AnyNodeId, AnyNode>, level: LevelNode, field: TerrainField): Array<[number, number, number]>;
|
|
38
|
+
//# sourceMappingURL=grade-standing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grade-standing.d.ts","sourceRoot":"","sources":["../../src/lib/grade-standing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAgB,SAAS,EAAY,MAAM,WAAW,CAAA;AAUtF,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAI7D;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,oBAAoB,GAAG,aAAa,CAAA;AAKlF;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,MAAM,GACd,kBAAkB,CAuBpB;AAsBD,qGAAqG;AACrG,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAcD,0FAA0F;AAC1F,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,SAAS,GACf,YAAY,GAAG,IAAI,CAOrB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,YAAY,GAClB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEzB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,YAAY,GAClB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAcjC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { BELOW_GRADE_TOLERANCE, getLevelElevations, isLevelBelowGrade, levelPlaneWorldY, } from '../services/storey.js';
|
|
2
|
+
import { pointInPolygon } from '../systems/slab/slab-support.js';
|
|
3
|
+
import { levelUnderNamedGround } from './ground-level.js';
|
|
4
|
+
import { isSiteFlatwork } from './site-flatwork.js';
|
|
5
|
+
import { heightAt } from './terrain-field.js';
|
|
6
|
+
import { terrainFieldOf } from './terrain-source.js';
|
|
7
|
+
import { levelLocalToWorldXZ, SITE_DATUM_Y } from './terrain-support-query.js';
|
|
8
|
+
/** Sample lines per footprint side at most: enough to catch a slope crossing a floor plate. */
|
|
9
|
+
const MAX_SAMPLE_LINES = 17;
|
|
10
|
+
/**
|
|
11
|
+
* `levelId`'s standing against the ground. When its building names a ground level, the line is the
|
|
12
|
+
* word: a level under it is below grade, and one at or over it is not buried by the stack's own
|
|
13
|
+
* elevations (a basement added under a house, a floor the stack lifted). Where the sculpted terrain
|
|
14
|
+
* stands over a floor's slabs (sampled against the field, the ground over each slab's own floor
|
|
15
|
+
* where it stands more than {@link BELOW_GRADE_TOLERANCE} above it: a split level's sunken room is
|
|
16
|
+
* judged at its own height, not at the raised part's) it still decides how much of that floor is
|
|
17
|
+
* buried: a hillside buries half a floor whose other half walks out, and a floor under the line the
|
|
18
|
+
* terrain leaves out of the ground reads as partly below. Without a named ground level, or a field,
|
|
19
|
+
* the flat datum answers exactly as before. `'at-grade'` for an id that is no level.
|
|
20
|
+
*/
|
|
21
|
+
export function levelGradeStanding(nodes, levelId) {
|
|
22
|
+
const level = nodes[levelId];
|
|
23
|
+
if (level?.type !== 'level')
|
|
24
|
+
return 'at-grade';
|
|
25
|
+
const under = levelUnderNamedGround(nodes, level);
|
|
26
|
+
const flat = under === null
|
|
27
|
+
? isLevelBelowGrade(nodes, levelId)
|
|
28
|
+
? 'below-grade'
|
|
29
|
+
: 'at-grade'
|
|
30
|
+
: under
|
|
31
|
+
? 'below-grade'
|
|
32
|
+
: 'at-grade';
|
|
33
|
+
const field = terrainFieldOverLevel(nodes, level);
|
|
34
|
+
if (!field)
|
|
35
|
+
return under === null ? flatFloorsStanding(nodes, level, flat) : flat;
|
|
36
|
+
const samples = footprintFloorSamples(nodes, level, field);
|
|
37
|
+
if (samples.length === 0)
|
|
38
|
+
return flat;
|
|
39
|
+
let buried = 0;
|
|
40
|
+
for (const [worldX, worldZ, floorY] of samples) {
|
|
41
|
+
if (heightAt(field, worldX, worldZ) - floorY > BELOW_GRADE_TOLERANCE)
|
|
42
|
+
buried += 1;
|
|
43
|
+
}
|
|
44
|
+
if (buried === 0)
|
|
45
|
+
return under ? 'partly-below-grade' : 'at-grade';
|
|
46
|
+
return buried === samples.length ? 'below-grade' : 'partly-below-grade';
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A flat site with no ground line named: the datum is the ground under every floor, and each floor
|
|
50
|
+
* slab of the level is judged against it as the sampled path judges them against the field. A split
|
|
51
|
+
* level whose raised part sits at grade is partly below grade over its sunken room, not at grade
|
|
52
|
+
* on the strength of its highest floor. A level with no floor slab reads as `fallback` (its plane).
|
|
53
|
+
*/
|
|
54
|
+
function flatFloorsStanding(nodes, level, fallback) {
|
|
55
|
+
const plane = levelPlaneWorldY(nodes, level.id);
|
|
56
|
+
if (plane === null)
|
|
57
|
+
return fallback;
|
|
58
|
+
const slabs = floorSlabsOf(nodes, level);
|
|
59
|
+
if (slabs.length === 0)
|
|
60
|
+
return fallback;
|
|
61
|
+
const buried = slabs.filter((slab) => floorBuriedOnFlatSite(plane + slab.elevation)).length;
|
|
62
|
+
if (buried === 0)
|
|
63
|
+
return 'at-grade';
|
|
64
|
+
return buried === slabs.length ? 'below-grade' : 'partly-below-grade';
|
|
65
|
+
}
|
|
66
|
+
/** Whether a floor at world Y `floorY` lies under a flat site's datum by more than the tolerance. */
|
|
67
|
+
export function floorBuriedOnFlatSite(floorY) {
|
|
68
|
+
return SITE_DATUM_Y - floorY > BELOW_GRADE_TOLERANCE;
|
|
69
|
+
}
|
|
70
|
+
/** The floor slabs of the house on a level: not a basin, not site flatwork, with a plan. */
|
|
71
|
+
function floorSlabsOf(nodes, level) {
|
|
72
|
+
const slabs = [];
|
|
73
|
+
for (const childId of level.children) {
|
|
74
|
+
const slab = nodes[childId];
|
|
75
|
+
if (slab?.type !== 'slab' || slab.recessed === true || slab.polygon.length < 3)
|
|
76
|
+
continue;
|
|
77
|
+
if (isSiteFlatwork(slab))
|
|
78
|
+
continue;
|
|
79
|
+
slabs.push(slab);
|
|
80
|
+
}
|
|
81
|
+
return slabs;
|
|
82
|
+
}
|
|
83
|
+
/** The site's terrain field for the site this level stands on, or null on a flat site. */
|
|
84
|
+
export function terrainFieldOverLevel(nodes, level) {
|
|
85
|
+
const buildingId = getLevelElevations(nodes).get(level.id)?.buildingId;
|
|
86
|
+
const building = buildingId ? nodes[buildingId] : undefined;
|
|
87
|
+
const site = (building?.parentId ? nodes[building.parentId] : undefined) ??
|
|
88
|
+
Object.values(nodes).find((node) => node.type === 'site');
|
|
89
|
+
return site?.type === 'site' ? terrainFieldOf(site) : null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* World XZ samples over the level's floor slabs: each slab's corners plus a grid across it no
|
|
93
|
+
* coarser than the terrain's own spacing, capped so a big plate stays cheap. Slabs are the
|
|
94
|
+
* footprint the grade ring already trusts (`belowGradeFootprints`).
|
|
95
|
+
*/
|
|
96
|
+
export function footprintSamples(nodes, level, field) {
|
|
97
|
+
return footprintFloorSamples(nodes, level, field).map(([x, z]) => [x, z]);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* {@link footprintSamples} with the world Y of the top of the floor slab each sample lies on as a
|
|
101
|
+
* third coordinate: a level with floors at several heights (a split level) is buried by the ground
|
|
102
|
+
* over each of them, not over the highest alone.
|
|
103
|
+
*/
|
|
104
|
+
export function footprintFloorSamples(nodes, level, field) {
|
|
105
|
+
const buildingId = getLevelElevations(nodes).get(level.id)?.buildingId;
|
|
106
|
+
const building = buildingId ? nodes[buildingId] : undefined;
|
|
107
|
+
const placed = building?.type === 'building' ? building : null;
|
|
108
|
+
const plane = levelPlaneWorldY(nodes, level.id);
|
|
109
|
+
if (plane === null)
|
|
110
|
+
return [];
|
|
111
|
+
const samples = [];
|
|
112
|
+
for (const slab of floorSlabsOf(nodes, level)) {
|
|
113
|
+
for (const [x, z] of slabSamples(slab.polygon, field.spacing)) {
|
|
114
|
+
const [worldX, worldZ] = levelLocalToWorldXZ(placed, x, z);
|
|
115
|
+
samples.push([worldX, worldZ, plane + slab.elevation]);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return samples;
|
|
119
|
+
}
|
|
120
|
+
function slabSamples(polygon, spacing) {
|
|
121
|
+
const samples = [...polygon];
|
|
122
|
+
const xs = polygon.map(([x]) => x);
|
|
123
|
+
const zs = polygon.map(([, z]) => z);
|
|
124
|
+
const minX = Math.min(...xs);
|
|
125
|
+
const maxX = Math.max(...xs);
|
|
126
|
+
const minZ = Math.min(...zs);
|
|
127
|
+
const maxZ = Math.max(...zs);
|
|
128
|
+
const stepX = Math.max(spacing, (maxX - minX) / (MAX_SAMPLE_LINES - 1));
|
|
129
|
+
const stepZ = Math.max(spacing, (maxZ - minZ) / (MAX_SAMPLE_LINES - 1));
|
|
130
|
+
for (let x = minX + stepX / 2; x < maxX; x += stepX) {
|
|
131
|
+
for (let z = minZ + stepZ / 2; z < maxZ; z += stepZ) {
|
|
132
|
+
if (pointInPolygon(x, z, polygon))
|
|
133
|
+
samples.push([x, z]);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return samples;
|
|
137
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AnyNode, AnyNodeId, LevelNode } from '../schema/index.js';
|
|
2
|
+
/** The level a building stands at grade on, and whether the building says so or it is read off. */
|
|
3
|
+
export type GroundLevel = {
|
|
4
|
+
level: LevelNode;
|
|
5
|
+
explicit: boolean;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* The ground line of `buildingId`'s stack: the level standing at grade, the levels with a lower
|
|
9
|
+
* floor index below it. The building names it (`groundLevelId`, written by "Set as ground floor");
|
|
10
|
+
* until it does, or when the level named is gone, it is the lowest level whose floor is not under
|
|
11
|
+
* the flat datum, the reading every scene had before the line existed. `null` for an id that is
|
|
12
|
+
* no building, or a building with every floor under the ground.
|
|
13
|
+
*/
|
|
14
|
+
export declare function groundLevelOf(nodes: Record<AnyNodeId, AnyNode>, buildingId: string): GroundLevel | null;
|
|
15
|
+
/**
|
|
16
|
+
* Whether a building that names its ground level puts `level` under it: a lower floor index. `null`
|
|
17
|
+
* when the line is only read off the elevations (nothing named), so a caller falls back to them.
|
|
18
|
+
*/
|
|
19
|
+
export declare function levelUnderNamedGround(nodes: Record<AnyNodeId, AnyNode>, level: LevelNode): boolean | null;
|
|
20
|
+
//# sourceMappingURL=ground-level.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ground-level.d.ts","sourceRoot":"","sources":["../../src/lib/ground-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAgB,SAAS,EAAE,MAAM,WAAW,CAAA;AAG5E,mGAAmG;AACnG,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAA;AAIjE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,UAAU,EAAE,MAAM,GACjB,WAAW,GAAG,IAAI,CAUpB;AAsBD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,SAAS,GACf,OAAO,GAAG,IAAI,CAMhB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { getLevelElevations, isLevelBelowGrade } from '../services/storey.js';
|
|
2
|
+
const groundMemo = new WeakMap();
|
|
3
|
+
/**
|
|
4
|
+
* The ground line of `buildingId`'s stack: the level standing at grade, the levels with a lower
|
|
5
|
+
* floor index below it. The building names it (`groundLevelId`, written by "Set as ground floor");
|
|
6
|
+
* until it does, or when the level named is gone, it is the lowest level whose floor is not under
|
|
7
|
+
* the flat datum, the reading every scene had before the line existed. `null` for an id that is
|
|
8
|
+
* no building, or a building with every floor under the ground.
|
|
9
|
+
*/
|
|
10
|
+
export function groundLevelOf(nodes, buildingId) {
|
|
11
|
+
let byBuilding = groundMemo.get(nodes);
|
|
12
|
+
if (!byBuilding) {
|
|
13
|
+
byBuilding = new Map();
|
|
14
|
+
groundMemo.set(nodes, byBuilding);
|
|
15
|
+
}
|
|
16
|
+
if (byBuilding.has(buildingId))
|
|
17
|
+
return byBuilding.get(buildingId) ?? null;
|
|
18
|
+
const found = resolveGroundLevel(nodes, buildingId);
|
|
19
|
+
byBuilding.set(buildingId, found);
|
|
20
|
+
return found;
|
|
21
|
+
}
|
|
22
|
+
function resolveGroundLevel(nodes, buildingId) {
|
|
23
|
+
const building = nodes[buildingId];
|
|
24
|
+
if (building?.type !== 'building')
|
|
25
|
+
return null;
|
|
26
|
+
const elevations = getLevelElevations(nodes);
|
|
27
|
+
const levels = Object.values(nodes)
|
|
28
|
+
.filter((node) => node.type === 'level' && elevations.get(node.id)?.buildingId === buildingId)
|
|
29
|
+
.sort((a, b) => a.level - b.level);
|
|
30
|
+
const named = building.groundLevelId;
|
|
31
|
+
const explicit = named ? levels.find((level) => level.id === named) : undefined;
|
|
32
|
+
if (explicit)
|
|
33
|
+
return { level: explicit, explicit: true };
|
|
34
|
+
const derived = levels.find((level) => !isLevelBelowGrade(nodes, level.id));
|
|
35
|
+
return derived ? { level: derived, explicit: false } : null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Whether a building that names its ground level puts `level` under it: a lower floor index. `null`
|
|
39
|
+
* when the line is only read off the elevations (nothing named), so a caller falls back to them.
|
|
40
|
+
*/
|
|
41
|
+
export function levelUnderNamedGround(nodes, level) {
|
|
42
|
+
const buildingId = getLevelElevations(nodes).get(level.id)?.buildingId;
|
|
43
|
+
if (!buildingId)
|
|
44
|
+
return null;
|
|
45
|
+
const ground = groundLevelOf(nodes, buildingId);
|
|
46
|
+
if (!ground?.explicit)
|
|
47
|
+
return null;
|
|
48
|
+
return level.level < ground.level.level;
|
|
49
|
+
}
|