@pascal-app/core 0.7.0 → 0.8.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.
- package/dist/events/bus.d.ts +9 -6
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/bus.js +1 -1
- package/dist/lib/polygon-geometry.d.ts.map +1 -1
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +10 -8
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +20 -1
- package/dist/schema/asset-url.test.js +0 -4
- package/dist/schema/material.d.ts +2 -2
- package/dist/schema/nodes/ceiling.d.ts +1 -1
- package/dist/schema/nodes/column.d.ts +1 -1
- package/dist/schema/nodes/door.d.ts +1 -1
- package/dist/schema/nodes/fence.d.ts +2 -2
- package/dist/schema/nodes/fence.js +2 -2
- package/dist/schema/nodes/item.d.ts +12 -0
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +12 -0
- package/dist/schema/nodes/roof-segment.d.ts +3 -3
- package/dist/schema/nodes/roof.d.ts +6 -6
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +5 -5
- package/dist/schema/nodes/site.d.ts +6 -0
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +1 -1
- package/dist/schema/nodes/stair-segment.d.ts +1 -1
- package/dist/schema/nodes/stair.d.ts +6 -6
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +9 -7
- package/dist/schema/nodes/wall.d.ts +3 -3
- package/dist/schema/nodes/window.d.ts +1 -1
- package/dist/schema/types.d.ts +33 -21
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +7 -5
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +11 -5
- package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-sync.js +17 -44
- package/dist/systems/stair/stair-opening-sync.test.js +0 -2
- package/dist/systems/wall/wall-curve.d.ts +1 -1
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +1 -1
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +2 -6
- package/package.json +4 -3
- package/dist/materials.d.ts +0 -10
- package/dist/materials.d.ts.map +0 -1
- package/dist/materials.js +0 -22
- package/dist/systems/ceiling/ceiling-system.d.ts +0 -8
- package/dist/systems/ceiling/ceiling-system.d.ts.map +0 -1
- package/dist/systems/ceiling/ceiling-system.js +0 -92
- package/dist/systems/door/door-system.d.ts +0 -2
- package/dist/systems/door/door-system.d.ts.map +0 -1
- package/dist/systems/door/door-system.js +0 -195
- package/dist/systems/fence/fence-system.d.ts +0 -2
- package/dist/systems/fence/fence-system.d.ts.map +0 -1
- package/dist/systems/fence/fence-system.js +0 -187
- package/dist/systems/item/item-system.d.ts +0 -2
- package/dist/systems/item/item-system.d.ts.map +0 -1
- package/dist/systems/item/item-system.js +0 -48
- package/dist/systems/roof/roof-system.d.ts +0 -16
- package/dist/systems/roof/roof-system.d.ts.map +0 -1
- package/dist/systems/roof/roof-system.js +0 -797
- package/dist/systems/slab/slab-system.d.ts +0 -8
- package/dist/systems/slab/slab-system.d.ts.map +0 -1
- package/dist/systems/slab/slab-system.js +0 -214
- package/dist/systems/stair/stair-system.d.ts +0 -2
- package/dist/systems/stair/stair-system.d.ts.map +0 -1
- package/dist/systems/stair/stair-system.js +0 -776
- package/dist/systems/wall/wall-system.d.ts +0 -12
- package/dist/systems/wall/wall-system.d.ts.map +0 -1
- package/dist/systems/wall/wall-system.js +0 -455
- package/dist/systems/window/window-system.d.ts +0 -2
- package/dist/systems/window/window-system.d.ts.map +0 -1
- package/dist/systems/window/window-system.js +0 -131
package/dist/events/bus.d.ts
CHANGED
|
@@ -6,12 +6,13 @@ export interface GridEvent {
|
|
|
6
6
|
/** World-space intersection point on the grid plane. */
|
|
7
7
|
position: [number, number, number];
|
|
8
8
|
/**
|
|
9
|
-
* Building-local intersection point
|
|
9
|
+
* Building-local intersection point — relative to the currently selected building.
|
|
10
10
|
* Equals `position` when no building is selected.
|
|
11
|
-
* Use this for placing
|
|
12
|
-
* (walls, slabs, items, etc.).
|
|
11
|
+
* Use this for placing/committing anything that lives inside a building (walls, slabs, items, etc.).
|
|
13
12
|
*/
|
|
14
13
|
localPosition: [number, number, number];
|
|
14
|
+
faceIndex?: number;
|
|
15
|
+
object: Object3D;
|
|
15
16
|
nativeEvent: ThreeEvent<PointerEvent>;
|
|
16
17
|
}
|
|
17
18
|
export interface NodeEvent<T extends AnyNode = AnyNode> {
|
|
@@ -64,15 +65,17 @@ export interface ThumbnailGenerateEvent {
|
|
|
64
65
|
/**
|
|
65
66
|
* When true, snap levels to their true positions before capturing (for a
|
|
66
67
|
* consistent auto-thumbnail angle) and defer the capture if the tab is
|
|
67
|
-
* hidden
|
|
68
|
+
* hidden — the background auto-save path. Omit for user-driven captures
|
|
68
69
|
* that should fire immediately from the current camera pose.
|
|
69
70
|
*/
|
|
70
71
|
snapLevels?: boolean;
|
|
71
72
|
}
|
|
72
73
|
export interface CameraControlFitSceneEvent {
|
|
73
74
|
/**
|
|
74
|
-
* XZ-plane axis-aligned bounds
|
|
75
|
-
*
|
|
75
|
+
* XZ-plane axis-aligned bounds of the scene's geometry, computed from the
|
|
76
|
+
* scene graph (see `@pascal-app/editor`'s `computeSceneBoundsXZ`). The
|
|
77
|
+
* viewer's camera-controls listener frames the camera onto this box.
|
|
78
|
+
* Omitted values fall back to the camera's default pose.
|
|
76
79
|
*/
|
|
77
80
|
bounds?: {
|
|
78
81
|
min: [number, number];
|
package/dist/events/bus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,EACT,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC
|
|
1
|
+
{"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,EACT,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC;;;;OAIG;IACH,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,QAAQ,CAAA;IAChB,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IACpD,IAAI,EAAE,CAAC,CAAA;IACP,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,QAAQ,CAAA;IAChB,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,CAAA;CACtC;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC3C,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;AAC7C,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC3C,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC3C,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;AACnD,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;AAC7C,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC3C,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC3C,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;AAC7C,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC,CAAA;AACjD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;AAC/C,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC3C,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,eAAe,CAAC,CAAA;AACzD,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;AAC7C,MAAM,MAAM,iBAAiB,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAA;AAC3D,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;AAC/C,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAG3C,eAAO,MAAM,aAAa,0GAShB,CAAA;AAEV,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI;KACpC,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW,EAAE,GAAG,CAAC;CAChC,CAAA;AAED,KAAK,UAAU,GAAG;KACf,CAAC,IAAI,QAAQ,WAAW,EAAE,GAAG,SAAS;CACxC,CAAA;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAA;IAC9C,UAAU,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACpE;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,MAAM,CAAC,EAAE;QACP,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrB,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACrB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACxB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KACvB,CAAA;CACF;AAED,KAAK,mBAAmB,GAAG;IACzB,sBAAsB,EAAE,kBAAkB,CAAA;IAC1C,uBAAuB,EAAE,kBAAkB,CAAA;IAC3C,yBAAyB,EAAE,kBAAkB,CAAA;IAC7C,0BAA0B,EAAE,SAAS,CAAA;IACrC,0BAA0B,EAAE,SAAS,CAAA;IACrC,2BAA2B,EAAE,SAAS,CAAA;IACtC,2BAA2B,EAAE,0BAA0B,CAAA;IACvD,oCAAoC,EAAE,sBAAsB,CAAA;CAC7D,CAAA;AAED,KAAK,UAAU,GAAG;IAChB,aAAa,EAAE,SAAS,CAAA;CACzB,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,2BAA2B,EAAE;QAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;KAAE,CAAA;IACzD,8BAA8B,EAAE,SAAS,CAAA;IACzC,eAAe,EAAE;QAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;KAAE,CAAA;CAC9C,CAAA;AAED,KAAK,mBAAmB,GAAG;IACzB,0BAA0B,EAAE;QAC1B,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QACtB,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAAA;KACvC,CAAA;CACF,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,4BAA4B,EAAE;QAC5B,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1B,KAAK,EAAE,gBAAgB,CAAA;KACxB,CAAA;CACF,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,2BAA2B,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACjE,0BAA0B,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CACvE,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,0BAA0B,EAAE,SAAS,CAAA;IACrC,yBAAyB,EAAE,SAAS,CAAA;CACrC,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,gBAAgB,EAAE,SAAS,CAAA;IAC3B,uBAAuB,EAAE;QAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;CAClG,CAAA;AAED,KAAK,YAAY,GAAG;IAClB,uBAAuB,EAAE;QACvB,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAA;SAAE,EAAE,CAAA;KACrE,CAAA;CACF,CAAA;AAED,KAAK,YAAY,GAAG,UAAU,GAC5B,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,GAC7B,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,GAC/B,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,GAC7B,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,GAC7B,UAAU,CAAC,UAAU,EAAE,aAAa,CAAC,GACrC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,GAC/B,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,GAC7B,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,GAC7B,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,GAC/B,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,GACnC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,GACjC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,GAC7B,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,GAC5C,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,GAC/B,UAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAC9C,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,GACjC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,GAC7B,mBAAmB,GACnB,UAAU,GACV,WAAW,GACX,mBAAmB,GACnB,qBAAqB,GACrB,YAAY,GACZ,eAAe,GACf,cAAc,GACd,YAAY,CAAA;AAEd,eAAO,MAAM,OAAO,sCAAuB,CAAA"}
|
package/dist/events/bus.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polygon-geometry.d.ts","sourceRoot":"","sources":["../../src/lib/polygon-geometry.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAChC,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"polygon-geometry.d.ts","sourceRoot":"","sources":["../../src/lib/polygon-geometry.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAChC,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAoBzB;AA0ED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAChC,SAAS,EAAE,MAAM,GAChB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAiCzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space-detection.d.ts","sourceRoot":"","sources":["../../src/lib/space-detection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"space-detection.d.ts","sourceRoot":"","sources":["../../src/lib/space-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,WAAW,CAAA;AAalB,KAAK,OAAO,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvC,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAChC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,KAAK,cAAc,GAAG;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;IAC9C,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAA;CAC9C,CAAA;AAkWD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC,EAC9E,YAAY,EAAE,OAAO,EAAE,EAAE,GACxB,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,UAAU,CAAC,CA4ChD;AAyWD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;;;;EAEtE;AAsED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,MAAM,IAAI,CAuDpF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAiBjF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CeilingNode, SlabNode } from '../schema';
|
|
1
|
+
import { CeilingNode, SlabNode, } from '../schema';
|
|
3
2
|
import { getSceneHistoryPauseDepth, pauseSceneHistory, resumeSceneHistory, } from '../store/history-control';
|
|
3
|
+
import { getClampedWallCurveOffset, getWallCurveFrameAt, isCurvedWall, } from '../systems/wall/wall-curve';
|
|
4
4
|
import { simplifyClosedPolygon } from './polygon-geometry';
|
|
5
5
|
const DEFAULT_AUTO_SLAB_ELEVATION = 0.05;
|
|
6
6
|
const DEFAULT_AUTO_CEILING_HEIGHT = 2.5;
|
|
@@ -97,10 +97,10 @@ function polygonCentroid(points) {
|
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
99
|
function bboxOf(points) {
|
|
100
|
-
let minX =
|
|
101
|
-
let minY =
|
|
102
|
-
let maxX =
|
|
103
|
-
let maxY =
|
|
100
|
+
let minX = Number.POSITIVE_INFINITY;
|
|
101
|
+
let minY = Number.POSITIVE_INFINITY;
|
|
102
|
+
let maxX = Number.NEGATIVE_INFINITY;
|
|
103
|
+
let maxY = Number.NEGATIVE_INFINITY;
|
|
104
104
|
for (const point of points) {
|
|
105
105
|
minX = Math.min(minX, point.x);
|
|
106
106
|
minY = Math.min(minY, point.y);
|
|
@@ -266,7 +266,7 @@ function extractRoomPolygons(walls) {
|
|
|
266
266
|
const signedArea = polygonArea(polygon);
|
|
267
267
|
if (signedArea <= 0)
|
|
268
268
|
continue;
|
|
269
|
-
if (signedArea < 0.5 || signedArea >
|
|
269
|
+
if (signedArea < 0.5 || signedArea > 10_000)
|
|
270
270
|
continue;
|
|
271
271
|
const signature = polygonSignature(polygon);
|
|
272
272
|
if (faces.some((face) => polygonSignature(face) === signature))
|
|
@@ -552,7 +552,9 @@ function syncAutoCeilingsForLevel(levelId, roomPolygons, existingCeilings, scene
|
|
|
552
552
|
const polygon = updatesById.get(ceiling.id);
|
|
553
553
|
if (!polygon)
|
|
554
554
|
return [];
|
|
555
|
-
return sameTuplePolygon(ceiling.polygon, polygon)
|
|
555
|
+
return sameTuplePolygon(ceiling.polygon, polygon)
|
|
556
|
+
? []
|
|
557
|
+
: [{ id: ceiling.id, data: { polygon } }];
|
|
556
558
|
});
|
|
557
559
|
const plannedCeilingsForNaming = [...existingCeilings];
|
|
558
560
|
const ceilingsToCreate = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-library.d.ts","sourceRoot":"","sources":["../src/material-library.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"material-library.d.ts","sourceRoot":"","sources":["../src/material-library.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,qBAAqB,CAAA;CAC9B,CAAA;AA4BD,eAAO,MAAM,mBAAmB,yEAOtB,CAAA;AACV,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,eAAO,MAAM,gBAAgB,EAAE,mBAAmB,EAiiBjD,CAAA;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAEzF;AAED,wBAAgB,sBAAsB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAGnF;AAED,eAAO,MAAM,2BAA2B,aAAa,CAAA;AAErD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,UAE9C;AAED,wBAAgB,2BAA2B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,iBAItE;AAED,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,qBAAqB,GAAG,IAAI,CAIhG"}
|
package/dist/material-library.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
import {} from './schema/material';
|
|
1
|
+
import { MaterialTarget as MaterialTargetSchema, } from './schema/material';
|
|
2
|
+
const WALL_TARGETS = [MaterialTargetSchema.enum.wall];
|
|
3
|
+
const SLAB_TARGETS = [MaterialTargetSchema.enum.slab];
|
|
4
|
+
const WALL_AND_SLAB_TARGETS = [
|
|
5
|
+
MaterialTargetSchema.enum.wall,
|
|
6
|
+
MaterialTargetSchema.enum.slab,
|
|
7
|
+
];
|
|
8
|
+
const STAIR_TARGETS = [
|
|
9
|
+
MaterialTargetSchema.enum.stair,
|
|
10
|
+
MaterialTargetSchema.enum['stair-segment'],
|
|
11
|
+
];
|
|
12
|
+
const STAIR_AND_FENCE_TARGETS = [
|
|
13
|
+
...STAIR_TARGETS,
|
|
14
|
+
MaterialTargetSchema.enum.fence,
|
|
15
|
+
];
|
|
16
|
+
const ROOF_TARGETS = [
|
|
17
|
+
MaterialTargetSchema.enum.roof,
|
|
18
|
+
MaterialTargetSchema.enum['roof-segment'],
|
|
19
|
+
];
|
|
20
|
+
const CEILING_TARGETS = [MaterialTargetSchema.enum.ceiling];
|
|
2
21
|
export const MATERIAL_CATEGORIES = [
|
|
3
22
|
'wood',
|
|
4
23
|
'wallpaper',
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
// @ts-expect-error — bun:test is provided by the Bun runtime; core does not
|
|
2
|
-
// depend on @types/bun so the import type is unresolved at compile time.
|
|
3
|
-
// The tsconfig in packages/core still emits this file; the @ts-expect-error
|
|
4
|
-
// keeps the build green while letting `bun test` pick it up normally.
|
|
5
1
|
import { afterEach, beforeEach, describe, expect, test } from 'bun:test';
|
|
6
2
|
import { ALLOWED_ORIGINS_ENV, AssetUrl } from './asset-url';
|
|
7
3
|
function isValid(url) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const MaterialPreset: z.ZodEnum<{
|
|
3
|
+
custom: "custom";
|
|
3
4
|
white: "white";
|
|
4
5
|
brick: "brick";
|
|
5
6
|
concrete: "concrete";
|
|
@@ -9,7 +10,6 @@ export declare const MaterialPreset: z.ZodEnum<{
|
|
|
9
10
|
plaster: "plaster";
|
|
10
11
|
tile: "tile";
|
|
11
12
|
marble: "marble";
|
|
12
|
-
custom: "custom";
|
|
13
13
|
}>;
|
|
14
14
|
export type MaterialPreset = z.infer<typeof MaterialPreset>;
|
|
15
15
|
export declare const MaterialProperties: z.ZodObject<{
|
|
@@ -28,6 +28,7 @@ export type MaterialProperties = z.infer<typeof MaterialProperties>;
|
|
|
28
28
|
export declare const MaterialSchema: z.ZodObject<{
|
|
29
29
|
id: z.ZodOptional<z.ZodString>;
|
|
30
30
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
31
|
+
custom: "custom";
|
|
31
32
|
white: "white";
|
|
32
33
|
brick: "brick";
|
|
33
34
|
concrete: "concrete";
|
|
@@ -37,7 +38,6 @@ export declare const MaterialSchema: z.ZodObject<{
|
|
|
37
38
|
plaster: "plaster";
|
|
38
39
|
tile: "tile";
|
|
39
40
|
marble: "marble";
|
|
40
|
-
custom: "custom";
|
|
41
41
|
}>>;
|
|
42
42
|
properties: z.ZodOptional<z.ZodObject<{
|
|
43
43
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -21,6 +21,7 @@ export declare const CeilingNode: z.ZodObject<{
|
|
|
21
21
|
material: z.ZodOptional<z.ZodObject<{
|
|
22
22
|
id: z.ZodOptional<z.ZodString>;
|
|
23
23
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
24
|
+
custom: "custom";
|
|
24
25
|
white: "white";
|
|
25
26
|
brick: "brick";
|
|
26
27
|
concrete: "concrete";
|
|
@@ -30,7 +31,6 @@ export declare const CeilingNode: z.ZodObject<{
|
|
|
30
31
|
plaster: "plaster";
|
|
31
32
|
tile: "tile";
|
|
32
33
|
marble: "marble";
|
|
33
|
-
custom: "custom";
|
|
34
34
|
}>>;
|
|
35
35
|
properties: z.ZodOptional<z.ZodObject<{
|
|
36
36
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -232,6 +232,7 @@ export declare const ColumnNode: z.ZodObject<{
|
|
|
232
232
|
material: z.ZodOptional<z.ZodObject<{
|
|
233
233
|
id: z.ZodOptional<z.ZodString>;
|
|
234
234
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
235
|
+
custom: "custom";
|
|
235
236
|
white: "white";
|
|
236
237
|
brick: "brick";
|
|
237
238
|
concrete: "concrete";
|
|
@@ -241,7 +242,6 @@ export declare const ColumnNode: z.ZodObject<{
|
|
|
241
242
|
plaster: "plaster";
|
|
242
243
|
tile: "tile";
|
|
243
244
|
marble: "marble";
|
|
244
|
-
custom: "custom";
|
|
245
245
|
}>>;
|
|
246
246
|
properties: z.ZodOptional<z.ZodObject<{
|
|
247
247
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -58,6 +58,7 @@ export declare const DoorNode: z.ZodObject<{
|
|
|
58
58
|
material: z.ZodOptional<z.ZodObject<{
|
|
59
59
|
id: z.ZodOptional<z.ZodString>;
|
|
60
60
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
61
|
+
custom: "custom";
|
|
61
62
|
white: "white";
|
|
62
63
|
brick: "brick";
|
|
63
64
|
concrete: "concrete";
|
|
@@ -67,7 +68,6 @@ export declare const DoorNode: z.ZodObject<{
|
|
|
67
68
|
plaster: "plaster";
|
|
68
69
|
tile: "tile";
|
|
69
70
|
marble: "marble";
|
|
70
|
-
custom: "custom";
|
|
71
71
|
}>>;
|
|
72
72
|
properties: z.ZodOptional<z.ZodObject<{
|
|
73
73
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -29,6 +29,7 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
29
29
|
material: z.ZodOptional<z.ZodObject<{
|
|
30
30
|
id: z.ZodOptional<z.ZodString>;
|
|
31
31
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
32
|
+
custom: "custom";
|
|
32
33
|
white: "white";
|
|
33
34
|
brick: "brick";
|
|
34
35
|
concrete: "concrete";
|
|
@@ -38,7 +39,6 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
38
39
|
plaster: "plaster";
|
|
39
40
|
tile: "tile";
|
|
40
41
|
marble: "marble";
|
|
41
|
-
custom: "custom";
|
|
42
42
|
}>>;
|
|
43
43
|
properties: z.ZodOptional<z.ZodObject<{
|
|
44
44
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -61,9 +61,9 @@ export declare const FenceNode: z.ZodObject<{
|
|
|
61
61
|
materialPreset: z.ZodOptional<z.ZodString>;
|
|
62
62
|
start: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
63
63
|
end: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
|
|
64
|
-
curveOffset: z.ZodOptional<z.ZodNumber>;
|
|
65
64
|
height: z.ZodDefault<z.ZodNumber>;
|
|
66
65
|
thickness: z.ZodDefault<z.ZodNumber>;
|
|
66
|
+
curveOffset: z.ZodOptional<z.ZodNumber>;
|
|
67
67
|
baseHeight: z.ZodDefault<z.ZodNumber>;
|
|
68
68
|
postSpacing: z.ZodDefault<z.ZodNumber>;
|
|
69
69
|
postSize: z.ZodDefault<z.ZodNumber>;
|
|
@@ -11,9 +11,9 @@ export const FenceNode = BaseNode.extend({
|
|
|
11
11
|
materialPreset: z.string().optional(),
|
|
12
12
|
start: z.tuple([z.number(), z.number()]),
|
|
13
13
|
end: z.tuple([z.number(), z.number()]),
|
|
14
|
-
curveOffset: z.number().optional(),
|
|
15
14
|
height: z.number().default(1.8),
|
|
16
15
|
thickness: z.number().default(0.08),
|
|
16
|
+
curveOffset: z.number().optional(),
|
|
17
17
|
baseHeight: z.number().default(0.22),
|
|
18
18
|
postSpacing: z.number().default(2),
|
|
19
19
|
postSize: z.number().default(0.1),
|
|
@@ -26,8 +26,8 @@ export const FenceNode = BaseNode.extend({
|
|
|
26
26
|
}).describe(dedent `
|
|
27
27
|
Fence node - used to represent a fence segment in the building/site level coordinate system
|
|
28
28
|
- start/end: fence endpoints in level coordinate system
|
|
29
|
-
- curveOffset: midpoint sagitta offset used to bend the fence into an arc
|
|
30
29
|
- height/thickness: overall fence dimensions in meters
|
|
30
|
+
- curveOffset: midpoint sagitta offset used to bend the fence into an arc
|
|
31
31
|
- baseHeight/postSpacing/postSize/topRailHeight: exact geometric controls from the plan3D fence model
|
|
32
32
|
- groundClearance/edgeInset/baseStyle: fence support and inset configuration
|
|
33
33
|
- color/style: visual appearance options
|
|
@@ -144,6 +144,12 @@ declare const assetSchema: z.ZodObject<{
|
|
|
144
144
|
name: z.ZodString;
|
|
145
145
|
thumbnail: z.ZodString;
|
|
146
146
|
floorPlanUrl: z.ZodOptional<z.ZodString>;
|
|
147
|
+
source: z.ZodDefault<z.ZodEnum<{
|
|
148
|
+
library: "library";
|
|
149
|
+
community: "community";
|
|
150
|
+
mine: "mine";
|
|
151
|
+
}>>;
|
|
152
|
+
isDraft: z.ZodOptional<z.ZodBoolean>;
|
|
147
153
|
src: z.ZodString;
|
|
148
154
|
dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
149
155
|
attachTo: z.ZodOptional<z.ZodEnum<{
|
|
@@ -240,6 +246,12 @@ export declare const ItemNode: z.ZodObject<{
|
|
|
240
246
|
name: z.ZodString;
|
|
241
247
|
thumbnail: z.ZodString;
|
|
242
248
|
floorPlanUrl: z.ZodOptional<z.ZodString>;
|
|
249
|
+
source: z.ZodDefault<z.ZodEnum<{
|
|
250
|
+
library: "library";
|
|
251
|
+
community: "community";
|
|
252
|
+
mine: "mine";
|
|
253
|
+
}>>;
|
|
254
|
+
isDraft: z.ZodOptional<z.ZodBoolean>;
|
|
243
255
|
src: z.ZodString;
|
|
244
256
|
dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
245
257
|
attachTo: z.ZodOptional<z.ZodEnum<{
|
|
@@ -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;AAOvB,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
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkCf,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,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAM/D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAI5E"}
|
|
@@ -61,6 +61,18 @@ const assetSchema = z.object({
|
|
|
61
61
|
// Optional top-down 2D image shown inside the item's footprint on the
|
|
62
62
|
// floor plan. When present, replaces the default diagonal-cross marker.
|
|
63
63
|
floorPlanUrl: z.string().optional(),
|
|
64
|
+
// Where the item came from in the catalog. Used by the editor's items
|
|
65
|
+
// panel to filter Library / Community / Mine. The server populates it
|
|
66
|
+
// from `items.userId`: null → 'library', current user → 'mine',
|
|
67
|
+
// other user → 'community'. Defaults to 'library' when absent (e.g.
|
|
68
|
+
// the seeded built-in catalog).
|
|
69
|
+
source: z.enum(['library', 'community', 'mine']).default('library'),
|
|
70
|
+
// True when the item belongs to the caller and is still in draft status.
|
|
71
|
+
// The catalog only loads my drafts (other users' drafts are never
|
|
72
|
+
// published to the catalog). Used so the Community filter can include
|
|
73
|
+
// *my* published items alongside other users', while leaving drafts
|
|
74
|
+
// visible only under Mine.
|
|
75
|
+
isDraft: z.boolean().optional(),
|
|
64
76
|
src: AssetUrl,
|
|
65
77
|
dimensions: z.tuple([z.number(), z.number(), z.number()]).default([1, 1, 1]), // [w, h, d]
|
|
66
78
|
attachTo: z.enum(['wall', 'wall-side', 'ceiling']).optional(),
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const RoofType: z.ZodEnum<{
|
|
3
|
+
flat: "flat";
|
|
3
4
|
hip: "hip";
|
|
4
5
|
gable: "gable";
|
|
5
6
|
shed: "shed";
|
|
6
7
|
gambrel: "gambrel";
|
|
7
8
|
dutch: "dutch";
|
|
8
9
|
mansard: "mansard";
|
|
9
|
-
flat: "flat";
|
|
10
10
|
}>;
|
|
11
11
|
export type RoofType = z.infer<typeof RoofType>;
|
|
12
12
|
export declare const RoofSegmentNode: z.ZodObject<{
|
|
@@ -30,6 +30,7 @@ export declare const RoofSegmentNode: z.ZodObject<{
|
|
|
30
30
|
material: z.ZodOptional<z.ZodObject<{
|
|
31
31
|
id: z.ZodOptional<z.ZodString>;
|
|
32
32
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
33
|
+
custom: "custom";
|
|
33
34
|
white: "white";
|
|
34
35
|
brick: "brick";
|
|
35
36
|
concrete: "concrete";
|
|
@@ -39,7 +40,6 @@ export declare const RoofSegmentNode: z.ZodObject<{
|
|
|
39
40
|
plaster: "plaster";
|
|
40
41
|
tile: "tile";
|
|
41
42
|
marble: "marble";
|
|
42
|
-
custom: "custom";
|
|
43
43
|
}>>;
|
|
44
44
|
properties: z.ZodOptional<z.ZodObject<{
|
|
45
45
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -63,13 +63,13 @@ export declare const RoofSegmentNode: z.ZodObject<{
|
|
|
63
63
|
position: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
64
64
|
rotation: z.ZodDefault<z.ZodNumber>;
|
|
65
65
|
roofType: z.ZodDefault<z.ZodEnum<{
|
|
66
|
+
flat: "flat";
|
|
66
67
|
hip: "hip";
|
|
67
68
|
gable: "gable";
|
|
68
69
|
shed: "shed";
|
|
69
70
|
gambrel: "gambrel";
|
|
70
71
|
dutch: "dutch";
|
|
71
72
|
mansard: "mansard";
|
|
72
|
-
flat: "flat";
|
|
73
73
|
}>>;
|
|
74
74
|
width: z.ZodDefault<z.ZodNumber>;
|
|
75
75
|
depth: z.ZodDefault<z.ZodNumber>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import type { MaterialSchema as MaterialSchemaType } from '../material';
|
|
3
3
|
export type RoofSurfaceMaterialRole = 'top' | 'edge' | 'wall';
|
|
4
4
|
export type RoofSurfaceMaterialSpec = {
|
|
5
|
-
material?:
|
|
5
|
+
material?: MaterialSchemaType;
|
|
6
6
|
materialPreset?: string;
|
|
7
7
|
};
|
|
8
8
|
export declare const RoofNode: z.ZodObject<{
|
|
@@ -26,6 +26,7 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
26
26
|
material: z.ZodOptional<z.ZodObject<{
|
|
27
27
|
id: z.ZodOptional<z.ZodString>;
|
|
28
28
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
29
|
+
custom: "custom";
|
|
29
30
|
white: "white";
|
|
30
31
|
brick: "brick";
|
|
31
32
|
concrete: "concrete";
|
|
@@ -35,7 +36,6 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
35
36
|
plaster: "plaster";
|
|
36
37
|
tile: "tile";
|
|
37
38
|
marble: "marble";
|
|
38
|
-
custom: "custom";
|
|
39
39
|
}>>;
|
|
40
40
|
properties: z.ZodOptional<z.ZodObject<{
|
|
41
41
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -59,6 +59,7 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
59
59
|
topMaterial: z.ZodOptional<z.ZodObject<{
|
|
60
60
|
id: z.ZodOptional<z.ZodString>;
|
|
61
61
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
62
|
+
custom: "custom";
|
|
62
63
|
white: "white";
|
|
63
64
|
brick: "brick";
|
|
64
65
|
concrete: "concrete";
|
|
@@ -68,7 +69,6 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
68
69
|
plaster: "plaster";
|
|
69
70
|
tile: "tile";
|
|
70
71
|
marble: "marble";
|
|
71
|
-
custom: "custom";
|
|
72
72
|
}>>;
|
|
73
73
|
properties: z.ZodOptional<z.ZodObject<{
|
|
74
74
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -92,6 +92,7 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
92
92
|
edgeMaterial: z.ZodOptional<z.ZodObject<{
|
|
93
93
|
id: z.ZodOptional<z.ZodString>;
|
|
94
94
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
95
|
+
custom: "custom";
|
|
95
96
|
white: "white";
|
|
96
97
|
brick: "brick";
|
|
97
98
|
concrete: "concrete";
|
|
@@ -101,7 +102,6 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
101
102
|
plaster: "plaster";
|
|
102
103
|
tile: "tile";
|
|
103
104
|
marble: "marble";
|
|
104
|
-
custom: "custom";
|
|
105
105
|
}>>;
|
|
106
106
|
properties: z.ZodOptional<z.ZodObject<{
|
|
107
107
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -125,6 +125,7 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
125
125
|
wallMaterial: z.ZodOptional<z.ZodObject<{
|
|
126
126
|
id: z.ZodOptional<z.ZodString>;
|
|
127
127
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
128
|
+
custom: "custom";
|
|
128
129
|
white: "white";
|
|
129
130
|
brick: "brick";
|
|
130
131
|
concrete: "concrete";
|
|
@@ -134,7 +135,6 @@ export declare const RoofNode: z.ZodObject<{
|
|
|
134
135
|
plaster: "plaster";
|
|
135
136
|
tile: "tile";
|
|
136
137
|
marble: "marble";
|
|
137
|
-
custom: "custom";
|
|
138
138
|
}>>;
|
|
139
139
|
properties: z.ZodOptional<z.ZodObject<{
|
|
140
140
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -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;AAEvB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"roof.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/roof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIvE,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAC7D,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA;AAS/C,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,uBAAuB,GAC5B,uBAAuB,CAoDzB"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import dedent from 'dedent';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { BaseNode, nodeType, objectId } from '../base';
|
|
4
|
-
import { MaterialSchema
|
|
4
|
+
import { MaterialSchema } from '../material';
|
|
5
5
|
import { RoofSegmentNode } from './roof-segment';
|
|
6
6
|
export const RoofNode = BaseNode.extend({
|
|
7
7
|
id: objectId('roof'),
|
|
8
8
|
type: nodeType('roof'),
|
|
9
|
-
material:
|
|
9
|
+
material: MaterialSchema.optional(),
|
|
10
10
|
materialPreset: z.string().optional(),
|
|
11
|
-
topMaterial:
|
|
11
|
+
topMaterial: MaterialSchema.optional(),
|
|
12
12
|
topMaterialPreset: z.string().optional(),
|
|
13
|
-
edgeMaterial:
|
|
13
|
+
edgeMaterial: MaterialSchema.optional(),
|
|
14
14
|
edgeMaterialPreset: z.string().optional(),
|
|
15
|
-
wallMaterial:
|
|
15
|
+
wallMaterial: MaterialSchema.optional(),
|
|
16
16
|
wallMaterialPreset: z.string().optional(),
|
|
17
17
|
position: z.tuple([z.number(), z.number(), z.number()]).default([0, 0, 0]),
|
|
18
18
|
// Rotation around Y axis in radians
|
|
@@ -77,6 +77,12 @@ export declare const SiteNode: z.ZodObject<{
|
|
|
77
77
|
name: z.ZodString;
|
|
78
78
|
thumbnail: z.ZodString;
|
|
79
79
|
floorPlanUrl: z.ZodOptional<z.ZodString>;
|
|
80
|
+
source: z.ZodDefault<z.ZodEnum<{
|
|
81
|
+
library: "library";
|
|
82
|
+
community: "community";
|
|
83
|
+
mine: "mine";
|
|
84
|
+
}>>;
|
|
85
|
+
isDraft: z.ZodOptional<z.ZodBoolean>;
|
|
80
86
|
src: z.ZodString;
|
|
81
87
|
dimensions: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
|
|
82
88
|
attachTo: z.ZodOptional<z.ZodEnum<{
|
|
@@ -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
|
|
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"}
|
|
@@ -20,6 +20,7 @@ export declare const SlabNode: z.ZodObject<{
|
|
|
20
20
|
material: z.ZodOptional<z.ZodObject<{
|
|
21
21
|
id: z.ZodOptional<z.ZodString>;
|
|
22
22
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
custom: "custom";
|
|
23
24
|
white: "white";
|
|
24
25
|
brick: "brick";
|
|
25
26
|
concrete: "concrete";
|
|
@@ -29,7 +30,6 @@ export declare const SlabNode: z.ZodObject<{
|
|
|
29
30
|
plaster: "plaster";
|
|
30
31
|
tile: "tile";
|
|
31
32
|
marble: "marble";
|
|
32
|
-
custom: "custom";
|
|
33
33
|
}>>;
|
|
34
34
|
properties: z.ZodOptional<z.ZodObject<{
|
|
35
35
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -31,6 +31,7 @@ export declare const StairSegmentNode: z.ZodObject<{
|
|
|
31
31
|
material: z.ZodOptional<z.ZodObject<{
|
|
32
32
|
id: z.ZodOptional<z.ZodString>;
|
|
33
33
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
34
|
+
custom: "custom";
|
|
34
35
|
white: "white";
|
|
35
36
|
brick: "brick";
|
|
36
37
|
concrete: "concrete";
|
|
@@ -40,7 +41,6 @@ export declare const StairSegmentNode: z.ZodObject<{
|
|
|
40
41
|
plaster: "plaster";
|
|
41
42
|
tile: "tile";
|
|
42
43
|
marble: "marble";
|
|
43
|
-
custom: "custom";
|
|
44
44
|
}>>;
|
|
45
45
|
properties: z.ZodOptional<z.ZodObject<{
|
|
46
46
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import type { MaterialSchema as MaterialSchemaType } from '../material';
|
|
3
3
|
export declare const StairRailingMode: z.ZodEnum<{
|
|
4
4
|
none: "none";
|
|
5
5
|
left: "left";
|
|
@@ -25,7 +25,7 @@ export type StairTopLandingMode = z.infer<typeof StairTopLandingMode>;
|
|
|
25
25
|
export type StairSlabOpeningMode = z.infer<typeof StairSlabOpeningMode>;
|
|
26
26
|
export type StairSurfaceMaterialRole = 'railing' | 'tread' | 'side';
|
|
27
27
|
export type StairSurfaceMaterialSpec = {
|
|
28
|
-
material?:
|
|
28
|
+
material?: MaterialSchemaType;
|
|
29
29
|
materialPreset?: string;
|
|
30
30
|
};
|
|
31
31
|
export declare const StairNode: z.ZodObject<{
|
|
@@ -49,6 +49,7 @@ export declare const StairNode: z.ZodObject<{
|
|
|
49
49
|
material: z.ZodOptional<z.ZodObject<{
|
|
50
50
|
id: z.ZodOptional<z.ZodString>;
|
|
51
51
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
52
|
+
custom: "custom";
|
|
52
53
|
white: "white";
|
|
53
54
|
brick: "brick";
|
|
54
55
|
concrete: "concrete";
|
|
@@ -58,7 +59,6 @@ export declare const StairNode: z.ZodObject<{
|
|
|
58
59
|
plaster: "plaster";
|
|
59
60
|
tile: "tile";
|
|
60
61
|
marble: "marble";
|
|
61
|
-
custom: "custom";
|
|
62
62
|
}>>;
|
|
63
63
|
properties: z.ZodOptional<z.ZodObject<{
|
|
64
64
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -82,6 +82,7 @@ export declare const StairNode: z.ZodObject<{
|
|
|
82
82
|
railingMaterial: z.ZodOptional<z.ZodObject<{
|
|
83
83
|
id: z.ZodOptional<z.ZodString>;
|
|
84
84
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
85
|
+
custom: "custom";
|
|
85
86
|
white: "white";
|
|
86
87
|
brick: "brick";
|
|
87
88
|
concrete: "concrete";
|
|
@@ -91,7 +92,6 @@ export declare const StairNode: z.ZodObject<{
|
|
|
91
92
|
plaster: "plaster";
|
|
92
93
|
tile: "tile";
|
|
93
94
|
marble: "marble";
|
|
94
|
-
custom: "custom";
|
|
95
95
|
}>>;
|
|
96
96
|
properties: z.ZodOptional<z.ZodObject<{
|
|
97
97
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -115,6 +115,7 @@ export declare const StairNode: z.ZodObject<{
|
|
|
115
115
|
treadMaterial: z.ZodOptional<z.ZodObject<{
|
|
116
116
|
id: z.ZodOptional<z.ZodString>;
|
|
117
117
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
118
|
+
custom: "custom";
|
|
118
119
|
white: "white";
|
|
119
120
|
brick: "brick";
|
|
120
121
|
concrete: "concrete";
|
|
@@ -124,7 +125,6 @@ export declare const StairNode: z.ZodObject<{
|
|
|
124
125
|
plaster: "plaster";
|
|
125
126
|
tile: "tile";
|
|
126
127
|
marble: "marble";
|
|
127
|
-
custom: "custom";
|
|
128
128
|
}>>;
|
|
129
129
|
properties: z.ZodOptional<z.ZodObject<{
|
|
130
130
|
color: z.ZodDefault<z.ZodString>;
|
|
@@ -148,6 +148,7 @@ export declare const StairNode: z.ZodObject<{
|
|
|
148
148
|
sideMaterial: z.ZodOptional<z.ZodObject<{
|
|
149
149
|
id: z.ZodOptional<z.ZodString>;
|
|
150
150
|
preset: z.ZodOptional<z.ZodEnum<{
|
|
151
|
+
custom: "custom";
|
|
151
152
|
white: "white";
|
|
152
153
|
brick: "brick";
|
|
153
154
|
concrete: "concrete";
|
|
@@ -157,7 +158,6 @@ export declare const StairNode: z.ZodObject<{
|
|
|
157
158
|
plaster: "plaster";
|
|
158
159
|
tile: "tile";
|
|
159
160
|
marble: "marble";
|
|
160
|
-
custom: "custom";
|
|
161
161
|
}>>;
|
|
162
162
|
properties: z.ZodOptional<z.ZodObject<{
|
|
163
163
|
color: z.ZodDefault<z.ZodString>;
|