@pascal-app/core 1.0.4 → 1.0.6
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 +102 -90
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/add-object-cases.js +301 -1
- 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.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.js +410 -40
- package/dist/agent-operations/__fixtures__/cases.d.ts +18 -3
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/cases.js +183 -4
- 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__/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.map +1 -1
- package/dist/agent-operations/__fixtures__/place-items-cases.js +80 -2
- 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 +2 -1
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.js +136 -1
- 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.map +1 -1
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +15 -3
- 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 +1 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.js +630 -3
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +311 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.js +59 -11
- 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 +5 -0
- package/dist/agent-operations/achieved.d.ts.map +1 -1
- package/dist/agent-operations/achieved.js +21 -1
- package/dist/agent-operations/add-column.d.ts.map +1 -1
- package/dist/agent-operations/add-column.js +3 -1
- 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 +4 -1
- package/dist/agent-operations/add-level.d.ts.map +1 -1
- package/dist/agent-operations/add-level.js +48 -12
- package/dist/agent-operations/add-object.d.ts +38 -9
- package/dist/agent-operations/add-object.d.ts.map +1 -1
- package/dist/agent-operations/add-object.js +172 -11
- package/dist/agent-operations/add-wall.d.ts +1 -3
- package/dist/agent-operations/add-wall.d.ts.map +1 -1
- package/dist/agent-operations/add-wall.js +35 -9
- package/dist/agent-operations/apply-changes.d.ts +7 -1
- package/dist/agent-operations/apply-changes.d.ts.map +1 -1
- package/dist/agent-operations/apply-changes.js +54 -22
- package/dist/agent-operations/apply-outcome.d.ts +6 -0
- package/dist/agent-operations/apply-outcome.d.ts.map +1 -1
- package/dist/agent-operations/apply-outcome.js +23 -8
- 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/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 +2 -0
- package/dist/agent-operations/create-room.d.ts.map +1 -1
- package/dist/agent-operations/create-room.js +73 -5
- package/dist/agent-operations/create-stair.d.ts +6 -28
- package/dist/agent-operations/create-stair.d.ts.map +1 -1
- package/dist/agent-operations/create-stair.js +187 -104
- 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 +16 -1
- package/dist/agent-operations/door-clearance.d.ts.map +1 -1
- package/dist/agent-operations/door-clearance.js +61 -4
- package/dist/agent-operations/duplicate-level.d.ts.map +1 -1
- package/dist/agent-operations/duplicate-level.js +2 -1
- package/dist/agent-operations/find-by-type.d.ts +14 -7
- package/dist/agent-operations/find-by-type.d.ts.map +1 -1
- package/dist/agent-operations/find-by-type.js +266 -43
- package/dist/agent-operations/furnish-room.d.ts +22 -1
- package/dist/agent-operations/furnish-room.d.ts.map +1 -1
- package/dist/agent-operations/furnish-room.js +66 -19
- 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 +5 -2
- package/dist/agent-operations/get-node.d.ts.map +1 -1
- package/dist/agent-operations/get-node.js +82 -10
- package/dist/agent-operations/hosted-services.d.ts +2 -1
- package/dist/agent-operations/hosted-services.d.ts.map +1 -1
- package/dist/agent-operations/index.d.ts +281 -69
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +66 -5
- 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 +52 -3
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
- package/dist/agent-operations/layout-clearance.js +340 -30
- 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 +5 -1
- package/dist/agent-operations/level-reads.d.ts.map +1 -1
- package/dist/agent-operations/level-reads.js +10 -3
- package/dist/agent-operations/list-levels.d.ts.map +1 -1
- package/dist/agent-operations/list-levels.js +23 -0
- package/dist/agent-operations/material-preset.d.ts.map +1 -1
- package/dist/agent-operations/material-preset.js +3 -9
- package/dist/agent-operations/material-refs.d.ts +7 -1
- package/dist/agent-operations/material-refs.d.ts.map +1 -1
- package/dist/agent-operations/material-refs.js +10 -5
- 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/paint.d.ts +2 -1
- package/dist/agent-operations/paint.d.ts.map +1 -1
- package/dist/agent-operations/paint.js +163 -53
- 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.map +1 -1
- package/dist/agent-operations/place-items.js +15 -2
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
- package/dist/agent-operations/plan-geometry.js +3 -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 +2 -2
- package/dist/agent-operations/room-structure.d.ts.map +1 -1
- 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-queries.d.ts +3750 -3319
- package/dist/agent-operations/scene-queries.d.ts.map +1 -1
- package/dist/agent-operations/scene-queries.js +13 -23
- 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 +82 -15
- package/dist/agent-operations/scene-view.d.ts.map +1 -1
- package/dist/agent-operations/scene-view.js +408 -51
- package/dist/agent-operations/search-assets.d.ts +2 -2
- package/dist/agent-operations/search-assets.d.ts.map +1 -1
- package/dist/agent-operations/search-assets.js +4 -3
- package/dist/agent-operations/search-materials.d.ts +9 -3
- package/dist/agent-operations/search-materials.d.ts.map +1 -1
- package/dist/agent-operations/search-materials.js +83 -29
- 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/types.d.ts +66 -7
- package/dist/agent-operations/types.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.d.ts +39 -5
- package/dist/agent-operations/verify-scene.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.js +223 -44
- 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 +23 -23
- package/dist/agent-operations/wall-opening.d.ts.map +1 -1
- 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/add-object.d.ts +11 -7
- package/dist/agent-tools/add-object.d.ts.map +1 -1
- package/dist/agent-tools/add-object.js +17 -11
- package/dist/agent-tools/assets.d.ts +8 -0
- package/dist/agent-tools/assets.d.ts.map +1 -1
- package/dist/agent-tools/assets.js +13 -1
- 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.map +1 -1
- package/dist/agent-tools/collections.d.ts +6 -6
- package/dist/agent-tools/collections.d.ts.map +1 -1
- package/dist/agent-tools/columns.d.ts +18 -18
- package/dist/agent-tools/columns.js +2 -2
- 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 +26 -25
- package/dist/agent-tools/create-room.d.ts.map +1 -1
- package/dist/agent-tools/create-room.js +11 -4
- 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 +8 -1
- package/dist/agent-tools/find-by-type.d.ts.map +1 -1
- package/dist/agent-tools/find-by-type.js +23 -2
- package/dist/agent-tools/furnish-room.d.ts +10 -8
- package/dist/agent-tools/furnish-room.d.ts.map +1 -1
- package/dist/agent-tools/furnish-room.js +3 -1
- package/dist/agent-tools/hosted-services.d.ts +177 -141
- package/dist/agent-tools/hosted-services.d.ts.map +1 -1
- package/dist/agent-tools/hosted-services.js +47 -14
- package/dist/agent-tools/index.d.ts +894 -215
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +47 -3
- package/dist/agent-tools/levels.d.ts +11 -3
- package/dist/agent-tools/levels.d.ts.map +1 -1
- package/dist/agent-tools/levels.js +16 -5
- package/dist/agent-tools/measurement.d.ts +38 -20
- package/dist/agent-tools/measurement.d.ts.map +1 -1
- package/dist/agent-tools/measurement.js +117 -67
- 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/nodes.d.ts.map +1 -1
- package/dist/agent-tools/nodes.js +1 -1
- 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 +5 -5
- package/dist/agent-tools/paint.d.ts.map +1 -1
- package/dist/agent-tools/paint.js +1 -1
- 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 +1 -1
- package/dist/agent-tools/place-items.js +2 -2
- 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.map +1 -1
- 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 +46 -38
- package/dist/agent-tools/room-structure.d.ts.map +1 -1
- package/dist/agent-tools/room-structure.js +30 -27
- package/dist/agent-tools/search-materials.d.ts +22 -3
- package/dist/agent-tools/search-materials.d.ts.map +1 -1
- package/dist/agent-tools/search-materials.js +13 -14
- 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 +48 -28
- package/dist/agent-tools/stairs.d.ts.map +1 -1
- package/dist/agent-tools/stairs.js +65 -22
- package/dist/agent-tools/verify-scene.d.ts.map +1 -1
- package/dist/agent-tools/verify-scene.js +1 -1
- package/dist/agent-tools/view-scene.d.ts +50 -12
- package/dist/agent-tools/view-scene.d.ts.map +1 -1
- package/dist/agent-tools/view-scene.js +74 -31
- package/dist/agent-tools/wall-openings.d.ts +77 -73
- package/dist/agent-tools/wall-openings.d.ts.map +1 -1
- package/dist/agent-tools/wall-openings.js +9 -5
- package/dist/agent-tools/walls.d.ts +4 -4
- package/dist/agent-tools/walls.d.ts.map +1 -1
- package/dist/agent-tools/walls.js +7 -2
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +454 -250
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
- package/dist/building/__fixtures__/wall-opening-cases.js +62 -2
- 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/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 +5 -0
- package/dist/building/index.d.ts.map +1 -1
- package/dist/building/index.js +5 -0
- package/dist/building/level-duplication.d.ts +7472 -6613
- package/dist/building/level-duplication.d.ts.map +1 -1
- package/dist/building/level-duplication.js +18 -4
- 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 +2 -2
- package/dist/building/opening-style-presets.d.ts.map +1 -1
- 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 +154 -119
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +37 -9
- 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/create-zone.d.ts +12 -1
- package/dist/commands/structure/create-zone.d.ts.map +1 -1
- package/dist/commands/structure/create-zone.js +49 -0
- package/dist/commands/structure/divide-zone.d.ts +3 -3
- package/dist/commands/structure/index.d.ts +1 -1
- package/dist/commands/structure/index.d.ts.map +1 -1
- package/dist/commands/structure/index.js +1 -1
- package/dist/commands/structure/set-floor-foundation.d.ts +6 -6
- package/dist/commands/structure/set-zone-intent.d.ts +4 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
- package/dist/commands/structure/set-zone-intent.js +19 -0
- package/dist/commands/structure/shared.d.ts +3642 -3213
- package/dist/commands/structure/shared.d.ts.map +1 -1
- package/dist/commands/structure/zone-wall-merge.d.ts +4149 -3334
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.js +106 -26
- package/dist/events/bus.d.ts +22 -3
- 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/scene-registry.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +1 -2
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +4 -6
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3608 -3179
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +11 -2
- 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 +37 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -9
- package/dist/lib/__fixtures__/mezzanine.d.ts +11800 -10132
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +3642 -3213
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
- package/dist/lib/angle-accumulator.d.ts.map +1 -1
- package/dist/lib/artifact-store.d.ts.map +1 -1
- 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/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/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-intent-changes.d.ts.map +1 -1
- package/dist/lib/floor-intent-changes.js +4 -4
- package/dist/lib/floor-plate-paint.d.ts +3 -1
- package/dist/lib/floor-plate-paint.d.ts.map +1 -1
- package/dist/lib/floor-plate-paint.js +24 -4
- package/dist/lib/floor-plates.d.ts +50 -50
- 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/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 +32 -3
- package/dist/lib/geometry-script-node.d.ts.map +1 -1
- package/dist/lib/geometry-script-node.js +26 -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/opening-floor-datum.d.ts.map +1 -1
- package/dist/lib/opening-floor-datum.js +2 -3
- package/dist/lib/own-floor-intent.d.ts.map +1 -1
- package/dist/lib/own-floor-intent.js +4 -4
- package/dist/lib/plate-surface.d.ts.map +1 -1
- package/dist/lib/plate-surface.js +3 -1
- 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/room-drawn-floor.d.ts +1 -1
- package/dist/lib/room-drawn-floor.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.js +3 -3
- package/dist/lib/room-graph.d.ts.map +1 -1
- package/dist/lib/room-graph.js +2 -0
- package/dist/lib/room-name.d.ts +2 -0
- package/dist/lib/room-name.d.ts.map +1 -1
- package/dist/lib/room-name.js +2 -0
- package/dist/lib/room-topology-index.d.ts.map +1 -1
- package/dist/lib/room-topology-index.js +1 -1
- package/dist/lib/room-zone-adoption.d.ts.map +1 -1
- 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 +95 -5
- package/dist/lib/setback-envelope.d.ts.map +1 -1
- package/dist/lib/setback-envelope.js +351 -35
- 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/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/structure-kernel.d.ts +1 -1
- package/dist/lib/structure-kernel.d.ts.map +1 -1
- package/dist/lib/structure-kernel.js +2 -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-support-query.d.ts +10 -0
- package/dist/lib/terrain-support-query.d.ts.map +1 -1
- package/dist/lib/terrain-support-query.js +1 -1
- 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 +1 -1
- package/dist/lib/zone-colors.d.ts.map +1 -1
- package/dist/lib/zone-quantities.d.ts.map +1 -1
- package/dist/lib/zone-quantities.js +4 -5
- 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 +4 -4
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +72 -26
- package/dist/node-slots/index.d.ts +1 -0
- package/dist/node-slots/index.d.ts.map +1 -1
- package/dist/node-slots/index.js +7 -1
- 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/stair.d.ts +2 -0
- package/dist/node-slots/stair.d.ts.map +1 -1
- package/dist/node-slots/stair.js +6 -2
- package/dist/procedural-items/design-placement.d.ts.map +1 -1
- package/dist/procedural-items/design.d.ts +19 -19
- package/dist/procedural-items/fixtures.d.ts +297 -297
- package/dist/procedural-items/fixtures.d.ts.map +1 -1
- package/dist/procedural-items/integration.d.ts +106 -106
- package/dist/procedural-items/joints.d.ts +4 -4
- package/dist/procedural-items/library-colors.d.ts +22 -22
- package/dist/procedural-items/library-colors.d.ts.map +1 -1
- package/dist/procedural-items/motion-controller.d.ts.map +1 -1
- package/dist/procedural-items/node.d.ts +291 -291
- package/dist/procedural-items/query.d.ts +1 -1
- package/dist/procedural-items/query.d.ts.map +1 -1
- package/dist/procedural-items/recipe.d.ts +11 -11
- package/dist/procedural-items/recipe.d.ts.map +1 -1
- package/dist/procedural-items/section.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/scene-api.d.ts +1 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +3 -0
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +2 -0
- package/dist/registry/types.d.ts +120 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/assembly.d.ts +41 -41
- package/dist/schema/asset-url.d.ts +1 -1
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/base.d.ts +9 -9
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/camera.d.ts +1 -1
- package/dist/schema/collection-templates.d.ts +20 -20
- package/dist/schema/collection-templates.d.ts.map +1 -1
- package/dist/schema/geometry-metadata.d.ts +7 -7
- package/dist/schema/geometry-metadata.d.ts.map +1 -1
- package/dist/schema/geometry-source.d.ts +26 -16
- package/dist/schema/geometry-source.d.ts.map +1 -1
- package/dist/schema/geometry-source.js +14 -0
- package/dist/schema/index.d.ts +10 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +10 -7
- 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 +8 -8
- package/dist/schema/nodes/box-vent.d.ts +13 -13
- package/dist/schema/nodes/building.d.ts +9 -8
- 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 +130 -129
- 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 +15 -15
- package/dist/schema/nodes/chimney.d.ts +23 -23
- package/dist/schema/nodes/column.d.ts +207 -199
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +2 -0
- package/dist/schema/nodes/construction-dimension.d.ts +34 -34
- package/dist/schema/nodes/cupola.d.ts +15 -15
- 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 +50 -43
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +19 -0
- package/dist/schema/nodes/dormer.d.ts +37 -36
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +17 -17
- package/dist/schema/nodes/duct-fitting.d.ts +24 -24
- package/dist/schema/nodes/duct-segment.d.ts +14 -14
- package/dist/schema/nodes/duct-terminal.d.ts +12 -12
- package/dist/schema/nodes/elevator.d.ts +15 -15
- package/dist/schema/nodes/eyebrow-vent.d.ts +13 -13
- package/dist/schema/nodes/fence-feature.d.ts +37 -37
- 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 +43 -72
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +4 -20
- package/dist/schema/nodes/floor-opening.d.ts +8 -8
- package/dist/schema/nodes/guide.d.ts +8 -8
- package/dist/schema/nodes/gutter.d.ts +14 -14
- 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 +13 -13
- package/dist/schema/nodes/imported-mesh.d.ts +8 -8
- package/dist/schema/nodes/item.d.ts +30 -25
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/lean-to-extension.d.ts +36 -36
- package/dist/schema/nodes/level.d.ts +9 -9
- package/dist/schema/nodes/lineset.d.ts +8 -8
- package/dist/schema/nodes/liquid-line.d.ts +8 -8
- package/dist/schema/nodes/measurement.d.ts +8 -8
- package/dist/schema/nodes/opening-types.d.ts +13 -13
- package/dist/schema/nodes/opening-types.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-fitting.d.ts +15 -15
- package/dist/schema/nodes/pipe-segment.d.ts +11 -11
- package/dist/schema/nodes/pipe-trap.d.ts +9 -9
- package/dist/schema/nodes/ridge-vent.d.ts +14 -14
- 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 +24 -0
- package/dist/schema/nodes/roof-segment.d.ts +153 -46
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +91 -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 +49 -49
- package/dist/schema/nodes/scan.d.ts +8 -8
- package/dist/schema/nodes/separator.d.ts +8 -8
- package/dist/schema/nodes/shelf.d.ts +16 -16
- 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 +105 -63
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +7 -70
- package/dist/schema/nodes/skylight.d.ts +41 -41
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +21 -21
- package/dist/schema/nodes/solar-panel.d.ts +21 -21
- package/dist/schema/nodes/spawn.d.ts +8 -8
- package/dist/schema/nodes/stair-construction.d.ts +3 -3
- 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-segment.d.ts +22 -22
- 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 +51 -75
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +6 -20
- package/dist/schema/nodes/structural-grid.d.ts +8 -8
- package/dist/schema/nodes/surface-hole-metadata.d.ts +2 -2
- package/dist/schema/nodes/turbine-vent.d.ts +13 -13
- package/dist/schema/nodes/unit.d.ts +10 -10
- package/dist/schema/nodes/unit.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +479 -146
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +19 -0
- package/dist/schema/nodes/window.d.ts +55 -39
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +10 -0
- package/dist/schema/nodes/zone.d.ts +231 -12
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +10 -0
- package/dist/schema/provenance.d.ts +21 -21
- 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/types.d.ts +1954 -1414
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -1
- 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 +7 -3
- 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 +51 -5
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +125 -8
- package/dist/solar-panel-presets.d.ts +2 -2
- package/dist/store/actions/node-actions.d.ts +3613 -3182
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +46 -1
- package/dist/store/derived-node-guard.d.ts.map +1 -1
- package/dist/store/history-control.d.ts +39 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +84 -4
- package/dist/store/scene-annotations.d.ts +7267 -6409
- package/dist/store/scene-annotations.d.ts.map +1 -1
- 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-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.map +1 -1
- package/dist/store/use-scene.js +37 -4
- package/dist/systems/elevator/elevator-dispatch.js +1 -1
- package/dist/systems/fence/fence-features.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.js +24 -3
- 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__/floor-step.d.ts +4623 -3516
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +5149 -4076
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.d.ts +6 -3
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +78 -10
- package/dist/systems/stair/stair-detail-budget.d.ts +2 -2
- package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.d.ts +6 -0
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +27 -14
- package/dist/systems/stair/stair-layout.d.ts +2 -2
- package/dist/systems/stair/stair-opening-preview.d.ts +3643 -3214
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.d.ts +73 -65
- package/dist/systems/stair/stair-presets.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.js +16 -9
- package/dist/systems/stair/stair-rail-path.d.ts +1 -1
- package/dist/systems/stair/stair-rise-query.d.ts +16 -0
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.js +57 -7
- package/dist/systems/stair/stair-sizing.d.ts +101 -99
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.d.ts +11 -0
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.js +21 -0
- package/dist/systems/wall/wall-curve.d.ts +5 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +13 -0
- package/dist/systems/wall/wall-frame.d.ts.map +1 -1
- package/dist/systems/wall/wall-frame.js +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts.map +1 -1
- package/dist/systems/wall/wall-room-sides.js +60 -7
- package/dist/systems/wall/wall-top.d.ts +7 -4
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +14 -6
- package/dist/systems/wall/wall-topology.d.ts +4 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +4 -2
- 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.map +1 -1
- package/dist/utils/clone-scene-graph.js +8 -0
- package/dist/utils/ensure-scene-openings.d.ts +7420 -6562
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
- package/dist/utils/floor-piece-adoption.d.ts +2 -2
- package/dist/utils/floor-plate-migration.d.ts +3746 -3317
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/floor-plate-migration.js +2 -2
- package/dist/utils/heal-scene-graph.d.ts +12 -0
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +40 -23
- package/dist/utils/legacy-wall-datums.d.ts.map +1 -1
- package/dist/utils/legacy-wall-datums.js +2 -2
- package/dist/utils/owned-floor-opening-migration.d.ts +3642 -3213
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +3730 -7777
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
- package/dist/utils/scene-migrations.d.ts +1 -1
- package/dist/utils/scene-migrations.d.ts.map +1 -1
- package/dist/utils/scene-migrations.js +1 -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.map +1 -1
- package/dist/utils/types.d.ts.map +1 -1
- package/dist/utils/wall-face-migration.d.ts +1 -1
- package/dist/utils/wall-face-migration.d.ts.map +1 -1
- package/package.json +36 -10
|
@@ -68,7 +68,7 @@ export function arcRuns(points, shortM = 4, turnDeg = 35) {
|
|
|
68
68
|
let runs = 0;
|
|
69
69
|
// start the sweep at a long edge when there is one, so a run never wraps across the sweep's seam
|
|
70
70
|
const start = dirs.findIndex((d) => d.len >= shortM);
|
|
71
|
-
const order = Array.from({ length: n }, (_, k) => ((start
|
|
71
|
+
const order = Array.from({ length: n }, (_, k) => (Math.max(start, 0) + k) % n);
|
|
72
72
|
for (const i of order) {
|
|
73
73
|
if (run[i] !== -1)
|
|
74
74
|
continue;
|
|
@@ -369,61 +369,41 @@ export function insetPolygon(points, distances, options = {}) {
|
|
|
369
369
|
}
|
|
370
370
|
/**
|
|
371
371
|
* Which envelope edge is the one behind the lot's front line: the longest
|
|
372
|
-
* envelope edge
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
372
|
+
* envelope edge facing the same way (within 25°) with its midpoint nearest
|
|
373
|
+
* that line. Facing, not only parallel: on a lot that widens away from its
|
|
374
|
+
* street the rear edge is parallel too, and longer. Null when no edge faces
|
|
375
|
+
* the street: side setbacks wider than a narrow frontage take the whole
|
|
376
|
+
* front, and a side is no front.
|
|
376
377
|
*/
|
|
377
378
|
export function envelopeFrontEdge(lot, frontIndex, envelope) {
|
|
378
379
|
const n = lot.length;
|
|
379
380
|
const m = envelope.length;
|
|
380
381
|
if (n < 2 || m < 2)
|
|
381
|
-
return
|
|
382
|
+
return null;
|
|
382
383
|
const fi = ((frontIndex % n) + n) % n;
|
|
383
384
|
const a = lot[fi];
|
|
384
385
|
const b = lot[(fi + 1) % n];
|
|
385
|
-
const
|
|
386
|
-
|
|
387
|
-
const fl = Math.hypot(fx, fy) || 1;
|
|
388
|
-
const ux = fx / fl;
|
|
389
|
-
const uy = fy / fl;
|
|
390
|
-
const fmid = [(a[0] + b[0]) / 2, (a[1] + b[1]) / 2];
|
|
391
|
-
let bestI = -1;
|
|
386
|
+
const [fnx, fny] = outwardNormal(lot, fi);
|
|
387
|
+
let best = null;
|
|
392
388
|
let bestScore = Number.NEGATIVE_INFINITY;
|
|
393
389
|
for (let i = 0; i < m; i++) {
|
|
394
390
|
const p = envelope[i];
|
|
395
391
|
const q = envelope[(i + 1) % m];
|
|
396
|
-
const
|
|
397
|
-
const ey = q[1] - p[1];
|
|
398
|
-
const el = Math.hypot(ex, ey);
|
|
392
|
+
const el = Math.hypot(q[0] - p[0], q[1] - p[1]);
|
|
399
393
|
if (el < 1e-6)
|
|
400
394
|
continue;
|
|
401
|
-
const
|
|
402
|
-
if (
|
|
395
|
+
const [enx, eny] = outwardNormal(envelope, i);
|
|
396
|
+
if (enx * fnx + eny * fny < Math.cos((25 * Math.PI) / 180))
|
|
403
397
|
continue;
|
|
404
|
-
const
|
|
405
|
-
const dist = segDist(mid[0], mid[1], a, b);
|
|
398
|
+
const dist = segDist((p[0] + q[0]) / 2, (p[1] + q[1]) / 2, a, b);
|
|
406
399
|
// long and close wins: the front's offset is one lot-front length away by the setback
|
|
407
400
|
const score = el - 2 * dist;
|
|
408
401
|
if (score > bestScore) {
|
|
409
402
|
bestScore = score;
|
|
410
|
-
|
|
403
|
+
best = i;
|
|
411
404
|
}
|
|
412
405
|
}
|
|
413
|
-
|
|
414
|
-
return bestI;
|
|
415
|
-
let nearest = 0;
|
|
416
|
-
let nd = Number.POSITIVE_INFINITY;
|
|
417
|
-
for (let i = 0; i < m; i++) {
|
|
418
|
-
const p = envelope[i];
|
|
419
|
-
const q = envelope[(i + 1) % m];
|
|
420
|
-
const d = Math.hypot((p[0] + q[0]) / 2 - fmid[0], (p[1] + q[1]) / 2 - fmid[1]);
|
|
421
|
-
if (d < nd) {
|
|
422
|
-
nd = d;
|
|
423
|
-
nearest = i;
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
return nearest;
|
|
406
|
+
return best;
|
|
427
407
|
}
|
|
428
408
|
/**
|
|
429
409
|
* The CORNER SIGHT TRIANGLE at a street intersection (the clear-vision /
|
|
@@ -504,3 +484,339 @@ export function streetCorners(points, streetEdges) {
|
|
|
504
484
|
}
|
|
505
485
|
return out;
|
|
506
486
|
}
|
|
487
|
+
/** Unit normal of edge `i` pointing OUT of the polygon, winding-agnostic. */
|
|
488
|
+
export function outwardNormal(points, i) {
|
|
489
|
+
const n = points.length;
|
|
490
|
+
const p = points[i % n];
|
|
491
|
+
const q = points[(i + 1) % n];
|
|
492
|
+
const dx = q[0] - p[0];
|
|
493
|
+
const dy = q[1] - p[1];
|
|
494
|
+
const len = Math.hypot(dx, dy) || 1;
|
|
495
|
+
// Left normal of the edge direction. For a CCW ring (positive shoelace in
|
|
496
|
+
// this frame) the left normal points inward, so flip.
|
|
497
|
+
const sign = signedArea(points) > 0 ? -1 : 1;
|
|
498
|
+
return [(sign * -dy) / len, (sign * dx) / len];
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Compass heading of edge `i`'s outward normal, in DEGREES clockwise from
|
|
502
|
+
* north, where `northRotation` (radians, clockwise) is true north's offset
|
|
503
|
+
* from plan up (−y). This is the direction the edge faces.
|
|
504
|
+
*/
|
|
505
|
+
export function edgeHeadingDeg(points, i, northRotation = 0) {
|
|
506
|
+
const [nx, ny] = outwardNormal(points, i);
|
|
507
|
+
// Plan up (−y) is 0°, +x (east) is 90°.
|
|
508
|
+
const raw = Math.atan2(nx, -ny) - northRotation;
|
|
509
|
+
const deg = (raw * 180) / Math.PI;
|
|
510
|
+
return ((deg % 360) + 360) % 360;
|
|
511
|
+
}
|
|
512
|
+
/** Length of edge `i`, metres. */
|
|
513
|
+
export function edgeLength(points, i) {
|
|
514
|
+
const n = points.length;
|
|
515
|
+
const p = points[i % n];
|
|
516
|
+
const q = points[(i + 1) % n];
|
|
517
|
+
return Math.hypot(q[0] - p[0], q[1] - p[1]);
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Fallback front edge: the edge whose outward normal points closest to true
|
|
521
|
+
* north. Ties break toward the longer edge — the street frontage of a typical
|
|
522
|
+
* lot is one of its long sides.
|
|
523
|
+
*/
|
|
524
|
+
export function mostNorthFacingEdge(points, northRotation = 0) {
|
|
525
|
+
let best = 0;
|
|
526
|
+
let bestScore = Number.POSITIVE_INFINITY;
|
|
527
|
+
for (let i = 0; i < points.length; i++) {
|
|
528
|
+
const heading = edgeHeadingDeg(points, i, northRotation);
|
|
529
|
+
const off = Math.min(heading, 360 - heading);
|
|
530
|
+
// Sub-degree ties resolve on length so a chamfer corner never wins.
|
|
531
|
+
const score = off - Math.min(0.5, edgeLength(points, i) / 1000);
|
|
532
|
+
if (score < bestScore) {
|
|
533
|
+
bestScore = score;
|
|
534
|
+
best = i;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
return best;
|
|
538
|
+
}
|
|
539
|
+
/** `frontEdge` if it indexes a real edge, else the most north-facing edge. */
|
|
540
|
+
export function resolveFrontEdge(points, frontEdge, northRotation = 0) {
|
|
541
|
+
if (typeof frontEdge === 'number' &&
|
|
542
|
+
Number.isInteger(frontEdge) &&
|
|
543
|
+
frontEdge >= 0 &&
|
|
544
|
+
frontEdge < points.length) {
|
|
545
|
+
return frontEdge;
|
|
546
|
+
}
|
|
547
|
+
return mostNorthFacingEdge(points, northRotation);
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Classify every edge as front / rear / left / right.
|
|
551
|
+
*
|
|
552
|
+
* - front = `frontIndex`.
|
|
553
|
+
* - rear = the edge whose outward normal is most anti-parallel to the front's.
|
|
554
|
+
* - the rest are sides. LEFT / RIGHT are defined along the FRONT EDGE
|
|
555
|
+
* DIRECTION (`points[front] → points[front + 1]`): an edge whose midpoint
|
|
556
|
+
* projects behind the front-edge midpoint on that axis is `left`, ahead of
|
|
557
|
+
* it is `right`. Deterministic and independent of winding.
|
|
558
|
+
*/
|
|
559
|
+
export function classifyEdges(points, frontIndex, streetEdges = []) {
|
|
560
|
+
const n = points.length;
|
|
561
|
+
const roles = new Array(n).fill('left');
|
|
562
|
+
if (n === 0)
|
|
563
|
+
return roles;
|
|
564
|
+
const front = ((frontIndex % n) + n) % n;
|
|
565
|
+
const fn = outwardNormal(points, front);
|
|
566
|
+
// a corner lot's other street edges (the parcel fabric's frontage) are
|
|
567
|
+
// 'street' — they take the street-side setback, never a side yard, and
|
|
568
|
+
// the rear is never one of them
|
|
569
|
+
const street = new Set(streetEdges.map((i) => ((i % n) + n) % n));
|
|
570
|
+
street.delete(front);
|
|
571
|
+
let rear = -1;
|
|
572
|
+
let rearDot = Number.POSITIVE_INFINITY;
|
|
573
|
+
for (let i = 0; i < n; i++) {
|
|
574
|
+
if (i === front || street.has(i))
|
|
575
|
+
continue;
|
|
576
|
+
const ni = outwardNormal(points, i);
|
|
577
|
+
const dot = fn[0] * ni[0] + fn[1] * ni[1];
|
|
578
|
+
if (dot < rearDot) {
|
|
579
|
+
rearDot = dot;
|
|
580
|
+
rear = i;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
const fp = points[front];
|
|
584
|
+
const fq = points[(front + 1) % n];
|
|
585
|
+
const dx = fq[0] - fp[0];
|
|
586
|
+
const dy = fq[1] - fp[1];
|
|
587
|
+
const len = Math.hypot(dx, dy) || 1;
|
|
588
|
+
const ux = dx / len;
|
|
589
|
+
const uy = dy / len;
|
|
590
|
+
const fmx = (fp[0] + fq[0]) / 2;
|
|
591
|
+
const fmy = (fp[1] + fq[1]) / 2;
|
|
592
|
+
for (let i = 0; i < n; i++) {
|
|
593
|
+
if (i === front) {
|
|
594
|
+
roles[i] = 'front';
|
|
595
|
+
continue;
|
|
596
|
+
}
|
|
597
|
+
if (street.has(i)) {
|
|
598
|
+
roles[i] = 'street';
|
|
599
|
+
continue;
|
|
600
|
+
}
|
|
601
|
+
if (i === rear) {
|
|
602
|
+
roles[i] = 'rear';
|
|
603
|
+
continue;
|
|
604
|
+
}
|
|
605
|
+
const p = points[i];
|
|
606
|
+
const q = points[(i + 1) % n];
|
|
607
|
+
const mx = (p[0] + q[0]) / 2 - fmx;
|
|
608
|
+
const my = (p[1] + q[1]) / 2 - fmy;
|
|
609
|
+
roles[i] = mx * ux + my * uy < 0 ? 'left' : 'right';
|
|
610
|
+
}
|
|
611
|
+
return roles;
|
|
612
|
+
}
|
|
613
|
+
/** Required setback distance (metres) for each edge role. */
|
|
614
|
+
export function setbackForRole(setbacks, role) {
|
|
615
|
+
switch (role) {
|
|
616
|
+
case 'front':
|
|
617
|
+
return setbacks.front;
|
|
618
|
+
case 'street':
|
|
619
|
+
return setbacks.streetSide ?? setbacks.front;
|
|
620
|
+
case 'rear':
|
|
621
|
+
return setbacks.rear;
|
|
622
|
+
case 'left':
|
|
623
|
+
return setbacks.left ?? setbacks.side;
|
|
624
|
+
case 'right':
|
|
625
|
+
return setbacks.right ?? setbacks.side;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
/**
|
|
629
|
+
* Buildable envelope — every lot edge pushed INWARD by its own setback
|
|
630
|
+
* (`insetPolygon`): straight where the lot is straight, concentric round a
|
|
631
|
+
* radius, clipped where the offsets cross. On a concave lot a reflex corner
|
|
632
|
+
* can self-intersect, in which case the caller still gets a ring but it is
|
|
633
|
+
* advisory, not a legal envelope.
|
|
634
|
+
*
|
|
635
|
+
* Returns `[]` when the polygon has fewer than 3 points, when a setback is
|
|
636
|
+
* not a distance, or when nothing buildable remains (setbacks larger than
|
|
637
|
+
* the lot).
|
|
638
|
+
*/
|
|
639
|
+
export function setbackEnvelope(points, setbacks, frontIndex, options = {}) {
|
|
640
|
+
const n = points.length;
|
|
641
|
+
if (n < 3)
|
|
642
|
+
return [];
|
|
643
|
+
const streetEdges = options.streetEdges ?? [];
|
|
644
|
+
const roles = classifyEdges(points, frontIndex, streetEdges);
|
|
645
|
+
// A radius drawn as a run of short edges takes ONE role. A curb return
|
|
646
|
+
// is street frontage: a run carrying, or touching, a front / street edge
|
|
647
|
+
// is front / street all along (otherwise the last sliver of the return
|
|
648
|
+
// became a side yard, and the envelope jutted out toward the corner); a
|
|
649
|
+
// run carrying the rear is rear; else
|
|
650
|
+
// each sliver keeps its own side.
|
|
651
|
+
const runs = arcRuns(points);
|
|
652
|
+
const runRole = new Map();
|
|
653
|
+
const streetLike = (r) => r === 'front' || r === 'street';
|
|
654
|
+
for (let i = 0; i < n; i++) {
|
|
655
|
+
const r = roles[i];
|
|
656
|
+
const g = runs[i];
|
|
657
|
+
const have = runRole.get(g);
|
|
658
|
+
if (streetLike(r) || (r === 'rear' && !(have && streetLike(have))))
|
|
659
|
+
runRole.set(g, r);
|
|
660
|
+
else if (!have)
|
|
661
|
+
runRole.set(g, r);
|
|
662
|
+
}
|
|
663
|
+
for (let i = 0; i < n; i++) {
|
|
664
|
+
const g = runs[i];
|
|
665
|
+
const have = runRole.get(g);
|
|
666
|
+
if (streetLike(have))
|
|
667
|
+
continue;
|
|
668
|
+
const before = roles[(i - 1 + n) % n];
|
|
669
|
+
const after = roles[(i + 1) % n];
|
|
670
|
+
const members = runs.filter((x) => x === g).length;
|
|
671
|
+
if (members > 1) {
|
|
672
|
+
if (runs[(i - 1 + n) % n] !== g && streetLike(before))
|
|
673
|
+
runRole.set(g, before);
|
|
674
|
+
else if (runs[(i + 1) % n] !== g && streetLike(after))
|
|
675
|
+
runRole.set(g, after);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
// One lot line drawn as two: the county fabric splits a frontage at a kink of
|
|
679
|
+
// a degree or two, and only one half may come back from the street lookup
|
|
680
|
+
// (or the north-facing fallback). The half left out took a side yard, and
|
|
681
|
+
// the front yard swung round their shared corner in a circle as deep as
|
|
682
|
+
// itself. An edge running on nearly straight from a front or street edge
|
|
683
|
+
// is that frontage too.
|
|
684
|
+
const roleOf = (i) => runRole.get(runs[(i + n) % n]) ?? roles[(i + n) % n];
|
|
685
|
+
const direction = (i) => {
|
|
686
|
+
const p = points[(i + n) % n];
|
|
687
|
+
const q = points[(i + 1 + n) % n];
|
|
688
|
+
const l = Math.hypot(q[0] - p[0], q[1] - p[1]) || 1;
|
|
689
|
+
return [(q[0] - p[0]) / l, (q[1] - p[1]) / l];
|
|
690
|
+
};
|
|
691
|
+
const straightOn = Math.cos((8 * Math.PI) / 180);
|
|
692
|
+
const continued = new Map();
|
|
693
|
+
for (let pass = 0; pass < n; pass++) {
|
|
694
|
+
let grew = false;
|
|
695
|
+
for (let i = 0; i < n; i++) {
|
|
696
|
+
const own = continued.get(i) ?? roleOf(i);
|
|
697
|
+
if (streetLike(own))
|
|
698
|
+
continue;
|
|
699
|
+
const d = direction(i);
|
|
700
|
+
for (const j of [i - 1, i + 1]) {
|
|
701
|
+
const k = (j + n) % n;
|
|
702
|
+
const theirs = continued.get(k) ?? roleOf(k);
|
|
703
|
+
const e = direction(k);
|
|
704
|
+
if (streetLike(theirs) && d[0] * e[0] + d[1] * e[1] > straightOn) {
|
|
705
|
+
continued.set(i, theirs);
|
|
706
|
+
grew = true;
|
|
707
|
+
break;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
if (!grew)
|
|
712
|
+
break;
|
|
713
|
+
}
|
|
714
|
+
const distances = [];
|
|
715
|
+
for (let i = 0; i < n; i++) {
|
|
716
|
+
const role = continued.get(i) ?? runRole.get(runs[i]) ?? roles[i];
|
|
717
|
+
const d = setbackForRole(setbacks, role === 'left' || role === 'right' ? roles[i] : role);
|
|
718
|
+
if (!Number.isFinite(d) || d < 0)
|
|
719
|
+
return [];
|
|
720
|
+
distances.push(d);
|
|
721
|
+
}
|
|
722
|
+
// the corner sight triangles keep the envelope out of the clear-vision
|
|
723
|
+
// zone at each street intersection (the hypotenuse is a half-plane)
|
|
724
|
+
const keepOut = [];
|
|
725
|
+
if (options.sightTriangleM && options.sightTriangleM > 0) {
|
|
726
|
+
for (const [a, b] of streetCorners(points, [frontIndex, ...streetEdges])) {
|
|
727
|
+
const tri = sightTriangle(points, a, b, options.sightTriangleM);
|
|
728
|
+
if (tri)
|
|
729
|
+
keepOut.push({ a: tri.a, b: tri.b, inside: tri.corner });
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
return insetPolygon(points, distances, { keepOut });
|
|
733
|
+
}
|
|
734
|
+
/* ------------------------------------------------------------- yards */
|
|
735
|
+
/**
|
|
736
|
+
* Distance from `origin` along unit direction `(dx, dy)` to the first crossing
|
|
737
|
+
* of the polygon boundary. `null` when the ray never hits (origin outside, or
|
|
738
|
+
* a degenerate ring).
|
|
739
|
+
*/
|
|
740
|
+
export function rayToPolygon(points, origin, dx, dy) {
|
|
741
|
+
const n = points.length;
|
|
742
|
+
let best = null;
|
|
743
|
+
for (let i = 0; i < n; i++) {
|
|
744
|
+
const p = points[i];
|
|
745
|
+
const q = points[(i + 1) % n];
|
|
746
|
+
const ex = q[0] - p[0];
|
|
747
|
+
const ey = q[1] - p[1];
|
|
748
|
+
const denom = dx * ey - dy * ex;
|
|
749
|
+
if (Math.abs(denom) < 1e-12)
|
|
750
|
+
continue;
|
|
751
|
+
// origin + t*d = p + u*e
|
|
752
|
+
const t = ((p[0] - origin[0]) * ey - (p[1] - origin[1]) * ex) / denom;
|
|
753
|
+
const u = ((p[0] - origin[0]) * dy - (p[1] - origin[1]) * dx) / denom;
|
|
754
|
+
if (t <= 1e-9 || u < -1e-9 || u > 1 + 1e-9)
|
|
755
|
+
continue;
|
|
756
|
+
if (!best || t < best.distance) {
|
|
757
|
+
best = { distance: t, point: [origin[0] + dx * t, origin[1] + dy * t] };
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
return best;
|
|
761
|
+
}
|
|
762
|
+
/**
|
|
763
|
+
* Yard dimensions for a building TURNED on its lot. The footprint's bounds
|
|
764
|
+
* are taken in the building's own frame (`yaw`, the building node's Y
|
|
765
|
+
* rotation), and the four edge midpoints cast square to the house's faces
|
|
766
|
+
* out to the lot line — the yards a plan checker measures. With a house
|
|
767
|
+
* square to a diagonal lot the axis-aligned bbox sticks out past the real
|
|
768
|
+
* corners and reads a front yard inches short of the setback it actually
|
|
769
|
+
* meets (Land Park, 2026-09-06). `side` is the compass direction nearest the
|
|
770
|
+
* cast, so labels keep reading N / S / E / W. Sides whose ray misses the lot
|
|
771
|
+
* line (footprint outside the lot) are omitted rather than faked.
|
|
772
|
+
*/
|
|
773
|
+
export function castYardDimensionsOriented(lot, footprintLoops, yaw) {
|
|
774
|
+
if (lot.length < 3)
|
|
775
|
+
return [];
|
|
776
|
+
const c = Math.cos(yaw);
|
|
777
|
+
const s = Math.sin(yaw);
|
|
778
|
+
// world = (c·lx + s·lz, −s·lx + c·lz) ⇒ local = (c·wx − s·wz, s·wx + c·wz)
|
|
779
|
+
const toLocal = (p) => [c * p[0] - s * p[1], s * p[0] + c * p[1]];
|
|
780
|
+
const toWorld = (p) => [c * p[0] + s * p[1], -s * p[0] + c * p[1]];
|
|
781
|
+
let minX = Number.POSITIVE_INFINITY;
|
|
782
|
+
let minZ = Number.POSITIVE_INFINITY;
|
|
783
|
+
let maxX = Number.NEGATIVE_INFINITY;
|
|
784
|
+
let maxZ = Number.NEGATIVE_INFINITY;
|
|
785
|
+
for (const loop of footprintLoops) {
|
|
786
|
+
for (const p of loop) {
|
|
787
|
+
const [x, z] = toLocal(p);
|
|
788
|
+
if (x < minX)
|
|
789
|
+
minX = x;
|
|
790
|
+
if (x > maxX)
|
|
791
|
+
maxX = x;
|
|
792
|
+
if (z < minZ)
|
|
793
|
+
minZ = z;
|
|
794
|
+
if (z > maxZ)
|
|
795
|
+
maxZ = z;
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
if (!Number.isFinite(minX))
|
|
799
|
+
return [];
|
|
800
|
+
const midX = (minX + maxX) / 2;
|
|
801
|
+
const midZ = (minZ + maxZ) / 2;
|
|
802
|
+
const casts = [
|
|
803
|
+
{ from: [midX, minZ], dir: [0, -1] },
|
|
804
|
+
{ from: [midX, maxZ], dir: [0, 1] },
|
|
805
|
+
{ from: [minX, midZ], dir: [-1, 0] },
|
|
806
|
+
{ from: [maxX, midZ], dir: [1, 0] },
|
|
807
|
+
];
|
|
808
|
+
const sides = ['north', 'east', 'south', 'west'];
|
|
809
|
+
const out = [];
|
|
810
|
+
for (const cast of casts) {
|
|
811
|
+
const from = toWorld(cast.from);
|
|
812
|
+
const [dx, dy] = toWorld(cast.dir);
|
|
813
|
+
const hit = rayToPolygon(lot, from, dx, dy);
|
|
814
|
+
if (!hit)
|
|
815
|
+
continue;
|
|
816
|
+
// heading of the cast: plan up (−y) is north, +x east
|
|
817
|
+
const heading = ((Math.atan2(dx, -dy) * 180) / Math.PI + 360) % 360;
|
|
818
|
+
const side = sides[Math.round(heading / 90) % 4];
|
|
819
|
+
out.push({ side, from, to: hit.point, distance: hit.distance });
|
|
820
|
+
}
|
|
821
|
+
return out;
|
|
822
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a node is flatwork the site's works laid on a level (`add_site_surface`: a lawn, a
|
|
3
|
+
* driveway, a path, a patio, marked `metadata.flatwork`). It stands on the building's level for its
|
|
4
|
+
* elevation, but it is outdoors and not a floor of the building: it takes no part in where the
|
|
5
|
+
* building stands against the ground (a lot-wide lawn under a hill is not a floor buried by it), in
|
|
6
|
+
* what covers a basement (a lawn does not), or in the box the level's rooms stand in.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isSiteFlatwork(node: {
|
|
9
|
+
metadata?: unknown;
|
|
10
|
+
}): boolean;
|
|
11
|
+
//# sourceMappingURL=site-flatwork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-flatwork.d.ts","sourceRoot":"","sources":["../../src/lib/site-flatwork.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAGpE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a node is flatwork the site's works laid on a level (`add_site_surface`: a lawn, a
|
|
3
|
+
* driveway, a path, a patio, marked `metadata.flatwork`). It stands on the building's level for its
|
|
4
|
+
* elevation, but it is outdoors and not a floor of the building: it takes no part in where the
|
|
5
|
+
* building stands against the ground (a lot-wide lawn under a hill is not a floor buried by it), in
|
|
6
|
+
* what covers a basement (a lawn does not), or in the box the level's rooms stand in.
|
|
7
|
+
*/
|
|
8
|
+
export function isSiteFlatwork(node) {
|
|
9
|
+
const metadata = node.metadata;
|
|
10
|
+
return typeof metadata === 'object' && metadata !== null && 'flatwork' in metadata;
|
|
11
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AnyNode } from '../schema/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where a flat site's ground lies: the plane the site renderer draws its fill on, a hand under
|
|
4
|
+
* the datum so the floors laid at grade sit on it and never inside it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const FLAT_GROUND_Y = -0.05;
|
|
7
|
+
/**
|
|
8
|
+
* The height of the site's ground at a world XZ, as the renderer draws it: the sculpted terrain
|
|
9
|
+
* where the site has one, the flat plane everywhere else. `site` is the site node (the caller
|
|
10
|
+
* knows it; looking it up here would walk every node for every call).
|
|
11
|
+
*/
|
|
12
|
+
export declare function groundHeightAt(site: AnyNode | null | undefined, x: number, z: number): number;
|
|
13
|
+
//# sourceMappingURL=site-ground-height.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site-ground-height.d.ts","sourceRoot":"","sources":["../../src/lib/site-ground-height.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAQ,CAAA;AAElC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { heightAt } from './terrain-field.js';
|
|
2
|
+
import { terrainFieldOf } from './terrain-source.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where a flat site's ground lies: the plane the site renderer draws its fill on, a hand under
|
|
5
|
+
* the datum so the floors laid at grade sit on it and never inside it.
|
|
6
|
+
*/
|
|
7
|
+
export const FLAT_GROUND_Y = -0.05;
|
|
8
|
+
/**
|
|
9
|
+
* The height of the site's ground at a world XZ, as the renderer draws it: the sculpted terrain
|
|
10
|
+
* where the site has one, the flat plane everywhere else. `site` is the site node (the caller
|
|
11
|
+
* knows it; looking it up here would walk every node for every call).
|
|
12
|
+
*/
|
|
13
|
+
export function groundHeightAt(site, x, z) {
|
|
14
|
+
const field = site?.type === 'site' ? terrainFieldOf(site) : null;
|
|
15
|
+
return field ? heightAt(field, x, z) : FLAT_GROUND_Y;
|
|
16
|
+
}
|