@pascal-app/core 1.0.6 → 1.0.7

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 (940) hide show
  1. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts +31 -0
  2. package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
  3. package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
  4. package/dist/agent-operations/__fixtures__/build-room-cases.js +27 -0
  5. package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
  6. package/dist/agent-operations/__fixtures__/cases.js +19 -11
  7. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +25 -2
  8. package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -1
  9. package/dist/agent-operations/__fixtures__/design-brief-cases.js +509 -66
  10. package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts +30 -0
  11. package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts.map +1 -0
  12. package/dist/agent-operations/__fixtures__/dressing-scenes.js +82 -0
  13. package/dist/agent-operations/__fixtures__/native-materials.d.ts +407 -9
  14. package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
  15. package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -1
  16. package/dist/agent-operations/__fixtures__/notation-cases.js +14 -0
  17. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +7253 -4053
  18. package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
  19. package/dist/agent-operations/__fixtures__/room-cases.d.ts +1 -0
  20. package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
  21. package/dist/agent-operations/__fixtures__/room-cases.js +57 -1
  22. package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts +51 -0
  23. package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts.map +1 -0
  24. package/dist/agent-operations/__fixtures__/room-check-scenes.js +121 -0
  25. package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -1
  26. package/dist/agent-operations/__fixtures__/scene-check-cases.js +152 -18
  27. package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
  28. package/dist/agent-operations/__fixtures__/search-assets-cases.js +91 -0
  29. package/dist/agent-operations/__fixtures__/site-cases.d.ts +40 -1
  30. package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -1
  31. package/dist/agent-operations/__fixtures__/structure-cases.d.ts +3 -0
  32. package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
  33. package/dist/agent-operations/__fixtures__/structure-cases.js +199 -18
  34. package/dist/agent-operations/__fixtures__/unit-cases.d.ts +6 -0
  35. package/dist/agent-operations/__fixtures__/unit-cases.d.ts.map +1 -0
  36. package/dist/agent-operations/__fixtures__/unit-cases.js +266 -0
  37. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +109 -73
  38. package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
  39. package/dist/agent-operations/add-column.d.ts.map +1 -1
  40. package/dist/agent-operations/add-column.js +32 -3
  41. package/dist/agent-operations/add-fence.d.ts.map +1 -1
  42. package/dist/agent-operations/add-fence.js +2 -1
  43. package/dist/agent-operations/add-level.d.ts.map +1 -1
  44. package/dist/agent-operations/add-level.js +4 -4
  45. package/dist/agent-operations/add-object.d.ts +32 -6
  46. package/dist/agent-operations/add-object.d.ts.map +1 -1
  47. package/dist/agent-operations/add-object.js +59 -12
  48. package/dist/agent-operations/add-wall.d.ts +3 -8
  49. package/dist/agent-operations/add-wall.d.ts.map +1 -1
  50. package/dist/agent-operations/add-wall.js +31 -8
  51. package/dist/agent-operations/apply-changes.d.ts.map +1 -1
  52. package/dist/agent-operations/apply-changes.js +2 -1
  53. package/dist/agent-operations/asset-catalog.d.ts +63 -0
  54. package/dist/agent-operations/asset-catalog.d.ts.map +1 -0
  55. package/dist/agent-operations/asset-catalog.js +182 -0
  56. package/dist/agent-operations/asset-views.d.ts +4 -2
  57. package/dist/agent-operations/asset-views.d.ts.map +1 -1
  58. package/dist/agent-operations/asset-views.js +1 -3
  59. package/dist/agent-operations/author-scene-checks.d.ts +38 -0
  60. package/dist/agent-operations/author-scene-checks.d.ts.map +1 -0
  61. package/dist/agent-operations/author-scene-checks.js +266 -0
  62. package/dist/agent-operations/author-scene.d.ts +54 -20
  63. package/dist/agent-operations/author-scene.d.ts.map +1 -1
  64. package/dist/agent-operations/author-scene.js +1164 -196
  65. package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -1
  66. package/dist/agent-operations/authored-scene-merge.js +61 -3
  67. package/dist/agent-operations/batch.d.ts +1 -1
  68. package/dist/agent-operations/batch.d.ts.map +1 -1
  69. package/dist/agent-operations/batch.js +38 -39
  70. package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -1
  71. package/dist/agent-operations/ceiling-object-observations.js +5 -4
  72. package/dist/agent-operations/circulation-geometry.d.ts +14 -0
  73. package/dist/agent-operations/circulation-geometry.d.ts.map +1 -0
  74. package/dist/agent-operations/circulation-geometry.js +151 -0
  75. package/dist/agent-operations/circulation-graph.d.ts +72 -0
  76. package/dist/agent-operations/circulation-graph.d.ts.map +1 -0
  77. package/dist/agent-operations/circulation-graph.js +713 -0
  78. package/dist/agent-operations/circulation-non-spaces.d.ts +10 -0
  79. package/dist/agent-operations/circulation-non-spaces.d.ts.map +1 -0
  80. package/dist/agent-operations/circulation-non-spaces.js +88 -0
  81. package/dist/agent-operations/circulation-spaces.d.ts +5880 -0
  82. package/dist/agent-operations/circulation-spaces.d.ts.map +1 -0
  83. package/dist/agent-operations/circulation-spaces.js +368 -0
  84. package/dist/agent-operations/collections.d.ts.map +1 -1
  85. package/dist/agent-operations/collections.js +9 -7
  86. package/dist/agent-operations/corner-window.d.ts.map +1 -1
  87. package/dist/agent-operations/corner-window.js +2 -4
  88. package/dist/agent-operations/create-roof.d.ts.map +1 -1
  89. package/dist/agent-operations/create-roof.js +5 -7
  90. package/dist/agent-operations/create-room.d.ts +4 -1
  91. package/dist/agent-operations/create-room.d.ts.map +1 -1
  92. package/dist/agent-operations/create-room.js +7 -4
  93. package/dist/agent-operations/create-stair.js +2 -2
  94. package/dist/agent-operations/design-brief.d.ts +13 -7
  95. package/dist/agent-operations/design-brief.d.ts.map +1 -1
  96. package/dist/agent-operations/design-brief.js +172 -92
  97. package/dist/agent-operations/door-clearance.d.ts +68 -8
  98. package/dist/agent-operations/door-clearance.d.ts.map +1 -1
  99. package/dist/agent-operations/door-clearance.js +127 -20
  100. package/dist/agent-operations/dress-targets.d.ts +23 -0
  101. package/dist/agent-operations/dress-targets.d.ts.map +1 -0
  102. package/dist/agent-operations/dress-targets.js +34 -0
  103. package/dist/agent-operations/duplicate-node.d.ts +14 -0
  104. package/dist/agent-operations/duplicate-node.d.ts.map +1 -0
  105. package/dist/agent-operations/duplicate-node.js +173 -0
  106. package/dist/agent-operations/find-by-type.d.ts.map +1 -1
  107. package/dist/agent-operations/find-by-type.js +3 -0
  108. package/dist/agent-operations/furnish-room.d.ts +2 -0
  109. package/dist/agent-operations/furnish-room.d.ts.map +1 -1
  110. package/dist/agent-operations/furnish-room.js +15 -4
  111. package/dist/agent-operations/furniture-kind.d.ts +28 -1
  112. package/dist/agent-operations/furniture-kind.d.ts.map +1 -1
  113. package/dist/agent-operations/furniture-kind.js +105 -6
  114. package/dist/agent-operations/ground-reader.d.ts +10 -0
  115. package/dist/agent-operations/ground-reader.d.ts.map +1 -0
  116. package/dist/agent-operations/ground-reader.js +25 -0
  117. package/dist/agent-operations/index.d.ts +118 -12
  118. package/dist/agent-operations/index.d.ts.map +1 -1
  119. package/dist/agent-operations/index.js +26 -1
  120. package/dist/agent-operations/item-solids.d.ts +39 -0
  121. package/dist/agent-operations/item-solids.d.ts.map +1 -0
  122. package/dist/agent-operations/item-solids.js +128 -0
  123. package/dist/agent-operations/layout-clearance.d.ts +91 -11
  124. package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
  125. package/dist/agent-operations/layout-clearance.js +280 -73
  126. package/dist/agent-operations/level-height-fill.d.ts.map +1 -1
  127. package/dist/agent-operations/level-height-fill.js +7 -1
  128. package/dist/agent-operations/level-reads.d.ts +5 -0
  129. package/dist/agent-operations/level-reads.d.ts.map +1 -1
  130. package/dist/agent-operations/level-reads.js +38 -2
  131. package/dist/agent-operations/list-levels.d.ts.map +1 -1
  132. package/dist/agent-operations/list-levels.js +2 -4
  133. package/dist/agent-operations/move-node.d.ts +12 -0
  134. package/dist/agent-operations/move-node.d.ts.map +1 -0
  135. package/dist/agent-operations/move-node.js +28 -0
  136. package/dist/agent-operations/move-plan.d.ts +28 -0
  137. package/dist/agent-operations/move-plan.d.ts.map +1 -0
  138. package/dist/agent-operations/move-plan.js +257 -0
  139. package/dist/agent-operations/node-patch.d.ts.map +1 -1
  140. package/dist/agent-operations/node-patch.js +15 -0
  141. package/dist/agent-operations/paint.d.ts +3 -1
  142. package/dist/agent-operations/paint.d.ts.map +1 -1
  143. package/dist/agent-operations/paint.js +14 -1
  144. package/dist/agent-operations/photo-elevation.d.ts.map +1 -1
  145. package/dist/agent-operations/photo-elevation.js +2 -1
  146. package/dist/agent-operations/place-in-room.d.ts.map +1 -1
  147. package/dist/agent-operations/place-in-room.js +1 -0
  148. package/dist/agent-operations/place-items.d.ts.map +1 -1
  149. package/dist/agent-operations/place-items.js +3 -4
  150. package/dist/agent-operations/plan-clearance.d.ts +28 -0
  151. package/dist/agent-operations/plan-clearance.d.ts.map +1 -0
  152. package/dist/agent-operations/plan-clearance.js +47 -0
  153. package/dist/agent-operations/plan-geometry.d.ts +2 -0
  154. package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
  155. package/dist/agent-operations/plan-geometry.js +10 -0
  156. package/dist/agent-operations/project-files.d.ts +10 -0
  157. package/dist/agent-operations/project-files.d.ts.map +1 -1
  158. package/dist/agent-operations/reachability.d.ts +41 -0
  159. package/dist/agent-operations/reachability.d.ts.map +1 -0
  160. package/dist/agent-operations/reachability.js +199 -0
  161. package/dist/agent-operations/room-checks.d.ts +60 -0
  162. package/dist/agent-operations/room-checks.d.ts.map +1 -0
  163. package/dist/agent-operations/room-checks.js +226 -0
  164. package/dist/agent-operations/room-faces.d.ts +30 -0
  165. package/dist/agent-operations/room-faces.d.ts.map +1 -0
  166. package/dist/agent-operations/room-faces.js +31 -0
  167. package/dist/agent-operations/room-findings.d.ts +5 -2
  168. package/dist/agent-operations/room-findings.d.ts.map +1 -1
  169. package/dist/agent-operations/room-findings.js +30 -0
  170. package/dist/agent-operations/room-finishes.d.ts +87 -0
  171. package/dist/agent-operations/room-finishes.d.ts.map +1 -0
  172. package/dist/agent-operations/room-finishes.js +193 -0
  173. package/dist/agent-operations/room-floor-script.d.ts +3 -3
  174. package/dist/agent-operations/room-floor-script.js +3 -3
  175. package/dist/agent-operations/room-readings.d.ts +90 -0
  176. package/dist/agent-operations/room-readings.d.ts.map +1 -0
  177. package/dist/agent-operations/room-readings.js +369 -0
  178. package/dist/agent-operations/room-tile.d.ts +15 -0
  179. package/dist/agent-operations/room-tile.d.ts.map +1 -0
  180. package/dist/agent-operations/room-tile.js +30 -0
  181. package/dist/agent-operations/room-wet.d.ts +55 -0
  182. package/dist/agent-operations/room-wet.d.ts.map +1 -0
  183. package/dist/agent-operations/room-wet.js +203 -0
  184. package/dist/agent-operations/scene-check-policy.d.ts +5 -0
  185. package/dist/agent-operations/scene-check-policy.d.ts.map +1 -0
  186. package/dist/agent-operations/scene-check-policy.js +24 -0
  187. package/dist/agent-operations/scene-checkpoint.d.ts +10 -0
  188. package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -1
  189. package/dist/agent-operations/scene-checkpoint.js +31 -0
  190. package/dist/agent-operations/scene-issue-groups.d.ts +17 -0
  191. package/dist/agent-operations/scene-issue-groups.d.ts.map +1 -0
  192. package/dist/agent-operations/scene-issue-groups.js +71 -0
  193. package/dist/agent-operations/scene-materials.d.ts +23 -0
  194. package/dist/agent-operations/scene-materials.d.ts.map +1 -1
  195. package/dist/agent-operations/scene-materials.js +41 -0
  196. package/dist/agent-operations/scene-queries.d.ts +1667 -866
  197. package/dist/agent-operations/scene-queries.d.ts.map +1 -1
  198. package/dist/agent-operations/scene-queries.js +3 -3
  199. package/dist/agent-operations/scene-review.d.ts.map +1 -1
  200. package/dist/agent-operations/scene-review.js +3 -2
  201. package/dist/agent-operations/scene-view.d.ts.map +1 -1
  202. package/dist/agent-operations/scene-view.js +91 -21
  203. package/dist/agent-operations/search-assets.d.ts +10 -6
  204. package/dist/agent-operations/search-assets.d.ts.map +1 -1
  205. package/dist/agent-operations/search-assets.js +37 -22
  206. package/dist/agent-operations/set-checkpoint.d.ts.map +1 -1
  207. package/dist/agent-operations/set-checkpoint.js +1 -0
  208. package/dist/agent-operations/set-ground-level.d.ts +1 -1
  209. package/dist/agent-operations/set-ground-level.d.ts.map +1 -1
  210. package/dist/agent-operations/set-ground-level.js +3 -14
  211. package/dist/agent-operations/site.js +3 -2
  212. package/dist/agent-operations/slab-surface-script.d.ts +25 -0
  213. package/dist/agent-operations/slab-surface-script.d.ts.map +1 -0
  214. package/dist/agent-operations/slab-surface-script.js +60 -0
  215. package/dist/agent-operations/stair-plan-footprint.d.ts +9 -0
  216. package/dist/agent-operations/stair-plan-footprint.d.ts.map +1 -0
  217. package/dist/agent-operations/stair-plan-footprint.js +50 -0
  218. package/dist/agent-operations/types.d.ts +10 -5
  219. package/dist/agent-operations/types.d.ts.map +1 -1
  220. package/dist/agent-operations/units.d.ts +26 -0
  221. package/dist/agent-operations/units.d.ts.map +1 -0
  222. package/dist/agent-operations/units.js +110 -0
  223. package/dist/agent-operations/unreachable-rooms-check.d.ts +17 -0
  224. package/dist/agent-operations/unreachable-rooms-check.d.ts.map +1 -0
  225. package/dist/agent-operations/unreachable-rooms-check.js +35 -0
  226. package/dist/agent-operations/usage-checks.d.ts +2 -0
  227. package/dist/agent-operations/usage-checks.d.ts.map +1 -0
  228. package/dist/agent-operations/usage-checks.js +12 -0
  229. package/dist/agent-operations/verify-scene.d.ts +8 -11
  230. package/dist/agent-operations/verify-scene.d.ts.map +1 -1
  231. package/dist/agent-operations/verify-scene.js +55 -11
  232. package/dist/agent-operations/wall-face-defaults.d.ts +44 -0
  233. package/dist/agent-operations/wall-face-defaults.d.ts.map +1 -0
  234. package/dist/agent-operations/wall-face-defaults.js +229 -0
  235. package/dist/agent-operations/wall-joins.d.ts +119 -0
  236. package/dist/agent-operations/wall-joins.d.ts.map +1 -0
  237. package/dist/agent-operations/wall-joins.js +308 -0
  238. package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
  239. package/dist/agent-operations/wall-object-observations.js +4 -6
  240. package/dist/agent-operations/wall-skirting.d.ts.map +1 -1
  241. package/dist/agent-operations/wall-skirting.js +2 -0
  242. package/dist/agent-operations/wall-type.d.ts +49 -0
  243. package/dist/agent-operations/wall-type.d.ts.map +1 -0
  244. package/dist/agent-operations/wall-type.js +31 -0
  245. package/dist/agent-operations/zone-coverage.d.ts +85 -0
  246. package/dist/agent-operations/zone-coverage.d.ts.map +1 -0
  247. package/dist/agent-operations/zone-coverage.js +208 -0
  248. package/dist/agent-tools/add-object.d.ts +31 -0
  249. package/dist/agent-tools/add-object.d.ts.map +1 -1
  250. package/dist/agent-tools/add-object.js +44 -7
  251. package/dist/agent-tools/assets.d.ts +4 -0
  252. package/dist/agent-tools/assets.d.ts.map +1 -1
  253. package/dist/agent-tools/assets.js +11 -1
  254. package/dist/agent-tools/author-scene.d.ts +810 -15
  255. package/dist/agent-tools/author-scene.d.ts.map +1 -1
  256. package/dist/agent-tools/author-scene.js +275 -34
  257. package/dist/agent-tools/batch.d.ts +1 -1
  258. package/dist/agent-tools/batch.d.ts.map +1 -1
  259. package/dist/agent-tools/batch.js +5 -1
  260. package/dist/agent-tools/checkpoints.js +1 -1
  261. package/dist/agent-tools/columns.d.ts +14 -0
  262. package/dist/agent-tools/columns.d.ts.map +1 -1
  263. package/dist/agent-tools/columns.js +14 -2
  264. package/dist/agent-tools/contract.d.ts +10 -0
  265. package/dist/agent-tools/contract.d.ts.map +1 -1
  266. package/dist/agent-tools/contract.js +5 -1
  267. package/dist/agent-tools/corner-window.d.ts +1 -0
  268. package/dist/agent-tools/corner-window.d.ts.map +1 -1
  269. package/dist/agent-tools/corner-window.js +1 -1
  270. package/dist/agent-tools/create-room.d.ts +85 -0
  271. package/dist/agent-tools/create-room.d.ts.map +1 -1
  272. package/dist/agent-tools/create-room.js +8 -1
  273. package/dist/agent-tools/design-brief.d.ts +513 -7
  274. package/dist/agent-tools/design-brief.d.ts.map +1 -1
  275. package/dist/agent-tools/design-brief.js +192 -14
  276. package/dist/agent-tools/designs.js +1 -1
  277. package/dist/agent-tools/find-by-type.js +1 -1
  278. package/dist/agent-tools/index.d.ts +658 -10
  279. package/dist/agent-tools/index.d.ts.map +1 -1
  280. package/dist/agent-tools/index.js +9 -1
  281. package/dist/agent-tools/levels.js +4 -4
  282. package/dist/agent-tools/move-duplicate.d.ts +65 -0
  283. package/dist/agent-tools/move-duplicate.d.ts.map +1 -0
  284. package/dist/agent-tools/move-duplicate.js +68 -0
  285. package/dist/agent-tools/paint.d.ts +6 -0
  286. package/dist/agent-tools/paint.d.ts.map +1 -1
  287. package/dist/agent-tools/paint.js +7 -3
  288. package/dist/agent-tools/photo-elevation.js +1 -1
  289. package/dist/agent-tools/project-files.d.ts +2 -2
  290. package/dist/agent-tools/project-files.d.ts.map +1 -1
  291. package/dist/agent-tools/project-files.js +1 -1
  292. package/dist/agent-tools/refusal.d.ts +9 -1
  293. package/dist/agent-tools/refusal.d.ts.map +1 -1
  294. package/dist/agent-tools/refusal.js +5 -1
  295. package/dist/agent-tools/roofs.js +1 -1
  296. package/dist/agent-tools/room-structure.d.ts +60 -0
  297. package/dist/agent-tools/room-structure.d.ts.map +1 -1
  298. package/dist/agent-tools/room-structure.js +20 -1
  299. package/dist/agent-tools/search-materials.d.ts +1 -0
  300. package/dist/agent-tools/search-materials.d.ts.map +1 -1
  301. package/dist/agent-tools/site.js +1 -1
  302. package/dist/agent-tools/stairs.js +1 -1
  303. package/dist/agent-tools/units.d.ts +84 -0
  304. package/dist/agent-tools/units.d.ts.map +1 -0
  305. package/dist/agent-tools/units.js +54 -0
  306. package/dist/agent-tools/verify-scene-usage.d.ts +44 -0
  307. package/dist/agent-tools/verify-scene-usage.d.ts.map +1 -0
  308. package/dist/agent-tools/verify-scene-usage.js +146 -0
  309. package/dist/agent-tools/verify-scene.d.ts +12 -1
  310. package/dist/agent-tools/verify-scene.d.ts.map +1 -1
  311. package/dist/agent-tools/verify-scene.js +183 -3
  312. package/dist/agent-tools/view-scene.d.ts +3 -0
  313. package/dist/agent-tools/view-scene.d.ts.map +1 -1
  314. package/dist/agent-tools/view-scene.js +4 -1
  315. package/dist/agent-tools/wall-openings.d.ts +121 -2
  316. package/dist/agent-tools/wall-openings.d.ts.map +1 -1
  317. package/dist/agent-tools/wall-openings.js +123 -18
  318. package/dist/agent-tools/walls.d.ts +30 -0
  319. package/dist/agent-tools/walls.d.ts.map +1 -1
  320. package/dist/agent-tools/walls.js +54 -2
  321. package/dist/building/__fixtures__/wall-opening-cases.d.ts +340 -195
  322. package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
  323. package/dist/building/__fixtures__/wall-opening-cases.js +13 -0
  324. package/dist/building/code-profile.d.ts +231 -0
  325. package/dist/building/code-profile.d.ts.map +1 -0
  326. package/dist/building/code-profile.js +208 -0
  327. package/dist/building/corner-window.d.ts +2 -2
  328. package/dist/building/corner-window.d.ts.map +1 -1
  329. package/dist/building/corner-window.js +11 -2
  330. package/dist/building/door-types.d.ts +1 -0
  331. package/dist/building/door-types.d.ts.map +1 -1
  332. package/dist/building/door-types.js +2 -0
  333. package/dist/building/floor-item-fit.d.ts.map +1 -1
  334. package/dist/building/floor-item-fit.js +2 -4
  335. package/dist/building/ground-level.d.ts +1 -3
  336. package/dist/building/ground-level.d.ts.map +1 -1
  337. package/dist/building/ground-level.js +3 -5
  338. package/dist/building/index.d.ts +2 -0
  339. package/dist/building/index.d.ts.map +1 -1
  340. package/dist/building/index.js +2 -0
  341. package/dist/building/level-duplication.d.ts +5951 -4351
  342. package/dist/building/level-duplication.d.ts.map +1 -1
  343. package/dist/building/level-insertion.d.ts +1 -1
  344. package/dist/building/level-wall-copy.d.ts +24 -0
  345. package/dist/building/level-wall-copy.d.ts.map +1 -0
  346. package/dist/building/level-wall-copy.js +53 -0
  347. package/dist/building/merge-windows.d.ts.map +1 -1
  348. package/dist/building/merge-windows.js +1 -0
  349. package/dist/building/opening-style-presets.d.ts +2 -0
  350. package/dist/building/opening-style-presets.d.ts.map +1 -1
  351. package/dist/building/opening-style-presets.js +26 -5
  352. package/dist/building/room-use.d.ts +26 -0
  353. package/dist/building/room-use.d.ts.map +1 -0
  354. package/dist/building/room-use.js +102 -0
  355. package/dist/building/wall-openings.d.ts +115 -7
  356. package/dist/building/wall-openings.d.ts.map +1 -1
  357. package/dist/building/wall-openings.js +121 -29
  358. package/dist/building/window-types.d.ts +1 -0
  359. package/dist/building/window-types.d.ts.map +1 -1
  360. package/dist/building/window-types.js +3 -0
  361. package/dist/coherence/__fixtures__/enclosure-scenes.d.ts +84 -0
  362. package/dist/coherence/__fixtures__/enclosure-scenes.d.ts.map +1 -0
  363. package/dist/coherence/__fixtures__/enclosure-scenes.js +44 -0
  364. package/dist/commands/structure/attached-walls.d.ts +16 -0
  365. package/dist/commands/structure/attached-walls.d.ts.map +1 -0
  366. package/dist/commands/structure/attached-walls.js +53 -0
  367. package/dist/commands/structure/index.d.ts +3 -0
  368. package/dist/commands/structure/index.d.ts.map +1 -1
  369. package/dist/commands/structure/index.js +3 -0
  370. package/dist/commands/structure/move-separators.d.ts +62 -0
  371. package/dist/commands/structure/move-separators.d.ts.map +1 -0
  372. package/dist/commands/structure/move-separators.js +346 -0
  373. package/dist/commands/structure/set-floor-foundation.d.ts +5 -0
  374. package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -1
  375. package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -1
  376. package/dist/commands/structure/set-wall-geometry.js +44 -11
  377. package/dist/commands/structure/set-zone-intent.d.ts +26 -0
  378. package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
  379. package/dist/commands/structure/set-zone-intent.js +107 -2
  380. package/dist/commands/structure/shared.d.ts +888 -88
  381. package/dist/commands/structure/shared.d.ts.map +1 -1
  382. package/dist/commands/structure/wall-overlap.d.ts +45 -0
  383. package/dist/commands/structure/wall-overlap.d.ts.map +1 -0
  384. package/dist/commands/structure/wall-overlap.js +289 -0
  385. package/dist/commands/structure/zone-wall-merge.d.ts +3326 -2370
  386. package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
  387. package/dist/contracts/reference-discovery.d.ts +2 -2
  388. package/dist/contracts/reference-discovery.d.ts.map +1 -1
  389. package/dist/contracts/reference-discovery.js +5 -3
  390. package/dist/contracts/reference-inventory.d.ts.map +1 -1
  391. package/dist/contracts/reference-inventory.js +75 -24
  392. package/dist/events/bus.d.ts +15 -2
  393. package/dist/events/bus.d.ts.map +1 -1
  394. package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts +40 -0
  395. package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts.map +1 -0
  396. package/dist/hooks/spatial-grid/built-in-floor-placed.js +220 -0
  397. package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
  398. package/dist/hooks/spatial-grid/floor-placed-elevation.js +13 -7
  399. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +56 -1
  400. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  401. package/dist/hooks/spatial-grid/spatial-grid-manager.js +177 -27
  402. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1631 -831
  403. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  404. package/dist/hooks/spatial-grid/spatial-grid-sync.js +24 -1
  405. package/dist/hooks/spatial-grid/support-host-patch.js +10 -10
  406. package/dist/i18n/format.d.ts +41 -0
  407. package/dist/i18n/format.d.ts.map +1 -0
  408. package/dist/i18n/format.js +124 -0
  409. package/dist/i18n/index.d.ts +5 -0
  410. package/dist/i18n/index.d.ts.map +1 -0
  411. package/dist/i18n/index.js +3 -0
  412. package/dist/i18n/registry.d.ts +78 -0
  413. package/dist/i18n/registry.d.ts.map +1 -0
  414. package/dist/i18n/registry.js +252 -0
  415. package/dist/i18n/use-translate.d.ts +16 -0
  416. package/dist/i18n/use-translate.d.ts.map +1 -0
  417. package/dist/i18n/use-translate.js +23 -0
  418. package/dist/index.d.ts +32 -16
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +31 -15
  421. package/dist/lib/__fixtures__/mezzanine.d.ts +6840 -4169
  422. package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
  423. package/dist/lib/absorb-wall-separators.d.ts +2128 -1328
  424. package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
  425. package/dist/lib/beam.d.ts +137 -0
  426. package/dist/lib/beam.d.ts.map +1 -0
  427. package/dist/lib/beam.js +297 -0
  428. package/dist/lib/below-grade-footprints.d.ts +13 -5
  429. package/dist/lib/below-grade-footprints.d.ts.map +1 -1
  430. package/dist/lib/below-grade-footprints.js +53 -10
  431. package/dist/lib/build-up.d.ts +89 -0
  432. package/dist/lib/build-up.d.ts.map +1 -0
  433. package/dist/lib/build-up.js +216 -0
  434. package/dist/lib/corner-pair.d.ts +205 -4
  435. package/dist/lib/corner-pair.d.ts.map +1 -1
  436. package/dist/lib/deck-boards.d.ts +80 -0
  437. package/dist/lib/deck-boards.d.ts.map +1 -0
  438. package/dist/lib/deck-boards.js +184 -0
  439. package/dist/lib/deck-framing.d.ts +150 -0
  440. package/dist/lib/deck-framing.d.ts.map +1 -0
  441. package/dist/lib/deck-framing.js +515 -0
  442. package/dist/lib/deepest-drawn.d.ts +3 -6
  443. package/dist/lib/deepest-drawn.d.ts.map +1 -1
  444. package/dist/lib/deepest-drawn.js +4 -8
  445. package/dist/lib/door-opening.d.ts +19 -0
  446. package/dist/lib/door-opening.d.ts.map +1 -0
  447. package/dist/lib/door-opening.js +27 -0
  448. package/dist/lib/door-operation.d.ts +2 -0
  449. package/dist/lib/door-operation.d.ts.map +1 -1
  450. package/dist/lib/door-operation.js +4 -0
  451. package/dist/lib/exterior-wall-loops.d.ts.map +1 -1
  452. package/dist/lib/exterior-wall-loops.js +2 -1
  453. package/dist/lib/finish-script.d.ts +5 -5
  454. package/dist/lib/finish-script.d.ts.map +1 -1
  455. package/dist/lib/finish-script.js +12 -5
  456. package/dist/lib/floor-footprint-name.d.ts +17 -0
  457. package/dist/lib/floor-footprint-name.d.ts.map +1 -1
  458. package/dist/lib/floor-footprint-name.js +17 -4
  459. package/dist/lib/floor-intent-changes.d.ts.map +1 -1
  460. package/dist/lib/floor-intent-changes.js +60 -35
  461. package/dist/lib/floor-opening-footprints.d.ts +1 -1
  462. package/dist/lib/floor-opening-footprints.d.ts.map +1 -1
  463. package/dist/lib/floor-opening-footprints.js +10 -4
  464. package/dist/lib/floor-plate-paint.d.ts +2 -0
  465. package/dist/lib/floor-plate-paint.d.ts.map +1 -1
  466. package/dist/lib/floor-plate-paint.js +12 -0
  467. package/dist/lib/floor-plates.d.ts +250 -0
  468. package/dist/lib/floor-plates.d.ts.map +1 -1
  469. package/dist/lib/floor-plates.js +43 -4
  470. package/dist/lib/floor-script.d.ts +35 -6
  471. package/dist/lib/floor-script.d.ts.map +1 -1
  472. package/dist/lib/floor-script.js +96 -16
  473. package/dist/lib/foundation-construction.d.ts +4 -13
  474. package/dist/lib/foundation-construction.d.ts.map +1 -1
  475. package/dist/lib/foundation-construction.js +4 -14
  476. package/dist/lib/foundation-standard.d.ts +2 -3
  477. package/dist/lib/foundation-standard.d.ts.map +1 -1
  478. package/dist/lib/foundation-standard.js +2 -3
  479. package/dist/lib/foundation-wall.d.ts +1 -2
  480. package/dist/lib/foundation-wall.d.ts.map +1 -1
  481. package/dist/lib/foundation-wall.js +1 -2
  482. package/dist/lib/framing-post.d.ts +91 -0
  483. package/dist/lib/framing-post.d.ts.map +1 -0
  484. package/dist/lib/framing-post.js +174 -0
  485. package/dist/lib/geometry-script-node.d.ts +11 -0
  486. package/dist/lib/geometry-script-node.d.ts.map +1 -1
  487. package/dist/lib/geometry-script-node.js +35 -0
  488. package/dist/lib/grade-standing.d.ts +16 -2
  489. package/dist/lib/grade-standing.d.ts.map +1 -1
  490. package/dist/lib/grade-standing.js +129 -9
  491. package/dist/lib/ground-seat.d.ts +2 -22
  492. package/dist/lib/ground-seat.d.ts.map +1 -1
  493. package/dist/lib/ground-seat.js +2 -17
  494. package/dist/lib/ground-window.d.ts +2 -1
  495. package/dist/lib/ground-window.d.ts.map +1 -1
  496. package/dist/lib/ground-window.js +5 -2
  497. package/dist/lib/level-footprints.d.ts +2 -0
  498. package/dist/lib/level-footprints.d.ts.map +1 -1
  499. package/dist/lib/level-footprints.js +7 -0
  500. package/dist/lib/opening-casing.d.ts +67 -0
  501. package/dist/lib/opening-casing.d.ts.map +1 -0
  502. package/dist/lib/opening-casing.js +131 -0
  503. package/dist/lib/opening-exterior-face.d.ts +6 -0
  504. package/dist/lib/opening-exterior-face.d.ts.map +1 -0
  505. package/dist/lib/opening-exterior-face.js +15 -0
  506. package/dist/lib/opening-floor-datum.d.ts +11 -5
  507. package/dist/lib/opening-floor-datum.d.ts.map +1 -1
  508. package/dist/lib/opening-floor-datum.js +38 -6
  509. package/dist/lib/opening-frame-depth.d.ts +18 -0
  510. package/dist/lib/opening-frame-depth.d.ts.map +1 -0
  511. package/dist/lib/opening-frame-depth.js +22 -0
  512. package/dist/lib/outdoor-room.d.ts +32 -0
  513. package/dist/lib/outdoor-room.d.ts.map +1 -0
  514. package/dist/lib/outdoor-room.js +66 -0
  515. package/dist/lib/plate-surface.d.ts +8 -0
  516. package/dist/lib/plate-surface.d.ts.map +1 -1
  517. package/dist/lib/plate-surface.js +53 -3
  518. package/dist/lib/porch-framing-sync.d.ts +46 -0
  519. package/dist/lib/porch-framing-sync.d.ts.map +1 -0
  520. package/dist/lib/porch-framing-sync.js +206 -0
  521. package/dist/lib/porch-framing.d.ts +44 -0
  522. package/dist/lib/porch-framing.d.ts.map +1 -0
  523. package/dist/lib/porch-framing.js +159 -0
  524. package/dist/lib/railing-rooms.d.ts +13 -0
  525. package/dist/lib/railing-rooms.d.ts.map +1 -0
  526. package/dist/lib/railing-rooms.js +37 -0
  527. package/dist/lib/roof-eave.d.ts +135 -0
  528. package/dist/lib/roof-eave.d.ts.map +1 -0
  529. package/dist/lib/roof-eave.js +186 -0
  530. package/dist/lib/room-floor-plate.d.ts +3 -1
  531. package/dist/lib/room-floor-plate.d.ts.map +1 -1
  532. package/dist/lib/room-floor-plate.js +7 -0
  533. package/dist/lib/space-detection.d.ts +13 -0
  534. package/dist/lib/space-detection.d.ts.map +1 -1
  535. package/dist/lib/space-detection.js +112 -24
  536. package/dist/lib/structure-kernel.d.ts +22 -9
  537. package/dist/lib/structure-kernel.d.ts.map +1 -1
  538. package/dist/lib/structure-kernel.js +146 -28
  539. package/dist/lib/structure-reconcile.d.ts +1 -1
  540. package/dist/lib/structure-reconcile.d.ts.map +1 -1
  541. package/dist/lib/structure-reconcile.js +7 -4
  542. package/dist/lib/surface-intent.d.ts +10 -0
  543. package/dist/lib/surface-intent.d.ts.map +1 -0
  544. package/dist/lib/surface-intent.js +18 -0
  545. package/dist/lib/terrain-source.d.ts.map +1 -1
  546. package/dist/lib/terrain-source.js +2 -1
  547. package/dist/lib/wall-face-script.d.ts.map +1 -1
  548. package/dist/lib/wall-face-script.js +5 -2
  549. package/dist/material-kinds.d.ts +1 -1
  550. package/dist/material-kinds.d.ts.map +1 -1
  551. package/dist/material-kinds.js +1 -0
  552. package/dist/material-library.d.ts +15 -0
  553. package/dist/material-library.d.ts.map +1 -1
  554. package/dist/material-library.js +458 -59
  555. package/dist/node-slots/door.d.ts +3 -4
  556. package/dist/node-slots/door.d.ts.map +1 -1
  557. package/dist/node-slots/door.js +4 -3
  558. package/dist/node-slots/wall.d.ts.map +1 -1
  559. package/dist/node-slots/wall.js +21 -3
  560. package/dist/node-slots/window.d.ts +2 -2
  561. package/dist/node-slots/window.d.ts.map +1 -1
  562. package/dist/node-slots/window.js +6 -1
  563. package/dist/procedural-items/design.d.ts +8 -0
  564. package/dist/procedural-items/design.d.ts.map +1 -1
  565. package/dist/procedural-items/design.js +169 -21
  566. package/dist/procedural-items/motion-controller.d.ts +2 -0
  567. package/dist/procedural-items/motion-controller.d.ts.map +1 -1
  568. package/dist/procedural-items/motion-controller.js +2 -1
  569. package/dist/registry/index.d.ts +2 -2
  570. package/dist/registry/index.d.ts.map +1 -1
  571. package/dist/registry/index.js +1 -1
  572. package/dist/registry/mechanism.d.ts +4 -1
  573. package/dist/registry/mechanism.d.ts.map +1 -1
  574. package/dist/registry/mechanism.js +10 -0
  575. package/dist/registry/types.d.ts +65 -23
  576. package/dist/registry/types.d.ts.map +1 -1
  577. package/dist/runtime/__fixtures__/live-scene.d.ts +14 -0
  578. package/dist/runtime/__fixtures__/live-scene.d.ts.map +1 -0
  579. package/dist/runtime/__fixtures__/live-scene.js +64 -0
  580. package/dist/runtime/apply.d.ts +42 -0
  581. package/dist/runtime/apply.d.ts.map +1 -0
  582. package/dist/runtime/apply.js +274 -0
  583. package/dist/runtime/dependencies.d.ts +97 -0
  584. package/dist/runtime/dependencies.d.ts.map +1 -0
  585. package/dist/runtime/dependencies.js +42 -0
  586. package/dist/runtime/ids.d.ts +11 -0
  587. package/dist/runtime/ids.d.ts.map +1 -0
  588. package/dist/runtime/ids.js +80 -0
  589. package/dist/runtime/index.d.ts +14 -0
  590. package/dist/runtime/index.d.ts.map +1 -0
  591. package/dist/runtime/index.js +11 -0
  592. package/dist/runtime/node-queries.d.ts +16 -0
  593. package/dist/runtime/node-queries.d.ts.map +1 -0
  594. package/dist/runtime/node-queries.js +30 -0
  595. package/dist/runtime/patch.d.ts +26 -0
  596. package/dist/runtime/patch.d.ts.map +1 -0
  597. package/dist/runtime/patch.js +165 -0
  598. package/dist/runtime/reader.d.ts +104 -0
  599. package/dist/runtime/reader.d.ts.map +1 -0
  600. package/dist/runtime/reader.js +455 -0
  601. package/dist/runtime/scene-runtime.d.ts +112 -0
  602. package/dist/runtime/scene-runtime.d.ts.map +1 -0
  603. package/dist/runtime/scene-runtime.js +302 -0
  604. package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
  605. package/dist/schema/__fixtures__/node-fixtures.js +1 -0
  606. package/dist/schema/assembly.d.ts +3 -0
  607. package/dist/schema/assembly.d.ts.map +1 -1
  608. package/dist/schema/assembly.js +13 -0
  609. package/dist/schema/asset-url.d.ts +37 -2
  610. package/dist/schema/asset-url.d.ts.map +1 -1
  611. package/dist/schema/asset-url.js +80 -11
  612. package/dist/schema/base.d.ts +8 -0
  613. package/dist/schema/base.d.ts.map +1 -1
  614. package/dist/schema/base.js +19 -1
  615. package/dist/schema/build-up.d.ts +247 -0
  616. package/dist/schema/build-up.d.ts.map +1 -0
  617. package/dist/schema/build-up.js +83 -0
  618. package/dist/schema/geometry-source.d.ts +80 -0
  619. package/dist/schema/geometry-source.d.ts.map +1 -1
  620. package/dist/schema/geometry-source.js +38 -0
  621. package/dist/schema/index.d.ts +12 -7
  622. package/dist/schema/index.d.ts.map +1 -1
  623. package/dist/schema/index.js +12 -6
  624. package/dist/schema/material.d.ts +5 -0
  625. package/dist/schema/material.d.ts.map +1 -1
  626. package/dist/schema/material.js +6 -0
  627. package/dist/schema/nodes/beam.d.ts +264 -0
  628. package/dist/schema/nodes/beam.d.ts.map +1 -0
  629. package/dist/schema/nodes/beam.js +139 -0
  630. package/dist/schema/nodes/box-vent.d.ts +5 -0
  631. package/dist/schema/nodes/box-vent.d.ts.map +1 -1
  632. package/dist/schema/nodes/cabinet.d.ts +10 -0
  633. package/dist/schema/nodes/cabinet.d.ts.map +1 -1
  634. package/dist/schema/nodes/ceiling.d.ts +48 -0
  635. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  636. package/dist/schema/nodes/ceiling.js +5 -0
  637. package/dist/schema/nodes/chimney.d.ts +10 -0
  638. package/dist/schema/nodes/chimney.d.ts.map +1 -1
  639. package/dist/schema/nodes/column.d.ts +42 -0
  640. package/dist/schema/nodes/column.d.ts.map +1 -1
  641. package/dist/schema/nodes/column.js +11 -1
  642. package/dist/schema/nodes/cupola.d.ts +5 -0
  643. package/dist/schema/nodes/cupola.d.ts.map +1 -1
  644. package/dist/schema/nodes/door.d.ts +54 -3
  645. package/dist/schema/nodes/door.d.ts.map +1 -1
  646. package/dist/schema/nodes/door.js +41 -7
  647. package/dist/schema/nodes/dormer.d.ts +20 -0
  648. package/dist/schema/nodes/dormer.d.ts.map +1 -1
  649. package/dist/schema/nodes/downspout.d.ts +5 -0
  650. package/dist/schema/nodes/downspout.d.ts.map +1 -1
  651. package/dist/schema/nodes/elevator.d.ts +5 -0
  652. package/dist/schema/nodes/elevator.d.ts.map +1 -1
  653. package/dist/schema/nodes/eyebrow-vent.d.ts +5 -0
  654. package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
  655. package/dist/schema/nodes/fence.d.ts +5 -0
  656. package/dist/schema/nodes/fence.d.ts.map +1 -1
  657. package/dist/schema/nodes/guide.d.ts +14 -0
  658. package/dist/schema/nodes/guide.d.ts.map +1 -1
  659. package/dist/schema/nodes/guide.js +2 -0
  660. package/dist/schema/nodes/gutter.d.ts +5 -0
  661. package/dist/schema/nodes/gutter.d.ts.map +1 -1
  662. package/dist/schema/nodes/item.d.ts +71 -0
  663. package/dist/schema/nodes/item.d.ts.map +1 -1
  664. package/dist/schema/nodes/item.js +5 -1
  665. package/dist/schema/nodes/level.d.ts +1 -1
  666. package/dist/schema/nodes/level.d.ts.map +1 -1
  667. package/dist/schema/nodes/opening-types.d.ts +13 -0
  668. package/dist/schema/nodes/opening-types.d.ts.map +1 -1
  669. package/dist/schema/nodes/opening-types.js +8 -1
  670. package/dist/schema/nodes/railing-wall.d.ts +112 -0
  671. package/dist/schema/nodes/railing-wall.d.ts.map +1 -0
  672. package/dist/schema/nodes/railing-wall.js +160 -0
  673. package/dist/schema/nodes/ridge-vent.d.ts +5 -0
  674. package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
  675. package/dist/schema/nodes/roof-segment.d.ts +224 -1
  676. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  677. package/dist/schema/nodes/roof-segment.js +57 -10
  678. package/dist/schema/nodes/roof-types.d.ts +11 -0
  679. package/dist/schema/nodes/roof-types.d.ts.map +1 -1
  680. package/dist/schema/nodes/roof-types.js +6 -0
  681. package/dist/schema/nodes/roof.d.ts +60 -0
  682. package/dist/schema/nodes/roof.d.ts.map +1 -1
  683. package/dist/schema/nodes/roof.js +4 -0
  684. package/dist/schema/nodes/shelf.d.ts +5 -0
  685. package/dist/schema/nodes/shelf.d.ts.map +1 -1
  686. package/dist/schema/nodes/site.d.ts +80 -0
  687. package/dist/schema/nodes/site.d.ts.map +1 -1
  688. package/dist/schema/nodes/site.js +7 -0
  689. package/dist/schema/nodes/skylight.d.ts +10 -0
  690. package/dist/schema/nodes/skylight.d.ts.map +1 -1
  691. package/dist/schema/nodes/slab.d.ts +137 -0
  692. package/dist/schema/nodes/slab.d.ts.map +1 -1
  693. package/dist/schema/nodes/slab.js +3 -0
  694. package/dist/schema/nodes/solar-panel.d.ts +10 -0
  695. package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
  696. package/dist/schema/nodes/stair-segment.d.ts +5 -0
  697. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  698. package/dist/schema/nodes/stair-structure.d.ts +69 -0
  699. package/dist/schema/nodes/stair-structure.d.ts.map +1 -0
  700. package/dist/schema/nodes/stair-structure.js +39 -0
  701. package/dist/schema/nodes/stair.d.ts +46 -0
  702. package/dist/schema/nodes/stair.d.ts.map +1 -1
  703. package/dist/schema/nodes/stair.js +3 -0
  704. package/dist/schema/nodes/turbine-vent.d.ts +5 -0
  705. package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
  706. package/dist/schema/nodes/wall.d.ts +135 -2
  707. package/dist/schema/nodes/wall.d.ts.map +1 -1
  708. package/dist/schema/nodes/wall.js +42 -6
  709. package/dist/schema/nodes/window.d.ts +66 -1
  710. package/dist/schema/nodes/window.d.ts.map +1 -1
  711. package/dist/schema/nodes/window.js +50 -5
  712. package/dist/schema/nodes/zone.d.ts +68 -0
  713. package/dist/schema/nodes/zone.d.ts.map +1 -1
  714. package/dist/schema/nodes/zone.js +32 -0
  715. package/dist/schema/scene-material.d.ts +5 -0
  716. package/dist/schema/scene-material.d.ts.map +1 -1
  717. package/dist/schema/types.d.ts +1079 -4
  718. package/dist/schema/types.d.ts.map +1 -1
  719. package/dist/schema/types.js +2 -0
  720. package/dist/schema/wall-type.d.ts +95 -0
  721. package/dist/schema/wall-type.d.ts.map +1 -0
  722. package/dist/schema/wall-type.js +32 -0
  723. package/dist/services/roof-bearing.d.ts.map +1 -1
  724. package/dist/services/roof-bearing.js +6 -3
  725. package/dist/services/roof-level.d.ts.map +1 -1
  726. package/dist/services/roof-level.js +4 -3
  727. package/dist/services/roof-move.d.ts.map +1 -1
  728. package/dist/services/roof-move.js +13 -7
  729. package/dist/services/storey.d.ts.map +1 -1
  730. package/dist/services/storey.js +13 -8
  731. package/dist/spatial/usage-field/beds.d.ts +51 -0
  732. package/dist/spatial/usage-field/beds.d.ts.map +1 -0
  733. package/dist/spatial/usage-field/beds.js +346 -0
  734. package/dist/spatial/usage-field/blocked.d.ts +28 -0
  735. package/dist/spatial/usage-field/blocked.d.ts.map +1 -0
  736. package/dist/spatial/usage-field/blocked.js +185 -0
  737. package/dist/spatial/usage-field/boxes.d.ts +17 -0
  738. package/dist/spatial/usage-field/boxes.d.ts.map +1 -0
  739. package/dist/spatial/usage-field/boxes.js +82 -0
  740. package/dist/spatial/usage-field/catalogue-shapes.d.ts +3 -0
  741. package/dist/spatial/usage-field/catalogue-shapes.d.ts.map +1 -0
  742. package/dist/spatial/usage-field/catalogue-shapes.js +257 -0
  743. package/dist/spatial/usage-field/catalogue.d.ts +6 -0
  744. package/dist/spatial/usage-field/catalogue.d.ts.map +1 -0
  745. package/dist/spatial/usage-field/catalogue.js +11 -0
  746. package/dist/spatial/usage-field/clash.d.ts +40 -0
  747. package/dist/spatial/usage-field/clash.d.ts.map +1 -0
  748. package/dist/spatial/usage-field/clash.js +187 -0
  749. package/dist/spatial/usage-field/door-stairs.d.ts +18 -0
  750. package/dist/spatial/usage-field/door-stairs.d.ts.map +1 -0
  751. package/dist/spatial/usage-field/door-stairs.js +129 -0
  752. package/dist/spatial/usage-field/entry-way.d.ts +14 -0
  753. package/dist/spatial/usage-field/entry-way.d.ts.map +1 -0
  754. package/dist/spatial/usage-field/entry-way.js +219 -0
  755. package/dist/spatial/usage-field/fences.d.ts +18 -0
  756. package/dist/spatial/usage-field/fences.d.ts.map +1 -0
  757. package/dist/spatial/usage-field/fences.js +253 -0
  758. package/dist/spatial/usage-field/field.d.ts +44 -0
  759. package/dist/spatial/usage-field/field.d.ts.map +1 -0
  760. package/dist/spatial/usage-field/field.js +145 -0
  761. package/dist/spatial/usage-field/findings.d.ts +76 -0
  762. package/dist/spatial/usage-field/findings.d.ts.map +1 -0
  763. package/dist/spatial/usage-field/findings.js +252 -0
  764. package/dist/spatial/usage-field/fixtures.d.ts +18 -0
  765. package/dist/spatial/usage-field/fixtures.d.ts.map +1 -0
  766. package/dist/spatial/usage-field/fixtures.js +160 -0
  767. package/dist/spatial/usage-field/flag.d.ts +10 -0
  768. package/dist/spatial/usage-field/flag.d.ts.map +1 -0
  769. package/dist/spatial/usage-field/flag.js +12 -0
  770. package/dist/spatial/usage-field/floors.d.ts +13 -0
  771. package/dist/spatial/usage-field/floors.d.ts.map +1 -0
  772. package/dist/spatial/usage-field/floors.js +36 -0
  773. package/dist/spatial/usage-field/index.d.ts +7 -0
  774. package/dist/spatial/usage-field/index.d.ts.map +1 -0
  775. package/dist/spatial/usage-field/index.js +5 -0
  776. package/dist/spatial/usage-field/items.d.ts +38 -0
  777. package/dist/spatial/usage-field/items.d.ts.map +1 -0
  778. package/dist/spatial/usage-field/items.js +261 -0
  779. package/dist/spatial/usage-field/labels.d.ts +8 -0
  780. package/dist/spatial/usage-field/labels.d.ts.map +1 -0
  781. package/dist/spatial/usage-field/labels.js +14 -0
  782. package/dist/spatial/usage-field/level-field.d.ts +47 -0
  783. package/dist/spatial/usage-field/level-field.d.ts.map +1 -0
  784. package/dist/spatial/usage-field/level-field.js +96 -0
  785. package/dist/spatial/usage-field/measure.d.ts +324 -0
  786. package/dist/spatial/usage-field/measure.d.ts.map +1 -0
  787. package/dist/spatial/usage-field/measure.js +458 -0
  788. package/dist/spatial/usage-field/obstacles.d.ts +63 -0
  789. package/dist/spatial/usage-field/obstacles.d.ts.map +1 -0
  790. package/dist/spatial/usage-field/obstacles.js +215 -0
  791. package/dist/spatial/usage-field/openings.d.ts +12 -0
  792. package/dist/spatial/usage-field/openings.d.ts.map +1 -0
  793. package/dist/spatial/usage-field/openings.js +162 -0
  794. package/dist/spatial/usage-field/path.d.ts +48 -0
  795. package/dist/spatial/usage-field/path.d.ts.map +1 -0
  796. package/dist/spatial/usage-field/path.js +354 -0
  797. package/dist/spatial/usage-field/pieces.d.ts +27 -0
  798. package/dist/spatial/usage-field/pieces.d.ts.map +1 -0
  799. package/dist/spatial/usage-field/pieces.js +89 -0
  800. package/dist/spatial/usage-field/shapes.d.ts +18 -0
  801. package/dist/spatial/usage-field/shapes.d.ts.map +1 -0
  802. package/dist/spatial/usage-field/shapes.js +92 -0
  803. package/dist/spatial/usage-field/stairs.d.ts +23 -0
  804. package/dist/spatial/usage-field/stairs.d.ts.map +1 -0
  805. package/dist/spatial/usage-field/stairs.js +163 -0
  806. package/dist/spatial/usage-field/support.d.ts +24 -0
  807. package/dist/spatial/usage-field/support.d.ts.map +1 -0
  808. package/dist/spatial/usage-field/support.js +46 -0
  809. package/dist/spatial/usage-field/swings.d.ts +846 -0
  810. package/dist/spatial/usage-field/swings.d.ts.map +1 -0
  811. package/dist/spatial/usage-field/swings.js +427 -0
  812. package/dist/spatial/usage-field/types.d.ts +65 -0
  813. package/dist/spatial/usage-field/types.d.ts.map +1 -0
  814. package/dist/spatial/usage-field/types.js +1 -0
  815. package/dist/spatial/usage-field/walls.d.ts +1057 -0
  816. package/dist/spatial/usage-field/walls.d.ts.map +1 -0
  817. package/dist/spatial/usage-field/walls.js +166 -0
  818. package/dist/spatial/usage-field/way-in.d.ts +26 -0
  819. package/dist/spatial/usage-field/way-in.d.ts.map +1 -0
  820. package/dist/spatial/usage-field/way-in.js +113 -0
  821. package/dist/store/actions/node-actions.d.ts +2124 -1322
  822. package/dist/store/actions/node-actions.d.ts.map +1 -1
  823. package/dist/store/actions/node-actions.js +42 -16
  824. package/dist/store/derived-node-guard.d.ts +10 -2
  825. package/dist/store/derived-node-guard.d.ts.map +1 -1
  826. package/dist/store/derived-node-guard.js +31 -11
  827. package/dist/store/document-settling.d.ts +9 -0
  828. package/dist/store/document-settling.d.ts.map +1 -0
  829. package/dist/store/document-settling.js +22 -0
  830. package/dist/store/history-control.d.ts +19 -10
  831. package/dist/store/history-control.d.ts.map +1 -1
  832. package/dist/store/history-control.js +176 -127
  833. package/dist/store/history-drafts.d.ts.map +1 -1
  834. package/dist/store/history-drafts.js +21 -17
  835. package/dist/store/live-previews.d.ts +9 -0
  836. package/dist/store/live-previews.d.ts.map +1 -0
  837. package/dist/store/live-previews.js +19 -0
  838. package/dist/store/scene-annotations.d.ts +6751 -5151
  839. package/dist/store/scene-annotations.d.ts.map +1 -1
  840. package/dist/store/scene-environment.d.ts +33 -0
  841. package/dist/store/scene-environment.d.ts.map +1 -0
  842. package/dist/store/scene-environment.js +54 -0
  843. package/dist/store/scene-hydration.d.ts.map +1 -1
  844. package/dist/store/scene-hydration.js +41 -30
  845. package/dist/store/use-interactive.d.ts +9 -3
  846. package/dist/store/use-interactive.d.ts.map +1 -1
  847. package/dist/store/use-interactive.js +43 -11
  848. package/dist/store/use-live-node-overrides.d.ts.map +1 -1
  849. package/dist/store/use-live-node-overrides.js +3 -0
  850. package/dist/store/use-scene.d.ts +25 -0
  851. package/dist/store/use-scene.d.ts.map +1 -1
  852. package/dist/store/use-scene.js +408 -336
  853. package/dist/systems/document-reconcile.d.ts +40 -0
  854. package/dist/systems/document-reconcile.d.ts.map +1 -0
  855. package/dist/systems/document-reconcile.js +159 -0
  856. package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
  857. package/dist/systems/elevator/elevator-opening-system.js +9 -24
  858. package/dist/systems/fence/guard-layout.d.ts +69 -0
  859. package/dist/systems/fence/guard-layout.d.ts.map +1 -0
  860. package/dist/systems/fence/guard-layout.js +194 -0
  861. package/dist/systems/owned-floor-openings.d.ts +13 -1
  862. package/dist/systems/owned-floor-openings.d.ts.map +1 -1
  863. package/dist/systems/owned-floor-openings.js +58 -2
  864. package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -1
  865. package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -1
  866. package/dist/systems/reconcile-owned-floor-openings.js +4 -4
  867. package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
  868. package/dist/systems/roof/roof-elevation-system.js +8 -26
  869. package/dist/systems/roof/roof-elevation.d.ts +16 -1
  870. package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
  871. package/dist/systems/roof/roof-elevation.js +85 -4
  872. package/dist/systems/roof/roof-footprint.d.ts +42 -1
  873. package/dist/systems/roof/roof-footprint.d.ts.map +1 -1
  874. package/dist/systems/roof/roof-footprint.js +160 -4
  875. package/dist/systems/slab/__fixtures__/floor-step.d.ts +3163 -1934
  876. package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
  877. package/dist/systems/slab/__fixtures__/raised-room.d.ts +2495 -1249
  878. package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
  879. package/dist/systems/stair/stair-clearance.d.ts +7 -0
  880. package/dist/systems/stair/stair-clearance.d.ts.map +1 -1
  881. package/dist/systems/stair/stair-clearance.js +31 -11
  882. package/dist/systems/stair/stair-construction.d.ts +8 -3
  883. package/dist/systems/stair/stair-construction.d.ts.map +1 -1
  884. package/dist/systems/stair/stair-construction.js +55 -4
  885. package/dist/systems/stair/stair-opening-preview.d.ts +889 -89
  886. package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
  887. package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
  888. package/dist/systems/stair/stair-opening-system.js +18 -34
  889. package/dist/systems/stair/stair-presets.d.ts +36 -0
  890. package/dist/systems/stair/stair-presets.d.ts.map +1 -1
  891. package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
  892. package/dist/systems/stair/stair-rise-query.js +3 -2
  893. package/dist/systems/stair/stair-rise.d.ts.map +1 -1
  894. package/dist/systems/stair/stair-rise.js +6 -0
  895. package/dist/systems/stair/stair-sizing.d.ts +42 -11
  896. package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
  897. package/dist/systems/stair/stair-sizing.js +10 -1
  898. package/dist/systems/stair/stair-structure.d.ts +277 -0
  899. package/dist/systems/stair/stair-structure.d.ts.map +1 -0
  900. package/dist/systems/stair/stair-structure.js +496 -0
  901. package/dist/systems/wall/wall-assembly.d.ts +84 -6
  902. package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
  903. package/dist/systems/wall/wall-assembly.js +204 -5
  904. package/dist/systems/wall/wall-finish.d.ts +38 -2
  905. package/dist/systems/wall/wall-finish.d.ts.map +1 -1
  906. package/dist/systems/wall/wall-finish.js +70 -2
  907. package/dist/systems/wall/wall-footprint.js +2 -2
  908. package/dist/systems/wall/wall-merge.d.ts.map +1 -1
  909. package/dist/systems/wall/wall-merge.js +28 -7
  910. package/dist/systems/wall/wall-mitering.d.ts +1 -0
  911. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  912. package/dist/systems/wall/wall-mitering.js +152 -52
  913. package/dist/systems/wall/wall-move.d.ts +23 -6
  914. package/dist/systems/wall/wall-move.d.ts.map +1 -1
  915. package/dist/systems/wall/wall-move.js +65 -0
  916. package/dist/systems/wall/wall-top.d.ts +2 -2
  917. package/dist/systems/wall/wall-top.d.ts.map +1 -1
  918. package/dist/systems/wall/wall-top.js +6 -1
  919. package/dist/systems/wall/wall-topology.d.ts +32 -1
  920. package/dist/systems/wall/wall-topology.d.ts.map +1 -1
  921. package/dist/systems/wall/wall-topology.js +118 -10
  922. package/dist/systems/wall/wall-trim-profiles.d.ts +12 -0
  923. package/dist/systems/wall/wall-trim-profiles.d.ts.map +1 -0
  924. package/dist/systems/wall/wall-trim-profiles.js +191 -0
  925. package/dist/utils/ensure-scene-openings.d.ts +6523 -4923
  926. package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
  927. package/dist/utils/floor-piece-adoption.d.ts +5 -0
  928. package/dist/utils/floor-piece-adoption.d.ts.map +1 -1
  929. package/dist/utils/floor-plate-migration.d.ts +1930 -1130
  930. package/dist/utils/floor-plate-migration.d.ts.map +1 -1
  931. package/dist/utils/owned-floor-opening-migration.d.ts +888 -88
  932. package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
  933. package/dist/utils/reconcile-structure-on-load.d.ts +1930 -1130
  934. package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
  935. package/dist/utils/structure-id.d.ts.map +1 -1
  936. package/dist/utils/structure-id.js +4 -0
  937. package/package.json +22 -5
  938. package/dist/lib/generic-foundation.d.ts +0 -40
  939. package/dist/lib/generic-foundation.d.ts.map +0 -1
  940. package/dist/lib/generic-foundation.js +0 -200
@@ -1869,7 +1869,7 @@ export const MATERIAL_CATALOG = [
1869
1869
  previewColor: '#505050',
1870
1870
  preset: {
1871
1871
  maps: {
1872
- albedoMap: '/material/roofing/roof_shingles_grey/roof_shingles_grey_basecolor_512.webp',
1872
+ albedoMap: '/material/roofing/roof_shingles_grey/roof_shingles_grey_basecolor_512.ktx2',
1873
1873
  aoMap: '/material/roofing/roof_shingles_classic/roof_shingles_classic_ao_512.ktx2',
1874
1874
  metalnessMap: '/material/roofing/roof_shingles_classic/roof_shingles_classic_metallic_512.ktx2',
1875
1875
  normalMap: '/material/roofing/roof_shingles_classic/roof_shingles_classic_normal_512.ktx2',
@@ -2101,6 +2101,41 @@ export const MATERIAL_CATALOG = [
2101
2101
  },
2102
2102
  },
2103
2103
  },
2104
+ {
2105
+ // The default interior wall paint (`DEFAULT_INTERIOR_WALL_PAINT`): Light grey's
2106
+ // colour under its own name. Listed after it, so a nearest-colour snap still
2107
+ // lands on Light grey.
2108
+ id: 'preset-seattlegrey',
2109
+ label: 'Seattle grey',
2110
+ category: 'colors',
2111
+ description: 'Cool light grey interior wall paint',
2112
+ previewColor: '#d8d6d1',
2113
+ preset: {
2114
+ maps: {},
2115
+ mapProperties: {
2116
+ color: '#d8d6d1',
2117
+ roughness: 0.9,
2118
+ metalness: 0,
2119
+ repeatX: 1,
2120
+ repeatY: 1,
2121
+ rotation: 0,
2122
+ wrapS: 'Repeat',
2123
+ wrapT: 'Repeat',
2124
+ normalScaleX: 1,
2125
+ normalScaleY: 1,
2126
+ emissiveIntensity: 1,
2127
+ displacementScale: 0.02,
2128
+ transparent: false,
2129
+ flipY: true,
2130
+ bumpScale: 1,
2131
+ emissiveColor: '#000000',
2132
+ aoMapIntensity: 1,
2133
+ side: 0,
2134
+ opacity: 1,
2135
+ lightMapIntensity: 1,
2136
+ },
2137
+ },
2138
+ },
2104
2139
  {
2105
2140
  id: 'preset-greige',
2106
2141
  label: 'Greige',
@@ -3441,13 +3476,81 @@ export const MATERIAL_CATALOG = [
3441
3476
  emissiveColor: '#000000',
3442
3477
  aoMapIntensity: 1,
3443
3478
  // FrontSide — DoubleSide on a NodeMaterial poisons the WebGPU MRT scene
3444
- // pass (window/door glass relies on this). It's the only glass we use.
3479
+ // pass (window/door glass relies on this).
3445
3480
  side: 0,
3446
3481
  opacity: 0.3,
3447
3482
  lightMapIntensity: 1,
3448
3483
  },
3449
3484
  },
3450
3485
  },
3486
+ {
3487
+ id: 'preset-glass-frosted',
3488
+ label: 'Frosted glass',
3489
+ category: 'glass',
3490
+ description: 'Frosted glass finish',
3491
+ previewColor: '#e8edf0',
3492
+ preset: {
3493
+ maps: {},
3494
+ mapProperties: {
3495
+ color: '#e8edf0',
3496
+ roughness: 0.6,
3497
+ metalness: 0.0,
3498
+ repeatX: 1,
3499
+ repeatY: 1,
3500
+ rotation: 0,
3501
+ wrapS: 'Repeat',
3502
+ wrapT: 'Repeat',
3503
+ normalScaleX: 1,
3504
+ normalScaleY: 1,
3505
+ emissiveIntensity: 1,
3506
+ displacementScale: 0.02,
3507
+ transparent: true,
3508
+ flipY: true,
3509
+ bumpScale: 1,
3510
+ emissiveColor: '#000000',
3511
+ aoMapIntensity: 1,
3512
+ // FrontSide — DoubleSide on a NodeMaterial poisons the WebGPU MRT scene
3513
+ // pass (window/door glass relies on this).
3514
+ side: 0,
3515
+ opacity: 0.6,
3516
+ lightMapIntensity: 1,
3517
+ },
3518
+ },
3519
+ },
3520
+ {
3521
+ id: 'preset-glass-tinted',
3522
+ label: 'Tinted glass',
3523
+ category: 'glass',
3524
+ description: 'Tinted glass finish',
3525
+ previewColor: '#6f8a99',
3526
+ preset: {
3527
+ maps: {},
3528
+ mapProperties: {
3529
+ color: '#6f8a99',
3530
+ roughness: 0.1,
3531
+ metalness: 0.0,
3532
+ repeatX: 1,
3533
+ repeatY: 1,
3534
+ rotation: 0,
3535
+ wrapS: 'Repeat',
3536
+ wrapT: 'Repeat',
3537
+ normalScaleX: 1,
3538
+ normalScaleY: 1,
3539
+ emissiveIntensity: 1,
3540
+ displacementScale: 0.02,
3541
+ transparent: true,
3542
+ flipY: true,
3543
+ bumpScale: 1,
3544
+ emissiveColor: '#000000',
3545
+ aoMapIntensity: 1,
3546
+ // FrontSide — DoubleSide on a NodeMaterial poisons the WebGPU MRT scene
3547
+ // pass (window/door glass relies on this).
3548
+ side: 0,
3549
+ opacity: 0.45,
3550
+ lightMapIntensity: 1,
3551
+ },
3552
+ },
3553
+ },
3451
3554
  {
3452
3555
  id: 'fabric-linen',
3453
3556
  label: 'Linen',
@@ -4175,23 +4278,95 @@ export const MATERIAL_CATALOG = [
4175
4278
  },
4176
4279
  },
4177
4280
  },
4281
+ {
4282
+ id: 'metal-black',
4283
+ label: 'Matte black',
4284
+ category: 'metal',
4285
+ surfaces: ['furniture', 'wall'],
4286
+ description: 'Matte black finish',
4287
+ previewColor: '#1f1f1f',
4288
+ preset: {
4289
+ maps: {},
4290
+ mapProperties: {
4291
+ color: '#1f1f1f',
4292
+ roughness: 0.55,
4293
+ metalness: 0.5,
4294
+ repeatX: 1,
4295
+ repeatY: 1,
4296
+ rotation: 0,
4297
+ wrapS: 'Repeat',
4298
+ wrapT: 'Repeat',
4299
+ normalScaleX: 1,
4300
+ normalScaleY: 1,
4301
+ emissiveIntensity: 1,
4302
+ displacementScale: 0,
4303
+ transparent: false,
4304
+ flipY: false,
4305
+ bumpScale: 1,
4306
+ emissiveColor: '#000000',
4307
+ aoMapIntensity: 1,
4308
+ side: 0,
4309
+ opacity: 1,
4310
+ lightMapIntensity: 1,
4311
+ },
4312
+ },
4313
+ },
4314
+ {
4315
+ id: 'metal-bronze',
4316
+ label: 'Oil-rubbed bronze',
4317
+ category: 'metal',
4318
+ surfaces: ['furniture', 'wall'],
4319
+ description: 'Oil-rubbed bronze finish',
4320
+ previewColor: '#4a3a2a',
4321
+ preset: {
4322
+ maps: {},
4323
+ mapProperties: {
4324
+ color: '#4a3a2a',
4325
+ roughness: 0.45,
4326
+ metalness: 0.7,
4327
+ repeatX: 1,
4328
+ repeatY: 1,
4329
+ rotation: 0,
4330
+ wrapS: 'Repeat',
4331
+ wrapT: 'Repeat',
4332
+ normalScaleX: 1,
4333
+ normalScaleY: 1,
4334
+ emissiveIntensity: 1,
4335
+ displacementScale: 0,
4336
+ transparent: false,
4337
+ flipY: false,
4338
+ bumpScale: 1,
4339
+ emissiveColor: '#000000',
4340
+ aoMapIntensity: 1,
4341
+ side: 0,
4342
+ opacity: 1,
4343
+ lightMapIntensity: 1,
4344
+ },
4345
+ },
4346
+ },
4178
4347
  /* ── Siding ────────────────────────────────────────────────────────────────
4179
4348
  * The catalog shipped no siding finish at all — no lap, no clapboard, no
4180
4349
  * board-and-batten — so imported exterior walls could be color-true only as
4181
4350
  * flat paint. One white seamless albedo per profile,
4182
4351
  * tinted per entry via mapProperties.color (same mechanism the flat color
4183
- * presets use), keeps this to two textures for twelve finishes.
4352
+ * presets use), keeps this to two textures for every finish. Painted wood /
4353
+ * fiber-cement and vinyl differ by sheen (roughness). The `siding` category
4354
+ * keeps them apart from wood flooring; ids are stable scene references.
4184
4355
  */
4185
4356
  {
4186
4357
  id: 'siding-lap-white',
4187
4358
  label: 'Lap siding — white',
4188
- category: 'wood',
4359
+ category: 'siding',
4189
4360
  surfaces: ['wall', 'outdoor'],
4190
4361
  description: 'Exterior clapboard lap siding, painted white',
4362
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4191
4363
  previewColor: '#e9e9e9',
4192
4364
  preset: {
4193
4365
  maps: {
4194
- albedoMap: '/material/siding/lap_albedo_512.webp',
4366
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4367
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4368
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4369
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4195
4370
  },
4196
4371
  mapProperties: {
4197
4372
  color: '#e9e9e9',
@@ -4205,10 +4380,10 @@ export const MATERIAL_CATALOG = [
4205
4380
  normalScaleX: 1,
4206
4381
  normalScaleY: 1,
4207
4382
  emissiveIntensity: 1,
4208
- displacementScale: 0.02,
4383
+ displacementScale: 0,
4209
4384
  bumpScale: 1,
4210
4385
  transparent: false,
4211
- flipY: true,
4386
+ flipY: false,
4212
4387
  emissiveColor: '#000000',
4213
4388
  aoMapIntensity: 1,
4214
4389
  side: 0,
@@ -4220,13 +4395,17 @@ export const MATERIAL_CATALOG = [
4220
4395
  {
4221
4396
  id: 'siding-lap-greige',
4222
4397
  label: 'Lap siding — greige',
4223
- category: 'wood',
4398
+ category: 'siding',
4224
4399
  surfaces: ['wall', 'outdoor'],
4225
4400
  description: 'Exterior clapboard lap siding, painted greige',
4401
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4226
4402
  previewColor: '#c8c1b8',
4227
4403
  preset: {
4228
4404
  maps: {
4229
- albedoMap: '/material/siding/lap_albedo_512.webp',
4405
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4406
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4407
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4408
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4230
4409
  },
4231
4410
  mapProperties: {
4232
4411
  color: '#c8c1b8',
@@ -4240,10 +4419,10 @@ export const MATERIAL_CATALOG = [
4240
4419
  normalScaleX: 1,
4241
4420
  normalScaleY: 1,
4242
4421
  emissiveIntensity: 1,
4243
- displacementScale: 0.02,
4422
+ displacementScale: 0,
4244
4423
  bumpScale: 1,
4245
4424
  transparent: false,
4246
- flipY: true,
4425
+ flipY: false,
4247
4426
  emissiveColor: '#000000',
4248
4427
  aoMapIntensity: 1,
4249
4428
  side: 0,
@@ -4255,13 +4434,17 @@ export const MATERIAL_CATALOG = [
4255
4434
  {
4256
4435
  id: 'siding-lap-gray',
4257
4436
  label: 'Lap siding — gray',
4258
- category: 'wood',
4437
+ category: 'siding',
4259
4438
  surfaces: ['wall', 'outdoor'],
4260
4439
  description: 'Exterior clapboard lap siding, painted gray',
4440
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4261
4441
  previewColor: '#8b8a86',
4262
4442
  preset: {
4263
4443
  maps: {
4264
- albedoMap: '/material/siding/lap_albedo_512.webp',
4444
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4445
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4446
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4447
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4265
4448
  },
4266
4449
  mapProperties: {
4267
4450
  color: '#8b8a86',
@@ -4275,10 +4458,10 @@ export const MATERIAL_CATALOG = [
4275
4458
  normalScaleX: 1,
4276
4459
  normalScaleY: 1,
4277
4460
  emissiveIntensity: 1,
4278
- displacementScale: 0.02,
4461
+ displacementScale: 0,
4279
4462
  bumpScale: 1,
4280
4463
  transparent: false,
4281
- flipY: true,
4464
+ flipY: false,
4282
4465
  emissiveColor: '#000000',
4283
4466
  aoMapIntensity: 1,
4284
4467
  side: 0,
@@ -4290,13 +4473,17 @@ export const MATERIAL_CATALOG = [
4290
4473
  {
4291
4474
  id: 'siding-lap-sage',
4292
4475
  label: 'Lap siding — sage',
4293
- category: 'wood',
4476
+ category: 'siding',
4294
4477
  surfaces: ['wall', 'outdoor'],
4295
4478
  description: 'Exterior clapboard lap siding, painted sage',
4479
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4296
4480
  previewColor: '#bcc5b2',
4297
4481
  preset: {
4298
4482
  maps: {
4299
- albedoMap: '/material/siding/lap_albedo_512.webp',
4483
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4484
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4485
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4486
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4300
4487
  },
4301
4488
  mapProperties: {
4302
4489
  color: '#bcc5b2',
@@ -4310,10 +4497,10 @@ export const MATERIAL_CATALOG = [
4310
4497
  normalScaleX: 1,
4311
4498
  normalScaleY: 1,
4312
4499
  emissiveIntensity: 1,
4313
- displacementScale: 0.02,
4500
+ displacementScale: 0,
4314
4501
  bumpScale: 1,
4315
4502
  transparent: false,
4316
- flipY: true,
4503
+ flipY: false,
4317
4504
  emissiveColor: '#000000',
4318
4505
  aoMapIntensity: 1,
4319
4506
  side: 0,
@@ -4325,13 +4512,17 @@ export const MATERIAL_CATALOG = [
4325
4512
  {
4326
4513
  id: 'siding-lap-cedar',
4327
4514
  label: 'Lap siding — cedar',
4328
- category: 'wood',
4515
+ category: 'siding',
4329
4516
  surfaces: ['wall', 'outdoor'],
4330
4517
  description: 'Exterior clapboard lap siding, stained cedar',
4518
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4331
4519
  previewColor: '#b5825a',
4332
4520
  preset: {
4333
4521
  maps: {
4334
- albedoMap: '/material/siding/lap_albedo_512.webp',
4522
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4523
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4524
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4525
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4335
4526
  },
4336
4527
  mapProperties: {
4337
4528
  color: '#b5825a',
@@ -4345,10 +4536,10 @@ export const MATERIAL_CATALOG = [
4345
4536
  normalScaleX: 1,
4346
4537
  normalScaleY: 1,
4347
4538
  emissiveIntensity: 1,
4348
- displacementScale: 0.02,
4539
+ displacementScale: 0,
4349
4540
  bumpScale: 1,
4350
4541
  transparent: false,
4351
- flipY: true,
4542
+ flipY: false,
4352
4543
  emissiveColor: '#000000',
4353
4544
  aoMapIntensity: 1,
4354
4545
  side: 0,
@@ -4360,13 +4551,17 @@ export const MATERIAL_CATALOG = [
4360
4551
  {
4361
4552
  id: 'siding-lap-forest',
4362
4553
  label: 'Lap siding — forest',
4363
- category: 'wood',
4554
+ category: 'siding',
4364
4555
  surfaces: ['wall', 'outdoor'],
4365
4556
  description: 'Exterior clapboard lap siding, painted forest',
4557
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4366
4558
  previewColor: '#4f6b57',
4367
4559
  preset: {
4368
4560
  maps: {
4369
- albedoMap: '/material/siding/lap_albedo_512.webp',
4561
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4562
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4563
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4564
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4370
4565
  },
4371
4566
  mapProperties: {
4372
4567
  color: '#4f6b57',
@@ -4380,10 +4575,10 @@ export const MATERIAL_CATALOG = [
4380
4575
  normalScaleX: 1,
4381
4576
  normalScaleY: 1,
4382
4577
  emissiveIntensity: 1,
4383
- displacementScale: 0.02,
4578
+ displacementScale: 0,
4384
4579
  bumpScale: 1,
4385
4580
  transparent: false,
4386
- flipY: true,
4581
+ flipY: false,
4387
4582
  emissiveColor: '#000000',
4388
4583
  aoMapIntensity: 1,
4389
4584
  side: 0,
@@ -4395,13 +4590,17 @@ export const MATERIAL_CATALOG = [
4395
4590
  {
4396
4591
  id: 'siding-lap-navy',
4397
4592
  label: 'Lap siding — navy',
4398
- category: 'wood',
4593
+ category: 'siding',
4399
4594
  surfaces: ['wall', 'outdoor'],
4400
4595
  description: 'Exterior clapboard lap siding, painted navy',
4596
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4401
4597
  previewColor: '#2f4865',
4402
4598
  preset: {
4403
4599
  maps: {
4404
- albedoMap: '/material/siding/lap_albedo_512.webp',
4600
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4601
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4602
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4603
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4405
4604
  },
4406
4605
  mapProperties: {
4407
4606
  color: '#2f4865',
@@ -4415,10 +4614,10 @@ export const MATERIAL_CATALOG = [
4415
4614
  normalScaleX: 1,
4416
4615
  normalScaleY: 1,
4417
4616
  emissiveIntensity: 1,
4418
- displacementScale: 0.02,
4617
+ displacementScale: 0,
4419
4618
  bumpScale: 1,
4420
4619
  transparent: false,
4421
- flipY: true,
4620
+ flipY: false,
4422
4621
  emissiveColor: '#000000',
4423
4622
  aoMapIntensity: 1,
4424
4623
  side: 0,
@@ -4430,13 +4629,17 @@ export const MATERIAL_CATALOG = [
4430
4629
  {
4431
4630
  id: 'siding-lap-yellow',
4432
4631
  label: 'Lap siding — yellow',
4433
- category: 'wood',
4632
+ category: 'siding',
4434
4633
  surfaces: ['wall', 'outdoor'],
4435
4634
  description: 'Exterior clapboard lap siding, painted yellow',
4635
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4436
4636
  previewColor: '#f2e3b3',
4437
4637
  preset: {
4438
4638
  maps: {
4439
- albedoMap: '/material/siding/lap_albedo_512.webp',
4639
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4640
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4641
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4642
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4440
4643
  },
4441
4644
  mapProperties: {
4442
4645
  color: '#f2e3b3',
@@ -4450,10 +4653,10 @@ export const MATERIAL_CATALOG = [
4450
4653
  normalScaleX: 1,
4451
4654
  normalScaleY: 1,
4452
4655
  emissiveIntensity: 1,
4453
- displacementScale: 0.02,
4656
+ displacementScale: 0,
4454
4657
  bumpScale: 1,
4455
4658
  transparent: false,
4456
- flipY: true,
4659
+ flipY: false,
4457
4660
  emissiveColor: '#000000',
4458
4661
  aoMapIntensity: 1,
4459
4662
  side: 0,
@@ -4465,13 +4668,17 @@ export const MATERIAL_CATALOG = [
4465
4668
  {
4466
4669
  id: 'siding-lap-nearblack',
4467
4670
  label: 'Lap siding — nearblack',
4468
- category: 'wood',
4671
+ category: 'siding',
4469
4672
  surfaces: ['wall', 'outdoor'],
4470
4673
  description: 'Exterior clapboard lap siding, painted nearblack',
4674
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4471
4675
  previewColor: '#232322',
4472
4676
  preset: {
4473
4677
  maps: {
4474
- albedoMap: '/material/siding/lap_albedo_512.webp',
4678
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4679
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4680
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4681
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4475
4682
  },
4476
4683
  mapProperties: {
4477
4684
  color: '#5c5c59',
@@ -4485,10 +4692,10 @@ export const MATERIAL_CATALOG = [
4485
4692
  normalScaleX: 1,
4486
4693
  normalScaleY: 1,
4487
4694
  emissiveIntensity: 1,
4488
- displacementScale: 0.02,
4695
+ displacementScale: 0,
4489
4696
  bumpScale: 1,
4490
4697
  transparent: false,
4491
- flipY: true,
4698
+ flipY: false,
4492
4699
  emissiveColor: '#000000',
4493
4700
  aoMapIntensity: 1,
4494
4701
  side: 0,
@@ -4500,13 +4707,17 @@ export const MATERIAL_CATALOG = [
4500
4707
  {
4501
4708
  id: 'siding-lap-clay',
4502
4709
  label: 'Lap siding — clay',
4503
- category: 'wood',
4710
+ category: 'siding',
4504
4711
  surfaces: ['wall', 'outdoor'],
4505
4712
  description: 'Exterior clapboard lap siding, painted clay',
4713
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4506
4714
  previewColor: '#8f4a2e',
4507
4715
  preset: {
4508
4716
  maps: {
4509
- albedoMap: '/material/siding/lap_albedo_512.webp',
4717
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4718
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4719
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4720
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4510
4721
  },
4511
4722
  mapProperties: {
4512
4723
  color: '#8f4a2e',
@@ -4520,10 +4731,10 @@ export const MATERIAL_CATALOG = [
4520
4731
  normalScaleX: 1,
4521
4732
  normalScaleY: 1,
4522
4733
  emissiveIntensity: 1,
4523
- displacementScale: 0.02,
4734
+ displacementScale: 0,
4524
4735
  bumpScale: 1,
4525
4736
  transparent: false,
4526
- flipY: true,
4737
+ flipY: false,
4527
4738
  emissiveColor: '#000000',
4528
4739
  aoMapIntensity: 1,
4529
4740
  side: 0,
@@ -4535,13 +4746,17 @@ export const MATERIAL_CATALOG = [
4535
4746
  {
4536
4747
  id: 'siding-batten-cream',
4537
4748
  label: 'Board & batten — cream',
4538
- category: 'wood',
4749
+ category: 'siding',
4539
4750
  surfaces: ['wall', 'outdoor'],
4540
4751
  description: 'Exterior board-and-batten siding, painted cream',
4752
+ previewThumbnailUrl: '/material/siding/batten_thumb.webp',
4541
4753
  previewColor: '#efe3cc',
4542
4754
  preset: {
4543
4755
  maps: {
4544
- albedoMap: '/material/siding/batten_albedo_512.webp',
4756
+ albedoMap: '/material/siding/batten_basecolor_512.ktx2',
4757
+ normalMap: '/material/siding/batten_normal_512.ktx2',
4758
+ roughnessMap: '/material/siding/batten_roughness_512.ktx2',
4759
+ aoMap: '/material/siding/batten_ao_512.ktx2',
4545
4760
  },
4546
4761
  mapProperties: {
4547
4762
  color: '#efe3cc',
@@ -4555,10 +4770,10 @@ export const MATERIAL_CATALOG = [
4555
4770
  normalScaleX: 1,
4556
4771
  normalScaleY: 1,
4557
4772
  emissiveIntensity: 1,
4558
- displacementScale: 0.02,
4773
+ displacementScale: 0,
4559
4774
  bumpScale: 1,
4560
4775
  transparent: false,
4561
- flipY: true,
4776
+ flipY: false,
4562
4777
  emissiveColor: '#000000',
4563
4778
  aoMapIntensity: 1,
4564
4779
  side: 0,
@@ -4570,13 +4785,17 @@ export const MATERIAL_CATALOG = [
4570
4785
  {
4571
4786
  id: 'siding-batten-sand',
4572
4787
  label: 'Board & batten — sand',
4573
- category: 'wood',
4788
+ category: 'siding',
4574
4789
  surfaces: ['wall', 'outdoor'],
4575
4790
  description: 'Exterior board-and-batten siding, painted sand',
4791
+ previewThumbnailUrl: '/material/siding/batten_thumb.webp',
4576
4792
  previewColor: '#ddccae',
4577
4793
  preset: {
4578
4794
  maps: {
4579
- albedoMap: '/material/siding/batten_albedo_512.webp',
4795
+ albedoMap: '/material/siding/batten_basecolor_512.ktx2',
4796
+ normalMap: '/material/siding/batten_normal_512.ktx2',
4797
+ roughnessMap: '/material/siding/batten_roughness_512.ktx2',
4798
+ aoMap: '/material/siding/batten_ao_512.ktx2',
4580
4799
  },
4581
4800
  mapProperties: {
4582
4801
  color: '#ddccae',
@@ -4590,10 +4809,10 @@ export const MATERIAL_CATALOG = [
4590
4809
  normalScaleX: 1,
4591
4810
  normalScaleY: 1,
4592
4811
  emissiveIntensity: 1,
4593
- displacementScale: 0.02,
4812
+ displacementScale: 0,
4594
4813
  bumpScale: 1,
4595
4814
  transparent: false,
4596
- flipY: true,
4815
+ flipY: false,
4597
4816
  emissiveColor: '#000000',
4598
4817
  aoMapIntensity: 1,
4599
4818
  side: 0,
@@ -4605,13 +4824,17 @@ export const MATERIAL_CATALOG = [
4605
4824
  {
4606
4825
  id: 'siding-batten-charcoal',
4607
4826
  label: 'Board & batten — charcoal',
4608
- category: 'wood',
4827
+ category: 'siding',
4609
4828
  surfaces: ['wall', 'outdoor'],
4610
4829
  description: 'Exterior board-and-batten siding, painted charcoal',
4830
+ previewThumbnailUrl: '/material/siding/batten_thumb.webp',
4611
4831
  previewColor: '#4e5257',
4612
4832
  preset: {
4613
4833
  maps: {
4614
- albedoMap: '/material/siding/batten_albedo_512.webp',
4834
+ albedoMap: '/material/siding/batten_basecolor_512.ktx2',
4835
+ normalMap: '/material/siding/batten_normal_512.ktx2',
4836
+ roughnessMap: '/material/siding/batten_roughness_512.ktx2',
4837
+ aoMap: '/material/siding/batten_ao_512.ktx2',
4615
4838
  },
4616
4839
  mapProperties: {
4617
4840
  color: '#4e5257',
@@ -4625,10 +4848,10 @@ export const MATERIAL_CATALOG = [
4625
4848
  normalScaleX: 1,
4626
4849
  normalScaleY: 1,
4627
4850
  emissiveIntensity: 1,
4628
- displacementScale: 0.02,
4851
+ displacementScale: 0,
4629
4852
  bumpScale: 1,
4630
4853
  transparent: false,
4631
- flipY: true,
4854
+ flipY: false,
4632
4855
  emissiveColor: '#000000',
4633
4856
  aoMapIntensity: 1,
4634
4857
  side: 0,
@@ -4640,13 +4863,17 @@ export const MATERIAL_CATALOG = [
4640
4863
  {
4641
4864
  id: 'siding-batten-olive',
4642
4865
  label: 'Board & batten — olive',
4643
- category: 'wood',
4866
+ category: 'siding',
4644
4867
  surfaces: ['wall', 'outdoor'],
4645
4868
  description: 'Exterior board-and-batten siding, painted olive',
4869
+ previewThumbnailUrl: '/material/siding/batten_thumb.webp',
4646
4870
  previewColor: '#8d9368',
4647
4871
  preset: {
4648
4872
  maps: {
4649
- albedoMap: '/material/siding/batten_albedo_512.webp',
4873
+ albedoMap: '/material/siding/batten_basecolor_512.ktx2',
4874
+ normalMap: '/material/siding/batten_normal_512.ktx2',
4875
+ roughnessMap: '/material/siding/batten_roughness_512.ktx2',
4876
+ aoMap: '/material/siding/batten_ao_512.ktx2',
4650
4877
  },
4651
4878
  mapProperties: {
4652
4879
  color: '#8d9368',
@@ -4660,10 +4887,166 @@ export const MATERIAL_CATALOG = [
4660
4887
  normalScaleX: 1,
4661
4888
  normalScaleY: 1,
4662
4889
  emissiveIntensity: 1,
4663
- displacementScale: 0.02,
4890
+ displacementScale: 0,
4664
4891
  bumpScale: 1,
4665
4892
  transparent: false,
4666
- flipY: true,
4893
+ flipY: false,
4894
+ emissiveColor: '#000000',
4895
+ aoMapIntensity: 1,
4896
+ side: 0,
4897
+ opacity: 1,
4898
+ lightMapIntensity: 1,
4899
+ },
4900
+ },
4901
+ },
4902
+ {
4903
+ id: 'siding-vinyl-white',
4904
+ label: 'Vinyl lap siding — white',
4905
+ category: 'siding',
4906
+ surfaces: ['wall', 'outdoor'],
4907
+ description: 'Exterior vinyl lap siding, white, with a low sheen',
4908
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4909
+ previewColor: '#ecebe6',
4910
+ preset: {
4911
+ maps: {
4912
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4913
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4914
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4915
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4916
+ },
4917
+ mapProperties: {
4918
+ color: '#ecebe6',
4919
+ roughness: 0.55,
4920
+ metalness: 0,
4921
+ repeatX: 1,
4922
+ repeatY: 1,
4923
+ rotation: 0,
4924
+ wrapS: 'Repeat',
4925
+ wrapT: 'Repeat',
4926
+ normalScaleX: 1,
4927
+ normalScaleY: 1,
4928
+ emissiveIntensity: 1,
4929
+ displacementScale: 0,
4930
+ bumpScale: 1,
4931
+ transparent: false,
4932
+ flipY: false,
4933
+ emissiveColor: '#000000',
4934
+ aoMapIntensity: 1,
4935
+ side: 0,
4936
+ opacity: 1,
4937
+ lightMapIntensity: 1,
4938
+ },
4939
+ },
4940
+ },
4941
+ {
4942
+ id: 'siding-vinyl-almond',
4943
+ label: 'Vinyl lap siding — almond',
4944
+ category: 'siding',
4945
+ surfaces: ['wall', 'outdoor'],
4946
+ description: 'Exterior vinyl lap siding, almond, with a low sheen',
4947
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4948
+ previewColor: '#ddd2bd',
4949
+ preset: {
4950
+ maps: {
4951
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4952
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4953
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4954
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4955
+ },
4956
+ mapProperties: {
4957
+ color: '#ddd2bd',
4958
+ roughness: 0.55,
4959
+ metalness: 0,
4960
+ repeatX: 1,
4961
+ repeatY: 1,
4962
+ rotation: 0,
4963
+ wrapS: 'Repeat',
4964
+ wrapT: 'Repeat',
4965
+ normalScaleX: 1,
4966
+ normalScaleY: 1,
4967
+ emissiveIntensity: 1,
4968
+ displacementScale: 0,
4969
+ bumpScale: 1,
4970
+ transparent: false,
4971
+ flipY: false,
4972
+ emissiveColor: '#000000',
4973
+ aoMapIntensity: 1,
4974
+ side: 0,
4975
+ opacity: 1,
4976
+ lightMapIntensity: 1,
4977
+ },
4978
+ },
4979
+ },
4980
+ {
4981
+ id: 'siding-vinyl-gray',
4982
+ label: 'Vinyl lap siding — gray',
4983
+ category: 'siding',
4984
+ surfaces: ['wall', 'outdoor'],
4985
+ description: 'Exterior vinyl lap siding, gray, with a low sheen',
4986
+ previewThumbnailUrl: '/material/siding/lap_thumb.webp',
4987
+ previewColor: '#a3a6a4',
4988
+ preset: {
4989
+ maps: {
4990
+ albedoMap: '/material/siding/lap_basecolor_512.ktx2',
4991
+ normalMap: '/material/siding/lap_normal_512.ktx2',
4992
+ roughnessMap: '/material/siding/lap_roughness_512.ktx2',
4993
+ aoMap: '/material/siding/lap_ao_512.ktx2',
4994
+ },
4995
+ mapProperties: {
4996
+ color: '#a3a6a4',
4997
+ roughness: 0.55,
4998
+ metalness: 0,
4999
+ repeatX: 1,
5000
+ repeatY: 1,
5001
+ rotation: 0,
5002
+ wrapS: 'Repeat',
5003
+ wrapT: 'Repeat',
5004
+ normalScaleX: 1,
5005
+ normalScaleY: 1,
5006
+ emissiveIntensity: 1,
5007
+ displacementScale: 0,
5008
+ bumpScale: 1,
5009
+ transparent: false,
5010
+ flipY: false,
5011
+ emissiveColor: '#000000',
5012
+ aoMapIntensity: 1,
5013
+ side: 0,
5014
+ opacity: 1,
5015
+ lightMapIntensity: 1,
5016
+ },
5017
+ },
5018
+ },
5019
+ {
5020
+ id: 'siding-vinyl-vertical-white',
5021
+ label: 'Vinyl vertical siding — white',
5022
+ category: 'siding',
5023
+ surfaces: ['wall', 'outdoor'],
5024
+ description: 'Exterior vinyl board-and-batten style vertical siding, white, with a low sheen',
5025
+ previewThumbnailUrl: '/material/siding/batten_thumb.webp',
5026
+ previewColor: '#ecebe6',
5027
+ preset: {
5028
+ maps: {
5029
+ albedoMap: '/material/siding/batten_basecolor_512.ktx2',
5030
+ normalMap: '/material/siding/batten_normal_512.ktx2',
5031
+ roughnessMap: '/material/siding/batten_roughness_512.ktx2',
5032
+ aoMap: '/material/siding/batten_ao_512.ktx2',
5033
+ },
5034
+ mapProperties: {
5035
+ color: '#ecebe6',
5036
+ roughness: 0.55,
5037
+ metalness: 0,
5038
+ repeatX: 1,
5039
+ repeatY: 1,
5040
+ rotation: 0,
5041
+ wrapS: 'Repeat',
5042
+ wrapT: 'Repeat',
5043
+ normalScaleX: 1,
5044
+ normalScaleY: 1,
5045
+ emissiveIntensity: 1,
5046
+ displacementScale: 0,
5047
+ bumpScale: 1,
5048
+ transparent: false,
5049
+ flipY: false,
4667
5050
  emissiveColor: '#000000',
4668
5051
  aoMapIntensity: 1,
4669
5052
  side: 0,
@@ -4722,6 +5105,22 @@ export function getMaterialsForCategory(category) {
4722
5105
  }
4723
5106
  return items;
4724
5107
  }
5108
+ const BROWSER_IMAGE = /\.(?:webp|png|jpe?g|avif|gif)(?:[?#]|$)/i;
5109
+ /**
5110
+ * A catalog material's swatch: its thumbnail or browser-readable albedo,
5111
+ * multiplied by the material's colour; else its flat preview colour.
5112
+ */
5113
+ export function getMaterialSwatch(item) {
5114
+ const tint = item.preset.mapProperties.color;
5115
+ const color = item.previewColor ?? tint ?? '#f3f4f6';
5116
+ const albedo = item.preset.maps.albedoMap;
5117
+ const imageUrl = item.previewThumbnailUrl ?? (albedo && BROWSER_IMAGE.test(albedo) ? albedo : null);
5118
+ if (imageUrl) {
5119
+ const tinted = !!tint && !/^#(?:fff|ffffff)$/i.test(tint);
5120
+ return { color: tinted ? tint : color, imageUrl, tinted };
5121
+ }
5122
+ return { color, imageUrl: null, tinted: false };
5123
+ }
4725
5124
  /** A community material's id (`mtl_…`, as the host's database mints them), well formed. */
4726
5125
  export function isCommunityMaterialId(id) {
4727
5126
  return /^mtl_[\w-]+$/.test(id);