@pascal-app/core 1.0.0-beta.5 → 1.0.1

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 (417) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -0
  3. package/dist/capture/index.d.ts +3 -0
  4. package/dist/capture/index.d.ts.map +1 -0
  5. package/dist/capture/index.js +2 -0
  6. package/dist/capture/schema.d.ts +417 -0
  7. package/dist/capture/schema.d.ts.map +1 -0
  8. package/dist/capture/schema.js +350 -0
  9. package/dist/capture/source.d.ts +60 -0
  10. package/dist/capture/source.d.ts.map +1 -0
  11. package/dist/capture/source.js +254 -0
  12. package/dist/events/bus.d.ts +58 -7
  13. package/dist/events/bus.d.ts.map +1 -1
  14. package/dist/events/hidden-wall-pointer-hold.d.ts +28 -0
  15. package/dist/events/hidden-wall-pointer-hold.d.ts.map +1 -0
  16. package/dist/events/hidden-wall-pointer-hold.js +37 -0
  17. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +4 -4
  18. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  19. package/dist/hooks/spatial-grid/floor-placed-elevation.js +7 -12
  20. package/dist/hooks/spatial-grid/floor-placed-footprints.d.ts +4 -0
  21. package/dist/hooks/spatial-grid/floor-placed-footprints.d.ts.map +1 -0
  22. package/dist/hooks/spatial-grid/floor-placed-footprints.js +7 -0
  23. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +5 -8
  24. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  25. package/dist/hooks/spatial-grid/spatial-grid-manager.js +23 -106
  26. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +2931 -2
  27. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  28. package/dist/hooks/spatial-grid/spatial-grid-sync.js +207 -30
  29. package/dist/hooks/spatial-grid/support-host-patch.d.ts +45 -1
  30. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
  31. package/dist/hooks/spatial-grid/support-host-patch.js +174 -9
  32. package/dist/hooks/spatial-grid/use-spatial-query.d.ts +1 -1
  33. package/dist/hooks/spatial-grid/use-spatial-query.js +1 -1
  34. package/dist/index.d.ts +74 -64
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +74 -61
  37. package/dist/lib/asset-storage.d.ts.map +1 -1
  38. package/dist/lib/asset-storage.js +4 -1
  39. package/dist/lib/door-operation.d.ts +1 -1
  40. package/dist/lib/item-polygon-overlap.d.ts +6 -0
  41. package/dist/lib/item-polygon-overlap.d.ts.map +1 -0
  42. package/dist/lib/item-polygon-overlap.js +67 -0
  43. package/dist/lib/level-name.d.ts +1 -1
  44. package/dist/lib/measurement-geometry.d.ts +4 -4
  45. package/dist/lib/plan-footprint.d.ts +41 -0
  46. package/dist/lib/plan-footprint.d.ts.map +1 -0
  47. package/dist/lib/plan-footprint.js +58 -0
  48. package/dist/lib/polygon-union.d.ts +4 -0
  49. package/dist/lib/polygon-union.d.ts.map +1 -0
  50. package/dist/lib/polygon-union.js +306 -0
  51. package/dist/lib/roof-overlap.d.ts +32 -0
  52. package/dist/lib/roof-overlap.d.ts.map +1 -0
  53. package/dist/lib/roof-overlap.js +72 -0
  54. package/dist/lib/room-topology-index.d.ts +1 -1
  55. package/dist/lib/room-topology-index.js +1 -1
  56. package/dist/lib/selection-proxy.d.ts +1 -1
  57. package/dist/lib/slab-polygon.d.ts +36 -3
  58. package/dist/lib/slab-polygon.d.ts.map +1 -1
  59. package/dist/lib/slab-polygon.js +135 -29
  60. package/dist/lib/space-detection.d.ts +12 -1
  61. package/dist/lib/space-detection.d.ts.map +1 -1
  62. package/dist/lib/space-detection.js +58 -25
  63. package/dist/lib/terrain-brush.d.ts +1 -1
  64. package/dist/lib/terrain-brush.js +1 -1
  65. package/dist/lib/terrain-codec.d.ts +2 -2
  66. package/dist/lib/terrain-codec.js +1 -1
  67. package/dist/lib/terrain-raycast.d.ts +1 -1
  68. package/dist/lib/terrain-raycast.js +1 -1
  69. package/dist/lib/terrain-source.d.ts +3 -3
  70. package/dist/lib/terrain-source.js +3 -3
  71. package/dist/lib/terrain-support.d.ts +1 -1
  72. package/dist/lib/terrain-support.js +3 -3
  73. package/dist/lib/unit-containment.d.ts +19 -0
  74. package/dist/lib/unit-containment.d.ts.map +1 -0
  75. package/dist/lib/unit-containment.js +158 -0
  76. package/dist/lib/unit-report.d.ts +19 -0
  77. package/dist/lib/unit-report.d.ts.map +1 -0
  78. package/dist/lib/unit-report.js +36 -0
  79. package/dist/lib/wall-distance.d.ts +2 -2
  80. package/dist/lib/wall-distance.js +1 -1
  81. package/dist/lib/zone-quantities.d.ts +1 -1
  82. package/dist/lib/zone-quantities.js +7 -7
  83. package/dist/material-library.d.ts +1 -1
  84. package/dist/material-library.js +1 -1
  85. package/dist/procedural-items/fixtures.d.ts +261 -0
  86. package/dist/procedural-items/fixtures.d.ts.map +1 -0
  87. package/dist/procedural-items/fixtures.js +349 -0
  88. package/dist/procedural-items/index.d.ts +10 -0
  89. package/dist/procedural-items/index.d.ts.map +1 -0
  90. package/dist/procedural-items/index.js +9 -0
  91. package/dist/procedural-items/integration.d.ts +92 -0
  92. package/dist/procedural-items/integration.d.ts.map +1 -0
  93. package/dist/procedural-items/integration.js +19 -0
  94. package/dist/procedural-items/library-colors.d.ts +56 -0
  95. package/dist/procedural-items/library-colors.d.ts.map +1 -0
  96. package/dist/procedural-items/library-colors.js +84 -0
  97. package/dist/procedural-items/materials.d.ts +5 -0
  98. package/dist/procedural-items/materials.d.ts.map +1 -0
  99. package/dist/procedural-items/materials.js +47 -0
  100. package/dist/procedural-items/node.d.ts +280 -0
  101. package/dist/procedural-items/node.d.ts.map +1 -0
  102. package/dist/procedural-items/node.js +71 -0
  103. package/dist/procedural-items/placement.d.ts +7 -0
  104. package/dist/procedural-items/placement.d.ts.map +1 -0
  105. package/dist/procedural-items/placement.js +48 -0
  106. package/dist/procedural-items/query.d.ts +50 -0
  107. package/dist/procedural-items/query.d.ts.map +1 -0
  108. package/dist/procedural-items/query.js +298 -0
  109. package/dist/procedural-items/recipe.d.ts +144 -0
  110. package/dist/procedural-items/recipe.d.ts.map +1 -0
  111. package/dist/procedural-items/recipe.js +372 -0
  112. package/dist/procedural-items/spatial.d.ts +19 -0
  113. package/dist/procedural-items/spatial.d.ts.map +1 -0
  114. package/dist/procedural-items/spatial.js +39 -0
  115. package/dist/registry/__bench__/relations-resolver.bench.js +2 -2
  116. package/dist/registry/handles.d.ts +36 -7
  117. package/dist/registry/handles.d.ts.map +1 -1
  118. package/dist/registry/index.d.ts +6 -7
  119. package/dist/registry/index.d.ts.map +1 -1
  120. package/dist/registry/index.js +4 -5
  121. package/dist/registry/registry.d.ts +13 -6
  122. package/dist/registry/registry.d.ts.map +1 -1
  123. package/dist/registry/registry.js +37 -4
  124. package/dist/registry/relations-resolver.d.ts +2 -2
  125. package/dist/registry/relations-resolver.js +1 -1
  126. package/dist/registry/scene-api.d.ts +18 -2
  127. package/dist/registry/scene-api.d.ts.map +1 -1
  128. package/dist/registry/scene-api.js +50 -2
  129. package/dist/registry/subtree.d.ts +1 -1
  130. package/dist/registry/subtree.js +2 -2
  131. package/dist/registry/types.d.ts +246 -21
  132. package/dist/registry/types.d.ts.map +1 -1
  133. package/dist/registry/use-registry-version.js +1 -1
  134. package/dist/registry/validate-relations.d.ts +4 -0
  135. package/dist/registry/validate-relations.d.ts.map +1 -0
  136. package/dist/registry/validate-relations.js +22 -0
  137. package/dist/schema/__bench__/node-parsers.bench.d.ts +24 -0
  138. package/dist/schema/__bench__/node-parsers.bench.d.ts.map +1 -0
  139. package/dist/schema/__bench__/node-parsers.bench.js +314 -0
  140. package/dist/schema/__fixtures__/node-fixtures.d.ts +28 -0
  141. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -0
  142. package/dist/schema/__fixtures__/node-fixtures.js +127 -0
  143. package/dist/schema/base.d.ts +1 -1
  144. package/dist/schema/base.d.ts.map +1 -1
  145. package/dist/schema/base.js +9 -2
  146. package/dist/schema/collections.d.ts +1 -1
  147. package/dist/schema/collections.js +1 -1
  148. package/dist/schema/compiled-node-parsers.d.ts +40 -0
  149. package/dist/schema/compiled-node-parsers.d.ts.map +1 -0
  150. package/dist/schema/compiled-node-parsers.js +95 -0
  151. package/dist/schema/index.d.ts +73 -66
  152. package/dist/schema/index.d.ts.map +1 -1
  153. package/dist/schema/index.js +65 -57
  154. package/dist/schema/material.d.ts +1 -0
  155. package/dist/schema/material.d.ts.map +1 -1
  156. package/dist/schema/material.js +2 -1
  157. package/dist/schema/nodes/automatic-downspout.d.ts +17 -0
  158. package/dist/schema/nodes/automatic-downspout.d.ts.map +1 -0
  159. package/dist/schema/nodes/automatic-downspout.js +237 -0
  160. package/dist/schema/nodes/block.d.ts +107 -0
  161. package/dist/schema/nodes/block.d.ts.map +1 -0
  162. package/dist/schema/nodes/block.js +206 -0
  163. package/dist/schema/nodes/box-vent.d.ts +8 -2
  164. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  165. package/dist/schema/nodes/box-vent.js +4 -2
  166. package/dist/schema/nodes/building.d.ts +2 -2
  167. package/dist/schema/nodes/building.d.ts.map +1 -1
  168. package/dist/schema/nodes/building.js +8 -5
  169. package/dist/schema/nodes/cabinet.d.ts +26 -4
  170. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  171. package/dist/schema/nodes/cabinet.js +29 -8
  172. package/dist/schema/nodes/ceiling.d.ts +2 -2
  173. package/dist/schema/nodes/ceiling.js +5 -5
  174. package/dist/schema/nodes/chimney.d.ts +2 -2
  175. package/dist/schema/nodes/chimney.js +2 -2
  176. package/dist/schema/nodes/column.d.ts +7 -6
  177. package/dist/schema/nodes/column.d.ts.map +1 -1
  178. package/dist/schema/nodes/column.js +3 -2
  179. package/dist/schema/nodes/construction-dimension.d.ts +1 -1
  180. package/dist/schema/nodes/construction-dimension.js +2 -2
  181. package/dist/schema/nodes/cupola.d.ts +9 -1
  182. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  183. package/dist/schema/nodes/cupola.js +4 -2
  184. package/dist/schema/nodes/door.d.ts +1 -1
  185. package/dist/schema/nodes/door.js +2 -2
  186. package/dist/schema/nodes/dormer.d.ts +45 -2
  187. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  188. package/dist/schema/nodes/dormer.js +133 -9
  189. package/dist/schema/nodes/downspout.d.ts +11 -1
  190. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  191. package/dist/schema/nodes/downspout.js +26 -2
  192. package/dist/schema/nodes/duct-fitting.d.ts +18 -1
  193. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -1
  194. package/dist/schema/nodes/duct-fitting.js +26 -5
  195. package/dist/schema/nodes/duct-segment.d.ts +23 -1
  196. package/dist/schema/nodes/duct-segment.d.ts.map +1 -1
  197. package/dist/schema/nodes/duct-segment.js +21 -1
  198. package/dist/schema/nodes/duct-terminal.d.ts +1 -1
  199. package/dist/schema/nodes/duct-terminal.js +1 -1
  200. package/dist/schema/nodes/elevator.d.ts +1 -1
  201. package/dist/schema/nodes/elevator.js +2 -2
  202. package/dist/schema/nodes/eyebrow-vent.d.ts +8 -2
  203. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  204. package/dist/schema/nodes/eyebrow-vent.js +4 -2
  205. package/dist/schema/nodes/fence.d.ts +1 -1
  206. package/dist/schema/nodes/fence.js +2 -2
  207. package/dist/schema/nodes/guide.d.ts +1 -1
  208. package/dist/schema/nodes/guide.js +2 -2
  209. package/dist/schema/nodes/gutter.d.ts +36 -2
  210. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  211. package/dist/schema/nodes/gutter.js +310 -3
  212. package/dist/schema/nodes/hanger-overrides.d.ts +7 -0
  213. package/dist/schema/nodes/hanger-overrides.d.ts.map +1 -0
  214. package/dist/schema/nodes/hanger-overrides.js +6 -0
  215. package/dist/schema/nodes/hvac-equipment.d.ts +1 -1
  216. package/dist/schema/nodes/hvac-equipment.js +1 -1
  217. package/dist/schema/nodes/imported-mesh.d.ts +40 -0
  218. package/dist/schema/nodes/imported-mesh.d.ts.map +1 -0
  219. package/dist/schema/nodes/imported-mesh.js +27 -0
  220. package/dist/schema/nodes/item.d.ts +3 -2
  221. package/dist/schema/nodes/item.d.ts.map +1 -1
  222. package/dist/schema/nodes/item.js +8 -3
  223. package/dist/schema/nodes/lean-to-extension.d.ts +212 -0
  224. package/dist/schema/nodes/lean-to-extension.d.ts.map +1 -0
  225. package/dist/schema/nodes/lean-to-extension.js +114 -0
  226. package/dist/schema/nodes/level.d.ts +2 -2
  227. package/dist/schema/nodes/level.d.ts.map +1 -1
  228. package/dist/schema/nodes/level.js +1 -1
  229. package/dist/schema/nodes/lineset.d.ts +1 -1
  230. package/dist/schema/nodes/lineset.js +1 -1
  231. package/dist/schema/nodes/liquid-line.d.ts +1 -1
  232. package/dist/schema/nodes/liquid-line.js +1 -1
  233. package/dist/schema/nodes/measurement.d.ts +1 -1
  234. package/dist/schema/nodes/measurement.js +2 -2
  235. package/dist/schema/nodes/pipe-fitting.d.ts +10 -2
  236. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -1
  237. package/dist/schema/nodes/pipe-fitting.js +7 -3
  238. package/dist/schema/nodes/pipe-segment.d.ts +24 -2
  239. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -1
  240. package/dist/schema/nodes/pipe-segment.js +21 -1
  241. package/dist/schema/nodes/pipe-trap.d.ts +2 -2
  242. package/dist/schema/nodes/pipe-trap.js +1 -1
  243. package/dist/schema/nodes/ridge-vent.d.ts +2 -2
  244. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  245. package/dist/schema/nodes/ridge-vent.js +7 -4
  246. package/dist/schema/nodes/roof-segment-shape.d.ts +5 -1
  247. package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
  248. package/dist/schema/nodes/roof-segment-shape.js +65 -2
  249. package/dist/schema/nodes/roof-segment-walls.d.ts +4 -2
  250. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
  251. package/dist/schema/nodes/roof-segment-walls.js +2 -2
  252. package/dist/schema/nodes/roof-segment.d.ts +42 -2
  253. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  254. package/dist/schema/nodes/roof-segment.js +81 -4
  255. package/dist/schema/nodes/roof.d.ts +23 -2
  256. package/dist/schema/nodes/roof.d.ts.map +1 -1
  257. package/dist/schema/nodes/roof.js +17 -3
  258. package/dist/schema/nodes/scan.d.ts +19 -2
  259. package/dist/schema/nodes/scan.d.ts.map +1 -1
  260. package/dist/schema/nodes/scan.js +13 -3
  261. package/dist/schema/nodes/shelf.d.ts +3 -3
  262. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  263. package/dist/schema/nodes/shelf.js +3 -4
  264. package/dist/schema/nodes/site.d.ts +1 -1
  265. package/dist/schema/nodes/site.js +2 -2
  266. package/dist/schema/nodes/skylight.d.ts +5 -5
  267. package/dist/schema/nodes/skylight.js +2 -2
  268. package/dist/schema/nodes/slab.d.ts +1 -1
  269. package/dist/schema/nodes/slab.js +3 -3
  270. package/dist/schema/nodes/solar-panel.d.ts +1 -1
  271. package/dist/schema/nodes/solar-panel.js +3 -3
  272. package/dist/schema/nodes/spawn.d.ts +1 -1
  273. package/dist/schema/nodes/spawn.js +1 -1
  274. package/dist/schema/nodes/stair-segment.d.ts +1 -1
  275. package/dist/schema/nodes/stair-segment.js +2 -2
  276. package/dist/schema/nodes/stair.d.ts +2 -2
  277. package/dist/schema/nodes/stair.js +3 -3
  278. package/dist/schema/nodes/structural-grid.d.ts +1 -1
  279. package/dist/schema/nodes/structural-grid.js +1 -1
  280. package/dist/schema/nodes/turbine-vent.d.ts +8 -2
  281. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  282. package/dist/schema/nodes/turbine-vent.js +4 -2
  283. package/dist/schema/nodes/unit.d.ts +33 -0
  284. package/dist/schema/nodes/unit.d.ts.map +1 -0
  285. package/dist/schema/nodes/unit.js +13 -0
  286. package/dist/schema/nodes/wall.d.ts +5 -5
  287. package/dist/schema/nodes/wall.d.ts.map +1 -1
  288. package/dist/schema/nodes/wall.js +13 -6
  289. package/dist/schema/nodes/window.d.ts +10 -3
  290. package/dist/schema/nodes/window.d.ts.map +1 -1
  291. package/dist/schema/nodes/window.js +6 -2
  292. package/dist/schema/nodes/zone.d.ts +2 -2
  293. package/dist/schema/nodes/zone.js +2 -2
  294. package/dist/schema/scene-material.js +2 -2
  295. package/dist/schema/types.d.ts +815 -118
  296. package/dist/schema/types.d.ts.map +1 -1
  297. package/dist/schema/types.js +79 -46
  298. package/dist/services/alignment-anchors.d.ts +6 -11
  299. package/dist/services/alignment-anchors.d.ts.map +1 -1
  300. package/dist/services/alignment-anchors.js +7 -34
  301. package/dist/services/drag-session.d.ts +4 -4
  302. package/dist/services/drag-session.js +1 -1
  303. package/dist/services/hosting.d.ts +4 -10
  304. package/dist/services/hosting.d.ts.map +1 -1
  305. package/dist/services/hosting.js +6 -16
  306. package/dist/services/index.d.ts +16 -13
  307. package/dist/services/index.d.ts.map +1 -1
  308. package/dist/services/index.js +16 -13
  309. package/dist/services/level-height.d.ts +2 -2
  310. package/dist/services/level-height.js +3 -3
  311. package/dist/services/movement.d.ts +3 -3
  312. package/dist/services/movement.js +2 -2
  313. package/dist/services/port-connectivity.d.ts +1 -1
  314. package/dist/services/port-connectivity.js +1 -1
  315. package/dist/services/riser-diagram.d.ts +1 -1
  316. package/dist/services/shelf-board.d.ts +5 -0
  317. package/dist/services/shelf-board.d.ts.map +1 -0
  318. package/dist/services/shelf-board.js +15 -0
  319. package/dist/services/storey.d.ts +2 -2
  320. package/dist/services/storey.js +2 -2
  321. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +13 -0
  322. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +1 -0
  323. package/dist/services/surface-hosting-procedural-parity.fixtures.js +4691 -0
  324. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +1060 -0
  325. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +1 -0
  326. package/dist/services/surface-hosting-shelf-parity.fixtures.js +3127 -0
  327. package/dist/services/surface-hosting.d.ts +88 -0
  328. package/dist/services/surface-hosting.d.ts.map +1 -0
  329. package/dist/services/surface-hosting.js +268 -0
  330. package/dist/services/surface-region.d.ts +8 -0
  331. package/dist/services/surface-region.d.ts.map +1 -0
  332. package/dist/services/surface-region.js +44 -0
  333. package/dist/services/system-graph.d.ts +12 -1
  334. package/dist/services/system-graph.d.ts.map +1 -1
  335. package/dist/services/system-graph.js +36 -6
  336. package/dist/services/validate-dwv.d.ts +1 -1
  337. package/dist/services/validate-dwv.js +1 -1
  338. package/dist/store/actions/node-actions.d.ts +9 -2
  339. package/dist/store/actions/node-actions.d.ts.map +1 -1
  340. package/dist/store/actions/node-actions.js +475 -24
  341. package/dist/store/history-control.d.ts +3 -3
  342. package/dist/store/history-invalidation.d.ts +3 -0
  343. package/dist/store/history-invalidation.d.ts.map +1 -0
  344. package/dist/store/history-invalidation.js +72 -0
  345. package/dist/store/scene-hydration.d.ts +5 -0
  346. package/dist/store/scene-hydration.d.ts.map +1 -0
  347. package/dist/store/scene-hydration.js +57 -0
  348. package/dist/store/use-interactive.d.ts +2 -2
  349. package/dist/store/use-live-terrain.d.ts +1 -1
  350. package/dist/store/use-scene.d.ts +7 -4
  351. package/dist/store/use-scene.d.ts.map +1 -1
  352. package/dist/store/use-scene.js +361 -87
  353. package/dist/systems/elevator/elevator-dispatch.d.ts +2 -2
  354. package/dist/systems/elevator/elevator-dispatch.js +1 -1
  355. package/dist/systems/elevator/elevator-geometry.d.ts +1 -1
  356. package/dist/systems/elevator/elevator-opening-sync.d.ts +1 -1
  357. package/dist/systems/elevator/elevator-opening-sync.js +2 -2
  358. package/dist/systems/elevator/elevator-opening-system.js +3 -3
  359. package/dist/systems/elevator/elevator-runtime.d.ts +3 -3
  360. package/dist/systems/elevator/elevator-runtime.js +3 -3
  361. package/dist/systems/elevator/elevator-service.d.ts +1 -1
  362. package/dist/systems/elevator/elevator-service.js +1 -1
  363. package/dist/systems/fence/fence-centerline.d.ts +2 -2
  364. package/dist/systems/fence/fence-centerline.js +2 -2
  365. package/dist/systems/fence/fence-spline.d.ts +2 -2
  366. package/dist/systems/roof/roof-elevation-system.d.ts +3 -0
  367. package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -0
  368. package/dist/systems/roof/roof-elevation-system.js +94 -0
  369. package/dist/systems/roof/roof-elevation.d.ts +4 -0
  370. package/dist/systems/roof/roof-elevation.d.ts.map +1 -0
  371. package/dist/systems/roof/roof-elevation.js +95 -0
  372. package/dist/systems/roof/roof-footprint.d.ts +17 -0
  373. package/dist/systems/roof/roof-footprint.d.ts.map +1 -0
  374. package/dist/systems/roof/roof-footprint.js +83 -0
  375. package/dist/systems/slab/slab-placement.d.ts +1 -1
  376. package/dist/systems/slab/slab-support.d.ts +1 -1
  377. package/dist/systems/slab/slab-support.js +4 -4
  378. package/dist/systems/stair/stair-flight.d.ts +17 -0
  379. package/dist/systems/stair/stair-flight.d.ts.map +1 -0
  380. package/dist/systems/stair/stair-flight.js +27 -0
  381. package/dist/systems/stair/stair-footprint.d.ts +1 -1
  382. package/dist/systems/stair/stair-opening-preview.d.ts +1621 -1267
  383. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  384. package/dist/systems/stair/stair-opening-preview.js +2 -2
  385. package/dist/systems/stair/stair-opening-sync.d.ts +1 -1
  386. package/dist/systems/stair/stair-opening-sync.js +6 -6
  387. package/dist/systems/stair/stair-opening-system.d.ts +1 -0
  388. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  389. package/dist/systems/stair/stair-opening-system.js +100 -103
  390. package/dist/systems/stair/stair-rise.d.ts +1 -1
  391. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  392. package/dist/systems/stair/stair-rise.js +23 -24
  393. package/dist/systems/wall/wall-curve.d.ts +3 -2
  394. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  395. package/dist/systems/wall/wall-curve.js +73 -0
  396. package/dist/systems/wall/wall-footprint.d.ts +3 -2
  397. package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
  398. package/dist/systems/wall/wall-footprint.js +3 -2
  399. package/dist/systems/wall/wall-mitering.d.ts +1 -1
  400. package/dist/systems/wall/wall-mitering.js +1 -1
  401. package/dist/systems/wall/wall-move.d.ts +1 -1
  402. package/dist/systems/wall/wall-top.d.ts +1 -1
  403. package/dist/systems/wall/wall-topology.d.ts +2 -2
  404. package/dist/systems/wall/wall-topology.js +4 -4
  405. package/dist/utils/clone-scene-graph.d.ts +3 -3
  406. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  407. package/dist/utils/clone-scene-graph.js +35 -3
  408. package/dist/utils/scene-migrations.d.ts +3 -3
  409. package/dist/utils/scene-migrations.js +3 -3
  410. package/dist/utils/vertical-scene-migration.js +5 -5
  411. package/dist/validation/validate-build-json.d.ts +7 -1
  412. package/dist/validation/validate-build-json.d.ts.map +1 -1
  413. package/dist/validation/validate-build-json.js +92 -4
  414. package/package.json +23 -5
  415. package/dist/systems/elevator/elevator-runtime-system.d.ts +0 -2
  416. package/dist/systems/elevator/elevator-runtime-system.d.ts.map +0 -1
  417. package/dist/systems/elevator/elevator-runtime-system.js +0 -8
@@ -1,8 +1,20 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
5
- import { RoofSegmentNode } from './roof-segment';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ import { RoofSegmentNode } from './roof-segment.js';
6
+ export const RoofSupport = z
7
+ .discriminatedUnion('kind', [
8
+ z.object({ kind: z.literal('level') }),
9
+ z.object({ kind: z.literal('walls') }),
10
+ z.object({
11
+ kind: z.literal('roof'),
12
+ roofSegmentId: RoofSegmentNode.shape.id,
13
+ localPosition: z.tuple([z.number(), z.number()]),
14
+ curbHeight: z.number().min(0).default(0.5),
15
+ }),
16
+ ])
17
+ .default({ kind: 'level' });
6
18
  export const RoofNode = BaseNode.extend({
7
19
  id: objectId('roof'),
8
20
  type: nodeType('roof'),
@@ -17,6 +29,7 @@ export const RoofNode = BaseNode.extend({
17
29
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
18
30
  // Rotation around Y axis in radians
19
31
  rotation: z.number().default(0),
32
+ support: RoofSupport,
20
33
  // Child roof segment IDs
21
34
  children: z.array(RoofSegmentNode.shape.id).default([]),
22
35
  }).describe(dedent `
@@ -25,6 +38,7 @@ export const RoofNode = BaseNode.extend({
25
38
  When not being edited, segments are visually combined into a single solid.
26
39
  - position: center position of the roof group
27
40
  - rotation: rotation around Y axis
41
+ - support: custom level placement, spatial wall-top following, or a roof-surface attachment
28
42
  - children: array of RoofSegmentNode IDs
29
43
  `);
30
44
  function getLegacyRoofSurfaceMaterial(node) {
@@ -1,4 +1,11 @@
1
1
  import { z } from 'zod';
2
+ export declare const CaptureSessionReference: z.ZodObject<{
3
+ sessionId: z.ZodString;
4
+ schemaVersion: z.ZodOptional<z.ZodNumber>;
5
+ revisionId: z.ZodOptional<z.ZodString>;
6
+ manifestUrl: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ export declare const ScanLayerVisibility: z.ZodPipe<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodBoolean>>, z.ZodTransform<Record<string, boolean>, Record<string, boolean>>>;
2
9
  export declare const ScanNode: z.ZodObject<{
3
10
  object: z.ZodDefault<z.ZodLiteral<"node">>;
4
11
  name: z.ZodOptional<z.ZodString>;
@@ -14,14 +21,24 @@ export declare const ScanNode: z.ZodObject<{
14
21
  fov: z.ZodOptional<z.ZodNumber>;
15
22
  zoom: z.ZodOptional<z.ZodNumber>;
16
23
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
24
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
25
  id: z.ZodDefault<z.ZodTemplateLiteral<`scan_${string}`>>;
19
26
  type: z.ZodDefault<z.ZodLiteral<"scan">>;
20
- url: z.ZodString;
27
+ url: z.ZodDefault<z.ZodNullable<z.ZodString>>;
28
+ captureSession: z.ZodDefault<z.ZodNullable<z.ZodObject<{
29
+ sessionId: z.ZodString;
30
+ schemaVersion: z.ZodOptional<z.ZodNumber>;
31
+ revisionId: z.ZodOptional<z.ZodString>;
32
+ manifestUrl: z.ZodOptional<z.ZodString>;
33
+ }, z.core.$strip>>>;
34
+ layers: z.ZodPipe<z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodBoolean>>, z.ZodTransform<Record<string, boolean>, Record<string, boolean>>>;
21
35
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
22
36
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
23
37
  scale: z.ZodDefault<z.ZodNumber>;
24
38
  opacity: z.ZodDefault<z.ZodNumber>;
25
39
  }, z.core.$strip>;
40
+ export type CaptureSessionReference = z.infer<typeof CaptureSessionReference>;
41
+ export type CaptureSessionReferenceInput = z.input<typeof CaptureSessionReference>;
42
+ export type ScanLayerVisibility = z.infer<typeof ScanLayerVisibility>;
26
43
  export type ScanNode = z.infer<typeof ScanNode>;
27
44
  //# sourceMappingURL=scan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBAQnB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,eAAO,MAAM,uBAAuB;;;;;iBAElC,CAAA;AAEF,eAAO,MAAM,mBAAmB,mIAGmE,CAAA;AAEnG,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUnB,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC7E,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAClF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACrE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -1,10 +1,20 @@
1
1
  import { z } from 'zod';
2
- import { AssetUrl } from '../asset-url';
3
- import { BaseNode, nodeType, objectId } from '../base';
2
+ import { CaptureSessionLocatorSchema } from '../../capture/schema.js';
3
+ import { AssetUrl } from '../asset-url.js';
4
+ import { BaseNode, nodeType, objectId } from '../base.js';
5
+ export const CaptureSessionReference = CaptureSessionLocatorSchema.extend({
6
+ manifestUrl: AssetUrl.optional(),
7
+ });
8
+ export const ScanLayerVisibility = z
9
+ .record(z.string().min(1), z.boolean())
10
+ .default({ deviceMotion: true, model: true })
11
+ .transform((layers) => ({ deviceMotion: true, model: true, ...layers }));
4
12
  export const ScanNode = BaseNode.extend({
5
13
  id: objectId('scan'),
6
14
  type: nodeType('scan'),
7
- url: AssetUrl,
15
+ url: AssetUrl.nullable().default(null),
16
+ captureSession: CaptureSessionReference.nullable().default(null),
17
+ layers: ScanLayerVisibility,
8
18
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
9
19
  rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
10
20
  scale: z.number().default(1),
@@ -41,10 +41,10 @@ export declare const ShelfNode: z.ZodObject<{
41
41
  fov: z.ZodOptional<z.ZodNumber>;
42
42
  zoom: z.ZodOptional<z.ZodNumber>;
43
43
  }, z.core.$strip>>;
44
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
44
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
45
45
  id: z.ZodDefault<z.ZodTemplateLiteral<`shelf_${string}`>>;
46
46
  type: z.ZodDefault<z.ZodLiteral<"shelf">>;
47
- children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
47
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
48
48
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
49
49
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
50
50
  supportSlabId: z.ZodOptional<z.ZodString>;
@@ -64,9 +64,9 @@ export declare const ShelfNode: z.ZodObject<{
64
64
  withSides: z.ZodDefault<z.ZodBoolean>;
65
65
  withBottom: z.ZodDefault<z.ZodBoolean>;
66
66
  bracketStyle: z.ZodDefault<z.ZodEnum<{
67
+ hidden: "hidden";
67
68
  minimal: "minimal";
68
69
  industrial: "industrial";
69
- hidden: "hidden";
70
70
  }>>;
71
71
  material: z.ZodOptional<z.ZodObject<{
72
72
  id: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"shelf.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/shelf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiEpB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
1
+ {"version":3,"file":"shelf.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/shelf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiEpB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
@@ -1,7 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { BaseNode, nodeType, objectId } from '../base';
3
- import { MaterialSchema } from '../material';
4
- import { ItemNode } from './item';
2
+ import { BaseNode, nodeType, objectId } from '../base.js';
3
+ import { MaterialSchema } from '../material.js';
5
4
  /**
6
5
  * Parametric shelf — a configurable furniture unit with one or more
7
6
  * horizontal boards that host other items.
@@ -39,7 +38,7 @@ export const ShelfNode = BaseNode.extend({
39
38
  // not be rendered, making the commit look like "the item went
40
39
  // somewhere else"). The action's parent-update branch needs the field
41
40
  // present at parse-time so the children array is always defined.
42
- children: z.array(ItemNode.shape.id).default([]),
41
+ children: z.array(z.string()).default([]),
43
42
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
44
43
  rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
45
44
  // Persisted slab-support host — see ItemNode.supportSlabId for the rules.
@@ -14,7 +14,7 @@ export declare const SiteNode: z.ZodObject<{
14
14
  fov: z.ZodOptional<z.ZodNumber>;
15
15
  zoom: z.ZodOptional<z.ZodNumber>;
16
16
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
18
  id: z.ZodDefault<z.ZodTemplateLiteral<`site_${string}`>>;
19
19
  type: z.ZodDefault<z.ZodLiteral<"site">>;
20
20
  polygon: z.ZodDefault<z.ZodOptional<z.ZodObject<{
@@ -1,8 +1,8 @@
1
1
  // lib/scenegraph/schema/nodes/site.ts
2
2
  import dedent from 'dedent';
3
3
  import { z } from 'zod';
4
- import { BaseNode, nodeType, objectId } from '../base';
5
- import { TerrainData } from '../terrain';
4
+ import { BaseNode, nodeType, objectId } from '../base.js';
5
+ import { TerrainData } from '../terrain.js';
6
6
  // 2D Polygon
7
7
  const PropertyLineData = z.object({
8
8
  type: z.literal('polygon'),
@@ -14,15 +14,15 @@ export declare const SkylightType: z.ZodEnum<{
14
14
  }>;
15
15
  export type SkylightType = (typeof SKYLIGHT_TYPE_ORDER)[number];
16
16
  export declare const SkylightOpeningSide: z.ZodEnum<{
17
+ top: "top";
17
18
  right: "right";
18
19
  left: "left";
19
- top: "top";
20
20
  bottom: "bottom";
21
21
  }>;
22
22
  export type SkylightOpeningSide = z.infer<typeof SkylightOpeningSide>;
23
23
  export declare const SkylightSlideDirection: z.ZodEnum<{
24
- z: "z";
25
24
  x: "x";
25
+ z: "z";
26
26
  }>;
27
27
  export type SkylightSlideDirection = z.infer<typeof SkylightSlideDirection>;
28
28
  export type SkylightTypePreset = {
@@ -168,7 +168,7 @@ export declare const SkylightNode: z.ZodObject<{
168
168
  fov: z.ZodOptional<z.ZodNumber>;
169
169
  zoom: z.ZodOptional<z.ZodNumber>;
170
170
  }, z.core.$strip>>;
171
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
171
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
172
172
  id: z.ZodDefault<z.ZodTemplateLiteral<`skylight_${string}`>>;
173
173
  type: z.ZodDefault<z.ZodLiteral<"skylight">>;
174
174
  material: z.ZodOptional<z.ZodObject<{
@@ -256,17 +256,17 @@ export declare const SkylightNode: z.ZodObject<{
256
256
  lanternTopScale: z.ZodDefault<z.ZodNumber>;
257
257
  openingAngle: z.ZodDefault<z.ZodNumber>;
258
258
  openingSide: z.ZodDefault<z.ZodEnum<{
259
+ top: "top";
259
260
  right: "right";
260
261
  left: "left";
261
- top: "top";
262
262
  bottom: "bottom";
263
263
  }>>;
264
264
  operationState: z.ZodDefault<z.ZodNumber>;
265
265
  motorHousing: z.ZodDefault<z.ZodBoolean>;
266
266
  slideFraction: z.ZodDefault<z.ZodNumber>;
267
267
  slideDirection: z.ZodDefault<z.ZodEnum<{
268
- z: "z";
269
268
  x: "x";
269
+ z: "z";
270
270
  }>>;
271
271
  trackWidth: z.ZodDefault<z.ZodNumber>;
272
272
  motorHousingSize: z.ZodDefault<z.ZodNumber>;
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const SkylightMaterialRole = z.enum(['frame', 'glass']);
6
6
  export const SKYLIGHT_TYPE_ORDER = ['flat', 'walk-on', 'lantern', 'opening', 'sliding'];
7
7
  export const SkylightType = z.enum(SKYLIGHT_TYPE_ORDER);
@@ -15,7 +15,7 @@ export declare const SlabNode: z.ZodObject<{
15
15
  fov: z.ZodOptional<z.ZodNumber>;
16
16
  zoom: z.ZodOptional<z.ZodNumber>;
17
17
  }, z.core.$strip>>;
18
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
19
19
  id: z.ZodDefault<z.ZodTemplateLiteral<`slab_${string}`>>;
20
20
  type: z.ZodDefault<z.ZodLiteral<"slab">>;
21
21
  material: z.ZodOptional<z.ZodObject<{
@@ -1,8 +1,8 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
5
- import { SurfaceHoleMetadata } from './surface-hole-metadata';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ import { SurfaceHoleMetadata } from './surface-hole-metadata.js';
6
6
  // Edit-time floor for `thickness` — a thinner slab z-fights the ceiling's
7
7
  // −0.01 underside offset. Applies to edits only; migration writes legacy
8
8
  // intervals verbatim (including degenerate zero-thickness slabs).
@@ -19,7 +19,7 @@ export declare const SolarPanelNode: z.ZodObject<{
19
19
  fov: z.ZodOptional<z.ZodNumber>;
20
20
  zoom: z.ZodOptional<z.ZodNumber>;
21
21
  }, z.core.$strip>>;
22
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
22
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
23
23
  id: z.ZodDefault<z.ZodTemplateLiteral<`solarpanel_${string}`>>;
24
24
  type: z.ZodDefault<z.ZodLiteral<"solar-panel">>;
25
25
  material: z.ZodOptional<z.ZodObject<{
@@ -1,8 +1,8 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { SolarPanelPresetKey } from '../../solar-panel-presets';
4
- import { BaseNode, nodeType, objectId } from '../base';
5
- import { MaterialSchema } from '../material';
3
+ import { SolarPanelPresetKey } from '../../solar-panel-presets.js';
4
+ import { BaseNode, nodeType, objectId } from '../base.js';
5
+ import { MaterialSchema } from '../material.js';
6
6
  export const SolarPanelMaterialRole = z.enum(['frame', 'panel']);
7
7
  export const SolarPanelNode = BaseNode.extend({
8
8
  id: objectId('solarpanel'),
@@ -14,7 +14,7 @@ export declare const SpawnNode: z.ZodObject<{
14
14
  fov: z.ZodOptional<z.ZodNumber>;
15
15
  zoom: z.ZodOptional<z.ZodNumber>;
16
16
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
18
  id: z.ZodDefault<z.ZodTemplateLiteral<`spawn_${string}`>>;
19
19
  type: z.ZodDefault<z.ZodLiteral<"spawn">>;
20
20
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { BaseNode, nodeType, objectId } from '../base';
2
+ import { BaseNode, nodeType, objectId } from '../base.js';
3
3
  export const SpawnNode = BaseNode.extend({
4
4
  id: objectId('spawn'),
5
5
  type: nodeType('spawn'),
@@ -25,7 +25,7 @@ export declare const StairSegmentNode: z.ZodObject<{
25
25
  fov: z.ZodOptional<z.ZodNumber>;
26
26
  zoom: z.ZodOptional<z.ZodNumber>;
27
27
  }, z.core.$strip>>;
28
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
28
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
29
29
  id: z.ZodDefault<z.ZodTemplateLiteral<`sseg_${string}`>>;
30
30
  type: z.ZodDefault<z.ZodLiteral<"stair-segment">>;
31
31
  material: z.ZodOptional<z.ZodObject<{
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const StairSegmentType = z.enum(['stair', 'landing']);
6
6
  export const AttachmentSide = z.enum(['front', 'left', 'right']);
7
7
  export const StairSegmentNode = BaseNode.extend({
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import type { MaterialSchema as MaterialSchemaType } from '../material';
2
+ import type { MaterialSchema as MaterialSchemaType } from '../material.js';
3
3
  export declare const StairRailingMode: z.ZodEnum<{
4
4
  right: "right";
5
5
  left: "left";
@@ -43,7 +43,7 @@ export declare const StairNode: z.ZodObject<{
43
43
  fov: z.ZodOptional<z.ZodNumber>;
44
44
  zoom: z.ZodOptional<z.ZodNumber>;
45
45
  }, z.core.$strip>>;
46
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
46
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
47
47
  id: z.ZodDefault<z.ZodTemplateLiteral<`stair_${string}`>>;
48
48
  type: z.ZodDefault<z.ZodLiteral<"stair">>;
49
49
  material: z.ZodOptional<z.ZodObject<{
@@ -1,8 +1,8 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
5
- import { StairSegmentNode } from './stair-segment';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ import { StairSegmentNode } from './stair-segment.js';
6
6
  export const StairRailingMode = z.enum(['none', 'left', 'right', 'both']);
7
7
  export const StairType = z.enum(['straight', 'curved', 'spiral']);
8
8
  export const StairTopLandingMode = z.enum(['none', 'integrated']);
@@ -14,7 +14,7 @@ export declare const StructuralGridNode: z.ZodObject<{
14
14
  fov: z.ZodOptional<z.ZodNumber>;
15
15
  zoom: z.ZodOptional<z.ZodNumber>;
16
16
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
18
  id: z.ZodDefault<z.ZodTemplateLiteral<`structural-grid_${string}`>>;
19
19
  type: z.ZodDefault<z.ZodLiteral<"structural-grid">>;
20
20
  start: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
@@ -1,6 +1,6 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
4
  export const StructuralGridNode = BaseNode.extend({
5
5
  id: objectId('structural-grid'),
6
6
  type: nodeType('structural-grid'),
@@ -1,4 +1,9 @@
1
1
  import { z } from 'zod';
2
+ export declare const TurbineVentMaterialRole: z.ZodEnum<{
3
+ base: "base";
4
+ head: "head";
5
+ }>;
6
+ export type TurbineVentMaterialRole = z.infer<typeof TurbineVentMaterialRole>;
2
7
  export declare const TurbineVentNode: z.ZodObject<{
3
8
  object: z.ZodDefault<z.ZodLiteral<"node">>;
4
9
  name: z.ZodOptional<z.ZodString>;
@@ -14,7 +19,7 @@ export declare const TurbineVentNode: z.ZodObject<{
14
19
  fov: z.ZodOptional<z.ZodNumber>;
15
20
  zoom: z.ZodOptional<z.ZodNumber>;
16
21
  }, z.core.$strip>>;
17
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
22
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
23
  id: z.ZodDefault<z.ZodTemplateLiteral<`tvent_${string}`>>;
19
24
  type: z.ZodDefault<z.ZodLiteral<"turbine-vent">>;
20
25
  material: z.ZodOptional<z.ZodObject<{
@@ -49,6 +54,7 @@ export declare const TurbineVentNode: z.ZodObject<{
49
54
  scale: z.ZodOptional<z.ZodNumber>;
50
55
  }, z.core.$strip>>;
51
56
  }, z.core.$strip>>;
57
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
52
58
  materialPreset: z.ZodDefault<z.ZodString>;
53
59
  roofSegmentId: z.ZodOptional<z.ZodString>;
54
60
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -60,8 +66,8 @@ export declare const TurbineVentNode: z.ZodObject<{
60
66
  vaneCount: z.ZodDefault<z.ZodNumber>;
61
67
  spinSpeed: z.ZodDefault<z.ZodNumber>;
62
68
  style: z.ZodDefault<z.ZodEnum<{
63
- globe: "globe";
64
69
  cylinder: "cylinder";
70
+ globe: "globe";
65
71
  }>>;
66
72
  }, z.core.$strip>;
67
73
  export type TurbineVentNode = z.infer<typeof TurbineVentNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"turbine-vent.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/turbine-vent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0C3B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA"}
1
+ {"version":3,"file":"turbine-vent.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/turbine-vent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,uBAAuB;;;EAA2B,CAAA;AAC/D,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAE7E,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2C3B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA"}
@@ -1,11 +1,13 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ export const TurbineVentMaterialRole = z.enum(['base', 'head']);
5
6
  export const TurbineVentNode = BaseNode.extend({
6
7
  id: objectId('tvent'),
7
8
  type: nodeType('turbine-vent'),
8
9
  material: MaterialSchema.optional(),
10
+ slots: z.record(z.string(), z.string()).optional(),
9
11
  // Default to the white preset so a freshly-placed turbine reads as
10
12
  // clean painted/galvanised metal and the paint inspector shows "White"
11
13
  // as the current selection (matches box-vent's reasoning).
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ export declare const UNIT_KINDS: readonly ["apartment", "hotel-room", "commercial", "common"];
3
+ export type UnitKind = (typeof UNIT_KINDS)[number];
4
+ export declare const DEFAULT_UNIT_COLOR = "#f59e0b";
5
+ export declare const UnitNode: z.ZodObject<{
6
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
7
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
8
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
9
+ camera: z.ZodOptional<z.ZodObject<{
10
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
11
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
12
+ mode: z.ZodDefault<z.ZodEnum<{
13
+ perspective: "perspective";
14
+ orthographic: "orthographic";
15
+ }>>;
16
+ fov: z.ZodOptional<z.ZodNumber>;
17
+ zoom: z.ZodOptional<z.ZodNumber>;
18
+ }, z.core.$strip>>;
19
+ id: z.ZodDefault<z.ZodTemplateLiteral<`unit_${string}`>>;
20
+ type: z.ZodDefault<z.ZodLiteral<"unit">>;
21
+ name: z.ZodDefault<z.ZodString>;
22
+ kind: z.ZodDefault<z.ZodEnum<{
23
+ apartment: "apartment";
24
+ "hotel-room": "hotel-room";
25
+ commercial: "commercial";
26
+ common: "common";
27
+ }>>;
28
+ members: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`zone_${string}`>>>>;
29
+ color: z.ZodDefault<z.ZodString>;
30
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
31
+ }, z.core.$strip>;
32
+ export type UnitNode = z.infer<typeof UnitNode>;
33
+ //# sourceMappingURL=unit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/unit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,UAAU,8DAA+D,CAAA;AACtF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAClD,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAE3C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQnB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ import { BaseNode, nodeType, objectId } from '../base.js';
3
+ export const UNIT_KINDS = ['apartment', 'hotel-room', 'commercial', 'common'];
4
+ export const DEFAULT_UNIT_COLOR = '#f59e0b';
5
+ export const UnitNode = BaseNode.extend({
6
+ id: objectId('unit'),
7
+ type: nodeType('unit'),
8
+ name: z.string().default('Unit'),
9
+ kind: z.enum(UNIT_KINDS).default('apartment'),
10
+ members: z.array(objectId('zone')).default([]),
11
+ color: z.string().default(DEFAULT_UNIT_COLOR),
12
+ metadata: z.record(z.string(), z.unknown()).optional().default({}),
13
+ });
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { MaterialSchema } from '../material';
2
+ import { MaterialSchema } from '../material.js';
3
3
  export declare const WallTreatmentSide: z.ZodEnum<{
4
4
  interior: "interior";
5
5
  exterior: "exterior";
@@ -92,7 +92,7 @@ export declare const WallFaceBandConfig: z.ZodPreprocess<z.ZodObject<{
92
92
  lowerHeight: z.ZodDefault<z.ZodNumber>;
93
93
  middleHeight: z.ZodDefault<z.ZodNumber>;
94
94
  upperHeight: z.ZodDefault<z.ZodNumber>;
95
- }, z.core.$strip>>;
95
+ }, z.core.$strip>, unknown>;
96
96
  export type WallFaceBandConfig = z.infer<typeof WallFaceBandConfig>;
97
97
  export declare const WALL_FACE_BAND_DEFAULT: WallFaceBandConfig;
98
98
  export declare const WALL_SKIRTING_SLOT_DEFAULT = "library:preset-softwhite";
@@ -138,10 +138,10 @@ export declare const WallNode: z.ZodObject<{
138
138
  fov: z.ZodOptional<z.ZodNumber>;
139
139
  zoom: z.ZodOptional<z.ZodNumber>;
140
140
  }, z.core.$strip>>;
141
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
141
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
142
142
  id: z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>;
143
143
  type: z.ZodDefault<z.ZodLiteral<"wall">>;
144
- children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`door_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>]>>>;
144
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`procedural-item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`door_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`leanto_${string}`>>]>>>;
145
145
  material: z.ZodOptional<z.ZodObject<{
146
146
  id: z.ZodOptional<z.ZodString>;
147
147
  preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
@@ -254,7 +254,7 @@ export declare const WallNode: z.ZodObject<{
254
254
  lowerHeight: z.ZodDefault<z.ZodNumber>;
255
255
  middleHeight: z.ZodDefault<z.ZodNumber>;
256
256
  upperHeight: z.ZodDefault<z.ZodNumber>;
257
- }, z.core.$strip>>>;
257
+ }, z.core.$strip>, unknown>>;
258
258
  skirting: z.ZodOptional<z.ZodObject<{
259
259
  enabled: z.ZodDefault<z.ZodBoolean>;
260
260
  sides: z.ZodDefault<z.ZodEnum<{
@@ -1 +1 @@
1
- {"version":3,"file":"wall.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/wall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wall.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/wall.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
5
- import { DoorNode } from './door';
6
- import { ItemNode } from './item';
7
- import { WindowNode } from './window';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ import { DoorNode } from './door.js';
6
+ import { ItemNode } from './item.js';
7
+ import { LeanToExtensionNode } from './lean-to-extension.js';
8
+ import { WindowNode } from './window.js';
8
9
  export const WallTreatmentSide = z.enum(['interior', 'exterior', 'both']);
9
10
  export const WallTrimProfile = z.enum([
10
11
  'flat',
@@ -112,7 +113,13 @@ export const WallNode = BaseNode.extend({
112
113
  id: objectId('wall'),
113
114
  type: nodeType('wall'),
114
115
  children: z
115
- .array(z.union([ItemNode.shape.id, DoorNode.shape.id, WindowNode.shape.id]))
116
+ .array(z.union([
117
+ ItemNode.shape.id,
118
+ objectId('procedural-item'),
119
+ DoorNode.shape.id,
120
+ WindowNode.shape.id,
121
+ LeanToExtensionNode.shape.id,
122
+ ]))
116
123
  .default([]),
117
124
  // Legacy single-material wall finish. Read for backward compatibility only.
118
125
  material: MaterialSchema.optional(),
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  export declare const WindowType: z.ZodEnum<{
3
- sliding: "sliding";
4
3
  fixed: "fixed";
4
+ sliding: "sliding";
5
5
  casement: "casement";
6
6
  awning: "awning";
7
7
  hopper: "hopper";
@@ -39,7 +39,7 @@ export declare const WindowNode: z.ZodObject<{
39
39
  fov: z.ZodOptional<z.ZodNumber>;
40
40
  zoom: z.ZodOptional<z.ZodNumber>;
41
41
  }, z.core.$strip>>;
42
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
42
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
43
43
  id: z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>;
44
44
  type: z.ZodDefault<z.ZodLiteral<"window">>;
45
45
  material: z.ZodOptional<z.ZodObject<{
@@ -82,6 +82,13 @@ export declare const WindowNode: z.ZodObject<{
82
82
  back: "back";
83
83
  }>>;
84
84
  wallId: z.ZodOptional<z.ZodString>;
85
+ dormerId: z.ZodOptional<z.ZodString>;
86
+ dormerFace: z.ZodOptional<z.ZodEnum<{
87
+ front: "front";
88
+ back: "back";
89
+ right: "right";
90
+ left: "left";
91
+ }>>;
85
92
  roofSegmentId: z.ZodOptional<z.ZodString>;
86
93
  roofFace: z.ZodOptional<z.ZodEnum<{
87
94
  front: "front";
@@ -113,8 +120,8 @@ export declare const WindowNode: z.ZodObject<{
113
120
  opening: "opening";
114
121
  }>>;
115
122
  windowType: z.ZodDefault<z.ZodEnum<{
116
- sliding: "sliding";
117
123
  fixed: "fixed";
124
+ sliding: "sliding";
118
125
  casement: "casement";
119
126
  awning: "awning";
120
127
  hopper: "hopper";
@@ -1 +1 @@
1
- {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/window.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,UAAU;;;;;;;;;;;EAWrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,eAAO,MAAM,sBAAsB;;;EAAgC,CAAA;AACnE,eAAO,MAAM,wBAAwB;;;;;EAKnC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAC3E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmFrB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA"}
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/window.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,UAAU;;;;;;;;;;;EAWrB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA;AAEnD,eAAO,MAAM,sBAAsB;;;EAAgC,CAAA;AACnE,eAAO,MAAM,wBAAwB;;;;;EAKnC,CAAA;AACF,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAC3E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAE/E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuFrB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA"}