@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.
Files changed (76) hide show
  1. package/dist/events/bus.d.ts +9 -6
  2. package/dist/events/bus.d.ts.map +1 -1
  3. package/dist/events/bus.js +1 -1
  4. package/dist/lib/polygon-geometry.d.ts.map +1 -1
  5. package/dist/lib/space-detection.d.ts.map +1 -1
  6. package/dist/lib/space-detection.js +10 -8
  7. package/dist/material-library.d.ts.map +1 -1
  8. package/dist/material-library.js +20 -1
  9. package/dist/schema/asset-url.test.js +0 -4
  10. package/dist/schema/material.d.ts +2 -2
  11. package/dist/schema/nodes/ceiling.d.ts +1 -1
  12. package/dist/schema/nodes/column.d.ts +1 -1
  13. package/dist/schema/nodes/door.d.ts +1 -1
  14. package/dist/schema/nodes/fence.d.ts +2 -2
  15. package/dist/schema/nodes/fence.js +2 -2
  16. package/dist/schema/nodes/item.d.ts +12 -0
  17. package/dist/schema/nodes/item.d.ts.map +1 -1
  18. package/dist/schema/nodes/item.js +12 -0
  19. package/dist/schema/nodes/roof-segment.d.ts +3 -3
  20. package/dist/schema/nodes/roof.d.ts +6 -6
  21. package/dist/schema/nodes/roof.d.ts.map +1 -1
  22. package/dist/schema/nodes/roof.js +5 -5
  23. package/dist/schema/nodes/site.d.ts +6 -0
  24. package/dist/schema/nodes/site.d.ts.map +1 -1
  25. package/dist/schema/nodes/slab.d.ts +1 -1
  26. package/dist/schema/nodes/stair-segment.d.ts +1 -1
  27. package/dist/schema/nodes/stair.d.ts +6 -6
  28. package/dist/schema/nodes/stair.d.ts.map +1 -1
  29. package/dist/schema/nodes/stair.js +9 -7
  30. package/dist/schema/nodes/wall.d.ts +3 -3
  31. package/dist/schema/nodes/window.d.ts +1 -1
  32. package/dist/schema/types.d.ts +33 -21
  33. package/dist/schema/types.d.ts.map +1 -1
  34. package/dist/store/actions/node-actions.d.ts.map +1 -1
  35. package/dist/store/actions/node-actions.js +7 -5
  36. package/dist/store/use-scene.d.ts.map +1 -1
  37. package/dist/store/use-scene.js +11 -5
  38. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -1
  39. package/dist/systems/stair/stair-opening-sync.js +17 -44
  40. package/dist/systems/stair/stair-opening-sync.test.js +0 -2
  41. package/dist/systems/wall/wall-curve.d.ts +1 -1
  42. package/dist/systems/wall/wall-curve.d.ts.map +1 -1
  43. package/dist/systems/wall/wall-curve.js +1 -1
  44. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  45. package/dist/systems/wall/wall-mitering.js +2 -6
  46. package/package.json +4 -3
  47. package/dist/materials.d.ts +0 -10
  48. package/dist/materials.d.ts.map +0 -1
  49. package/dist/materials.js +0 -22
  50. package/dist/systems/ceiling/ceiling-system.d.ts +0 -8
  51. package/dist/systems/ceiling/ceiling-system.d.ts.map +0 -1
  52. package/dist/systems/ceiling/ceiling-system.js +0 -92
  53. package/dist/systems/door/door-system.d.ts +0 -2
  54. package/dist/systems/door/door-system.d.ts.map +0 -1
  55. package/dist/systems/door/door-system.js +0 -195
  56. package/dist/systems/fence/fence-system.d.ts +0 -2
  57. package/dist/systems/fence/fence-system.d.ts.map +0 -1
  58. package/dist/systems/fence/fence-system.js +0 -187
  59. package/dist/systems/item/item-system.d.ts +0 -2
  60. package/dist/systems/item/item-system.d.ts.map +0 -1
  61. package/dist/systems/item/item-system.js +0 -48
  62. package/dist/systems/roof/roof-system.d.ts +0 -16
  63. package/dist/systems/roof/roof-system.d.ts.map +0 -1
  64. package/dist/systems/roof/roof-system.js +0 -797
  65. package/dist/systems/slab/slab-system.d.ts +0 -8
  66. package/dist/systems/slab/slab-system.d.ts.map +0 -1
  67. package/dist/systems/slab/slab-system.js +0 -214
  68. package/dist/systems/stair/stair-system.d.ts +0 -2
  69. package/dist/systems/stair/stair-system.d.ts.map +0 -1
  70. package/dist/systems/stair/stair-system.js +0 -776
  71. package/dist/systems/wall/wall-system.d.ts +0 -12
  72. package/dist/systems/wall/wall-system.d.ts.map +0 -1
  73. package/dist/systems/wall/wall-system.js +0 -455
  74. package/dist/systems/window/window-system.d.ts +0 -2
  75. package/dist/systems/window/window-system.d.ts.map +0 -1
  76. package/dist/systems/window/window-system.js +0 -131
@@ -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, relative to the currently selected building.
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 or committing anything that lives inside a building
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, the background auto-save path. Omit for user-driven captures
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 for camera framing. Omitted values let the
75
- * listener choose its default framing pose.
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];
@@ -1 +1 @@
1
- {"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/events/bus.ts"],"names":[],"mappings":"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"}
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"}
@@ -1,5 +1,5 @@
1
1
  import mitt from 'mitt';
2
- // Event suffixes, exported for use in hooks
2
+ // Event suffixes - exported for use in hooks
3
3
  export const eventSuffixes = [
4
4
  'click',
5
5
  'move',
@@ -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,CAuBzB;AAuED,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
+ {"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":"AAKA,OAAO,EAA6F,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQpI,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;AA4VD,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;AA0WD,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
+ {"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 { getClampedWallCurveOffset, getWallCurveFrameAt, isCurvedWall, } from '../systems/wall/wall-curve';
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 = Infinity;
101
- let minY = Infinity;
102
- let maxX = -Infinity;
103
- let maxY = -Infinity;
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 > 10000)
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) ? [] : [{ id: ceiling.id, data: { 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,EAC3B,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;AAED,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"}
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"}
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBf,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"}
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 { type MaterialSchema } from '../material';
2
+ import type { MaterialSchema as MaterialSchemaType } from '../material';
3
3
  export type RoofSurfaceMaterialRole = 'top' | 'edge' | 'wall';
4
4
  export type RoofSurfaceMaterialSpec = {
5
- material?: MaterialSchema;
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,KAAK,cAAc,EAA0C,MAAM,aAAa,CAAA;AAGzF,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAA;AAC7D,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,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,CAmDzB"}
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 as MaterialSchemaSchema } from '../material';
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: MaterialSchemaSchema.optional(),
9
+ material: MaterialSchema.optional(),
10
10
  materialPreset: z.string().optional(),
11
- topMaterial: MaterialSchemaSchema.optional(),
11
+ topMaterial: MaterialSchema.optional(),
12
12
  topMaterialPreset: z.string().optional(),
13
- edgeMaterial: MaterialSchemaSchema.optional(),
13
+ edgeMaterial: MaterialSchema.optional(),
14
14
  edgeMaterialPreset: z.string().optional(),
15
- wallMaterial: MaterialSchemaSchema.optional(),
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/schema/nodes/site.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAwBpB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAA"}
@@ -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 { type MaterialSchema } from '../material';
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?: MaterialSchema;
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>;