@pascal-app/core 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/events/bus.d.ts +42 -0
  2. package/dist/events/bus.d.ts.map +1 -0
  3. package/dist/events/bus.js +13 -0
  4. package/dist/hooks/scene-registry/scene-registry.d.ts +18 -0
  5. package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -0
  6. package/dist/hooks/scene-registry/scene-registry.js +35 -0
  7. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +90 -0
  8. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -0
  9. package/dist/hooks/spatial-grid/spatial-grid-manager.js +466 -0
  10. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +4 -0
  11. package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -0
  12. package/dist/hooks/spatial-grid/spatial-grid-sync.js +115 -0
  13. package/dist/hooks/spatial-grid/spatial-grid.d.ts +23 -0
  14. package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -0
  15. package/dist/hooks/spatial-grid/spatial-grid.js +115 -0
  16. package/dist/hooks/spatial-grid/use-spatial-query.d.ts +16 -0
  17. package/dist/hooks/spatial-grid/use-spatial-query.d.ts.map +1 -0
  18. package/dist/hooks/spatial-grid/use-spatial-query.js +14 -0
  19. package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts +47 -0
  20. package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -0
  21. package/dist/hooks/spatial-grid/wall-spatial-grid.js +113 -0
  22. package/dist/index.d.ts +17 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +22 -0
  25. package/dist/lib/asset-storage.d.ts +11 -0
  26. package/dist/lib/asset-storage.d.ts.map +1 -0
  27. package/dist/lib/asset-storage.js +48 -0
  28. package/dist/lib/space-detection.d.ts +34 -0
  29. package/dist/lib/space-detection.d.ts.map +1 -0
  30. package/dist/lib/space-detection.js +499 -0
  31. package/dist/schema/base.d.ts +30 -0
  32. package/dist/schema/base.d.ts.map +1 -0
  33. package/dist/schema/base.js +25 -0
  34. package/dist/schema/camera.d.ts +13 -0
  35. package/dist/schema/camera.d.ts.map +1 -0
  36. package/dist/schema/camera.js +9 -0
  37. package/dist/schema/index.d.ts +17 -0
  38. package/dist/schema/index.d.ts.map +1 -0
  39. package/dist/schema/index.js +18 -0
  40. package/dist/schema/nodes/building.d.ts +25 -0
  41. package/dist/schema/nodes/building.d.ts.map +1 -0
  42. package/dist/schema/nodes/building.js +16 -0
  43. package/dist/schema/nodes/ceiling.d.ts +25 -0
  44. package/dist/schema/nodes/ceiling.d.ts.map +1 -0
  45. package/dist/schema/nodes/ceiling.js +16 -0
  46. package/dist/schema/nodes/guide.d.ts +27 -0
  47. package/dist/schema/nodes/guide.d.ts.map +1 -0
  48. package/dist/schema/nodes/guide.js +11 -0
  49. package/dist/schema/nodes/item.d.ts +65 -0
  50. package/dist/schema/nodes/item.d.ts.map +1 -0
  51. package/dist/schema/nodes/item.js +38 -0
  52. package/dist/schema/nodes/level.d.ts +24 -0
  53. package/dist/schema/nodes/level.d.ts.map +1 -0
  54. package/dist/schema/nodes/level.js +21 -0
  55. package/dist/schema/nodes/roof.d.ts +28 -0
  56. package/dist/schema/nodes/roof.d.ts.map +1 -0
  57. package/dist/schema/nodes/roof.js +28 -0
  58. package/dist/schema/nodes/scan.d.ts +27 -0
  59. package/dist/schema/nodes/scan.d.ts.map +1 -0
  60. package/dist/schema/nodes/scan.js +11 -0
  61. package/dist/schema/nodes/site.d.ts +90 -0
  62. package/dist/schema/nodes/site.d.ts.map +1 -0
  63. package/dist/schema/nodes/site.js +39 -0
  64. package/dist/schema/nodes/slab.d.ts +24 -0
  65. package/dist/schema/nodes/slab.d.ts.map +1 -0
  66. package/dist/schema/nodes/slab.js +15 -0
  67. package/dist/schema/nodes/wall.d.ts +37 -0
  68. package/dist/schema/nodes/wall.d.ts.map +1 -0
  69. package/dist/schema/nodes/wall.js +30 -0
  70. package/dist/schema/nodes/zone.d.ts +24 -0
  71. package/dist/schema/nodes/zone.d.ts.map +1 -0
  72. package/dist/schema/nodes/zone.js +22 -0
  73. package/dist/schema/types.d.ts +339 -0
  74. package/dist/schema/types.d.ts.map +1 -0
  75. package/dist/schema/types.js +25 -0
  76. package/dist/store/actions/node-actions.d.ts +12 -0
  77. package/dist/store/actions/node-actions.d.ts.map +1 -0
  78. package/dist/store/actions/node-actions.js +121 -0
  79. package/dist/store/use-scene.d.ts +31 -0
  80. package/dist/store/use-scene.d.ts.map +1 -0
  81. package/dist/store/use-scene.js +127 -0
  82. package/dist/systems/ceiling/ceiling-system.d.ts +8 -0
  83. package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -0
  84. package/dist/systems/ceiling/ceiling-system.js +65 -0
  85. package/dist/systems/item/item-system.d.ts +2 -0
  86. package/dist/systems/item/item-system.d.ts.map +1 -0
  87. package/dist/systems/item/item-system.js +43 -0
  88. package/dist/systems/roof/roof-system.d.ts +8 -0
  89. package/dist/systems/roof/roof-system.d.ts.map +1 -0
  90. package/dist/systems/roof/roof-system.js +254 -0
  91. package/dist/systems/slab/slab-system.d.ts +8 -0
  92. package/dist/systems/slab/slab-system.d.ts.map +1 -0
  93. package/dist/systems/slab/slab-system.js +117 -0
  94. package/dist/systems/wall/wall-mitering.d.ts +32 -0
  95. package/dist/systems/wall/wall-mitering.d.ts.map +1 -0
  96. package/dist/systems/wall/wall-mitering.js +214 -0
  97. package/dist/systems/wall/wall-system.d.ts +12 -0
  98. package/dist/systems/wall/wall-system.d.ts.map +1 -0
  99. package/dist/systems/wall/wall-system.js +286 -0
  100. package/dist/utils/types.d.ts +6 -0
  101. package/dist/utils/types.d.ts.map +1 -0
  102. package/dist/utils/types.js +7 -0
  103. package/package.json +58 -0
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+ export declare const CeilingNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ camera: z.ZodOptional<z.ZodObject<{
8
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ perspective: "perspective";
12
+ orthographic: "orthographic";
13
+ }>>;
14
+ fov: z.ZodOptional<z.ZodNumber>;
15
+ zoom: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ id: z.ZodDefault<z.ZodTemplateLiteral<`ceiling_${string}`>>;
19
+ type: z.ZodDefault<z.ZodLiteral<"ceiling">>;
20
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
21
+ polygon: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
22
+ height: z.ZodDefault<z.ZodNumber>;
23
+ }, z.core.$strip>;
24
+ export type CeilingNode = z.infer<typeof CeilingNode>;
25
+ //# sourceMappingURL=ceiling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ceiling.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/ceiling.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;iBAavB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base';
4
+ import { ItemNode } from './item';
5
+ export const CeilingNode = BaseNode.extend({
6
+ id: objectId('ceiling'),
7
+ type: nodeType('ceiling'),
8
+ children: z.array(ItemNode.shape.id).default([]),
9
+ // Specific props
10
+ // Polygon boundary - array of [x, z] coordinates defining the ceiling
11
+ polygon: z.array(z.tuple([z.number(), z.number()])),
12
+ height: z.number().default(2.5), // Height in meters
13
+ }).describe(dedent `
14
+ Ceiling node - used to represent a ceiling in the building
15
+ - polygon: array of [x, z] points defining the ceiling boundary
16
+ `);
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ export declare const GuideNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ camera: z.ZodOptional<z.ZodObject<{
8
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ perspective: "perspective";
12
+ orthographic: "orthographic";
13
+ }>>;
14
+ fov: z.ZodOptional<z.ZodNumber>;
15
+ zoom: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ id: z.ZodDefault<z.ZodTemplateLiteral<`guide_${string}`>>;
19
+ type: z.ZodDefault<z.ZodLiteral<"guide">>;
20
+ url: z.ZodString;
21
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
22
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
23
+ scale: z.ZodDefault<z.ZodNumber>;
24
+ opacity: z.ZodDefault<z.ZodNumber>;
25
+ }, z.core.$strip>;
26
+ export type GuideNode = z.infer<typeof GuideNode>;
27
+ //# sourceMappingURL=guide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;iBAQpB,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { BaseNode, nodeType, objectId } from '../base';
3
+ export const GuideNode = BaseNode.extend({
4
+ id: objectId('guide'),
5
+ type: nodeType('guide'),
6
+ url: z.string(),
7
+ position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
8
+ rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
9
+ scale: z.number().default(1),
10
+ opacity: z.number().min(0).max(100).default(50),
11
+ });
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod';
2
+ declare const assetSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ category: z.ZodString;
5
+ name: z.ZodString;
6
+ thumbnail: z.ZodString;
7
+ src: z.ZodString;
8
+ dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
9
+ attachTo: z.ZodOptional<z.ZodEnum<{
10
+ wall: "wall";
11
+ "wall-side": "wall-side";
12
+ ceiling: "ceiling";
13
+ }>>;
14
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
15
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
16
+ scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
17
+ }, z.core.$strip>;
18
+ export type AssetInput = z.input<typeof assetSchema>;
19
+ export type Asset = z.infer<typeof assetSchema>;
20
+ export declare const ItemNode: z.ZodObject<{
21
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
22
+ name: z.ZodOptional<z.ZodString>;
23
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
24
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
25
+ camera: z.ZodOptional<z.ZodObject<{
26
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
27
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
28
+ mode: z.ZodDefault<z.ZodEnum<{
29
+ perspective: "perspective";
30
+ orthographic: "orthographic";
31
+ }>>;
32
+ fov: z.ZodOptional<z.ZodNumber>;
33
+ zoom: z.ZodOptional<z.ZodNumber>;
34
+ }, z.core.$strip>>;
35
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
36
+ id: z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>;
37
+ type: z.ZodDefault<z.ZodLiteral<"item">>;
38
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
39
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
40
+ side: z.ZodOptional<z.ZodEnum<{
41
+ front: "front";
42
+ back: "back";
43
+ }>>;
44
+ wallId: z.ZodOptional<z.ZodString>;
45
+ wallT: z.ZodOptional<z.ZodNumber>;
46
+ asset: z.ZodObject<{
47
+ id: z.ZodString;
48
+ category: z.ZodString;
49
+ name: z.ZodString;
50
+ thumbnail: z.ZodString;
51
+ src: z.ZodString;
52
+ dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
53
+ attachTo: z.ZodOptional<z.ZodEnum<{
54
+ wall: "wall";
55
+ "wall-side": "wall-side";
56
+ ceiling: "ceiling";
57
+ }>>;
58
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
59
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
60
+ scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
61
+ }, z.core.$strip>;
62
+ }, z.core.$strip>;
63
+ export type ItemNode = z.infer<typeof ItemNode>;
64
+ export {};
65
+ //# sourceMappingURL=item.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,38 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base';
4
+ const assetSchema = z.object({
5
+ id: z.string(),
6
+ category: z.string(),
7
+ name: z.string(),
8
+ thumbnail: z.string(),
9
+ src: z.string(),
10
+ dimensions: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]), // [w, h, d]
11
+ attachTo: z.enum(['wall', 'wall-side', 'ceiling']).optional(),
12
+ // These are "Corrective" transforms to normalize the GLB
13
+ offset: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
14
+ rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
15
+ scale: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]),
16
+ });
17
+ export const ItemNode = BaseNode.extend({
18
+ id: objectId('item'),
19
+ type: nodeType('item'),
20
+ position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
21
+ rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
22
+ side: z.enum(['front', 'back']).optional(),
23
+ // Wall attachment properties (only used when asset.attachTo is "wall" or "wall-side")
24
+ wallId: z.string().optional(),
25
+ wallT: z.number().optional(), // 0-1 parametric position along wall
26
+ asset: assetSchema,
27
+ }).describe(dedent `Item node - used to represent a item in the building
28
+ - position: position in level coordinate system (or parent coordinate system if attached)
29
+ - rotation: rotation in level coordinate system (or parent coordinate system if attached)
30
+ - asset: asset data
31
+ - category: category of the item
32
+ - dimensions: size in level coordinate system
33
+ - src: url of the model
34
+ - attachTo: where to attach the item (wall, wall-side, ceiling)
35
+ - offset: corrective position offset for the model
36
+ - rotation: corrective rotation for the model
37
+ - scale: corrective scale for the model
38
+ `);
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export declare const LevelNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ camera: z.ZodOptional<z.ZodObject<{
8
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ perspective: "perspective";
12
+ orthographic: "orthographic";
13
+ }>>;
14
+ fov: z.ZodOptional<z.ZodNumber>;
15
+ zoom: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ id: z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>;
19
+ type: z.ZodDefault<z.ZodLiteral<"level">>;
20
+ 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<`scan_${string}`>>, z.ZodDefault<z.ZodTemplateLiteral<`guide_${string}`>>]>>>;
21
+ level: z.ZodDefault<z.ZodNumber>;
22
+ }, z.core.$strip>;
23
+ export type LevelNode = z.infer<typeof LevelNode>;
24
+ //# sourceMappingURL=level.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,21 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base';
4
+ import { CeilingNode } from './ceiling';
5
+ import { GuideNode } from './guide';
6
+ import { RoofNode } from './roof';
7
+ import { ScanNode } from './scan';
8
+ import { SlabNode } from './slab';
9
+ import { WallNode } from './wall';
10
+ import { ZoneNode } from './zone';
11
+ export const LevelNode = BaseNode.extend({
12
+ id: objectId('level'),
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([]),
15
+ // Specific props
16
+ level: z.number().default(0),
17
+ }).describe(dedent `
18
+ Level node - used to represent a level in the building
19
+ - children: array of floor, wall, ceiling, roof, item nodes
20
+ - level: level number
21
+ `);
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ export declare const RoofNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ camera: z.ZodOptional<z.ZodObject<{
8
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ perspective: "perspective";
12
+ orthographic: "orthographic";
13
+ }>>;
14
+ fov: z.ZodOptional<z.ZodNumber>;
15
+ zoom: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ id: z.ZodDefault<z.ZodTemplateLiteral<`roof_${string}`>>;
19
+ type: z.ZodDefault<z.ZodLiteral<"roof">>;
20
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
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>;
26
+ }, z.core.$strip>;
27
+ export type RoofNode = z.infer<typeof RoofNode>;
28
+ //# sourceMappingURL=roof.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,28 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base';
4
+ export const RoofNode = BaseNode.extend({
5
+ id: objectId('roof'),
6
+ type: nodeType('roof'),
7
+ // Position of the roof center (Y should typically be 0)
8
+ position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
9
+ // Rotation around Y axis in radians
10
+ 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),
19
+ }).describe(dedent `
20
+ Roof node - used to represent a gable roof in the building
21
+ - position: center position of the roof (Y typically 0)
22
+ - 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
28
+ `);
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ export declare const ScanNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ camera: z.ZodOptional<z.ZodObject<{
8
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ perspective: "perspective";
12
+ orthographic: "orthographic";
13
+ }>>;
14
+ fov: z.ZodOptional<z.ZodNumber>;
15
+ zoom: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ id: z.ZodDefault<z.ZodTemplateLiteral<`scan_${string}`>>;
19
+ type: z.ZodDefault<z.ZodLiteral<"scan">>;
20
+ url: z.ZodString;
21
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
22
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
23
+ scale: z.ZodDefault<z.ZodNumber>;
24
+ opacity: z.ZodDefault<z.ZodNumber>;
25
+ }, z.core.$strip>;
26
+ export type ScanNode = z.infer<typeof ScanNode>;
27
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;iBAQnB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { BaseNode, nodeType, objectId } from '../base';
3
+ export const ScanNode = BaseNode.extend({
4
+ id: objectId('scan'),
5
+ type: nodeType('scan'),
6
+ url: z.string(),
7
+ position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
8
+ rotation: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
9
+ scale: z.number().default(1),
10
+ opacity: z.number().min(0).max(100).default(100),
11
+ });
@@ -0,0 +1,90 @@
1
+ import { z } from 'zod';
2
+ export declare const SiteNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ camera: z.ZodOptional<z.ZodObject<{
8
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ perspective: "perspective";
12
+ orthographic: "orthographic";
13
+ }>>;
14
+ fov: z.ZodOptional<z.ZodNumber>;
15
+ zoom: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ id: z.ZodDefault<z.ZodTemplateLiteral<`site_${string}`>>;
19
+ type: z.ZodDefault<z.ZodLiteral<"site">>;
20
+ polygon: z.ZodDefault<z.ZodOptional<z.ZodObject<{
21
+ type: z.ZodLiteral<"polygon">;
22
+ points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
23
+ }, z.core.$strip>>>;
24
+ children: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
25
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
26
+ name: z.ZodOptional<z.ZodString>;
27
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
28
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
29
+ camera: z.ZodOptional<z.ZodObject<{
30
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
31
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
32
+ mode: z.ZodDefault<z.ZodEnum<{
33
+ perspective: "perspective";
34
+ orthographic: "orthographic";
35
+ }>>;
36
+ fov: z.ZodOptional<z.ZodNumber>;
37
+ zoom: z.ZodOptional<z.ZodNumber>;
38
+ }, z.core.$strip>>;
39
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
40
+ id: z.ZodDefault<z.ZodTemplateLiteral<`building_${string}`>>;
41
+ type: z.ZodDefault<z.ZodLiteral<"building">>;
42
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`level_${string}`>>>>;
43
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
44
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
45
+ }, z.core.$strip>, z.ZodObject<{
46
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
47
+ name: z.ZodOptional<z.ZodString>;
48
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
49
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
50
+ camera: z.ZodOptional<z.ZodObject<{
51
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
52
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
53
+ mode: z.ZodDefault<z.ZodEnum<{
54
+ perspective: "perspective";
55
+ orthographic: "orthographic";
56
+ }>>;
57
+ fov: z.ZodOptional<z.ZodNumber>;
58
+ zoom: z.ZodOptional<z.ZodNumber>;
59
+ }, z.core.$strip>>;
60
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
61
+ id: z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>;
62
+ type: z.ZodDefault<z.ZodLiteral<"item">>;
63
+ position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
64
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
65
+ side: z.ZodOptional<z.ZodEnum<{
66
+ front: "front";
67
+ back: "back";
68
+ }>>;
69
+ wallId: z.ZodOptional<z.ZodString>;
70
+ wallT: z.ZodOptional<z.ZodNumber>;
71
+ asset: z.ZodObject<{
72
+ id: z.ZodString;
73
+ category: z.ZodString;
74
+ name: z.ZodString;
75
+ thumbnail: z.ZodString;
76
+ src: z.ZodString;
77
+ dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
78
+ attachTo: z.ZodOptional<z.ZodEnum<{
79
+ wall: "wall";
80
+ "wall-side": "wall-side";
81
+ ceiling: "ceiling";
82
+ }>>;
83
+ offset: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
84
+ rotation: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
85
+ scale: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
86
+ }, z.core.$strip>;
87
+ }, z.core.$strip>], "type">>>;
88
+ }, z.core.$strip>;
89
+ export type SiteNode = z.infer<typeof SiteNode>;
90
+ //# sourceMappingURL=site.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,39 @@
1
+ // lib/scenegraph/schema/nodes/site.ts
2
+ import dedent from 'dedent';
3
+ import { z } from 'zod';
4
+ import { BaseNode, nodeType, objectId } from '../base';
5
+ import { BuildingNode } from './building';
6
+ import { ItemNode } from './item';
7
+ // 2D Polygon
8
+ const PropertyLineData = z.object({
9
+ type: z.literal('polygon'),
10
+ points: z.array(z.tuple([z.number(), z.number()])),
11
+ });
12
+ // 3D Polygon/Mesh
13
+ // const TerrainData = z.object({
14
+ // type: z.literal('terrain'),
15
+ // points: z.array(z.tuple([z.number(), z.number(), z.number()])),
16
+ // })
17
+ export const SiteNode = BaseNode.extend({
18
+ id: objectId('site'),
19
+ type: nodeType('site'),
20
+ // Specific props
21
+ polygon: PropertyLineData.optional().default({
22
+ type: 'polygon',
23
+ // Default 30x30 square matching GRID_SIZE
24
+ points: [
25
+ [0, 0],
26
+ [30, 0],
27
+ [30, 30],
28
+ [0, 30],
29
+ ],
30
+ }),
31
+ // terrain: TerrainData,
32
+ children: z
33
+ .array(z.discriminatedUnion('type', [BuildingNode, ItemNode]))
34
+ .default([BuildingNode.parse({})]),
35
+ }).describe(dedent `
36
+ Site node - used to represent a site
37
+ - polygon: polygon data
38
+ - children: array of building and item nodes
39
+ `);
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export declare const SlabNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ camera: z.ZodOptional<z.ZodObject<{
8
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ perspective: "perspective";
12
+ orthographic: "orthographic";
13
+ }>>;
14
+ fov: z.ZodOptional<z.ZodNumber>;
15
+ zoom: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ id: z.ZodDefault<z.ZodTemplateLiteral<`slab_${string}`>>;
19
+ type: z.ZodDefault<z.ZodLiteral<"slab">>;
20
+ polygon: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
21
+ elevation: z.ZodDefault<z.ZodNumber>;
22
+ }, z.core.$strip>;
23
+ export type SlabNode = z.infer<typeof SlabNode>;
24
+ //# sourceMappingURL=slab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slab.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/slab.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;iBAapB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base';
4
+ export const SlabNode = BaseNode.extend({
5
+ id: objectId('slab'),
6
+ type: nodeType('slab'),
7
+ // Specific props
8
+ // Polygon boundary - array of [x, z] coordinates defining the slab
9
+ polygon: z.array(z.tuple([z.number(), z.number()])),
10
+ elevation: z.number().default(0.05), // Elevation in meters
11
+ }).describe(dedent `
12
+ Slab node - used to represent a slab/floor in the building
13
+ - polygon: array of [x, z] points defining the slab boundary
14
+ - elevation: elevation in meters
15
+ `);
@@ -0,0 +1,37 @@
1
+ import { z } from 'zod';
2
+ export declare const WallNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
6
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ camera: z.ZodOptional<z.ZodObject<{
8
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
10
+ mode: z.ZodDefault<z.ZodEnum<{
11
+ perspective: "perspective";
12
+ orthographic: "orthographic";
13
+ }>>;
14
+ fov: z.ZodOptional<z.ZodNumber>;
15
+ zoom: z.ZodOptional<z.ZodNumber>;
16
+ }, z.core.$strip>>;
17
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
18
+ id: z.ZodDefault<z.ZodTemplateLiteral<`wall_${string}`>>;
19
+ type: z.ZodDefault<z.ZodLiteral<"wall">>;
20
+ children: z.ZodDefault<z.ZodArray<z.ZodDefault<z.ZodTemplateLiteral<`item_${string}`>>>>;
21
+ thickness: z.ZodOptional<z.ZodNumber>;
22
+ height: z.ZodOptional<z.ZodNumber>;
23
+ start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
24
+ end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
25
+ frontSide: z.ZodDefault<z.ZodEnum<{
26
+ unknown: "unknown";
27
+ interior: "interior";
28
+ exterior: "exterior";
29
+ }>>;
30
+ backSide: z.ZodDefault<z.ZodEnum<{
31
+ unknown: "unknown";
32
+ interior: "interior";
33
+ exterior: "exterior";
34
+ }>>;
35
+ }, z.core.$strip>;
36
+ export type WallNode = z.infer<typeof WallNode>;
37
+ //# sourceMappingURL=wall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wall.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/wall.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBpB,CAAA;AACD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import dedent from 'dedent';
2
+ import { z } from 'zod';
3
+ import { BaseNode, nodeType, objectId } from '../base';
4
+ import { ItemNode } from './item';
5
+ // import { DoorNode } from "./door";
6
+ // import { ItemNode } from "./item";
7
+ // import { WindowNode } from "./window";
8
+ export const WallNode = BaseNode.extend({
9
+ id: objectId('wall'),
10
+ type: nodeType('wall'),
11
+ children: z.array(ItemNode.shape.id).default([]),
12
+ // Specific props
13
+ thickness: z.number().optional(),
14
+ height: z.number().optional(),
15
+ // e.g., start/end points for path
16
+ start: z.tuple([z.number(), z.number()]),
17
+ end: z.tuple([z.number(), z.number()]),
18
+ // Space detection for cutaway mode
19
+ frontSide: z.enum(['interior', 'exterior', 'unknown']).default('unknown'),
20
+ backSide: z.enum(['interior', 'exterior', 'unknown']).default('unknown'),
21
+ }).describe(dedent `
22
+ Wall node - used to represent a wall in the building
23
+ - thickness: thickness in meters
24
+ - height: height in meters
25
+ - start: start point of the wall in level coordinate system
26
+ - end: end point of the wall in level coordinate system
27
+ - size: size of the wall in grid units
28
+ - frontSide: whether the front side faces interior, exterior, or unknown
29
+ - backSide: whether the back side faces interior, exterior, or unknown
30
+ `);
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export declare const ZoneNode: z.ZodObject<{
3
+ object: z.ZodDefault<z.ZodLiteral<"node">>;
4
+ parentId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
5
+ visible: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
6
+ camera: z.ZodOptional<z.ZodObject<{
7
+ position: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
8
+ target: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
9
+ mode: z.ZodDefault<z.ZodEnum<{
10
+ perspective: "perspective";
11
+ orthographic: "orthographic";
12
+ }>>;
13
+ fov: z.ZodOptional<z.ZodNumber>;
14
+ zoom: z.ZodOptional<z.ZodNumber>;
15
+ }, z.core.$strip>>;
16
+ id: z.ZodDefault<z.ZodTemplateLiteral<`zone_${string}`>>;
17
+ type: z.ZodDefault<z.ZodLiteral<"zone">>;
18
+ name: z.ZodString;
19
+ polygon: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
20
+ color: z.ZodDefault<z.ZodString>;
21
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodJSONSchema>>;
22
+ }, z.core.$strip>;
23
+ export type ZoneNode = z.infer<typeof ZoneNode>;
24
+ //# sourceMappingURL=zone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zone.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/zone.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;iBAoBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}