@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,822 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The BUILDABLE ENVELOPE as the zoning officer draws it: every lot line
|
|
3
|
+
* pushed inward by its own required yard, measured perpendicular to that
|
|
4
|
+
* line, the offsets clipped against each other where they meet. A curved
|
|
5
|
+
* (radius) lot line — a cul-de-sac frontage, a rounded corner — offsets to
|
|
6
|
+
* a CONCENTRIC curve, never a chord — the industry-standard setback for pie
|
|
7
|
+
* shapes, radius corners and odd lots.
|
|
8
|
+
*
|
|
9
|
+
* Built as a distance field rather than by intersecting offset lines: a
|
|
10
|
+
* point is buildable when its distance to EVERY lot line is at least that
|
|
11
|
+
* line's setback. The zero contour of `min_i(dist(p, line_i) − d_i)` over
|
|
12
|
+
* the lot is exactly the variable-distance inward offset — straight where
|
|
13
|
+
* the lot is straight, concentric round a radius, clipped where offsets
|
|
14
|
+
* cross, and rounded round a reflex notch — for convex, pie-shaped,
|
|
15
|
+
* L-shaped and radius-cornered lots alike. The contour is traced by the
|
|
16
|
+
* same marching squares the site plan draws terrain with, then simplified
|
|
17
|
+
* so a rectangle comes back as four corners and an arc keeps its vertices.
|
|
18
|
+
*/
|
|
19
|
+
import { terrainContours } from './terrain-contours.js';
|
|
20
|
+
import { createTerrainField } from './terrain-field.js';
|
|
21
|
+
const EPS = 1e-9;
|
|
22
|
+
function pointInPolygon(points, x, y) {
|
|
23
|
+
let inside = false;
|
|
24
|
+
for (let i = 0, j = points.length - 1; i < points.length; j = i++) {
|
|
25
|
+
const a = points[i];
|
|
26
|
+
const b = points[j];
|
|
27
|
+
if (a[1] > y !== b[1] > y && x < ((b[0] - a[0]) * (y - a[1])) / (b[1] - a[1] || 1e-12) + a[0])
|
|
28
|
+
inside = !inside;
|
|
29
|
+
}
|
|
30
|
+
return inside;
|
|
31
|
+
}
|
|
32
|
+
function segDist(px, py, a, b) {
|
|
33
|
+
const abx = b[0] - a[0];
|
|
34
|
+
const aby = b[1] - a[1];
|
|
35
|
+
const l2 = abx * abx + aby * aby;
|
|
36
|
+
const t = l2 < EPS ? 0 : Math.max(0, Math.min(1, ((px - a[0]) * abx + (py - a[1]) * aby) / l2));
|
|
37
|
+
return Math.hypot(px - (a[0] + abx * t), py - (a[1] + aby * t));
|
|
38
|
+
}
|
|
39
|
+
function signedArea(points) {
|
|
40
|
+
let a = 0;
|
|
41
|
+
for (let i = 0, n = points.length; i < n; i++) {
|
|
42
|
+
const p = points[i];
|
|
43
|
+
const q = points[(i + 1) % n];
|
|
44
|
+
a += p[0] * q[1] - q[0] * p[1];
|
|
45
|
+
}
|
|
46
|
+
return a / 2;
|
|
47
|
+
}
|
|
48
|
+
export function polygonAreaAbs(points) {
|
|
49
|
+
return Math.abs(signedArea(points));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Which edges belong to the same ARC RUN: consecutive short edges (under
|
|
53
|
+
* `shortM`) turning gently (under `turnDeg` per vertex) — the county
|
|
54
|
+
* fabric's way of drawing a radius. A long edge is its own run. Returns
|
|
55
|
+
* the run id per edge.
|
|
56
|
+
*/
|
|
57
|
+
export function arcRuns(points, shortM = 4, turnDeg = 35) {
|
|
58
|
+
const n = points.length;
|
|
59
|
+
const dirs = points.map((p, i) => {
|
|
60
|
+
const q = points[(i + 1) % n];
|
|
61
|
+
const dx = q[0] - p[0];
|
|
62
|
+
const dy = q[1] - p[1];
|
|
63
|
+
const len = Math.hypot(dx, dy) || 1;
|
|
64
|
+
return { dx: dx / len, dy: dy / len, len };
|
|
65
|
+
});
|
|
66
|
+
const turn = Math.cos((turnDeg * Math.PI) / 180);
|
|
67
|
+
const run = new Array(n).fill(-1);
|
|
68
|
+
let runs = 0;
|
|
69
|
+
// start the sweep at a long edge when there is one, so a run never wraps across the sweep's seam
|
|
70
|
+
const start = dirs.findIndex((d) => d.len >= shortM);
|
|
71
|
+
const order = Array.from({ length: n }, (_, k) => (Math.max(start, 0) + k) % n);
|
|
72
|
+
for (const i of order) {
|
|
73
|
+
if (run[i] !== -1)
|
|
74
|
+
continue;
|
|
75
|
+
const a = dirs[i];
|
|
76
|
+
if (a.len >= shortM) {
|
|
77
|
+
run[i] = runs++;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const members = [i];
|
|
81
|
+
let j = (i + 1) % n;
|
|
82
|
+
let cur = a;
|
|
83
|
+
while (j !== i && run[j] === -1) {
|
|
84
|
+
const b = dirs[j];
|
|
85
|
+
if (b.len >= shortM || cur.dx * b.dx + cur.dy * b.dy < turn)
|
|
86
|
+
break;
|
|
87
|
+
members.push(j);
|
|
88
|
+
cur = b;
|
|
89
|
+
j = (j + 1) % n;
|
|
90
|
+
}
|
|
91
|
+
for (const m of members)
|
|
92
|
+
run[m] = runs;
|
|
93
|
+
runs += 1;
|
|
94
|
+
}
|
|
95
|
+
return run;
|
|
96
|
+
}
|
|
97
|
+
/** Douglas–Peucker on an open polyline. */
|
|
98
|
+
function simplifyOpen(pts, tol) {
|
|
99
|
+
if (pts.length < 3)
|
|
100
|
+
return pts;
|
|
101
|
+
const a = pts[0];
|
|
102
|
+
const b = pts[pts.length - 1];
|
|
103
|
+
let worst = 0;
|
|
104
|
+
let worstAt = -1;
|
|
105
|
+
for (let i = 1; i < pts.length - 1; i++) {
|
|
106
|
+
const p = pts[i];
|
|
107
|
+
const d = segDist(p[0], p[1], a, b);
|
|
108
|
+
if (d > worst) {
|
|
109
|
+
worst = d;
|
|
110
|
+
worstAt = i;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (worst <= tol || worstAt < 0)
|
|
114
|
+
return [a, b];
|
|
115
|
+
const left = simplifyOpen(pts.slice(0, worstAt + 1), tol);
|
|
116
|
+
const right = simplifyOpen(pts.slice(worstAt), tol);
|
|
117
|
+
return [...left.slice(0, -1), ...right];
|
|
118
|
+
}
|
|
119
|
+
/** Douglas–Peucker on a closed loop: split at the two farthest-apart vertices. */
|
|
120
|
+
function simplifyLoop(loop, tol) {
|
|
121
|
+
if (loop.length < 4)
|
|
122
|
+
return loop;
|
|
123
|
+
let i0 = 0;
|
|
124
|
+
let i1 = 0;
|
|
125
|
+
let best = -1;
|
|
126
|
+
for (let i = 0; i < loop.length; i++) {
|
|
127
|
+
for (let j = i + 1; j < loop.length; j++) {
|
|
128
|
+
const d = Math.hypot(loop[i][0] - loop[j][0], loop[i][1] - loop[j][1]);
|
|
129
|
+
if (d > best) {
|
|
130
|
+
best = d;
|
|
131
|
+
i0 = i;
|
|
132
|
+
i1 = j;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const a = [...loop.slice(i0, i1 + 1)];
|
|
137
|
+
const b = [...loop.slice(i1), ...loop.slice(0, i0 + 1)];
|
|
138
|
+
const sa = simplifyOpen(a, tol);
|
|
139
|
+
const sb = simplifyOpen(b, tol);
|
|
140
|
+
return [...sa.slice(0, -1), ...sb.slice(0, -1)];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Marching squares cuts a sharp convex corner with a one-cell chamfer;
|
|
144
|
+
* where a short edge sits between two long ones, put the corner back at the
|
|
145
|
+
* long edges' intersection when that point is where the chamfer was.
|
|
146
|
+
*/
|
|
147
|
+
function sharpen(loop, maxChamfer) {
|
|
148
|
+
const n = loop.length;
|
|
149
|
+
if (n < 4)
|
|
150
|
+
return loop;
|
|
151
|
+
const out = [];
|
|
152
|
+
const skip = new Set();
|
|
153
|
+
for (let i = 0; i < n; i++) {
|
|
154
|
+
if (skip.has(i))
|
|
155
|
+
continue;
|
|
156
|
+
const p = loop[i];
|
|
157
|
+
const q = loop[(i + 1) % n];
|
|
158
|
+
const len = Math.hypot(q[0] - p[0], q[1] - p[1]);
|
|
159
|
+
if (len > maxChamfer) {
|
|
160
|
+
out.push(p);
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
const o = loop[(i - 1 + n) % n];
|
|
164
|
+
const r = loop[(i + 2) % n];
|
|
165
|
+
const d1x = p[0] - o[0];
|
|
166
|
+
const d1y = p[1] - o[1];
|
|
167
|
+
const d2x = r[0] - q[0];
|
|
168
|
+
const d2y = r[1] - q[1];
|
|
169
|
+
const denom = d1x * d2y - d1y * d2x;
|
|
170
|
+
if (Math.abs(denom) < EPS) {
|
|
171
|
+
out.push(p);
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
const t = ((q[0] - o[0]) * d2y - (q[1] - o[1]) * d2x) / denom;
|
|
175
|
+
const cx = o[0] + d1x * t;
|
|
176
|
+
const cy = o[1] + d1y * t;
|
|
177
|
+
if (Math.hypot(cx - p[0], cy - p[1]) > 1.5 * maxChamfer) {
|
|
178
|
+
out.push(p);
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
out.push([cx, cy]);
|
|
182
|
+
skip.add((i + 1) % n);
|
|
183
|
+
}
|
|
184
|
+
return out;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* A convex lot with no radius runs is offset EXACTLY: each edge's offset
|
|
188
|
+
* line intersected with its neighbours'. Null when the lot is not that
|
|
189
|
+
* simple, or when the result folds (an edge shorter than its neighbours'
|
|
190
|
+
* offsets) — the field then does the clipping.
|
|
191
|
+
*/
|
|
192
|
+
function analyticInset(points, ds) {
|
|
193
|
+
const n = points.length;
|
|
194
|
+
const runs = arcRuns(points);
|
|
195
|
+
if (new Set(runs).size !== n)
|
|
196
|
+
return null;
|
|
197
|
+
const area = signedArea(points);
|
|
198
|
+
const sign = area > 0 ? -1 : 1;
|
|
199
|
+
let turn = 0;
|
|
200
|
+
const lines = [];
|
|
201
|
+
for (let i = 0; i < n; i++) {
|
|
202
|
+
const p = points[i];
|
|
203
|
+
const q = points[(i + 1) % n];
|
|
204
|
+
const r = points[(i + 2) % n];
|
|
205
|
+
const cross = (q[0] - p[0]) * (r[1] - q[1]) - (q[1] - p[1]) * (r[0] - q[0]);
|
|
206
|
+
if (turn === 0)
|
|
207
|
+
turn = Math.sign(cross);
|
|
208
|
+
else if (Math.sign(cross) !== 0 && Math.sign(cross) !== turn)
|
|
209
|
+
return null; // concave
|
|
210
|
+
const dx = q[0] - p[0];
|
|
211
|
+
const dy = q[1] - p[1];
|
|
212
|
+
const len = Math.hypot(dx, dy);
|
|
213
|
+
if (len < EPS)
|
|
214
|
+
return null;
|
|
215
|
+
const nx = (sign * -dy) / len;
|
|
216
|
+
const ny = (sign * dx) / len;
|
|
217
|
+
const d = ds[i];
|
|
218
|
+
lines.push({ ax: p[0] - nx * d, ay: p[1] - ny * d, dx: dx / len, dy: dy / len });
|
|
219
|
+
}
|
|
220
|
+
const out = [];
|
|
221
|
+
for (let i = 0; i < n; i++) {
|
|
222
|
+
const prev = lines[(i - 1 + n) % n];
|
|
223
|
+
const cur = lines[i];
|
|
224
|
+
const denom = prev.dx * cur.dy - prev.dy * cur.dx;
|
|
225
|
+
if (Math.abs(denom) < 1e-9) {
|
|
226
|
+
out.push([cur.ax, cur.ay]);
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
const t = ((cur.ax - prev.ax) * cur.dy - (cur.ay - prev.ay) * cur.dx) / denom;
|
|
230
|
+
out.push([prev.ax + prev.dx * t, prev.ay + prev.dy * t]);
|
|
231
|
+
}
|
|
232
|
+
// folded: an edge reversed, the ring flipped, or a corner outside the lot
|
|
233
|
+
for (let i = 0; i < n; i++) {
|
|
234
|
+
const p = out[i];
|
|
235
|
+
const q = out[(i + 1) % n];
|
|
236
|
+
const l = lines[i];
|
|
237
|
+
if ((q[0] - p[0]) * l.dx + (q[1] - p[1]) * l.dy < -1e-9)
|
|
238
|
+
return null;
|
|
239
|
+
if (!pointInPolygon(points, p[0], p[1]) &&
|
|
240
|
+
ds[i] > 0 &&
|
|
241
|
+
ds[(i - 1 + n) % n] > 0)
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
if (polygonAreaAbs(out) < 1e-9)
|
|
245
|
+
return null;
|
|
246
|
+
if (signedArea(out) > 0 !== area > 0)
|
|
247
|
+
return null;
|
|
248
|
+
if (polygonAreaAbs(out) >= polygonAreaAbs(points))
|
|
249
|
+
return null;
|
|
250
|
+
return out;
|
|
251
|
+
}
|
|
252
|
+
export function insetPolygon(points, distances, options = {}) {
|
|
253
|
+
const n = points.length;
|
|
254
|
+
if (n < 3 || distances.length !== n)
|
|
255
|
+
return [];
|
|
256
|
+
if (!distances.some((d) => Number.isFinite(d) && d > 0))
|
|
257
|
+
return [];
|
|
258
|
+
const ds = distances.map((d) => (Number.isFinite(d) && d > 0 ? d : 0));
|
|
259
|
+
const keepOut = (options.keepOut ?? []).map((k) => {
|
|
260
|
+
const dx = k.b[0] - k.a[0];
|
|
261
|
+
const dy = k.b[1] - k.a[1];
|
|
262
|
+
const len = Math.hypot(dx, dy) || 1;
|
|
263
|
+
let nx = -dy / len;
|
|
264
|
+
let ny = dx / len;
|
|
265
|
+
// the normal points AWAY from the forbidden side
|
|
266
|
+
if ((k.inside[0] - k.a[0]) * nx + (k.inside[1] - k.a[1]) * ny > 0) {
|
|
267
|
+
nx = -nx;
|
|
268
|
+
ny = -ny;
|
|
269
|
+
}
|
|
270
|
+
return { ax: k.a[0], ay: k.a[1], nx, ny };
|
|
271
|
+
});
|
|
272
|
+
const exact = keepOut.length === 0 ? analyticInset(points, ds) : null;
|
|
273
|
+
if (exact)
|
|
274
|
+
return exact;
|
|
275
|
+
let minX = Number.POSITIVE_INFINITY;
|
|
276
|
+
let minY = Number.POSITIVE_INFINITY;
|
|
277
|
+
let maxX = Number.NEGATIVE_INFINITY;
|
|
278
|
+
let maxY = Number.NEGATIVE_INFINITY;
|
|
279
|
+
for (const p of points) {
|
|
280
|
+
minX = Math.min(minX, p[0]);
|
|
281
|
+
maxX = Math.max(maxX, p[0]);
|
|
282
|
+
minY = Math.min(minY, p[1]);
|
|
283
|
+
maxY = Math.max(maxY, p[1]);
|
|
284
|
+
}
|
|
285
|
+
const diag = Math.hypot(maxX - minX, maxY - minY);
|
|
286
|
+
if (!(diag > 0))
|
|
287
|
+
return [];
|
|
288
|
+
const h = options.resolution ?? Math.max(0.08, Math.min(0.4, diag / 320));
|
|
289
|
+
const cols = Math.ceil((maxX - minX) / h) + 4;
|
|
290
|
+
const rows = Math.ceil((maxY - minY) / h) + 4;
|
|
291
|
+
if (cols * rows > 4_000_000)
|
|
292
|
+
return [];
|
|
293
|
+
const origin = [minX - 2 * h, minY - 2 * h];
|
|
294
|
+
const step = 0.001;
|
|
295
|
+
const base = createTerrainField({ origin, spacing: h, cols, rows, step });
|
|
296
|
+
const heights = new Int16Array(base.heights);
|
|
297
|
+
const CAP = 20;
|
|
298
|
+
for (let row = 0; row < rows; row++) {
|
|
299
|
+
for (let col = 0; col < cols; col++) {
|
|
300
|
+
const x = origin[0] + col * h;
|
|
301
|
+
const y = origin[1] + row * h;
|
|
302
|
+
let f;
|
|
303
|
+
if (!pointInPolygon(points, x, y)) {
|
|
304
|
+
// outside: the signed distance continues through the lot line, so a
|
|
305
|
+
// zero-setback edge's contour lands exactly on the line
|
|
306
|
+
f = Number.POSITIVE_INFINITY;
|
|
307
|
+
for (let i = 0; i < n; i++)
|
|
308
|
+
f = Math.min(f, segDist(x, y, points[i], points[(i + 1) % n]));
|
|
309
|
+
f = -Math.max(f, 1e-4);
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
f = Number.POSITIVE_INFINITY;
|
|
313
|
+
for (let i = 0; i < n; i++) {
|
|
314
|
+
const v = segDist(x, y, points[i], points[(i + 1) % n]) - ds[i];
|
|
315
|
+
if (v < f)
|
|
316
|
+
f = v;
|
|
317
|
+
}
|
|
318
|
+
for (const k of keepOut) {
|
|
319
|
+
const v = (x - k.ax) * k.nx + (y - k.ay) * k.ny;
|
|
320
|
+
if (v < f)
|
|
321
|
+
f = v;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
f = Math.max(-CAP, Math.min(CAP, f));
|
|
325
|
+
heights[row * cols + col] = Math.round(f / step);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
const field = { ...base, heights };
|
|
329
|
+
// one level only: zero (the interval is past every value in the field)
|
|
330
|
+
const contours = terrainContours(field, CAP + 1, points);
|
|
331
|
+
let best = null;
|
|
332
|
+
let bestArea = 0;
|
|
333
|
+
for (const c of contours) {
|
|
334
|
+
if (c.points.length < 3)
|
|
335
|
+
continue;
|
|
336
|
+
const loop = c.points;
|
|
337
|
+
const a = polygonAreaAbs(loop);
|
|
338
|
+
if (a > bestArea) {
|
|
339
|
+
bestArea = a;
|
|
340
|
+
best = loop;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (!best || bestArea < 1e-3)
|
|
344
|
+
return [];
|
|
345
|
+
// drop a duplicated closing vertex
|
|
346
|
+
const first = best[0];
|
|
347
|
+
const last = best[best.length - 1];
|
|
348
|
+
if (Math.hypot(first[0] - last[0], first[1] - last[1]) < 1e-6)
|
|
349
|
+
best = best.slice(0, -1);
|
|
350
|
+
let loop = simplifyLoop(best, options.simplifyM ?? 0.03);
|
|
351
|
+
loop = sharpen(loop, 1.6 * h);
|
|
352
|
+
if (loop.length < 3)
|
|
353
|
+
return [];
|
|
354
|
+
// the lot's winding, starting near the lot's first vertex
|
|
355
|
+
if (signedArea(loop) > 0 !== signedArea(points) > 0)
|
|
356
|
+
loop = [...loop].reverse();
|
|
357
|
+
const p0 = points[0];
|
|
358
|
+
let startAt = 0;
|
|
359
|
+
let startD = Number.POSITIVE_INFINITY;
|
|
360
|
+
loop.forEach((p, i) => {
|
|
361
|
+
const d = Math.hypot(p[0] - p0[0], p[1] - p0[1]);
|
|
362
|
+
if (d < startD) {
|
|
363
|
+
startD = d;
|
|
364
|
+
startAt = i;
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
loop = [...loop.slice(startAt), ...loop.slice(0, startAt)];
|
|
368
|
+
return loop.map((p) => [Math.round(p[0] * 1e4) / 1e4, Math.round(p[1] * 1e4) / 1e4]);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Which envelope edge is the one behind the lot's front line: the longest
|
|
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.
|
|
377
|
+
*/
|
|
378
|
+
export function envelopeFrontEdge(lot, frontIndex, envelope) {
|
|
379
|
+
const n = lot.length;
|
|
380
|
+
const m = envelope.length;
|
|
381
|
+
if (n < 2 || m < 2)
|
|
382
|
+
return null;
|
|
383
|
+
const fi = ((frontIndex % n) + n) % n;
|
|
384
|
+
const a = lot[fi];
|
|
385
|
+
const b = lot[(fi + 1) % n];
|
|
386
|
+
const [fnx, fny] = outwardNormal(lot, fi);
|
|
387
|
+
let best = null;
|
|
388
|
+
let bestScore = Number.NEGATIVE_INFINITY;
|
|
389
|
+
for (let i = 0; i < m; i++) {
|
|
390
|
+
const p = envelope[i];
|
|
391
|
+
const q = envelope[(i + 1) % m];
|
|
392
|
+
const el = Math.hypot(q[0] - p[0], q[1] - p[1]);
|
|
393
|
+
if (el < 1e-6)
|
|
394
|
+
continue;
|
|
395
|
+
const [enx, eny] = outwardNormal(envelope, i);
|
|
396
|
+
if (enx * fnx + eny * fny < Math.cos((25 * Math.PI) / 180))
|
|
397
|
+
continue;
|
|
398
|
+
const dist = segDist((p[0] + q[0]) / 2, (p[1] + q[1]) / 2, a, b);
|
|
399
|
+
// long and close wins: the front's offset is one lot-front length away by the setback
|
|
400
|
+
const score = el - 2 * dist;
|
|
401
|
+
if (score > bestScore) {
|
|
402
|
+
bestScore = score;
|
|
403
|
+
best = i;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
return best;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* The CORNER SIGHT TRIANGLE at a street intersection (the clear-vision /
|
|
410
|
+
* visibility triangle): from the point where the two street lines meet —
|
|
411
|
+
* the right-of-way lines extended through the curb return — `legM` along
|
|
412
|
+
* each, the hypotenuse joining them; nothing over the code's height (30
|
|
413
|
+
* in typically) stands inside it. The leg is the ordinance's (25 ft is the
|
|
414
|
+
* common residential figure; FDOT and the Greenbook size it by speed) —
|
|
415
|
+
* verify locally. `edgeA` and `edgeB` are the two street edges; null when
|
|
416
|
+
* their lines are parallel or the corner lies far from both.
|
|
417
|
+
*/
|
|
418
|
+
export function sightTriangle(points, edgeA, edgeB, legM) {
|
|
419
|
+
const n = points.length;
|
|
420
|
+
const line = (i) => {
|
|
421
|
+
const p = points[((i % n) + n) % n];
|
|
422
|
+
const q = points[(((i + 1) % n) + n) % n];
|
|
423
|
+
const dx = q[0] - p[0];
|
|
424
|
+
const dy = q[1] - p[1];
|
|
425
|
+
const len = Math.hypot(dx, dy) || 1;
|
|
426
|
+
return { p, q, dx: dx / len, dy: dy / len, len };
|
|
427
|
+
};
|
|
428
|
+
const A = line(edgeA);
|
|
429
|
+
const B = line(edgeB);
|
|
430
|
+
const denom = A.dx * B.dy - A.dy * B.dx;
|
|
431
|
+
if (Math.abs(denom) < 1e-6)
|
|
432
|
+
return null;
|
|
433
|
+
const t = ((B.p[0] - A.p[0]) * B.dy - (B.p[1] - A.p[1]) * B.dx) / denom;
|
|
434
|
+
const corner = [A.p[0] + A.dx * t, A.p[1] + A.dy * t];
|
|
435
|
+
// along each line from the corner toward that edge's far end
|
|
436
|
+
const away = (L) => {
|
|
437
|
+
const mid = [(L.p[0] + L.q[0]) / 2, (L.p[1] + L.q[1]) / 2];
|
|
438
|
+
const s = (mid[0] - corner[0]) * L.dx + (mid[1] - corner[1]) * L.dy >= 0 ? 1 : -1;
|
|
439
|
+
return [corner[0] + s * L.dx * legM, corner[1] + s * L.dy * legM];
|
|
440
|
+
};
|
|
441
|
+
const dA = segDist(corner[0], corner[1], A.p, A.q);
|
|
442
|
+
const dB = segDist(corner[0], corner[1], B.p, B.q);
|
|
443
|
+
if (dA > 30 || dB > 30)
|
|
444
|
+
return null;
|
|
445
|
+
return { corner, a: away(A), b: away(B) };
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* The street corners of a lot: pairs of street edges that meet at a real
|
|
449
|
+
* turn (40° or more) directly or across a curb-return run of short edges.
|
|
450
|
+
*/
|
|
451
|
+
export function streetCorners(points, streetEdges) {
|
|
452
|
+
const n = points.length;
|
|
453
|
+
if (n < 3 || streetEdges.length < 2)
|
|
454
|
+
return [];
|
|
455
|
+
const street = new Set(streetEdges.map((i) => ((i % n) + n) % n));
|
|
456
|
+
const runs = arcRuns(points);
|
|
457
|
+
const dir = (i) => {
|
|
458
|
+
const p = points[i];
|
|
459
|
+
const q = points[(i + 1) % n];
|
|
460
|
+
const l = Math.hypot(q[0] - p[0], q[1] - p[1]) || 1;
|
|
461
|
+
return [(q[0] - p[0]) / l, (q[1] - p[1]) / l];
|
|
462
|
+
};
|
|
463
|
+
const out = [];
|
|
464
|
+
for (const i of street) {
|
|
465
|
+
// walk forward past a curb-return run of short edges to the next long edge
|
|
466
|
+
let j = (i + 1) % n;
|
|
467
|
+
let steps = 0;
|
|
468
|
+
while (j !== i && steps < n) {
|
|
469
|
+
const same = runs[j] === runs[i];
|
|
470
|
+
const short = Math.hypot(points[(j + 1) % n][0] - points[j][0], points[(j + 1) % n][1] - points[j][1]) < 4;
|
|
471
|
+
if (!same && !short)
|
|
472
|
+
break;
|
|
473
|
+
j = (j + 1) % n;
|
|
474
|
+
steps += 1;
|
|
475
|
+
}
|
|
476
|
+
if (j === i || !street.has(j))
|
|
477
|
+
continue;
|
|
478
|
+
const a = dir(i);
|
|
479
|
+
const b = dir(j);
|
|
480
|
+
const cosTurn = a[0] * b[0] + a[1] * b[1];
|
|
481
|
+
if (cosTurn > Math.cos((40 * Math.PI) / 180))
|
|
482
|
+
continue;
|
|
483
|
+
out.push([i, j]);
|
|
484
|
+
}
|
|
485
|
+
return out;
|
|
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
|
+
}
|