@pascal-app/core 0.8.0 → 0.9.2

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 (471) hide show
  1. package/dist/events/bus.d.ts +67 -13
  2. package/dist/events/bus.d.ts.map +1 -1
  3. package/dist/hooks/scene-registry/item-clip-registry.d.ts +18 -0
  4. package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -0
  5. package/dist/hooks/scene-registry/item-clip-registry.js +10 -0
  6. package/dist/hooks/scene-registry/scene-registry.d.ts +14 -23
  7. package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
  8. package/dist/hooks/scene-registry/scene-registry.js +59 -26
  9. package/dist/hooks/scene-registry/scene-registry.test.d.ts +2 -0
  10. package/dist/hooks/scene-registry/scene-registry.test.d.ts.map +1 -0
  11. package/dist/hooks/scene-registry/scene-registry.test.js +26 -0
  12. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +14 -0
  13. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -0
  14. package/dist/hooks/spatial-grid/floor-placed-elevation.js +51 -0
  15. package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts +2 -0
  16. package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts.map +1 -0
  17. package/dist/hooks/spatial-grid/floor-placed-elevation.test.js +366 -0
  18. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +79 -11
  19. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  20. package/dist/hooks/spatial-grid/spatial-grid-manager.js +508 -141
  21. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +28 -1
  22. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  23. package/dist/hooks/spatial-grid/spatial-grid-sync.js +109 -18
  24. package/dist/hooks/spatial-grid/wall-slab-overlap.test.d.ts +2 -0
  25. package/dist/hooks/spatial-grid/wall-slab-overlap.test.d.ts.map +1 -0
  26. package/dist/hooks/spatial-grid/wall-slab-overlap.test.js +363 -0
  27. package/dist/index.d.ts +36 -8
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +33 -6
  30. package/dist/lib/level-name.d.ts +4 -0
  31. package/dist/lib/level-name.d.ts.map +1 -0
  32. package/dist/lib/level-name.js +10 -0
  33. package/dist/lib/measurement-geometry.d.ts +19 -0
  34. package/dist/lib/measurement-geometry.d.ts.map +1 -0
  35. package/dist/lib/measurement-geometry.js +232 -0
  36. package/dist/lib/measurement-geometry.test.d.ts +2 -0
  37. package/dist/lib/measurement-geometry.test.d.ts.map +1 -0
  38. package/dist/lib/measurement-geometry.test.js +102 -0
  39. package/dist/lib/polygon-geometry.d.ts +0 -1
  40. package/dist/lib/polygon-geometry.d.ts.map +1 -1
  41. package/dist/lib/polygon-geometry.js +0 -18
  42. package/dist/lib/polygon-relations.d.ts +10 -0
  43. package/dist/lib/polygon-relations.d.ts.map +1 -0
  44. package/dist/lib/polygon-relations.js +73 -0
  45. package/dist/lib/selection-proxy.d.ts +4 -0
  46. package/dist/lib/selection-proxy.d.ts.map +1 -0
  47. package/dist/lib/selection-proxy.js +12 -0
  48. package/dist/lib/slab-polygon.d.ts +31 -2
  49. package/dist/lib/slab-polygon.d.ts.map +1 -1
  50. package/dist/lib/slab-polygon.js +525 -31
  51. package/dist/lib/slab-polygon.test.d.ts +2 -0
  52. package/dist/lib/slab-polygon.test.d.ts.map +1 -0
  53. package/dist/lib/slab-polygon.test.js +635 -0
  54. package/dist/lib/slots.d.ts +14 -0
  55. package/dist/lib/slots.d.ts.map +1 -0
  56. package/dist/lib/slots.js +26 -0
  57. package/dist/lib/space-detection-pause.test.d.ts +2 -0
  58. package/dist/lib/space-detection-pause.test.d.ts.map +1 -0
  59. package/dist/lib/space-detection-pause.test.js +42 -0
  60. package/dist/lib/space-detection.d.ts +54 -2
  61. package/dist/lib/space-detection.d.ts.map +1 -1
  62. package/dist/lib/space-detection.js +599 -124
  63. package/dist/lib/space-detection.test.d.ts +2 -0
  64. package/dist/lib/space-detection.test.d.ts.map +1 -0
  65. package/dist/lib/space-detection.test.js +376 -0
  66. package/dist/lib/wall-distance.d.ts +60 -0
  67. package/dist/lib/wall-distance.d.ts.map +1 -0
  68. package/dist/lib/wall-distance.js +85 -0
  69. package/dist/lib/zone-quantities.d.ts +21 -0
  70. package/dist/lib/zone-quantities.d.ts.map +1 -0
  71. package/dist/lib/zone-quantities.js +183 -0
  72. package/dist/lib/zone-quantities.test.d.ts +2 -0
  73. package/dist/lib/zone-quantities.test.d.ts.map +1 -0
  74. package/dist/lib/zone-quantities.test.js +82 -0
  75. package/dist/material-library.d.ts +20 -1
  76. package/dist/material-library.d.ts.map +1 -1
  77. package/dist/material-library.js +3737 -200
  78. package/dist/registry/__bench__/relations-resolver.bench.d.ts +15 -0
  79. package/dist/registry/__bench__/relations-resolver.bench.d.ts.map +1 -0
  80. package/dist/registry/__bench__/relations-resolver.bench.js +170 -0
  81. package/dist/registry/handles.d.ts +394 -0
  82. package/dist/registry/handles.d.ts.map +1 -0
  83. package/dist/registry/handles.js +24 -0
  84. package/dist/registry/index.d.ts +7 -0
  85. package/dist/registry/index.d.ts.map +1 -0
  86. package/dist/registry/index.js +4 -0
  87. package/dist/registry/registry.d.ts +136 -0
  88. package/dist/registry/registry.d.ts.map +1 -0
  89. package/dist/registry/registry.js +282 -0
  90. package/dist/registry/registry.test.d.ts +2 -0
  91. package/dist/registry/registry.test.d.ts.map +1 -0
  92. package/dist/registry/registry.test.js +196 -0
  93. package/dist/registry/relations-resolver.d.ts +42 -0
  94. package/dist/registry/relations-resolver.d.ts.map +1 -0
  95. package/dist/registry/relations-resolver.js +77 -0
  96. package/dist/registry/relations-resolver.test.d.ts +2 -0
  97. package/dist/registry/relations-resolver.test.d.ts.map +1 -0
  98. package/dist/registry/relations-resolver.test.js +183 -0
  99. package/dist/registry/scene-api.d.ts +44 -0
  100. package/dist/registry/scene-api.d.ts.map +1 -0
  101. package/dist/registry/scene-api.js +111 -0
  102. package/dist/registry/scene-api.test.d.ts +2 -0
  103. package/dist/registry/scene-api.test.d.ts.map +1 -0
  104. package/dist/registry/scene-api.test.js +183 -0
  105. package/dist/registry/subtree.d.ts +67 -0
  106. package/dist/registry/subtree.d.ts.map +1 -0
  107. package/dist/registry/subtree.js +123 -0
  108. package/dist/registry/subtree.test.d.ts +2 -0
  109. package/dist/registry/subtree.test.d.ts.map +1 -0
  110. package/dist/registry/subtree.test.js +163 -0
  111. package/dist/registry/types.d.ts +2099 -0
  112. package/dist/registry/types.d.ts.map +1 -0
  113. package/dist/registry/types.js +1 -0
  114. package/dist/schema/index.d.ts +35 -4
  115. package/dist/schema/index.d.ts.map +1 -1
  116. package/dist/schema/index.js +32 -4
  117. package/dist/schema/material.d.ts +13 -2
  118. package/dist/schema/material.d.ts.map +1 -1
  119. package/dist/schema/material.js +17 -5
  120. package/dist/schema/material.test.d.ts +2 -0
  121. package/dist/schema/material.test.d.ts.map +1 -0
  122. package/dist/schema/material.test.js +43 -0
  123. package/dist/schema/nodes/box-vent.d.ts +74 -0
  124. package/dist/schema/nodes/box-vent.d.ts.map +1 -0
  125. package/dist/schema/nodes/box-vent.js +63 -0
  126. package/dist/schema/nodes/building.d.ts +1 -1
  127. package/dist/schema/nodes/building.d.ts.map +1 -1
  128. package/dist/schema/nodes/building.js +3 -2
  129. package/dist/schema/nodes/cabinet.d.ts +534 -0
  130. package/dist/schema/nodes/cabinet.d.ts.map +1 -0
  131. package/dist/schema/nodes/cabinet.js +137 -0
  132. package/dist/schema/nodes/ceiling.d.ts +5 -2
  133. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  134. package/dist/schema/nodes/ceiling.js +5 -1
  135. package/dist/schema/nodes/chimney.d.ts +158 -0
  136. package/dist/schema/nodes/chimney.d.ts.map +1 -0
  137. package/dist/schema/nodes/chimney.js +67 -0
  138. package/dist/schema/nodes/column.d.ts +600 -7
  139. package/dist/schema/nodes/column.d.ts.map +1 -1
  140. package/dist/schema/nodes/column.js +589 -6
  141. package/dist/schema/nodes/cupola.d.ts +66 -0
  142. package/dist/schema/nodes/cupola.d.ts.map +1 -0
  143. package/dist/schema/nodes/cupola.js +28 -0
  144. package/dist/schema/nodes/door.d.ts +13 -5
  145. package/dist/schema/nodes/door.d.ts.map +1 -1
  146. package/dist/schema/nodes/door.js +12 -0
  147. package/dist/schema/nodes/dormer.d.ts +228 -0
  148. package/dist/schema/nodes/dormer.d.ts.map +1 -0
  149. package/dist/schema/nodes/dormer.js +119 -0
  150. package/dist/schema/nodes/downspout.d.ts +75 -0
  151. package/dist/schema/nodes/downspout.d.ts.map +1 -0
  152. package/dist/schema/nodes/downspout.js +63 -0
  153. package/dist/schema/nodes/duct-fitting.d.ts +91 -0
  154. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -0
  155. package/dist/schema/nodes/duct-fitting.js +92 -0
  156. package/dist/schema/nodes/duct-segment.d.ts +61 -0
  157. package/dist/schema/nodes/duct-segment.d.ts.map +1 -0
  158. package/dist/schema/nodes/duct-segment.js +73 -0
  159. package/dist/schema/nodes/duct-terminal.d.ts +57 -0
  160. package/dist/schema/nodes/duct-terminal.d.ts.map +1 -0
  161. package/dist/schema/nodes/duct-terminal.js +51 -0
  162. package/dist/schema/nodes/elevator.d.ts +106 -0
  163. package/dist/schema/nodes/elevator.d.ts.map +1 -0
  164. package/dist/schema/nodes/elevator.js +57 -0
  165. package/dist/schema/nodes/eyebrow-vent.d.ts +68 -0
  166. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -0
  167. package/dist/schema/nodes/eyebrow-vent.js +40 -0
  168. package/dist/schema/nodes/fence.d.ts +19 -2
  169. package/dist/schema/nodes/fence.d.ts.map +1 -1
  170. package/dist/schema/nodes/fence.js +27 -2
  171. package/dist/schema/nodes/gutter.d.ts +84 -0
  172. package/dist/schema/nodes/gutter.d.ts.map +1 -0
  173. package/dist/schema/nodes/gutter.js +76 -0
  174. package/dist/schema/nodes/hvac-equipment.d.ts +63 -0
  175. package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -0
  176. package/dist/schema/nodes/hvac-equipment.js +55 -0
  177. package/dist/schema/nodes/item.d.ts +12 -0
  178. package/dist/schema/nodes/item.d.ts.map +1 -1
  179. package/dist/schema/nodes/item.js +20 -0
  180. package/dist/schema/nodes/level.d.ts +1 -1
  181. package/dist/schema/nodes/level.d.ts.map +1 -1
  182. package/dist/schema/nodes/level.js +4 -0
  183. package/dist/schema/nodes/lineset.d.ts +42 -0
  184. package/dist/schema/nodes/lineset.d.ts.map +1 -0
  185. package/dist/schema/nodes/lineset.js +38 -0
  186. package/dist/schema/nodes/liquid-line.d.ts +34 -0
  187. package/dist/schema/nodes/liquid-line.d.ts.map +1 -0
  188. package/dist/schema/nodes/liquid-line.js +24 -0
  189. package/dist/schema/nodes/measurement.d.ts +306 -0
  190. package/dist/schema/nodes/measurement.d.ts.map +1 -0
  191. package/dist/schema/nodes/measurement.js +87 -0
  192. package/dist/schema/nodes/measurement.test.d.ts +2 -0
  193. package/dist/schema/nodes/measurement.test.d.ts.map +1 -0
  194. package/dist/schema/nodes/measurement.test.js +139 -0
  195. package/dist/schema/nodes/pipe-fitting.d.ts +56 -0
  196. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -0
  197. package/dist/schema/nodes/pipe-fitting.js +45 -0
  198. package/dist/schema/nodes/pipe-segment.d.ts +48 -0
  199. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -0
  200. package/dist/schema/nodes/pipe-segment.js +36 -0
  201. package/dist/schema/nodes/pipe-trap.d.ts +43 -0
  202. package/dist/schema/nodes/pipe-trap.d.ts.map +1 -0
  203. package/dist/schema/nodes/pipe-trap.js +36 -0
  204. package/dist/schema/nodes/ridge-vent-defaults.test.d.ts +2 -0
  205. package/dist/schema/nodes/ridge-vent-defaults.test.d.ts.map +1 -0
  206. package/dist/schema/nodes/ridge-vent-defaults.test.js +205 -0
  207. package/dist/schema/nodes/ridge-vent.d.ts +82 -0
  208. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -0
  209. package/dist/schema/nodes/ridge-vent.js +248 -0
  210. package/dist/schema/nodes/roof-segment-shape.d.ts +90 -0
  211. package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -0
  212. package/dist/schema/nodes/roof-segment-shape.js +318 -0
  213. package/dist/schema/nodes/roof-segment-shape.test.d.ts +2 -0
  214. package/dist/schema/nodes/roof-segment-shape.test.d.ts.map +1 -0
  215. package/dist/schema/nodes/roof-segment-shape.test.js +175 -0
  216. package/dist/schema/nodes/roof-segment-surface.test.d.ts +2 -0
  217. package/dist/schema/nodes/roof-segment-surface.test.d.ts.map +1 -0
  218. package/dist/schema/nodes/roof-segment-surface.test.js +48 -0
  219. package/dist/schema/nodes/roof-segment-trim.test.d.ts +2 -0
  220. package/dist/schema/nodes/roof-segment-trim.test.d.ts.map +1 -0
  221. package/dist/schema/nodes/roof-segment-trim.test.js +107 -0
  222. package/dist/schema/nodes/roof-segment-walls.d.ts +101 -0
  223. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -0
  224. package/dist/schema/nodes/roof-segment-walls.js +330 -0
  225. package/dist/schema/nodes/roof-segment-walls.test.d.ts +2 -0
  226. package/dist/schema/nodes/roof-segment-walls.test.d.ts.map +1 -0
  227. package/dist/schema/nodes/roof-segment-walls.test.js +92 -0
  228. package/dist/schema/nodes/roof-segment.d.ts +273 -3
  229. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  230. package/dist/schema/nodes/roof-segment.js +539 -3
  231. package/dist/schema/nodes/roof.d.ts +8 -8
  232. package/dist/schema/nodes/roof.d.ts.map +1 -1
  233. package/dist/schema/nodes/roof.js +4 -16
  234. package/dist/schema/nodes/shelf.d.ts +106 -0
  235. package/dist/schema/nodes/shelf.d.ts.map +1 -0
  236. package/dist/schema/nodes/shelf.js +90 -0
  237. package/dist/schema/nodes/site.d.ts +1 -122
  238. package/dist/schema/nodes/site.d.ts.map +1 -1
  239. package/dist/schema/nodes/site.js +2 -6
  240. package/dist/schema/nodes/skylight.d.ts +279 -0
  241. package/dist/schema/nodes/skylight.d.ts.map +1 -0
  242. package/dist/schema/nodes/skylight.js +152 -0
  243. package/dist/schema/nodes/slab.d.ts +5 -2
  244. package/dist/schema/nodes/slab.d.ts.map +1 -1
  245. package/dist/schema/nodes/slab.js +5 -1
  246. package/dist/schema/nodes/solar-panel.d.ts +117 -0
  247. package/dist/schema/nodes/solar-panel.d.ts.map +1 -0
  248. package/dist/schema/nodes/solar-panel.js +47 -0
  249. package/dist/schema/nodes/stair-segment.d.ts +4 -4
  250. package/dist/schema/nodes/stair.d.ts +13 -12
  251. package/dist/schema/nodes/stair.d.ts.map +1 -1
  252. package/dist/schema/nodes/stair.js +3 -0
  253. package/dist/schema/nodes/surface-hole-metadata.d.ts +2 -0
  254. package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -1
  255. package/dist/schema/nodes/surface-hole-metadata.js +3 -1
  256. package/dist/schema/nodes/turbine-vent.d.ts +68 -0
  257. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -0
  258. package/dist/schema/nodes/turbine-vent.js +41 -0
  259. package/dist/schema/nodes/wall.d.ts +245 -6
  260. package/dist/schema/nodes/wall.d.ts.map +1 -1
  261. package/dist/schema/nodes/wall.js +257 -0
  262. package/dist/schema/nodes/wall.test.d.ts +2 -0
  263. package/dist/schema/nodes/wall.test.d.ts.map +1 -0
  264. package/dist/schema/nodes/wall.test.js +208 -0
  265. package/dist/schema/nodes/window.d.ts +11 -3
  266. package/dist/schema/nodes/window.d.ts.map +1 -1
  267. package/dist/schema/nodes/window.js +12 -0
  268. package/dist/schema/nodes/zone.d.ts +2 -0
  269. package/dist/schema/nodes/zone.d.ts.map +1 -1
  270. package/dist/schema/nodes/zone.js +6 -0
  271. package/dist/schema/scene-material.d.ts +41 -0
  272. package/dist/schema/scene-material.d.ts.map +1 -0
  273. package/dist/schema/scene-material.js +9 -0
  274. package/dist/schema/types.d.ts +2850 -655
  275. package/dist/schema/types.d.ts.map +1 -1
  276. package/dist/schema/types.js +49 -0
  277. package/dist/services/alignment-anchors.d.ts +100 -0
  278. package/dist/services/alignment-anchors.d.ts.map +1 -0
  279. package/dist/services/alignment-anchors.js +312 -0
  280. package/dist/services/alignment-anchors.test.d.ts +2 -0
  281. package/dist/services/alignment-anchors.test.d.ts.map +1 -0
  282. package/dist/services/alignment-anchors.test.js +383 -0
  283. package/dist/services/alignment.d.ts +131 -0
  284. package/dist/services/alignment.d.ts.map +1 -0
  285. package/dist/services/alignment.js +171 -0
  286. package/dist/services/alignment.test.d.ts +2 -0
  287. package/dist/services/alignment.test.d.ts.map +1 -0
  288. package/dist/services/alignment.test.js +92 -0
  289. package/dist/services/drag-session.d.ts +47 -0
  290. package/dist/services/drag-session.d.ts.map +1 -0
  291. package/dist/services/drag-session.js +100 -0
  292. package/dist/services/drag-session.test.d.ts +2 -0
  293. package/dist/services/drag-session.test.d.ts.map +1 -0
  294. package/dist/services/drag-session.test.js +219 -0
  295. package/dist/services/hosting.d.ts +88 -0
  296. package/dist/services/hosting.d.ts.map +1 -0
  297. package/dist/services/hosting.js +131 -0
  298. package/dist/services/hosting.test.d.ts +2 -0
  299. package/dist/services/hosting.test.d.ts.map +1 -0
  300. package/dist/services/hosting.test.js +230 -0
  301. package/dist/services/index.d.ts +13 -0
  302. package/dist/services/index.d.ts.map +1 -0
  303. package/dist/services/index.js +12 -0
  304. package/dist/services/level-height.d.ts +28 -0
  305. package/dist/services/level-height.d.ts.map +1 -0
  306. package/dist/services/level-height.js +62 -0
  307. package/dist/services/movement.d.ts +48 -0
  308. package/dist/services/movement.d.ts.map +1 -0
  309. package/dist/services/movement.js +65 -0
  310. package/dist/services/movement.test.d.ts +2 -0
  311. package/dist/services/movement.test.d.ts.map +1 -0
  312. package/dist/services/movement.test.js +133 -0
  313. package/dist/services/opening-guides.d.ts +141 -0
  314. package/dist/services/opening-guides.d.ts.map +1 -0
  315. package/dist/services/opening-guides.js +267 -0
  316. package/dist/services/opening-guides.test.d.ts +2 -0
  317. package/dist/services/opening-guides.test.d.ts.map +1 -0
  318. package/dist/services/opening-guides.test.js +208 -0
  319. package/dist/services/port-connectivity.d.ts +115 -0
  320. package/dist/services/port-connectivity.d.ts.map +1 -0
  321. package/dist/services/port-connectivity.js +300 -0
  322. package/dist/services/port-connectivity.test.d.ts +2 -0
  323. package/dist/services/port-connectivity.test.d.ts.map +1 -0
  324. package/dist/services/port-connectivity.test.js +297 -0
  325. package/dist/services/riser-diagram.d.ts +40 -0
  326. package/dist/services/riser-diagram.d.ts.map +1 -0
  327. package/dist/services/riser-diagram.js +110 -0
  328. package/dist/services/riser-diagram.test.d.ts +2 -0
  329. package/dist/services/riser-diagram.test.d.ts.map +1 -0
  330. package/dist/services/riser-diagram.test.js +66 -0
  331. package/dist/services/single-undo-dance.test.d.ts +2 -0
  332. package/dist/services/single-undo-dance.test.d.ts.map +1 -0
  333. package/dist/services/single-undo-dance.test.js +210 -0
  334. package/dist/services/snap.d.ts +80 -0
  335. package/dist/services/snap.d.ts.map +1 -0
  336. package/dist/services/snap.js +140 -0
  337. package/dist/services/snap.test.d.ts +2 -0
  338. package/dist/services/snap.test.d.ts.map +1 -0
  339. package/dist/services/snap.test.js +137 -0
  340. package/dist/services/system-graph.d.ts +30 -0
  341. package/dist/services/system-graph.d.ts.map +1 -0
  342. package/dist/services/system-graph.js +164 -0
  343. package/dist/services/system-graph.test.d.ts +2 -0
  344. package/dist/services/system-graph.test.d.ts.map +1 -0
  345. package/dist/services/system-graph.test.js +138 -0
  346. package/dist/services/validate-dwv.d.ts +32 -0
  347. package/dist/services/validate-dwv.d.ts.map +1 -0
  348. package/dist/services/validate-dwv.js +118 -0
  349. package/dist/services/validate-dwv.test.d.ts +2 -0
  350. package/dist/services/validate-dwv.test.d.ts.map +1 -0
  351. package/dist/services/validate-dwv.test.js +109 -0
  352. package/dist/solar-panel-presets.d.ts +17 -0
  353. package/dist/solar-panel-presets.d.ts.map +1 -0
  354. package/dist/solar-panel-presets.js +43 -0
  355. package/dist/store/actions/node-actions.d.ts +14 -2
  356. package/dist/store/actions/node-actions.d.ts.map +1 -1
  357. package/dist/store/actions/node-actions.js +585 -15
  358. package/dist/store/actions/node-mutation-sanitize.test.d.ts +2 -0
  359. package/dist/store/actions/node-mutation-sanitize.test.d.ts.map +1 -0
  360. package/dist/store/actions/node-mutation-sanitize.test.js +147 -0
  361. package/dist/store/actions/reparent.test.d.ts +2 -0
  362. package/dist/store/actions/reparent.test.d.ts.map +1 -0
  363. package/dist/store/actions/reparent.test.js +212 -0
  364. package/dist/store/actions/ridge-vent-update.test.d.ts +2 -0
  365. package/dist/store/actions/ridge-vent-update.test.d.ts.map +1 -0
  366. package/dist/store/actions/ridge-vent-update.test.js +264 -0
  367. package/dist/store/history-control.d.ts +11 -0
  368. package/dist/store/history-control.d.ts.map +1 -1
  369. package/dist/store/history-control.js +33 -0
  370. package/dist/store/use-interactive.d.ts +39 -0
  371. package/dist/store/use-interactive.d.ts.map +1 -1
  372. package/dist/store/use-interactive.js +75 -0
  373. package/dist/store/use-live-node-overrides.d.ts +22 -0
  374. package/dist/store/use-live-node-overrides.d.ts.map +1 -0
  375. package/dist/store/use-live-node-overrides.js +59 -0
  376. package/dist/store/use-scene-dirty-tracking.test.d.ts +2 -0
  377. package/dist/store/use-scene-dirty-tracking.test.d.ts.map +1 -0
  378. package/dist/store/use-scene-dirty-tracking.test.js +68 -0
  379. package/dist/store/use-scene-elevator-migration.test.d.ts +2 -0
  380. package/dist/store/use-scene-elevator-migration.test.d.ts.map +1 -0
  381. package/dist/store/use-scene-elevator-migration.test.js +109 -0
  382. package/dist/store/use-scene-measurement-roundtrip.test.d.ts +2 -0
  383. package/dist/store/use-scene-measurement-roundtrip.test.d.ts.map +1 -0
  384. package/dist/store/use-scene-measurement-roundtrip.test.js +97 -0
  385. package/dist/store/use-scene-plugins.test.d.ts +2 -0
  386. package/dist/store/use-scene-plugins.test.d.ts.map +1 -0
  387. package/dist/store/use-scene-plugins.test.js +51 -0
  388. package/dist/store/use-scene-wall-slot-migration.test.d.ts +2 -0
  389. package/dist/store/use-scene-wall-slot-migration.test.d.ts.map +1 -0
  390. package/dist/store/use-scene-wall-slot-migration.test.js +210 -0
  391. package/dist/store/use-scene-window-migration.test.d.ts +2 -0
  392. package/dist/store/use-scene-window-migration.test.d.ts.map +1 -0
  393. package/dist/store/use-scene-window-migration.test.js +85 -0
  394. package/dist/store/use-scene.d.ts +28 -2
  395. package/dist/store/use-scene.d.ts.map +1 -1
  396. package/dist/store/use-scene.js +546 -49
  397. package/dist/systems/elevator/elevator-dispatch.d.ts +12 -0
  398. package/dist/systems/elevator/elevator-dispatch.d.ts.map +1 -0
  399. package/dist/systems/elevator/elevator-dispatch.js +57 -0
  400. package/dist/systems/elevator/elevator-geometry.d.ts +15 -0
  401. package/dist/systems/elevator/elevator-geometry.d.ts.map +1 -0
  402. package/dist/systems/elevator/elevator-geometry.js +50 -0
  403. package/dist/systems/elevator/elevator-opening-sync.d.ts +6 -0
  404. package/dist/systems/elevator/elevator-opening-sync.d.ts.map +1 -0
  405. package/dist/systems/elevator/elevator-opening-sync.js +218 -0
  406. package/dist/systems/elevator/elevator-opening-sync.test.d.ts +2 -0
  407. package/dist/systems/elevator/elevator-opening-sync.test.d.ts.map +1 -0
  408. package/dist/systems/elevator/elevator-opening-sync.test.js +146 -0
  409. package/dist/systems/elevator/elevator-opening-system.d.ts +2 -0
  410. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -0
  411. package/dist/systems/elevator/elevator-opening-system.js +48 -0
  412. package/dist/systems/elevator/elevator-runtime-system.d.ts +2 -0
  413. package/dist/systems/elevator/elevator-runtime-system.d.ts.map +1 -0
  414. package/dist/systems/elevator/elevator-runtime-system.js +8 -0
  415. package/dist/systems/elevator/elevator-runtime.d.ts +18 -0
  416. package/dist/systems/elevator/elevator-runtime.d.ts.map +1 -0
  417. package/dist/systems/elevator/elevator-runtime.js +225 -0
  418. package/dist/systems/elevator/elevator-runtime.test.d.ts +2 -0
  419. package/dist/systems/elevator/elevator-runtime.test.d.ts.map +1 -0
  420. package/dist/systems/elevator/elevator-runtime.test.js +64 -0
  421. package/dist/systems/elevator/elevator-service.d.ts +19 -0
  422. package/dist/systems/elevator/elevator-service.d.ts.map +1 -0
  423. package/dist/systems/elevator/elevator-service.js +111 -0
  424. package/dist/systems/fence/fence-centerline.d.ts +12 -0
  425. package/dist/systems/fence/fence-centerline.d.ts.map +1 -0
  426. package/dist/systems/fence/fence-centerline.js +37 -0
  427. package/dist/systems/fence/fence-spline.d.ts +39 -0
  428. package/dist/systems/fence/fence-spline.d.ts.map +1 -0
  429. package/dist/systems/fence/fence-spline.js +196 -0
  430. package/dist/systems/fence/fence-spline.test.d.ts +2 -0
  431. package/dist/systems/fence/fence-spline.test.d.ts.map +1 -0
  432. package/dist/systems/fence/fence-spline.test.js +136 -0
  433. package/dist/systems/stair/stair-footprint.d.ts +44 -0
  434. package/dist/systems/stair/stair-footprint.d.ts.map +1 -0
  435. package/dist/systems/stair/stair-footprint.js +178 -0
  436. package/dist/systems/stair/stair-opening-preview.d.ts +2447 -0
  437. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -0
  438. package/dist/systems/stair/stair-opening-preview.js +93 -0
  439. package/dist/systems/stair/stair-opening-preview.test.d.ts +2 -0
  440. package/dist/systems/stair/stair-opening-preview.test.d.ts.map +1 -0
  441. package/dist/systems/stair/stair-opening-preview.test.js +80 -0
  442. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
  443. package/dist/systems/stair/stair-opening-sync.js +155 -147
  444. package/dist/systems/stair/stair-opening-sync.test.js +424 -2
  445. package/dist/systems/stair/stair-opening-system.d.ts +2 -0
  446. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -0
  447. package/dist/systems/stair/stair-opening-system.js +104 -0
  448. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  449. package/dist/systems/wall/wall-mitering.js +38 -2
  450. package/dist/systems/wall/wall-mitering.test.d.ts +2 -0
  451. package/dist/systems/wall/wall-mitering.test.d.ts.map +1 -0
  452. package/dist/systems/wall/wall-mitering.test.js +63 -0
  453. package/dist/systems/wall/wall-move.d.ts +48 -0
  454. package/dist/systems/wall/wall-move.d.ts.map +1 -0
  455. package/dist/systems/wall/wall-move.js +193 -0
  456. package/dist/utils/clone-scene-graph.d.ts +7 -4
  457. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  458. package/dist/utils/clone-scene-graph.js +29 -7
  459. package/dist/utils/clone-scene-graph.test.d.ts +2 -0
  460. package/dist/utils/clone-scene-graph.test.d.ts.map +1 -0
  461. package/dist/utils/clone-scene-graph.test.js +62 -0
  462. package/dist/utils/heal-scene-graph.d.ts +18 -0
  463. package/dist/utils/heal-scene-graph.d.ts.map +1 -0
  464. package/dist/utils/heal-scene-graph.js +90 -0
  465. package/dist/utils/heal-scene-graph.test.d.ts +2 -0
  466. package/dist/utils/heal-scene-graph.test.d.ts.map +1 -0
  467. package/dist/utils/heal-scene-graph.test.js +88 -0
  468. package/dist/validation/validate-build-json.d.ts +44 -0
  469. package/dist/validation/validate-build-json.d.ts.map +1 -0
  470. package/dist/validation/validate-build-json.js +256 -0
  471. package/package.json +11 -4
@@ -0,0 +1,106 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Parametric shelf — a configurable furniture unit with one or more
4
+ * horizontal boards that host other items.
5
+ *
6
+ * Four styles share the same dimensional schema:
7
+ *
8
+ * - `wall-shelf` — open boards held by end brackets. `rows > 1` stacks
9
+ * evenly-spaced boards. Brackets style: `minimal | industrial | hidden`.
10
+ * The v1 archetype.
11
+ * - `bookshelf` — full-height cabinet: side panels + multiple shelf
12
+ * boards. `columns > 1` adds vertical dividers between sections.
13
+ * `withBack` toggles a back panel. `withSides` toggles the side
14
+ * panels (`false` = open silhouette held by cross-brace posts).
15
+ * - `open-rack` — industrial wire-rack style: four corner posts, no
16
+ * side panels, slim boards. `withBack` adds an X-brace.
17
+ * - `cubby` — grid of pigeonhole cubicles: `rows × columns` cells
18
+ * formed by full back + sides + inner dividers. Each cubicle hosts
19
+ * items on its own bottom surface.
20
+ *
21
+ * `height` is the distance from floor to the underside of the topmost
22
+ * board (legacy v1 semantic, preserved so v1 scenes load with identical
23
+ * top-board placement). For `rows > 1`, boards are evenly spaced from
24
+ * `height / rows` up to `height`. For `cubby`, the height divides into
25
+ * `rows` equal-height cubicles.
26
+ *
27
+ * Items host on each row's top surface via `capabilities.surfaces.custom`.
28
+ */
29
+ export declare const ShelfNode: z.ZodObject<{
30
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
31
+ name: z.ZodOptional<z.ZodString>;
32
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
33
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
34
+ camera: z.ZodOptional<z.ZodObject<{
35
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
36
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
37
+ mode: z.ZodDefault<z.ZodEnum<{
38
+ perspective: "perspective";
39
+ orthographic: "orthographic";
40
+ }>>;
41
+ fov: z.ZodOptional<z.ZodNumber>;
42
+ zoom: z.ZodOptional<z.ZodNumber>;
43
+ }, z.core.$strip>>;
44
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
45
+ id: z.ZodDefault<z.ZodTemplateLiteral<`shelf_${string}`>>;
46
+ type: z.ZodDefault<z.ZodLiteral<"shelf">>;
47
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
48
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
49
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
50
+ width: z.ZodDefault<z.ZodNumber>;
51
+ depth: z.ZodDefault<z.ZodNumber>;
52
+ thickness: z.ZodDefault<z.ZodNumber>;
53
+ height: z.ZodDefault<z.ZodNumber>;
54
+ style: z.ZodDefault<z.ZodEnum<{
55
+ "wall-shelf": "wall-shelf";
56
+ bookshelf: "bookshelf";
57
+ "open-rack": "open-rack";
58
+ cubby: "cubby";
59
+ }>>;
60
+ rows: z.ZodDefault<z.ZodNumber>;
61
+ columns: z.ZodDefault<z.ZodNumber>;
62
+ withBack: z.ZodDefault<z.ZodBoolean>;
63
+ withSides: z.ZodDefault<z.ZodBoolean>;
64
+ withBottom: z.ZodDefault<z.ZodBoolean>;
65
+ bracketStyle: z.ZodDefault<z.ZodEnum<{
66
+ minimal: "minimal";
67
+ industrial: "industrial";
68
+ hidden: "hidden";
69
+ }>>;
70
+ material: z.ZodOptional<z.ZodObject<{
71
+ id: z.ZodOptional<z.ZodString>;
72
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
73
+ custom: "custom";
74
+ white: "white";
75
+ brick: "brick";
76
+ concrete: "concrete";
77
+ wood: "wood";
78
+ glass: "glass";
79
+ metal: "metal";
80
+ plaster: "plaster";
81
+ tile: "tile";
82
+ marble: "marble";
83
+ }>>>;
84
+ properties: z.ZodOptional<z.ZodObject<{
85
+ color: z.ZodDefault<z.ZodString>;
86
+ roughness: z.ZodDefault<z.ZodNumber>;
87
+ metalness: z.ZodDefault<z.ZodNumber>;
88
+ opacity: z.ZodDefault<z.ZodNumber>;
89
+ transparent: z.ZodDefault<z.ZodBoolean>;
90
+ side: z.ZodDefault<z.ZodEnum<{
91
+ front: "front";
92
+ back: "back";
93
+ double: "double";
94
+ }>>;
95
+ }, z.core.$strip>>;
96
+ texture: z.ZodOptional<z.ZodObject<{
97
+ url: z.ZodString;
98
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
99
+ scale: z.ZodOptional<z.ZodNumber>;
100
+ }, z.core.$strip>>;
101
+ }, z.core.$strip>>;
102
+ materialPreset: z.ZodOptional<z.ZodString>;
103
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
104
+ }, z.core.$strip>;
105
+ export type ShelfNode = z.infer<typeof ShelfNode>;
106
+ //# sourceMappingURL=shelf.d.ts.map
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+DpB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ import { BaseNode, nodeType, objectId } from '../base';
3
+ import { MaterialSchema } from '../material';
4
+ import { ItemNode } from './item';
5
+ /**
6
+ * Parametric shelf — a configurable furniture unit with one or more
7
+ * horizontal boards that host other items.
8
+ *
9
+ * Four styles share the same dimensional schema:
10
+ *
11
+ * - `wall-shelf` — open boards held by end brackets. `rows > 1` stacks
12
+ * evenly-spaced boards. Brackets style: `minimal | industrial | hidden`.
13
+ * The v1 archetype.
14
+ * - `bookshelf` — full-height cabinet: side panels + multiple shelf
15
+ * boards. `columns > 1` adds vertical dividers between sections.
16
+ * `withBack` toggles a back panel. `withSides` toggles the side
17
+ * panels (`false` = open silhouette held by cross-brace posts).
18
+ * - `open-rack` — industrial wire-rack style: four corner posts, no
19
+ * side panels, slim boards. `withBack` adds an X-brace.
20
+ * - `cubby` — grid of pigeonhole cubicles: `rows × columns` cells
21
+ * formed by full back + sides + inner dividers. Each cubicle hosts
22
+ * items on its own bottom surface.
23
+ *
24
+ * `height` is the distance from floor to the underside of the topmost
25
+ * board (legacy v1 semantic, preserved so v1 scenes load with identical
26
+ * top-board placement). For `rows > 1`, boards are evenly spaced from
27
+ * `height / rows` up to `height`. For `cubby`, the height divides into
28
+ * `rows` equal-height cubicles.
29
+ *
30
+ * Items host on each row's top surface via `capabilities.surfaces.custom`.
31
+ */
32
+ export const ShelfNode = BaseNode.extend({
33
+ id: objectId('shelf'),
34
+ type: nodeType('shelf'),
35
+ // Hosted items live here — without this field `createNode(item, shelf)`
36
+ // would write `item.parentId = shelf.id` but skip the children-list
37
+ // update, so the shelf renderer wouldn't pick the item up and React
38
+ // would never mount it (the item would exist in `useScene.nodes` but
39
+ // not be rendered, making the commit look like "the item went
40
+ // somewhere else"). The action's parent-update branch needs the field
41
+ // present at parse-time so the children array is always defined.
42
+ children: z.array(ItemNode.shape.id).default([]),
43
+ position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
44
+ rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
45
+ // Dimensions (meters). Schema-level defaults intentionally reproduce
46
+ // the v1 wall-shelf so existing v1 scenes that omit the v2-introduced
47
+ // fields (style / rows / columns / with*) load with their original
48
+ // visual unchanged. The user-facing "place a fresh shelf" defaults
49
+ // (cubby 3x2 @ 1m × 0.5m × 1.8m) live on `shelfDefinition.defaults()`
50
+ // and are applied by the placement tool, NOT here.
51
+ width: z.number().min(0.3).max(3.0).default(1.2),
52
+ depth: z.number().min(0.1).max(1.0).default(0.3),
53
+ /** Board thickness — shared by top boards, sides, back, dividers. */
54
+ thickness: z.number().min(0.01).max(0.1).default(0.04),
55
+ /**
56
+ * Distance from floor to the underside of the topmost board. For
57
+ * `rows > 1`, intermediate boards are evenly spaced from `height/rows`
58
+ * up to `height`.
59
+ */
60
+ height: z.number().min(0.05).max(2.5).default(0.9),
61
+ // Style + topology — v2 additions, default to v1 visual (single-board
62
+ // wall shelf) so v1 scenes are forward-compatible without migration.
63
+ style: z.enum(['wall-shelf', 'bookshelf', 'open-rack', 'cubby']).default('wall-shelf'),
64
+ rows: z.number().int().min(1).max(8).default(1),
65
+ columns: z.number().int().min(1).max(6).default(1),
66
+ withBack: z.boolean().default(false),
67
+ withSides: z.boolean().default(true),
68
+ /**
69
+ * Renders a horizontal board at floor level — closes the bottom row of
70
+ * a cubby (or the base of a bookshelf) so items can host on a real
71
+ * surface rather than the open floor. No-op for `wall-shelf` /
72
+ * `open-rack` where the structure has no enclosed bottom cell.
73
+ */
74
+ withBottom: z.boolean().default(false),
75
+ bracketStyle: z.enum(['minimal', 'industrial', 'hidden']).default('minimal'),
76
+ // Paintable surface — same shape walls / slabs / stairs use. The default
77
+ // is unset (renders as the off-white `DEFAULT_SHELF_MATERIAL`); paint
78
+ // mode writes the chosen catalog material here. Keeping the same field
79
+ // names (`material` / `materialPreset`) lets the existing
80
+ // `buildSurfaceMaterialPatch` helpers in `material-paint.ts` work
81
+ // unchanged once `'shelf'` is added to `MaterialTarget`.
82
+ material: MaterialSchema.optional(),
83
+ materialPreset: z.string().optional(),
84
+ // Per-slot material overrides, mirroring `ItemNode.slots`. Key = slot id
85
+ // (`shelves` / `frame` / `back`, see `shelfSlots`), value = a `MaterialRef`
86
+ // string (`library:<id>` or `scene:<id>`). Absent slot = fall back to the
87
+ // legacy whole-shelf `material` / `materialPreset`, then the registry slot
88
+ // default. A dangling ref renders the default (never blocks).
89
+ slots: z.record(z.string(), z.string()).optional(),
90
+ });
@@ -21,128 +21,7 @@ export declare const SiteNode: z.ZodObject<{
21
21
  type: z.ZodLiteral<"polygon">;
22
22
  points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
23
23
  }, z.core.$strip>>>;
24
- children: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
25
- object: z.ZodDefault<z.ZodLiteral<"node">>;
26
- name: z.ZodOptional<z.ZodString>;
27
- parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
28
- visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
29
- camera: z.ZodOptional<z.ZodObject<{
30
- position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
31
- target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
32
- mode: z.ZodDefault<z.ZodEnum<{
33
- perspective: "perspective";
34
- orthographic: "orthographic";
35
- }>>;
36
- fov: z.ZodOptional<z.ZodNumber>;
37
- zoom: z.ZodOptional<z.ZodNumber>;
38
- }, z.core.$strip>>;
39
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
40
- id: z.ZodDefault<z.ZodTemplateLiteral<`building_${string}`>>;
41
- type: z.ZodDefault<z.ZodLiteral<"building">>;
42
- children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>>>;
43
- position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
44
- rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
45
- }, z.core.$strip>, z.ZodObject<{
46
- object: z.ZodDefault<z.ZodLiteral<"node">>;
47
- name: z.ZodOptional<z.ZodString>;
48
- parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
49
- visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
50
- camera: z.ZodOptional<z.ZodObject<{
51
- position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
52
- target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
53
- mode: z.ZodDefault<z.ZodEnum<{
54
- perspective: "perspective";
55
- orthographic: "orthographic";
56
- }>>;
57
- fov: z.ZodOptional<z.ZodNumber>;
58
- zoom: z.ZodOptional<z.ZodNumber>;
59
- }, z.core.$strip>>;
60
- metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
61
- id: z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>;
62
- type: z.ZodDefault<z.ZodLiteral<"item">>;
63
- position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
64
- rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
65
- scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
66
- side: z.ZodOptional<z.ZodEnum<{
67
- front: "front";
68
- back: "back";
69
- }>>;
70
- children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
71
- wallId: z.ZodOptional<z.ZodString>;
72
- wallT: z.ZodOptional<z.ZodNumber>;
73
- collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
74
- asset: z.ZodObject<{
75
- id: z.ZodString;
76
- category: z.ZodString;
77
- name: z.ZodString;
78
- thumbnail: z.ZodString;
79
- floorPlanUrl: z.ZodOptional<z.ZodString>;
80
- source: z.ZodDefault<z.ZodEnum<{
81
- library: "library";
82
- community: "community";
83
- mine: "mine";
84
- }>>;
85
- isDraft: z.ZodOptional<z.ZodBoolean>;
86
- src: z.ZodString;
87
- dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
88
- attachTo: z.ZodOptional<z.ZodEnum<{
89
- wall: "wall";
90
- ceiling: "ceiling";
91
- "wall-side": "wall-side";
92
- }>>;
93
- tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
94
- offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
95
- rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
96
- scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
97
- surface: z.ZodOptional<z.ZodObject<{
98
- height: z.ZodNumber;
99
- }, z.core.$strip>>;
100
- interactive: z.ZodOptional<z.ZodObject<{
101
- controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
102
- kind: z.ZodLiteral<"toggle">;
103
- label: z.ZodOptional<z.ZodString>;
104
- default: z.ZodOptional<z.ZodBoolean>;
105
- }, z.core.$strip>, z.ZodObject<{
106
- kind: z.ZodLiteral<"slider">;
107
- label: z.ZodString;
108
- min: z.ZodNumber;
109
- max: z.ZodNumber;
110
- step: z.ZodDefault<z.ZodNumber>;
111
- unit: z.ZodOptional<z.ZodString>;
112
- displayMode: z.ZodDefault<z.ZodEnum<{
113
- slider: "slider";
114
- stepper: "stepper";
115
- dial: "dial";
116
- }>>;
117
- default: z.ZodOptional<z.ZodNumber>;
118
- }, z.core.$strip>, z.ZodObject<{
119
- kind: z.ZodLiteral<"temperature">;
120
- label: z.ZodDefault<z.ZodString>;
121
- min: z.ZodDefault<z.ZodNumber>;
122
- max: z.ZodDefault<z.ZodNumber>;
123
- unit: z.ZodDefault<z.ZodEnum<{
124
- C: "C";
125
- F: "F";
126
- }>>;
127
- default: z.ZodOptional<z.ZodNumber>;
128
- }, z.core.$strip>], "kind">>>;
129
- effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
130
- kind: z.ZodLiteral<"animation">;
131
- clips: z.ZodObject<{
132
- on: z.ZodOptional<z.ZodString>;
133
- off: z.ZodOptional<z.ZodString>;
134
- loop: z.ZodOptional<z.ZodString>;
135
- }, z.core.$strip>;
136
- }, z.core.$strip>, z.ZodObject<{
137
- kind: z.ZodLiteral<"light">;
138
- color: z.ZodDefault<z.ZodString>;
139
- intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
140
- distance: z.ZodOptional<z.ZodNumber>;
141
- offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
142
- }, z.core.$strip>], "kind">>>;
143
- }, z.core.$strip>>;
144
- }, z.core.$strip>;
145
- }, z.core.$strip>], "type">>>;
24
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
146
25
  }, z.core.$strip>;
147
26
  export type SiteNode = z.infer<typeof SiteNode>;
148
27
  //# sourceMappingURL=site.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/site.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/site.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAevB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBAsBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -2,8 +2,6 @@
2
2
  import dedent from 'dedent';
3
3
  import { z } from 'zod';
4
4
  import { BaseNode, nodeType, objectId } from '../base';
5
- import { BuildingNode } from './building';
6
- import { ItemNode } from './item';
7
5
  // 2D Polygon
8
6
  const PropertyLineData = z.object({
9
7
  type: z.literal('polygon'),
@@ -29,11 +27,9 @@ export const SiteNode = BaseNode.extend({
29
27
  ],
30
28
  }),
31
29
  // terrain: TerrainData,
32
- children: z
33
- .array(z.discriminatedUnion('type', [BuildingNode, ItemNode]))
34
- .default([BuildingNode.parse({})]),
30
+ children: z.array(z.string()).default([]),
35
31
  }).describe(dedent `
36
32
  Site node - used to represent a site
37
33
  - polygon: polygon data
38
- - children: array of building and item nodes
34
+ - children: array of child node ids (buildings, items)
39
35
  `);
@@ -0,0 +1,279 @@
1
+ import { z } from 'zod';
2
+ export declare const SkylightMaterialRole: z.ZodEnum<{
3
+ glass: "glass";
4
+ frame: "frame";
5
+ }>;
6
+ export type SkylightMaterialRole = z.infer<typeof SkylightMaterialRole>;
7
+ export declare const SKYLIGHT_TYPE_ORDER: readonly ["flat", "walk-on", "lantern", "opening", "sliding"];
8
+ export declare const SkylightType: z.ZodEnum<{
9
+ flat: "flat";
10
+ sliding: "sliding";
11
+ opening: "opening";
12
+ "walk-on": "walk-on";
13
+ lantern: "lantern";
14
+ }>;
15
+ export type SkylightType = (typeof SKYLIGHT_TYPE_ORDER)[number];
16
+ export declare const SkylightOpeningSide: z.ZodEnum<{
17
+ right: "right";
18
+ left: "left";
19
+ top: "top";
20
+ bottom: "bottom";
21
+ }>;
22
+ export type SkylightOpeningSide = z.infer<typeof SkylightOpeningSide>;
23
+ export declare const SkylightSlideDirection: z.ZodEnum<{
24
+ z: "z";
25
+ x: "x";
26
+ }>;
27
+ export type SkylightSlideDirection = z.infer<typeof SkylightSlideDirection>;
28
+ export type SkylightTypePreset = {
29
+ label: string;
30
+ width: number;
31
+ height: number;
32
+ frameThickness: number;
33
+ frameDepth: number;
34
+ glassThickness: number;
35
+ curb: boolean;
36
+ curbHeight: number;
37
+ cutoutOffset: number;
38
+ lanternHeight: number;
39
+ lanternTopScale: number;
40
+ openingAngle: number;
41
+ openingSide: SkylightOpeningSide;
42
+ operationState: number;
43
+ motorHousing: boolean;
44
+ slideFraction: number;
45
+ slideDirection: SkylightSlideDirection;
46
+ trackWidth: number;
47
+ motorHousingSize: number;
48
+ };
49
+ export declare const SKYLIGHT_TYPE_PRESETS: {
50
+ readonly flat: {
51
+ readonly label: "Flat roof skylight";
52
+ readonly width: 0.9;
53
+ readonly height: 1.2;
54
+ readonly frameThickness: 0.055;
55
+ readonly frameDepth: 0.08;
56
+ readonly glassThickness: 0.012;
57
+ readonly curb: true;
58
+ readonly curbHeight: 0.08;
59
+ readonly cutoutOffset: 0;
60
+ readonly lanternHeight: 0.25;
61
+ readonly lanternTopScale: 0;
62
+ readonly openingAngle: 0;
63
+ readonly openingSide: "top";
64
+ readonly operationState: 0;
65
+ readonly motorHousing: false;
66
+ readonly slideFraction: 0;
67
+ readonly slideDirection: "z";
68
+ readonly trackWidth: 0.04;
69
+ readonly motorHousingSize: 0.08;
70
+ };
71
+ readonly 'walk-on': {
72
+ readonly label: "Walk-on rooflight";
73
+ readonly width: 1.2;
74
+ readonly height: 1.8;
75
+ readonly frameThickness: 0.035;
76
+ readonly frameDepth: 0.045;
77
+ readonly glassThickness: 0.04;
78
+ readonly curb: false;
79
+ readonly curbHeight: 0;
80
+ readonly cutoutOffset: 0;
81
+ readonly lanternHeight: 0.25;
82
+ readonly lanternTopScale: 0;
83
+ readonly openingAngle: 0;
84
+ readonly openingSide: "top";
85
+ readonly operationState: 0;
86
+ readonly motorHousing: false;
87
+ readonly slideFraction: 0;
88
+ readonly slideDirection: "z";
89
+ readonly trackWidth: 0.04;
90
+ readonly motorHousingSize: 0.08;
91
+ };
92
+ readonly lantern: {
93
+ readonly label: "Roof lantern";
94
+ readonly width: 1.4;
95
+ readonly height: 1.4;
96
+ readonly frameThickness: 0.06;
97
+ readonly frameDepth: 0.08;
98
+ readonly glassThickness: 0.012;
99
+ readonly curb: true;
100
+ readonly curbHeight: 0.16;
101
+ readonly cutoutOffset: 0;
102
+ readonly lanternHeight: 0.45;
103
+ readonly lanternTopScale: 0;
104
+ readonly openingAngle: 0;
105
+ readonly openingSide: "top";
106
+ readonly operationState: 0;
107
+ readonly motorHousing: false;
108
+ readonly slideFraction: 0;
109
+ readonly slideDirection: "z";
110
+ readonly trackWidth: 0.04;
111
+ readonly motorHousingSize: 0.08;
112
+ };
113
+ readonly opening: {
114
+ readonly label: "Opening skylight";
115
+ readonly width: 0.9;
116
+ readonly height: 1.2;
117
+ readonly frameThickness: 0.06;
118
+ readonly frameDepth: 0.035;
119
+ readonly glassThickness: 0.014;
120
+ readonly curb: true;
121
+ readonly curbHeight: 0.1;
122
+ readonly cutoutOffset: 0;
123
+ readonly lanternHeight: 0.25;
124
+ readonly lanternTopScale: 0;
125
+ readonly openingAngle: number;
126
+ readonly openingSide: "top";
127
+ readonly operationState: 1;
128
+ readonly motorHousing: false;
129
+ readonly slideFraction: 0;
130
+ readonly slideDirection: "z";
131
+ readonly trackWidth: 0.04;
132
+ readonly motorHousingSize: 0.08;
133
+ };
134
+ readonly sliding: {
135
+ readonly label: "Sliding skylight";
136
+ readonly width: 1.4;
137
+ readonly height: 1.1;
138
+ readonly frameThickness: 0.055;
139
+ readonly frameDepth: 0.08;
140
+ readonly glassThickness: 0.012;
141
+ readonly curb: true;
142
+ readonly curbHeight: 0.08;
143
+ readonly cutoutOffset: 0;
144
+ readonly lanternHeight: 0.25;
145
+ readonly lanternTopScale: 0;
146
+ readonly openingAngle: 0;
147
+ readonly openingSide: "top";
148
+ readonly operationState: 0.35;
149
+ readonly motorHousing: false;
150
+ readonly slideFraction: 0.35;
151
+ readonly slideDirection: "x";
152
+ readonly trackWidth: 0.045;
153
+ readonly motorHousingSize: 0.08;
154
+ };
155
+ };
156
+ export declare const SkylightNode: z.ZodObject<{
157
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
158
+ name: z.ZodOptional<z.ZodString>;
159
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
160
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
161
+ camera: z.ZodOptional<z.ZodObject<{
162
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
163
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
164
+ mode: z.ZodDefault<z.ZodEnum<{
165
+ perspective: "perspective";
166
+ orthographic: "orthographic";
167
+ }>>;
168
+ fov: z.ZodOptional<z.ZodNumber>;
169
+ zoom: z.ZodOptional<z.ZodNumber>;
170
+ }, z.core.$strip>>;
171
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
172
+ id: z.ZodDefault<z.ZodTemplateLiteral<`skylight_${string}`>>;
173
+ type: z.ZodDefault<z.ZodLiteral<"skylight">>;
174
+ material: z.ZodOptional<z.ZodObject<{
175
+ id: z.ZodOptional<z.ZodString>;
176
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
177
+ custom: "custom";
178
+ white: "white";
179
+ brick: "brick";
180
+ concrete: "concrete";
181
+ wood: "wood";
182
+ glass: "glass";
183
+ metal: "metal";
184
+ plaster: "plaster";
185
+ tile: "tile";
186
+ marble: "marble";
187
+ }>>>;
188
+ properties: z.ZodOptional<z.ZodObject<{
189
+ color: z.ZodDefault<z.ZodString>;
190
+ roughness: z.ZodDefault<z.ZodNumber>;
191
+ metalness: z.ZodDefault<z.ZodNumber>;
192
+ opacity: z.ZodDefault<z.ZodNumber>;
193
+ transparent: z.ZodDefault<z.ZodBoolean>;
194
+ side: z.ZodDefault<z.ZodEnum<{
195
+ front: "front";
196
+ back: "back";
197
+ double: "double";
198
+ }>>;
199
+ }, z.core.$strip>>;
200
+ texture: z.ZodOptional<z.ZodObject<{
201
+ url: z.ZodString;
202
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
203
+ scale: z.ZodOptional<z.ZodNumber>;
204
+ }, z.core.$strip>>;
205
+ }, z.core.$strip>>;
206
+ materialPreset: z.ZodOptional<z.ZodString>;
207
+ glassMaterial: z.ZodOptional<z.ZodObject<{
208
+ id: z.ZodOptional<z.ZodString>;
209
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
210
+ custom: "custom";
211
+ white: "white";
212
+ brick: "brick";
213
+ concrete: "concrete";
214
+ wood: "wood";
215
+ glass: "glass";
216
+ metal: "metal";
217
+ plaster: "plaster";
218
+ tile: "tile";
219
+ marble: "marble";
220
+ }>>>;
221
+ properties: z.ZodOptional<z.ZodObject<{
222
+ color: z.ZodDefault<z.ZodString>;
223
+ roughness: z.ZodDefault<z.ZodNumber>;
224
+ metalness: z.ZodDefault<z.ZodNumber>;
225
+ opacity: z.ZodDefault<z.ZodNumber>;
226
+ transparent: z.ZodDefault<z.ZodBoolean>;
227
+ side: z.ZodDefault<z.ZodEnum<{
228
+ front: "front";
229
+ back: "back";
230
+ double: "double";
231
+ }>>;
232
+ }, z.core.$strip>>;
233
+ texture: z.ZodOptional<z.ZodObject<{
234
+ url: z.ZodString;
235
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
236
+ scale: z.ZodOptional<z.ZodNumber>;
237
+ }, z.core.$strip>>;
238
+ }, z.core.$strip>>;
239
+ glassMaterialPreset: z.ZodOptional<z.ZodString>;
240
+ roofSegmentId: z.ZodOptional<z.ZodString>;
241
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
242
+ rotation: z.ZodDefault<z.ZodNumber>;
243
+ width: z.ZodDefault<z.ZodNumber>;
244
+ height: z.ZodDefault<z.ZodNumber>;
245
+ frameThickness: z.ZodDefault<z.ZodNumber>;
246
+ frameDepth: z.ZodDefault<z.ZodNumber>;
247
+ skylightType: z.ZodDefault<z.ZodEnum<{
248
+ flat: "flat";
249
+ sliding: "sliding";
250
+ opening: "opening";
251
+ "walk-on": "walk-on";
252
+ lantern: "lantern";
253
+ }>>;
254
+ glassThickness: z.ZodDefault<z.ZodNumber>;
255
+ lanternHeight: z.ZodDefault<z.ZodNumber>;
256
+ lanternTopScale: z.ZodDefault<z.ZodNumber>;
257
+ openingAngle: z.ZodDefault<z.ZodNumber>;
258
+ openingSide: z.ZodDefault<z.ZodEnum<{
259
+ right: "right";
260
+ left: "left";
261
+ top: "top";
262
+ bottom: "bottom";
263
+ }>>;
264
+ operationState: z.ZodDefault<z.ZodNumber>;
265
+ motorHousing: z.ZodDefault<z.ZodBoolean>;
266
+ slideFraction: z.ZodDefault<z.ZodNumber>;
267
+ slideDirection: z.ZodDefault<z.ZodEnum<{
268
+ z: "z";
269
+ x: "x";
270
+ }>>;
271
+ trackWidth: z.ZodDefault<z.ZodNumber>;
272
+ motorHousingSize: z.ZodDefault<z.ZodNumber>;
273
+ curb: z.ZodDefault<z.ZodBoolean>;
274
+ curbHeight: z.ZodDefault<z.ZodNumber>;
275
+ cutoutOffset: z.ZodDefault<z.ZodNumber>;
276
+ surfaceNormal: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
277
+ }, z.core.$strip>;
278
+ export type SkylightNode = z.infer<typeof SkylightNode>;
279
+ //# sourceMappingURL=skylight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skylight.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/skylight.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,oBAAoB;;;EAA6B,CAAA;AAC9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvE,eAAO,MAAM,mBAAmB,+DAAgE,CAAA;AAEhG,eAAO,MAAM,YAAY;;;;;;EAA8B,CAAA;AACvD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,mBAAmB;;;;;EAA6C,CAAA;AAC7E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAErE,eAAO,MAAM,sBAAsB;;;EAAqB,CAAA;AACxD,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,mBAAmB,CAAA;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,sBAAsB,CAAA;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0G2B,CAAA;AAI7D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8CxB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA"}