@pascal-app/core 1.0.0 → 1.0.3

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 (345) hide show
  1. package/dist/capture/index.d.ts +2 -2
  2. package/dist/capture/index.js +2 -2
  3. package/dist/capture/schema.d.ts.map +1 -1
  4. package/dist/capture/schema.js +2 -0
  5. package/dist/capture/source.d.ts +1 -1
  6. package/dist/capture/source.js +1 -1
  7. package/dist/events/bus.d.ts +6 -3
  8. package/dist/events/bus.d.ts.map +1 -1
  9. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts +4 -4
  10. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  11. package/dist/hooks/spatial-grid/floor-placed-elevation.js +7 -12
  12. package/dist/hooks/spatial-grid/floor-placed-footprints.d.ts +4 -0
  13. package/dist/hooks/spatial-grid/floor-placed-footprints.d.ts.map +1 -0
  14. package/dist/hooks/spatial-grid/floor-placed-footprints.js +7 -0
  15. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +5 -8
  16. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  17. package/dist/hooks/spatial-grid/spatial-grid-manager.js +23 -106
  18. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +263 -84
  19. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  20. package/dist/hooks/spatial-grid/spatial-grid-sync.js +77 -13
  21. package/dist/hooks/spatial-grid/support-host-patch.d.ts +1 -1
  22. package/dist/hooks/spatial-grid/support-host-patch.js +6 -6
  23. package/dist/hooks/spatial-grid/use-spatial-query.d.ts +1 -1
  24. package/dist/hooks/spatial-grid/use-spatial-query.js +1 -1
  25. package/dist/index.d.ts +77 -72
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +74 -69
  28. package/dist/lib/door-operation.d.ts +1 -1
  29. package/dist/lib/item-polygon-overlap.d.ts +6 -0
  30. package/dist/lib/item-polygon-overlap.d.ts.map +1 -0
  31. package/dist/lib/item-polygon-overlap.js +67 -0
  32. package/dist/lib/level-name.d.ts +1 -1
  33. package/dist/lib/measurement-geometry.d.ts +4 -4
  34. package/dist/lib/node-visibility.d.ts +12 -0
  35. package/dist/lib/node-visibility.d.ts.map +1 -0
  36. package/dist/lib/node-visibility.js +12 -0
  37. package/dist/lib/plan-footprint.d.ts +41 -0
  38. package/dist/lib/plan-footprint.d.ts.map +1 -0
  39. package/dist/lib/plan-footprint.js +58 -0
  40. package/dist/lib/room-topology-index.d.ts +1 -1
  41. package/dist/lib/room-topology-index.js +1 -1
  42. package/dist/lib/selection-proxy.d.ts +1 -1
  43. package/dist/lib/slab-polygon.d.ts +2 -2
  44. package/dist/lib/slab-polygon.js +2 -2
  45. package/dist/lib/space-detection.d.ts +1 -1
  46. package/dist/lib/space-detection.d.ts.map +1 -1
  47. package/dist/lib/space-detection.js +16 -11
  48. package/dist/lib/terrain-brush.d.ts +1 -1
  49. package/dist/lib/terrain-brush.js +1 -1
  50. package/dist/lib/terrain-codec.d.ts +2 -2
  51. package/dist/lib/terrain-codec.js +1 -1
  52. package/dist/lib/terrain-raycast.d.ts +1 -1
  53. package/dist/lib/terrain-raycast.js +1 -1
  54. package/dist/lib/terrain-source.d.ts +3 -3
  55. package/dist/lib/terrain-source.js +3 -3
  56. package/dist/lib/terrain-support.d.ts +1 -1
  57. package/dist/lib/terrain-support.js +3 -3
  58. package/dist/lib/unit-containment.d.ts +19 -0
  59. package/dist/lib/unit-containment.d.ts.map +1 -0
  60. package/dist/lib/unit-containment.js +158 -0
  61. package/dist/lib/unit-report.d.ts +19 -0
  62. package/dist/lib/unit-report.d.ts.map +1 -0
  63. package/dist/lib/unit-report.js +36 -0
  64. package/dist/lib/wall-distance.d.ts +2 -2
  65. package/dist/lib/wall-distance.js +1 -1
  66. package/dist/lib/zone-quantities.d.ts +1 -1
  67. package/dist/lib/zone-quantities.js +7 -7
  68. package/dist/material-library.d.ts +1 -1
  69. package/dist/material-library.js +1 -1
  70. package/dist/procedural-items/fixtures.d.ts +261 -0
  71. package/dist/procedural-items/fixtures.d.ts.map +1 -0
  72. package/dist/procedural-items/fixtures.js +349 -0
  73. package/dist/procedural-items/index.d.ts +10 -0
  74. package/dist/procedural-items/index.d.ts.map +1 -0
  75. package/dist/procedural-items/index.js +9 -0
  76. package/dist/procedural-items/integration.d.ts +92 -0
  77. package/dist/procedural-items/integration.d.ts.map +1 -0
  78. package/dist/procedural-items/integration.js +19 -0
  79. package/dist/procedural-items/library-colors.d.ts +56 -0
  80. package/dist/procedural-items/library-colors.d.ts.map +1 -0
  81. package/dist/procedural-items/library-colors.js +84 -0
  82. package/dist/procedural-items/materials.d.ts +5 -0
  83. package/dist/procedural-items/materials.d.ts.map +1 -0
  84. package/dist/procedural-items/materials.js +47 -0
  85. package/dist/procedural-items/node.d.ts +280 -0
  86. package/dist/procedural-items/node.d.ts.map +1 -0
  87. package/dist/procedural-items/node.js +71 -0
  88. package/dist/procedural-items/placement.d.ts +7 -0
  89. package/dist/procedural-items/placement.d.ts.map +1 -0
  90. package/dist/procedural-items/placement.js +48 -0
  91. package/dist/procedural-items/query.d.ts +51 -0
  92. package/dist/procedural-items/query.d.ts.map +1 -0
  93. package/dist/procedural-items/query.js +342 -0
  94. package/dist/procedural-items/recipe.d.ts +144 -0
  95. package/dist/procedural-items/recipe.d.ts.map +1 -0
  96. package/dist/procedural-items/recipe.js +372 -0
  97. package/dist/procedural-items/spatial.d.ts +19 -0
  98. package/dist/procedural-items/spatial.d.ts.map +1 -0
  99. package/dist/procedural-items/spatial.js +39 -0
  100. package/dist/registry/__bench__/relations-resolver.bench.js +2 -2
  101. package/dist/registry/handles.d.ts +40 -5
  102. package/dist/registry/handles.d.ts.map +1 -1
  103. package/dist/registry/index.d.ts +6 -6
  104. package/dist/registry/index.d.ts.map +1 -1
  105. package/dist/registry/index.js +4 -4
  106. package/dist/registry/registry.d.ts +1 -1
  107. package/dist/registry/relations-resolver.d.ts +2 -2
  108. package/dist/registry/relations-resolver.js +1 -1
  109. package/dist/registry/scene-api.d.ts +2 -2
  110. package/dist/registry/scene-api.js +2 -2
  111. package/dist/registry/subtree.d.ts +1 -1
  112. package/dist/registry/subtree.d.ts.map +1 -1
  113. package/dist/registry/subtree.js +8 -2
  114. package/dist/registry/types.d.ts +32 -10
  115. package/dist/registry/types.d.ts.map +1 -1
  116. package/dist/registry/use-registry-version.js +1 -1
  117. package/dist/registry/validate-relations.d.ts +4 -0
  118. package/dist/registry/validate-relations.d.ts.map +1 -0
  119. package/dist/registry/validate-relations.js +22 -0
  120. package/dist/schema/__bench__/node-parsers.bench.js +3 -3
  121. package/dist/schema/__fixtures__/node-fixtures.d.ts +1 -1
  122. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  123. package/dist/schema/__fixtures__/node-fixtures.js +4 -2
  124. package/dist/schema/base.js +1 -1
  125. package/dist/schema/collections.d.ts +1 -1
  126. package/dist/schema/collections.js +1 -1
  127. package/dist/schema/compiled-node-parsers.d.ts +1 -1
  128. package/dist/schema/compiled-node-parsers.js +1 -1
  129. package/dist/schema/index.d.ts +74 -70
  130. package/dist/schema/index.d.ts.map +1 -1
  131. package/dist/schema/index.js +65 -61
  132. package/dist/schema/material.d.ts +1 -1
  133. package/dist/schema/material.js +1 -1
  134. package/dist/schema/nodes/automatic-downspout.d.ts +4 -4
  135. package/dist/schema/nodes/automatic-downspout.js +5 -5
  136. package/dist/schema/nodes/block.d.ts +3 -3
  137. package/dist/schema/nodes/block.d.ts.map +1 -1
  138. package/dist/schema/nodes/block.js +24 -12
  139. package/dist/schema/nodes/box-vent.js +2 -2
  140. package/dist/schema/nodes/building.d.ts +1 -1
  141. package/dist/schema/nodes/building.d.ts.map +1 -1
  142. package/dist/schema/nodes/building.js +8 -5
  143. package/dist/schema/nodes/cabinet.d.ts +4 -4
  144. package/dist/schema/nodes/cabinet.js +4 -4
  145. package/dist/schema/nodes/ceiling.d.ts +1 -1
  146. package/dist/schema/nodes/ceiling.js +5 -5
  147. package/dist/schema/nodes/chimney.js +2 -2
  148. package/dist/schema/nodes/column.d.ts +1 -0
  149. package/dist/schema/nodes/column.d.ts.map +1 -1
  150. package/dist/schema/nodes/column.js +3 -2
  151. package/dist/schema/nodes/construction-dimension.d.ts +3 -3
  152. package/dist/schema/nodes/construction-dimension.js +2 -2
  153. package/dist/schema/nodes/cupola.d.ts +1 -1
  154. package/dist/schema/nodes/cupola.js +2 -2
  155. package/dist/schema/nodes/curtain-wall.d.ts +129 -0
  156. package/dist/schema/nodes/curtain-wall.d.ts.map +1 -0
  157. package/dist/schema/nodes/curtain-wall.js +49 -0
  158. package/dist/schema/nodes/door.d.ts +2 -2
  159. package/dist/schema/nodes/door.js +2 -2
  160. package/dist/schema/nodes/dormer.d.ts +3 -3
  161. package/dist/schema/nodes/dormer.js +4 -4
  162. package/dist/schema/nodes/downspout.js +2 -2
  163. package/dist/schema/nodes/duct-fitting.js +1 -1
  164. package/dist/schema/nodes/duct-segment.js +2 -2
  165. package/dist/schema/nodes/duct-terminal.js +1 -1
  166. package/dist/schema/nodes/elevator.js +2 -2
  167. package/dist/schema/nodes/eyebrow-vent.js +2 -2
  168. package/dist/schema/nodes/fence.js +2 -2
  169. package/dist/schema/nodes/guide.js +2 -2
  170. package/dist/schema/nodes/gutter.d.ts +1 -1
  171. package/dist/schema/nodes/gutter.js +4 -4
  172. package/dist/schema/nodes/hvac-equipment.js +1 -1
  173. package/dist/schema/nodes/imported-mesh.d.ts +40 -0
  174. package/dist/schema/nodes/imported-mesh.d.ts.map +1 -0
  175. package/dist/schema/nodes/imported-mesh.js +27 -0
  176. package/dist/schema/nodes/item.d.ts +3 -3
  177. package/dist/schema/nodes/item.js +3 -3
  178. package/dist/schema/nodes/lean-to-extension.js +4 -4
  179. package/dist/schema/nodes/level.d.ts +1 -1
  180. package/dist/schema/nodes/level.d.ts.map +1 -1
  181. package/dist/schema/nodes/level.js +1 -1
  182. package/dist/schema/nodes/lineset.js +1 -1
  183. package/dist/schema/nodes/liquid-line.js +1 -1
  184. package/dist/schema/nodes/measurement.js +2 -2
  185. package/dist/schema/nodes/pipe-fitting.d.ts +1 -1
  186. package/dist/schema/nodes/pipe-fitting.js +1 -1
  187. package/dist/schema/nodes/pipe-segment.d.ts +1 -1
  188. package/dist/schema/nodes/pipe-segment.js +2 -2
  189. package/dist/schema/nodes/pipe-trap.d.ts +1 -1
  190. package/dist/schema/nodes/pipe-trap.js +1 -1
  191. package/dist/schema/nodes/ridge-vent.d.ts +1 -1
  192. package/dist/schema/nodes/ridge-vent.js +3 -3
  193. package/dist/schema/nodes/roof-segment-shape.d.ts +1 -1
  194. package/dist/schema/nodes/roof-segment-shape.js +1 -1
  195. package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
  196. package/dist/schema/nodes/roof-segment-walls.js +1 -1
  197. package/dist/schema/nodes/roof-segment.d.ts +2 -2
  198. package/dist/schema/nodes/roof-segment.js +2 -2
  199. package/dist/schema/nodes/roof.d.ts +1 -1
  200. package/dist/schema/nodes/roof.js +3 -3
  201. package/dist/schema/nodes/scan.js +3 -3
  202. package/dist/schema/nodes/shelf.d.ts +1 -1
  203. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  204. package/dist/schema/nodes/shelf.js +3 -4
  205. package/dist/schema/nodes/site.js +2 -2
  206. package/dist/schema/nodes/skylight.d.ts +4 -4
  207. package/dist/schema/nodes/skylight.js +2 -2
  208. package/dist/schema/nodes/slab.js +3 -3
  209. package/dist/schema/nodes/solar-panel.js +3 -3
  210. package/dist/schema/nodes/spawn.js +1 -1
  211. package/dist/schema/nodes/stair-segment.js +2 -2
  212. package/dist/schema/nodes/stair.d.ts +1 -1
  213. package/dist/schema/nodes/stair.js +3 -3
  214. package/dist/schema/nodes/structural-grid.js +1 -1
  215. package/dist/schema/nodes/turbine-vent.d.ts +1 -1
  216. package/dist/schema/nodes/turbine-vent.js +2 -2
  217. package/dist/schema/nodes/unit.d.ts +33 -0
  218. package/dist/schema/nodes/unit.d.ts.map +1 -0
  219. package/dist/schema/nodes/unit.js +13 -0
  220. package/dist/schema/nodes/wall.d.ts +75 -2
  221. package/dist/schema/nodes/wall.d.ts.map +1 -1
  222. package/dist/schema/nodes/wall.js +10 -6
  223. package/dist/schema/nodes/window.js +2 -2
  224. package/dist/schema/nodes/zone.js +1 -1
  225. package/dist/schema/scene-material.js +2 -2
  226. package/dist/schema/types.d.ts +417 -22
  227. package/dist/schema/types.d.ts.map +1 -1
  228. package/dist/schema/types.js +56 -49
  229. package/dist/services/__fixtures__/hosting.d.ts +3 -0
  230. package/dist/services/__fixtures__/hosting.d.ts.map +1 -0
  231. package/dist/services/__fixtures__/hosting.js +9 -0
  232. package/dist/services/__fixtures__/shelf-surface-rows.d.ts +4 -0
  233. package/dist/services/__fixtures__/shelf-surface-rows.d.ts.map +1 -0
  234. package/dist/services/__fixtures__/shelf-surface-rows.js +18 -0
  235. package/dist/services/alignment-anchors.d.ts +6 -11
  236. package/dist/services/alignment-anchors.d.ts.map +1 -1
  237. package/dist/services/alignment-anchors.js +7 -34
  238. package/dist/services/drag-session.d.ts +4 -4
  239. package/dist/services/drag-session.js +1 -1
  240. package/dist/services/hosting.d.ts +5 -8
  241. package/dist/services/hosting.d.ts.map +1 -1
  242. package/dist/services/hosting.js +25 -18
  243. package/dist/services/index.d.ts +16 -13
  244. package/dist/services/index.d.ts.map +1 -1
  245. package/dist/services/index.js +16 -13
  246. package/dist/services/level-height.d.ts +2 -2
  247. package/dist/services/level-height.js +3 -3
  248. package/dist/services/movement.d.ts +3 -3
  249. package/dist/services/movement.js +2 -2
  250. package/dist/services/port-connectivity.d.ts +1 -1
  251. package/dist/services/port-connectivity.js +1 -1
  252. package/dist/services/riser-diagram.d.ts +1 -1
  253. package/dist/services/shelf-board.d.ts +5 -0
  254. package/dist/services/shelf-board.d.ts.map +1 -0
  255. package/dist/services/shelf-board.js +15 -0
  256. package/dist/services/snap.d.ts +3 -0
  257. package/dist/services/snap.d.ts.map +1 -1
  258. package/dist/services/snap.js +11 -0
  259. package/dist/services/storey.d.ts +2 -2
  260. package/dist/services/storey.js +2 -2
  261. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts +13 -0
  262. package/dist/services/surface-hosting-procedural-parity.fixtures.d.ts.map +1 -0
  263. package/dist/services/surface-hosting-procedural-parity.fixtures.js +4691 -0
  264. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts +1060 -0
  265. package/dist/services/surface-hosting-shelf-parity.fixtures.d.ts.map +1 -0
  266. package/dist/services/surface-hosting-shelf-parity.fixtures.js +3127 -0
  267. package/dist/services/surface-hosting.d.ts +92 -0
  268. package/dist/services/surface-hosting.d.ts.map +1 -0
  269. package/dist/services/surface-hosting.js +305 -0
  270. package/dist/services/surface-region.d.ts +8 -0
  271. package/dist/services/surface-region.d.ts.map +1 -0
  272. package/dist/services/surface-region.js +44 -0
  273. package/dist/services/system-graph.d.ts +2 -2
  274. package/dist/services/system-graph.js +2 -2
  275. package/dist/services/validate-dwv.d.ts +1 -1
  276. package/dist/services/validate-dwv.js +1 -1
  277. package/dist/store/actions/node-actions.d.ts +2 -2
  278. package/dist/store/actions/node-actions.d.ts.map +1 -1
  279. package/dist/store/actions/node-actions.js +50 -104
  280. package/dist/store/history-control.d.ts +3 -3
  281. package/dist/store/history-invalidation.d.ts +1 -1
  282. package/dist/store/history-invalidation.js +1 -1
  283. package/dist/store/use-interactive.d.ts +2 -2
  284. package/dist/store/use-live-terrain.d.ts +1 -1
  285. package/dist/store/use-scene.d.ts +4 -4
  286. package/dist/store/use-scene.d.ts.map +1 -1
  287. package/dist/store/use-scene.js +50 -32
  288. package/dist/systems/elevator/elevator-dispatch.d.ts +2 -2
  289. package/dist/systems/elevator/elevator-dispatch.js +1 -1
  290. package/dist/systems/elevator/elevator-geometry.d.ts +1 -1
  291. package/dist/systems/elevator/elevator-opening-sync.d.ts +1 -1
  292. package/dist/systems/elevator/elevator-opening-sync.js +2 -2
  293. package/dist/systems/elevator/elevator-opening-system.js +3 -3
  294. package/dist/systems/elevator/elevator-runtime.d.ts +3 -3
  295. package/dist/systems/elevator/elevator-runtime.js +3 -3
  296. package/dist/systems/elevator/elevator-service.d.ts +1 -1
  297. package/dist/systems/elevator/elevator-service.js +1 -1
  298. package/dist/systems/fence/fence-centerline.d.ts +2 -2
  299. package/dist/systems/fence/fence-centerline.js +2 -2
  300. package/dist/systems/fence/fence-spline.d.ts +2 -2
  301. package/dist/systems/roof/roof-elevation-system.js +3 -3
  302. package/dist/systems/roof/roof-elevation.d.ts +2 -2
  303. package/dist/systems/roof/roof-elevation.js +6 -6
  304. package/dist/systems/roof/roof-footprint.d.ts +1 -1
  305. package/dist/systems/roof/roof-footprint.js +3 -3
  306. package/dist/systems/slab/slab-placement.d.ts +1 -1
  307. package/dist/systems/slab/slab-support.d.ts +1 -1
  308. package/dist/systems/slab/slab-support.js +4 -4
  309. package/dist/systems/stair/stair-flight.d.ts +2 -2
  310. package/dist/systems/stair/stair-flight.js +2 -2
  311. package/dist/systems/stair/stair-footprint.d.ts +1 -1
  312. package/dist/systems/stair/stair-opening-preview.d.ts +248 -87
  313. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  314. package/dist/systems/stair/stair-opening-preview.js +2 -2
  315. package/dist/systems/stair/stair-opening-sync.d.ts +1 -1
  316. package/dist/systems/stair/stair-opening-sync.js +6 -6
  317. package/dist/systems/stair/stair-opening-system.js +8 -8
  318. package/dist/systems/stair/stair-rise.d.ts +1 -1
  319. package/dist/systems/stair/stair-rise.js +3 -3
  320. package/dist/systems/wall/wall-curve.d.ts +2 -2
  321. package/dist/systems/wall/wall-footprint.d.ts +3 -3
  322. package/dist/systems/wall/wall-footprint.js +3 -3
  323. package/dist/systems/wall/wall-merge.d.ts +38 -0
  324. package/dist/systems/wall/wall-merge.d.ts.map +1 -0
  325. package/dist/systems/wall/wall-merge.js +240 -0
  326. package/dist/systems/wall/wall-mitering.d.ts +1 -1
  327. package/dist/systems/wall/wall-mitering.js +1 -1
  328. package/dist/systems/wall/wall-move.d.ts +1 -1
  329. package/dist/systems/wall/wall-operations.d.ts +28 -0
  330. package/dist/systems/wall/wall-operations.d.ts.map +1 -0
  331. package/dist/systems/wall/wall-operations.js +145 -0
  332. package/dist/systems/wall/wall-top.d.ts +1 -1
  333. package/dist/systems/wall/wall-topology.d.ts +9 -2
  334. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  335. package/dist/systems/wall/wall-topology.js +57 -9
  336. package/dist/utils/clone-scene-graph.d.ts +3 -3
  337. package/dist/utils/clone-scene-graph.d.ts.map +1 -1
  338. package/dist/utils/clone-scene-graph.js +9 -3
  339. package/dist/utils/scene-migrations.d.ts +3 -3
  340. package/dist/utils/scene-migrations.js +3 -3
  341. package/dist/utils/vertical-scene-migration.js +5 -5
  342. package/dist/validation/validate-build-json.d.ts +5 -2
  343. package/dist/validation/validate-build-json.d.ts.map +1 -1
  344. package/dist/validation/validate-build-json.js +57 -4
  345. package/package.json +15 -4
@@ -167,8 +167,8 @@ export declare const CabinetNode: z.ZodObject<{
167
167
  }>>;
168
168
  handlePosition: z.ZodDefault<z.ZodEnum<{
169
169
  top: "top";
170
- auto: "auto";
171
170
  center: "center";
171
+ auto: "auto";
172
172
  }>>;
173
173
  frontOverlay: z.ZodDefault<z.ZodEnum<{
174
174
  full: "full";
@@ -321,7 +321,7 @@ export declare const CabinetNode: z.ZodObject<{
321
321
  base: "base";
322
322
  tall: "tall";
323
323
  }>>;
324
- children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`cabinet-module_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`cabinet_${string}`>>]>>>;
324
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
325
325
  barLedge: z.ZodOptional<z.ZodObject<{
326
326
  edge: z.ZodDefault<z.ZodEnum<{
327
327
  back: "back";
@@ -381,8 +381,8 @@ export declare const CabinetModuleNode: z.ZodObject<{
381
381
  }>>;
382
382
  handlePosition: z.ZodDefault<z.ZodEnum<{
383
383
  top: "top";
384
- auto: "auto";
385
384
  center: "center";
385
+ auto: "auto";
386
386
  }>>;
387
387
  frontOverlay: z.ZodDefault<z.ZodEnum<{
388
388
  full: "full";
@@ -530,7 +530,7 @@ export declare const CabinetModuleNode: z.ZodObject<{
530
530
  }, z.core.$strip>], "type">>>;
531
531
  id: z.ZodDefault<z.ZodTemplateLiteral<`cabinet-module_${string}`>>;
532
532
  type: z.ZodDefault<z.ZodLiteral<"cabinet-module">>;
533
- children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`cabinet-module_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`cabinet_${string}`>>]>>>;
533
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
534
534
  cabinetType: z.ZodDefault<z.ZodEnum<{
535
535
  base: "base";
536
536
  tall: "tall";
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { BaseNode, nodeType, objectId } from '../base';
3
- import { MaterialSchema } from '../material';
2
+ import { BaseNode, nodeType, objectId } from '../base.js';
3
+ import { MaterialSchema } from '../material.js';
4
4
  const compartmentBase = {
5
5
  id: z.string(),
6
6
  height: z.number().positive().max(2.5).optional(),
@@ -120,7 +120,7 @@ export const CabinetNode = BaseNode.extend({
120
120
  id: objectId('cabinet'),
121
121
  type: nodeType('cabinet'),
122
122
  runTier: z.enum(['base', 'wall', 'tall']).default('base'),
123
- children: z.array(z.union([objectId('cabinet-module'), objectId('cabinet')])).default([]),
123
+ children: z.array(z.string()).default([]),
124
124
  // Raised bar counter along one run edge: a knee wall topped by a slab at
125
125
  // bar height. Run-level because it spans modules like the countertop.
126
126
  barLedge: z
@@ -139,7 +139,7 @@ export const CabinetNode = BaseNode.extend({
139
139
  export const CabinetModuleNode = BaseNode.extend({
140
140
  id: objectId('cabinet-module'),
141
141
  type: nodeType('cabinet-module'),
142
- children: z.array(z.union([objectId('cabinet-module'), objectId('cabinet')])).default([]),
142
+ children: z.array(z.string()).default([]),
143
143
  cabinetType: z.enum(['base', 'tall']).default('base'),
144
144
  // Discriminator for specialty units (corner L-shape, sink base, appliance
145
145
  // gap, open shelving). 'standard' modules use the compartment stack as-is;
@@ -17,7 +17,7 @@ export declare const CeilingNode: z.ZodObject<{
17
17
  metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
18
  id: z.ZodDefault<z.ZodTemplateLiteral<`ceiling_${string}`>>;
19
19
  type: z.ZodDefault<z.ZodLiteral<"ceiling">>;
20
- children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
20
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`procedural-item_${string}`>>]>>>;
21
21
  material: z.ZodOptional<z.ZodObject<{
22
22
  id: z.ZodOptional<z.ZodString>;
23
23
  preset: z.ZodOptional<z.ZodCatch<z.ZodEnum<{
@@ -1,13 +1,13 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
5
- import { ItemNode } from './item';
6
- import { SurfaceHoleMetadata } from './surface-hole-metadata';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ import { ItemNode } from './item.js';
6
+ import { SurfaceHoleMetadata } from './surface-hole-metadata.js';
7
7
  export const CeilingNode = BaseNode.extend({
8
8
  id: objectId('ceiling'),
9
9
  type: nodeType('ceiling'),
10
- children: z.array(ItemNode.shape.id).default([]),
10
+ children: z.array(z.union([ItemNode.shape.id, objectId('procedural-item')])).default([]),
11
11
  material: MaterialSchema.optional(),
12
12
  materialPreset: z.string().optional(),
13
13
  // Per-slot material overrides on the unified slot model, mirroring
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const ChimneyMaterialRole = z.enum(['body', 'top']);
6
6
  export const ChimneyNode = BaseNode.extend({
7
7
  id: objectId('chimney'),
@@ -110,6 +110,7 @@ export declare const ColumnNode: z.ZodObject<{
110
110
  metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
111
111
  id: z.ZodDefault<z.ZodTemplateLiteral<`column_${string}`>>;
112
112
  type: z.ZodDefault<z.ZodLiteral<"column">>;
113
+ children: z.ZodDefault<z.ZodArray<z.ZodString>>;
113
114
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
114
115
  rotation: z.ZodDefault<z.ZodNumber>;
115
116
  supportSlabId: z.ZodOptional<z.ZodString>;
@@ -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":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,WAAW;;;;;;;EAOtB,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;EAM7B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;EAAqE,CAAA;AAEpG,eAAO,MAAM,iBAAiB;;;;;;EAAmE,CAAA;AAEjG,eAAO,MAAM,gBAAgB;;;;EAA6C,CAAA;AAE1E,eAAO,MAAM,eAAe;;;;;;;;;EAS1B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;EAa7B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;EAA4C,CAAA;AAE5E,eAAO,MAAM,sBAAsB;;;;;EAA8C,CAAA;AAEjF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAY7B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AACrD,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AACjE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACrE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAC3E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEnE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiGrB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2yBiE,CAAA;AAE5F,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,cAAc,CAAA;AAExD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const ColumnStyle = z.enum([
6
6
  'plain',
7
7
  'faceted',
@@ -62,6 +62,7 @@ export const ColumnSupportStyle = z.enum([
62
62
  export const ColumnNode = BaseNode.extend({
63
63
  id: objectId('column'),
64
64
  type: nodeType('column'),
65
+ children: z.array(z.string()).default([]),
65
66
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
66
67
  rotation: z.number().default(0),
67
68
  // Persisted slab-support host — see ItemNode.supportSlabId for the rules.
@@ -25,8 +25,8 @@ export declare const ConstructionDrawingType: z.ZodEnum<{
25
25
  "site-plan": "site-plan";
26
26
  }>;
27
27
  export declare const ConstructionDimensionDrawingPresentation: z.ZodEnum<{
28
- omit: "omit";
29
28
  shown: "shown";
29
+ omit: "omit";
30
30
  controlled: "controlled";
31
31
  }>;
32
32
  export declare const ConstructionDimensionDrawingOverride: z.ZodObject<{
@@ -38,8 +38,8 @@ export declare const ConstructionDimensionDrawingOverride: z.ZodObject<{
38
38
  "site-plan": "site-plan";
39
39
  }>;
40
40
  presentation: z.ZodEnum<{
41
- omit: "omit";
42
41
  shown: "shown";
42
+ omit: "omit";
43
43
  controlled: "controlled";
44
44
  }>;
45
45
  suppressedSegmentIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
@@ -166,8 +166,8 @@ export declare const ConstructionDimensionNode: z.ZodObject<{
166
166
  "site-plan": "site-plan";
167
167
  }>;
168
168
  presentation: z.ZodEnum<{
169
- omit: "omit";
170
169
  shown: "shown";
170
+ omit: "omit";
171
171
  controlled: "controlled";
172
172
  }>;
173
173
  suppressedSegmentIndexes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MeasurementAnchor } from './measurement';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MeasurementAnchor } from './measurement.js';
5
5
  const FiniteCoordinate = z.number().finite();
6
6
  export const ConstructionDimensionBaseline = z
7
7
  .object({
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  export declare const CupolaMaterialRole: z.ZodEnum<{
3
- body: "body";
4
3
  roof: "roof";
4
+ body: "body";
5
5
  base: "base";
6
6
  louvers: "louvers";
7
7
  }>;
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const CupolaMaterialRole = z.enum(['base', 'body', 'roof', 'louvers']);
6
6
  export const CupolaNode = BaseNode.extend({
7
7
  id: objectId('cupola'),
@@ -0,0 +1,129 @@
1
+ import { z } from 'zod';
2
+ export declare const CurtainGrid: z.ZodObject<{
3
+ layout: z.ZodDefault<z.ZodEnum<{
4
+ count: "count";
5
+ "maximum-spacing": "maximum-spacing";
6
+ "fixed-spacing": "fixed-spacing";
7
+ }>>;
8
+ count: z.ZodDefault<z.ZodNumber>;
9
+ spacing: z.ZodDefault<z.ZodNumber>;
10
+ alignment: z.ZodDefault<z.ZodEnum<{
11
+ start: "start";
12
+ center: "center";
13
+ end: "end";
14
+ }>>;
15
+ }, z.core.$strip>;
16
+ export type CurtainGrid = z.infer<typeof CurtainGrid>;
17
+ export declare const CurtainPanelType: z.ZodEnum<{
18
+ glass: "glass";
19
+ solid: "solid";
20
+ empty: "empty";
21
+ }>;
22
+ export type CurtainPanelType = z.infer<typeof CurtainPanelType>;
23
+ export declare const CurtainWallConfig: z.ZodObject<{
24
+ construction: z.ZodDefault<z.ZodEnum<{
25
+ stick: "stick";
26
+ unitized: "unitized";
27
+ }>>;
28
+ framing: z.ZodDefault<z.ZodEnum<{
29
+ capped: "capped";
30
+ "vertical-caps": "vertical-caps";
31
+ "horizontal-caps": "horizontal-caps";
32
+ "structural-glazing": "structural-glazing";
33
+ }>>;
34
+ columns: z.ZodPrefault<z.ZodObject<{
35
+ layout: z.ZodDefault<z.ZodEnum<{
36
+ count: "count";
37
+ "maximum-spacing": "maximum-spacing";
38
+ "fixed-spacing": "fixed-spacing";
39
+ }>>;
40
+ count: z.ZodDefault<z.ZodNumber>;
41
+ spacing: z.ZodDefault<z.ZodNumber>;
42
+ alignment: z.ZodDefault<z.ZodEnum<{
43
+ start: "start";
44
+ center: "center";
45
+ end: "end";
46
+ }>>;
47
+ }, z.core.$strip>>;
48
+ rows: z.ZodPrefault<z.ZodObject<{
49
+ layout: z.ZodDefault<z.ZodEnum<{
50
+ count: "count";
51
+ "maximum-spacing": "maximum-spacing";
52
+ "fixed-spacing": "fixed-spacing";
53
+ }>>;
54
+ count: z.ZodDefault<z.ZodNumber>;
55
+ spacing: z.ZodDefault<z.ZodNumber>;
56
+ alignment: z.ZodDefault<z.ZodEnum<{
57
+ start: "start";
58
+ center: "center";
59
+ end: "end";
60
+ }>>;
61
+ }, z.core.$strip>>;
62
+ mullionWidth: z.ZodDefault<z.ZodNumber>;
63
+ transomWidth: z.ZodDefault<z.ZodNumber>;
64
+ perimeterWidth: z.ZodDefault<z.ZodNumber>;
65
+ jointWidth: z.ZodDefault<z.ZodNumber>;
66
+ glassThickness: z.ZodDefault<z.ZodNumber>;
67
+ panelType: z.ZodDefault<z.ZodEnum<{
68
+ glass: "glass";
69
+ solid: "solid";
70
+ empty: "empty";
71
+ }>>;
72
+ spandrel: z.ZodDefault<z.ZodEnum<{
73
+ top: "top";
74
+ none: "none";
75
+ bottom: "bottom";
76
+ }>>;
77
+ frameColor: z.ZodDefault<z.ZodString>;
78
+ glassColor: z.ZodDefault<z.ZodString>;
79
+ solidColor: z.ZodDefault<z.ZodString>;
80
+ glassOpacity: z.ZodDefault<z.ZodNumber>;
81
+ glassRoughness: z.ZodDefault<z.ZodNumber>;
82
+ panels: z.ZodDefault<z.ZodArray<z.ZodObject<{
83
+ column: z.ZodNumber;
84
+ row: z.ZodNumber;
85
+ type: z.ZodEnum<{
86
+ glass: "glass";
87
+ solid: "solid";
88
+ empty: "empty";
89
+ }>;
90
+ }, z.core.$strip>>>;
91
+ }, z.core.$strip>;
92
+ export type CurtainWallConfig = z.infer<typeof CurtainWallConfig>;
93
+ export declare const DEFAULT_CURTAIN_WALL: {
94
+ construction: "stick" | "unitized";
95
+ framing: "capped" | "vertical-caps" | "horizontal-caps" | "structural-glazing";
96
+ columns: {
97
+ layout: "count" | "maximum-spacing" | "fixed-spacing";
98
+ count: number;
99
+ spacing: number;
100
+ alignment: "start" | "center" | "end";
101
+ };
102
+ rows: {
103
+ layout: "count" | "maximum-spacing" | "fixed-spacing";
104
+ count: number;
105
+ spacing: number;
106
+ alignment: "start" | "center" | "end";
107
+ };
108
+ mullionWidth: number;
109
+ transomWidth: number;
110
+ perimeterWidth: number;
111
+ jointWidth: number;
112
+ glassThickness: number;
113
+ panelType: "glass" | "solid" | "empty";
114
+ spandrel: "top" | "none" | "bottom";
115
+ frameColor: string;
116
+ glassColor: string;
117
+ solidColor: string;
118
+ glassOpacity: number;
119
+ glassRoughness: number;
120
+ panels: {
121
+ column: number;
122
+ row: number;
123
+ type: "glass" | "solid" | "empty";
124
+ }[];
125
+ };
126
+ export declare function getCurtainWallConfig(wall: {
127
+ curtainWall?: CurtainWallConfig;
128
+ }): CurtainWallConfig;
129
+ //# sourceMappingURL=curtain-wall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curtain-wall.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/curtain-wall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;iBAKtB,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAErD,eAAO,MAAM,gBAAgB;;;;EAAsC,CAAA;AACnE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAE/D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsC5B,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAEjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAA8B,CAAA;AAE/D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,iBAAiB,CAEjG"}
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ export const CurtainGrid = z.object({
3
+ layout: z.enum(['count', 'maximum-spacing', 'fixed-spacing']).default('maximum-spacing'),
4
+ count: z.number().int().min(1).max(32).default(3),
5
+ spacing: z.number().finite().min(0.2).max(100).default(1.5),
6
+ alignment: z.enum(['start', 'center', 'end']).default('center'),
7
+ });
8
+ export const CurtainPanelType = z.enum(['glass', 'solid', 'empty']);
9
+ export const CurtainWallConfig = z.object({
10
+ construction: z.enum(['stick', 'unitized']).default('stick'),
11
+ framing: z
12
+ .enum(['capped', 'vertical-caps', 'horizontal-caps', 'structural-glazing'])
13
+ .default('capped'),
14
+ columns: CurtainGrid.prefault({}),
15
+ rows: CurtainGrid.prefault({ layout: 'count', count: 2 }),
16
+ mullionWidth: z.number().finite().min(0.01).max(0.3).default(0.05),
17
+ transomWidth: z.number().finite().min(0.01).max(0.3).default(0.05),
18
+ perimeterWidth: z.number().finite().min(0.01).max(0.3).default(0.05),
19
+ jointWidth: z.number().finite().min(0.002).max(0.05).default(0.01),
20
+ glassThickness: z.number().finite().min(0.004).max(0.08).default(0.024),
21
+ panelType: CurtainPanelType.default('glass'),
22
+ spandrel: z.enum(['none', 'bottom', 'top']).default('none'),
23
+ frameColor: z
24
+ .string()
25
+ .regex(/^#[0-9a-fA-F]{6}$/)
26
+ .default('#303942'),
27
+ glassColor: z
28
+ .string()
29
+ .regex(/^#[0-9a-fA-F]{6}$/)
30
+ .default('#a9d5df'),
31
+ solidColor: z
32
+ .string()
33
+ .regex(/^#[0-9a-fA-F]{6}$/)
34
+ .default('#53616d'),
35
+ glassOpacity: z.number().finite().min(0.05).max(1).default(0.3),
36
+ glassRoughness: z.number().finite().min(0).max(1).default(0.12),
37
+ panels: z
38
+ .array(z.object({
39
+ column: z.number().int().min(0).max(31),
40
+ row: z.number().int().min(0).max(31),
41
+ type: CurtainPanelType,
42
+ }))
43
+ .max(1024)
44
+ .default([]),
45
+ });
46
+ export const DEFAULT_CURTAIN_WALL = CurtainWallConfig.parse({});
47
+ export function getCurtainWallConfig(wall) {
48
+ return wall.curtainWall ?? DEFAULT_CURTAIN_WALL;
49
+ }
@@ -2,8 +2,8 @@ import { z } from 'zod';
2
2
  export declare const DoorSegment: z.ZodObject<{
3
3
  type: z.ZodEnum<{
4
4
  glass: "glass";
5
- panel: "panel";
6
5
  empty: "empty";
6
+ panel: "panel";
7
7
  }>;
8
8
  heightRatio: z.ZodNumber;
9
9
  columnRatios: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
@@ -195,8 +195,8 @@ export declare const DoorNode: z.ZodObject<{
195
195
  segments: z.ZodDefault<z.ZodArray<z.ZodObject<{
196
196
  type: z.ZodEnum<{
197
197
  glass: "glass";
198
- panel: "panel";
199
198
  empty: "empty";
199
+ panel: "panel";
200
200
  }>;
201
201
  heightRatio: z.ZodNumber;
202
202
  columnRatios: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const DoorSegment = z.object({
6
6
  type: z.enum(['panel', 'glass', 'empty']),
7
7
  heightRatio: z.number(),
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
- import { MaterialSchema } from '../material';
3
- import { type RoofSegmentNode } from './roof-segment';
4
- import { WindowNode } from './window';
2
+ import { MaterialSchema } from '../material.js';
3
+ import { type RoofSegmentNode } from './roof-segment.js';
4
+ import { WindowNode } from './window.js';
5
5
  export type DormerSurfaceMaterialRole = 'top' | 'side' | 'wall';
6
6
  export type DormerSurfaceMaterialSpec = {
7
7
  material?: z.infer<typeof MaterialSchema>;
@@ -1,9 +1,9 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
5
- import { getRoofSegmentSurfaceY, RoofType } from './roof-segment';
6
- import { WindowNode } from './window';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ import { getRoofSegmentSurfaceY, RoofType } from './roof-segment.js';
6
+ import { WindowNode } from './window.js';
7
7
  export const DormerWallFace = z.enum(['front', 'back', 'right', 'left']);
8
8
  /**
9
9
  * Default dormer dimensions and window controls. Values match the
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  const DEFAULT_DOWNSPOUT_GENERATOR = 'default-downspout';
6
6
  export const DownspoutNode = BaseNode.extend({
7
7
  id: objectId('downspout'),
@@ -1,6 +1,6 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
4
  /**
5
5
  * Duct fitting — the junction pieces that connect round duct segments:
6
6
  * elbows (direction change), tees (branch takeoff), reducers (diameter
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { HangerOverrides } from './hanger-overrides';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { HangerOverrides } from './hanger-overrides.js';
5
5
  /**
6
6
  * Round duct segment — a polyline of 3D points connected by cylindrical
7
7
  * duct sections. Forced-air HVAC supply/return runs in US residential.
@@ -1,6 +1,6 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
4
  /**
5
5
  * Duct terminal — where the air loop meets the room: supply registers,
6
6
  * ceiling diffusers, return grilles.
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const ElevatorDoorStyle = z.enum(['center-opening', 'single-left', 'single-right']);
6
6
  export const ElevatorDoorPanelStyle = z.enum(['glass-frame', 'solid-panel', 'segmented-panel']);
7
7
  export const ElevatorShaftStyle = z.enum(['solid', 'glass']);
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const EyebrowVentMaterialRole = z.enum(['hood', 'front']);
6
6
  export const EyebrowVentNode = BaseNode.extend({
7
7
  id: objectId('eyebrow-vent'),
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
5
  export const FenceStyle = z.enum(['slat', 'rail', 'privacy', 'horizontal']);
6
6
  export const FenceBaseStyle = z.enum(['floating', 'grounded']);
7
7
  export const FencePostCap = z.enum(['none', 'flat', 'pyramid']);
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { AssetUrl } from '../asset-url';
3
- import { BaseNode, nodeType, objectId } from '../base';
2
+ import { AssetUrl } from '../asset-url.js';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
4
  export const GuideScaleReference = z.object({
5
5
  start: z.tuple([z.number(), z.number()]),
6
6
  end: z.tuple([z.number(), z.number()]),
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { type RoofSegmentNode } from './roof-segment';
2
+ import { type RoofSegmentNode } from './roof-segment.js';
3
3
  export declare const GUTTER_EAVE_TUCK_INWARD = 0.04;
4
4
  export declare const GUTTER_EAVE_TUCK_UP = 0.04;
5
5
  export type GutterEaveSide = '+X' | '-X' | '+Z' | '-Z';
@@ -1,9 +1,9 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
4
- import { MaterialSchema } from '../material';
5
- import { normalizeRoofSegmentTrim } from './roof-segment';
6
- import { getRoofShapeEaveSides } from './roof-segment-shape';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
+ import { MaterialSchema } from '../material.js';
5
+ import { normalizeRoofSegmentTrim } from './roof-segment.js';
6
+ import { getRoofShapeEaveSides } from './roof-segment-shape.js';
7
7
  const MIN_DEFAULT_GUTTER_LENGTH_M = 0.2;
8
8
  const DEFAULT_GUTTER_GENERATOR = 'default-gutter';
9
9
  const AUTO_GUTTER_METADATA_KEY = 'autoGutter';
@@ -1,6 +1,6 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
- import { BaseNode, nodeType, objectId } from '../base';
3
+ import { BaseNode, nodeType, objectId } from '../base.js';
4
4
  /**
5
5
  * HVAC equipment — the boxes duct systems start and end at: furnace,
6
6
  * air handler, outdoor condenser.
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ export declare const ImportedMeshPrimitive: z.ZodObject<{
3
+ positions: z.ZodArray<z.ZodNumber>;
4
+ normals: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
5
+ indices: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
6
+ color: z.ZodDefault<z.ZodString>;
7
+ opacity: z.ZodDefault<z.ZodNumber>;
8
+ }, z.core.$strip>;
9
+ export type ImportedMeshPrimitive = z.infer<typeof ImportedMeshPrimitive>;
10
+ /** Triangle geometry retained when an import has no native Pascal shape. */
11
+ export declare const ImportedMeshNode: z.ZodObject<{
12
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
13
+ name: z.ZodOptional<z.ZodString>;
14
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
15
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
16
+ camera: z.ZodOptional<z.ZodObject<{
17
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
18
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
19
+ mode: z.ZodDefault<z.ZodEnum<{
20
+ perspective: "perspective";
21
+ orthographic: "orthographic";
22
+ }>>;
23
+ fov: z.ZodOptional<z.ZodNumber>;
24
+ zoom: z.ZodOptional<z.ZodNumber>;
25
+ }, z.core.$strip>>;
26
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
27
+ id: z.ZodDefault<z.ZodTemplateLiteral<`imesh_${string}`>>;
28
+ type: z.ZodDefault<z.ZodLiteral<"imported-mesh">>;
29
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
30
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
31
+ primitives: z.ZodDefault<z.ZodArray<z.ZodObject<{
32
+ positions: z.ZodArray<z.ZodNumber>;
33
+ normals: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
34
+ indices: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
35
+ color: z.ZodDefault<z.ZodString>;
36
+ opacity: z.ZodDefault<z.ZodNumber>;
37
+ }, z.core.$strip>>>;
38
+ }, z.core.$strip>;
39
+ export type ImportedMeshNode = z.infer<typeof ImportedMeshNode>;
40
+ //# sourceMappingURL=imported-mesh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imported-mesh.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/imported-mesh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,eAAO,MAAM,qBAAqB;;;;;;iBAMhC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAa5B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA"}