@pascal-app/core 1.0.6 → 1.1.0

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.
Files changed (1003) hide show
  1. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +31 -0
  2. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
  4. package/dist/agent-operations/__fixtures__/build-room-cases.js +27 -0
  5. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
  6. package/dist/agent-operations/__fixtures__/cases.js +19 -11
  7. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +25 -2
  8. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -1
  9. package/dist/agent-operations/__fixtures__/design-brief-cases.js +509 -66
  10. package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts +30 -0
  11. package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts.map +1 -0
  12. package/dist/agent-operations/__fixtures__/dressing-scenes.js +82 -0
  13. package/dist/agent-operations/__fixtures__/native-materials.d.ts +411 -9
  14. package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
  15. package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -1
  16. package/dist/agent-operations/__fixtures__/notation-cases.js +14 -0
  17. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +13804 -10600
  18. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
  19. package/dist/agent-operations/__fixtures__/room-cases.d.ts +1 -0
  20. package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
  21. package/dist/agent-operations/__fixtures__/room-cases.js +57 -1
  22. package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts +51 -0
  23. package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts.map +1 -0
  24. package/dist/agent-operations/__fixtures__/room-check-scenes.js +121 -0
  25. package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -1
  26. package/dist/agent-operations/__fixtures__/scene-check-cases.js +152 -18
  27. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
  28. package/dist/agent-operations/__fixtures__/search-assets-cases.js +91 -0
  29. package/dist/agent-operations/__fixtures__/site-cases.d.ts +40 -1
  30. package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -1
  31. package/dist/agent-operations/__fixtures__/structure-cases.d.ts +3 -0
  32. package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
  33. package/dist/agent-operations/__fixtures__/structure-cases.js +199 -18
  34. package/dist/agent-operations/__fixtures__/unit-cases.d.ts +6 -0
  35. package/dist/agent-operations/__fixtures__/unit-cases.d.ts.map +1 -0
  36. package/dist/agent-operations/__fixtures__/unit-cases.js +266 -0
  37. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +37 -1
  38. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
  39. package/dist/agent-operations/add-column.d.ts.map +1 -1
  40. package/dist/agent-operations/add-column.js +32 -3
  41. package/dist/agent-operations/add-fence.d.ts.map +1 -1
  42. package/dist/agent-operations/add-fence.js +2 -1
  43. package/dist/agent-operations/add-level.d.ts.map +1 -1
  44. package/dist/agent-operations/add-level.js +4 -4
  45. package/dist/agent-operations/add-object.d.ts +32 -6
  46. package/dist/agent-operations/add-object.d.ts.map +1 -1
  47. package/dist/agent-operations/add-object.js +59 -12
  48. package/dist/agent-operations/add-wall.d.ts +3 -8
  49. package/dist/agent-operations/add-wall.d.ts.map +1 -1
  50. package/dist/agent-operations/add-wall.js +31 -8
  51. package/dist/agent-operations/apply-changes.d.ts.map +1 -1
  52. package/dist/agent-operations/apply-changes.js +2 -1
  53. package/dist/agent-operations/asset-catalog.d.ts +63 -0
  54. package/dist/agent-operations/asset-catalog.d.ts.map +1 -0
  55. package/dist/agent-operations/asset-catalog.js +182 -0
  56. package/dist/agent-operations/asset-views.d.ts +4 -2
  57. package/dist/agent-operations/asset-views.d.ts.map +1 -1
  58. package/dist/agent-operations/asset-views.js +1 -3
  59. package/dist/agent-operations/author-scene-checks.d.ts +38 -0
  60. package/dist/agent-operations/author-scene-checks.d.ts.map +1 -0
  61. package/dist/agent-operations/author-scene-checks.js +266 -0
  62. package/dist/agent-operations/author-scene.d.ts +54 -20
  63. package/dist/agent-operations/author-scene.d.ts.map +1 -1
  64. package/dist/agent-operations/author-scene.js +1163 -196
  65. package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -1
  66. package/dist/agent-operations/authored-scene-merge.js +61 -3
  67. package/dist/agent-operations/batch.d.ts +1 -1
  68. package/dist/agent-operations/batch.d.ts.map +1 -1
  69. package/dist/agent-operations/batch.js +38 -39
  70. package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -1
  71. package/dist/agent-operations/ceiling-object-observations.js +5 -4
  72. package/dist/agent-operations/circulation-geometry.d.ts +14 -0
  73. package/dist/agent-operations/circulation-geometry.d.ts.map +1 -0
  74. package/dist/agent-operations/circulation-geometry.js +151 -0
  75. package/dist/agent-operations/circulation-graph.d.ts +72 -0
  76. package/dist/agent-operations/circulation-graph.d.ts.map +1 -0
  77. package/dist/agent-operations/circulation-graph.js +713 -0
  78. package/dist/agent-operations/circulation-non-spaces.d.ts +10 -0
  79. package/dist/agent-operations/circulation-non-spaces.d.ts.map +1 -0
  80. package/dist/agent-operations/circulation-non-spaces.js +88 -0
  81. package/dist/agent-operations/circulation-spaces.d.ts +5881 -0
  82. package/dist/agent-operations/circulation-spaces.d.ts.map +1 -0
  83. package/dist/agent-operations/circulation-spaces.js +368 -0
  84. package/dist/agent-operations/collections.d.ts.map +1 -1
  85. package/dist/agent-operations/collections.js +9 -7
  86. package/dist/agent-operations/corner-window.d.ts.map +1 -1
  87. package/dist/agent-operations/corner-window.js +2 -4
  88. package/dist/agent-operations/create-roof.d.ts.map +1 -1
  89. package/dist/agent-operations/create-roof.js +5 -7
  90. package/dist/agent-operations/create-room.d.ts +4 -1
  91. package/dist/agent-operations/create-room.d.ts.map +1 -1
  92. package/dist/agent-operations/create-room.js +7 -4
  93. package/dist/agent-operations/create-stair.js +2 -2
  94. package/dist/agent-operations/design-brief.d.ts +13 -7
  95. package/dist/agent-operations/design-brief.d.ts.map +1 -1
  96. package/dist/agent-operations/design-brief.js +172 -92
  97. package/dist/agent-operations/door-clearance.d.ts +68 -8
  98. package/dist/agent-operations/door-clearance.d.ts.map +1 -1
  99. package/dist/agent-operations/door-clearance.js +127 -20
  100. package/dist/agent-operations/dress-targets.d.ts +23 -0
  101. package/dist/agent-operations/dress-targets.d.ts.map +1 -0
  102. package/dist/agent-operations/dress-targets.js +34 -0
  103. package/dist/agent-operations/duplicate-node.d.ts +14 -0
  104. package/dist/agent-operations/duplicate-node.d.ts.map +1 -0
  105. package/dist/agent-operations/duplicate-node.js +173 -0
  106. package/dist/agent-operations/find-by-type.d.ts.map +1 -1
  107. package/dist/agent-operations/find-by-type.js +3 -0
  108. package/dist/agent-operations/furnish-room.d.ts +2 -0
  109. package/dist/agent-operations/furnish-room.d.ts.map +1 -1
  110. package/dist/agent-operations/furnish-room.js +15 -4
  111. package/dist/agent-operations/furniture-kind.d.ts +28 -1
  112. package/dist/agent-operations/furniture-kind.d.ts.map +1 -1
  113. package/dist/agent-operations/furniture-kind.js +105 -6
  114. package/dist/agent-operations/ground-reader.d.ts +10 -0
  115. package/dist/agent-operations/ground-reader.d.ts.map +1 -0
  116. package/dist/agent-operations/ground-reader.js +25 -0
  117. package/dist/agent-operations/index.d.ts +118 -12
  118. package/dist/agent-operations/index.d.ts.map +1 -1
  119. package/dist/agent-operations/index.js +26 -1
  120. package/dist/agent-operations/item-solids.d.ts +39 -0
  121. package/dist/agent-operations/item-solids.d.ts.map +1 -0
  122. package/dist/agent-operations/item-solids.js +128 -0
  123. package/dist/agent-operations/layout-clearance.d.ts +91 -11
  124. package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
  125. package/dist/agent-operations/layout-clearance.js +280 -73
  126. package/dist/agent-operations/level-height-fill.d.ts.map +1 -1
  127. package/dist/agent-operations/level-height-fill.js +7 -1
  128. package/dist/agent-operations/level-reads.d.ts +5 -0
  129. package/dist/agent-operations/level-reads.d.ts.map +1 -1
  130. package/dist/agent-operations/level-reads.js +39 -3
  131. package/dist/agent-operations/list-levels.d.ts.map +1 -1
  132. package/dist/agent-operations/list-levels.js +2 -4
  133. package/dist/agent-operations/move-node.d.ts +12 -0
  134. package/dist/agent-operations/move-node.d.ts.map +1 -0
  135. package/dist/agent-operations/move-node.js +28 -0
  136. package/dist/agent-operations/move-plan.d.ts +28 -0
  137. package/dist/agent-operations/move-plan.d.ts.map +1 -0
  138. package/dist/agent-operations/move-plan.js +259 -0
  139. package/dist/agent-operations/node-patch.d.ts.map +1 -1
  140. package/dist/agent-operations/node-patch.js +15 -0
  141. package/dist/agent-operations/paint.d.ts +3 -1
  142. package/dist/agent-operations/paint.d.ts.map +1 -1
  143. package/dist/agent-operations/paint.js +14 -1
  144. package/dist/agent-operations/photo-elevation.d.ts.map +1 -1
  145. package/dist/agent-operations/photo-elevation.js +2 -1
  146. package/dist/agent-operations/place-in-room.d.ts.map +1 -1
  147. package/dist/agent-operations/place-in-room.js +1 -0
  148. package/dist/agent-operations/place-items.d.ts.map +1 -1
  149. package/dist/agent-operations/place-items.js +3 -4
  150. package/dist/agent-operations/plan-clearance.d.ts +28 -0
  151. package/dist/agent-operations/plan-clearance.d.ts.map +1 -0
  152. package/dist/agent-operations/plan-clearance.js +47 -0
  153. package/dist/agent-operations/plan-geometry.d.ts +2 -0
  154. package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
  155. package/dist/agent-operations/plan-geometry.js +10 -0
  156. package/dist/agent-operations/project-files.d.ts +10 -0
  157. package/dist/agent-operations/project-files.d.ts.map +1 -1
  158. package/dist/agent-operations/reachability.d.ts +41 -0
  159. package/dist/agent-operations/reachability.d.ts.map +1 -0
  160. package/dist/agent-operations/reachability.js +199 -0
  161. package/dist/agent-operations/room-checks.d.ts +60 -0
  162. package/dist/agent-operations/room-checks.d.ts.map +1 -0
  163. package/dist/agent-operations/room-checks.js +226 -0
  164. package/dist/agent-operations/room-faces.d.ts +30 -0
  165. package/dist/agent-operations/room-faces.d.ts.map +1 -0
  166. package/dist/agent-operations/room-faces.js +31 -0
  167. package/dist/agent-operations/room-findings.d.ts +5 -2
  168. package/dist/agent-operations/room-findings.d.ts.map +1 -1
  169. package/dist/agent-operations/room-findings.js +30 -0
  170. package/dist/agent-operations/room-finishes.d.ts +87 -0
  171. package/dist/agent-operations/room-finishes.d.ts.map +1 -0
  172. package/dist/agent-operations/room-finishes.js +193 -0
  173. package/dist/agent-operations/room-floor-script.d.ts +3 -3
  174. package/dist/agent-operations/room-floor-script.js +3 -3
  175. package/dist/agent-operations/room-readings.d.ts +90 -0
  176. package/dist/agent-operations/room-readings.d.ts.map +1 -0
  177. package/dist/agent-operations/room-readings.js +369 -0
  178. package/dist/agent-operations/room-tile.d.ts +15 -0
  179. package/dist/agent-operations/room-tile.d.ts.map +1 -0
  180. package/dist/agent-operations/room-tile.js +30 -0
  181. package/dist/agent-operations/room-wet.d.ts +55 -0
  182. package/dist/agent-operations/room-wet.d.ts.map +1 -0
  183. package/dist/agent-operations/room-wet.js +203 -0
  184. package/dist/agent-operations/scene-check-policy.d.ts +5 -0
  185. package/dist/agent-operations/scene-check-policy.d.ts.map +1 -0
  186. package/dist/agent-operations/scene-check-policy.js +24 -0
  187. package/dist/agent-operations/scene-checkpoint.d.ts +10 -0
  188. package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -1
  189. package/dist/agent-operations/scene-checkpoint.js +31 -0
  190. package/dist/agent-operations/scene-issue-groups.d.ts +17 -0
  191. package/dist/agent-operations/scene-issue-groups.d.ts.map +1 -0
  192. package/dist/agent-operations/scene-issue-groups.js +71 -0
  193. package/dist/agent-operations/scene-materials.d.ts +23 -0
  194. package/dist/agent-operations/scene-materials.d.ts.map +1 -1
  195. package/dist/agent-operations/scene-materials.js +41 -0
  196. package/dist/agent-operations/scene-queries.d.ts +2525 -1723
  197. package/dist/agent-operations/scene-queries.d.ts.map +1 -1
  198. package/dist/agent-operations/scene-queries.js +3 -3
  199. package/dist/agent-operations/scene-review.d.ts.map +1 -1
  200. package/dist/agent-operations/scene-review.js +3 -2
  201. package/dist/agent-operations/scene-view.d.ts.map +1 -1
  202. package/dist/agent-operations/scene-view.js +91 -21
  203. package/dist/agent-operations/search-assets.d.ts +10 -6
  204. package/dist/agent-operations/search-assets.d.ts.map +1 -1
  205. package/dist/agent-operations/search-assets.js +37 -22
  206. package/dist/agent-operations/set-checkpoint.d.ts.map +1 -1
  207. package/dist/agent-operations/set-checkpoint.js +1 -0
  208. package/dist/agent-operations/set-ground-level.d.ts +1 -1
  209. package/dist/agent-operations/set-ground-level.d.ts.map +1 -1
  210. package/dist/agent-operations/set-ground-level.js +3 -14
  211. package/dist/agent-operations/site.js +3 -2
  212. package/dist/agent-operations/slab-surface-script.d.ts +25 -0
  213. package/dist/agent-operations/slab-surface-script.d.ts.map +1 -0
  214. package/dist/agent-operations/slab-surface-script.js +60 -0
  215. package/dist/agent-operations/stair-plan-footprint.d.ts +9 -0
  216. package/dist/agent-operations/stair-plan-footprint.d.ts.map +1 -0
  217. package/dist/agent-operations/stair-plan-footprint.js +50 -0
  218. package/dist/agent-operations/types.d.ts +10 -5
  219. package/dist/agent-operations/types.d.ts.map +1 -1
  220. package/dist/agent-operations/units.d.ts +26 -0
  221. package/dist/agent-operations/units.d.ts.map +1 -0
  222. package/dist/agent-operations/units.js +110 -0
  223. package/dist/agent-operations/unreachable-rooms-check.d.ts +17 -0
  224. package/dist/agent-operations/unreachable-rooms-check.d.ts.map +1 -0
  225. package/dist/agent-operations/unreachable-rooms-check.js +35 -0
  226. package/dist/agent-operations/usage-checks.d.ts +2 -0
  227. package/dist/agent-operations/usage-checks.d.ts.map +1 -0
  228. package/dist/agent-operations/usage-checks.js +12 -0
  229. package/dist/agent-operations/verify-scene.d.ts +8 -11
  230. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  231. package/dist/agent-operations/verify-scene.js +59 -13
  232. package/dist/agent-operations/wall-face-defaults.d.ts +44 -0
  233. package/dist/agent-operations/wall-face-defaults.d.ts.map +1 -0
  234. package/dist/agent-operations/wall-face-defaults.js +229 -0
  235. package/dist/agent-operations/wall-joins.d.ts +119 -0
  236. package/dist/agent-operations/wall-joins.d.ts.map +1 -0
  237. package/dist/agent-operations/wall-joins.js +308 -0
  238. package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
  239. package/dist/agent-operations/wall-object-observations.js +5 -7
  240. package/dist/agent-operations/wall-skirting.d.ts.map +1 -1
  241. package/dist/agent-operations/wall-skirting.js +2 -0
  242. package/dist/agent-operations/wall-type.d.ts +49 -0
  243. package/dist/agent-operations/wall-type.d.ts.map +1 -0
  244. package/dist/agent-operations/wall-type.js +31 -0
  245. package/dist/agent-operations/zone-coverage.d.ts +85 -0
  246. package/dist/agent-operations/zone-coverage.d.ts.map +1 -0
  247. package/dist/agent-operations/zone-coverage.js +208 -0
  248. package/dist/agent-tools/add-object.d.ts +31 -0
  249. package/dist/agent-tools/add-object.d.ts.map +1 -1
  250. package/dist/agent-tools/add-object.js +44 -7
  251. package/dist/agent-tools/assets.d.ts +4 -0
  252. package/dist/agent-tools/assets.d.ts.map +1 -1
  253. package/dist/agent-tools/assets.js +11 -1
  254. package/dist/agent-tools/author-scene.d.ts +810 -15
  255. package/dist/agent-tools/author-scene.d.ts.map +1 -1
  256. package/dist/agent-tools/author-scene.js +275 -34
  257. package/dist/agent-tools/batch.d.ts +1 -1
  258. package/dist/agent-tools/batch.d.ts.map +1 -1
  259. package/dist/agent-tools/batch.js +5 -1
  260. package/dist/agent-tools/checkpoints.js +1 -1
  261. package/dist/agent-tools/columns.d.ts +14 -0
  262. package/dist/agent-tools/columns.d.ts.map +1 -1
  263. package/dist/agent-tools/columns.js +14 -2
  264. package/dist/agent-tools/contract.d.ts +10 -0
  265. package/dist/agent-tools/contract.d.ts.map +1 -1
  266. package/dist/agent-tools/contract.js +5 -1
  267. package/dist/agent-tools/corner-window.d.ts +1 -0
  268. package/dist/agent-tools/corner-window.d.ts.map +1 -1
  269. package/dist/agent-tools/corner-window.js +1 -1
  270. package/dist/agent-tools/create-room.d.ts +85 -0
  271. package/dist/agent-tools/create-room.d.ts.map +1 -1
  272. package/dist/agent-tools/create-room.js +8 -1
  273. package/dist/agent-tools/design-brief.d.ts +513 -7
  274. package/dist/agent-tools/design-brief.d.ts.map +1 -1
  275. package/dist/agent-tools/design-brief.js +192 -14
  276. package/dist/agent-tools/designs.js +1 -1
  277. package/dist/agent-tools/find-by-type.js +1 -1
  278. package/dist/agent-tools/index.d.ts +658 -10
  279. package/dist/agent-tools/index.d.ts.map +1 -1
  280. package/dist/agent-tools/index.js +9 -1
  281. package/dist/agent-tools/levels.js +4 -4
  282. package/dist/agent-tools/move-duplicate.d.ts +65 -0
  283. package/dist/agent-tools/move-duplicate.d.ts.map +1 -0
  284. package/dist/agent-tools/move-duplicate.js +68 -0
  285. package/dist/agent-tools/paint.d.ts +6 -0
  286. package/dist/agent-tools/paint.d.ts.map +1 -1
  287. package/dist/agent-tools/paint.js +7 -3
  288. package/dist/agent-tools/photo-elevation.js +1 -1
  289. package/dist/agent-tools/project-files.d.ts +2 -2
  290. package/dist/agent-tools/project-files.d.ts.map +1 -1
  291. package/dist/agent-tools/project-files.js +1 -1
  292. package/dist/agent-tools/refusal.d.ts +9 -1
  293. package/dist/agent-tools/refusal.d.ts.map +1 -1
  294. package/dist/agent-tools/refusal.js +5 -1
  295. package/dist/agent-tools/roofs.js +1 -1
  296. package/dist/agent-tools/room-structure.d.ts +60 -0
  297. package/dist/agent-tools/room-structure.d.ts.map +1 -1
  298. package/dist/agent-tools/room-structure.js +20 -1
  299. package/dist/agent-tools/search-materials.d.ts +1 -0
  300. package/dist/agent-tools/search-materials.d.ts.map +1 -1
  301. package/dist/agent-tools/site.js +1 -1
  302. package/dist/agent-tools/stairs.js +1 -1
  303. package/dist/agent-tools/units.d.ts +84 -0
  304. package/dist/agent-tools/units.d.ts.map +1 -0
  305. package/dist/agent-tools/units.js +54 -0
  306. package/dist/agent-tools/verify-scene-usage.d.ts +44 -0
  307. package/dist/agent-tools/verify-scene-usage.d.ts.map +1 -0
  308. package/dist/agent-tools/verify-scene-usage.js +146 -0
  309. package/dist/agent-tools/verify-scene.d.ts +12 -1
  310. package/dist/agent-tools/verify-scene.d.ts.map +1 -1
  311. package/dist/agent-tools/verify-scene.js +183 -3
  312. package/dist/agent-tools/view-scene.d.ts +3 -0
  313. package/dist/agent-tools/view-scene.d.ts.map +1 -1
  314. package/dist/agent-tools/view-scene.js +4 -1
  315. package/dist/agent-tools/wall-openings.d.ts +121 -2
  316. package/dist/agent-tools/wall-openings.d.ts.map +1 -1
  317. package/dist/agent-tools/wall-openings.js +123 -18
  318. package/dist/agent-tools/walls.d.ts +30 -0
  319. package/dist/agent-tools/walls.d.ts.map +1 -1
  320. package/dist/agent-tools/walls.js +54 -2
  321. package/dist/building/__fixtures__/wall-opening-cases.d.ts +181 -35
  322. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
  323. package/dist/building/__fixtures__/wall-opening-cases.js +13 -0
  324. package/dist/building/code-profile.d.ts +231 -0
  325. package/dist/building/code-profile.d.ts.map +1 -0
  326. package/dist/building/code-profile.js +208 -0
  327. package/dist/building/corner-window.d.ts +2 -2
  328. package/dist/building/corner-window.d.ts.map +1 -1
  329. package/dist/building/corner-window.js +11 -2
  330. package/dist/building/door-types.d.ts +1 -0
  331. package/dist/building/door-types.d.ts.map +1 -1
  332. package/dist/building/door-types.js +2 -0
  333. package/dist/building/floor-item-fit.d.ts.map +1 -1
  334. package/dist/building/floor-item-fit.js +2 -4
  335. package/dist/building/ground-level.d.ts +1 -3
  336. package/dist/building/ground-level.d.ts.map +1 -1
  337. package/dist/building/ground-level.js +3 -5
  338. package/dist/building/index.d.ts +2 -0
  339. package/dist/building/index.d.ts.map +1 -1
  340. package/dist/building/index.js +2 -0
  341. package/dist/building/level-duplication.d.ts +4667 -3065
  342. package/dist/building/level-duplication.d.ts.map +1 -1
  343. package/dist/building/level-insertion.d.ts +1 -1
  344. package/dist/building/level-wall-copy.d.ts +24 -0
  345. package/dist/building/level-wall-copy.d.ts.map +1 -0
  346. package/dist/building/level-wall-copy.js +53 -0
  347. package/dist/building/merge-windows.d.ts.map +1 -1
  348. package/dist/building/merge-windows.js +5 -3
  349. package/dist/building/opening-style-presets.d.ts +2 -0
  350. package/dist/building/opening-style-presets.d.ts.map +1 -1
  351. package/dist/building/opening-style-presets.js +26 -5
  352. package/dist/building/room-use.d.ts +26 -0
  353. package/dist/building/room-use.d.ts.map +1 -0
  354. package/dist/building/room-use.js +102 -0
  355. package/dist/building/wall-openings.d.ts +134 -12
  356. package/dist/building/wall-openings.d.ts.map +1 -1
  357. package/dist/building/wall-openings.js +182 -41
  358. package/dist/building/window-types.d.ts +1 -0
  359. package/dist/building/window-types.d.ts.map +1 -1
  360. package/dist/building/window-types.js +3 -0
  361. package/dist/coherence/__fixtures__/enclosure-scenes.d.ts +84 -0
  362. package/dist/coherence/__fixtures__/enclosure-scenes.d.ts.map +1 -0
  363. package/dist/coherence/__fixtures__/enclosure-scenes.js +44 -0
  364. package/dist/commands/structure/attached-walls.d.ts +16 -0
  365. package/dist/commands/structure/attached-walls.d.ts.map +1 -0
  366. package/dist/commands/structure/attached-walls.js +53 -0
  367. package/dist/commands/structure/index.d.ts +3 -0
  368. package/dist/commands/structure/index.d.ts.map +1 -1
  369. package/dist/commands/structure/index.js +3 -0
  370. package/dist/commands/structure/move-separators.d.ts +62 -0
  371. package/dist/commands/structure/move-separators.d.ts.map +1 -0
  372. package/dist/commands/structure/move-separators.js +346 -0
  373. package/dist/commands/structure/set-floor-foundation.d.ts +5 -0
  374. package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -1
  375. package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -1
  376. package/dist/commands/structure/set-wall-geometry.js +44 -11
  377. package/dist/commands/structure/set-zone-intent.d.ts +26 -0
  378. package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
  379. package/dist/commands/structure/set-zone-intent.js +107 -2
  380. package/dist/commands/structure/shared.d.ts +889 -88
  381. package/dist/commands/structure/shared.d.ts.map +1 -1
  382. package/dist/commands/structure/wall-overlap.d.ts +45 -0
  383. package/dist/commands/structure/wall-overlap.d.ts.map +1 -0
  384. package/dist/commands/structure/wall-overlap.js +289 -0
  385. package/dist/commands/structure/zone-wall-merge.d.ts +2897 -1938
  386. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
  387. package/dist/contracts/reference-discovery.d.ts +2 -2
  388. package/dist/contracts/reference-discovery.d.ts.map +1 -1
  389. package/dist/contracts/reference-discovery.js +5 -3
  390. package/dist/contracts/reference-inventory.d.ts.map +1 -1
  391. package/dist/contracts/reference-inventory.js +75 -25
  392. package/dist/events/bus.d.ts +15 -2
  393. package/dist/events/bus.d.ts.map +1 -1
  394. package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts +40 -0
  395. package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts.map +1 -0
  396. package/dist/hooks/spatial-grid/built-in-floor-placed.js +220 -0
  397. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  398. package/dist/hooks/spatial-grid/floor-placed-elevation.js +13 -7
  399. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +62 -2
  400. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  401. package/dist/hooks/spatial-grid/spatial-grid-manager.js +207 -36
  402. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2915 -2114
  403. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  404. package/dist/hooks/spatial-grid/spatial-grid-sync.js +32 -5
  405. package/dist/hooks/spatial-grid/support-host-patch.js +10 -10
  406. package/dist/i18n/format.d.ts +41 -0
  407. package/dist/i18n/format.d.ts.map +1 -0
  408. package/dist/i18n/format.js +124 -0
  409. package/dist/i18n/index.d.ts +5 -0
  410. package/dist/i18n/index.d.ts.map +1 -0
  411. package/dist/i18n/index.js +3 -0
  412. package/dist/i18n/registry.d.ts +78 -0
  413. package/dist/i18n/registry.d.ts.map +1 -0
  414. package/dist/i18n/registry.js +252 -0
  415. package/dist/i18n/use-translate.d.ts +16 -0
  416. package/dist/i18n/use-translate.d.ts.map +1 -0
  417. package/dist/i18n/use-translate.js +23 -0
  418. package/dist/index.d.ts +43 -20
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +42 -19
  421. package/dist/lib/__fixtures__/mezzanine.d.ts +10900 -8225
  422. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
  423. package/dist/lib/absorb-wall-separators.d.ts +1629 -828
  424. package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
  425. package/dist/lib/beam.d.ts +137 -0
  426. package/dist/lib/beam.d.ts.map +1 -0
  427. package/dist/lib/beam.js +297 -0
  428. package/dist/lib/below-grade-footprints.d.ts +13 -5
  429. package/dist/lib/below-grade-footprints.d.ts.map +1 -1
  430. package/dist/lib/below-grade-footprints.js +53 -10
  431. package/dist/lib/build-mode.d.ts +11 -0
  432. package/dist/lib/build-mode.d.ts.map +1 -0
  433. package/dist/lib/build-mode.js +24 -0
  434. package/dist/lib/build-up.d.ts +89 -0
  435. package/dist/lib/build-up.d.ts.map +1 -0
  436. package/dist/lib/build-up.js +216 -0
  437. package/dist/lib/corner-pair.d.ts +207 -4
  438. package/dist/lib/corner-pair.d.ts.map +1 -1
  439. package/dist/lib/deck-boards.d.ts +80 -0
  440. package/dist/lib/deck-boards.d.ts.map +1 -0
  441. package/dist/lib/deck-boards.js +184 -0
  442. package/dist/lib/deck-framing.d.ts +150 -0
  443. package/dist/lib/deck-framing.d.ts.map +1 -0
  444. package/dist/lib/deck-framing.js +515 -0
  445. package/dist/lib/deepest-drawn.d.ts +3 -6
  446. package/dist/lib/deepest-drawn.d.ts.map +1 -1
  447. package/dist/lib/deepest-drawn.js +4 -8
  448. package/dist/lib/door-interaction.d.ts +14 -0
  449. package/dist/lib/door-interaction.d.ts.map +1 -0
  450. package/dist/lib/door-interaction.js +62 -0
  451. package/dist/lib/door-opening.d.ts +19 -0
  452. package/dist/lib/door-opening.d.ts.map +1 -0
  453. package/dist/lib/door-opening.js +27 -0
  454. package/dist/lib/door-operation.d.ts +2 -0
  455. package/dist/lib/door-operation.d.ts.map +1 -1
  456. package/dist/lib/door-operation.js +4 -0
  457. package/dist/lib/elevator-support.d.ts +15 -0
  458. package/dist/lib/elevator-support.d.ts.map +1 -0
  459. package/dist/lib/elevator-support.js +40 -0
  460. package/dist/lib/exterior-wall-loops.d.ts.map +1 -1
  461. package/dist/lib/exterior-wall-loops.js +2 -1
  462. package/dist/lib/finish-script.d.ts +5 -5
  463. package/dist/lib/finish-script.d.ts.map +1 -1
  464. package/dist/lib/finish-script.js +12 -5
  465. package/dist/lib/floor-footprint-name.d.ts +17 -0
  466. package/dist/lib/floor-footprint-name.d.ts.map +1 -1
  467. package/dist/lib/floor-footprint-name.js +17 -4
  468. package/dist/lib/floor-intent-changes.d.ts.map +1 -1
  469. package/dist/lib/floor-intent-changes.js +66 -39
  470. package/dist/lib/floor-opening-footprints.d.ts +1 -1
  471. package/dist/lib/floor-opening-footprints.d.ts.map +1 -1
  472. package/dist/lib/floor-opening-footprints.js +10 -4
  473. package/dist/lib/floor-plate-paint.d.ts +2 -0
  474. package/dist/lib/floor-plate-paint.d.ts.map +1 -1
  475. package/dist/lib/floor-plate-paint.js +12 -0
  476. package/dist/lib/floor-plates.d.ts +250 -0
  477. package/dist/lib/floor-plates.d.ts.map +1 -1
  478. package/dist/lib/floor-plates.js +43 -4
  479. package/dist/lib/floor-script.d.ts +35 -6
  480. package/dist/lib/floor-script.d.ts.map +1 -1
  481. package/dist/lib/floor-script.js +96 -16
  482. package/dist/lib/foundation-construction.d.ts +4 -13
  483. package/dist/lib/foundation-construction.d.ts.map +1 -1
  484. package/dist/lib/foundation-construction.js +4 -14
  485. package/dist/lib/foundation-standard.d.ts +2 -3
  486. package/dist/lib/foundation-standard.d.ts.map +1 -1
  487. package/dist/lib/foundation-standard.js +2 -3
  488. package/dist/lib/foundation-wall.d.ts +1 -2
  489. package/dist/lib/foundation-wall.d.ts.map +1 -1
  490. package/dist/lib/foundation-wall.js +1 -2
  491. package/dist/lib/framing-post.d.ts +91 -0
  492. package/dist/lib/framing-post.d.ts.map +1 -0
  493. package/dist/lib/framing-post.js +174 -0
  494. package/dist/lib/geometry-script-node.d.ts +11 -0
  495. package/dist/lib/geometry-script-node.d.ts.map +1 -1
  496. package/dist/lib/geometry-script-node.js +35 -0
  497. package/dist/lib/grade-standing.d.ts +16 -2
  498. package/dist/lib/grade-standing.d.ts.map +1 -1
  499. package/dist/lib/grade-standing.js +129 -9
  500. package/dist/lib/ground-seat.d.ts +2 -22
  501. package/dist/lib/ground-seat.d.ts.map +1 -1
  502. package/dist/lib/ground-seat.js +2 -17
  503. package/dist/lib/ground-window.d.ts +2 -1
  504. package/dist/lib/ground-window.d.ts.map +1 -1
  505. package/dist/lib/ground-window.js +5 -2
  506. package/dist/lib/hierarchy.d.ts +19 -0
  507. package/dist/lib/hierarchy.d.ts.map +1 -0
  508. package/dist/lib/hierarchy.js +53 -0
  509. package/dist/lib/level-footprints.d.ts +2 -0
  510. package/dist/lib/level-footprints.d.ts.map +1 -1
  511. package/dist/lib/level-footprints.js +7 -0
  512. package/dist/lib/opening-casing.d.ts +67 -0
  513. package/dist/lib/opening-casing.d.ts.map +1 -0
  514. package/dist/lib/opening-casing.js +131 -0
  515. package/dist/lib/opening-exterior-face.d.ts +6 -0
  516. package/dist/lib/opening-exterior-face.d.ts.map +1 -0
  517. package/dist/lib/opening-exterior-face.js +15 -0
  518. package/dist/lib/opening-floor-datum.d.ts +11 -5
  519. package/dist/lib/opening-floor-datum.d.ts.map +1 -1
  520. package/dist/lib/opening-floor-datum.js +40 -8
  521. package/dist/lib/opening-frame-depth.d.ts +18 -0
  522. package/dist/lib/opening-frame-depth.d.ts.map +1 -0
  523. package/dist/lib/opening-frame-depth.js +22 -0
  524. package/dist/lib/outdoor-room.d.ts +32 -0
  525. package/dist/lib/outdoor-room.d.ts.map +1 -0
  526. package/dist/lib/outdoor-room.js +66 -0
  527. package/dist/lib/own-floor-intent.d.ts.map +1 -1
  528. package/dist/lib/own-floor-intent.js +2 -2
  529. package/dist/lib/plate-surface.d.ts +8 -0
  530. package/dist/lib/plate-surface.d.ts.map +1 -1
  531. package/dist/lib/plate-surface.js +53 -3
  532. package/dist/lib/polygon-boolean.d.ts.map +1 -1
  533. package/dist/lib/polygon-boolean.js +2 -1
  534. package/dist/lib/porch-framing-sync.d.ts +46 -0
  535. package/dist/lib/porch-framing-sync.d.ts.map +1 -0
  536. package/dist/lib/porch-framing-sync.js +206 -0
  537. package/dist/lib/porch-framing.d.ts +44 -0
  538. package/dist/lib/porch-framing.d.ts.map +1 -0
  539. package/dist/lib/porch-framing.js +159 -0
  540. package/dist/lib/railing-rooms.d.ts +13 -0
  541. package/dist/lib/railing-rooms.d.ts.map +1 -0
  542. package/dist/lib/railing-rooms.js +37 -0
  543. package/dist/lib/roof-eave.d.ts +135 -0
  544. package/dist/lib/roof-eave.d.ts.map +1 -0
  545. package/dist/lib/roof-eave.js +186 -0
  546. package/dist/lib/room-floor-elevation.d.ts +12 -0
  547. package/dist/lib/room-floor-elevation.d.ts.map +1 -0
  548. package/dist/lib/room-floor-elevation.js +41 -0
  549. package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
  550. package/dist/lib/room-floor-feasibility.js +1 -1
  551. package/dist/lib/room-floor-plate.d.ts +3 -1
  552. package/dist/lib/room-floor-plate.d.ts.map +1 -1
  553. package/dist/lib/room-floor-plate.js +7 -0
  554. package/dist/lib/space-detection.d.ts +13 -0
  555. package/dist/lib/space-detection.d.ts.map +1 -1
  556. package/dist/lib/space-detection.js +113 -24
  557. package/dist/lib/structure-kernel.d.ts +22 -9
  558. package/dist/lib/structure-kernel.d.ts.map +1 -1
  559. package/dist/lib/structure-kernel.js +146 -28
  560. package/dist/lib/structure-reconcile.d.ts +1 -1
  561. package/dist/lib/structure-reconcile.d.ts.map +1 -1
  562. package/dist/lib/structure-reconcile.js +7 -4
  563. package/dist/lib/surface-intent.d.ts +10 -0
  564. package/dist/lib/surface-intent.d.ts.map +1 -0
  565. package/dist/lib/surface-intent.js +18 -0
  566. package/dist/lib/terrain-source.d.ts.map +1 -1
  567. package/dist/lib/terrain-source.js +2 -1
  568. package/dist/lib/wall-face-script.d.ts.map +1 -1
  569. package/dist/lib/wall-face-script.js +8 -5
  570. package/dist/lib/window-interaction.d.ts +16 -0
  571. package/dist/lib/window-interaction.d.ts.map +1 -0
  572. package/dist/lib/window-interaction.js +82 -0
  573. package/dist/lib/zone-quantities.js +1 -1
  574. package/dist/material-kinds.d.ts +1 -1
  575. package/dist/material-kinds.d.ts.map +1 -1
  576. package/dist/material-kinds.js +1 -0
  577. package/dist/material-library.d.ts +15 -0
  578. package/dist/material-library.d.ts.map +1 -1
  579. package/dist/material-library.js +458 -59
  580. package/dist/node-slots/column.d.ts +5 -0
  581. package/dist/node-slots/column.d.ts.map +1 -1
  582. package/dist/node-slots/column.js +10 -0
  583. package/dist/node-slots/door.d.ts +3 -4
  584. package/dist/node-slots/door.d.ts.map +1 -1
  585. package/dist/node-slots/door.js +4 -3
  586. package/dist/node-slots/wall.d.ts.map +1 -1
  587. package/dist/node-slots/wall.js +21 -3
  588. package/dist/node-slots/window.d.ts +2 -2
  589. package/dist/node-slots/window.d.ts.map +1 -1
  590. package/dist/node-slots/window.js +6 -1
  591. package/dist/procedural-items/design.d.ts +8 -0
  592. package/dist/procedural-items/design.d.ts.map +1 -1
  593. package/dist/procedural-items/design.js +169 -21
  594. package/dist/procedural-items/motion-controller.d.ts +2 -0
  595. package/dist/procedural-items/motion-controller.d.ts.map +1 -1
  596. package/dist/procedural-items/motion-controller.js +2 -1
  597. package/dist/registry/index.d.ts +3 -3
  598. package/dist/registry/index.d.ts.map +1 -1
  599. package/dist/registry/index.js +2 -2
  600. package/dist/registry/mechanism.d.ts +4 -1
  601. package/dist/registry/mechanism.d.ts.map +1 -1
  602. package/dist/registry/mechanism.js +10 -0
  603. package/dist/registry/registry.d.ts +5 -0
  604. package/dist/registry/registry.d.ts.map +1 -1
  605. package/dist/registry/registry.js +10 -0
  606. package/dist/registry/types.d.ts +89 -23
  607. package/dist/registry/types.d.ts.map +1 -1
  608. package/dist/runtime/__fixtures__/live-scene.d.ts +14 -0
  609. package/dist/runtime/__fixtures__/live-scene.d.ts.map +1 -0
  610. package/dist/runtime/__fixtures__/live-scene.js +64 -0
  611. package/dist/runtime/apply.d.ts +42 -0
  612. package/dist/runtime/apply.d.ts.map +1 -0
  613. package/dist/runtime/apply.js +274 -0
  614. package/dist/runtime/dependencies.d.ts +97 -0
  615. package/dist/runtime/dependencies.d.ts.map +1 -0
  616. package/dist/runtime/dependencies.js +42 -0
  617. package/dist/runtime/ids.d.ts +11 -0
  618. package/dist/runtime/ids.d.ts.map +1 -0
  619. package/dist/runtime/ids.js +80 -0
  620. package/dist/runtime/index.d.ts +14 -0
  621. package/dist/runtime/index.d.ts.map +1 -0
  622. package/dist/runtime/index.js +11 -0
  623. package/dist/runtime/node-queries.d.ts +16 -0
  624. package/dist/runtime/node-queries.d.ts.map +1 -0
  625. package/dist/runtime/node-queries.js +30 -0
  626. package/dist/runtime/patch.d.ts +26 -0
  627. package/dist/runtime/patch.d.ts.map +1 -0
  628. package/dist/runtime/patch.js +165 -0
  629. package/dist/runtime/reader.d.ts +104 -0
  630. package/dist/runtime/reader.d.ts.map +1 -0
  631. package/dist/runtime/reader.js +455 -0
  632. package/dist/runtime/scene-runtime.d.ts +112 -0
  633. package/dist/runtime/scene-runtime.d.ts.map +1 -0
  634. package/dist/runtime/scene-runtime.js +302 -0
  635. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  636. package/dist/schema/__fixtures__/node-fixtures.js +1 -0
  637. package/dist/schema/assembly.d.ts +3 -0
  638. package/dist/schema/assembly.d.ts.map +1 -1
  639. package/dist/schema/assembly.js +13 -0
  640. package/dist/schema/asset-url.d.ts +37 -2
  641. package/dist/schema/asset-url.d.ts.map +1 -1
  642. package/dist/schema/asset-url.js +80 -11
  643. package/dist/schema/base.d.ts +8 -0
  644. package/dist/schema/base.d.ts.map +1 -1
  645. package/dist/schema/base.js +19 -1
  646. package/dist/schema/build-up.d.ts +247 -0
  647. package/dist/schema/build-up.d.ts.map +1 -0
  648. package/dist/schema/build-up.js +83 -0
  649. package/dist/schema/geometry-source.d.ts +80 -0
  650. package/dist/schema/geometry-source.d.ts.map +1 -1
  651. package/dist/schema/geometry-source.js +38 -0
  652. package/dist/schema/index.d.ts +12 -7
  653. package/dist/schema/index.d.ts.map +1 -1
  654. package/dist/schema/index.js +12 -6
  655. package/dist/schema/material.d.ts +5 -0
  656. package/dist/schema/material.d.ts.map +1 -1
  657. package/dist/schema/material.js +6 -0
  658. package/dist/schema/nodes/beam.d.ts +264 -0
  659. package/dist/schema/nodes/beam.d.ts.map +1 -0
  660. package/dist/schema/nodes/beam.js +139 -0
  661. package/dist/schema/nodes/box-vent.d.ts +5 -0
  662. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  663. package/dist/schema/nodes/cabinet.d.ts +10 -0
  664. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  665. package/dist/schema/nodes/ceiling.d.ts +48 -0
  666. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  667. package/dist/schema/nodes/ceiling.js +5 -0
  668. package/dist/schema/nodes/chimney.d.ts +10 -0
  669. package/dist/schema/nodes/chimney.d.ts.map +1 -1
  670. package/dist/schema/nodes/column.d.ts +42 -0
  671. package/dist/schema/nodes/column.d.ts.map +1 -1
  672. package/dist/schema/nodes/column.js +11 -1
  673. package/dist/schema/nodes/cupola.d.ts +5 -0
  674. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  675. package/dist/schema/nodes/door.d.ts +54 -3
  676. package/dist/schema/nodes/door.d.ts.map +1 -1
  677. package/dist/schema/nodes/door.js +41 -7
  678. package/dist/schema/nodes/dormer.d.ts +20 -0
  679. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  680. package/dist/schema/nodes/downspout.d.ts +5 -0
  681. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  682. package/dist/schema/nodes/elevator.d.ts +5 -0
  683. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  684. package/dist/schema/nodes/eyebrow-vent.d.ts +5 -0
  685. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  686. package/dist/schema/nodes/fence.d.ts +5 -0
  687. package/dist/schema/nodes/fence.d.ts.map +1 -1
  688. package/dist/schema/nodes/guide.d.ts +14 -0
  689. package/dist/schema/nodes/guide.d.ts.map +1 -1
  690. package/dist/schema/nodes/guide.js +2 -0
  691. package/dist/schema/nodes/gutter.d.ts +5 -0
  692. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  693. package/dist/schema/nodes/item.d.ts +71 -0
  694. package/dist/schema/nodes/item.d.ts.map +1 -1
  695. package/dist/schema/nodes/item.js +5 -1
  696. package/dist/schema/nodes/level.d.ts +1 -1
  697. package/dist/schema/nodes/level.d.ts.map +1 -1
  698. package/dist/schema/nodes/opening-types.d.ts +13 -0
  699. package/dist/schema/nodes/opening-types.d.ts.map +1 -1
  700. package/dist/schema/nodes/opening-types.js +8 -1
  701. package/dist/schema/nodes/railing-wall.d.ts +112 -0
  702. package/dist/schema/nodes/railing-wall.d.ts.map +1 -0
  703. package/dist/schema/nodes/railing-wall.js +160 -0
  704. package/dist/schema/nodes/ridge-vent.d.ts +5 -0
  705. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  706. package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -1
  707. package/dist/schema/nodes/roof-segment-resize.js +2 -2
  708. package/dist/schema/nodes/roof-segment.d.ts +226 -1
  709. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  710. package/dist/schema/nodes/roof-segment.js +97 -12
  711. package/dist/schema/nodes/roof-types.d.ts +11 -0
  712. package/dist/schema/nodes/roof-types.d.ts.map +1 -1
  713. package/dist/schema/nodes/roof-types.js +6 -0
  714. package/dist/schema/nodes/roof.d.ts +60 -0
  715. package/dist/schema/nodes/roof.d.ts.map +1 -1
  716. package/dist/schema/nodes/roof.js +4 -0
  717. package/dist/schema/nodes/shelf.d.ts +5 -0
  718. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  719. package/dist/schema/nodes/site.d.ts +80 -0
  720. package/dist/schema/nodes/site.d.ts.map +1 -1
  721. package/dist/schema/nodes/site.js +7 -0
  722. package/dist/schema/nodes/skylight.d.ts +10 -0
  723. package/dist/schema/nodes/skylight.d.ts.map +1 -1
  724. package/dist/schema/nodes/slab.d.ts +137 -0
  725. package/dist/schema/nodes/slab.d.ts.map +1 -1
  726. package/dist/schema/nodes/slab.js +3 -0
  727. package/dist/schema/nodes/solar-panel.d.ts +10 -0
  728. package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
  729. package/dist/schema/nodes/stair-segment.d.ts +5 -0
  730. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  731. package/dist/schema/nodes/stair-structure.d.ts +69 -0
  732. package/dist/schema/nodes/stair-structure.d.ts.map +1 -0
  733. package/dist/schema/nodes/stair-structure.js +39 -0
  734. package/dist/schema/nodes/stair.d.ts +46 -0
  735. package/dist/schema/nodes/stair.d.ts.map +1 -1
  736. package/dist/schema/nodes/stair.js +3 -0
  737. package/dist/schema/nodes/turbine-vent.d.ts +5 -0
  738. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  739. package/dist/schema/nodes/wall.d.ts +136 -2
  740. package/dist/schema/nodes/wall.d.ts.map +1 -1
  741. package/dist/schema/nodes/wall.js +48 -6
  742. package/dist/schema/nodes/window.d.ts +66 -1
  743. package/dist/schema/nodes/window.d.ts.map +1 -1
  744. package/dist/schema/nodes/window.js +50 -5
  745. package/dist/schema/nodes/zone.d.ts +68 -0
  746. package/dist/schema/nodes/zone.d.ts.map +1 -1
  747. package/dist/schema/nodes/zone.js +32 -0
  748. package/dist/schema/scene-material.d.ts +5 -0
  749. package/dist/schema/scene-material.d.ts.map +1 -1
  750. package/dist/schema/types.d.ts +1080 -4
  751. package/dist/schema/types.d.ts.map +1 -1
  752. package/dist/schema/types.js +2 -0
  753. package/dist/schema/wall-type.d.ts +95 -0
  754. package/dist/schema/wall-type.d.ts.map +1 -0
  755. package/dist/schema/wall-type.js +32 -0
  756. package/dist/services/index.d.ts +1 -1
  757. package/dist/services/index.d.ts.map +1 -1
  758. package/dist/services/index.js +1 -1
  759. package/dist/services/movement.d.ts +7 -0
  760. package/dist/services/movement.d.ts.map +1 -1
  761. package/dist/services/movement.js +13 -0
  762. package/dist/services/port-connectivity.d.ts +15 -6
  763. package/dist/services/port-connectivity.d.ts.map +1 -1
  764. package/dist/services/port-connectivity.js +83 -17
  765. package/dist/services/roof-bearing.d.ts.map +1 -1
  766. package/dist/services/roof-bearing.js +8 -4
  767. package/dist/services/roof-level.d.ts.map +1 -1
  768. package/dist/services/roof-level.js +4 -3
  769. package/dist/services/roof-move.d.ts.map +1 -1
  770. package/dist/services/roof-move.js +13 -7
  771. package/dist/services/storey.d.ts +6 -1
  772. package/dist/services/storey.d.ts.map +1 -1
  773. package/dist/services/storey.js +24 -10
  774. package/dist/spatial/usage-field/beds.d.ts +51 -0
  775. package/dist/spatial/usage-field/beds.d.ts.map +1 -0
  776. package/dist/spatial/usage-field/beds.js +346 -0
  777. package/dist/spatial/usage-field/blocked.d.ts +28 -0
  778. package/dist/spatial/usage-field/blocked.d.ts.map +1 -0
  779. package/dist/spatial/usage-field/blocked.js +185 -0
  780. package/dist/spatial/usage-field/boxes.d.ts +17 -0
  781. package/dist/spatial/usage-field/boxes.d.ts.map +1 -0
  782. package/dist/spatial/usage-field/boxes.js +82 -0
  783. package/dist/spatial/usage-field/catalogue-shapes.d.ts +3 -0
  784. package/dist/spatial/usage-field/catalogue-shapes.d.ts.map +1 -0
  785. package/dist/spatial/usage-field/catalogue-shapes.js +257 -0
  786. package/dist/spatial/usage-field/catalogue.d.ts +6 -0
  787. package/dist/spatial/usage-field/catalogue.d.ts.map +1 -0
  788. package/dist/spatial/usage-field/catalogue.js +11 -0
  789. package/dist/spatial/usage-field/clash.d.ts +40 -0
  790. package/dist/spatial/usage-field/clash.d.ts.map +1 -0
  791. package/dist/spatial/usage-field/clash.js +187 -0
  792. package/dist/spatial/usage-field/door-stairs.d.ts +18 -0
  793. package/dist/spatial/usage-field/door-stairs.d.ts.map +1 -0
  794. package/dist/spatial/usage-field/door-stairs.js +129 -0
  795. package/dist/spatial/usage-field/entry-way.d.ts +14 -0
  796. package/dist/spatial/usage-field/entry-way.d.ts.map +1 -0
  797. package/dist/spatial/usage-field/entry-way.js +219 -0
  798. package/dist/spatial/usage-field/fences.d.ts +18 -0
  799. package/dist/spatial/usage-field/fences.d.ts.map +1 -0
  800. package/dist/spatial/usage-field/fences.js +253 -0
  801. package/dist/spatial/usage-field/field.d.ts +44 -0
  802. package/dist/spatial/usage-field/field.d.ts.map +1 -0
  803. package/dist/spatial/usage-field/field.js +145 -0
  804. package/dist/spatial/usage-field/findings.d.ts +76 -0
  805. package/dist/spatial/usage-field/findings.d.ts.map +1 -0
  806. package/dist/spatial/usage-field/findings.js +252 -0
  807. package/dist/spatial/usage-field/fixtures.d.ts +18 -0
  808. package/dist/spatial/usage-field/fixtures.d.ts.map +1 -0
  809. package/dist/spatial/usage-field/fixtures.js +160 -0
  810. package/dist/spatial/usage-field/flag.d.ts +10 -0
  811. package/dist/spatial/usage-field/flag.d.ts.map +1 -0
  812. package/dist/spatial/usage-field/flag.js +12 -0
  813. package/dist/spatial/usage-field/floors.d.ts +13 -0
  814. package/dist/spatial/usage-field/floors.d.ts.map +1 -0
  815. package/dist/spatial/usage-field/floors.js +36 -0
  816. package/dist/spatial/usage-field/index.d.ts +7 -0
  817. package/dist/spatial/usage-field/index.d.ts.map +1 -0
  818. package/dist/spatial/usage-field/index.js +5 -0
  819. package/dist/spatial/usage-field/items.d.ts +38 -0
  820. package/dist/spatial/usage-field/items.d.ts.map +1 -0
  821. package/dist/spatial/usage-field/items.js +261 -0
  822. package/dist/spatial/usage-field/labels.d.ts +8 -0
  823. package/dist/spatial/usage-field/labels.d.ts.map +1 -0
  824. package/dist/spatial/usage-field/labels.js +14 -0
  825. package/dist/spatial/usage-field/level-field.d.ts +47 -0
  826. package/dist/spatial/usage-field/level-field.d.ts.map +1 -0
  827. package/dist/spatial/usage-field/level-field.js +96 -0
  828. package/dist/spatial/usage-field/measure.d.ts +324 -0
  829. package/dist/spatial/usage-field/measure.d.ts.map +1 -0
  830. package/dist/spatial/usage-field/measure.js +458 -0
  831. package/dist/spatial/usage-field/obstacles.d.ts +63 -0
  832. package/dist/spatial/usage-field/obstacles.d.ts.map +1 -0
  833. package/dist/spatial/usage-field/obstacles.js +215 -0
  834. package/dist/spatial/usage-field/openings.d.ts +12 -0
  835. package/dist/spatial/usage-field/openings.d.ts.map +1 -0
  836. package/dist/spatial/usage-field/openings.js +162 -0
  837. package/dist/spatial/usage-field/path.d.ts +48 -0
  838. package/dist/spatial/usage-field/path.d.ts.map +1 -0
  839. package/dist/spatial/usage-field/path.js +354 -0
  840. package/dist/spatial/usage-field/pieces.d.ts +27 -0
  841. package/dist/spatial/usage-field/pieces.d.ts.map +1 -0
  842. package/dist/spatial/usage-field/pieces.js +89 -0
  843. package/dist/spatial/usage-field/shapes.d.ts +18 -0
  844. package/dist/spatial/usage-field/shapes.d.ts.map +1 -0
  845. package/dist/spatial/usage-field/shapes.js +92 -0
  846. package/dist/spatial/usage-field/stairs.d.ts +23 -0
  847. package/dist/spatial/usage-field/stairs.d.ts.map +1 -0
  848. package/dist/spatial/usage-field/stairs.js +163 -0
  849. package/dist/spatial/usage-field/support.d.ts +24 -0
  850. package/dist/spatial/usage-field/support.d.ts.map +1 -0
  851. package/dist/spatial/usage-field/support.js +46 -0
  852. package/dist/spatial/usage-field/swings.d.ts +847 -0
  853. package/dist/spatial/usage-field/swings.d.ts.map +1 -0
  854. package/dist/spatial/usage-field/swings.js +427 -0
  855. package/dist/spatial/usage-field/types.d.ts +65 -0
  856. package/dist/spatial/usage-field/types.d.ts.map +1 -0
  857. package/dist/spatial/usage-field/types.js +1 -0
  858. package/dist/spatial/usage-field/walls.d.ts +1059 -0
  859. package/dist/spatial/usage-field/walls.d.ts.map +1 -0
  860. package/dist/spatial/usage-field/walls.js +180 -0
  861. package/dist/spatial/usage-field/way-in.d.ts +26 -0
  862. package/dist/spatial/usage-field/way-in.d.ts.map +1 -0
  863. package/dist/spatial/usage-field/way-in.js +113 -0
  864. package/dist/store/actions/node-actions.d.ts +1467 -664
  865. package/dist/store/actions/node-actions.d.ts.map +1 -1
  866. package/dist/store/actions/node-actions.js +65 -21
  867. package/dist/store/derived-node-guard.d.ts +10 -2
  868. package/dist/store/derived-node-guard.d.ts.map +1 -1
  869. package/dist/store/derived-node-guard.js +33 -12
  870. package/dist/store/document-settling.d.ts +9 -0
  871. package/dist/store/document-settling.d.ts.map +1 -0
  872. package/dist/store/document-settling.js +22 -0
  873. package/dist/store/history-control.d.ts +19 -10
  874. package/dist/store/history-control.d.ts.map +1 -1
  875. package/dist/store/history-control.js +176 -127
  876. package/dist/store/history-drafts.d.ts.map +1 -1
  877. package/dist/store/history-drafts.js +21 -17
  878. package/dist/store/live-previews.d.ts +9 -0
  879. package/dist/store/live-previews.d.ts.map +1 -0
  880. package/dist/store/live-previews.js +19 -0
  881. package/dist/store/scene-annotations.d.ts +5409 -3807
  882. package/dist/store/scene-annotations.d.ts.map +1 -1
  883. package/dist/store/scene-environment.d.ts +33 -0
  884. package/dist/store/scene-environment.d.ts.map +1 -0
  885. package/dist/store/scene-environment.js +54 -0
  886. package/dist/store/scene-hydration.d.ts.map +1 -1
  887. package/dist/store/scene-hydration.js +41 -30
  888. package/dist/store/use-interactive.d.ts +9 -3
  889. package/dist/store/use-interactive.d.ts.map +1 -1
  890. package/dist/store/use-interactive.js +43 -11
  891. package/dist/store/use-live-node-overrides.d.ts.map +1 -1
  892. package/dist/store/use-live-node-overrides.js +3 -0
  893. package/dist/store/use-scene.d.ts +25 -0
  894. package/dist/store/use-scene.d.ts.map +1 -1
  895. package/dist/store/use-scene.js +408 -336
  896. package/dist/systems/document-reconcile.d.ts +40 -0
  897. package/dist/systems/document-reconcile.d.ts.map +1 -0
  898. package/dist/systems/document-reconcile.js +159 -0
  899. package/dist/systems/elevator/elevator-geometry.d.ts +25 -0
  900. package/dist/systems/elevator/elevator-geometry.d.ts.map +1 -1
  901. package/dist/systems/elevator/elevator-geometry.js +40 -8
  902. package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -1
  903. package/dist/systems/elevator/elevator-opening-sync.js +4 -35
  904. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  905. package/dist/systems/elevator/elevator-opening-system.js +9 -24
  906. package/dist/systems/elevator/elevator-runtime.d.ts.map +1 -1
  907. package/dist/systems/elevator/elevator-runtime.js +95 -18
  908. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  909. package/dist/systems/elevator/elevator-service.js +24 -4
  910. package/dist/systems/fence/guard-layout.d.ts +69 -0
  911. package/dist/systems/fence/guard-layout.d.ts.map +1 -0
  912. package/dist/systems/fence/guard-layout.js +194 -0
  913. package/dist/systems/owned-floor-openings.d.ts +13 -1
  914. package/dist/systems/owned-floor-openings.d.ts.map +1 -1
  915. package/dist/systems/owned-floor-openings.js +58 -2
  916. package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -1
  917. package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -1
  918. package/dist/systems/reconcile-owned-floor-openings.js +4 -4
  919. package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
  920. package/dist/systems/roof/roof-elevation-system.js +8 -26
  921. package/dist/systems/roof/roof-elevation.d.ts +16 -1
  922. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  923. package/dist/systems/roof/roof-elevation.js +87 -5
  924. package/dist/systems/roof/roof-footprint.d.ts +42 -1
  925. package/dist/systems/roof/roof-footprint.d.ts.map +1 -1
  926. package/dist/systems/roof/roof-footprint.js +160 -4
  927. package/dist/systems/slab/__fixtures__/floor-step.d.ts +2714 -1481
  928. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
  929. package/dist/systems/slab/__fixtures__/raised-room.d.ts +3815 -2565
  930. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
  931. package/dist/systems/stair/stair-clearance.d.ts +7 -0
  932. package/dist/systems/stair/stair-clearance.d.ts.map +1 -1
  933. package/dist/systems/stair/stair-clearance.js +31 -11
  934. package/dist/systems/stair/stair-construction.d.ts +8 -3
  935. package/dist/systems/stair/stair-construction.d.ts.map +1 -1
  936. package/dist/systems/stair/stair-construction.js +55 -4
  937. package/dist/systems/stair/stair-opening-preview.d.ts +1630 -829
  938. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  939. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  940. package/dist/systems/stair/stair-opening-system.js +18 -34
  941. package/dist/systems/stair/stair-presets.d.ts +36 -0
  942. package/dist/systems/stair/stair-presets.d.ts.map +1 -1
  943. package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
  944. package/dist/systems/stair/stair-rise-query.js +3 -2
  945. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  946. package/dist/systems/stair/stair-rise.js +6 -0
  947. package/dist/systems/stair/stair-sizing.d.ts +42 -11
  948. package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
  949. package/dist/systems/stair/stair-sizing.js +10 -1
  950. package/dist/systems/stair/stair-structure.d.ts +277 -0
  951. package/dist/systems/stair/stair-structure.d.ts.map +1 -0
  952. package/dist/systems/stair/stair-structure.js +496 -0
  953. package/dist/systems/wall/wall-assembly.d.ts +84 -6
  954. package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
  955. package/dist/systems/wall/wall-assembly.js +204 -5
  956. package/dist/systems/wall/wall-curve.d.ts +10 -0
  957. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  958. package/dist/systems/wall/wall-curve.js +38 -0
  959. package/dist/systems/wall/wall-finish.d.ts +38 -2
  960. package/dist/systems/wall/wall-finish.d.ts.map +1 -1
  961. package/dist/systems/wall/wall-finish.js +70 -2
  962. package/dist/systems/wall/wall-footprint.js +2 -2
  963. package/dist/systems/wall/wall-frame.d.ts.map +1 -1
  964. package/dist/systems/wall/wall-frame.js +8 -0
  965. package/dist/systems/wall/wall-merge.d.ts +9 -1
  966. package/dist/systems/wall/wall-merge.d.ts.map +1 -1
  967. package/dist/systems/wall/wall-merge.js +66 -13
  968. package/dist/systems/wall/wall-mitering.d.ts +1 -0
  969. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  970. package/dist/systems/wall/wall-mitering.js +152 -52
  971. package/dist/systems/wall/wall-move.d.ts +23 -6
  972. package/dist/systems/wall/wall-move.d.ts.map +1 -1
  973. package/dist/systems/wall/wall-move.js +65 -0
  974. package/dist/systems/wall/wall-top.d.ts +11 -4
  975. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  976. package/dist/systems/wall/wall-top.js +28 -7
  977. package/dist/systems/wall/wall-topology.d.ts +32 -1
  978. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  979. package/dist/systems/wall/wall-topology.js +137 -11
  980. package/dist/systems/wall/wall-trim-profiles.d.ts +12 -0
  981. package/dist/systems/wall/wall-trim-profiles.d.ts.map +1 -0
  982. package/dist/systems/wall/wall-trim-profiles.js +191 -0
  983. package/dist/utils/ensure-scene-openings.d.ts +4663 -3061
  984. package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
  985. package/dist/utils/floor-piece-adoption.d.ts +5 -0
  986. package/dist/utils/floor-piece-adoption.d.ts.map +1 -1
  987. package/dist/utils/floor-plate-migration.d.ts +3372 -2571
  988. package/dist/utils/floor-plate-migration.d.ts.map +1 -1
  989. package/dist/utils/measurement-format.d.ts +27 -0
  990. package/dist/utils/measurement-format.d.ts.map +1 -0
  991. package/dist/utils/measurement-format.js +143 -0
  992. package/dist/utils/owned-floor-opening-migration.d.ts +1629 -828
  993. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
  994. package/dist/utils/reconcile-structure-on-load.d.ts +2308 -1507
  995. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
  996. package/dist/utils/structure-id.d.ts.map +1 -1
  997. package/dist/utils/structure-id.js +4 -0
  998. package/dist/validation/validate-build-json.d.ts.map +1 -1
  999. package/dist/validation/validate-build-json.js +3 -1
  1000. package/package.json +22 -5
  1001. package/dist/lib/generic-foundation.d.ts +0 -40
  1002. package/dist/lib/generic-foundation.d.ts.map +0 -1
  1003. package/dist/lib/generic-foundation.js +0 -200
@@ -0,0 +1,252 @@
1
+ import { USAGE_INDICATORS, } from '../../building/code-profile.js';
2
+ import { bedIssues } from './beds.js';
3
+ import { blockedOpeningIssues } from './blocked.js';
4
+ import { clashIssues } from './clash.js';
5
+ import { doorOverStairIssues } from './door-stairs.js';
6
+ import { entryIssues } from './entry-way.js';
7
+ import { fixtureClearanceIssues } from './fixtures.js';
8
+ import { m, nameOf, quote, unique } from './labels.js';
9
+ import { measureUsage, } from './measure.js';
10
+ import { usageShapes } from './shapes.js';
11
+ import { doorSwingIssues } from './swings.js';
12
+ /** Clear width of a path in a house: 0,90 m, the arrêté du 24 décembre 2015 art. 11 II (36 in is the IRC hall). */
13
+ export const PASSAGE_M = USAGE_INDICATORS.passage.value;
14
+ /** Clear width through an interior door: 32 in; the same arrêté art. 11 II asks 0,80 m nominal and 0,77 m clear. */
15
+ export const DOOR_M = USAGE_INDICATORS.doorClear.value;
16
+ /** Wheelchair turning space: 1.50 m (arrêté du 24 décembre 2015 art. 13; ADA 304.3). */
17
+ export const TURNING_M = USAGE_INDICATORS.turning.value;
18
+ /** One unit of passage: 0.60 m (a clearance of 0.30 m); a pocket smaller than this is not worth a finding. */
19
+ export const POCKET_MIN_M2 = 0.36;
20
+ /** A reading within this of its threshold is the threshold. */
21
+ export const TOLERANCE_M = 0.005;
22
+ /** Rooms whose passages are the same pinch: the same things bound it, a figure within this, a spot within `PLACE_AT_M`. */
23
+ export const PLACE_WIDTH_M = 0.005;
24
+ const PLACE_AT_M = 0.5;
25
+ const MOVABLE = /chair|stool|bedside|night ?stand|ottoman|pouf/i;
26
+ function describe(nodes, refs) {
27
+ return refs.map((ref) => {
28
+ const node = nodes[ref.nodeId];
29
+ const label = ref.kind === 'void'
30
+ ? 'stairwell opening'
31
+ : ref.kind === 'stair-rail'
32
+ ? `${nameOf(nodes, ref.nodeId)} railing`
33
+ : nameOf(nodes, ref.nodeId);
34
+ return {
35
+ nodeId: ref.nodeId,
36
+ name: label,
37
+ kind: ref.kind,
38
+ shape: ref.shape,
39
+ movable: node?.type === 'item' &&
40
+ MOVABLE.test(`${node.asset.id} ${node.asset.name}`),
41
+ };
42
+ });
43
+ }
44
+ /** The things a finding names, once each: the two parts of one door frame are that door, not two things. */
45
+ const distinctOf = (items) => items.filter((item, at) => items.findIndex((o) => o.nodeId === item.nodeId) === at);
46
+ /** The door whose two frame members are the pinch: it is passed through, not against. */
47
+ const framedBy = (items) => {
48
+ const distinct = distinctOf(items);
49
+ return distinct.length === 1 && items.length >= 2 && distinct[0].kind === 'jamb'
50
+ ? distinct[0]
51
+ : null;
52
+ };
53
+ function between(items) {
54
+ const distinct = distinctOf(items);
55
+ if (distinct.length >= 2)
56
+ return ` between ${quote(distinct[0].name)} and ${quote(distinct[1].name)}`;
57
+ if (distinct.length === 1)
58
+ return ` against ${quote(distinct[0].name)}`;
59
+ return '';
60
+ }
61
+ const beside = (items) => {
62
+ const distinct = distinctOf(items);
63
+ return distinct.length ? `, beside ${distinct.map((item) => quote(item.name)).join(' and ')}` : '';
64
+ };
65
+ const listOf = (names) => names.length < 2
66
+ ? (names[0] ?? '')
67
+ : `${names.slice(0, -1).join(', ')} and ${names[names.length - 1]}`;
68
+ /** The room's narrow passage, with what bounds it and the limit it is read against; null when it is not narrow. */
69
+ function narrowPassage(nodes, room) {
70
+ const passage = room.passage;
71
+ if (!passage)
72
+ return null;
73
+ const sides = describe(nodes, passage.by);
74
+ // a pinch between two door-frame members is a doorway, and a doorway needs 0.80 m, not 0.90 m
75
+ const doorway = passage.by.some((o) => o.kind === 'jamb');
76
+ const limit = doorway ? DOOR_M : PASSAGE_M;
77
+ return passage.width < limit - TOLERANCE_M ? { room, passage, sides, limit, doorway } : null;
78
+ }
79
+ const sameStuff = (a, b) => {
80
+ const ids = (items) => [...new Set(items.map((o) => o.nodeId))].sort().join('|');
81
+ return ids(a) === ids(b);
82
+ };
83
+ /**
84
+ * One finding for each place a way is narrow, however many rooms it leads to: the rooms whose
85
+ * narrowest point is the same pinch (the same things bound it, the same width, the same spot) are
86
+ * its `serves`, each with the best other exterior door when that reaches it more widely.
87
+ */
88
+ function passageIssues(nodes, rooms) {
89
+ const places = [];
90
+ for (const room of rooms) {
91
+ const narrow = narrowPassage(nodes, room);
92
+ if (!narrow)
93
+ continue;
94
+ const place = places.find(([first]) => {
95
+ const a = first.passage;
96
+ const b = narrow.passage;
97
+ return (sameStuff(first.sides, narrow.sides) &&
98
+ Math.abs(a.width - b.width) <= PLACE_WIDTH_M &&
99
+ Math.hypot(a.at[0] - b.at[0], a.at[1] - b.at[1]) <= PLACE_AT_M);
100
+ });
101
+ if (place)
102
+ place.push(narrow);
103
+ else
104
+ places.push([narrow]);
105
+ }
106
+ return places.map((members) => passageIssue(nodes, members));
107
+ }
108
+ function passageIssue(nodes, members) {
109
+ const narrowest = members.reduce((best, n) => (n.passage.width < best.passage.width ? n : best));
110
+ const { passage, sides, limit, doorway } = narrowest;
111
+ const door = passage.fromDoorId ? nameOf(nodes, passage.fromDoorId) : null;
112
+ const approximate = passage.by.some((o) => o.shape === 'approx');
113
+ const target = (room) => room.kind === 'stair-foot'
114
+ ? `the foot of ${quote(room.name.replace(/^Foot of /, ''))}`
115
+ : quote(room.name);
116
+ // the best other exterior door, said once when it is the same for every room and by room when it is not
117
+ const first = members[0].room.alternative;
118
+ const shared = first &&
119
+ members.every(({ room }) => room.alternative?.doorId === first.doorId && room.alternative.width === first.width)
120
+ ? first
121
+ : null;
122
+ const alternativeOf = (alternative) => `${m(alternative.width)} m from ${quote(nameOf(nodes, alternative.doorId))}`;
123
+ const targets = listOf(members.map(({ room }) => !shared && room.alternative
124
+ ? `${target(room)} (${alternativeOf(room.alternative)})`
125
+ : target(room)));
126
+ // a doorway is read between its jambs; the door as drawn is said beside it
127
+ const frame = framedBy(sides);
128
+ const drawn = frame ? nodes[frame.nodeId]?.width : undefined;
129
+ const clause = `${frame
130
+ ? `${m(passage.width)} m clear between the jambs of ${quote(frame.name)}${typeof drawn === 'number' ? `, a ${m(drawn)} m door` : ''}`
131
+ : `${m(passage.width)} m${between(sides)}`}${shared ? `; ${alternativeOf(shared)}` : ''}`;
132
+ const sentence = `${targets}: ${clause}`;
133
+ // a leaf drawn at least the doorway's 0.80 m is a standard door: what it leaves is information
134
+ const standardLeaf = typeof drawn === 'number' && drawn >= DOOR_M - TOLERANCE_M ? drawn : null;
135
+ const tail = standardLeaf === null
136
+ ? ` (below ${m(limit)} m${doorway ? ', a doorway' : ''}).`
137
+ : ` (a ${m(standardLeaf)} m door leaf: the frame leaves ${m(passage.width)} m clear).`;
138
+ const lead = members[0].room;
139
+ return {
140
+ type: 'usage_passage_narrow',
141
+ message: `Narrow passage to ${sentence}${door ? `, measured from ${quote(door)}` : ''}${tail}`,
142
+ brief: `Passage to ${sentence}${tail}`,
143
+ ...(door ? { fromDoor: door } : {}),
144
+ severity: standardLeaf === null ? 'warning' : 'info',
145
+ nodeIds: unique([
146
+ ...members.map(({ room }) => (room.roomId.startsWith('zone_') ? room.roomId : undefined)),
147
+ ...sides.map((s) => s.nodeId),
148
+ ]),
149
+ valueM: passage.width,
150
+ thresholdM: limit,
151
+ ...(typeof drawn === 'number' ? { doorWidthM: drawn } : {}),
152
+ place: { room: lead.name, roomId: lead.roomId, at: passage.at },
153
+ obstacles: sides,
154
+ ...(passage.fromDoorId ? { fromDoorId: passage.fromDoorId } : {}),
155
+ serves: members.map(({ room }) => ({
156
+ room: room.name,
157
+ roomId: room.roomId,
158
+ ...(room.alternative
159
+ ? { alternative: { doorId: room.alternative.doorId, widthM: room.alternative.width } }
160
+ : {}),
161
+ })),
162
+ approximate,
163
+ };
164
+ }
165
+ function turningIssue(room) {
166
+ const turning = room.turning;
167
+ if (!turning || !(turning.diameter < TURNING_M - TOLERANCE_M))
168
+ return null;
169
+ return {
170
+ type: 'usage_turning_narrow',
171
+ message: `No ${m(TURNING_M)} m turning circle in ${quote(room.name)}: largest ${m(turning.diameter)} m.`,
172
+ brief: `no ${m(TURNING_M)} m turning circle, largest ${m(turning.diameter)} m`,
173
+ // A turning circle measures the room, not a defect of a piece: it informs, exact outline or not.
174
+ severity: 'info',
175
+ nodeIds: [room.roomId],
176
+ valueM: turning.diameter,
177
+ thresholdM: TURNING_M,
178
+ place: { room: room.name, roomId: room.roomId, at: turning.at },
179
+ obstacles: [],
180
+ approximate: turning.approximate,
181
+ };
182
+ }
183
+ function pocketIssue(nodes, room, from) {
184
+ const pocket = room.pocket;
185
+ if (!(pocket.isolatedM2 >= POCKET_MIN_M2) || !pocket.at)
186
+ return null;
187
+ const around = describe(nodes, pocket.by);
188
+ const approximate = pocket.by.some((o) => o.shape === 'approx');
189
+ const brief = pocket.whole
190
+ ? `no 0.60 m way out from ${from} (${m(pocket.isolatedM2)} m²)`
191
+ : `${m(pocket.isolatedM2)} m² of floor with no 0.60 m way out${beside(around)}`;
192
+ return {
193
+ type: 'usage_pocket',
194
+ message: `${quote(room.name)}: ${brief}.`,
195
+ brief,
196
+ ...(pocket.whole ? { wholeRoom: true } : {}),
197
+ severity: 'warning',
198
+ nodeIds: unique([room.roomId, ...around.map((o) => o.nodeId)]),
199
+ valueM2: pocket.isolatedM2,
200
+ place: { room: room.name, roomId: room.roomId, at: pocket.at },
201
+ obstacles: around,
202
+ approximate,
203
+ };
204
+ }
205
+ /**
206
+ * The usage findings of a scene: narrow passages (measured from the chosen entrance, one for each
207
+ * place that is narrow with the rooms it leads to, and the best other door as a fact), missing turning circles, floor a 0.60 m unit cannot get out of, wall
208
+ * objects that stand out into circulation, pieces inside something solid, what stands in front of a
209
+ * window or a door, a bed's room, a room's headroom and its ceiling. Every threshold is an indicator,
210
+ * not a compliance check.
211
+ */
212
+ export function usageIssues(nodes, options = {}) {
213
+ const shapes = usageShapes(nodes);
214
+ const measure = measureUsage(nodes, shapes, options);
215
+ const issues = [];
216
+ for (const group of measure.groups) {
217
+ const from = group.source.kind === 'door' ? 'the entrance' : 'the stair arrival';
218
+ const rooms = group.rooms;
219
+ const stuck = rooms.filter((room) => room.kind === 'room' && room.pocket.freeM2 > 0);
220
+ // a whole floor cut off from where it is entered is one finding, not one per room
221
+ const wholeFloor = stuck.length > 1 && stuck.every((room) => room.pocket.whole) && group.source.kind !== 'none';
222
+ if (wholeFloor) {
223
+ const level = nodes[group.levelId];
224
+ const area = stuck.reduce((sum, room) => sum + room.pocket.isolatedM2, 0);
225
+ issues.push({
226
+ type: 'usage_pocket',
227
+ message: `${quote(String(level?.name ?? `Level ${level?.level ?? ''}`))}: no 0.60 m way out from ${from} (${m(area)} m²).`,
228
+ brief: `no 0.60 m way out from ${from} (${m(area)} m²)`,
229
+ wholeRoom: true,
230
+ severity: 'warning',
231
+ nodeIds: unique([group.levelId, ...stuck.map((room) => room.roomId)]),
232
+ valueM2: Math.round(area * 1000) / 1000,
233
+ place: { room: String(level?.name ?? 'Level'), roomId: group.levelId, at: stuck[0].at },
234
+ obstacles: [],
235
+ approximate: false,
236
+ });
237
+ }
238
+ issues.push(...passageIssues(nodes, rooms));
239
+ for (const room of rooms) {
240
+ const turning = turningIssue(room);
241
+ if (turning)
242
+ issues.push(turning);
243
+ if (!wholeFloor) {
244
+ const pocket = pocketIssue(nodes, room, from);
245
+ if (pocket)
246
+ issues.push(pocket);
247
+ }
248
+ }
249
+ }
250
+ issues.push(...clashIssues(nodes, shapes), ...blockedOpeningIssues(nodes, shapes), ...doorSwingIssues(nodes, shapes), ...entryIssues(nodes, shapes), ...doorOverStairIssues(nodes, shapes), ...fixtureClearanceIssues(nodes, shapes), ...bedIssues(nodes, shapes));
251
+ return issues;
252
+ }
@@ -0,0 +1,18 @@
1
+ import type { UsageIssue } from './findings.js';
2
+ import type { UsageShapes } from './types.js';
3
+ import type { Nodes } from './walls.js';
4
+ /**
5
+ * Bathroom fixture clearances: a toilet's centre to the nearest obstruction on each side and its clear
6
+ * space in front, a lavatory's front (and, for a single basin, its side), a shower's clear space at its
7
+ * best open side. Read on the exact outlines of the feet band. The fixture's front is its +Z, checked
8
+ * against the wall behind it (a fixture whose back is free and whose +Z meets a wall is read the other
9
+ * way round); a shower has no opening side in the model, so the best of its four sides is read, which is
10
+ * as good as the opening can be.
11
+ *
12
+ * These are a code's numbers. With no `site.metadata.codeProfile` the scene has no jurisdiction, and a
13
+ * finding is information that names the US IRC it used; with `irc-2021` set it is a warning. A profile
14
+ * with no row for it (the Australian NCC, France hold none of the bathroom figures) reports nothing.
15
+ * Approximate fixture outlines remain labeled as such without downgrading a clearance defect.
16
+ */
17
+ export declare function fixtureClearanceIssues(nodes: Nodes, shapes: UsageShapes): UsageIssue[];
18
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../src/spatial/usage-field/fixtures.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI5C,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AA6BpC;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,EAAE,CAiItF"}
@@ -0,0 +1,160 @@
1
+ import { isFloorUnderlay } from '../../agent-operations/furniture-kind.js';
2
+ import { CODE_PROFILES, codeProfileOf, } from '../../building/code-profile.js';
3
+ import { catalogueKey } from './catalogue.js';
4
+ import { m, nameOf, quote, unique } from './labels.js';
5
+ import { obstaclesInBand, rayHit } from './obstacles.js';
6
+ import { roomAt } from './pieces.js';
7
+ const TOILET = /toilet|water ?closet|(?:^|[^a-z])wc(?![a-z])/i;
8
+ const BASIN = /basin|lavatory|vanity|bathroom[- ]sink|wash ?hand/i;
9
+ const BASIN_WORD = /basin|lavatory|vanity|sink|wash ?hand/i;
10
+ const SHOWER = /shower/i;
11
+ /** The feet band: what a person's legs and a fixture's rim meet (m above the floor). */
12
+ const BAND = { from: 0.05, to: 0.9 };
13
+ const RAY_MAX_M = 1.5;
14
+ /** Where along a fixture's depth, from its back, the sides are read. */
15
+ const SIDE_SAMPLES = [0.25, 0.5, 0.75, 1];
16
+ /** A lavatory this wide has more than one basin: its centre line is not a basin's. */
17
+ const SINGLE_BASIN_MAX_M = 1.0;
18
+ const kindOf = (item) => {
19
+ const text = `${item.name ?? ''} ${item.asset.name ?? ''} ${item.asset.id ?? ''} ${item.asset.category ?? ''}`;
20
+ const key = catalogueKey(item.asset.src ?? '');
21
+ if (key === 'system/toilet' || (TOILET.test(text) && !BASIN_WORD.test(text)))
22
+ return 'toilet';
23
+ if (key === 'system/shower-square' || SHOWER.test(text))
24
+ return 'shower';
25
+ if (key === 'system/bathroom-sink' || (BASIN.test(text) && !/kitchen/i.test(text)))
26
+ return 'lavatory';
27
+ return null;
28
+ };
29
+ const inchesText = (metres) => `${Math.round(metres / 0.0254)} in`;
30
+ /**
31
+ * Bathroom fixture clearances: a toilet's centre to the nearest obstruction on each side and its clear
32
+ * space in front, a lavatory's front (and, for a single basin, its side), a shower's clear space at its
33
+ * best open side. Read on the exact outlines of the feet band. The fixture's front is its +Z, checked
34
+ * against the wall behind it (a fixture whose back is free and whose +Z meets a wall is read the other
35
+ * way round); a shower has no opening side in the model, so the best of its four sides is read, which is
36
+ * as good as the opening can be.
37
+ *
38
+ * These are a code's numbers. With no `site.metadata.codeProfile` the scene has no jurisdiction, and a
39
+ * finding is information that names the US IRC it used; with `irc-2021` set it is a warning. A profile
40
+ * with no row for it (the Australian NCC, France hold none of the bathroom figures) reports nothing.
41
+ * Approximate fixture outlines remain labeled as such without downgrading a clearance defect.
42
+ */
43
+ export function fixtureClearanceIssues(nodes, shapes) {
44
+ const profile = codeProfileOf(nodes);
45
+ const applied = profile ?? CODE_PROFILES['irc-2021'];
46
+ if (Object.keys(applied.thresholds).length === 0)
47
+ return [];
48
+ const out = [];
49
+ for (const level of shapes.levels) {
50
+ const prisms = level.prisms.filter((prism) => !(nodes[prism.nodeId]?.type === 'item' && isFloorUnderlay(nodes[prism.nodeId])));
51
+ for (const item of Object.values(nodes)) {
52
+ if (item.type !== 'item' || item.visible === false || item.parentId !== level.levelId)
53
+ continue;
54
+ const kind = kindOf(item);
55
+ if (!kind)
56
+ continue;
57
+ const own = prisms.filter((p) => p.nodeId === item.id);
58
+ if (!own.length)
59
+ continue;
60
+ const approximate = own.some((p) => p.shape === 'approx');
61
+ // the feet band stands on the fixture's own floor: a floor plate set off its storey's base is the fixture's floor
62
+ const floorY = Math.min(...own.map((p) => p.z0));
63
+ const band = { z0: floorY + BAND.from, z1: floorY + BAND.to };
64
+ const yaw = item.rotation?.[1] ?? 0;
65
+ const f = [Math.sin(yaw), Math.cos(yaw)];
66
+ const r = [Math.cos(yaw), -Math.sin(yaw)];
67
+ const points = own.flatMap((p) => p.outer);
68
+ const project = (u) => points.map((p) => p[0] * u[0] + p[1] * u[1]);
69
+ const [r0, r1] = [Math.min(...project(r)), Math.max(...project(r))];
70
+ const [f0, f1] = [Math.min(...project(f)), Math.max(...project(f))];
71
+ const at = (ur, uf) => [r[0] * ur + f[0] * uf, r[1] * ur + f[1] * uf];
72
+ const obstacles = obstaclesInBand(prisms, band, undefined, (p) => {
73
+ if (p.nodeId === item.id || p.kind === 'treatment')
74
+ return true;
75
+ const owner = nodes[p.nodeId];
76
+ return owner?.type === 'item' && owner.parentId === item.id;
77
+ });
78
+ const middle = (r0 + r1) / 2;
79
+ const depth = f1 - f0;
80
+ const behind = rayHit(at(middle, f0 - 0.001), [-f[0], -f[1]], obstacles, 0.4);
81
+ const ahead = rayHit(at(middle, f1 + 0.001), f, obstacles, 0.4);
82
+ const turned = behind > ahead + 0.05 && ahead < 0.15;
83
+ const front = turned ? [-f[0], -f[1]] : f;
84
+ const edge = turned ? f0 - 0.001 : f1 + 0.001;
85
+ const measures = [];
86
+ if (kind === 'shower') {
87
+ let best = 0;
88
+ for (const [dir, e, u0, u1, across] of [
89
+ [f, f1 + 0.001, r0, r1, true],
90
+ [[-f[0], -f[1]], f0 - 0.001, r0, r1, true],
91
+ [r, r1 + 0.001, f0, f1, false],
92
+ [[-r[0], -r[1]], r0 - 0.001, f0, f1, false],
93
+ ]) {
94
+ const clear = Math.min(...[0.25, 0.5, 0.75].map((s) => {
95
+ const u = u0 + (u1 - u0) * s;
96
+ return rayHit(across ? at(u, e) : at(e, u), dir, obstacles, RAY_MAX_M);
97
+ }));
98
+ best = Math.max(best, clear);
99
+ }
100
+ measures.push({
101
+ id: 'showerFrontClear',
102
+ label: 'in front of its best open side',
103
+ value: best,
104
+ });
105
+ }
106
+ else {
107
+ const front0 = [-0.25, -0.125, 0, 0.125, 0.25].map((o) => rayHit(at(middle + o, edge), front, obstacles, RAY_MAX_M));
108
+ measures.push({
109
+ id: kind === 'toilet' ? 'toiletFrontClear' : 'lavatoryFrontClear',
110
+ label: 'in front',
111
+ value: Math.min(...front0),
112
+ });
113
+ if (kind === 'toilet' || r1 - r0 <= SINGLE_BASIN_MAX_M) {
114
+ let side = Number.POSITIVE_INFINITY;
115
+ // not along the back edge: a ray grazing the wall behind the fixture is not a side obstruction
116
+ for (const sign of [-1, 1])
117
+ for (const share of SIDE_SAMPLES)
118
+ side = Math.min(side, (r1 - r0) / 2 +
119
+ rayHit(at(sign > 0 ? r1 + 0.001 : r0 - 0.001, f0 + depth * share), [r[0] * sign, r[1] * sign], obstacles, 0.6));
120
+ measures.push({
121
+ id: kind === 'toilet' ? 'toiletSideClear' : 'lavatorySideClear',
122
+ label: 'from its centre to the nearest obstruction at the side',
123
+ value: side,
124
+ });
125
+ }
126
+ }
127
+ const room = roomAt(nodes, level.levelId, at(middle, (f0 + f1) / 2));
128
+ const name = nameOf(nodes, item.id);
129
+ for (const { id, label, value } of measures) {
130
+ const row = applied.thresholds[id];
131
+ if (!row || !(value < row.value - 0.005))
132
+ continue;
133
+ const secondary = row.source === 'secondary source';
134
+ const best = id === 'showerFrontClear';
135
+ out.push({
136
+ type: 'usage_fixture_clearance',
137
+ message: `${quote(name)}${room ? ` in ${quote(room.name)}` : ''} has ${m(value)} m ${label}${best ? ', the best of its four sides (the model has no opening side)' : ''}; ${applied.label} (${row.section}${secondary ? ', secondary source' : ''}) asks ${m(row.value)} m (${inchesText(row.value)})${profile ? '' : ', and this project names no code'}.`,
138
+ severity: profile ? 'warning' : 'info',
139
+ nodeIds: unique([room?.id, item.id]),
140
+ valueM: Math.round(value * 1000) / 1000,
141
+ thresholdM: row.value,
142
+ place: {
143
+ room: room?.name ?? '',
144
+ roomId: room?.id ?? level.levelId,
145
+ at: at(middle, (f0 + f1) / 2),
146
+ },
147
+ obstacles: [],
148
+ approximate,
149
+ code: {
150
+ profile: applied.id,
151
+ cite: row.cite,
152
+ source: row.source,
153
+ byDefault: profile === null,
154
+ },
155
+ });
156
+ }
157
+ }
158
+ }
159
+ return out;
160
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Usage checks (passages, turning circles, pockets, wall objects, measured flow) are off until a
3
+ * host turns them on. Core reads no environment: the app and the servers set this once at start,
4
+ * from `PASCAL_SDF_CHECKS`.
5
+ */
6
+ export declare function setSdfChecks(on: boolean): void;
7
+ export declare const sdfChecksOn: () => boolean;
8
+ /** What `PASCAL_SDF_CHECKS` (or its `NEXT_PUBLIC_` mirror) says: `1` or `true` turns the checks on, anything else, or nothing, leaves them off. */
9
+ export declare const sdfChecksFromEnv: (value: string | undefined) => boolean;
10
+ //# sourceMappingURL=flag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag.d.ts","sourceRoot":"","sources":["../../../src/spatial/usage-field/flag.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,eAAO,MAAM,WAAW,QAAO,OAAkB,CAAA;AAEjD,mJAAmJ;AACnJ,eAAO,MAAM,gBAAgB,UAAW,MAAM,GAAG,SAAS,KAAG,OACX,CAAA"}
@@ -0,0 +1,12 @@
1
+ let enabled = false;
2
+ /**
3
+ * Usage checks (passages, turning circles, pockets, wall objects, measured flow) are off until a
4
+ * host turns them on. Core reads no environment: the app and the servers set this once at start,
5
+ * from `PASCAL_SDF_CHECKS`.
6
+ */
7
+ export function setSdfChecks(on) {
8
+ enabled = on;
9
+ }
10
+ export const sdfChecksOn = () => enabled;
11
+ /** What `PASCAL_SDF_CHECKS` (or its `NEXT_PUBLIC_` mirror) says: `1` or `true` turns the checks on, anything else, or nothing, leaves them off. */
12
+ export const sdfChecksFromEnv = (value) => value === '1' || value?.toLowerCase() === 'true';
@@ -0,0 +1,13 @@
1
+ import type { FloorRegion, Skipped } from './types.js';
2
+ import type { Nodes } from './walls.js';
3
+ /**
4
+ * The floor a person stands on, level by level: each slab's walking surface less the floor openings
5
+ * and lift shafts cut through it, at the height the circulation graph reads (`floorsOf`), so the
6
+ * usage checks and the circulation report stand on the same floor. A slab draped over terrain is one
7
+ * flat height here and is marked approximate; a recessed slab (a pool) is not a floor.
8
+ */
9
+ export declare function levelFloors(nodes: Nodes): {
10
+ floors: Map<string, FloorRegion[]>;
11
+ skipped: Skipped[];
12
+ };
13
+ //# sourceMappingURL=floors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floors.d.ts","sourceRoot":"","sources":["../../../src/spatial/usage-field/floors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG;IACzC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;IAClC,OAAO,EAAE,OAAO,EAAE,CAAA;CACnB,CA2BA"}
@@ -0,0 +1,36 @@
1
+ import { floorsOf } from '../../agent-operations/circulation-spaces.js';
2
+ import { difference } from '../../lib/polygon-boolean.js';
3
+ /**
4
+ * The floor a person stands on, level by level: each slab's walking surface less the floor openings
5
+ * and lift shafts cut through it, at the height the circulation graph reads (`floorsOf`), so the
6
+ * usage checks and the circulation report stand on the same floor. A slab draped over terrain is one
7
+ * flat height here and is marked approximate; a recessed slab (a pool) is not a floor.
8
+ */
9
+ export function levelFloors(nodes) {
10
+ const floors = new Map();
11
+ const skipped = [];
12
+ for (const floor of floorsOf(nodes).floors) {
13
+ const cuts = [...floor.voids, ...floor.shafts].map((ring) => ({ outer: ring, holes: [] }));
14
+ const regions = [];
15
+ for (const slab of floor.slabs) {
16
+ const source = nodes[slab.id];
17
+ if (source?.type === 'slab' && source.recessed) {
18
+ skipped.push({ nodeId: slab.id, why: 'a recessed slab is not a floor to stand on' });
19
+ continue;
20
+ }
21
+ const pieces = difference({ outer: slab.polygon, holes: slab.holes }, cuts);
22
+ for (const [index, piece] of pieces.entries())
23
+ regions.push({
24
+ id: `${slab.id}#floor${pieces.length > 1 ? `.${index}` : ''}`,
25
+ nodeId: slab.id,
26
+ outer: piece.outer,
27
+ holes: piece.holes,
28
+ y: slab.elevation,
29
+ outdoor: slab.outdoor,
30
+ shape: 'exact',
31
+ });
32
+ }
33
+ floors.set(floor.id, regions);
34
+ }
35
+ return { floors, skipped };
36
+ }
@@ -0,0 +1,7 @@
1
+ export { catalogueKey } from './catalogue.js';
2
+ export { type UsageIssue, usageIssues } from './findings.js';
3
+ export { sdfChecksFromEnv, sdfChecksOn, setSdfChecks } from './flag.js';
4
+ export { measureUsage, type UsageMeasure } from './measure.js';
5
+ export { usageShapes } from './shapes.js';
6
+ export type { FloorRegion, LevelShapes, Prism, PrismKind, Skipped, UsageShapes } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/spatial/usage-field/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,KAAK,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { catalogueKey } from './catalogue.js';
2
+ export { usageIssues } from './findings.js';
3
+ export { sdfChecksFromEnv, sdfChecksOn, setSdfChecks } from './flag.js';
4
+ export { measureUsage } from './measure.js';
5
+ export { usageShapes } from './shapes.js';
@@ -0,0 +1,38 @@
1
+ import type { AnyNode, ItemNode } from '../../schema/index.js';
2
+ import { getLevelElevations } from '../../services/storey.js';
3
+ import { type SupportCache } from './support.js';
4
+ import type { Prism, Skipped } from './types.js';
5
+ import type { Nodes } from './walls.js';
6
+ /** A stored shape no looser than this is read as the build's own outline. */
7
+ export declare const EXACT_SHAPE_TOLERANCE_M = 0.02;
8
+ export type ItemShapes = {
9
+ itemId: string;
10
+ levelId: string | null;
11
+ prisms: Prism[];
12
+ };
13
+ export type ItemContext = {
14
+ nodes: Nodes;
15
+ byId: Map<string, AnyNode>;
16
+ elevations: ReturnType<typeof getLevelElevations>;
17
+ supportCache: SupportCache;
18
+ };
19
+ export declare const itemContext: (nodes: Nodes) => ItemContext;
20
+ /** One item as prisms in absolute building metres; or `unshaped` with what it is hosted by, or `skipped` with why. */
21
+ export declare function itemShapesOf(item: ItemNode, { nodes, byId, elevations, supportCache }: ItemContext): {
22
+ shapes: ItemShapes;
23
+ } | {
24
+ unshaped: string;
25
+ } | {
26
+ skipped: Skipped;
27
+ };
28
+ /**
29
+ * Every item as prisms in absolute building metres, filed under its level. An item stands on the
30
+ * floor under it, on the item that hosts it, or on a wall; one hosted by a ceiling, a roof or a block
31
+ * is counted in `unshaped`. Its outline is its script's stored shape when it has one, else a box.
32
+ */
33
+ export declare function itemBodies(nodes: Nodes): {
34
+ items: ItemShapes[];
35
+ skipped: Skipped[];
36
+ unshaped: Record<string, number>;
37
+ };
38
+ //# sourceMappingURL=items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../src/spatial/usage-field/items.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAiB,QAAQ,EAAY,MAAM,cAAc,CAAA;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAQ1D,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,KAAK,EAAE,KAAK,EAAQ,OAAO,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAKpC,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,OAAO,CAAA;AAG3C,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,CAAA;AAuLpF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC1B,UAAU,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;IACjD,YAAY,EAAE,YAAY,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,WAAW,UAAW,KAAK,KAAG,WAKzC,CAAA;AAEF,sHAAsH;AACtH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,EACd,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,WAAW,GACrD;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CA8DtE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG;IACxC,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,OAAO,EAAE,OAAO,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC,CAaA"}