@pascal-app/core 0.1.12 → 0.2.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 (85) hide show
  1. package/dist/events/bus.d.ts +22 -2
  2. package/dist/events/bus.d.ts.map +1 -1
  3. package/dist/hooks/scene-registry/scene-registry.d.ts +6 -1
  4. package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
  5. package/dist/hooks/scene-registry/scene-registry.js +11 -1
  6. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +17 -12
  7. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  8. package/dist/hooks/spatial-grid/spatial-grid-manager.js +135 -38
  9. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1 -1
  10. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
  11. package/dist/hooks/spatial-grid/spatial-grid-sync.js +16 -8
  12. package/dist/hooks/spatial-grid/spatial-grid.d.ts +3 -3
  13. package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
  14. package/dist/hooks/spatial-grid/spatial-grid.js +2 -2
  15. package/dist/hooks/spatial-grid/use-spatial-query.d.ts +5 -0
  16. package/dist/hooks/spatial-grid/use-spatial-query.d.ts.map +1 -1
  17. package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts +6 -3
  18. package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -1
  19. package/dist/hooks/spatial-grid/wall-spatial-grid.js +35 -10
  20. package/dist/index.d.ts +8 -5
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +9 -6
  23. package/dist/lib/space-detection.d.ts.map +1 -1
  24. package/dist/lib/space-detection.js +1 -1
  25. package/dist/schema/collections.d.ts +11 -0
  26. package/dist/schema/collections.d.ts.map +1 -0
  27. package/dist/schema/collections.js +2 -0
  28. package/dist/schema/index.d.ts +11 -7
  29. package/dist/schema/index.d.ts.map +1 -1
  30. package/dist/schema/index.js +11 -6
  31. package/dist/schema/nodes/ceiling.d.ts +1 -0
  32. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  33. package/dist/schema/nodes/ceiling.js +2 -0
  34. package/dist/schema/nodes/door.d.ts +78 -0
  35. package/dist/schema/nodes/door.d.ts.map +1 -0
  36. package/dist/schema/nodes/door.js +67 -0
  37. package/dist/schema/nodes/item.d.ts +245 -2
  38. package/dist/schema/nodes/item.d.ts.map +1 -1
  39. package/dist/schema/nodes/item.js +72 -0
  40. package/dist/schema/nodes/level.d.ts.map +1 -1
  41. package/dist/schema/nodes/level.js +11 -1
  42. package/dist/schema/nodes/roof-segment.d.ts +51 -0
  43. package/dist/schema/nodes/roof-segment.d.ts.map +1 -0
  44. package/dist/schema/nodes/roof-segment.js +36 -0
  45. package/dist/schema/nodes/roof.d.ts +1 -4
  46. package/dist/schema/nodes/roof.d.ts.map +1 -1
  47. package/dist/schema/nodes/roof.js +9 -16
  48. package/dist/schema/nodes/site.d.ts +52 -1
  49. package/dist/schema/nodes/site.d.ts.map +1 -1
  50. package/dist/schema/nodes/slab.d.ts +1 -0
  51. package/dist/schema/nodes/slab.d.ts.map +1 -1
  52. package/dist/schema/nodes/slab.js +1 -0
  53. package/dist/schema/nodes/window.d.ts +40 -0
  54. package/dist/schema/nodes/window.d.ts.map +1 -0
  55. package/dist/schema/nodes/window.js +38 -0
  56. package/dist/schema/types.d.ts +241 -6
  57. package/dist/schema/types.d.ts.map +1 -1
  58. package/dist/schema/types.js +6 -0
  59. package/dist/store/actions/node-actions.d.ts.map +1 -1
  60. package/dist/store/actions/node-actions.js +23 -4
  61. package/dist/store/use-interactive.d.ts +18 -0
  62. package/dist/store/use-interactive.d.ts.map +1 -0
  63. package/dist/store/use-interactive.js +50 -0
  64. package/dist/store/use-scene.d.ts +10 -1
  65. package/dist/store/use-scene.d.ts.map +1 -1
  66. package/dist/store/use-scene.js +180 -57
  67. package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -1
  68. package/dist/systems/ceiling/ceiling-system.js +20 -0
  69. package/dist/systems/door/door-system.d.ts +2 -0
  70. package/dist/systems/door/door-system.d.ts.map +1 -0
  71. package/dist/systems/door/door-system.js +211 -0
  72. package/dist/systems/item/item-system.d.ts.map +1 -1
  73. package/dist/systems/item/item-system.js +10 -5
  74. package/dist/systems/roof/roof-system.d.ts +11 -3
  75. package/dist/systems/roof/roof-system.d.ts.map +1 -1
  76. package/dist/systems/roof/roof-system.js +705 -210
  77. package/dist/systems/slab/slab-system.d.ts.map +1 -1
  78. package/dist/systems/slab/slab-system.js +18 -3
  79. package/dist/systems/wall/wall-mitering.js +2 -2
  80. package/dist/systems/wall/wall-system.d.ts.map +1 -1
  81. package/dist/systems/wall/wall-system.js +11 -13
  82. package/dist/systems/window/window-system.d.ts +2 -0
  83. package/dist/systems/window/window-system.d.ts.map +1 -0
  84. package/dist/systems/window/window-system.js +147 -0
  85. package/package.json +10 -8
@@ -1,4 +1,143 @@
1
1
  import { z } from 'zod';
2
+ declare const toggleControlSchema: z.ZodObject<{
3
+ kind: z.ZodLiteral<"toggle">;
4
+ label: z.ZodOptional<z.ZodString>;
5
+ default: z.ZodOptional<z.ZodBoolean>;
6
+ }, z.core.$strip>;
7
+ declare const sliderControlSchema: z.ZodObject<{
8
+ kind: z.ZodLiteral<"slider">;
9
+ label: z.ZodString;
10
+ min: z.ZodNumber;
11
+ max: z.ZodNumber;
12
+ step: z.ZodDefault<z.ZodNumber>;
13
+ unit: z.ZodOptional<z.ZodString>;
14
+ displayMode: z.ZodDefault<z.ZodEnum<{
15
+ slider: "slider";
16
+ stepper: "stepper";
17
+ dial: "dial";
18
+ }>>;
19
+ default: z.ZodOptional<z.ZodNumber>;
20
+ }, z.core.$strip>;
21
+ declare const temperatureControlSchema: z.ZodObject<{
22
+ kind: z.ZodLiteral<"temperature">;
23
+ label: z.ZodDefault<z.ZodString>;
24
+ min: z.ZodDefault<z.ZodNumber>;
25
+ max: z.ZodDefault<z.ZodNumber>;
26
+ unit: z.ZodDefault<z.ZodEnum<{
27
+ C: "C";
28
+ F: "F";
29
+ }>>;
30
+ default: z.ZodOptional<z.ZodNumber>;
31
+ }, z.core.$strip>;
32
+ declare const controlSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
33
+ kind: z.ZodLiteral<"toggle">;
34
+ label: z.ZodOptional<z.ZodString>;
35
+ default: z.ZodOptional<z.ZodBoolean>;
36
+ }, z.core.$strip>, z.ZodObject<{
37
+ kind: z.ZodLiteral<"slider">;
38
+ label: z.ZodString;
39
+ min: z.ZodNumber;
40
+ max: z.ZodNumber;
41
+ step: z.ZodDefault<z.ZodNumber>;
42
+ unit: z.ZodOptional<z.ZodString>;
43
+ displayMode: z.ZodDefault<z.ZodEnum<{
44
+ slider: "slider";
45
+ stepper: "stepper";
46
+ dial: "dial";
47
+ }>>;
48
+ default: z.ZodOptional<z.ZodNumber>;
49
+ }, z.core.$strip>, z.ZodObject<{
50
+ kind: z.ZodLiteral<"temperature">;
51
+ label: z.ZodDefault<z.ZodString>;
52
+ min: z.ZodDefault<z.ZodNumber>;
53
+ max: z.ZodDefault<z.ZodNumber>;
54
+ unit: z.ZodDefault<z.ZodEnum<{
55
+ C: "C";
56
+ F: "F";
57
+ }>>;
58
+ default: z.ZodOptional<z.ZodNumber>;
59
+ }, z.core.$strip>], "kind">;
60
+ declare const animationEffectSchema: z.ZodObject<{
61
+ kind: z.ZodLiteral<"animation">;
62
+ clips: z.ZodObject<{
63
+ on: z.ZodOptional<z.ZodString>;
64
+ off: z.ZodOptional<z.ZodString>;
65
+ loop: z.ZodOptional<z.ZodString>;
66
+ }, z.core.$strip>;
67
+ }, z.core.$strip>;
68
+ declare const lightEffectSchema: z.ZodObject<{
69
+ kind: z.ZodLiteral<"light">;
70
+ color: z.ZodDefault<z.ZodString>;
71
+ intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
72
+ distance: z.ZodOptional<z.ZodNumber>;
73
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
74
+ }, z.core.$strip>;
75
+ declare const effectSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
76
+ kind: z.ZodLiteral<"animation">;
77
+ clips: z.ZodObject<{
78
+ on: z.ZodOptional<z.ZodString>;
79
+ off: z.ZodOptional<z.ZodString>;
80
+ loop: z.ZodOptional<z.ZodString>;
81
+ }, z.core.$strip>;
82
+ }, z.core.$strip>, z.ZodObject<{
83
+ kind: z.ZodLiteral<"light">;
84
+ color: z.ZodDefault<z.ZodString>;
85
+ intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
86
+ distance: z.ZodOptional<z.ZodNumber>;
87
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
88
+ }, z.core.$strip>], "kind">;
89
+ declare const interactiveSchema: z.ZodObject<{
90
+ controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
91
+ kind: z.ZodLiteral<"toggle">;
92
+ label: z.ZodOptional<z.ZodString>;
93
+ default: z.ZodOptional<z.ZodBoolean>;
94
+ }, z.core.$strip>, z.ZodObject<{
95
+ kind: z.ZodLiteral<"slider">;
96
+ label: z.ZodString;
97
+ min: z.ZodNumber;
98
+ max: z.ZodNumber;
99
+ step: z.ZodDefault<z.ZodNumber>;
100
+ unit: z.ZodOptional<z.ZodString>;
101
+ displayMode: z.ZodDefault<z.ZodEnum<{
102
+ slider: "slider";
103
+ stepper: "stepper";
104
+ dial: "dial";
105
+ }>>;
106
+ default: z.ZodOptional<z.ZodNumber>;
107
+ }, z.core.$strip>, z.ZodObject<{
108
+ kind: z.ZodLiteral<"temperature">;
109
+ label: z.ZodDefault<z.ZodString>;
110
+ min: z.ZodDefault<z.ZodNumber>;
111
+ max: z.ZodDefault<z.ZodNumber>;
112
+ unit: z.ZodDefault<z.ZodEnum<{
113
+ C: "C";
114
+ F: "F";
115
+ }>>;
116
+ default: z.ZodOptional<z.ZodNumber>;
117
+ }, z.core.$strip>], "kind">>>;
118
+ effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
119
+ kind: z.ZodLiteral<"animation">;
120
+ clips: z.ZodObject<{
121
+ on: z.ZodOptional<z.ZodString>;
122
+ off: z.ZodOptional<z.ZodString>;
123
+ loop: z.ZodOptional<z.ZodString>;
124
+ }, z.core.$strip>;
125
+ }, z.core.$strip>, z.ZodObject<{
126
+ kind: z.ZodLiteral<"light">;
127
+ color: z.ZodDefault<z.ZodString>;
128
+ intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
129
+ distance: z.ZodOptional<z.ZodNumber>;
130
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
131
+ }, z.core.$strip>], "kind">>>;
132
+ }, z.core.$strip>;
133
+ export type ToggleControl = z.infer<typeof toggleControlSchema>;
134
+ export type SliderControl = z.infer<typeof sliderControlSchema>;
135
+ export type TemperatureControl = z.infer<typeof temperatureControlSchema>;
136
+ export type Control = z.infer<typeof controlSchema>;
137
+ export type AnimationEffect = z.infer<typeof animationEffectSchema>;
138
+ export type LightEffect = z.infer<typeof lightEffectSchema>;
139
+ export type Effect = z.infer<typeof effectSchema>;
140
+ export type Interactive = z.infer<typeof interactiveSchema>;
2
141
  declare const assetSchema: z.ZodObject<{
3
142
  id: z.ZodString;
4
143
  category: z.ZodString;
@@ -7,13 +146,61 @@ declare const assetSchema: z.ZodObject<{
7
146
  src: z.ZodString;
8
147
  dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
9
148
  attachTo: z.ZodOptional<z.ZodEnum<{
10
- ceiling: "ceiling";
11
149
  wall: "wall";
12
150
  "wall-side": "wall-side";
151
+ ceiling: "ceiling";
13
152
  }>>;
153
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
14
154
  offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15
155
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
16
156
  scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
157
+ surface: z.ZodOptional<z.ZodObject<{
158
+ height: z.ZodNumber;
159
+ }, z.core.$strip>>;
160
+ interactive: z.ZodOptional<z.ZodObject<{
161
+ controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
162
+ kind: z.ZodLiteral<"toggle">;
163
+ label: z.ZodOptional<z.ZodString>;
164
+ default: z.ZodOptional<z.ZodBoolean>;
165
+ }, z.core.$strip>, z.ZodObject<{
166
+ kind: z.ZodLiteral<"slider">;
167
+ label: z.ZodString;
168
+ min: z.ZodNumber;
169
+ max: z.ZodNumber;
170
+ step: z.ZodDefault<z.ZodNumber>;
171
+ unit: z.ZodOptional<z.ZodString>;
172
+ displayMode: z.ZodDefault<z.ZodEnum<{
173
+ slider: "slider";
174
+ stepper: "stepper";
175
+ dial: "dial";
176
+ }>>;
177
+ default: z.ZodOptional<z.ZodNumber>;
178
+ }, z.core.$strip>, z.ZodObject<{
179
+ kind: z.ZodLiteral<"temperature">;
180
+ label: z.ZodDefault<z.ZodString>;
181
+ min: z.ZodDefault<z.ZodNumber>;
182
+ max: z.ZodDefault<z.ZodNumber>;
183
+ unit: z.ZodDefault<z.ZodEnum<{
184
+ C: "C";
185
+ F: "F";
186
+ }>>;
187
+ default: z.ZodOptional<z.ZodNumber>;
188
+ }, z.core.$strip>], "kind">>>;
189
+ effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
190
+ kind: z.ZodLiteral<"animation">;
191
+ clips: z.ZodObject<{
192
+ on: z.ZodOptional<z.ZodString>;
193
+ off: z.ZodOptional<z.ZodString>;
194
+ loop: z.ZodOptional<z.ZodString>;
195
+ }, z.core.$strip>;
196
+ }, z.core.$strip>, z.ZodObject<{
197
+ kind: z.ZodLiteral<"light">;
198
+ color: z.ZodDefault<z.ZodString>;
199
+ intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
200
+ distance: z.ZodOptional<z.ZodNumber>;
201
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
202
+ }, z.core.$strip>], "kind">>>;
203
+ }, z.core.$strip>>;
17
204
  }, z.core.$strip>;
18
205
  export type AssetInput = z.input<typeof assetSchema>;
19
206
  export type Asset = z.infer<typeof assetSchema>;
@@ -37,12 +224,15 @@ export declare const ItemNode: z.ZodObject<{
37
224
  type: z.ZodDefault<z.ZodLiteral<"item">>;
38
225
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
39
226
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
227
+ scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
40
228
  side: z.ZodOptional<z.ZodEnum<{
41
229
  front: "front";
42
230
  back: "back";
43
231
  }>>;
232
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
44
233
  wallId: z.ZodOptional<z.ZodString>;
45
234
  wallT: z.ZodOptional<z.ZodNumber>;
235
+ collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
46
236
  asset: z.ZodObject<{
47
237
  id: z.ZodString;
48
238
  category: z.ZodString;
@@ -51,15 +241,68 @@ export declare const ItemNode: z.ZodObject<{
51
241
  src: z.ZodString;
52
242
  dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
53
243
  attachTo: z.ZodOptional<z.ZodEnum<{
54
- ceiling: "ceiling";
55
244
  wall: "wall";
56
245
  "wall-side": "wall-side";
246
+ ceiling: "ceiling";
57
247
  }>>;
248
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
58
249
  offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
59
250
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
60
251
  scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
252
+ surface: z.ZodOptional<z.ZodObject<{
253
+ height: z.ZodNumber;
254
+ }, z.core.$strip>>;
255
+ interactive: z.ZodOptional<z.ZodObject<{
256
+ controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
257
+ kind: z.ZodLiteral<"toggle">;
258
+ label: z.ZodOptional<z.ZodString>;
259
+ default: z.ZodOptional<z.ZodBoolean>;
260
+ }, z.core.$strip>, z.ZodObject<{
261
+ kind: z.ZodLiteral<"slider">;
262
+ label: z.ZodString;
263
+ min: z.ZodNumber;
264
+ max: z.ZodNumber;
265
+ step: z.ZodDefault<z.ZodNumber>;
266
+ unit: z.ZodOptional<z.ZodString>;
267
+ displayMode: z.ZodDefault<z.ZodEnum<{
268
+ slider: "slider";
269
+ stepper: "stepper";
270
+ dial: "dial";
271
+ }>>;
272
+ default: z.ZodOptional<z.ZodNumber>;
273
+ }, z.core.$strip>, z.ZodObject<{
274
+ kind: z.ZodLiteral<"temperature">;
275
+ label: z.ZodDefault<z.ZodString>;
276
+ min: z.ZodDefault<z.ZodNumber>;
277
+ max: z.ZodDefault<z.ZodNumber>;
278
+ unit: z.ZodDefault<z.ZodEnum<{
279
+ C: "C";
280
+ F: "F";
281
+ }>>;
282
+ default: z.ZodOptional<z.ZodNumber>;
283
+ }, z.core.$strip>], "kind">>>;
284
+ effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
285
+ kind: z.ZodLiteral<"animation">;
286
+ clips: z.ZodObject<{
287
+ on: z.ZodOptional<z.ZodString>;
288
+ off: z.ZodOptional<z.ZodString>;
289
+ loop: z.ZodOptional<z.ZodString>;
290
+ }, z.core.$strip>;
291
+ }, z.core.$strip>, z.ZodObject<{
292
+ kind: z.ZodLiteral<"light">;
293
+ color: z.ZodDefault<z.ZodString>;
294
+ intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
295
+ distance: z.ZodOptional<z.ZodNumber>;
296
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
297
+ }, z.core.$strip>], "kind">>>;
298
+ }, z.core.$strip>>;
61
299
  }, z.core.$strip>;
62
300
  }, z.core.$strip>;
63
301
  export type ItemNode = z.infer<typeof ItemNode>;
302
+ /**
303
+ * Returns the effective world-space dimensions of an item after applying its scale.
304
+ * Use this everywhere item.asset.dimensions is used for spatial calculations.
305
+ */
306
+ export declare function getScaledDimensions(item: ItemNode): [number, number, number];
64
307
  export {};
65
308
  //# sourceMappingURL=item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;iBAYf,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AACpD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAE/C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBnB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAMvB,QAAA,MAAM,mBAAmB;;;;iBAIvB,CAAA;AAEF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;iBASvB,CAAA;AAEF,QAAA,MAAM,wBAAwB;;;;;;;;;;iBAO5B,CAAA;AAEF,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAIjB,CAAA;AAIF,QAAA,MAAM,qBAAqB;;;;;;;iBAOzB,CAAA;AAEF,QAAA,MAAM,iBAAiB;;;;;;iBAMrB,CAAA;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;;;2BAA2E,CAAA;AAI7F,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGrB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AACzE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AACnD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAC3D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AACjD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBf,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AACpD,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAE/C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BnB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAI5E"}
@@ -1,6 +1,57 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
3
  import { BaseNode, nodeType, objectId } from '../base';
4
+ // --- Control descriptors ---
5
+ const toggleControlSchema = z.object({
6
+ kind: z.literal('toggle'),
7
+ label: z.string().optional(),
8
+ default: z.boolean().optional(),
9
+ });
10
+ const sliderControlSchema = z.object({
11
+ kind: z.literal('slider'),
12
+ label: z.string(),
13
+ min: z.number(),
14
+ max: z.number(),
15
+ step: z.number().default(1),
16
+ unit: z.string().optional(),
17
+ displayMode: z.enum(['slider', 'stepper', 'dial']).default('slider'),
18
+ default: z.number().optional(),
19
+ });
20
+ const temperatureControlSchema = z.object({
21
+ kind: z.literal('temperature'),
22
+ label: z.string().default('Temperature'),
23
+ min: z.number().default(16),
24
+ max: z.number().default(30),
25
+ unit: z.enum(['C', 'F']).default('C'),
26
+ default: z.number().optional(),
27
+ });
28
+ const controlSchema = z.discriminatedUnion('kind', [
29
+ toggleControlSchema,
30
+ sliderControlSchema,
31
+ temperatureControlSchema,
32
+ ]);
33
+ // --- Effect descriptors ---
34
+ const animationEffectSchema = z.object({
35
+ kind: z.literal('animation'),
36
+ clips: z.object({
37
+ on: z.string().optional(),
38
+ off: z.string().optional(),
39
+ loop: z.string().optional(),
40
+ }),
41
+ });
42
+ const lightEffectSchema = z.object({
43
+ kind: z.literal('light'),
44
+ color: z.string().default('#ffffff'),
45
+ intensityRange: z.tuple([z.number(), z.number()]),
46
+ distance: z.number().optional(),
47
+ offset: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
48
+ });
49
+ const effectSchema = z.discriminatedUnion('kind', [animationEffectSchema, lightEffectSchema]);
50
+ // --- Interactive descriptor ---
51
+ const interactiveSchema = z.object({
52
+ controls: z.array(controlSchema).default([]),
53
+ effects: z.array(effectSchema).default([]),
54
+ });
4
55
  const assetSchema = z.object({
5
56
  id: z.string(),
6
57
  category: z.string(),
@@ -9,20 +60,31 @@ const assetSchema = z.object({
9
60
  src: z.string(),
10
61
  dimensions: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]), // [w, h, d]
11
62
  attachTo: z.enum(['wall', 'wall-side', 'ceiling']).optional(),
63
+ tags: z.array(z.string()).optional(),
12
64
  // These are "Corrective" transforms to normalize the GLB
13
65
  offset: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
14
66
  rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
15
67
  scale: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]),
68
+ surface: z
69
+ .object({
70
+ height: z.number(), // where things rest
71
+ })
72
+ .optional(), // undefined = can't place things on it
73
+ interactive: interactiveSchema.optional(),
16
74
  });
17
75
  export const ItemNode = BaseNode.extend({
18
76
  id: objectId('item'),
19
77
  type: nodeType('item'),
20
78
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
21
79
  rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
80
+ scale: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]),
22
81
  side: z.enum(['front', 'back']).optional(),
82
+ children: z.array(objectId('item')).default([]),
23
83
  // Wall attachment properties (only used when asset.attachTo is "wall" or "wall-side")
24
84
  wallId: z.string().optional(),
25
85
  wallT: z.number().optional(), // 0-1 parametric position along wall
86
+ // Denormalized references to collections this node belongs to
87
+ collectionIds: z.array(z.custom()).optional(),
26
88
  asset: assetSchema,
27
89
  }).describe(dedent `Item node - used to represent a item in the building
28
90
  - position: position in level coordinate system (or parent coordinate system if attached)
@@ -35,4 +97,14 @@ export const ItemNode = BaseNode.extend({
35
97
  - offset: corrective position offset for the model
36
98
  - rotation: corrective rotation for the model
37
99
  - scale: corrective scale for the model
100
+ - tags: tags associated with the item
38
101
  `);
102
+ /**
103
+ * Returns the effective world-space dimensions of an item after applying its scale.
104
+ * Use this everywhere item.asset.dimensions is used for spatial calculations.
105
+ */
106
+ export function getScaledDimensions(item) {
107
+ const [w, h, d] = item.asset.dimensions;
108
+ const [sx, sy, sz] = item.scale;
109
+ return [w * sx, h * sy, d * sz];
110
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/level.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;iBAYrB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
1
+ {"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/level.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAUvB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;iBAwBrB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
@@ -11,7 +11,17 @@ import { ZoneNode } from './zone';
11
11
  export const LevelNode = BaseNode.extend({
12
12
  id: objectId('level'),
13
13
  type: nodeType('level'),
14
- children: z.array(z.union([WallNode.shape.id, ZoneNode.shape.id, SlabNode.shape.id, CeilingNode.shape.id, RoofNode.shape.id, ScanNode.shape.id, GuideNode.shape.id])).default([]),
14
+ children: z
15
+ .array(z.union([
16
+ WallNode.shape.id,
17
+ ZoneNode.shape.id,
18
+ SlabNode.shape.id,
19
+ CeilingNode.shape.id,
20
+ RoofNode.shape.id,
21
+ ScanNode.shape.id,
22
+ GuideNode.shape.id,
23
+ ]))
24
+ .default([]),
15
25
  // Specific props
16
26
  level: z.number().default(0),
17
27
  }).describe(dedent `
@@ -0,0 +1,51 @@
1
+ import { z } from 'zod';
2
+ export declare const RoofType: z.ZodEnum<{
3
+ hip: "hip";
4
+ gable: "gable";
5
+ shed: "shed";
6
+ gambrel: "gambrel";
7
+ dutch: "dutch";
8
+ mansard: "mansard";
9
+ flat: "flat";
10
+ }>;
11
+ export type RoofType = z.infer<typeof RoofType>;
12
+ export declare const RoofSegmentNode: z.ZodObject<{
13
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
14
+ name: z.ZodOptional<z.ZodString>;
15
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
16
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
+ camera: z.ZodOptional<z.ZodObject<{
18
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
19
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
20
+ mode: z.ZodDefault<z.ZodEnum<{
21
+ perspective: "perspective";
22
+ orthographic: "orthographic";
23
+ }>>;
24
+ fov: z.ZodOptional<z.ZodNumber>;
25
+ zoom: z.ZodOptional<z.ZodNumber>;
26
+ }, z.core.$strip>>;
27
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
28
+ id: z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>;
29
+ type: z.ZodDefault<z.ZodLiteral<"roof-segment">>;
30
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
31
+ rotation: z.ZodDefault<z.ZodNumber>;
32
+ roofType: z.ZodDefault<z.ZodEnum<{
33
+ hip: "hip";
34
+ gable: "gable";
35
+ shed: "shed";
36
+ gambrel: "gambrel";
37
+ dutch: "dutch";
38
+ mansard: "mansard";
39
+ flat: "flat";
40
+ }>>;
41
+ width: z.ZodDefault<z.ZodNumber>;
42
+ depth: z.ZodDefault<z.ZodNumber>;
43
+ wallHeight: z.ZodDefault<z.ZodNumber>;
44
+ roofHeight: z.ZodDefault<z.ZodNumber>;
45
+ wallThickness: z.ZodDefault<z.ZodNumber>;
46
+ deckThickness: z.ZodDefault<z.ZodNumber>;
47
+ overhang: z.ZodDefault<z.ZodNumber>;
48
+ shingleThickness: z.ZodDefault<z.ZodNumber>;
49
+ }, z.core.$strip>;
50
+ export type RoofSegmentNode = z.infer<typeof RoofSegmentNode>;
51
+ //# sourceMappingURL=roof-segment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roof-segment.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/roof-segment.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,QAAQ;;;;;;;;EAA0E,CAAA;AAE/F,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;AAE/C,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiC3B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA"}
@@ -0,0 +1,36 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base';
4
+ export const RoofType = z.enum(['hip', 'gable', 'shed', 'gambrel', 'dutch', 'mansard', 'flat']);
5
+ export const RoofSegmentNode = BaseNode.extend({
6
+ id: objectId('rseg'),
7
+ type: nodeType('roof-segment'),
8
+ // Position relative to parent roof group
9
+ position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
10
+ // Rotation around Y axis in radians
11
+ rotation: z.number().default(0),
12
+ // Roof shape type
13
+ roofType: RoofType.default('gable'),
14
+ // Footprint dimensions
15
+ width: z.number().default(8),
16
+ depth: z.number().default(6),
17
+ // Vertical dimensions
18
+ wallHeight: z.number().default(0.5),
19
+ roofHeight: z.number().default(2.5),
20
+ // Structure thicknesses
21
+ wallThickness: z.number().default(0.1),
22
+ deckThickness: z.number().default(0.1),
23
+ overhang: z.number().default(0.3),
24
+ shingleThickness: z.number().default(0.05),
25
+ }).describe(dedent `
26
+ Roof segment node - an individual roof module within a roof group.
27
+ Each segment generates a complete architectural volume (walls + roof).
28
+ Multiple segments can be combined to form complex roof shapes.
29
+ - roofType: hip, gable, shed, gambrel, dutch, mansard, flat
30
+ - width/depth: footprint dimensions
31
+ - wallHeight: height of walls below the roof
32
+ - roofHeight: height of the roof peak above the walls
33
+ - wallThickness/deckThickness: structural thicknesses
34
+ - overhang: eave overhang distance
35
+ - shingleThickness: outer shingle layer thickness
36
+ `);
@@ -19,10 +19,7 @@ export declare const RoofNode: z.ZodObject<{
19
19
  type: z.ZodDefault<z.ZodLiteral<"roof">>;
20
20
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
21
21
  rotation: z.ZodDefault<z.ZodNumber>;
22
- length: z.ZodDefault<z.ZodNumber>;
23
- height: z.ZodDefault<z.ZodNumber>;
24
- leftWidth: z.ZodDefault<z.ZodNumber>;
25
- rightWidth: z.ZodDefault<z.ZodNumber>;
22
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`rseg_${string}`>>>>;
26
23
  }, z.core.$strip>;
27
24
  export type RoofNode = z.infer<typeof RoofNode>;
28
25
  //# sourceMappingURL=roof.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roof.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/roof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;iBA0BpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"roof.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/roof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;iBAkBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -1,28 +1,21 @@
1
1
  import dedent from 'dedent';
2
2
  import { z } from 'zod';
3
3
  import { BaseNode, nodeType, objectId } from '../base';
4
+ import { RoofSegmentNode } from './roof-segment';
4
5
  export const RoofNode = BaseNode.extend({
5
6
  id: objectId('roof'),
6
7
  type: nodeType('roof'),
7
- // Position of the roof center (Y should typically be 0)
8
+ // Position of the roof group center
8
9
  position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
9
10
  // Rotation around Y axis in radians
10
11
  rotation: z.number().default(0),
11
- // Length of the roof along the ridge direction (in meters)
12
- length: z.number().default(4),
13
- // Height of the roof peak from the base
14
- height: z.number().default(1.5),
15
- // Width of the left slope (in meters, measured horizontally from ridge)
16
- leftWidth: z.number().default(1.5),
17
- // Width of the right slope (in meters, measured horizontally from ridge)
18
- rightWidth: z.number().default(1.5),
12
+ // Child roof segment IDs
13
+ children: z.array(RoofSegmentNode.shape.id).default([]),
19
14
  }).describe(dedent `
20
- Roof node - used to represent a gable roof in the building
21
- - position: center position of the roof (Y typically 0)
15
+ Roof node - a container for roof segments.
16
+ Acts as a group that holds one or more RoofSegmentNodes.
17
+ When not being edited, segments are visually combined into a single solid.
18
+ - position: center position of the roof group
22
19
  - rotation: rotation around Y axis
23
- - length: length of the roof along the ridge
24
- - height: height of the roof peak
25
- - leftWidth: horizontal width of the left slope (from ridge to eave)
26
- - rightWidth: horizontal width of the right slope (from ridge to eave)
27
- Total width = leftWidth + rightWidth
20
+ - children: array of RoofSegmentNode IDs
28
21
  `);
@@ -62,12 +62,15 @@ export declare const SiteNode: z.ZodObject<{
62
62
  type: z.ZodDefault<z.ZodLiteral<"item">>;
63
63
  position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
64
64
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
65
+ scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
65
66
  side: z.ZodOptional<z.ZodEnum<{
66
67
  front: "front";
67
68
  back: "back";
68
69
  }>>;
70
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
69
71
  wallId: z.ZodOptional<z.ZodString>;
70
72
  wallT: z.ZodOptional<z.ZodNumber>;
73
+ collectionIds: z.ZodOptional<z.ZodArray<z.ZodCustom<`collection_${string}`, `collection_${string}`>>>;
71
74
  asset: z.ZodObject<{
72
75
  id: z.ZodString;
73
76
  category: z.ZodString;
@@ -76,13 +79,61 @@ export declare const SiteNode: z.ZodObject<{
76
79
  src: z.ZodString;
77
80
  dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
78
81
  attachTo: z.ZodOptional<z.ZodEnum<{
79
- ceiling: "ceiling";
80
82
  wall: "wall";
81
83
  "wall-side": "wall-side";
84
+ ceiling: "ceiling";
82
85
  }>>;
86
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
83
87
  offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
84
88
  rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
85
89
  scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
90
+ surface: z.ZodOptional<z.ZodObject<{
91
+ height: z.ZodNumber;
92
+ }, z.core.$strip>>;
93
+ interactive: z.ZodOptional<z.ZodObject<{
94
+ controls: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
95
+ kind: z.ZodLiteral<"toggle">;
96
+ label: z.ZodOptional<z.ZodString>;
97
+ default: z.ZodOptional<z.ZodBoolean>;
98
+ }, z.core.$strip>, z.ZodObject<{
99
+ kind: z.ZodLiteral<"slider">;
100
+ label: z.ZodString;
101
+ min: z.ZodNumber;
102
+ max: z.ZodNumber;
103
+ step: z.ZodDefault<z.ZodNumber>;
104
+ unit: z.ZodOptional<z.ZodString>;
105
+ displayMode: z.ZodDefault<z.ZodEnum<{
106
+ slider: "slider";
107
+ stepper: "stepper";
108
+ dial: "dial";
109
+ }>>;
110
+ default: z.ZodOptional<z.ZodNumber>;
111
+ }, z.core.$strip>, z.ZodObject<{
112
+ kind: z.ZodLiteral<"temperature">;
113
+ label: z.ZodDefault<z.ZodString>;
114
+ min: z.ZodDefault<z.ZodNumber>;
115
+ max: z.ZodDefault<z.ZodNumber>;
116
+ unit: z.ZodDefault<z.ZodEnum<{
117
+ C: "C";
118
+ F: "F";
119
+ }>>;
120
+ default: z.ZodOptional<z.ZodNumber>;
121
+ }, z.core.$strip>], "kind">>>;
122
+ effects: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
123
+ kind: z.ZodLiteral<"animation">;
124
+ clips: z.ZodObject<{
125
+ on: z.ZodOptional<z.ZodString>;
126
+ off: z.ZodOptional<z.ZodString>;
127
+ loop: z.ZodOptional<z.ZodString>;
128
+ }, z.core.$strip>;
129
+ }, z.core.$strip>, z.ZodObject<{
130
+ kind: z.ZodLiteral<"light">;
131
+ color: z.ZodDefault<z.ZodString>;
132
+ intensityRange: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
133
+ distance: z.ZodOptional<z.ZodNumber>;
134
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
135
+ }, z.core.$strip>], "kind">>>;
136
+ }, z.core.$strip>>;
86
137
  }, z.core.$strip>;
87
138
  }, z.core.$strip>], "type">>>;
88
139
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/site.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/site.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}