@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.
- package/dist/events/bus.d.ts +42 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +13 -0
- package/dist/hooks/scene-registry/scene-registry.d.ts +18 -0
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -0
- package/dist/hooks/scene-registry/scene-registry.js +35 -0
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +90 -0
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +466 -0
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +4 -0
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +115 -0
- package/dist/hooks/spatial-grid/spatial-grid.d.ts +23 -0
- package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/spatial-grid.js +115 -0
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts +16 -0
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/use-spatial-query.js +14 -0
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts +47 -0
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/wall-spatial-grid.js +113 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/lib/asset-storage.d.ts +11 -0
- package/dist/lib/asset-storage.d.ts.map +1 -0
- package/dist/lib/asset-storage.js +48 -0
- package/dist/lib/space-detection.d.ts +34 -0
- package/dist/lib/space-detection.d.ts.map +1 -0
- package/dist/lib/space-detection.js +499 -0
- package/dist/schema/base.d.ts +30 -0
- package/dist/schema/base.d.ts.map +1 -0
- package/dist/schema/base.js +25 -0
- package/dist/schema/camera.d.ts +13 -0
- package/dist/schema/camera.d.ts.map +1 -0
- package/dist/schema/camera.js +9 -0
- package/dist/schema/index.d.ts +17 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +18 -0
- package/dist/schema/nodes/building.d.ts +25 -0
- package/dist/schema/nodes/building.d.ts.map +1 -0
- package/dist/schema/nodes/building.js +16 -0
- package/dist/schema/nodes/ceiling.d.ts +25 -0
- package/dist/schema/nodes/ceiling.d.ts.map +1 -0
- package/dist/schema/nodes/ceiling.js +16 -0
- package/dist/schema/nodes/guide.d.ts +27 -0
- package/dist/schema/nodes/guide.d.ts.map +1 -0
- package/dist/schema/nodes/guide.js +11 -0
- package/dist/schema/nodes/item.d.ts +65 -0
- package/dist/schema/nodes/item.d.ts.map +1 -0
- package/dist/schema/nodes/item.js +38 -0
- package/dist/schema/nodes/level.d.ts +24 -0
- package/dist/schema/nodes/level.d.ts.map +1 -0
- package/dist/schema/nodes/level.js +21 -0
- package/dist/schema/nodes/roof.d.ts +28 -0
- package/dist/schema/nodes/roof.d.ts.map +1 -0
- package/dist/schema/nodes/roof.js +28 -0
- package/dist/schema/nodes/scan.d.ts +27 -0
- package/dist/schema/nodes/scan.d.ts.map +1 -0
- package/dist/schema/nodes/scan.js +11 -0
- package/dist/schema/nodes/site.d.ts +90 -0
- package/dist/schema/nodes/site.d.ts.map +1 -0
- package/dist/schema/nodes/site.js +39 -0
- package/dist/schema/nodes/slab.d.ts +24 -0
- package/dist/schema/nodes/slab.d.ts.map +1 -0
- package/dist/schema/nodes/slab.js +15 -0
- package/dist/schema/nodes/wall.d.ts +37 -0
- package/dist/schema/nodes/wall.d.ts.map +1 -0
- package/dist/schema/nodes/wall.js +30 -0
- package/dist/schema/nodes/zone.d.ts +24 -0
- package/dist/schema/nodes/zone.d.ts.map +1 -0
- package/dist/schema/nodes/zone.js +22 -0
- package/dist/schema/types.d.ts +339 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +25 -0
- package/dist/store/actions/node-actions.d.ts +12 -0
- package/dist/store/actions/node-actions.d.ts.map +1 -0
- package/dist/store/actions/node-actions.js +121 -0
- package/dist/store/use-scene.d.ts +31 -0
- package/dist/store/use-scene.d.ts.map +1 -0
- package/dist/store/use-scene.js +127 -0
- package/dist/systems/ceiling/ceiling-system.d.ts +8 -0
- package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -0
- package/dist/systems/ceiling/ceiling-system.js +65 -0
- package/dist/systems/item/item-system.d.ts +2 -0
- package/dist/systems/item/item-system.d.ts.map +1 -0
- package/dist/systems/item/item-system.js +43 -0
- package/dist/systems/roof/roof-system.d.ts +8 -0
- package/dist/systems/roof/roof-system.d.ts.map +1 -0
- package/dist/systems/roof/roof-system.js +254 -0
- package/dist/systems/slab/slab-system.d.ts +8 -0
- package/dist/systems/slab/slab-system.d.ts.map +1 -0
- package/dist/systems/slab/slab-system.js +117 -0
- package/dist/systems/wall/wall-mitering.d.ts +32 -0
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -0
- package/dist/systems/wall/wall-mitering.js +214 -0
- package/dist/systems/wall/wall-system.d.ts +12 -0
- package/dist/systems/wall/wall-system.d.ts.map +1 -0
- package/dist/systems/wall/wall-system.js +286 -0
- package/dist/utils/types.d.ts +6 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +7 -0
- 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"}
|