@pascal-app/core 0.9.1 → 1.0.0-beta.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 (378) hide show
  1. package/README.md +17 -10
  2. package/dist/events/bus.d.ts +49 -2
  3. package/dist/events/bus.d.ts.map +1 -1
  4. package/dist/hooks/scene-registry/item-clip-registry.d.ts +18 -0
  5. package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -0
  6. package/dist/hooks/scene-registry/item-clip-registry.js +10 -0
  7. package/dist/hooks/scene-registry/scene-registry.d.ts +8 -1
  8. package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
  9. package/dist/hooks/scene-registry/scene-registry.js +27 -1
  10. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +17 -1
  11. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  12. package/dist/hooks/spatial-grid/floor-placed-elevation.js +61 -8
  13. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +135 -28
  14. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  15. package/dist/hooks/spatial-grid/spatial-grid-manager.js +427 -271
  16. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +46 -1
  17. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  18. package/dist/hooks/spatial-grid/spatial-grid-sync.js +208 -9
  19. package/dist/hooks/spatial-grid/support-host-id.d.ts +3 -0
  20. package/dist/hooks/spatial-grid/support-host-id.d.ts.map +1 -0
  21. package/dist/hooks/spatial-grid/support-host-id.js +2 -0
  22. package/dist/hooks/spatial-grid/support-host-patch.d.ts +51 -0
  23. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -0
  24. package/dist/hooks/spatial-grid/support-host-patch.js +164 -0
  25. package/dist/index.d.ts +33 -11
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +32 -10
  28. package/dist/lib/level-name.d.ts +4 -0
  29. package/dist/lib/level-name.d.ts.map +1 -0
  30. package/dist/lib/level-name.js +10 -0
  31. package/dist/lib/measurement-geometry.d.ts +23 -0
  32. package/dist/lib/measurement-geometry.d.ts.map +1 -0
  33. package/dist/lib/measurement-geometry.js +249 -0
  34. package/dist/lib/polygon-geometry.d.ts +0 -1
  35. package/dist/lib/polygon-geometry.d.ts.map +1 -1
  36. package/dist/lib/polygon-geometry.js +0 -18
  37. package/dist/lib/selection-proxy.d.ts +4 -0
  38. package/dist/lib/selection-proxy.d.ts.map +1 -0
  39. package/dist/lib/selection-proxy.js +12 -0
  40. package/dist/lib/slab-polygon.d.ts +31 -2
  41. package/dist/lib/slab-polygon.d.ts.map +1 -1
  42. package/dist/lib/slab-polygon.js +557 -31
  43. package/dist/lib/slots.d.ts +14 -0
  44. package/dist/lib/slots.d.ts.map +1 -0
  45. package/dist/lib/slots.js +26 -0
  46. package/dist/lib/space-detection.d.ts +40 -6
  47. package/dist/lib/space-detection.d.ts.map +1 -1
  48. package/dist/lib/space-detection.js +574 -192
  49. package/dist/lib/terrain-brush.d.ts +163 -0
  50. package/dist/lib/terrain-brush.d.ts.map +1 -0
  51. package/dist/lib/terrain-brush.js +359 -0
  52. package/dist/lib/terrain-codec.d.ts +51 -0
  53. package/dist/lib/terrain-codec.d.ts.map +1 -0
  54. package/dist/lib/terrain-codec.js +167 -0
  55. package/dist/lib/terrain-field.d.ts +150 -0
  56. package/dist/lib/terrain-field.d.ts.map +1 -0
  57. package/dist/lib/terrain-field.js +248 -0
  58. package/dist/lib/terrain-raycast.d.ts +44 -0
  59. package/dist/lib/terrain-raycast.d.ts.map +1 -0
  60. package/dist/lib/terrain-raycast.js +188 -0
  61. package/dist/lib/terrain-source.d.ts +60 -0
  62. package/dist/lib/terrain-source.d.ts.map +1 -0
  63. package/dist/lib/terrain-source.js +90 -0
  64. package/dist/lib/terrain-support.d.ts +60 -0
  65. package/dist/lib/terrain-support.d.ts.map +1 -0
  66. package/dist/lib/terrain-support.js +150 -0
  67. package/dist/lib/wall-distance.d.ts +60 -0
  68. package/dist/lib/wall-distance.d.ts.map +1 -0
  69. package/dist/lib/wall-distance.js +85 -0
  70. package/dist/lib/zone-quantities.d.ts +21 -0
  71. package/dist/lib/zone-quantities.d.ts.map +1 -0
  72. package/dist/lib/zone-quantities.js +428 -0
  73. package/dist/material-library.d.ts +28 -1
  74. package/dist/material-library.d.ts.map +1 -1
  75. package/dist/material-library.js +2233 -441
  76. package/dist/registry/handles.d.ts +91 -3
  77. package/dist/registry/handles.d.ts.map +1 -1
  78. package/dist/registry/index.d.ts +3 -3
  79. package/dist/registry/index.d.ts.map +1 -1
  80. package/dist/registry/index.js +1 -1
  81. package/dist/registry/registry.d.ts +46 -3
  82. package/dist/registry/registry.d.ts.map +1 -1
  83. package/dist/registry/registry.js +82 -1
  84. package/dist/registry/subtree.d.ts.map +1 -1
  85. package/dist/registry/subtree.js +8 -1
  86. package/dist/registry/types.d.ts +781 -39
  87. package/dist/registry/types.d.ts.map +1 -1
  88. package/dist/schema/index.d.ts +27 -8
  89. package/dist/schema/index.d.ts.map +1 -1
  90. package/dist/schema/index.js +23 -6
  91. package/dist/schema/material.d.ts +3 -2
  92. package/dist/schema/material.d.ts.map +1 -1
  93. package/dist/schema/material.js +7 -5
  94. package/dist/schema/nodes/box-vent.d.ts +2 -2
  95. package/dist/schema/nodes/cabinet.d.ts +536 -0
  96. package/dist/schema/nodes/cabinet.d.ts.map +1 -0
  97. package/dist/schema/nodes/cabinet.js +139 -0
  98. package/dist/schema/nodes/ceiling.d.ts +4 -3
  99. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  100. package/dist/schema/nodes/ceiling.js +11 -1
  101. package/dist/schema/nodes/chimney.d.ts +4 -4
  102. package/dist/schema/nodes/column.d.ts +4 -2
  103. package/dist/schema/nodes/column.d.ts.map +1 -1
  104. package/dist/schema/nodes/column.js +5 -0
  105. package/dist/schema/nodes/construction-dimension.d.ts +195 -0
  106. package/dist/schema/nodes/construction-dimension.d.ts.map +1 -0
  107. package/dist/schema/nodes/construction-dimension.js +151 -0
  108. package/dist/schema/nodes/cupola.d.ts +2 -2
  109. package/dist/schema/nodes/door.d.ts +42 -5
  110. package/dist/schema/nodes/door.d.ts.map +1 -1
  111. package/dist/schema/nodes/door.js +32 -0
  112. package/dist/schema/nodes/dormer.d.ts +8 -8
  113. package/dist/schema/nodes/dormer.js +1 -1
  114. package/dist/schema/nodes/downspout.d.ts +2 -2
  115. package/dist/schema/nodes/duct-fitting.d.ts +91 -0
  116. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -0
  117. package/dist/schema/nodes/duct-fitting.js +92 -0
  118. package/dist/schema/nodes/duct-segment.d.ts +61 -0
  119. package/dist/schema/nodes/duct-segment.d.ts.map +1 -0
  120. package/dist/schema/nodes/duct-segment.js +73 -0
  121. package/dist/schema/nodes/duct-terminal.d.ts +58 -0
  122. package/dist/schema/nodes/duct-terminal.d.ts.map +1 -0
  123. package/dist/schema/nodes/duct-terminal.js +53 -0
  124. package/dist/schema/nodes/elevator.d.ts +3 -2
  125. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  126. package/dist/schema/nodes/elevator.js +3 -0
  127. package/dist/schema/nodes/eyebrow-vent.d.ts +2 -2
  128. package/dist/schema/nodes/fence.d.ts +20 -2
  129. package/dist/schema/nodes/fence.d.ts.map +1 -1
  130. package/dist/schema/nodes/fence.js +33 -2
  131. package/dist/schema/nodes/gutter.d.ts +2 -2
  132. package/dist/schema/nodes/hvac-equipment.d.ts +64 -0
  133. package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -0
  134. package/dist/schema/nodes/hvac-equipment.js +57 -0
  135. package/dist/schema/nodes/item.d.ts +9 -0
  136. package/dist/schema/nodes/item.d.ts.map +1 -1
  137. package/dist/schema/nodes/item.js +24 -0
  138. package/dist/schema/nodes/level.d.ts +2 -1
  139. package/dist/schema/nodes/level.d.ts.map +1 -1
  140. package/dist/schema/nodes/level.js +12 -31
  141. package/dist/schema/nodes/lineset.d.ts +42 -0
  142. package/dist/schema/nodes/lineset.d.ts.map +1 -0
  143. package/dist/schema/nodes/lineset.js +38 -0
  144. package/dist/schema/nodes/liquid-line.d.ts +34 -0
  145. package/dist/schema/nodes/liquid-line.d.ts.map +1 -0
  146. package/dist/schema/nodes/liquid-line.js +24 -0
  147. package/dist/schema/nodes/measurement.d.ts +306 -0
  148. package/dist/schema/nodes/measurement.d.ts.map +1 -0
  149. package/dist/schema/nodes/measurement.js +87 -0
  150. package/dist/schema/nodes/pipe-fitting.d.ts +56 -0
  151. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -0
  152. package/dist/schema/nodes/pipe-fitting.js +45 -0
  153. package/dist/schema/nodes/pipe-segment.d.ts +48 -0
  154. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -0
  155. package/dist/schema/nodes/pipe-segment.js +36 -0
  156. package/dist/schema/nodes/pipe-trap.d.ts +43 -0
  157. package/dist/schema/nodes/pipe-trap.d.ts.map +1 -0
  158. package/dist/schema/nodes/pipe-trap.js +36 -0
  159. package/dist/schema/nodes/ridge-vent.d.ts +18 -3
  160. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  161. package/dist/schema/nodes/ridge-vent.js +221 -3
  162. package/dist/schema/nodes/roof-segment-shape.d.ts +90 -0
  163. package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -0
  164. package/dist/schema/nodes/roof-segment-shape.js +318 -0
  165. package/dist/schema/nodes/roof-segment-walls.d.ts +101 -0
  166. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -0
  167. package/dist/schema/nodes/roof-segment-walls.js +330 -0
  168. package/dist/schema/nodes/roof-segment.d.ts +84 -8
  169. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  170. package/dist/schema/nodes/roof-segment.js +290 -5
  171. package/dist/schema/nodes/roof.d.ts +8 -8
  172. package/dist/schema/nodes/shelf.d.ts +4 -2
  173. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  174. package/dist/schema/nodes/shelf.js +8 -0
  175. package/dist/schema/nodes/site.d.ts +9 -0
  176. package/dist/schema/nodes/site.d.ts.map +1 -1
  177. package/dist/schema/nodes/site.js +8 -6
  178. package/dist/schema/nodes/skylight.d.ts +10 -10
  179. package/dist/schema/nodes/slab.d.ts +8 -2
  180. package/dist/schema/nodes/slab.d.ts.map +1 -1
  181. package/dist/schema/nodes/slab.js +18 -2
  182. package/dist/schema/nodes/solar-panel.d.ts +4 -4
  183. package/dist/schema/nodes/spawn.d.ts +1 -0
  184. package/dist/schema/nodes/spawn.d.ts.map +1 -1
  185. package/dist/schema/nodes/spawn.js +2 -0
  186. package/dist/schema/nodes/stair-segment.d.ts +4 -4
  187. package/dist/schema/nodes/stair.d.ts +16 -13
  188. package/dist/schema/nodes/stair.d.ts.map +1 -1
  189. package/dist/schema/nodes/stair.js +11 -1
  190. package/dist/schema/nodes/structural-grid.d.ts +27 -0
  191. package/dist/schema/nodes/structural-grid.d.ts.map +1 -0
  192. package/dist/schema/nodes/structural-grid.js +17 -0
  193. package/dist/schema/nodes/turbine-vent.d.ts +2 -2
  194. package/dist/schema/nodes/wall.d.ts +248 -6
  195. package/dist/schema/nodes/wall.d.ts.map +1 -1
  196. package/dist/schema/nodes/wall.js +266 -0
  197. package/dist/schema/nodes/window.d.ts +40 -3
  198. package/dist/schema/nodes/window.d.ts.map +1 -1
  199. package/dist/schema/nodes/window.js +30 -0
  200. package/dist/schema/nodes/zone.d.ts +22 -0
  201. package/dist/schema/nodes/zone.d.ts.map +1 -1
  202. package/dist/schema/nodes/zone.js +21 -0
  203. package/dist/schema/scene-material.d.ts +41 -0
  204. package/dist/schema/scene-material.d.ts.map +1 -0
  205. package/dist/schema/scene-material.js +9 -0
  206. package/dist/schema/terrain.d.ts +28 -0
  207. package/dist/schema/terrain.d.ts.map +1 -0
  208. package/dist/schema/terrain.js +30 -0
  209. package/dist/schema/types.d.ts +1300 -97
  210. package/dist/schema/types.d.ts.map +1 -1
  211. package/dist/schema/types.js +27 -0
  212. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts +80 -0
  213. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -0
  214. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.js +89 -0
  215. package/dist/services/alignment-anchors.d.ts.map +1 -1
  216. package/dist/services/alignment-anchors.js +30 -1
  217. package/dist/services/alignment.d.ts +5 -0
  218. package/dist/services/alignment.d.ts.map +1 -1
  219. package/dist/services/alignment.js +2 -0
  220. package/dist/services/hosting.d.ts +8 -0
  221. package/dist/services/hosting.d.ts.map +1 -1
  222. package/dist/services/hosting.js +13 -4
  223. package/dist/services/index.d.ts +9 -2
  224. package/dist/services/index.d.ts.map +1 -1
  225. package/dist/services/index.js +9 -2
  226. package/dist/services/level-height.d.ts +27 -0
  227. package/dist/services/level-height.d.ts.map +1 -0
  228. package/dist/services/level-height.js +94 -0
  229. package/dist/services/opening-guides.d.ts +141 -0
  230. package/dist/services/opening-guides.d.ts.map +1 -0
  231. package/dist/services/opening-guides.js +267 -0
  232. package/dist/services/port-connectivity.d.ts +115 -0
  233. package/dist/services/port-connectivity.d.ts.map +1 -0
  234. package/dist/services/port-connectivity.js +300 -0
  235. package/dist/services/riser-diagram.d.ts +40 -0
  236. package/dist/services/riser-diagram.d.ts.map +1 -0
  237. package/dist/services/riser-diagram.js +110 -0
  238. package/dist/services/snap.d.ts +9 -1
  239. package/dist/services/snap.d.ts.map +1 -1
  240. package/dist/services/snap.js +21 -1
  241. package/dist/services/storey.d.ts +103 -0
  242. package/dist/services/storey.d.ts.map +1 -0
  243. package/dist/services/storey.js +296 -0
  244. package/dist/services/system-graph.d.ts +30 -0
  245. package/dist/services/system-graph.d.ts.map +1 -0
  246. package/dist/services/system-graph.js +164 -0
  247. package/dist/services/validate-dwv.d.ts +32 -0
  248. package/dist/services/validate-dwv.d.ts.map +1 -0
  249. package/dist/services/validate-dwv.js +118 -0
  250. package/dist/store/actions/node-actions.d.ts.map +1 -1
  251. package/dist/store/actions/node-actions.js +141 -4
  252. package/dist/store/history-control.d.ts +31 -0
  253. package/dist/store/history-control.d.ts.map +1 -1
  254. package/dist/store/history-control.js +130 -0
  255. package/dist/store/use-live-terrain.d.ts +65 -0
  256. package/dist/store/use-live-terrain.d.ts.map +1 -0
  257. package/dist/store/use-live-terrain.js +31 -0
  258. package/dist/store/use-live-transforms.d.ts +8 -0
  259. package/dist/store/use-live-transforms.d.ts.map +1 -1
  260. package/dist/store/use-scene.d.ts +47 -3
  261. package/dist/store/use-scene.d.ts.map +1 -1
  262. package/dist/store/use-scene.js +992 -55
  263. package/dist/systems/elevator/elevator-opening-system.d.ts +1 -0
  264. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  265. package/dist/systems/elevator/elevator-opening-system.js +27 -21
  266. package/dist/systems/elevator/elevator-service.d.ts +0 -2
  267. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  268. package/dist/systems/elevator/elevator-service.js +2 -24
  269. package/dist/systems/fence/fence-centerline.d.ts +12 -0
  270. package/dist/systems/fence/fence-centerline.d.ts.map +1 -0
  271. package/dist/systems/fence/fence-centerline.js +37 -0
  272. package/dist/systems/fence/fence-spline.d.ts +39 -0
  273. package/dist/systems/fence/fence-spline.d.ts.map +1 -0
  274. package/dist/systems/fence/fence-spline.js +196 -0
  275. package/dist/systems/slab/slab-placement.d.ts +11 -0
  276. package/dist/systems/slab/slab-placement.d.ts.map +1 -0
  277. package/dist/systems/slab/slab-placement.js +14 -0
  278. package/dist/systems/slab/slab-support.d.ts +137 -0
  279. package/dist/systems/slab/slab-support.d.ts.map +1 -0
  280. package/dist/systems/slab/slab-support.js +557 -0
  281. package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
  282. package/dist/systems/stair/stair-footprint.js +21 -11
  283. package/dist/systems/stair/stair-opening-preview.d.ts +1300 -505
  284. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  285. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
  286. package/dist/systems/stair/stair-opening-sync.js +19 -33
  287. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  288. package/dist/systems/stair/stair-opening-system.js +32 -4
  289. package/dist/systems/stair/stair-rise.d.ts +22 -0
  290. package/dist/systems/stair/stair-rise.d.ts.map +1 -0
  291. package/dist/systems/stair/stair-rise.js +79 -0
  292. package/dist/systems/wall/wall-curve.d.ts +10 -0
  293. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  294. package/dist/systems/wall/wall-curve.js +1 -1
  295. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  296. package/dist/systems/wall/wall-mitering.js +44 -8
  297. package/dist/systems/wall/wall-top.d.ts +40 -0
  298. package/dist/systems/wall/wall-top.d.ts.map +1 -0
  299. package/dist/systems/wall/wall-top.js +46 -0
  300. package/dist/utils/clone-scene-graph.d.ts +1 -0
  301. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  302. package/dist/utils/clone-scene-graph.js +56 -5
  303. package/dist/utils/heal-scene-graph.d.ts +18 -0
  304. package/dist/utils/heal-scene-graph.d.ts.map +1 -0
  305. package/dist/utils/heal-scene-graph.js +106 -0
  306. package/dist/validation/validate-build-json.d.ts +3 -0
  307. package/dist/validation/validate-build-json.d.ts.map +1 -1
  308. package/dist/validation/validate-build-json.js +90 -5
  309. package/package.json +4 -4
  310. package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts +0 -2
  311. package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts.map +0 -1
  312. package/dist/hooks/spatial-grid/floor-placed-elevation.test.js +0 -273
  313. package/dist/lib/space-detection-pause.test.d.ts +0 -2
  314. package/dist/lib/space-detection-pause.test.d.ts.map +0 -1
  315. package/dist/lib/space-detection-pause.test.js +0 -42
  316. package/dist/lib/space-detection.test.d.ts +0 -2
  317. package/dist/lib/space-detection.test.d.ts.map +0 -1
  318. package/dist/lib/space-detection.test.js +0 -77
  319. package/dist/registry/registry.test.d.ts +0 -2
  320. package/dist/registry/registry.test.d.ts.map +0 -1
  321. package/dist/registry/registry.test.js +0 -183
  322. package/dist/registry/relations-resolver.test.d.ts +0 -2
  323. package/dist/registry/relations-resolver.test.d.ts.map +0 -1
  324. package/dist/registry/relations-resolver.test.js +0 -183
  325. package/dist/registry/scene-api.test.d.ts +0 -2
  326. package/dist/registry/scene-api.test.d.ts.map +0 -1
  327. package/dist/registry/scene-api.test.js +0 -183
  328. package/dist/registry/subtree.test.d.ts +0 -2
  329. package/dist/registry/subtree.test.d.ts.map +0 -1
  330. package/dist/registry/subtree.test.js +0 -133
  331. package/dist/schema/asset-url.test.d.ts +0 -2
  332. package/dist/schema/asset-url.test.d.ts.map +0 -1
  333. package/dist/schema/asset-url.test.js +0 -134
  334. package/dist/services/alignment-anchors.test.d.ts +0 -2
  335. package/dist/services/alignment-anchors.test.d.ts.map +0 -1
  336. package/dist/services/alignment-anchors.test.js +0 -383
  337. package/dist/services/alignment.test.d.ts +0 -2
  338. package/dist/services/alignment.test.d.ts.map +0 -1
  339. package/dist/services/alignment.test.js +0 -92
  340. package/dist/services/drag-session.test.d.ts +0 -2
  341. package/dist/services/drag-session.test.d.ts.map +0 -1
  342. package/dist/services/drag-session.test.js +0 -219
  343. package/dist/services/hosting.test.d.ts +0 -2
  344. package/dist/services/hosting.test.d.ts.map +0 -1
  345. package/dist/services/hosting.test.js +0 -199
  346. package/dist/services/movement.test.d.ts +0 -2
  347. package/dist/services/movement.test.d.ts.map +0 -1
  348. package/dist/services/movement.test.js +0 -133
  349. package/dist/services/single-undo-dance.test.d.ts +0 -2
  350. package/dist/services/single-undo-dance.test.d.ts.map +0 -1
  351. package/dist/services/single-undo-dance.test.js +0 -210
  352. package/dist/services/snap.test.d.ts +0 -2
  353. package/dist/services/snap.test.d.ts.map +0 -1
  354. package/dist/services/snap.test.js +0 -95
  355. package/dist/store/actions/node-mutation-sanitize.test.d.ts +0 -2
  356. package/dist/store/actions/node-mutation-sanitize.test.d.ts.map +0 -1
  357. package/dist/store/actions/node-mutation-sanitize.test.js +0 -147
  358. package/dist/store/actions/reparent.test.d.ts +0 -2
  359. package/dist/store/actions/reparent.test.d.ts.map +0 -1
  360. package/dist/store/actions/reparent.test.js +0 -212
  361. package/dist/store/use-scene-elevator-migration.test.d.ts +0 -2
  362. package/dist/store/use-scene-elevator-migration.test.d.ts.map +0 -1
  363. package/dist/store/use-scene-elevator-migration.test.js +0 -109
  364. package/dist/systems/elevator/elevator-opening-sync.test.d.ts +0 -2
  365. package/dist/systems/elevator/elevator-opening-sync.test.d.ts.map +0 -1
  366. package/dist/systems/elevator/elevator-opening-sync.test.js +0 -146
  367. package/dist/systems/elevator/elevator-runtime.test.d.ts +0 -2
  368. package/dist/systems/elevator/elevator-runtime.test.d.ts.map +0 -1
  369. package/dist/systems/elevator/elevator-runtime.test.js +0 -64
  370. package/dist/systems/stair/stair-opening-preview.test.d.ts +0 -2
  371. package/dist/systems/stair/stair-opening-preview.test.d.ts.map +0 -1
  372. package/dist/systems/stair/stair-opening-preview.test.js +0 -80
  373. package/dist/systems/stair/stair-opening-sync.test.d.ts +0 -2
  374. package/dist/systems/stair/stair-opening-sync.test.d.ts.map +0 -1
  375. package/dist/systems/stair/stair-opening-sync.test.js +0 -446
  376. package/dist/utils/clone-scene-graph.test.d.ts +0 -2
  377. package/dist/utils/clone-scene-graph.test.d.ts.map +0 -1
  378. package/dist/utils/clone-scene-graph.test.js +0 -59
@@ -12,6 +12,18 @@ export declare const WindowType: z.ZodEnum<{
12
12
  louvered: "louvered";
13
13
  }>;
14
14
  export type WindowType = z.infer<typeof WindowType>;
15
+ export declare const WindowConstructionType: z.ZodEnum<{
16
+ framed: "framed";
17
+ masonry: "masonry";
18
+ }>;
19
+ export declare const WindowDimensionReference: z.ZodEnum<{
20
+ nominal: "nominal";
21
+ "rough-opening": "rough-opening";
22
+ "masonry-opening": "masonry-opening";
23
+ "finish-opening": "finish-opening";
24
+ }>;
25
+ export type WindowConstructionType = z.infer<typeof WindowConstructionType>;
26
+ export type WindowDimensionReference = z.infer<typeof WindowDimensionReference>;
15
27
  export declare const WindowNode: z.ZodObject<{
16
28
  object: z.ZodDefault<z.ZodLiteral<"node">>;
17
29
  name: z.ZodOptional<z.ZodString>;
@@ -32,7 +44,7 @@ export declare const WindowNode: z.ZodObject<{
32
44
  type: z.ZodDefault<z.ZodLiteral<"window">>;
33
45
  material: z.ZodOptional<z.ZodObject<{
34
46
  id: z.ZodOptional<z.ZodString>;
35
- preset: z.ZodOptional<z.ZodEnum<{
47
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
36
48
  custom: "custom";
37
49
  white: "white";
38
50
  brick: "brick";
@@ -43,7 +55,7 @@ export declare const WindowNode: z.ZodObject<{
43
55
  plaster: "plaster";
44
56
  tile: "tile";
45
57
  marble: "marble";
46
- }>>;
58
+ }>>>;
47
59
  properties: z.ZodOptional<z.ZodObject<{
48
60
  color: z.ZodDefault<z.ZodString>;
49
61
  roughness: z.ZodDefault<z.ZodNumber>;
@@ -62,6 +74,7 @@ export declare const WindowNode: z.ZodObject<{
62
74
  scale: z.ZodOptional<z.ZodNumber>;
63
75
  }, z.core.$strip>>;
64
76
  }, z.core.$strip>>;
77
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
65
78
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
66
79
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
67
80
  side: z.ZodOptional<z.ZodEnum<{
@@ -69,8 +82,32 @@ export declare const WindowNode: z.ZodObject<{
69
82
  back: "back";
70
83
  }>>;
71
84
  wallId: z.ZodOptional<z.ZodString>;
85
+ roofSegmentId: z.ZodOptional<z.ZodString>;
86
+ roofFace: z.ZodOptional<z.ZodEnum<{
87
+ front: "front";
88
+ back: "back";
89
+ right: "right";
90
+ left: "left";
91
+ }>>;
72
92
  width: z.ZodDefault<z.ZodNumber>;
73
93
  height: z.ZodDefault<z.ZodNumber>;
94
+ mark: z.ZodOptional<z.ZodString>;
95
+ constructionType: z.ZodDefault<z.ZodEnum<{
96
+ framed: "framed";
97
+ masonry: "masonry";
98
+ }>>;
99
+ dimensionReference: z.ZodDefault<z.ZodEnum<{
100
+ nominal: "nominal";
101
+ "rough-opening": "rough-opening";
102
+ "masonry-opening": "masonry-opening";
103
+ "finish-opening": "finish-opening";
104
+ }>>;
105
+ roughOpeningWidth: z.ZodOptional<z.ZodNumber>;
106
+ roughOpeningHeight: z.ZodOptional<z.ZodNumber>;
107
+ masonryOpeningWidth: z.ZodOptional<z.ZodNumber>;
108
+ masonryOpeningHeight: z.ZodOptional<z.ZodNumber>;
109
+ finishOpeningWidth: z.ZodOptional<z.ZodNumber>;
110
+ finishOpeningHeight: z.ZodOptional<z.ZodNumber>;
74
111
  openingKind: z.ZodDefault<z.ZodEnum<{
75
112
  window: "window";
76
113
  opening: "opening";
@@ -97,8 +134,8 @@ export declare const WindowNode: z.ZodObject<{
97
134
  single: "single";
98
135
  }>>;
99
136
  hingesSide: z.ZodDefault<z.ZodEnum<{
100
- left: "left";
101
137
  right: "right";
138
+ left: "left";
102
139
  }>>;
103
140
  openingShape: z.ZodDefault<z.ZodEnum<{
104
141
  rectangle: "rectangle";
@@ -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,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2DrB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmFrB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA"}
@@ -14,18 +14,48 @@ export const WindowType = z.enum([
14
14
  'bow',
15
15
  'louvered',
16
16
  ]);
17
+ export const WindowConstructionType = z.enum(['framed', 'masonry']);
18
+ export const WindowDimensionReference = z.enum([
19
+ 'nominal',
20
+ 'rough-opening',
21
+ 'masonry-opening',
22
+ 'finish-opening',
23
+ ]);
17
24
  export const WindowNode = BaseNode.extend({
18
25
  id: objectId('window'),
19
26
  type: nodeType('window'),
20
27
  material: MaterialSchema.optional(),
28
+ // Per-slot material overrides on the unified slot model. Keys: `frame`,
29
+ // `glass`. Value = a `MaterialRef` (`library:<id>` / `scene:<id>`). Absent =
30
+ // the frame/glass default. Mirrors `ShelfNode.slots`.
31
+ slots: z.record(z.string(), z.string()).optional(),
21
32
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
22
33
  rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
23
34
  side: z.enum(['front', 'back']).optional(),
24
35
  // Wall reference
25
36
  wallId: z.string().optional(),
37
+ // Alternative host: a roof-segment's generated wall face (base wall
38
+ // under the roof or a coplanar gable end). When set, `position` is
39
+ // FACE-LOCAL — [u along the face, v height, z from the wall mid-plane]
40
+ // — exactly the wall-child convention; the renderer mounts the node
41
+ // inside the face frame (`getRoofWallFaceFrame`), which is what makes
42
+ // hosted children track segment resizes live.
43
+ roofSegmentId: z.string().optional(),
44
+ roofFace: z.enum(['front', 'back', 'right', 'left']).optional(),
26
45
  // Overall dimensions
27
46
  width: z.number().default(1.5),
28
47
  height: z.number().default(1.5),
48
+ // Construction-document identity and optional manufacturer rough opening.
49
+ // Legacy scenes omit these fields and continue to parse unchanged.
50
+ mark: z.string().trim().max(16).optional(),
51
+ constructionType: WindowConstructionType.default('framed'),
52
+ dimensionReference: WindowDimensionReference.default('nominal'),
53
+ roughOpeningWidth: z.number().positive().optional(),
54
+ roughOpeningHeight: z.number().positive().optional(),
55
+ masonryOpeningWidth: z.number().positive().optional(),
56
+ masonryOpeningHeight: z.number().positive().optional(),
57
+ finishOpeningWidth: z.number().positive().optional(),
58
+ finishOpeningHeight: z.number().positive().optional(),
29
59
  // Opening mode - when set to "opening", the window is only a shaped cutout
30
60
  openingKind: z.enum(['window', 'opening']).default('window'),
31
61
  // Window family
@@ -17,6 +17,28 @@ export declare const ZoneNode: z.ZodObject<{
17
17
  type: z.ZodDefault<z.ZodLiteral<"zone">>;
18
18
  name: z.ZodString;
19
19
  polygon: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
20
+ autoFromWalls: z.ZodDefault<z.ZodBoolean>;
21
+ boundaryWallIds: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>>>;
22
+ spaceRole: z.ZodDefault<z.ZodEnum<{
23
+ generic: "generic";
24
+ room: "room";
25
+ }>>;
26
+ roomNumber: z.ZodDefault<z.ZodString>;
27
+ enclosureStatus: z.ZodDefault<z.ZodEnum<{
28
+ auto: "auto";
29
+ enclosed: "enclosed";
30
+ open: "open";
31
+ }>>;
32
+ floorFinish: z.ZodDefault<z.ZodString>;
33
+ wallFinish: z.ZodDefault<z.ZodString>;
34
+ ceilingFinish: z.ZodDefault<z.ZodString>;
35
+ ceilingHeight: z.ZodDefault<z.ZodNumber>;
36
+ occupancy: z.ZodDefault<z.ZodString>;
37
+ clearDimensionPolicy: z.ZodDefault<z.ZodEnum<{
38
+ none: "none";
39
+ "inside-faces": "inside-faces";
40
+ "finish-faces": "finish-faces";
41
+ }>>;
20
42
  color: z.ZodDefault<z.ZodString>;
21
43
  metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
22
44
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"zone.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/zone.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;iBAoBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"zone.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/zone.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -7,6 +7,21 @@ export const ZoneNode = BaseNode.extend({
7
7
  name: z.string(),
8
8
  // Polygon boundary - array of [x, z] coordinates defining the zone
9
9
  polygon: z.array(z.tuple([z.number(), z.number()])),
10
+ // Procedural room zones retain the walls that prove their enclosure. The
11
+ // stored polygon remains a fallback for missing or temporarily open walls.
12
+ autoFromWalls: z.boolean().default(false),
13
+ boundaryWallIds: z.array(objectId('wall')).default([]),
14
+ // Generic zones remain available for sites and analysis. Architectural
15
+ // room documentation is opt-in so legacy zone behavior is unchanged.
16
+ spaceRole: z.enum(['generic', 'room']).default('generic'),
17
+ roomNumber: z.string().trim().max(32).default(''),
18
+ enclosureStatus: z.enum(['auto', 'enclosed', 'open']).default('auto'),
19
+ floorFinish: z.string().trim().max(120).default(''),
20
+ wallFinish: z.string().trim().max(120).default(''),
21
+ ceilingFinish: z.string().trim().max(120).default(''),
22
+ ceilingHeight: z.number().min(0.1).default(2.7),
23
+ occupancy: z.string().trim().max(80).default(''),
24
+ clearDimensionPolicy: z.enum(['none', 'inside-faces', 'finish-faces']).default('none'),
10
25
  // Visual styling
11
26
  color: z.string().default('#3b82f6'), // Default blue
12
27
  metadata: z.json().optional().default({}),
@@ -17,6 +32,12 @@ export const ZoneNode = BaseNode.extend({
17
32
  - levelId: level this zone is attached to
18
33
  - name: zone name
19
34
  - polygon: array of [x, z] points defining the zone boundary
35
+ - autoFromWalls: whether the boundary follows an enclosed wall loop
36
+ - boundaryWallIds: wall ids that prove the procedural enclosure
37
+ - spaceRole: generic site/analysis zone or architectural room
38
+ - roomNumber/finishes/ceilingHeight/occupancy: construction-document room metadata
39
+ - enclosureStatus: auto-detected, explicitly enclosed, or open
40
+ - clearDimensionPolicy: optional room clear-dimension datum preference
20
41
  - color: hex color for visual styling
21
42
  - metadata: zone metadata (optional)
22
43
  `);
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ export type SceneMaterialId = `mat_${string}`;
3
+ export declare const generateSceneMaterialId: () => SceneMaterialId;
4
+ export declare const SceneMaterial: z.ZodObject<{
5
+ id: z.ZodString;
6
+ name: z.ZodString;
7
+ material: z.ZodObject<{
8
+ id: z.ZodOptional<z.ZodString>;
9
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
10
+ custom: "custom";
11
+ white: "white";
12
+ brick: "brick";
13
+ concrete: "concrete";
14
+ wood: "wood";
15
+ glass: "glass";
16
+ metal: "metal";
17
+ plaster: "plaster";
18
+ tile: "tile";
19
+ marble: "marble";
20
+ }>>>;
21
+ properties: z.ZodOptional<z.ZodObject<{
22
+ color: z.ZodDefault<z.ZodString>;
23
+ roughness: z.ZodDefault<z.ZodNumber>;
24
+ metalness: z.ZodDefault<z.ZodNumber>;
25
+ opacity: z.ZodDefault<z.ZodNumber>;
26
+ transparent: z.ZodDefault<z.ZodBoolean>;
27
+ side: z.ZodDefault<z.ZodEnum<{
28
+ front: "front";
29
+ back: "back";
30
+ double: "double";
31
+ }>>;
32
+ }, z.core.$strip>>;
33
+ texture: z.ZodOptional<z.ZodObject<{
34
+ url: z.ZodString;
35
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
36
+ scale: z.ZodOptional<z.ZodNumber>;
37
+ }, z.core.$strip>>;
38
+ }, z.core.$strip>;
39
+ }, z.core.$strip>;
40
+ export type SceneMaterial = z.infer<typeof SceneMaterial>;
41
+ //# sourceMappingURL=scene-material.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene-material.d.ts","sourceRoot":"","sources":["../../src/schema/scene-material.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,MAAM,MAAM,eAAe,GAAG,OAAO,MAAM,EAAE,CAAA;AAC7C,eAAO,MAAM,uBAAuB,QAAO,eAAoC,CAAA;AAE/E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIxB,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ import { generateId } from './base';
3
+ import { MaterialSchema } from './material';
4
+ export const generateSceneMaterialId = () => generateId('mat');
5
+ export const SceneMaterial = z.object({
6
+ id: z.string(),
7
+ name: z.string(),
8
+ material: MaterialSchema,
9
+ });
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ /** Current authoring and decoding ceiling. */
3
+ export declare const MAX_TERRAIN_SIDE = 257;
4
+ /**
5
+ * The persisted shape of a terrain heightfield.
6
+ *
7
+ * Kept in `schema/` rather than beside the codec because this is the contract
8
+ * the scene graph validates on load, and `lib/terrain-codec.ts` imports the type
9
+ * from here so there is exactly one definition of the wire format.
10
+ *
11
+ * `heights` is base64 of little-endian Int16 — see `lib/terrain-codec.ts` for why
12
+ * that beats a JSON number array, and why it is not compressed. The schema is
13
+ * intentionally loose about the *contents* of that string: validating base64
14
+ * here would duplicate the decoder, and `decodeTerrainField` already returns
15
+ * `null` for anything it cannot read, which is the behaviour a corrupt scene
16
+ * needs (load flat, don't fail the project).
17
+ */
18
+ export declare const TerrainData: z.ZodObject<{
19
+ type: z.ZodLiteral<"heightfield">;
20
+ origin: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
21
+ spacing: z.ZodNumber;
22
+ cols: z.ZodNumber;
23
+ rows: z.ZodNumber;
24
+ step: z.ZodNumber;
25
+ heights: z.ZodString;
26
+ }, z.core.$strip>;
27
+ export type TerrainData = z.infer<typeof TerrainData>;
28
+ //# sourceMappingURL=terrain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain.d.ts","sourceRoot":"","sources":["../../src/schema/terrain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAEnC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW;;;;;;;;iBAYtB,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+ /** Current authoring and decoding ceiling. */
3
+ export const MAX_TERRAIN_SIDE = 257;
4
+ /**
5
+ * The persisted shape of a terrain heightfield.
6
+ *
7
+ * Kept in `schema/` rather than beside the codec because this is the contract
8
+ * the scene graph validates on load, and `lib/terrain-codec.ts` imports the type
9
+ * from here so there is exactly one definition of the wire format.
10
+ *
11
+ * `heights` is base64 of little-endian Int16 — see `lib/terrain-codec.ts` for why
12
+ * that beats a JSON number array, and why it is not compressed. The schema is
13
+ * intentionally loose about the *contents* of that string: validating base64
14
+ * here would duplicate the decoder, and `decodeTerrainField` already returns
15
+ * `null` for anything it cannot read, which is the behaviour a corrupt scene
16
+ * needs (load flat, don't fail the project).
17
+ */
18
+ export const TerrainData = z.object({
19
+ type: z.literal('heightfield'),
20
+ /** World XZ of sample [0,0]. */
21
+ origin: z.tuple([z.number().finite(), z.number().finite()]),
22
+ /** Metres between adjacent samples. */
23
+ spacing: z.number().finite().positive(),
24
+ cols: z.number().int().positive().max(MAX_TERRAIN_SIDE),
25
+ rows: z.number().int().positive().max(MAX_TERRAIN_SIDE),
26
+ /** Metres per height unit — the quantization ladder. */
27
+ step: z.number().finite().positive(),
28
+ /** Base64 of `cols * rows` little-endian Int16 samples, row-major. */
29
+ heights: z.string(),
30
+ });