@pascal-app/core 0.9.1 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +17 -10
  2. package/dist/events/bus.d.ts +49 -2
  3. package/dist/events/bus.d.ts.map +1 -1
  4. package/dist/hooks/scene-registry/item-clip-registry.d.ts +18 -0
  5. package/dist/hooks/scene-registry/item-clip-registry.d.ts.map +1 -0
  6. package/dist/hooks/scene-registry/item-clip-registry.js +10 -0
  7. package/dist/hooks/scene-registry/scene-registry.d.ts +8 -1
  8. package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
  9. package/dist/hooks/scene-registry/scene-registry.js +27 -1
  10. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +17 -1
  11. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  12. package/dist/hooks/spatial-grid/floor-placed-elevation.js +61 -8
  13. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +135 -28
  14. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  15. package/dist/hooks/spatial-grid/spatial-grid-manager.js +427 -271
  16. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +46 -1
  17. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  18. package/dist/hooks/spatial-grid/spatial-grid-sync.js +208 -9
  19. package/dist/hooks/spatial-grid/support-host-id.d.ts +3 -0
  20. package/dist/hooks/spatial-grid/support-host-id.d.ts.map +1 -0
  21. package/dist/hooks/spatial-grid/support-host-id.js +2 -0
  22. package/dist/hooks/spatial-grid/support-host-patch.d.ts +51 -0
  23. package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -0
  24. package/dist/hooks/spatial-grid/support-host-patch.js +164 -0
  25. package/dist/index.d.ts +33 -11
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +32 -10
  28. package/dist/lib/level-name.d.ts +4 -0
  29. package/dist/lib/level-name.d.ts.map +1 -0
  30. package/dist/lib/level-name.js +10 -0
  31. package/dist/lib/measurement-geometry.d.ts +23 -0
  32. package/dist/lib/measurement-geometry.d.ts.map +1 -0
  33. package/dist/lib/measurement-geometry.js +249 -0
  34. package/dist/lib/polygon-geometry.d.ts +0 -1
  35. package/dist/lib/polygon-geometry.d.ts.map +1 -1
  36. package/dist/lib/polygon-geometry.js +0 -18
  37. package/dist/lib/selection-proxy.d.ts +4 -0
  38. package/dist/lib/selection-proxy.d.ts.map +1 -0
  39. package/dist/lib/selection-proxy.js +12 -0
  40. package/dist/lib/slab-polygon.d.ts +31 -2
  41. package/dist/lib/slab-polygon.d.ts.map +1 -1
  42. package/dist/lib/slab-polygon.js +557 -31
  43. package/dist/lib/slots.d.ts +14 -0
  44. package/dist/lib/slots.d.ts.map +1 -0
  45. package/dist/lib/slots.js +26 -0
  46. package/dist/lib/space-detection.d.ts +40 -6
  47. package/dist/lib/space-detection.d.ts.map +1 -1
  48. package/dist/lib/space-detection.js +574 -192
  49. package/dist/lib/terrain-brush.d.ts +163 -0
  50. package/dist/lib/terrain-brush.d.ts.map +1 -0
  51. package/dist/lib/terrain-brush.js +359 -0
  52. package/dist/lib/terrain-codec.d.ts +51 -0
  53. package/dist/lib/terrain-codec.d.ts.map +1 -0
  54. package/dist/lib/terrain-codec.js +167 -0
  55. package/dist/lib/terrain-field.d.ts +150 -0
  56. package/dist/lib/terrain-field.d.ts.map +1 -0
  57. package/dist/lib/terrain-field.js +248 -0
  58. package/dist/lib/terrain-raycast.d.ts +44 -0
  59. package/dist/lib/terrain-raycast.d.ts.map +1 -0
  60. package/dist/lib/terrain-raycast.js +188 -0
  61. package/dist/lib/terrain-source.d.ts +60 -0
  62. package/dist/lib/terrain-source.d.ts.map +1 -0
  63. package/dist/lib/terrain-source.js +90 -0
  64. package/dist/lib/terrain-support.d.ts +60 -0
  65. package/dist/lib/terrain-support.d.ts.map +1 -0
  66. package/dist/lib/terrain-support.js +150 -0
  67. package/dist/lib/wall-distance.d.ts +60 -0
  68. package/dist/lib/wall-distance.d.ts.map +1 -0
  69. package/dist/lib/wall-distance.js +85 -0
  70. package/dist/lib/zone-quantities.d.ts +21 -0
  71. package/dist/lib/zone-quantities.d.ts.map +1 -0
  72. package/dist/lib/zone-quantities.js +428 -0
  73. package/dist/material-library.d.ts +28 -1
  74. package/dist/material-library.d.ts.map +1 -1
  75. package/dist/material-library.js +2233 -441
  76. package/dist/registry/handles.d.ts +91 -3
  77. package/dist/registry/handles.d.ts.map +1 -1
  78. package/dist/registry/index.d.ts +3 -3
  79. package/dist/registry/index.d.ts.map +1 -1
  80. package/dist/registry/index.js +1 -1
  81. package/dist/registry/registry.d.ts +46 -3
  82. package/dist/registry/registry.d.ts.map +1 -1
  83. package/dist/registry/registry.js +82 -1
  84. package/dist/registry/subtree.d.ts.map +1 -1
  85. package/dist/registry/subtree.js +8 -1
  86. package/dist/registry/types.d.ts +781 -39
  87. package/dist/registry/types.d.ts.map +1 -1
  88. package/dist/schema/index.d.ts +27 -8
  89. package/dist/schema/index.d.ts.map +1 -1
  90. package/dist/schema/index.js +23 -6
  91. package/dist/schema/material.d.ts +3 -2
  92. package/dist/schema/material.d.ts.map +1 -1
  93. package/dist/schema/material.js +7 -5
  94. package/dist/schema/nodes/box-vent.d.ts +2 -2
  95. package/dist/schema/nodes/cabinet.d.ts +536 -0
  96. package/dist/schema/nodes/cabinet.d.ts.map +1 -0
  97. package/dist/schema/nodes/cabinet.js +139 -0
  98. package/dist/schema/nodes/ceiling.d.ts +4 -3
  99. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  100. package/dist/schema/nodes/ceiling.js +11 -1
  101. package/dist/schema/nodes/chimney.d.ts +4 -4
  102. package/dist/schema/nodes/column.d.ts +4 -2
  103. package/dist/schema/nodes/column.d.ts.map +1 -1
  104. package/dist/schema/nodes/column.js +5 -0
  105. package/dist/schema/nodes/construction-dimension.d.ts +195 -0
  106. package/dist/schema/nodes/construction-dimension.d.ts.map +1 -0
  107. package/dist/schema/nodes/construction-dimension.js +151 -0
  108. package/dist/schema/nodes/cupola.d.ts +2 -2
  109. package/dist/schema/nodes/door.d.ts +42 -5
  110. package/dist/schema/nodes/door.d.ts.map +1 -1
  111. package/dist/schema/nodes/door.js +32 -0
  112. package/dist/schema/nodes/dormer.d.ts +8 -8
  113. package/dist/schema/nodes/dormer.js +1 -1
  114. package/dist/schema/nodes/downspout.d.ts +2 -2
  115. package/dist/schema/nodes/duct-fitting.d.ts +91 -0
  116. package/dist/schema/nodes/duct-fitting.d.ts.map +1 -0
  117. package/dist/schema/nodes/duct-fitting.js +92 -0
  118. package/dist/schema/nodes/duct-segment.d.ts +61 -0
  119. package/dist/schema/nodes/duct-segment.d.ts.map +1 -0
  120. package/dist/schema/nodes/duct-segment.js +73 -0
  121. package/dist/schema/nodes/duct-terminal.d.ts +58 -0
  122. package/dist/schema/nodes/duct-terminal.d.ts.map +1 -0
  123. package/dist/schema/nodes/duct-terminal.js +53 -0
  124. package/dist/schema/nodes/elevator.d.ts +3 -2
  125. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  126. package/dist/schema/nodes/elevator.js +3 -0
  127. package/dist/schema/nodes/eyebrow-vent.d.ts +2 -2
  128. package/dist/schema/nodes/fence.d.ts +20 -2
  129. package/dist/schema/nodes/fence.d.ts.map +1 -1
  130. package/dist/schema/nodes/fence.js +33 -2
  131. package/dist/schema/nodes/gutter.d.ts +2 -2
  132. package/dist/schema/nodes/hvac-equipment.d.ts +64 -0
  133. package/dist/schema/nodes/hvac-equipment.d.ts.map +1 -0
  134. package/dist/schema/nodes/hvac-equipment.js +57 -0
  135. package/dist/schema/nodes/item.d.ts +9 -0
  136. package/dist/schema/nodes/item.d.ts.map +1 -1
  137. package/dist/schema/nodes/item.js +24 -0
  138. package/dist/schema/nodes/level.d.ts +2 -1
  139. package/dist/schema/nodes/level.d.ts.map +1 -1
  140. package/dist/schema/nodes/level.js +12 -31
  141. package/dist/schema/nodes/lineset.d.ts +42 -0
  142. package/dist/schema/nodes/lineset.d.ts.map +1 -0
  143. package/dist/schema/nodes/lineset.js +38 -0
  144. package/dist/schema/nodes/liquid-line.d.ts +34 -0
  145. package/dist/schema/nodes/liquid-line.d.ts.map +1 -0
  146. package/dist/schema/nodes/liquid-line.js +24 -0
  147. package/dist/schema/nodes/measurement.d.ts +306 -0
  148. package/dist/schema/nodes/measurement.d.ts.map +1 -0
  149. package/dist/schema/nodes/measurement.js +87 -0
  150. package/dist/schema/nodes/pipe-fitting.d.ts +56 -0
  151. package/dist/schema/nodes/pipe-fitting.d.ts.map +1 -0
  152. package/dist/schema/nodes/pipe-fitting.js +45 -0
  153. package/dist/schema/nodes/pipe-segment.d.ts +48 -0
  154. package/dist/schema/nodes/pipe-segment.d.ts.map +1 -0
  155. package/dist/schema/nodes/pipe-segment.js +36 -0
  156. package/dist/schema/nodes/pipe-trap.d.ts +43 -0
  157. package/dist/schema/nodes/pipe-trap.d.ts.map +1 -0
  158. package/dist/schema/nodes/pipe-trap.js +36 -0
  159. package/dist/schema/nodes/ridge-vent.d.ts +18 -3
  160. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  161. package/dist/schema/nodes/ridge-vent.js +221 -3
  162. package/dist/schema/nodes/roof-segment-shape.d.ts +90 -0
  163. package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -0
  164. package/dist/schema/nodes/roof-segment-shape.js +318 -0
  165. package/dist/schema/nodes/roof-segment-walls.d.ts +101 -0
  166. package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -0
  167. package/dist/schema/nodes/roof-segment-walls.js +330 -0
  168. package/dist/schema/nodes/roof-segment.d.ts +84 -8
  169. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  170. package/dist/schema/nodes/roof-segment.js +290 -5
  171. package/dist/schema/nodes/roof.d.ts +8 -8
  172. package/dist/schema/nodes/shelf.d.ts +4 -2
  173. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  174. package/dist/schema/nodes/shelf.js +8 -0
  175. package/dist/schema/nodes/site.d.ts +9 -0
  176. package/dist/schema/nodes/site.d.ts.map +1 -1
  177. package/dist/schema/nodes/site.js +8 -6
  178. package/dist/schema/nodes/skylight.d.ts +10 -10
  179. package/dist/schema/nodes/slab.d.ts +8 -2
  180. package/dist/schema/nodes/slab.d.ts.map +1 -1
  181. package/dist/schema/nodes/slab.js +18 -2
  182. package/dist/schema/nodes/solar-panel.d.ts +4 -4
  183. package/dist/schema/nodes/spawn.d.ts +1 -0
  184. package/dist/schema/nodes/spawn.d.ts.map +1 -1
  185. package/dist/schema/nodes/spawn.js +2 -0
  186. package/dist/schema/nodes/stair-segment.d.ts +4 -4
  187. package/dist/schema/nodes/stair.d.ts +16 -13
  188. package/dist/schema/nodes/stair.d.ts.map +1 -1
  189. package/dist/schema/nodes/stair.js +11 -1
  190. package/dist/schema/nodes/structural-grid.d.ts +27 -0
  191. package/dist/schema/nodes/structural-grid.d.ts.map +1 -0
  192. package/dist/schema/nodes/structural-grid.js +17 -0
  193. package/dist/schema/nodes/turbine-vent.d.ts +2 -2
  194. package/dist/schema/nodes/wall.d.ts +248 -6
  195. package/dist/schema/nodes/wall.d.ts.map +1 -1
  196. package/dist/schema/nodes/wall.js +266 -0
  197. package/dist/schema/nodes/window.d.ts +40 -3
  198. package/dist/schema/nodes/window.d.ts.map +1 -1
  199. package/dist/schema/nodes/window.js +30 -0
  200. package/dist/schema/nodes/zone.d.ts +22 -0
  201. package/dist/schema/nodes/zone.d.ts.map +1 -1
  202. package/dist/schema/nodes/zone.js +21 -0
  203. package/dist/schema/scene-material.d.ts +41 -0
  204. package/dist/schema/scene-material.d.ts.map +1 -0
  205. package/dist/schema/scene-material.js +9 -0
  206. package/dist/schema/terrain.d.ts +28 -0
  207. package/dist/schema/terrain.d.ts.map +1 -0
  208. package/dist/schema/terrain.js +30 -0
  209. package/dist/schema/types.d.ts +1300 -97
  210. package/dist/schema/types.d.ts.map +1 -1
  211. package/dist/schema/types.js +27 -0
  212. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts +80 -0
  213. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -0
  214. package/dist/services/__fixtures__/wall-plane-top-boundary-repro.js +89 -0
  215. package/dist/services/alignment-anchors.d.ts.map +1 -1
  216. package/dist/services/alignment-anchors.js +30 -1
  217. package/dist/services/alignment.d.ts +5 -0
  218. package/dist/services/alignment.d.ts.map +1 -1
  219. package/dist/services/alignment.js +2 -0
  220. package/dist/services/hosting.d.ts +8 -0
  221. package/dist/services/hosting.d.ts.map +1 -1
  222. package/dist/services/hosting.js +13 -4
  223. package/dist/services/index.d.ts +9 -2
  224. package/dist/services/index.d.ts.map +1 -1
  225. package/dist/services/index.js +9 -2
  226. package/dist/services/level-height.d.ts +27 -0
  227. package/dist/services/level-height.d.ts.map +1 -0
  228. package/dist/services/level-height.js +94 -0
  229. package/dist/services/opening-guides.d.ts +141 -0
  230. package/dist/services/opening-guides.d.ts.map +1 -0
  231. package/dist/services/opening-guides.js +267 -0
  232. package/dist/services/port-connectivity.d.ts +115 -0
  233. package/dist/services/port-connectivity.d.ts.map +1 -0
  234. package/dist/services/port-connectivity.js +300 -0
  235. package/dist/services/riser-diagram.d.ts +40 -0
  236. package/dist/services/riser-diagram.d.ts.map +1 -0
  237. package/dist/services/riser-diagram.js +110 -0
  238. package/dist/services/snap.d.ts +9 -1
  239. package/dist/services/snap.d.ts.map +1 -1
  240. package/dist/services/snap.js +21 -1
  241. package/dist/services/storey.d.ts +103 -0
  242. package/dist/services/storey.d.ts.map +1 -0
  243. package/dist/services/storey.js +296 -0
  244. package/dist/services/system-graph.d.ts +30 -0
  245. package/dist/services/system-graph.d.ts.map +1 -0
  246. package/dist/services/system-graph.js +164 -0
  247. package/dist/services/validate-dwv.d.ts +32 -0
  248. package/dist/services/validate-dwv.d.ts.map +1 -0
  249. package/dist/services/validate-dwv.js +118 -0
  250. package/dist/store/actions/node-actions.d.ts.map +1 -1
  251. package/dist/store/actions/node-actions.js +141 -4
  252. package/dist/store/history-control.d.ts +31 -0
  253. package/dist/store/history-control.d.ts.map +1 -1
  254. package/dist/store/history-control.js +130 -0
  255. package/dist/store/use-live-terrain.d.ts +65 -0
  256. package/dist/store/use-live-terrain.d.ts.map +1 -0
  257. package/dist/store/use-live-terrain.js +31 -0
  258. package/dist/store/use-live-transforms.d.ts +8 -0
  259. package/dist/store/use-live-transforms.d.ts.map +1 -1
  260. package/dist/store/use-scene.d.ts +47 -3
  261. package/dist/store/use-scene.d.ts.map +1 -1
  262. package/dist/store/use-scene.js +992 -55
  263. package/dist/systems/elevator/elevator-opening-system.d.ts +1 -0
  264. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  265. package/dist/systems/elevator/elevator-opening-system.js +27 -21
  266. package/dist/systems/elevator/elevator-service.d.ts +0 -2
  267. package/dist/systems/elevator/elevator-service.d.ts.map +1 -1
  268. package/dist/systems/elevator/elevator-service.js +2 -24
  269. package/dist/systems/fence/fence-centerline.d.ts +12 -0
  270. package/dist/systems/fence/fence-centerline.d.ts.map +1 -0
  271. package/dist/systems/fence/fence-centerline.js +37 -0
  272. package/dist/systems/fence/fence-spline.d.ts +39 -0
  273. package/dist/systems/fence/fence-spline.d.ts.map +1 -0
  274. package/dist/systems/fence/fence-spline.js +196 -0
  275. package/dist/systems/slab/slab-placement.d.ts +11 -0
  276. package/dist/systems/slab/slab-placement.d.ts.map +1 -0
  277. package/dist/systems/slab/slab-placement.js +14 -0
  278. package/dist/systems/slab/slab-support.d.ts +137 -0
  279. package/dist/systems/slab/slab-support.d.ts.map +1 -0
  280. package/dist/systems/slab/slab-support.js +557 -0
  281. package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
  282. package/dist/systems/stair/stair-footprint.js +21 -11
  283. package/dist/systems/stair/stair-opening-preview.d.ts +1300 -505
  284. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  285. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
  286. package/dist/systems/stair/stair-opening-sync.js +19 -33
  287. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  288. package/dist/systems/stair/stair-opening-system.js +32 -4
  289. package/dist/systems/stair/stair-rise.d.ts +22 -0
  290. package/dist/systems/stair/stair-rise.d.ts.map +1 -0
  291. package/dist/systems/stair/stair-rise.js +79 -0
  292. package/dist/systems/wall/wall-curve.d.ts +10 -0
  293. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  294. package/dist/systems/wall/wall-curve.js +1 -1
  295. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  296. package/dist/systems/wall/wall-mitering.js +44 -8
  297. package/dist/systems/wall/wall-top.d.ts +40 -0
  298. package/dist/systems/wall/wall-top.d.ts.map +1 -0
  299. package/dist/systems/wall/wall-top.js +46 -0
  300. package/dist/utils/clone-scene-graph.d.ts +1 -0
  301. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  302. package/dist/utils/clone-scene-graph.js +56 -5
  303. package/dist/utils/heal-scene-graph.d.ts +18 -0
  304. package/dist/utils/heal-scene-graph.d.ts.map +1 -0
  305. package/dist/utils/heal-scene-graph.js +106 -0
  306. package/dist/validation/validate-build-json.d.ts +3 -0
  307. package/dist/validation/validate-build-json.d.ts.map +1 -1
  308. package/dist/validation/validate-build-json.js +90 -5
  309. package/package.json +4 -4
  310. package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts +0 -2
  311. package/dist/hooks/spatial-grid/floor-placed-elevation.test.d.ts.map +0 -1
  312. package/dist/hooks/spatial-grid/floor-placed-elevation.test.js +0 -273
  313. package/dist/lib/space-detection-pause.test.d.ts +0 -2
  314. package/dist/lib/space-detection-pause.test.d.ts.map +0 -1
  315. package/dist/lib/space-detection-pause.test.js +0 -42
  316. package/dist/lib/space-detection.test.d.ts +0 -2
  317. package/dist/lib/space-detection.test.d.ts.map +0 -1
  318. package/dist/lib/space-detection.test.js +0 -77
  319. package/dist/registry/registry.test.d.ts +0 -2
  320. package/dist/registry/registry.test.d.ts.map +0 -1
  321. package/dist/registry/registry.test.js +0 -183
  322. package/dist/registry/relations-resolver.test.d.ts +0 -2
  323. package/dist/registry/relations-resolver.test.d.ts.map +0 -1
  324. package/dist/registry/relations-resolver.test.js +0 -183
  325. package/dist/registry/scene-api.test.d.ts +0 -2
  326. package/dist/registry/scene-api.test.d.ts.map +0 -1
  327. package/dist/registry/scene-api.test.js +0 -183
  328. package/dist/registry/subtree.test.d.ts +0 -2
  329. package/dist/registry/subtree.test.d.ts.map +0 -1
  330. package/dist/registry/subtree.test.js +0 -133
  331. package/dist/schema/asset-url.test.d.ts +0 -2
  332. package/dist/schema/asset-url.test.d.ts.map +0 -1
  333. package/dist/schema/asset-url.test.js +0 -134
  334. package/dist/services/alignment-anchors.test.d.ts +0 -2
  335. package/dist/services/alignment-anchors.test.d.ts.map +0 -1
  336. package/dist/services/alignment-anchors.test.js +0 -383
  337. package/dist/services/alignment.test.d.ts +0 -2
  338. package/dist/services/alignment.test.d.ts.map +0 -1
  339. package/dist/services/alignment.test.js +0 -92
  340. package/dist/services/drag-session.test.d.ts +0 -2
  341. package/dist/services/drag-session.test.d.ts.map +0 -1
  342. package/dist/services/drag-session.test.js +0 -219
  343. package/dist/services/hosting.test.d.ts +0 -2
  344. package/dist/services/hosting.test.d.ts.map +0 -1
  345. package/dist/services/hosting.test.js +0 -199
  346. package/dist/services/movement.test.d.ts +0 -2
  347. package/dist/services/movement.test.d.ts.map +0 -1
  348. package/dist/services/movement.test.js +0 -133
  349. package/dist/services/single-undo-dance.test.d.ts +0 -2
  350. package/dist/services/single-undo-dance.test.d.ts.map +0 -1
  351. package/dist/services/single-undo-dance.test.js +0 -210
  352. package/dist/services/snap.test.d.ts +0 -2
  353. package/dist/services/snap.test.d.ts.map +0 -1
  354. package/dist/services/snap.test.js +0 -95
  355. package/dist/store/actions/node-mutation-sanitize.test.d.ts +0 -2
  356. package/dist/store/actions/node-mutation-sanitize.test.d.ts.map +0 -1
  357. package/dist/store/actions/node-mutation-sanitize.test.js +0 -147
  358. package/dist/store/actions/reparent.test.d.ts +0 -2
  359. package/dist/store/actions/reparent.test.d.ts.map +0 -1
  360. package/dist/store/actions/reparent.test.js +0 -212
  361. package/dist/store/use-scene-elevator-migration.test.d.ts +0 -2
  362. package/dist/store/use-scene-elevator-migration.test.d.ts.map +0 -1
  363. package/dist/store/use-scene-elevator-migration.test.js +0 -109
  364. package/dist/systems/elevator/elevator-opening-sync.test.d.ts +0 -2
  365. package/dist/systems/elevator/elevator-opening-sync.test.d.ts.map +0 -1
  366. package/dist/systems/elevator/elevator-opening-sync.test.js +0 -146
  367. package/dist/systems/elevator/elevator-runtime.test.d.ts +0 -2
  368. package/dist/systems/elevator/elevator-runtime.test.d.ts.map +0 -1
  369. package/dist/systems/elevator/elevator-runtime.test.js +0 -64
  370. package/dist/systems/stair/stair-opening-preview.test.d.ts +0 -2
  371. package/dist/systems/stair/stair-opening-preview.test.d.ts.map +0 -1
  372. package/dist/systems/stair/stair-opening-preview.test.js +0 -80
  373. package/dist/systems/stair/stair-opening-sync.test.d.ts +0 -2
  374. package/dist/systems/stair/stair-opening-sync.test.d.ts.map +0 -1
  375. package/dist/systems/stair/stair-opening-sync.test.js +0 -446
  376. package/dist/utils/clone-scene-graph.test.d.ts +0 -2
  377. package/dist/utils/clone-scene-graph.test.d.ts.map +0 -1
  378. package/dist/utils/clone-scene-graph.test.js +0 -59
@@ -20,7 +20,7 @@ export declare const CeilingNode: z.ZodObject<{
20
20
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
21
21
  material: z.ZodOptional<z.ZodObject<{
22
22
  id: z.ZodOptional<z.ZodString>;
23
- preset: z.ZodOptional<z.ZodEnum<{
23
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
24
24
  custom: "custom";
25
25
  white: "white";
26
26
  brick: "brick";
@@ -31,7 +31,7 @@ export declare const CeilingNode: z.ZodObject<{
31
31
  plaster: "plaster";
32
32
  tile: "tile";
33
33
  marble: "marble";
34
- }>>;
34
+ }>>>;
35
35
  properties: z.ZodOptional<z.ZodObject<{
36
36
  color: z.ZodDefault<z.ZodString>;
37
37
  roughness: z.ZodDefault<z.ZodNumber>;
@@ -51,6 +51,7 @@ export declare const CeilingNode: z.ZodObject<{
51
51
  }, z.core.$strip>>;
52
52
  }, z.core.$strip>>;
53
53
  materialPreset: z.ZodOptional<z.ZodString>;
54
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
54
55
  polygon: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
55
56
  holes: z.ZodDefault<z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>>;
56
57
  holeMetadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -62,7 +63,7 @@ export declare const CeilingNode: z.ZodObject<{
62
63
  stairId: z.ZodOptional<z.ZodString>;
63
64
  elevatorId: z.ZodOptional<z.ZodString>;
64
65
  }, z.core.$strip>>>;
65
- height: z.ZodDefault<z.ZodNumber>;
66
+ height: z.ZodOptional<z.ZodNumber>;
66
67
  autoFromWalls: z.ZodDefault<z.ZodBoolean>;
67
68
  }, z.core.$strip>;
68
69
  export type CeilingNode = z.infer<typeof CeilingNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"ceiling.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/ceiling.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"ceiling.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/ceiling.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BvB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
@@ -10,15 +10,25 @@ export const CeilingNode = BaseNode.extend({
10
10
  children: z.array(ItemNode.shape.id).default([]),
11
11
  material: MaterialSchema.optional(),
12
12
  materialPreset: z.string().optional(),
13
+ // Per-slot material overrides on the unified slot model, mirroring
14
+ // `ShelfNode.slots`. Key = slot id (`surface`), value = a `MaterialRef`
15
+ // (`library:<id>` / `scene:<id>`). Absent = the declared slot default.
16
+ slots: z.record(z.string(), z.string()).optional(),
13
17
  polygon: z.array(z.tuple([z.number(), z.number()])),
14
18
  holes: z.array(z.array(z.tuple([z.number(), z.number()]))).default([]),
15
19
  holeMetadata: z.array(SurfaceHoleMetadata).default([]),
16
- height: z.number().default(2.5), // Height in meters
20
+ // Height in meters. Absent = the ceiling follows the level top: its
21
+ // effective height is the same bound its write-clamp uses —
22
+ // min(storey plane, lowest covering-slab underside over the polygon)
23
+ // − CEILING_CLAMP_MARGIN (see `resolveCeilingHeight`). Present = an
24
+ // explicit custom height, still write-clamped under that bound.
25
+ height: z.number().optional(),
17
26
  autoFromWalls: z.boolean().default(false),
18
27
  }).describe(dedent `
19
28
  Ceiling node - used to represent a ceiling in the building
20
29
  - polygon: array of [x, z] points defining the ceiling boundary
21
30
  - holes: array of polygons representing holes in the ceiling
22
31
  - holeMetadata: metadata parallel to holes, used to preserve manual and auto-managed cutouts
32
+ - height: explicit height in meters; absent = follows the level top automatically
23
33
  - autoFromWalls: whether the ceiling is automatically generated from a closed wall loop
24
34
  `);
@@ -24,7 +24,7 @@ export declare const ChimneyNode: z.ZodObject<{
24
24
  type: z.ZodDefault<z.ZodLiteral<"chimney">>;
25
25
  material: z.ZodOptional<z.ZodObject<{
26
26
  id: z.ZodOptional<z.ZodString>;
27
- preset: z.ZodOptional<z.ZodEnum<{
27
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
28
28
  custom: "custom";
29
29
  white: "white";
30
30
  brick: "brick";
@@ -35,7 +35,7 @@ export declare const ChimneyNode: z.ZodObject<{
35
35
  plaster: "plaster";
36
36
  tile: "tile";
37
37
  marble: "marble";
38
- }>>;
38
+ }>>>;
39
39
  properties: z.ZodOptional<z.ZodObject<{
40
40
  color: z.ZodDefault<z.ZodString>;
41
41
  roughness: z.ZodDefault<z.ZodNumber>;
@@ -57,7 +57,7 @@ export declare const ChimneyNode: z.ZodObject<{
57
57
  materialPreset: z.ZodOptional<z.ZodString>;
58
58
  topMaterial: z.ZodOptional<z.ZodObject<{
59
59
  id: z.ZodOptional<z.ZodString>;
60
- preset: z.ZodOptional<z.ZodEnum<{
60
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
61
61
  custom: "custom";
62
62
  white: "white";
63
63
  brick: "brick";
@@ -68,7 +68,7 @@ export declare const ChimneyNode: z.ZodObject<{
68
68
  plaster: "plaster";
69
69
  tile: "tile";
70
70
  marble: "marble";
71
- }>>;
71
+ }>>>;
72
72
  properties: z.ZodOptional<z.ZodObject<{
73
73
  color: z.ZodDefault<z.ZodString>;
74
74
  roughness: z.ZodDefault<z.ZodNumber>;
@@ -112,6 +112,7 @@ export declare const ColumnNode: z.ZodObject<{
112
112
  type: z.ZodDefault<z.ZodLiteral<"column">>;
113
113
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
114
114
  rotation: z.ZodDefault<z.ZodNumber>;
115
+ supportSlabId: z.ZodOptional<z.ZodString>;
115
116
  style: z.ZodDefault<z.ZodEnum<{
116
117
  plain: "plain";
117
118
  faceted: "faceted";
@@ -263,7 +264,7 @@ export declare const ColumnNode: z.ZodObject<{
263
264
  bracePlateEnabled: z.ZodDefault<z.ZodBoolean>;
264
265
  material: z.ZodOptional<z.ZodObject<{
265
266
  id: z.ZodOptional<z.ZodString>;
266
- preset: z.ZodOptional<z.ZodEnum<{
267
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
267
268
  custom: "custom";
268
269
  white: "white";
269
270
  brick: "brick";
@@ -274,7 +275,7 @@ export declare const ColumnNode: z.ZodObject<{
274
275
  plaster: "plaster";
275
276
  tile: "tile";
276
277
  marble: "marble";
277
- }>>;
278
+ }>>>;
278
279
  properties: z.ZodOptional<z.ZodObject<{
279
280
  color: z.ZodDefault<z.ZodString>;
280
281
  roughness: z.ZodDefault<z.ZodNumber>;
@@ -294,6 +295,7 @@ export declare const ColumnNode: z.ZodObject<{
294
295
  }, z.core.$strip>>;
295
296
  }, z.core.$strip>>;
296
297
  materialPreset: z.ZodOptional<z.ZodString>;
298
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
297
299
  }, z.core.$strip>;
298
300
  export declare const COLUMN_PRESETS: {
299
301
  readonly basicPillar: {
@@ -1 +1 @@
1
- {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/column.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/column.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,8 @@ export const ColumnNode = BaseNode.extend({
64
64
  type: nodeType('column'),
65
65
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
66
66
  rotation: z.number().default(0),
67
+ // Persisted slab-support host — see ItemNode.supportSlabId for the rules.
68
+ supportSlabId: z.string().optional(),
67
69
  style: ColumnStyle.default('plain'),
68
70
  crossSection: ColumnCrossSection.default('round'),
69
71
  height: z.number().positive().default(2.5),
@@ -137,6 +139,9 @@ export const ColumnNode = BaseNode.extend({
137
139
  bracePlateEnabled: z.boolean().default(true),
138
140
  material: MaterialSchema.optional(),
139
141
  materialPreset: z.string().optional(),
142
+ // Unified paint-slot refs (`scene:`/`library:` MaterialRef per slot id),
143
+ // matching the slot model items/slab/shelf use. Absent = declared default.
144
+ slots: z.record(z.string(), z.string()).optional(),
140
145
  }).describe(dedent `
141
146
  Column node - used to represent structural or decorative pillars/columns.
142
147
  - style: visual approach such as plain, lathe-turned, carved, or cluster
@@ -0,0 +1,195 @@
1
+ import { z } from 'zod';
2
+ export declare const ConstructionDimensionBaseline: z.ZodObject<{
3
+ origin: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
4
+ direction: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
5
+ }, z.core.$strip>;
6
+ export declare const ConstructionDimensionChainMode: z.ZodEnum<{
7
+ "point-to-point": "point-to-point";
8
+ continuous: "continuous";
9
+ }>;
10
+ export declare const ConstructionDimensionMode: z.ZodEnum<{
11
+ radius: "radius";
12
+ linear: "linear";
13
+ diameter: "diameter";
14
+ "center-mark": "center-mark";
15
+ chord: "chord";
16
+ "arc-length": "arc-length";
17
+ angular: "angular";
18
+ coordinate: "coordinate";
19
+ }>;
20
+ export declare const ConstructionDrawingType: z.ZodEnum<{
21
+ "floor-plan": "floor-plan";
22
+ "foundation-plan": "foundation-plan";
23
+ "reflected-ceiling-plan": "reflected-ceiling-plan";
24
+ "roof-plan": "roof-plan";
25
+ "site-plan": "site-plan";
26
+ }>;
27
+ export declare const ConstructionDimensionDrawingPresentation: z.ZodEnum<{
28
+ shown: "shown";
29
+ omit: "omit";
30
+ controlled: "controlled";
31
+ }>;
32
+ export declare const ConstructionDimensionDrawingOverride: z.ZodObject<{
33
+ drawingType: z.ZodEnum<{
34
+ "floor-plan": "floor-plan";
35
+ "foundation-plan": "foundation-plan";
36
+ "reflected-ceiling-plan": "reflected-ceiling-plan";
37
+ "roof-plan": "roof-plan";
38
+ "site-plan": "site-plan";
39
+ }>;
40
+ presentation: z.ZodEnum<{
41
+ shown: "shown";
42
+ omit: "omit";
43
+ controlled: "controlled";
44
+ }>;
45
+ suppressedSegmentIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
46
+ }, z.core.$strip>;
47
+ export declare const ConstructionDimensionDatumPolicy: z.ZodEnum<{
48
+ centerline: "centerline";
49
+ "wall-face": "wall-face";
50
+ "structural-face": "structural-face";
51
+ "finish-face": "finish-face";
52
+ }>;
53
+ export declare const ConstructionDimensionTerminator: z.ZodEnum<{
54
+ "architectural-tick": "architectural-tick";
55
+ "filled-arrow": "filled-arrow";
56
+ "open-arrow": "open-arrow";
57
+ dot: "dot";
58
+ }>;
59
+ export declare const ConstructionDimensionTextPosition: z.ZodEnum<{
60
+ above: "above";
61
+ centered: "centered";
62
+ }>;
63
+ export declare const ConstructionDimensionImperialPrecision: z.ZodEnum<{
64
+ 1: "1";
65
+ "1/2": "1/2";
66
+ "1/4": "1/4";
67
+ "1/8": "1/8";
68
+ "1/16": "1/16";
69
+ }>;
70
+ export declare const ConstructionDimensionMetricNotation: z.ZodEnum<{
71
+ meters: "meters";
72
+ millimeters: "millimeters";
73
+ }>;
74
+ export declare const ConstructionDimensionNode: z.ZodObject<{
75
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
76
+ name: z.ZodOptional<z.ZodString>;
77
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
78
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
79
+ camera: z.ZodOptional<z.ZodObject<{
80
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
81
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
82
+ mode: z.ZodDefault<z.ZodEnum<{
83
+ perspective: "perspective";
84
+ orthographic: "orthographic";
85
+ }>>;
86
+ fov: z.ZodOptional<z.ZodNumber>;
87
+ zoom: z.ZodOptional<z.ZodNumber>;
88
+ }, z.core.$strip>>;
89
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
90
+ id: z.ZodDefault<z.ZodTemplateLiteral<`construction-dimension_${string}`>>;
91
+ type: z.ZodDefault<z.ZodLiteral<"construction-dimension">>;
92
+ anchors: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
93
+ kind: z.ZodLiteral<"feature">;
94
+ reference: z.ZodObject<{
95
+ nodeId: z.ZodString;
96
+ featureId: z.ZodString;
97
+ parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodBoolean, z.ZodNumber]>>>;
98
+ }, z.core.$strip>;
99
+ fallback: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
100
+ }, z.core.$strip>]>>>;
101
+ baseline: z.ZodDefault<z.ZodObject<{
102
+ origin: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
103
+ direction: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
104
+ }, z.core.$strip>>;
105
+ chainMode: z.ZodDefault<z.ZodEnum<{
106
+ "point-to-point": "point-to-point";
107
+ continuous: "continuous";
108
+ }>>;
109
+ mode: z.ZodDefault<z.ZodEnum<{
110
+ radius: "radius";
111
+ linear: "linear";
112
+ diameter: "diameter";
113
+ "center-mark": "center-mark";
114
+ chord: "chord";
115
+ "arc-length": "arc-length";
116
+ angular: "angular";
117
+ coordinate: "coordinate";
118
+ }>>;
119
+ featureCount: z.ZodDefault<z.ZodNumber>;
120
+ showCenterMark: z.ZodDefault<z.ZodBoolean>;
121
+ prefix: z.ZodDefault<z.ZodString>;
122
+ suffix: z.ZodDefault<z.ZodString>;
123
+ textOverride: z.ZodDefault<z.ZodNullable<z.ZodString>>;
124
+ datumPolicy: z.ZodDefault<z.ZodEnum<{
125
+ centerline: "centerline";
126
+ "wall-face": "wall-face";
127
+ "structural-face": "structural-face";
128
+ "finish-face": "finish-face";
129
+ }>>;
130
+ terminator: z.ZodDefault<z.ZodEnum<{
131
+ "architectural-tick": "architectural-tick";
132
+ "filled-arrow": "filled-arrow";
133
+ "open-arrow": "open-arrow";
134
+ dot: "dot";
135
+ }>>;
136
+ textPosition: z.ZodDefault<z.ZodEnum<{
137
+ above: "above";
138
+ centered: "centered";
139
+ }>>;
140
+ imperialPrecision: z.ZodDefault<z.ZodEnum<{
141
+ 1: "1";
142
+ "1/2": "1/2";
143
+ "1/4": "1/4";
144
+ "1/8": "1/8";
145
+ "1/16": "1/16";
146
+ }>>;
147
+ metricNotation: z.ZodDefault<z.ZodEnum<{
148
+ meters: "meters";
149
+ millimeters: "millimeters";
150
+ }>>;
151
+ extensionStartGap: z.ZodDefault<z.ZodNumber>;
152
+ extensionOvershoot: z.ZodDefault<z.ZodNumber>;
153
+ drawingType: z.ZodDefault<z.ZodEnum<{
154
+ "floor-plan": "floor-plan";
155
+ "foundation-plan": "foundation-plan";
156
+ "reflected-ceiling-plan": "reflected-ceiling-plan";
157
+ "roof-plan": "roof-plan";
158
+ "site-plan": "site-plan";
159
+ }>>;
160
+ drawingOverrides: z.ZodDefault<z.ZodArray<z.ZodObject<{
161
+ drawingType: z.ZodEnum<{
162
+ "floor-plan": "floor-plan";
163
+ "foundation-plan": "foundation-plan";
164
+ "reflected-ceiling-plan": "reflected-ceiling-plan";
165
+ "roof-plan": "roof-plan";
166
+ "site-plan": "site-plan";
167
+ }>;
168
+ presentation: z.ZodEnum<{
169
+ shown: "shown";
170
+ omit: "omit";
171
+ controlled: "controlled";
172
+ }>;
173
+ suppressedSegmentIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
174
+ }, z.core.$strip>>>;
175
+ controllingDimensionId: z.ZodDefault<z.ZodNullable<z.ZodDefault<z.ZodTemplateLiteral<`construction-dimension_${string}`>>>>;
176
+ }, z.core.$strip>;
177
+ export type ConstructionDimensionBaseline = z.infer<typeof ConstructionDimensionBaseline>;
178
+ export type ConstructionDimensionChainMode = z.infer<typeof ConstructionDimensionChainMode>;
179
+ export type ConstructionDimensionMode = z.infer<typeof ConstructionDimensionMode>;
180
+ export type ConstructionDrawingType = z.infer<typeof ConstructionDrawingType>;
181
+ export type ConstructionDimensionDrawingPresentation = z.infer<typeof ConstructionDimensionDrawingPresentation>;
182
+ export type ConstructionDimensionDrawingOverride = z.infer<typeof ConstructionDimensionDrawingOverride>;
183
+ export type ConstructionDimensionDatumPolicy = z.infer<typeof ConstructionDimensionDatumPolicy>;
184
+ export type ConstructionDimensionTerminator = z.infer<typeof ConstructionDimensionTerminator>;
185
+ export type ConstructionDimensionTextPosition = z.infer<typeof ConstructionDimensionTextPosition>;
186
+ export type ConstructionDimensionImperialPrecision = z.infer<typeof ConstructionDimensionImperialPrecision>;
187
+ export type ConstructionDimensionMetricNotation = z.infer<typeof ConstructionDimensionMetricNotation>;
188
+ export type ConstructionDimensionNode = z.infer<typeof ConstructionDimensionNode>;
189
+ export declare const CONSTRUCTION_DRAWING_TYPES: ("floor-plan" | "foundation-plan" | "reflected-ceiling-plan" | "roof-plan" | "site-plan")[];
190
+ export declare function resolveConstructionDimensionDrawingPresentation(node: Pick<ConstructionDimensionNode, 'drawingType' | 'drawingOverrides'>, drawingType: ConstructionDrawingType): ConstructionDimensionDrawingPresentation;
191
+ export declare function resolveConstructionDimensionDrawingOverride(node: Pick<ConstructionDimensionNode, 'drawingOverrides'>, drawingType: ConstructionDrawingType): ConstructionDimensionDrawingOverride | null;
192
+ export declare function setConstructionDimensionDrawingPresentation(node: Pick<ConstructionDimensionNode, 'drawingType' | 'drawingOverrides'>, drawingType: ConstructionDrawingType, presentation: ConstructionDimensionDrawingPresentation): ConstructionDimensionDrawingOverride[];
193
+ export declare function setConstructionDimensionDrawingSuppressedSegments(node: Pick<ConstructionDimensionNode, 'drawingType' | 'drawingOverrides'>, drawingType: ConstructionDrawingType, suppressedSegmentIndexes: readonly number[]): ConstructionDimensionDrawingOverride[];
194
+ export declare function constructionDimensionRequiredAnchorCount(mode: ConstructionDimensionMode): number;
195
+ //# sourceMappingURL=construction-dimension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"construction-dimension.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/construction-dimension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base';
4
+ import { MeasurementAnchor } from './measurement';
5
+ const FiniteCoordinate = z.number().finite();
6
+ export const ConstructionDimensionBaseline = z
7
+ .object({
8
+ origin: z.tuple([FiniteCoordinate, FiniteCoordinate]).default([0, 0.6]),
9
+ direction: z.tuple([FiniteCoordinate, FiniteCoordinate]).default([1, 0]),
10
+ })
11
+ .superRefine((baseline, ctx) => {
12
+ if (Math.hypot(baseline.direction[0], baseline.direction[1]) <= 1e-9) {
13
+ ctx.addIssue({
14
+ code: 'custom',
15
+ path: ['direction'],
16
+ message: 'Construction dimension baseline direction must be non-zero',
17
+ });
18
+ }
19
+ });
20
+ export const ConstructionDimensionChainMode = z.enum(['point-to-point', 'continuous']);
21
+ export const ConstructionDimensionMode = z.enum([
22
+ 'linear',
23
+ 'radius',
24
+ 'diameter',
25
+ 'center-mark',
26
+ 'chord',
27
+ 'arc-length',
28
+ 'angular',
29
+ 'coordinate',
30
+ ]);
31
+ export const ConstructionDrawingType = z.enum([
32
+ 'floor-plan',
33
+ 'foundation-plan',
34
+ 'reflected-ceiling-plan',
35
+ 'roof-plan',
36
+ 'site-plan',
37
+ ]);
38
+ export const ConstructionDimensionDrawingPresentation = z.enum(['shown', 'omit', 'controlled']);
39
+ export const ConstructionDimensionDrawingOverride = z.object({
40
+ drawingType: ConstructionDrawingType,
41
+ presentation: ConstructionDimensionDrawingPresentation,
42
+ suppressedSegmentIndexes: z.array(z.number().int().min(0).max(999)).max(200).default([]),
43
+ });
44
+ export const ConstructionDimensionDatumPolicy = z.enum([
45
+ 'centerline',
46
+ 'wall-face',
47
+ 'structural-face',
48
+ 'finish-face',
49
+ ]);
50
+ export const ConstructionDimensionTerminator = z.enum([
51
+ 'architectural-tick',
52
+ 'filled-arrow',
53
+ 'open-arrow',
54
+ 'dot',
55
+ ]);
56
+ export const ConstructionDimensionTextPosition = z.enum(['above', 'centered']);
57
+ export const ConstructionDimensionImperialPrecision = z.enum(['1', '1/2', '1/4', '1/8', '1/16']);
58
+ export const ConstructionDimensionMetricNotation = z.enum(['meters', 'millimeters']);
59
+ export const ConstructionDimensionNode = BaseNode.extend({
60
+ id: objectId('construction-dimension'),
61
+ type: nodeType('construction-dimension'),
62
+ anchors: z
63
+ .array(MeasurementAnchor)
64
+ .min(2)
65
+ .default([
66
+ [0, 0, 0],
67
+ [1, 0, 0],
68
+ ]),
69
+ baseline: ConstructionDimensionBaseline.default({ origin: [0, 0.6], direction: [1, 0] }),
70
+ chainMode: ConstructionDimensionChainMode.default('point-to-point'),
71
+ mode: ConstructionDimensionMode.default('linear'),
72
+ featureCount: z.number().int().min(1).max(999).default(1),
73
+ showCenterMark: z.boolean().default(true),
74
+ prefix: z.string().max(40).default(''),
75
+ suffix: z.string().max(40).default(''),
76
+ textOverride: z.string().trim().min(1).max(120).nullable().default(null),
77
+ datumPolicy: ConstructionDimensionDatumPolicy.default('centerline'),
78
+ terminator: ConstructionDimensionTerminator.default('architectural-tick'),
79
+ textPosition: ConstructionDimensionTextPosition.default('above'),
80
+ imperialPrecision: ConstructionDimensionImperialPrecision.default('1/16'),
81
+ metricNotation: ConstructionDimensionMetricNotation.default('meters'),
82
+ extensionStartGap: z.number().finite().min(0).max(1).default(0.075),
83
+ extensionOvershoot: z.number().finite().min(0).max(1).default(0.12),
84
+ drawingType: ConstructionDrawingType.default('floor-plan'),
85
+ drawingOverrides: z.array(ConstructionDimensionDrawingOverride).max(5).default([]),
86
+ controllingDimensionId: objectId('construction-dimension').nullable().default(null),
87
+ }).describe(dedent `
88
+ Construction dimension node - an associative floor-plan construction dimension
89
+ - anchors: two or more free or semantic feature anchors that supply the witness origins
90
+ - baseline.origin: a point on the independently placed dimension line
91
+ - baseline.direction: the fixed plan direction used to project the witness origins
92
+ - chainMode: point-to-point for one segment or continuous for adjacent dimension strings
93
+ - mode: linear, radius, diameter, center mark, chord, arc length, angular, or coordinate
94
+ - featureCount: repeated-feature multiplier used by diameter/radius and other notation
95
+ - showCenterMark: displays the resolved circle/angle center where applicable
96
+ - prefix/suffix/textOverride: document notation overrides without changing geometry
97
+ - datumPolicy/terminator/textPosition/imperialPrecision/metricNotation/extensionStartGap/extensionOvershoot: dimension-standard overrides
98
+ - drawingType: the primary persistent drawing that owns the dimension
99
+ - drawingOverrides: omit, show, or foundation-control presentation per drawing type
100
+ - controllingDimensionId: foundation dimension whose associative geometry controls this dimension
101
+ `);
102
+ export const CONSTRUCTION_DRAWING_TYPES = ConstructionDrawingType.options;
103
+ export function resolveConstructionDimensionDrawingPresentation(node, drawingType) {
104
+ let override;
105
+ for (const entry of node.drawingOverrides) {
106
+ if (entry.drawingType === drawingType)
107
+ override = entry;
108
+ }
109
+ return override?.presentation ?? (node.drawingType === drawingType ? 'shown' : 'omit');
110
+ }
111
+ export function resolveConstructionDimensionDrawingOverride(node, drawingType) {
112
+ let override;
113
+ for (const entry of node.drawingOverrides) {
114
+ if (entry.drawingType === drawingType)
115
+ override = entry;
116
+ }
117
+ return override ?? null;
118
+ }
119
+ export function setConstructionDimensionDrawingPresentation(node, drawingType, presentation) {
120
+ const defaultPresentation = node.drawingType === drawingType ? 'shown' : 'omit';
121
+ const existing = resolveConstructionDimensionDrawingOverride(node, drawingType);
122
+ const withoutDrawing = node.drawingOverrides.filter((entry) => entry.drawingType !== drawingType);
123
+ const next = {
124
+ drawingType,
125
+ presentation,
126
+ suppressedSegmentIndexes: existing?.suppressedSegmentIndexes ?? [],
127
+ };
128
+ return isDefaultConstructionDimensionDrawingOverride(next, defaultPresentation)
129
+ ? withoutDrawing
130
+ : [...withoutDrawing, next];
131
+ }
132
+ export function setConstructionDimensionDrawingSuppressedSegments(node, drawingType, suppressedSegmentIndexes) {
133
+ const defaultPresentation = node.drawingType === drawingType ? 'shown' : 'omit';
134
+ const existing = resolveConstructionDimensionDrawingOverride(node, drawingType);
135
+ const presentation = existing?.presentation ?? defaultPresentation;
136
+ const suppressed = normalizeSuppressedSegmentIndexes(suppressedSegmentIndexes);
137
+ const withoutDrawing = node.drawingOverrides.filter((entry) => entry.drawingType !== drawingType);
138
+ const next = { drawingType, presentation, suppressedSegmentIndexes: suppressed };
139
+ return isDefaultConstructionDimensionDrawingOverride(next, defaultPresentation)
140
+ ? withoutDrawing
141
+ : [...withoutDrawing, next];
142
+ }
143
+ export function constructionDimensionRequiredAnchorCount(mode) {
144
+ return mode === 'arc-length' || mode === 'angular' ? 3 : 2;
145
+ }
146
+ function isDefaultConstructionDimensionDrawingOverride(override, defaultPresentation) {
147
+ return (override.presentation === defaultPresentation && override.suppressedSegmentIndexes.length === 0);
148
+ }
149
+ function normalizeSuppressedSegmentIndexes(indexes) {
150
+ return [...new Set(indexes.filter((index) => Number.isInteger(index) && index >= 0))].sort((left, right) => left - right);
151
+ }
@@ -19,7 +19,7 @@ export declare const CupolaNode: z.ZodObject<{
19
19
  type: z.ZodDefault<z.ZodLiteral<"cupola">>;
20
20
  material: z.ZodOptional<z.ZodObject<{
21
21
  id: z.ZodOptional<z.ZodString>;
22
- preset: z.ZodOptional<z.ZodEnum<{
22
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
23
23
  custom: "custom";
24
24
  white: "white";
25
25
  brick: "brick";
@@ -30,7 +30,7 @@ export declare const CupolaNode: z.ZodObject<{
30
30
  plaster: "plaster";
31
31
  tile: "tile";
32
32
  marble: "marble";
33
- }>>;
33
+ }>>>;
34
34
  properties: z.ZodOptional<z.ZodObject<{
35
35
  color: z.ZodDefault<z.ZodString>;
36
36
  roughness: z.ZodDefault<z.ZodNumber>;
@@ -16,6 +16,16 @@ export declare const DoorCategory: z.ZodEnum<{
16
16
  interior: "interior";
17
17
  garage: "garage";
18
18
  }>;
19
+ export declare const OpeningConstructionType: z.ZodEnum<{
20
+ framed: "framed";
21
+ masonry: "masonry";
22
+ }>;
23
+ export declare const OpeningDimensionReference: z.ZodEnum<{
24
+ nominal: "nominal";
25
+ "rough-opening": "rough-opening";
26
+ "masonry-opening": "masonry-opening";
27
+ "finish-opening": "finish-opening";
28
+ }>;
19
29
  export declare const DoorType: z.ZodEnum<{
20
30
  double: "double";
21
31
  hinged: "hinged";
@@ -35,6 +45,8 @@ export declare const DoorTrackStyle: z.ZodEnum<{
35
45
  overhead: "overhead";
36
46
  }>;
37
47
  export type DoorCategory = z.infer<typeof DoorCategory>;
48
+ export type OpeningConstructionType = z.infer<typeof OpeningConstructionType>;
49
+ export type OpeningDimensionReference = z.infer<typeof OpeningDimensionReference>;
38
50
  export type DoorType = z.infer<typeof DoorType>;
39
51
  export type DoorTrackStyle = z.infer<typeof DoorTrackStyle>;
40
52
  export declare const DoorNode: z.ZodObject<{
@@ -57,7 +69,7 @@ export declare const DoorNode: z.ZodObject<{
57
69
  type: z.ZodDefault<z.ZodLiteral<"door">>;
58
70
  material: z.ZodOptional<z.ZodObject<{
59
71
  id: z.ZodOptional<z.ZodString>;
60
- preset: z.ZodOptional<z.ZodEnum<{
72
+ preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
61
73
  custom: "custom";
62
74
  white: "white";
63
75
  brick: "brick";
@@ -68,7 +80,7 @@ export declare const DoorNode: z.ZodObject<{
68
80
  plaster: "plaster";
69
81
  tile: "tile";
70
82
  marble: "marble";
71
- }>>;
83
+ }>>>;
72
84
  properties: z.ZodOptional<z.ZodObject<{
73
85
  color: z.ZodDefault<z.ZodString>;
74
86
  roughness: z.ZodDefault<z.ZodNumber>;
@@ -87,6 +99,7 @@ export declare const DoorNode: z.ZodObject<{
87
99
  scale: z.ZodOptional<z.ZodNumber>;
88
100
  }, z.core.$strip>>;
89
101
  }, z.core.$strip>>;
102
+ slots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
90
103
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
91
104
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
92
105
  side: z.ZodOptional<z.ZodEnum<{
@@ -94,8 +107,32 @@ export declare const DoorNode: z.ZodObject<{
94
107
  back: "back";
95
108
  }>>;
96
109
  wallId: z.ZodOptional<z.ZodString>;
110
+ roofSegmentId: z.ZodOptional<z.ZodString>;
111
+ roofFace: z.ZodOptional<z.ZodEnum<{
112
+ front: "front";
113
+ back: "back";
114
+ right: "right";
115
+ left: "left";
116
+ }>>;
97
117
  width: z.ZodDefault<z.ZodNumber>;
98
118
  height: z.ZodDefault<z.ZodNumber>;
119
+ mark: z.ZodOptional<z.ZodString>;
120
+ constructionType: z.ZodDefault<z.ZodEnum<{
121
+ framed: "framed";
122
+ masonry: "masonry";
123
+ }>>;
124
+ dimensionReference: z.ZodDefault<z.ZodEnum<{
125
+ nominal: "nominal";
126
+ "rough-opening": "rough-opening";
127
+ "masonry-opening": "masonry-opening";
128
+ "finish-opening": "finish-opening";
129
+ }>>;
130
+ roughOpeningWidth: z.ZodOptional<z.ZodNumber>;
131
+ roughOpeningHeight: z.ZodOptional<z.ZodNumber>;
132
+ masonryOpeningWidth: z.ZodOptional<z.ZodNumber>;
133
+ masonryOpeningHeight: z.ZodOptional<z.ZodNumber>;
134
+ finishOpeningWidth: z.ZodOptional<z.ZodNumber>;
135
+ finishOpeningHeight: z.ZodOptional<z.ZodNumber>;
99
136
  doorCategory: z.ZodDefault<z.ZodEnum<{
100
137
  interior: "interior";
101
138
  garage: "garage";
@@ -115,8 +152,8 @@ export declare const DoorNode: z.ZodObject<{
115
152
  leafCount: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>]>>;
116
153
  operationState: z.ZodDefault<z.ZodNumber>;
117
154
  slideDirection: z.ZodDefault<z.ZodEnum<{
118
- left: "left";
119
155
  right: "right";
156
+ left: "left";
120
157
  }>>;
121
158
  trackStyle: z.ZodDefault<z.ZodEnum<{
122
159
  visible: "visible";
@@ -147,8 +184,8 @@ export declare const DoorNode: z.ZodObject<{
147
184
  threshold: z.ZodDefault<z.ZodBoolean>;
148
185
  thresholdHeight: z.ZodDefault<z.ZodNumber>;
149
186
  hingesSide: z.ZodDefault<z.ZodEnum<{
150
- left: "left";
151
187
  right: "right";
188
+ left: "left";
152
189
  }>>;
153
190
  swingDirection: z.ZodDefault<z.ZodEnum<{
154
191
  inward: "inward";
@@ -170,8 +207,8 @@ export declare const DoorNode: z.ZodObject<{
170
207
  handle: z.ZodDefault<z.ZodBoolean>;
171
208
  handleHeight: z.ZodDefault<z.ZodNumber>;
172
209
  handleSide: z.ZodDefault<z.ZodEnum<{
173
- left: "left";
174
210
  right: "right";
211
+ left: "left";
175
212
  }>>;
176
213
  contentPadding: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
177
214
  doorCloser: z.ZodDefault<z.ZodBoolean>;