@pascal-app/core 0.9.2 → 1.0.0-beta.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 (339) hide show
  1. package/README.md +17 -10
  2. package/dist/events/bus.d.ts +21 -2
  3. package/dist/events/bus.d.ts.map +1 -1
  4. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +17 -1
  5. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  6. package/dist/hooks/spatial-grid/floor-placed-elevation.js +61 -8
  7. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +116 -66
  8. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  9. package/dist/hooks/spatial-grid/spatial-grid-manager.js +319 -441
  10. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +46 -1
  11. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  12. package/dist/hooks/spatial-grid/spatial-grid-sync.js +204 -12
  13. package/dist/hooks/spatial-grid/support-host-id.d.ts +3 -0
  14. package/dist/hooks/spatial-grid/support-host-id.d.ts.map +1 -0
  15. package/dist/hooks/spatial-grid/support-host-id.js +2 -0
  16. package/dist/hooks/spatial-grid/support-host-patch.d.ts +51 -0
  17. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -0
  18. package/dist/hooks/spatial-grid/support-host-patch.js +164 -0
  19. package/dist/index.d.ts +23 -11
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +22 -10
  22. package/dist/lib/measurement-geometry.d.ts +4 -0
  23. package/dist/lib/measurement-geometry.d.ts.map +1 -1
  24. package/dist/lib/measurement-geometry.js +27 -10
  25. package/dist/lib/slab-polygon.d.ts.map +1 -1
  26. package/dist/lib/slab-polygon.js +33 -1
  27. package/dist/lib/space-detection.d.ts +15 -4
  28. package/dist/lib/space-detection.d.ts.map +1 -1
  29. package/dist/lib/space-detection.js +232 -91
  30. package/dist/lib/terrain-brush.d.ts +163 -0
  31. package/dist/lib/terrain-brush.d.ts.map +1 -0
  32. package/dist/lib/terrain-brush.js +359 -0
  33. package/dist/lib/terrain-codec.d.ts +51 -0
  34. package/dist/lib/terrain-codec.d.ts.map +1 -0
  35. package/dist/lib/terrain-codec.js +167 -0
  36. package/dist/lib/terrain-field.d.ts +150 -0
  37. package/dist/lib/terrain-field.d.ts.map +1 -0
  38. package/dist/lib/terrain-field.js +248 -0
  39. package/dist/lib/terrain-raycast.d.ts +44 -0
  40. package/dist/lib/terrain-raycast.d.ts.map +1 -0
  41. package/dist/lib/terrain-raycast.js +188 -0
  42. package/dist/lib/terrain-source.d.ts +60 -0
  43. package/dist/lib/terrain-source.d.ts.map +1 -0
  44. package/dist/lib/terrain-source.js +90 -0
  45. package/dist/lib/terrain-support.d.ts +85 -0
  46. package/dist/lib/terrain-support.d.ts.map +1 -0
  47. package/dist/lib/terrain-support.js +218 -0
  48. package/dist/lib/zone-quantities.d.ts +1 -1
  49. package/dist/lib/zone-quantities.d.ts.map +1 -1
  50. package/dist/lib/zone-quantities.js +311 -66
  51. package/dist/material-library.d.ts +9 -1
  52. package/dist/material-library.d.ts.map +1 -1
  53. package/dist/material-library.js +56 -4
  54. package/dist/registry/handles.d.ts +16 -1
  55. package/dist/registry/handles.d.ts.map +1 -1
  56. package/dist/registry/index.d.ts +1 -1
  57. package/dist/registry/index.d.ts.map +1 -1
  58. package/dist/registry/subtree.d.ts.map +1 -1
  59. package/dist/registry/subtree.js +5 -2
  60. package/dist/registry/types.d.ts +83 -1
  61. package/dist/registry/types.d.ts.map +1 -1
  62. package/dist/schema/index.d.ts +6 -3
  63. package/dist/schema/index.d.ts.map +1 -1
  64. package/dist/schema/index.js +6 -3
  65. package/dist/schema/nodes/cabinet.d.ts +2 -0
  66. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  67. package/dist/schema/nodes/cabinet.js +4 -2
  68. package/dist/schema/nodes/ceiling.d.ts +1 -1
  69. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  70. package/dist/schema/nodes/ceiling.js +7 -1
  71. package/dist/schema/nodes/column.d.ts +1 -0
  72. package/dist/schema/nodes/column.d.ts.map +1 -1
  73. package/dist/schema/nodes/column.js +2 -0
  74. package/dist/schema/nodes/construction-dimension.d.ts +195 -0
  75. package/dist/schema/nodes/construction-dimension.d.ts.map +1 -0
  76. package/dist/schema/nodes/construction-dimension.js +151 -0
  77. package/dist/schema/nodes/door.d.ts +29 -0
  78. package/dist/schema/nodes/door.d.ts.map +1 -1
  79. package/dist/schema/nodes/door.js +20 -0
  80. package/dist/schema/nodes/duct-terminal.d.ts +1 -0
  81. package/dist/schema/nodes/duct-terminal.d.ts.map +1 -1
  82. package/dist/schema/nodes/duct-terminal.js +2 -0
  83. package/dist/schema/nodes/fence.d.ts +2 -0
  84. package/dist/schema/nodes/fence.d.ts.map +1 -1
  85. package/dist/schema/nodes/fence.js +8 -0
  86. package/dist/schema/nodes/hvac-equipment.d.ts +1 -0
  87. package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -1
  88. package/dist/schema/nodes/hvac-equipment.js +2 -0
  89. package/dist/schema/nodes/item.d.ts +1 -0
  90. package/dist/schema/nodes/item.d.ts.map +1 -1
  91. package/dist/schema/nodes/item.js +13 -0
  92. package/dist/schema/nodes/level.d.ts +2 -1
  93. package/dist/schema/nodes/level.d.ts.map +1 -1
  94. package/dist/schema/nodes/level.js +12 -33
  95. package/dist/schema/nodes/shelf.d.ts +1 -0
  96. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  97. package/dist/schema/nodes/shelf.js +2 -0
  98. package/dist/schema/nodes/site.d.ts +9 -0
  99. package/dist/schema/nodes/site.d.ts.map +1 -1
  100. package/dist/schema/nodes/site.js +8 -6
  101. package/dist/schema/nodes/slab.d.ts +5 -0
  102. package/dist/schema/nodes/slab.d.ts.map +1 -1
  103. package/dist/schema/nodes/slab.js +14 -2
  104. package/dist/schema/nodes/spawn.d.ts +1 -0
  105. package/dist/schema/nodes/spawn.d.ts.map +1 -1
  106. package/dist/schema/nodes/spawn.js +2 -0
  107. package/dist/schema/nodes/stair.d.ts +3 -1
  108. package/dist/schema/nodes/stair.d.ts.map +1 -1
  109. package/dist/schema/nodes/stair.js +8 -1
  110. package/dist/schema/nodes/structural-grid.d.ts +27 -0
  111. package/dist/schema/nodes/structural-grid.d.ts.map +1 -0
  112. package/dist/schema/nodes/structural-grid.js +17 -0
  113. package/dist/schema/nodes/wall.d.ts +5 -2
  114. package/dist/schema/nodes/wall.d.ts.map +1 -1
  115. package/dist/schema/nodes/wall.js +13 -4
  116. package/dist/schema/nodes/window.d.ts +29 -0
  117. package/dist/schema/nodes/window.d.ts.map +1 -1
  118. package/dist/schema/nodes/window.js +18 -0
  119. package/dist/schema/nodes/zone.d.ts +20 -0
  120. package/dist/schema/nodes/zone.d.ts.map +1 -1
  121. package/dist/schema/nodes/zone.js +15 -0
  122. package/dist/schema/terrain.d.ts +28 -0
  123. package/dist/schema/terrain.d.ts.map +1 -0
  124. package/dist/schema/terrain.js +30 -0
  125. package/dist/schema/types.d.ts +211 -3
  126. package/dist/schema/types.d.ts.map +1 -1
  127. package/dist/schema/types.js +4 -0
  128. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts +80 -0
  129. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -0
  130. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.js +89 -0
  131. package/dist/services/index.d.ts +2 -1
  132. package/dist/services/index.d.ts.map +1 -1
  133. package/dist/services/index.js +2 -1
  134. package/dist/services/level-height.d.ts +8 -9
  135. package/dist/services/level-height.d.ts.map +1 -1
  136. package/dist/services/level-height.js +48 -16
  137. package/dist/services/storey.d.ts +103 -0
  138. package/dist/services/storey.d.ts.map +1 -0
  139. package/dist/services/storey.js +296 -0
  140. package/dist/store/actions/node-actions.d.ts.map +1 -1
  141. package/dist/store/actions/node-actions.js +47 -3
  142. package/dist/store/history-control.d.ts +20 -0
  143. package/dist/store/history-control.d.ts.map +1 -1
  144. package/dist/store/history-control.js +110 -13
  145. package/dist/store/use-live-terrain.d.ts +65 -0
  146. package/dist/store/use-live-terrain.d.ts.map +1 -0
  147. package/dist/store/use-live-terrain.js +31 -0
  148. package/dist/store/use-live-transforms.d.ts +8 -0
  149. package/dist/store/use-live-transforms.d.ts.map +1 -1
  150. package/dist/store/use-scene.d.ts +31 -2
  151. package/dist/store/use-scene.d.ts.map +1 -1
  152. package/dist/store/use-scene.js +638 -8
  153. package/dist/systems/elevator/elevator-opening-system.d.ts +1 -0
  154. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  155. package/dist/systems/elevator/elevator-opening-system.js +27 -21
  156. package/dist/systems/elevator/elevator-service.d.ts +0 -2
  157. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  158. package/dist/systems/elevator/elevator-service.js +2 -24
  159. package/dist/systems/slab/slab-placement.d.ts +11 -0
  160. package/dist/systems/slab/slab-placement.d.ts.map +1 -0
  161. package/dist/systems/slab/slab-placement.js +14 -0
  162. package/dist/systems/slab/slab-support.d.ts +150 -0
  163. package/dist/systems/slab/slab-support.d.ts.map +1 -0
  164. package/dist/systems/slab/slab-support.js +575 -0
  165. package/dist/systems/stair/stair-opening-preview.d.ts +1060 -935
  166. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  167. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
  168. package/dist/systems/stair/stair-opening-sync.js +18 -15
  169. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  170. package/dist/systems/stair/stair-opening-system.js +32 -4
  171. package/dist/systems/stair/stair-rise.d.ts +22 -0
  172. package/dist/systems/stair/stair-rise.d.ts.map +1 -0
  173. package/dist/systems/stair/stair-rise.js +79 -0
  174. package/dist/systems/wall/wall-curve.d.ts +10 -0
  175. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  176. package/dist/systems/wall/wall-curve.js +1 -1
  177. package/dist/systems/wall/wall-mitering.js +6 -6
  178. package/dist/systems/wall/wall-top.d.ts +40 -0
  179. package/dist/systems/wall/wall-top.d.ts.map +1 -0
  180. package/dist/systems/wall/wall-top.js +46 -0
  181. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  182. package/dist/utils/clone-scene-graph.js +34 -3
  183. package/dist/utils/heal-scene-graph.d.ts +1 -1
  184. package/dist/utils/heal-scene-graph.d.ts.map +1 -1
  185. package/dist/utils/heal-scene-graph.js +25 -9
  186. package/dist/validation/validate-build-json.d.ts +2 -0
  187. package/dist/validation/validate-build-json.d.ts.map +1 -1
  188. package/dist/validation/validate-build-json.js +59 -3
  189. package/package.json +2 -2
  190. package/dist/hooks/scene-registry/scene-registry.test.d.ts +0 -2
  191. package/dist/hooks/scene-registry/scene-registry.test.d.ts.map +0 -1
  192. package/dist/hooks/scene-registry/scene-registry.test.js +0 -26
  193. package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts +0 -2
  194. package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts.map +0 -1
  195. package/dist/hooks/spatial-grid/floor-placed-elevation.test.js +0 -366
  196. package/dist/hooks/spatial-grid/wall-slab-overlap.test.d.ts +0 -2
  197. package/dist/hooks/spatial-grid/wall-slab-overlap.test.d.ts.map +0 -1
  198. package/dist/hooks/spatial-grid/wall-slab-overlap.test.js +0 -363
  199. package/dist/lib/measurement-geometry.test.d.ts +0 -2
  200. package/dist/lib/measurement-geometry.test.d.ts.map +0 -1
  201. package/dist/lib/measurement-geometry.test.js +0 -102
  202. package/dist/lib/slab-polygon.test.d.ts +0 -2
  203. package/dist/lib/slab-polygon.test.d.ts.map +0 -1
  204. package/dist/lib/slab-polygon.test.js +0 -635
  205. package/dist/lib/space-detection-pause.test.d.ts +0 -2
  206. package/dist/lib/space-detection-pause.test.d.ts.map +0 -1
  207. package/dist/lib/space-detection-pause.test.js +0 -42
  208. package/dist/lib/space-detection.test.d.ts +0 -2
  209. package/dist/lib/space-detection.test.d.ts.map +0 -1
  210. package/dist/lib/space-detection.test.js +0 -376
  211. package/dist/lib/zone-quantities.test.d.ts +0 -2
  212. package/dist/lib/zone-quantities.test.d.ts.map +0 -1
  213. package/dist/lib/zone-quantities.test.js +0 -82
  214. package/dist/registry/registry.test.d.ts +0 -2
  215. package/dist/registry/registry.test.d.ts.map +0 -1
  216. package/dist/registry/registry.test.js +0 -196
  217. package/dist/registry/relations-resolver.test.d.ts +0 -2
  218. package/dist/registry/relations-resolver.test.d.ts.map +0 -1
  219. package/dist/registry/relations-resolver.test.js +0 -183
  220. package/dist/registry/scene-api.test.d.ts +0 -2
  221. package/dist/registry/scene-api.test.d.ts.map +0 -1
  222. package/dist/registry/scene-api.test.js +0 -183
  223. package/dist/registry/subtree.test.d.ts +0 -2
  224. package/dist/registry/subtree.test.d.ts.map +0 -1
  225. package/dist/registry/subtree.test.js +0 -163
  226. package/dist/schema/asset-url.test.d.ts +0 -2
  227. package/dist/schema/asset-url.test.d.ts.map +0 -1
  228. package/dist/schema/asset-url.test.js +0 -134
  229. package/dist/schema/material.test.d.ts +0 -2
  230. package/dist/schema/material.test.d.ts.map +0 -1
  231. package/dist/schema/material.test.js +0 -43
  232. package/dist/schema/nodes/measurement.test.d.ts +0 -2
  233. package/dist/schema/nodes/measurement.test.d.ts.map +0 -1
  234. package/dist/schema/nodes/measurement.test.js +0 -139
  235. package/dist/schema/nodes/ridge-vent-defaults.test.d.ts +0 -2
  236. package/dist/schema/nodes/ridge-vent-defaults.test.d.ts.map +0 -1
  237. package/dist/schema/nodes/ridge-vent-defaults.test.js +0 -205
  238. package/dist/schema/nodes/roof-segment-shape.test.d.ts +0 -2
  239. package/dist/schema/nodes/roof-segment-shape.test.d.ts.map +0 -1
  240. package/dist/schema/nodes/roof-segment-shape.test.js +0 -175
  241. package/dist/schema/nodes/roof-segment-surface.test.d.ts +0 -2
  242. package/dist/schema/nodes/roof-segment-surface.test.d.ts.map +0 -1
  243. package/dist/schema/nodes/roof-segment-surface.test.js +0 -48
  244. package/dist/schema/nodes/roof-segment-trim.test.d.ts +0 -2
  245. package/dist/schema/nodes/roof-segment-trim.test.d.ts.map +0 -1
  246. package/dist/schema/nodes/roof-segment-trim.test.js +0 -107
  247. package/dist/schema/nodes/roof-segment-walls.test.d.ts +0 -2
  248. package/dist/schema/nodes/roof-segment-walls.test.d.ts.map +0 -1
  249. package/dist/schema/nodes/roof-segment-walls.test.js +0 -92
  250. package/dist/schema/nodes/wall.test.d.ts +0 -2
  251. package/dist/schema/nodes/wall.test.d.ts.map +0 -1
  252. package/dist/schema/nodes/wall.test.js +0 -208
  253. package/dist/services/alignment-anchors.test.d.ts +0 -2
  254. package/dist/services/alignment-anchors.test.d.ts.map +0 -1
  255. package/dist/services/alignment-anchors.test.js +0 -383
  256. package/dist/services/alignment.test.d.ts +0 -2
  257. package/dist/services/alignment.test.d.ts.map +0 -1
  258. package/dist/services/alignment.test.js +0 -92
  259. package/dist/services/drag-session.test.d.ts +0 -2
  260. package/dist/services/drag-session.test.d.ts.map +0 -1
  261. package/dist/services/drag-session.test.js +0 -219
  262. package/dist/services/hosting.test.d.ts +0 -2
  263. package/dist/services/hosting.test.d.ts.map +0 -1
  264. package/dist/services/hosting.test.js +0 -230
  265. package/dist/services/movement.test.d.ts +0 -2
  266. package/dist/services/movement.test.d.ts.map +0 -1
  267. package/dist/services/movement.test.js +0 -133
  268. package/dist/services/opening-guides.test.d.ts +0 -2
  269. package/dist/services/opening-guides.test.d.ts.map +0 -1
  270. package/dist/services/opening-guides.test.js +0 -208
  271. package/dist/services/port-connectivity.test.d.ts +0 -2
  272. package/dist/services/port-connectivity.test.d.ts.map +0 -1
  273. package/dist/services/port-connectivity.test.js +0 -297
  274. package/dist/services/riser-diagram.test.d.ts +0 -2
  275. package/dist/services/riser-diagram.test.d.ts.map +0 -1
  276. package/dist/services/riser-diagram.test.js +0 -66
  277. package/dist/services/single-undo-dance.test.d.ts +0 -2
  278. package/dist/services/single-undo-dance.test.d.ts.map +0 -1
  279. package/dist/services/single-undo-dance.test.js +0 -210
  280. package/dist/services/snap.test.d.ts +0 -2
  281. package/dist/services/snap.test.d.ts.map +0 -1
  282. package/dist/services/snap.test.js +0 -137
  283. package/dist/services/system-graph.test.d.ts +0 -2
  284. package/dist/services/system-graph.test.d.ts.map +0 -1
  285. package/dist/services/system-graph.test.js +0 -138
  286. package/dist/services/validate-dwv.test.d.ts +0 -2
  287. package/dist/services/validate-dwv.test.d.ts.map +0 -1
  288. package/dist/services/validate-dwv.test.js +0 -109
  289. package/dist/store/actions/node-mutation-sanitize.test.d.ts +0 -2
  290. package/dist/store/actions/node-mutation-sanitize.test.d.ts.map +0 -1
  291. package/dist/store/actions/node-mutation-sanitize.test.js +0 -147
  292. package/dist/store/actions/reparent.test.d.ts +0 -2
  293. package/dist/store/actions/reparent.test.d.ts.map +0 -1
  294. package/dist/store/actions/reparent.test.js +0 -212
  295. package/dist/store/actions/ridge-vent-update.test.d.ts +0 -2
  296. package/dist/store/actions/ridge-vent-update.test.d.ts.map +0 -1
  297. package/dist/store/actions/ridge-vent-update.test.js +0 -264
  298. package/dist/store/use-scene-dirty-tracking.test.d.ts +0 -2
  299. package/dist/store/use-scene-dirty-tracking.test.d.ts.map +0 -1
  300. package/dist/store/use-scene-dirty-tracking.test.js +0 -68
  301. package/dist/store/use-scene-elevator-migration.test.d.ts +0 -2
  302. package/dist/store/use-scene-elevator-migration.test.d.ts.map +0 -1
  303. package/dist/store/use-scene-elevator-migration.test.js +0 -109
  304. package/dist/store/use-scene-measurement-roundtrip.test.d.ts +0 -2
  305. package/dist/store/use-scene-measurement-roundtrip.test.d.ts.map +0 -1
  306. package/dist/store/use-scene-measurement-roundtrip.test.js +0 -97
  307. package/dist/store/use-scene-plugins.test.d.ts +0 -2
  308. package/dist/store/use-scene-plugins.test.d.ts.map +0 -1
  309. package/dist/store/use-scene-plugins.test.js +0 -51
  310. package/dist/store/use-scene-wall-slot-migration.test.d.ts +0 -2
  311. package/dist/store/use-scene-wall-slot-migration.test.d.ts.map +0 -1
  312. package/dist/store/use-scene-wall-slot-migration.test.js +0 -210
  313. package/dist/store/use-scene-window-migration.test.d.ts +0 -2
  314. package/dist/store/use-scene-window-migration.test.d.ts.map +0 -1
  315. package/dist/store/use-scene-window-migration.test.js +0 -85
  316. package/dist/systems/elevator/elevator-opening-sync.test.d.ts +0 -2
  317. package/dist/systems/elevator/elevator-opening-sync.test.d.ts.map +0 -1
  318. package/dist/systems/elevator/elevator-opening-sync.test.js +0 -146
  319. package/dist/systems/elevator/elevator-runtime.test.d.ts +0 -2
  320. package/dist/systems/elevator/elevator-runtime.test.d.ts.map +0 -1
  321. package/dist/systems/elevator/elevator-runtime.test.js +0 -64
  322. package/dist/systems/fence/fence-spline.test.d.ts +0 -2
  323. package/dist/systems/fence/fence-spline.test.d.ts.map +0 -1
  324. package/dist/systems/fence/fence-spline.test.js +0 -136
  325. package/dist/systems/stair/stair-opening-preview.test.d.ts +0 -2
  326. package/dist/systems/stair/stair-opening-preview.test.d.ts.map +0 -1
  327. package/dist/systems/stair/stair-opening-preview.test.js +0 -80
  328. package/dist/systems/stair/stair-opening-sync.test.d.ts +0 -2
  329. package/dist/systems/stair/stair-opening-sync.test.d.ts.map +0 -1
  330. package/dist/systems/stair/stair-opening-sync.test.js +0 -485
  331. package/dist/systems/wall/wall-mitering.test.d.ts +0 -2
  332. package/dist/systems/wall/wall-mitering.test.d.ts.map +0 -1
  333. package/dist/systems/wall/wall-mitering.test.js +0 -63
  334. package/dist/utils/clone-scene-graph.test.d.ts +0 -2
  335. package/dist/utils/clone-scene-graph.test.d.ts.map +0 -1
  336. package/dist/utils/clone-scene-graph.test.js +0 -62
  337. package/dist/utils/heal-scene-graph.test.d.ts +0 -2
  338. package/dist/utils/heal-scene-graph.test.d.ts.map +0 -1
  339. package/dist/utils/heal-scene-graph.test.js +0 -88
@@ -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
+ });
@@ -21,6 +21,15 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[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
+ terrain: z.ZodOptional<z.ZodObject<{
25
+ type: z.ZodLiteral<"heightfield">;
26
+ origin: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
27
+ spacing: z.ZodNumber;
28
+ cols: z.ZodNumber;
29
+ rows: z.ZodNumber;
30
+ step: z.ZodNumber;
31
+ heights: z.ZodString;
32
+ }, z.core.$strip>>;
24
33
  children: z.ZodDefault<z.ZodArray<z.ZodString>>;
25
34
  }, z.core.$strip>, z.ZodObject<{
26
35
  object: z.ZodDefault<z.ZodLiteral<"node">>;
@@ -146,8 +155,9 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
146
155
  metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
147
156
  id: z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>;
148
157
  type: z.ZodDefault<z.ZodLiteral<"level">>;
149
- children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`fence_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`column_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`zone_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`slab_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`ceiling_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`roof_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`stair_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`scan_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`guide_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`measurement_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`spawn_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`shelf_${string}`>>]>>>;
158
+ children: z.ZodDefault<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<`item_${string}` | `ceiling_${string}` | `column_${string}` | `wall_${string}` | `fence_${string}` | `construction-dimension_${string}` | `structural-grid_${string}` | `zone_${string}` | `slab_${string}` | `roof_${string}` | `stair_${string}` | `scan_${string}` | `guide_${string}` | `measurement_${string}` | `spawn_${string}` | `shelf_${string}` | `duct-segment_${string}` | `duct-fitting_${string}` | `duct-terminal_${string}` | `hvac-equipment_${string}` | `lineset_${string}` | `liquid-line_${string}` | `pipe-segment_${string}` | `pipe-fitting_${string}` | `pipe-trap_${string}`, string>>>>;
150
159
  level: z.ZodDefault<z.ZodNumber>;
160
+ height: z.ZodOptional<z.ZodNumber>;
151
161
  }, z.core.$strip>, z.ZodObject<{
152
162
  object: z.ZodDefault<z.ZodLiteral<"node">>;
153
163
  name: z.ZodOptional<z.ZodString>;
@@ -168,6 +178,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
168
178
  type: z.ZodDefault<z.ZodLiteral<"column">>;
169
179
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
170
180
  rotation: z.ZodDefault<z.ZodNumber>;
181
+ supportSlabId: z.ZodOptional<z.ZodString>;
171
182
  style: z.ZodDefault<z.ZodEnum<{
172
183
  plain: "plain";
173
184
  faceted: "faceted";
@@ -351,6 +362,131 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
351
362
  }, z.core.$strip>>;
352
363
  materialPreset: z.ZodOptional<z.ZodString>;
353
364
  slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
365
+ }, z.core.$strip>, z.ZodObject<{
366
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
367
+ name: z.ZodOptional<z.ZodString>;
368
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
369
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
370
+ camera: z.ZodOptional<z.ZodObject<{
371
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
372
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
373
+ mode: z.ZodDefault<z.ZodEnum<{
374
+ perspective: "perspective";
375
+ orthographic: "orthographic";
376
+ }>>;
377
+ fov: z.ZodOptional<z.ZodNumber>;
378
+ zoom: z.ZodOptional<z.ZodNumber>;
379
+ }, z.core.$strip>>;
380
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
381
+ id: z.ZodDefault<z.ZodTemplateLiteral<`construction-dimension_${string}`>>;
382
+ type: z.ZodDefault<z.ZodLiteral<"construction-dimension">>;
383
+ anchors: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
384
+ kind: z.ZodLiteral<"feature">;
385
+ reference: z.ZodObject<{
386
+ nodeId: z.ZodString;
387
+ featureId: z.ZodString;
388
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
389
+ }, z.core.$strip>;
390
+ fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
391
+ }, z.core.$strip>]>>>;
392
+ baseline: z.ZodDefault<z.ZodObject<{
393
+ origin: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
394
+ direction: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
395
+ }, z.core.$strip>>;
396
+ chainMode: z.ZodDefault<z.ZodEnum<{
397
+ "point-to-point": "point-to-point";
398
+ continuous: "continuous";
399
+ }>>;
400
+ mode: z.ZodDefault<z.ZodEnum<{
401
+ radius: "radius";
402
+ linear: "linear";
403
+ diameter: "diameter";
404
+ "center-mark": "center-mark";
405
+ chord: "chord";
406
+ "arc-length": "arc-length";
407
+ angular: "angular";
408
+ coordinate: "coordinate";
409
+ }>>;
410
+ featureCount: z.ZodDefault<z.ZodNumber>;
411
+ showCenterMark: z.ZodDefault<z.ZodBoolean>;
412
+ prefix: z.ZodDefault<z.ZodString>;
413
+ suffix: z.ZodDefault<z.ZodString>;
414
+ textOverride: z.ZodDefault<z.ZodNullable<z.ZodString>>;
415
+ datumPolicy: z.ZodDefault<z.ZodEnum<{
416
+ centerline: "centerline";
417
+ "wall-face": "wall-face";
418
+ "structural-face": "structural-face";
419
+ "finish-face": "finish-face";
420
+ }>>;
421
+ terminator: z.ZodDefault<z.ZodEnum<{
422
+ "architectural-tick": "architectural-tick";
423
+ "filled-arrow": "filled-arrow";
424
+ "open-arrow": "open-arrow";
425
+ dot: "dot";
426
+ }>>;
427
+ textPosition: z.ZodDefault<z.ZodEnum<{
428
+ above: "above";
429
+ centered: "centered";
430
+ }>>;
431
+ imperialPrecision: z.ZodDefault<z.ZodEnum<{
432
+ 1: "1";
433
+ "1/2": "1/2";
434
+ "1/4": "1/4";
435
+ "1/8": "1/8";
436
+ "1/16": "1/16";
437
+ }>>;
438
+ metricNotation: z.ZodDefault<z.ZodEnum<{
439
+ meters: "meters";
440
+ millimeters: "millimeters";
441
+ }>>;
442
+ extensionStartGap: z.ZodDefault<z.ZodNumber>;
443
+ extensionOvershoot: z.ZodDefault<z.ZodNumber>;
444
+ drawingType: z.ZodDefault<z.ZodEnum<{
445
+ "floor-plan": "floor-plan";
446
+ "foundation-plan": "foundation-plan";
447
+ "reflected-ceiling-plan": "reflected-ceiling-plan";
448
+ "roof-plan": "roof-plan";
449
+ "site-plan": "site-plan";
450
+ }>>;
451
+ drawingOverrides: z.ZodDefault<z.ZodArray<z.ZodObject<{
452
+ drawingType: z.ZodEnum<{
453
+ "floor-plan": "floor-plan";
454
+ "foundation-plan": "foundation-plan";
455
+ "reflected-ceiling-plan": "reflected-ceiling-plan";
456
+ "roof-plan": "roof-plan";
457
+ "site-plan": "site-plan";
458
+ }>;
459
+ presentation: z.ZodEnum<{
460
+ shown: "shown";
461
+ omit: "omit";
462
+ controlled: "controlled";
463
+ }>;
464
+ suppressedSegmentIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
465
+ }, z.core.$strip>>>;
466
+ controllingDimensionId: z.ZodDefault<z.ZodNullable<z.ZodDefault<z.ZodTemplateLiteral<`construction-dimension_${string}`>>>>;
467
+ }, z.core.$strip>, z.ZodObject<{
468
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
469
+ name: z.ZodOptional<z.ZodString>;
470
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
471
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
472
+ camera: z.ZodOptional<z.ZodObject<{
473
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
474
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
475
+ mode: z.ZodDefault<z.ZodEnum<{
476
+ perspective: "perspective";
477
+ orthographic: "orthographic";
478
+ }>>;
479
+ fov: z.ZodOptional<z.ZodNumber>;
480
+ zoom: z.ZodOptional<z.ZodNumber>;
481
+ }, z.core.$strip>>;
482
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
483
+ id: z.ZodDefault<z.ZodTemplateLiteral<`structural-grid_${string}`>>;
484
+ type: z.ZodDefault<z.ZodLiteral<"structural-grid">>;
485
+ start: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
486
+ end: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
487
+ label: z.ZodDefault<z.ZodString>;
488
+ showStartBubble: z.ZodDefault<z.ZodBoolean>;
489
+ showEndBubble: z.ZodDefault<z.ZodBoolean>;
354
490
  }, z.core.$strip>, z.ZodObject<{
355
491
  object: z.ZodDefault<z.ZodLiteral<"node">>;
356
492
  name: z.ZodOptional<z.ZodString>;
@@ -473,6 +609,9 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
473
609
  thickness: z.ZodOptional<z.ZodNumber>;
474
610
  height: z.ZodOptional<z.ZodNumber>;
475
611
  curveOffset: z.ZodOptional<z.ZodNumber>;
612
+ supportSlabId: z.ZodOptional<z.ZodString>;
613
+ supportOffset: z.ZodOptional<z.ZodNumber>;
614
+ fillToTerrain: z.ZodOptional<z.ZodBoolean>;
476
615
  faceBands: z.ZodOptional<z.ZodPreprocess<z.ZodObject<{
477
616
  enabled: z.ZodDefault<z.ZodBoolean>;
478
617
  count: z.ZodDefault<z.ZodNumber>;
@@ -640,6 +779,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
640
779
  tangents: z.ZodOptional<z.ZodArray<z.ZodNullable<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>>;
641
780
  height: z.ZodDefault<z.ZodNumber>;
642
781
  thickness: z.ZodDefault<z.ZodNumber>;
782
+ supportSlabId: z.ZodOptional<z.ZodString>;
783
+ supportOffset: z.ZodOptional<z.ZodNumber>;
643
784
  curveOffset: z.ZodOptional<z.ZodNumber>;
644
785
  baseHeight: z.ZodDefault<z.ZodNumber>;
645
786
  postSpacing: z.ZodDefault<z.ZodNumber>;
@@ -683,6 +824,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
683
824
  metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
684
825
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
685
826
  rotation: z.ZodDefault<z.ZodNumber>;
827
+ supportSlabId: z.ZodOptional<z.ZodString>;
686
828
  width: z.ZodDefault<z.ZodNumber>;
687
829
  depth: z.ZodDefault<z.ZodNumber>;
688
830
  carcassHeight: z.ZodDefault<z.ZodNumber>;
@@ -893,6 +1035,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
893
1035
  metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
894
1036
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
895
1037
  rotation: z.ZodDefault<z.ZodNumber>;
1038
+ supportSlabId: z.ZodOptional<z.ZodString>;
896
1039
  width: z.ZodDefault<z.ZodNumber>;
897
1040
  depth: z.ZodDefault<z.ZodNumber>;
898
1041
  carcassHeight: z.ZodDefault<z.ZodNumber>;
@@ -1118,6 +1261,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1118
1261
  right: "right";
1119
1262
  left: "left";
1120
1263
  }>>;
1264
+ supportSlabId: z.ZodOptional<z.ZodString>;
1121
1265
  collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
1122
1266
  slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1123
1267
  asset: z.ZodObject<{
@@ -1213,6 +1357,26 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1213
1357
  polygon: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
1214
1358
  autoFromWalls: z.ZodDefault<z.ZodBoolean>;
1215
1359
  boundaryWallIds: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>>>;
1360
+ spaceRole: z.ZodDefault<z.ZodEnum<{
1361
+ generic: "generic";
1362
+ room: "room";
1363
+ }>>;
1364
+ roomNumber: z.ZodDefault<z.ZodString>;
1365
+ enclosureStatus: z.ZodDefault<z.ZodEnum<{
1366
+ auto: "auto";
1367
+ enclosed: "enclosed";
1368
+ open: "open";
1369
+ }>>;
1370
+ floorFinish: z.ZodDefault<z.ZodString>;
1371
+ wallFinish: z.ZodDefault<z.ZodString>;
1372
+ ceilingFinish: z.ZodDefault<z.ZodString>;
1373
+ ceilingHeight: z.ZodDefault<z.ZodNumber>;
1374
+ occupancy: z.ZodDefault<z.ZodString>;
1375
+ clearDimensionPolicy: z.ZodDefault<z.ZodEnum<{
1376
+ none: "none";
1377
+ "inside-faces": "inside-faces";
1378
+ "finish-faces": "finish-faces";
1379
+ }>>;
1216
1380
  color: z.ZodDefault<z.ZodString>;
1217
1381
  metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
1218
1382
  }, z.core.$strip>, z.ZodObject<{
@@ -1279,6 +1443,10 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1279
1443
  elevatorId: z.ZodOptional<z.ZodString>;
1280
1444
  }, z.core.$strip>>>;
1281
1445
  elevation: z.ZodDefault<z.ZodNumber>;
1446
+ thickness: z.ZodDefault<z.ZodNumber>;
1447
+ recessed: z.ZodDefault<z.ZodBoolean>;
1448
+ recessedRimElevation: z.ZodOptional<z.ZodNumber>;
1449
+ fillToTerrain: z.ZodOptional<z.ZodBoolean>;
1282
1450
  autoFromWalls: z.ZodDefault<z.ZodBoolean>;
1283
1451
  }, z.core.$strip>, z.ZodObject<{
1284
1452
  object: z.ZodDefault<z.ZodLiteral<"node">>;
@@ -1344,7 +1512,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1344
1512
  stairId: z.ZodOptional<z.ZodString>;
1345
1513
  elevatorId: z.ZodOptional<z.ZodString>;
1346
1514
  }, z.core.$strip>>>;
1347
- height: z.ZodDefault<z.ZodNumber>;
1515
+ height: z.ZodOptional<z.ZodNumber>;
1348
1516
  autoFromWalls: z.ZodDefault<z.ZodBoolean>;
1349
1517
  }, z.core.$strip>, z.ZodObject<{
1350
1518
  object: z.ZodDefault<z.ZodLiteral<"node">>;
@@ -1717,6 +1885,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1717
1885
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
1718
1886
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1719
1887
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1888
+ supportSlabId: z.ZodOptional<z.ZodString>;
1720
1889
  width: z.ZodDefault<z.ZodNumber>;
1721
1890
  depth: z.ZodDefault<z.ZodNumber>;
1722
1891
  thickness: z.ZodDefault<z.ZodNumber>;
@@ -1924,6 +2093,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1924
2093
  slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1925
2094
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
1926
2095
  rotation: z.ZodDefault<z.ZodNumber>;
2096
+ supportSlabId: z.ZodOptional<z.ZodString>;
1927
2097
  stairType: z.ZodDefault<z.ZodEnum<{
1928
2098
  straight: "straight";
1929
2099
  spiral: "spiral";
@@ -1931,13 +2101,14 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
1931
2101
  }>>;
1932
2102
  fromLevelId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1933
2103
  toLevelId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
2104
+ deckSlabId: z.ZodOptional<z.ZodString>;
1934
2105
  slabOpeningMode: z.ZodDefault<z.ZodEnum<{
1935
2106
  none: "none";
1936
2107
  destination: "destination";
1937
2108
  }>>;
1938
2109
  openingOffset: z.ZodDefault<z.ZodNumber>;
1939
2110
  width: z.ZodDefault<z.ZodNumber>;
1940
- totalRise: z.ZodDefault<z.ZodNumber>;
2111
+ totalRise: z.ZodOptional<z.ZodNumber>;
1941
2112
  stepCount: z.ZodDefault<z.ZodNumber>;
1942
2113
  thickness: z.ZodDefault<z.ZodNumber>;
1943
2114
  fillToFloor: z.ZodDefault<z.ZodBoolean>;
@@ -2199,6 +2370,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2199
2370
  type: z.ZodDefault<z.ZodLiteral<"spawn">>;
2200
2371
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
2201
2372
  rotation: z.ZodDefault<z.ZodNumber>;
2373
+ supportSlabId: z.ZodOptional<z.ZodString>;
2202
2374
  }, z.core.$strip>, z.ZodObject<{
2203
2375
  object: z.ZodDefault<z.ZodLiteral<"node">>;
2204
2376
  name: z.ZodOptional<z.ZodString>;
@@ -2266,6 +2438,23 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2266
2438
  }>>;
2267
2439
  width: z.ZodDefault<z.ZodNumber>;
2268
2440
  height: z.ZodDefault<z.ZodNumber>;
2441
+ mark: z.ZodOptional<z.ZodString>;
2442
+ constructionType: z.ZodDefault<z.ZodEnum<{
2443
+ framed: "framed";
2444
+ masonry: "masonry";
2445
+ }>>;
2446
+ dimensionReference: z.ZodDefault<z.ZodEnum<{
2447
+ nominal: "nominal";
2448
+ "rough-opening": "rough-opening";
2449
+ "masonry-opening": "masonry-opening";
2450
+ "finish-opening": "finish-opening";
2451
+ }>>;
2452
+ roughOpeningWidth: z.ZodOptional<z.ZodNumber>;
2453
+ roughOpeningHeight: z.ZodOptional<z.ZodNumber>;
2454
+ masonryOpeningWidth: z.ZodOptional<z.ZodNumber>;
2455
+ masonryOpeningHeight: z.ZodOptional<z.ZodNumber>;
2456
+ finishOpeningWidth: z.ZodOptional<z.ZodNumber>;
2457
+ finishOpeningHeight: z.ZodOptional<z.ZodNumber>;
2269
2458
  openingKind: z.ZodDefault<z.ZodEnum<{
2270
2459
  window: "window";
2271
2460
  opening: "opening";
@@ -2384,6 +2573,23 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
2384
2573
  }>>;
2385
2574
  width: z.ZodDefault<z.ZodNumber>;
2386
2575
  height: z.ZodDefault<z.ZodNumber>;
2576
+ mark: z.ZodOptional<z.ZodString>;
2577
+ constructionType: z.ZodDefault<z.ZodEnum<{
2578
+ framed: "framed";
2579
+ masonry: "masonry";
2580
+ }>>;
2581
+ dimensionReference: z.ZodDefault<z.ZodEnum<{
2582
+ nominal: "nominal";
2583
+ "rough-opening": "rough-opening";
2584
+ "masonry-opening": "masonry-opening";
2585
+ "finish-opening": "finish-opening";
2586
+ }>>;
2587
+ roughOpeningWidth: z.ZodOptional<z.ZodNumber>;
2588
+ roughOpeningHeight: z.ZodOptional<z.ZodNumber>;
2589
+ masonryOpeningWidth: z.ZodOptional<z.ZodNumber>;
2590
+ masonryOpeningHeight: z.ZodOptional<z.ZodNumber>;
2591
+ finishOpeningWidth: z.ZodOptional<z.ZodNumber>;
2592
+ finishOpeningHeight: z.ZodOptional<z.ZodNumber>;
2387
2593
  doorCategory: z.ZodDefault<z.ZodEnum<{
2388
2594
  interior: "interior";
2389
2595
  garage: "garage";
@@ -3614,6 +3820,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3614
3820
  type: z.ZodDefault<z.ZodLiteral<"duct-terminal">>;
3615
3821
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
3616
3822
  rotation: z.ZodDefault<z.ZodNumber>;
3823
+ supportSlabId: z.ZodOptional<z.ZodString>;
3617
3824
  terminalType: z.ZodDefault<z.ZodEnum<{
3618
3825
  "supply-register": "supply-register";
3619
3826
  diffuser: "diffuser";
@@ -3654,6 +3861,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
3654
3861
  type: z.ZodDefault<z.ZodLiteral<"hvac-equipment">>;
3655
3862
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
3656
3863
  rotation: z.ZodDefault<z.ZodNumber>;
3864
+ supportSlabId: z.ZodOptional<z.ZodString>;
3657
3865
  equipmentType: z.ZodDefault<z.ZodEnum<{
3658
3866
  furnace: "furnace";
3659
3867
  "air-handler": "air-handler";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AA6CnB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA6ClB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAA;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AA+CnB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA+ClB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAA;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA"}
@@ -5,6 +5,7 @@ import { CabinetModuleNode, CabinetNode } from './nodes/cabinet';
5
5
  import { CeilingNode } from './nodes/ceiling';
6
6
  import { ChimneyNode } from './nodes/chimney';
7
7
  import { ColumnNode } from './nodes/column';
8
+ import { ConstructionDimensionNode } from './nodes/construction-dimension';
8
9
  import { CupolaNode } from './nodes/cupola';
9
10
  import { DoorNode } from './nodes/door';
10
11
  import { DormerNode } from './nodes/dormer';
@@ -38,6 +39,7 @@ import { SolarPanelNode } from './nodes/solar-panel';
38
39
  import { SpawnNode } from './nodes/spawn';
39
40
  import { StairNode } from './nodes/stair';
40
41
  import { StairSegmentNode } from './nodes/stair-segment';
42
+ import { StructuralGridNode } from './nodes/structural-grid';
41
43
  import { TurbineVentNode } from './nodes/turbine-vent';
42
44
  import { WallNode } from './nodes/wall';
43
45
  import { WindowNode } from './nodes/window';
@@ -48,6 +50,8 @@ export const AnyNode = z.discriminatedUnion('type', [
48
50
  ElevatorNode,
49
51
  LevelNode,
50
52
  ColumnNode,
53
+ ConstructionDimensionNode,
54
+ StructuralGridNode,
51
55
  WallNode,
52
56
  FenceNode,
53
57
  CabinetNode,
@@ -0,0 +1,80 @@
1
+ export declare const wallPlaneTopBoundaryRepro: {
2
+ building_rr4rx7weux2fpdbh: {
3
+ id: string;
4
+ type: string;
5
+ object: string;
6
+ visible: boolean;
7
+ children: string[];
8
+ metadata: {};
9
+ parentId: null;
10
+ position: number[];
11
+ rotation: number[];
12
+ };
13
+ level_pomuk0sbwec15mf3: {
14
+ id: string;
15
+ type: string;
16
+ level: number;
17
+ height: number;
18
+ object: string;
19
+ visible: boolean;
20
+ children: string[];
21
+ metadata: {};
22
+ parentId: null;
23
+ };
24
+ level_5msog1z8hy2lyvxr: {
25
+ id: string;
26
+ type: string;
27
+ level: number;
28
+ height: number;
29
+ object: string;
30
+ visible: boolean;
31
+ children: string[];
32
+ metadata: {};
33
+ parentId: string;
34
+ };
35
+ wall_39bnnq29h824ryy0: {
36
+ id: string;
37
+ end: number[];
38
+ name: string;
39
+ type: string;
40
+ start: number[];
41
+ object: string;
42
+ visible: boolean;
43
+ backSide: string;
44
+ children: never[];
45
+ metadata: {};
46
+ parentId: string;
47
+ frontSide: string;
48
+ };
49
+ wall_on4rj410n69n3rzf: {
50
+ id: string;
51
+ end: number[];
52
+ name: string;
53
+ type: string;
54
+ start: number[];
55
+ object: string;
56
+ visible: boolean;
57
+ backSide: string;
58
+ children: never[];
59
+ metadata: {};
60
+ parentId: string;
61
+ frontSide: string;
62
+ };
63
+ slab_j3i4ebjg4nsu8xk7: {
64
+ id: string;
65
+ name: string;
66
+ type: string;
67
+ holes: never[];
68
+ object: string;
69
+ polygon: number[][];
70
+ visible: boolean;
71
+ metadata: {};
72
+ parentId: string;
73
+ recessed: boolean;
74
+ elevation: number;
75
+ thickness: number;
76
+ holeMetadata: never[];
77
+ autoFromWalls: boolean;
78
+ };
79
+ };
80
+ //# sourceMappingURL=wall-plane-top-boundary-repro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wall-plane-top-boundary-repro.d.ts","sourceRoot":"","sources":["../../../src/services/__fixtures__/wall-plane-top-boundary-repro.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFrC,CAAA"}
@@ -0,0 +1,89 @@
1
+ // Real-scene repro for the max-side boundary clamp miss (project_O1z9NLOylyb5kFX4).
2
+ // Auto slab polygon derives from wall centerlines, putting wall samples exactly on
3
+ // the polygon boundary — the shape that exposed ray-cast side dependence.
4
+ export const wallPlaneTopBoundaryRepro = {
5
+ building_rr4rx7weux2fpdbh: {
6
+ id: 'building_rr4rx7weux2fpdbh',
7
+ type: 'building',
8
+ object: 'node',
9
+ visible: true,
10
+ children: ['level_pomuk0sbwec15mf3', 'level_5msog1z8hy2lyvxr'],
11
+ metadata: {},
12
+ parentId: null,
13
+ position: [0, 0, 0],
14
+ rotation: [0, 0, 0],
15
+ },
16
+ level_pomuk0sbwec15mf3: {
17
+ id: 'level_pomuk0sbwec15mf3',
18
+ type: 'level',
19
+ level: 0,
20
+ height: 2.7,
21
+ object: 'node',
22
+ visible: true,
23
+ children: ['wall_39bnnq29h824ryy0', 'wall_on4rj410n69n3rzf'],
24
+ metadata: {},
25
+ parentId: null,
26
+ },
27
+ level_5msog1z8hy2lyvxr: {
28
+ id: 'level_5msog1z8hy2lyvxr',
29
+ type: 'level',
30
+ level: 1,
31
+ height: 2.5,
32
+ object: 'node',
33
+ visible: true,
34
+ children: ['slab_j3i4ebjg4nsu8xk7'],
35
+ metadata: {},
36
+ parentId: 'building_rr4rx7weux2fpdbh',
37
+ },
38
+ wall_39bnnq29h824ryy0: {
39
+ id: 'wall_39bnnq29h824ryy0',
40
+ end: [-1, 4],
41
+ name: 'Wall 1',
42
+ type: 'wall',
43
+ start: [3, 4],
44
+ object: 'node',
45
+ visible: true,
46
+ backSide: 'exterior',
47
+ children: [],
48
+ metadata: {},
49
+ parentId: 'level_pomuk0sbwec15mf3',
50
+ frontSide: 'interior',
51
+ },
52
+ wall_on4rj410n69n3rzf: {
53
+ id: 'wall_on4rj410n69n3rzf',
54
+ end: [-1, -1],
55
+ name: 'Wall 2',
56
+ type: 'wall',
57
+ start: [-1, 4],
58
+ object: 'node',
59
+ visible: true,
60
+ backSide: 'exterior',
61
+ children: [],
62
+ metadata: {},
63
+ parentId: 'level_pomuk0sbwec15mf3',
64
+ frontSide: 'interior',
65
+ },
66
+ slab_j3i4ebjg4nsu8xk7: {
67
+ id: 'slab_j3i4ebjg4nsu8xk7',
68
+ name: 'Room 1 Slab',
69
+ type: 'slab',
70
+ holes: [],
71
+ object: 'node',
72
+ polygon: [
73
+ [-1, 4],
74
+ [-1, -1],
75
+ [4, -1],
76
+ [4, 1],
77
+ [3, 1],
78
+ [3, 4],
79
+ ],
80
+ visible: true,
81
+ metadata: {},
82
+ parentId: 'level_5msog1z8hy2lyvxr',
83
+ recessed: false,
84
+ elevation: 0.19757210573188194,
85
+ thickness: 0.5,
86
+ holeMetadata: [],
87
+ autoFromWalls: true,
88
+ },
89
+ };
@@ -2,12 +2,13 @@ export { type AlignmentAnchor, type AlignmentGuide, type AlignmentGuideAxis, typ
2
2
  export { collectAlignmentAnchors, type FootprintAABB, footprintAABB, footprintAABBAt, footprintAABBFrom, movingAlignmentAnchors, movingFootprintAnchors, nodeAlignmentAnchors, polygonAnchors, wallSegmentAnchors, } from './alignment-anchors';
3
3
  export { createDragSession, type DragSession, type DragSessionInput, type DragSessionOptions, } from './drag-session';
4
4
  export { type AttachError, type AttachResult, canAttach, canHostOnTop, clampYToHostTop, getSurface, getTopSurfaceHeight, MAX_HOST_DEPTH, pickHost, type Vec3, } from './hosting';
5
- export { DEFAULT_LEVEL_HEIGHT, getCeilingAt, getCeilingHeightAt, getLevelHeight, } from './level-height';
5
+ export { DEFAULT_LEVEL_HEIGHT, getCeilingAt, getCeilingHeightAt, resolveCeilingHeight, } from './level-height';
6
6
  export { type AxisLock, applyAxisLock, isMovable, movePlanToward, moveToward, resolveMovable, } from './movement';
7
7
  export { type AlongWallAlignment, type AlongWallFeature, computeEdgeGaps, computeOpeningGuides, DEFAULT_OPENING_GUIDE_TOLERANCES, detectAlongWallAlignment, detectEqualSpacing, detectVerticalAlignment, type EdgeGap, type EqualSpacingRun, type OpeningGuideInput, type OpeningGuides, type OpeningGuideTolerances, type OpeningSpan, type SillHeadGuide, type VerticalAlignment, type VerticalFeature, type WallExtent, } from './opening-guides';
8
8
  export { analyzePortConnectivity, type PortConnection, type PortConnectivity, resolveConnectivityUpdates, } from './port-connectivity';
9
9
  export { buildRiserDiagram, projectIso, type RiserDiagram, type RiserLine, type RiserMarker, } from './riser-diagram';
10
10
  export { DEFAULT_ANGLE_STEP, DEFAULT_GRID_STEP, type SnapServices, snapAngleToList, snapPointAlongAngleRay, snapPointToAngle, snapPointToGrid, snapScalar, snapServices, snapVec3ToGrid, snapWorldXZToBuildingLocal, } from './snap';
11
+ export { CEILING_CLAMP_MARGIN, findLevelAboveId, findLevelBelowId, getCeilingClampBound, getCoveringSlabUndersideAt, getLevelAbove, getLevelBelow, getLevelElevations, getStoredLevelHeight, getWallPlaneTop, type LevelElevation, } from './storey';
11
12
  export { buildPortComponents, type SystemSummary, summarizeSystemFor, } from './system-graph';
12
13
  export { type DwvFinding, type DwvSeverity, validateDwv, } from './validate-dwv';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,WAAW,EACX,iBAAiB,EACjB,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,uBAAuB,EACvB,KAAK,aAAa,EAClB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,KAAK,IAAI,GACV,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,QAAQ,EACb,aAAa,EACb,SAAS,EACT,cAAc,EACd,UAAU,EACV,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,eAAe,EACf,oBAAoB,EACpB,gCAAgC,EAChC,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,YAAY,EACjB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,cAAc,EACd,0BAA0B,GAC3B,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,WAAW,GACZ,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,WAAW,EACX,iBAAiB,EACjB,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,uBAAuB,EACvB,KAAK,aAAa,EAClB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,SAAS,EACT,YAAY,EACZ,eAAe,EACf,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,KAAK,IAAI,GACV,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,QAAQ,EACb,aAAa,EACb,SAAS,EACT,cAAc,EACd,UAAU,EACV,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,eAAe,EACf,oBAAoB,EACpB,gCAAgC,EAChC,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,YAAY,EACjB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,cAAc,EACd,0BAA0B,GAC3B,MAAM,QAAQ,CAAA;AACf,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,KAAK,cAAc,GACpB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,WAAW,GACZ,MAAM,gBAAgB,CAAA"}
@@ -2,11 +2,12 @@ export { bboxAnchors, bboxCornerAnchors, resolveAlignment, resolveAlignmentInBui
2
2
  export { collectAlignmentAnchors, footprintAABB, footprintAABBAt, footprintAABBFrom, movingAlignmentAnchors, movingFootprintAnchors, nodeAlignmentAnchors, polygonAnchors, wallSegmentAnchors, } from './alignment-anchors';
3
3
  export { createDragSession, } from './drag-session';
4
4
  export { canAttach, canHostOnTop, clampYToHostTop, getSurface, getTopSurfaceHeight, MAX_HOST_DEPTH, pickHost, } from './hosting';
5
- export { DEFAULT_LEVEL_HEIGHT, getCeilingAt, getCeilingHeightAt, getLevelHeight, } from './level-height';
5
+ export { DEFAULT_LEVEL_HEIGHT, getCeilingAt, getCeilingHeightAt, resolveCeilingHeight, } from './level-height';
6
6
  export { applyAxisLock, isMovable, movePlanToward, moveToward, resolveMovable, } from './movement';
7
7
  export { computeEdgeGaps, computeOpeningGuides, DEFAULT_OPENING_GUIDE_TOLERANCES, detectAlongWallAlignment, detectEqualSpacing, detectVerticalAlignment, } from './opening-guides';
8
8
  export { analyzePortConnectivity, resolveConnectivityUpdates, } from './port-connectivity';
9
9
  export { buildRiserDiagram, projectIso, } from './riser-diagram';
10
10
  export { DEFAULT_ANGLE_STEP, DEFAULT_GRID_STEP, snapAngleToList, snapPointAlongAngleRay, snapPointToAngle, snapPointToGrid, snapScalar, snapServices, snapVec3ToGrid, snapWorldXZToBuildingLocal, } from './snap';
11
+ export { CEILING_CLAMP_MARGIN, findLevelAboveId, findLevelBelowId, getCeilingClampBound, getCoveringSlabUndersideAt, getLevelAbove, getLevelBelow, getLevelElevations, getStoredLevelHeight, getWallPlaneTop, } from './storey';
11
12
  export { buildPortComponents, summarizeSystemFor, } from './system-graph';
12
13
  export { validateDwv, } from './validate-dwv';