@pascal-app/core 0.5.0 → 0.6.0

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 (99) hide show
  1. package/dist/events/bus.d.ts +39 -4
  2. package/dist/events/bus.d.ts.map +1 -1
  3. package/dist/events/bus.js +1 -1
  4. package/dist/hooks/scene-registry/scene-registry.d.ts +1 -0
  5. package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
  6. package/dist/hooks/scene-registry/scene-registry.js +1 -0
  7. package/dist/hooks/spatial-grid/spatial-grid.d.ts +2 -0
  8. package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
  9. package/dist/hooks/spatial-grid/spatial-grid.js +43 -20
  10. package/dist/index.d.ts +6 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +5 -1
  13. package/dist/lib/polygon-geometry.d.ts +3 -0
  14. package/dist/lib/polygon-geometry.d.ts.map +1 -0
  15. package/dist/lib/polygon-geometry.js +90 -0
  16. package/dist/lib/space-detection.d.ts +10 -17
  17. package/dist/lib/space-detection.d.ts.map +1 -1
  18. package/dist/lib/space-detection.js +666 -453
  19. package/dist/material-library.d.ts +18 -0
  20. package/dist/material-library.d.ts.map +1 -0
  21. package/dist/material-library.js +603 -0
  22. package/dist/schema/index.d.ts +10 -4
  23. package/dist/schema/index.d.ts.map +1 -1
  24. package/dist/schema/index.js +6 -4
  25. package/dist/schema/material.d.ts +109 -0
  26. package/dist/schema/material.d.ts.map +1 -1
  27. package/dist/schema/material.js +52 -0
  28. package/dist/schema/nodes/ceiling.d.ts +10 -0
  29. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  30. package/dist/schema/nodes/ceiling.js +6 -0
  31. package/dist/schema/nodes/door.d.ts +1 -0
  32. package/dist/schema/nodes/door.d.ts.map +1 -1
  33. package/dist/schema/nodes/fence.d.ts +85 -0
  34. package/dist/schema/nodes/fence.d.ts.map +1 -0
  35. package/dist/schema/nodes/fence.js +34 -0
  36. package/dist/schema/nodes/item.d.ts +2 -2
  37. package/dist/schema/nodes/level.d.ts +1 -1
  38. package/dist/schema/nodes/level.d.ts.map +1 -1
  39. package/dist/schema/nodes/level.js +2 -0
  40. package/dist/schema/nodes/roof-segment.d.ts +2 -0
  41. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  42. package/dist/schema/nodes/roof-segment.js +1 -0
  43. package/dist/schema/nodes/roof.d.ts +108 -0
  44. package/dist/schema/nodes/roof.d.ts.map +1 -1
  45. package/dist/schema/nodes/roof.js +58 -2
  46. package/dist/schema/nodes/site.d.ts +1 -1
  47. package/dist/schema/nodes/slab.d.ts +10 -0
  48. package/dist/schema/nodes/slab.d.ts.map +1 -1
  49. package/dist/schema/nodes/slab.js +7 -0
  50. package/dist/schema/nodes/stair-segment.d.ts +2 -0
  51. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  52. package/dist/schema/nodes/stair-segment.js +1 -0
  53. package/dist/schema/nodes/stair.d.ts +164 -0
  54. package/dist/schema/nodes/stair.d.ts.map +1 -1
  55. package/dist/schema/nodes/stair.js +106 -5
  56. package/dist/schema/nodes/surface-hole-metadata.d.ts +10 -0
  57. package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -0
  58. package/dist/schema/nodes/surface-hole-metadata.js +5 -0
  59. package/dist/schema/nodes/wall.d.ts +87 -1
  60. package/dist/schema/nodes/wall.d.ts.map +1 -1
  61. package/dist/schema/nodes/wall.js +45 -4
  62. package/dist/schema/nodes/window.d.ts +1 -0
  63. package/dist/schema/nodes/window.d.ts.map +1 -1
  64. package/dist/schema/types.d.ts +406 -4
  65. package/dist/schema/types.d.ts.map +1 -1
  66. package/dist/schema/types.js +2 -0
  67. package/dist/store/actions/node-actions.d.ts +1 -1
  68. package/dist/store/actions/node-actions.d.ts.map +1 -1
  69. package/dist/store/actions/node-actions.js +175 -0
  70. package/dist/store/history-control.d.ts +14 -0
  71. package/dist/store/history-control.d.ts.map +1 -0
  72. package/dist/store/history-control.js +22 -0
  73. package/dist/store/use-scene.d.ts.map +1 -1
  74. package/dist/store/use-scene.js +249 -3
  75. package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -1
  76. package/dist/systems/ceiling/ceiling-system.js +7 -0
  77. package/dist/systems/fence/fence-system.d.ts +2 -0
  78. package/dist/systems/fence/fence-system.d.ts.map +1 -0
  79. package/dist/systems/fence/fence-system.js +187 -0
  80. package/dist/systems/roof/roof-system.d.ts.map +1 -1
  81. package/dist/systems/roof/roof-system.js +31 -1
  82. package/dist/systems/slab/slab-system.d.ts.map +1 -1
  83. package/dist/systems/slab/slab-system.js +45 -8
  84. package/dist/systems/stair/stair-opening-sync.d.ts +6 -0
  85. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -0
  86. package/dist/systems/stair/stair-opening-sync.js +515 -0
  87. package/dist/systems/stair/stair-system.d.ts.map +1 -1
  88. package/dist/systems/stair/stair-system.js +432 -10
  89. package/dist/systems/wall/wall-curve.d.ts +43 -0
  90. package/dist/systems/wall/wall-curve.d.ts.map +1 -0
  91. package/dist/systems/wall/wall-curve.js +176 -0
  92. package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
  93. package/dist/systems/wall/wall-footprint.js +16 -2
  94. package/dist/systems/wall/wall-mitering.d.ts +7 -0
  95. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  96. package/dist/systems/wall/wall-mitering.js +76 -3
  97. package/dist/systems/wall/wall-system.d.ts.map +1 -1
  98. package/dist/systems/wall/wall-system.js +202 -2
  99. package/package.json +3 -3
@@ -2,17 +2,26 @@ import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
3
  import { BaseNode, nodeType, objectId } from '../base';
4
4
  import { MaterialSchema } from '../material';
5
+ import { DoorNode } from './door';
5
6
  import { ItemNode } from './item';
6
- // import { DoorNode } from "./door";
7
- // import { ItemNode } from "./item";
8
- // import { WindowNode } from "./window";
7
+ import { WindowNode } from './window';
9
8
  export const WallNode = BaseNode.extend({
10
9
  id: objectId('wall'),
11
10
  type: nodeType('wall'),
12
- children: z.array(ItemNode.shape.id).default([]),
11
+ children: z
12
+ .array(z.union([ItemNode.shape.id, DoorNode.shape.id, WindowNode.shape.id]))
13
+ .default([]),
14
+ // Legacy single-material wall finish. Read for backward compatibility only.
13
15
  material: MaterialSchema.optional(),
16
+ // Legacy single-material wall finish preset. Read for backward compatibility only.
17
+ materialPreset: z.string().optional(),
18
+ interiorMaterial: MaterialSchema.optional(),
19
+ interiorMaterialPreset: z.string().optional(),
20
+ exteriorMaterial: MaterialSchema.optional(),
21
+ exteriorMaterialPreset: z.string().optional(),
14
22
  thickness: z.number().optional(),
15
23
  height: z.number().optional(),
24
+ curveOffset: z.number().optional(),
16
25
  // e.g., start/end points for path
17
26
  start: z.tuple([z.number(), z.number()]),
18
27
  end: z.tuple([z.number(), z.number()]),
@@ -23,9 +32,41 @@ export const WallNode = BaseNode.extend({
23
32
  Wall node - used to represent a wall in the building
24
33
  - thickness: thickness in meters
25
34
  - height: height in meters
35
+ - curveOffset: midpoint sagitta offset used to bend the wall into an arc
26
36
  - start: start point of the wall in level coordinate system
27
37
  - end: end point of the wall in level coordinate system
28
38
  - size: size of the wall in grid units
29
39
  - frontSide: whether the front side faces interior, exterior, or unknown
30
40
  - backSide: whether the back side faces interior, exterior, or unknown
31
41
  `);
42
+ function getConfiguredWallSurfaceMaterial(wall, side) {
43
+ if (side === 'interior') {
44
+ return {
45
+ material: wall.interiorMaterial,
46
+ materialPreset: wall.interiorMaterialPreset,
47
+ };
48
+ }
49
+ return {
50
+ material: wall.exteriorMaterial,
51
+ materialPreset: wall.exteriorMaterialPreset,
52
+ };
53
+ }
54
+ function hasSurfaceMaterial(spec) {
55
+ return spec.material !== undefined || typeof spec.materialPreset === 'string';
56
+ }
57
+ export function getEffectiveWallSurfaceMaterial(wall, side) {
58
+ const configured = getConfiguredWallSurfaceMaterial(wall, side);
59
+ if (hasSurfaceMaterial(configured)) {
60
+ return configured;
61
+ }
62
+ return {
63
+ material: wall.material,
64
+ materialPreset: wall.materialPreset,
65
+ };
66
+ }
67
+ export function getWallSurfaceMaterialSignature(spec) {
68
+ return JSON.stringify({
69
+ material: spec.material ?? null,
70
+ materialPreset: spec.materialPreset ?? null,
71
+ });
72
+ }
@@ -18,6 +18,7 @@ export declare const WindowNode: z.ZodObject<{
18
18
  id: z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>;
19
19
  type: z.ZodDefault<z.ZodLiteral<"window">>;
20
20
  material: z.ZodOptional<z.ZodObject<{
21
+ id: z.ZodOptional<z.ZodString>;
21
22
  preset: z.ZodOptional<z.ZodEnum<{
22
23
  custom: "custom";
23
24
  white: "white";
@@ -1 +1 @@
1
- {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/window.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwCrB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA"}
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/window.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwCrB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAA"}
@@ -80,8 +80,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
80
80
  dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
81
81
  attachTo: z.ZodOptional<z.ZodEnum<{
82
82
  wall: "wall";
83
- "wall-side": "wall-side";
84
83
  ceiling: "ceiling";
84
+ "wall-side": "wall-side";
85
85
  }>>;
86
86
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
87
87
  offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -175,7 +175,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
175
175
  metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
176
176
  id: z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>;
177
177
  type: z.ZodDefault<z.ZodLiteral<"level">>;
178
- children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`zone_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`slab_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`ceiling_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`roof_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`stair_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`scan_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`guide_${string}`>>]>>>;
178
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`fence_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`zone_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`slab_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`ceiling_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`roof_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`stair_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`scan_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`guide_${string}`>>]>>>;
179
179
  level: z.ZodDefault<z.ZodNumber>;
180
180
  }, z.core.$strip>, z.ZodObject<{
181
181
  object: z.ZodDefault<z.ZodLiteral<"node">>;
@@ -195,8 +195,42 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
195
195
  metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
196
196
  id: z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>;
197
197
  type: z.ZodDefault<z.ZodLiteral<"wall">>;
198
- children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
198
+ children: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`door_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>]>>>;
199
199
  material: z.ZodOptional<z.ZodObject<{
200
+ id: z.ZodOptional<z.ZodString>;
201
+ preset: z.ZodOptional<z.ZodEnum<{
202
+ custom: "custom";
203
+ white: "white";
204
+ brick: "brick";
205
+ concrete: "concrete";
206
+ wood: "wood";
207
+ glass: "glass";
208
+ metal: "metal";
209
+ plaster: "plaster";
210
+ tile: "tile";
211
+ marble: "marble";
212
+ }>>;
213
+ properties: z.ZodOptional<z.ZodObject<{
214
+ color: z.ZodDefault<z.ZodString>;
215
+ roughness: z.ZodDefault<z.ZodNumber>;
216
+ metalness: z.ZodDefault<z.ZodNumber>;
217
+ opacity: z.ZodDefault<z.ZodNumber>;
218
+ transparent: z.ZodDefault<z.ZodBoolean>;
219
+ side: z.ZodDefault<z.ZodEnum<{
220
+ front: "front";
221
+ back: "back";
222
+ double: "double";
223
+ }>>;
224
+ }, z.core.$strip>>;
225
+ texture: z.ZodOptional<z.ZodObject<{
226
+ url: z.ZodString;
227
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
228
+ scale: z.ZodOptional<z.ZodNumber>;
229
+ }, z.core.$strip>>;
230
+ }, z.core.$strip>>;
231
+ materialPreset: z.ZodOptional<z.ZodString>;
232
+ interiorMaterial: z.ZodOptional<z.ZodObject<{
233
+ id: z.ZodOptional<z.ZodString>;
200
234
  preset: z.ZodOptional<z.ZodEnum<{
201
235
  custom: "custom";
202
236
  white: "white";
@@ -227,8 +261,43 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
227
261
  scale: z.ZodOptional<z.ZodNumber>;
228
262
  }, z.core.$strip>>;
229
263
  }, z.core.$strip>>;
264
+ interiorMaterialPreset: z.ZodOptional<z.ZodString>;
265
+ exteriorMaterial: z.ZodOptional<z.ZodObject<{
266
+ id: z.ZodOptional<z.ZodString>;
267
+ preset: z.ZodOptional<z.ZodEnum<{
268
+ custom: "custom";
269
+ white: "white";
270
+ brick: "brick";
271
+ concrete: "concrete";
272
+ wood: "wood";
273
+ glass: "glass";
274
+ metal: "metal";
275
+ plaster: "plaster";
276
+ tile: "tile";
277
+ marble: "marble";
278
+ }>>;
279
+ properties: z.ZodOptional<z.ZodObject<{
280
+ color: z.ZodDefault<z.ZodString>;
281
+ roughness: z.ZodDefault<z.ZodNumber>;
282
+ metalness: z.ZodDefault<z.ZodNumber>;
283
+ opacity: z.ZodDefault<z.ZodNumber>;
284
+ transparent: z.ZodDefault<z.ZodBoolean>;
285
+ side: z.ZodDefault<z.ZodEnum<{
286
+ front: "front";
287
+ back: "back";
288
+ double: "double";
289
+ }>>;
290
+ }, z.core.$strip>>;
291
+ texture: z.ZodOptional<z.ZodObject<{
292
+ url: z.ZodString;
293
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
294
+ scale: z.ZodOptional<z.ZodNumber>;
295
+ }, z.core.$strip>>;
296
+ }, z.core.$strip>>;
297
+ exteriorMaterialPreset: z.ZodOptional<z.ZodString>;
230
298
  thickness: z.ZodOptional<z.ZodNumber>;
231
299
  height: z.ZodOptional<z.ZodNumber>;
300
+ curveOffset: z.ZodOptional<z.ZodNumber>;
232
301
  start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
233
302
  end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
234
303
  frontSide: z.ZodDefault<z.ZodEnum<{
@@ -241,6 +310,78 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
241
310
  interior: "interior";
242
311
  exterior: "exterior";
243
312
  }>>;
313
+ }, z.core.$strip>, z.ZodObject<{
314
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
315
+ name: z.ZodOptional<z.ZodString>;
316
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
317
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
318
+ camera: z.ZodOptional<z.ZodObject<{
319
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
320
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
321
+ mode: z.ZodDefault<z.ZodEnum<{
322
+ perspective: "perspective";
323
+ orthographic: "orthographic";
324
+ }>>;
325
+ fov: z.ZodOptional<z.ZodNumber>;
326
+ zoom: z.ZodOptional<z.ZodNumber>;
327
+ }, z.core.$strip>>;
328
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
329
+ id: z.ZodDefault<z.ZodTemplateLiteral<`fence_${string}`>>;
330
+ type: z.ZodDefault<z.ZodLiteral<"fence">>;
331
+ material: z.ZodOptional<z.ZodObject<{
332
+ id: z.ZodOptional<z.ZodString>;
333
+ preset: z.ZodOptional<z.ZodEnum<{
334
+ custom: "custom";
335
+ white: "white";
336
+ brick: "brick";
337
+ concrete: "concrete";
338
+ wood: "wood";
339
+ glass: "glass";
340
+ metal: "metal";
341
+ plaster: "plaster";
342
+ tile: "tile";
343
+ marble: "marble";
344
+ }>>;
345
+ properties: z.ZodOptional<z.ZodObject<{
346
+ color: z.ZodDefault<z.ZodString>;
347
+ roughness: z.ZodDefault<z.ZodNumber>;
348
+ metalness: z.ZodDefault<z.ZodNumber>;
349
+ opacity: z.ZodDefault<z.ZodNumber>;
350
+ transparent: z.ZodDefault<z.ZodBoolean>;
351
+ side: z.ZodDefault<z.ZodEnum<{
352
+ front: "front";
353
+ back: "back";
354
+ double: "double";
355
+ }>>;
356
+ }, z.core.$strip>>;
357
+ texture: z.ZodOptional<z.ZodObject<{
358
+ url: z.ZodString;
359
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
360
+ scale: z.ZodOptional<z.ZodNumber>;
361
+ }, z.core.$strip>>;
362
+ }, z.core.$strip>>;
363
+ materialPreset: z.ZodOptional<z.ZodString>;
364
+ start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
365
+ end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
366
+ curveOffset: z.ZodOptional<z.ZodNumber>;
367
+ height: z.ZodDefault<z.ZodNumber>;
368
+ thickness: z.ZodDefault<z.ZodNumber>;
369
+ baseHeight: z.ZodDefault<z.ZodNumber>;
370
+ postSpacing: z.ZodDefault<z.ZodNumber>;
371
+ postSize: z.ZodDefault<z.ZodNumber>;
372
+ topRailHeight: z.ZodDefault<z.ZodNumber>;
373
+ groundClearance: z.ZodDefault<z.ZodNumber>;
374
+ edgeInset: z.ZodDefault<z.ZodNumber>;
375
+ baseStyle: z.ZodDefault<z.ZodEnum<{
376
+ floating: "floating";
377
+ grounded: "grounded";
378
+ }>>;
379
+ color: z.ZodDefault<z.ZodString>;
380
+ style: z.ZodDefault<z.ZodEnum<{
381
+ slat: "slat";
382
+ rail: "rail";
383
+ privacy: "privacy";
384
+ }>>;
244
385
  }, z.core.$strip>, z.ZodObject<{
245
386
  object: z.ZodDefault<z.ZodLiteral<"node">>;
246
387
  name: z.ZodOptional<z.ZodString>;
@@ -279,8 +420,8 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
279
420
  dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
280
421
  attachTo: z.ZodOptional<z.ZodEnum<{
281
422
  wall: "wall";
282
- "wall-side": "wall-side";
283
423
  ceiling: "ceiling";
424
+ "wall-side": "wall-side";
284
425
  }>>;
285
426
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
286
427
  offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
@@ -373,6 +514,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
373
514
  id: z.ZodDefault<z.ZodTemplateLiteral<`slab_${string}`>>;
374
515
  type: z.ZodDefault<z.ZodLiteral<"slab">>;
375
516
  material: z.ZodOptional<z.ZodObject<{
517
+ id: z.ZodOptional<z.ZodString>;
376
518
  preset: z.ZodOptional<z.ZodEnum<{
377
519
  custom: "custom";
378
520
  white: "white";
@@ -403,9 +545,18 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
403
545
  scale: z.ZodOptional<z.ZodNumber>;
404
546
  }, z.core.$strip>>;
405
547
  }, z.core.$strip>>;
548
+ materialPreset: z.ZodOptional<z.ZodString>;
406
549
  polygon: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
407
550
  holes: z.ZodDefault<z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>>;
551
+ holeMetadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
552
+ source: z.ZodDefault<z.ZodEnum<{
553
+ stair: "stair";
554
+ manual: "manual";
555
+ }>>;
556
+ stairId: z.ZodOptional<z.ZodString>;
557
+ }, z.core.$strip>>>;
408
558
  elevation: z.ZodDefault<z.ZodNumber>;
559
+ autoFromWalls: z.ZodDefault<z.ZodBoolean>;
409
560
  }, z.core.$strip>, z.ZodObject<{
410
561
  object: z.ZodDefault<z.ZodLiteral<"node">>;
411
562
  name: z.ZodOptional<z.ZodString>;
@@ -426,6 +577,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
426
577
  type: z.ZodDefault<z.ZodLiteral<"ceiling">>;
427
578
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
428
579
  material: z.ZodOptional<z.ZodObject<{
580
+ id: z.ZodOptional<z.ZodString>;
429
581
  preset: z.ZodOptional<z.ZodEnum<{
430
582
  custom: "custom";
431
583
  white: "white";
@@ -456,9 +608,18 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
456
608
  scale: z.ZodOptional<z.ZodNumber>;
457
609
  }, z.core.$strip>>;
458
610
  }, z.core.$strip>>;
611
+ materialPreset: z.ZodOptional<z.ZodString>;
459
612
  polygon: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
460
613
  holes: z.ZodDefault<z.ZodArray<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>>;
614
+ holeMetadata: z.ZodDefault<z.ZodArray<z.ZodObject<{
615
+ source: z.ZodDefault<z.ZodEnum<{
616
+ stair: "stair";
617
+ manual: "manual";
618
+ }>>;
619
+ stairId: z.ZodOptional<z.ZodString>;
620
+ }, z.core.$strip>>>;
461
621
  height: z.ZodDefault<z.ZodNumber>;
622
+ autoFromWalls: z.ZodDefault<z.ZodBoolean>;
462
623
  }, z.core.$strip>, z.ZodObject<{
463
624
  object: z.ZodDefault<z.ZodLiteral<"node">>;
464
625
  name: z.ZodOptional<z.ZodString>;
@@ -478,6 +639,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
478
639
  id: z.ZodDefault<z.ZodTemplateLiteral<`roof_${string}`>>;
479
640
  type: z.ZodDefault<z.ZodLiteral<"roof">>;
480
641
  material: z.ZodOptional<z.ZodObject<{
642
+ id: z.ZodOptional<z.ZodString>;
481
643
  preset: z.ZodOptional<z.ZodEnum<{
482
644
  custom: "custom";
483
645
  white: "white";
@@ -508,6 +670,106 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
508
670
  scale: z.ZodOptional<z.ZodNumber>;
509
671
  }, z.core.$strip>>;
510
672
  }, z.core.$strip>>;
673
+ materialPreset: z.ZodOptional<z.ZodString>;
674
+ topMaterial: z.ZodOptional<z.ZodObject<{
675
+ id: z.ZodOptional<z.ZodString>;
676
+ preset: z.ZodOptional<z.ZodEnum<{
677
+ custom: "custom";
678
+ white: "white";
679
+ brick: "brick";
680
+ concrete: "concrete";
681
+ wood: "wood";
682
+ glass: "glass";
683
+ metal: "metal";
684
+ plaster: "plaster";
685
+ tile: "tile";
686
+ marble: "marble";
687
+ }>>;
688
+ properties: z.ZodOptional<z.ZodObject<{
689
+ color: z.ZodDefault<z.ZodString>;
690
+ roughness: z.ZodDefault<z.ZodNumber>;
691
+ metalness: z.ZodDefault<z.ZodNumber>;
692
+ opacity: z.ZodDefault<z.ZodNumber>;
693
+ transparent: z.ZodDefault<z.ZodBoolean>;
694
+ side: z.ZodDefault<z.ZodEnum<{
695
+ front: "front";
696
+ back: "back";
697
+ double: "double";
698
+ }>>;
699
+ }, z.core.$strip>>;
700
+ texture: z.ZodOptional<z.ZodObject<{
701
+ url: z.ZodString;
702
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
703
+ scale: z.ZodOptional<z.ZodNumber>;
704
+ }, z.core.$strip>>;
705
+ }, z.core.$strip>>;
706
+ topMaterialPreset: z.ZodOptional<z.ZodString>;
707
+ edgeMaterial: z.ZodOptional<z.ZodObject<{
708
+ id: z.ZodOptional<z.ZodString>;
709
+ preset: z.ZodOptional<z.ZodEnum<{
710
+ custom: "custom";
711
+ white: "white";
712
+ brick: "brick";
713
+ concrete: "concrete";
714
+ wood: "wood";
715
+ glass: "glass";
716
+ metal: "metal";
717
+ plaster: "plaster";
718
+ tile: "tile";
719
+ marble: "marble";
720
+ }>>;
721
+ properties: z.ZodOptional<z.ZodObject<{
722
+ color: z.ZodDefault<z.ZodString>;
723
+ roughness: z.ZodDefault<z.ZodNumber>;
724
+ metalness: z.ZodDefault<z.ZodNumber>;
725
+ opacity: z.ZodDefault<z.ZodNumber>;
726
+ transparent: z.ZodDefault<z.ZodBoolean>;
727
+ side: z.ZodDefault<z.ZodEnum<{
728
+ front: "front";
729
+ back: "back";
730
+ double: "double";
731
+ }>>;
732
+ }, z.core.$strip>>;
733
+ texture: z.ZodOptional<z.ZodObject<{
734
+ url: z.ZodString;
735
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
736
+ scale: z.ZodOptional<z.ZodNumber>;
737
+ }, z.core.$strip>>;
738
+ }, z.core.$strip>>;
739
+ edgeMaterialPreset: z.ZodOptional<z.ZodString>;
740
+ wallMaterial: z.ZodOptional<z.ZodObject<{
741
+ id: z.ZodOptional<z.ZodString>;
742
+ preset: z.ZodOptional<z.ZodEnum<{
743
+ custom: "custom";
744
+ white: "white";
745
+ brick: "brick";
746
+ concrete: "concrete";
747
+ wood: "wood";
748
+ glass: "glass";
749
+ metal: "metal";
750
+ plaster: "plaster";
751
+ tile: "tile";
752
+ marble: "marble";
753
+ }>>;
754
+ properties: z.ZodOptional<z.ZodObject<{
755
+ color: z.ZodDefault<z.ZodString>;
756
+ roughness: z.ZodDefault<z.ZodNumber>;
757
+ metalness: z.ZodDefault<z.ZodNumber>;
758
+ opacity: z.ZodDefault<z.ZodNumber>;
759
+ transparent: z.ZodDefault<z.ZodBoolean>;
760
+ side: z.ZodDefault<z.ZodEnum<{
761
+ front: "front";
762
+ back: "back";
763
+ double: "double";
764
+ }>>;
765
+ }, z.core.$strip>>;
766
+ texture: z.ZodOptional<z.ZodObject<{
767
+ url: z.ZodString;
768
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
769
+ scale: z.ZodOptional<z.ZodNumber>;
770
+ }, z.core.$strip>>;
771
+ }, z.core.$strip>>;
772
+ wallMaterialPreset: z.ZodOptional<z.ZodString>;
511
773
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
512
774
  rotation: z.ZodDefault<z.ZodNumber>;
513
775
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>>>;
@@ -530,6 +792,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
530
792
  id: z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>;
531
793
  type: z.ZodDefault<z.ZodLiteral<"roof-segment">>;
532
794
  material: z.ZodOptional<z.ZodObject<{
795
+ id: z.ZodOptional<z.ZodString>;
533
796
  preset: z.ZodOptional<z.ZodEnum<{
534
797
  custom: "custom";
535
798
  white: "white";
@@ -560,6 +823,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
560
823
  scale: z.ZodOptional<z.ZodNumber>;
561
824
  }, z.core.$strip>>;
562
825
  }, z.core.$strip>>;
826
+ materialPreset: z.ZodOptional<z.ZodString>;
563
827
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
564
828
  rotation: z.ZodDefault<z.ZodNumber>;
565
829
  roofType: z.ZodDefault<z.ZodEnum<{
@@ -598,6 +862,106 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
598
862
  id: z.ZodDefault<z.ZodTemplateLiteral<`stair_${string}`>>;
599
863
  type: z.ZodDefault<z.ZodLiteral<"stair">>;
600
864
  material: z.ZodOptional<z.ZodObject<{
865
+ id: z.ZodOptional<z.ZodString>;
866
+ preset: z.ZodOptional<z.ZodEnum<{
867
+ custom: "custom";
868
+ white: "white";
869
+ brick: "brick";
870
+ concrete: "concrete";
871
+ wood: "wood";
872
+ glass: "glass";
873
+ metal: "metal";
874
+ plaster: "plaster";
875
+ tile: "tile";
876
+ marble: "marble";
877
+ }>>;
878
+ properties: z.ZodOptional<z.ZodObject<{
879
+ color: z.ZodDefault<z.ZodString>;
880
+ roughness: z.ZodDefault<z.ZodNumber>;
881
+ metalness: z.ZodDefault<z.ZodNumber>;
882
+ opacity: z.ZodDefault<z.ZodNumber>;
883
+ transparent: z.ZodDefault<z.ZodBoolean>;
884
+ side: z.ZodDefault<z.ZodEnum<{
885
+ front: "front";
886
+ back: "back";
887
+ double: "double";
888
+ }>>;
889
+ }, z.core.$strip>>;
890
+ texture: z.ZodOptional<z.ZodObject<{
891
+ url: z.ZodString;
892
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
893
+ scale: z.ZodOptional<z.ZodNumber>;
894
+ }, z.core.$strip>>;
895
+ }, z.core.$strip>>;
896
+ materialPreset: z.ZodOptional<z.ZodString>;
897
+ railingMaterial: z.ZodOptional<z.ZodObject<{
898
+ id: z.ZodOptional<z.ZodString>;
899
+ preset: z.ZodOptional<z.ZodEnum<{
900
+ custom: "custom";
901
+ white: "white";
902
+ brick: "brick";
903
+ concrete: "concrete";
904
+ wood: "wood";
905
+ glass: "glass";
906
+ metal: "metal";
907
+ plaster: "plaster";
908
+ tile: "tile";
909
+ marble: "marble";
910
+ }>>;
911
+ properties: z.ZodOptional<z.ZodObject<{
912
+ color: z.ZodDefault<z.ZodString>;
913
+ roughness: z.ZodDefault<z.ZodNumber>;
914
+ metalness: z.ZodDefault<z.ZodNumber>;
915
+ opacity: z.ZodDefault<z.ZodNumber>;
916
+ transparent: z.ZodDefault<z.ZodBoolean>;
917
+ side: z.ZodDefault<z.ZodEnum<{
918
+ front: "front";
919
+ back: "back";
920
+ double: "double";
921
+ }>>;
922
+ }, z.core.$strip>>;
923
+ texture: z.ZodOptional<z.ZodObject<{
924
+ url: z.ZodString;
925
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
926
+ scale: z.ZodOptional<z.ZodNumber>;
927
+ }, z.core.$strip>>;
928
+ }, z.core.$strip>>;
929
+ railingMaterialPreset: z.ZodOptional<z.ZodString>;
930
+ treadMaterial: z.ZodOptional<z.ZodObject<{
931
+ id: z.ZodOptional<z.ZodString>;
932
+ preset: z.ZodOptional<z.ZodEnum<{
933
+ custom: "custom";
934
+ white: "white";
935
+ brick: "brick";
936
+ concrete: "concrete";
937
+ wood: "wood";
938
+ glass: "glass";
939
+ metal: "metal";
940
+ plaster: "plaster";
941
+ tile: "tile";
942
+ marble: "marble";
943
+ }>>;
944
+ properties: z.ZodOptional<z.ZodObject<{
945
+ color: z.ZodDefault<z.ZodString>;
946
+ roughness: z.ZodDefault<z.ZodNumber>;
947
+ metalness: z.ZodDefault<z.ZodNumber>;
948
+ opacity: z.ZodDefault<z.ZodNumber>;
949
+ transparent: z.ZodDefault<z.ZodBoolean>;
950
+ side: z.ZodDefault<z.ZodEnum<{
951
+ front: "front";
952
+ back: "back";
953
+ double: "double";
954
+ }>>;
955
+ }, z.core.$strip>>;
956
+ texture: z.ZodOptional<z.ZodObject<{
957
+ url: z.ZodString;
958
+ repeat: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
959
+ scale: z.ZodOptional<z.ZodNumber>;
960
+ }, z.core.$strip>>;
961
+ }, z.core.$strip>>;
962
+ treadMaterialPreset: z.ZodOptional<z.ZodString>;
963
+ sideMaterial: z.ZodOptional<z.ZodObject<{
964
+ id: z.ZodOptional<z.ZodString>;
601
965
  preset: z.ZodOptional<z.ZodEnum<{
602
966
  custom: "custom";
603
967
  white: "white";
@@ -628,8 +992,42 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
628
992
  scale: z.ZodOptional<z.ZodNumber>;
629
993
  }, z.core.$strip>>;
630
994
  }, z.core.$strip>>;
995
+ sideMaterialPreset: z.ZodOptional<z.ZodString>;
631
996
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
632
997
  rotation: z.ZodDefault<z.ZodNumber>;
998
+ stairType: z.ZodDefault<z.ZodEnum<{
999
+ straight: "straight";
1000
+ curved: "curved";
1001
+ spiral: "spiral";
1002
+ }>>;
1003
+ fromLevelId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1004
+ toLevelId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
1005
+ slabOpeningMode: z.ZodDefault<z.ZodEnum<{
1006
+ none: "none";
1007
+ destination: "destination";
1008
+ }>>;
1009
+ openingOffset: z.ZodDefault<z.ZodNumber>;
1010
+ width: z.ZodDefault<z.ZodNumber>;
1011
+ totalRise: z.ZodDefault<z.ZodNumber>;
1012
+ stepCount: z.ZodDefault<z.ZodNumber>;
1013
+ thickness: z.ZodDefault<z.ZodNumber>;
1014
+ fillToFloor: z.ZodDefault<z.ZodBoolean>;
1015
+ innerRadius: z.ZodDefault<z.ZodNumber>;
1016
+ sweepAngle: z.ZodDefault<z.ZodNumber>;
1017
+ topLandingMode: z.ZodDefault<z.ZodEnum<{
1018
+ none: "none";
1019
+ integrated: "integrated";
1020
+ }>>;
1021
+ topLandingDepth: z.ZodDefault<z.ZodNumber>;
1022
+ showCenterColumn: z.ZodDefault<z.ZodBoolean>;
1023
+ showStepSupports: z.ZodDefault<z.ZodBoolean>;
1024
+ railingMode: z.ZodDefault<z.ZodEnum<{
1025
+ left: "left";
1026
+ right: "right";
1027
+ none: "none";
1028
+ both: "both";
1029
+ }>>;
1030
+ railingHeight: z.ZodDefault<z.ZodNumber>;
633
1031
  children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`sseg_${string}`>>>>;
634
1032
  }, z.core.$strip>, z.ZodObject<{
635
1033
  object: z.ZodDefault<z.ZodLiteral<"node">>;
@@ -650,6 +1048,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
650
1048
  id: z.ZodDefault<z.ZodTemplateLiteral<`sseg_${string}`>>;
651
1049
  type: z.ZodDefault<z.ZodLiteral<"stair-segment">>;
652
1050
  material: z.ZodOptional<z.ZodObject<{
1051
+ id: z.ZodOptional<z.ZodString>;
653
1052
  preset: z.ZodOptional<z.ZodEnum<{
654
1053
  custom: "custom";
655
1054
  white: "white";
@@ -680,6 +1079,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
680
1079
  scale: z.ZodOptional<z.ZodNumber>;
681
1080
  }, z.core.$strip>>;
682
1081
  }, z.core.$strip>>;
1082
+ materialPreset: z.ZodOptional<z.ZodString>;
683
1083
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
684
1084
  rotation: z.ZodDefault<z.ZodNumber>;
685
1085
  segmentType: z.ZodDefault<z.ZodEnum<{
@@ -762,6 +1162,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
762
1162
  id: z.ZodDefault<z.ZodTemplateLiteral<`window_${string}`>>;
763
1163
  type: z.ZodDefault<z.ZodLiteral<"window">>;
764
1164
  material: z.ZodOptional<z.ZodObject<{
1165
+ id: z.ZodOptional<z.ZodString>;
765
1166
  preset: z.ZodOptional<z.ZodEnum<{
766
1167
  custom: "custom";
767
1168
  white: "white";
@@ -829,6 +1230,7 @@ export declare const AnyNode: z.ZodDiscriminatedUnion<[z.ZodObject<{
829
1230
  id: z.ZodDefault<z.ZodTemplateLiteral<`door_${string}`>>;
830
1231
  type: z.ZodDefault<z.ZodLiteral<"door">>;
831
1232
  material: z.ZodOptional<z.ZodObject<{
1233
+ id: z.ZodOptional<z.ZodString>;
832
1234
  preset: z.ZodOptional<z.ZodEnum<{
833
1235
  custom: "custom";
834
1236
  white: "white";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAkBnB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAiBlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAA;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema/types.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AAmBnB,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAkBlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAA;AAC7C,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AACzC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA"}
@@ -2,6 +2,7 @@ import z from 'zod';
2
2
  import { BuildingNode } from './nodes/building';
3
3
  import { CeilingNode } from './nodes/ceiling';
4
4
  import { DoorNode } from './nodes/door';
5
+ import { FenceNode } from './nodes/fence';
5
6
  import { GuideNode } from './nodes/guide';
6
7
  import { ItemNode } from './nodes/item';
7
8
  import { LevelNode } from './nodes/level';
@@ -20,6 +21,7 @@ export const AnyNode = z.discriminatedUnion('type', [
20
21
  BuildingNode,
21
22
  LevelNode,
22
23
  WallNode,
24
+ FenceNode,
23
25
  ItemNode,
24
26
  ZoneNode,
25
27
  SlabNode,
@@ -1,4 +1,4 @@
1
- import type { AnyNode, AnyNodeId } from '../../schema';
1
+ import { type AnyNode, type AnyNodeId } from '../../schema';
2
2
  import type { SceneState } from '../use-scene';
3
3
  export declare const createNodesAction: (set: (fn: (state: SceneState) => Partial<SceneState>) => void, get: () => SceneState, ops: {
4
4
  node: AnyNode;