@ifc-lite/create 3.2.0 → 4.0.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 (149) hide show
  1. package/README.md +9 -0
  2. package/dist/in-store/auto-space-detect.d.ts +1 -1
  3. package/dist/in-store/auto-space-detect.js +1 -1
  4. package/dist/in-store/beam.d.ts +10 -1
  5. package/dist/in-store/beam.d.ts.map +1 -1
  6. package/dist/in-store/beam.js +14 -25
  7. package/dist/in-store/beam.js.map +1 -1
  8. package/dist/in-store/column.d.ts +10 -1
  9. package/dist/in-store/column.d.ts.map +1 -1
  10. package/dist/in-store/column.js +23 -22
  11. package/dist/in-store/column.js.map +1 -1
  12. package/dist/in-store/copy-frame.d.ts +52 -0
  13. package/dist/in-store/copy-frame.d.ts.map +1 -0
  14. package/dist/in-store/copy-frame.js +99 -0
  15. package/dist/in-store/copy-frame.js.map +1 -0
  16. package/dist/in-store/copy-product.d.ts +96 -0
  17. package/dist/in-store/copy-product.d.ts.map +1 -0
  18. package/dist/in-store/copy-product.js +318 -0
  19. package/dist/in-store/copy-product.js.map +1 -0
  20. package/dist/in-store/curtain-wall.d.ts +87 -0
  21. package/dist/in-store/curtain-wall.d.ts.map +1 -0
  22. package/dist/in-store/curtain-wall.js +237 -0
  23. package/dist/in-store/curtain-wall.js.map +1 -0
  24. package/dist/in-store/extract-grids.d.ts +46 -0
  25. package/dist/in-store/extract-grids.d.ts.map +1 -0
  26. package/dist/in-store/extract-grids.js +211 -0
  27. package/dist/in-store/extract-grids.js.map +1 -0
  28. package/dist/in-store/extract-walls.d.ts +12 -23
  29. package/dist/in-store/extract-walls.d.ts.map +1 -1
  30. package/dist/in-store/extract-walls.js +6 -69
  31. package/dist/in-store/extract-walls.js.map +1 -1
  32. package/dist/in-store/generate-spaces.d.ts +1 -1
  33. package/dist/in-store/grid.d.ts +118 -0
  34. package/dist/in-store/grid.d.ts.map +1 -0
  35. package/dist/in-store/grid.js +194 -0
  36. package/dist/in-store/grid.js.map +1 -0
  37. package/dist/in-store/host-geometry-frame.d.ts +44 -0
  38. package/dist/in-store/host-geometry-frame.d.ts.map +1 -0
  39. package/dist/in-store/host-geometry-frame.js +146 -0
  40. package/dist/in-store/host-geometry-frame.js.map +1 -0
  41. package/dist/in-store/hosted-element-edit.d.ts +29 -0
  42. package/dist/in-store/hosted-element-edit.d.ts.map +1 -0
  43. package/dist/in-store/hosted-element-edit.js +120 -0
  44. package/dist/in-store/hosted-element-edit.js.map +1 -0
  45. package/dist/in-store/hosted-element.d.ts +41 -0
  46. package/dist/in-store/hosted-element.d.ts.map +1 -0
  47. package/dist/in-store/hosted-element.js +124 -0
  48. package/dist/in-store/hosted-element.js.map +1 -0
  49. package/dist/in-store/hosted-fill-read.d.ts +56 -0
  50. package/dist/in-store/hosted-fill-read.d.ts.map +1 -0
  51. package/dist/in-store/hosted-fill-read.js +197 -0
  52. package/dist/in-store/hosted-fill-read.js.map +1 -0
  53. package/dist/in-store/hosted-global-id.d.ts +8 -0
  54. package/dist/in-store/hosted-global-id.d.ts.map +1 -0
  55. package/dist/in-store/hosted-global-id.js +53 -0
  56. package/dist/in-store/hosted-global-id.js.map +1 -0
  57. package/dist/in-store/hosted-placement-edit.d.ts +30 -0
  58. package/dist/in-store/hosted-placement-edit.d.ts.map +1 -0
  59. package/dist/in-store/hosted-placement-edit.js +123 -0
  60. package/dist/in-store/hosted-placement-edit.js.map +1 -0
  61. package/dist/in-store/hosted-scale-chain.d.ts +12 -0
  62. package/dist/in-store/hosted-scale-chain.d.ts.map +1 -0
  63. package/dist/in-store/hosted-scale-chain.js +74 -0
  64. package/dist/in-store/hosted-scale-chain.js.map +1 -0
  65. package/dist/in-store/hosted-shape-edit.d.ts +9 -0
  66. package/dist/in-store/hosted-shape-edit.d.ts.map +1 -0
  67. package/dist/in-store/hosted-shape-edit.js +79 -0
  68. package/dist/in-store/hosted-shape-edit.js.map +1 -0
  69. package/dist/in-store/index.d.ts +59 -0
  70. package/dist/in-store/index.d.ts.map +1 -0
  71. package/dist/in-store/index.js +64 -0
  72. package/dist/in-store/index.js.map +1 -0
  73. package/dist/in-store/member.d.ts +8 -2
  74. package/dist/in-store/member.d.ts.map +1 -1
  75. package/dist/in-store/member.js +12 -14
  76. package/dist/in-store/member.js.map +1 -1
  77. package/dist/in-store/placement-frame.d.ts +9 -4
  78. package/dist/in-store/placement-frame.d.ts.map +1 -1
  79. package/dist/in-store/placement-frame.js +20 -35
  80. package/dist/in-store/placement-frame.js.map +1 -1
  81. package/dist/in-store/profile.d.ts +141 -0
  82. package/dist/in-store/profile.d.ts.map +1 -0
  83. package/dist/in-store/profile.js +174 -0
  84. package/dist/in-store/profile.js.map +1 -0
  85. package/dist/in-store/railing.d.ts +65 -0
  86. package/dist/in-store/railing.d.ts.map +1 -0
  87. package/dist/in-store/railing.js +112 -0
  88. package/dist/in-store/railing.js.map +1 -0
  89. package/dist/in-store/rel-connects-path.d.ts +43 -0
  90. package/dist/in-store/rel-connects-path.d.ts.map +1 -0
  91. package/dist/in-store/rel-connects-path.js +65 -0
  92. package/dist/in-store/rel-connects-path.js.map +1 -0
  93. package/dist/in-store/resolve-host.d.ts +12 -1
  94. package/dist/in-store/resolve-host.d.ts.map +1 -1
  95. package/dist/in-store/resolve-host.js +169 -85
  96. package/dist/in-store/resolve-host.js.map +1 -1
  97. package/dist/in-store/resolve-source.d.ts.map +1 -1
  98. package/dist/in-store/resolve-source.js +39 -59
  99. package/dist/in-store/resolve-source.js.map +1 -1
  100. package/dist/in-store/schema-attributes.d.ts +5 -0
  101. package/dist/in-store/schema-attributes.d.ts.map +1 -1
  102. package/dist/in-store/schema-attributes.js +9 -2
  103. package/dist/in-store/schema-attributes.js.map +1 -1
  104. package/dist/in-store/space-footprints.d.ts +55 -0
  105. package/dist/in-store/space-footprints.d.ts.map +1 -0
  106. package/dist/in-store/space-footprints.js +260 -0
  107. package/dist/in-store/space-footprints.js.map +1 -0
  108. package/dist/in-store/space.d.ts.map +1 -1
  109. package/dist/in-store/space.js +15 -3
  110. package/dist/in-store/space.js.map +1 -1
  111. package/dist/in-store/spatial-children.d.ts +1 -1
  112. package/dist/in-store/spatial-children.js +1 -1
  113. package/dist/in-store/stair-edit.d.ts +24 -0
  114. package/dist/in-store/stair-edit.d.ts.map +1 -0
  115. package/dist/in-store/stair-edit.js +190 -0
  116. package/dist/in-store/stair-edit.js.map +1 -0
  117. package/dist/in-store/stair.d.ts +58 -0
  118. package/dist/in-store/stair.d.ts.map +1 -0
  119. package/dist/in-store/stair.js +156 -0
  120. package/dist/in-store/stair.js.map +1 -0
  121. package/dist/in-store/wall-join-apply.d.ts +74 -0
  122. package/dist/in-store/wall-join-apply.d.ts.map +1 -0
  123. package/dist/in-store/wall-join-apply.js +137 -0
  124. package/dist/in-store/wall-join-apply.js.map +1 -0
  125. package/dist/in-store/wall-join-edit.d.ts +70 -0
  126. package/dist/in-store/wall-join-edit.d.ts.map +1 -0
  127. package/dist/in-store/wall-join-edit.js +217 -0
  128. package/dist/in-store/wall-join-edit.js.map +1 -0
  129. package/dist/in-store/wall-join-read.d.ts +60 -0
  130. package/dist/in-store/wall-join-read.d.ts.map +1 -0
  131. package/dist/in-store/wall-join-read.js +230 -0
  132. package/dist/in-store/wall-join-read.js.map +1 -0
  133. package/dist/in-store/wall-join.d.ts +122 -0
  134. package/dist/in-store/wall-join.d.ts.map +1 -0
  135. package/dist/in-store/wall-join.js +231 -0
  136. package/dist/in-store/wall-join.js.map +1 -0
  137. package/dist/in-store/wall-opening-fit.d.ts +11 -0
  138. package/dist/in-store/wall-opening-fit.d.ts.map +1 -0
  139. package/dist/in-store/wall-opening-fit.js +27 -0
  140. package/dist/in-store/wall-opening-fit.js.map +1 -0
  141. package/dist/in-store/wall.d.ts +32 -0
  142. package/dist/in-store/wall.d.ts.map +1 -1
  143. package/dist/in-store/wall.js +77 -13
  144. package/dist/in-store/wall.js.map +1 -1
  145. package/dist/index.d.ts +1 -38
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +2 -40
  148. package/dist/index.js.map +1 -1
  149. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"schema-attributes.d.ts","sourceRoot":"","sources":["../../src/in-store/schema-attributes.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIvD,wBAAgB,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CAIlG;AAED,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO5F;AASD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,EAAE,EAAE,MAAM,GACT,OAAO,EAAE,CAsCX"}
1
+ {"version":3,"file":"schema-attributes.d.ts","sourceRoot":"","sources":["../../src/in-store/schema-attributes.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMvD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CAMlG;AAED,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO5F;AASD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,EAAE,EAAE,MAAM,GACT,OAAO,EAAE,CAsCX"}
@@ -18,10 +18,17 @@
18
18
  * the enumeration has that value.
19
19
  */
20
20
  import { getSchemaRegistryForVersion } from '@ifc-lite/parser';
21
+ const AUTHORING_SCHEMAS = ['IFC2X3', 'IFC4', 'IFC4X3'];
22
+ /**
23
+ * The registry for an authoring schema (default IFC4). Refuses IFC5 / IFCX and
24
+ * anything else that is not IFC2X3, IFC4 or IFC4X3: the in-store builders write
25
+ * STEP entities, which those models do not have.
26
+ */
21
27
  export function schemaRegistry(schema, op) {
22
28
  const version = schema ?? 'IFC4';
23
- if (version === 'IFC5')
24
- throw new Error(`${op}: authoring IFC5 models is not supported; use IFC2X3, IFC4 or IFC4X3`);
29
+ if (!AUTHORING_SCHEMAS.includes(version)) {
30
+ throw new Error(`${op}: authoring ${version} models is not supported; use IFC2X3, IFC4 or IFC4X3`);
31
+ }
25
32
  return getSchemaRegistryForVersion(version);
26
33
  }
27
34
  /** The schema's canonical spelling of `type`, or null when the class does not exist in it. */
@@ -1 +1 @@
1
- {"version":3,"file":"schema-attributes.js","sourceRoot":"","sources":["../../src/in-store/schema-attributes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-attributes.js","sourceRoot":"","sources":["../../src/in-store/schema-attributes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The plan footprints of a model's existing `IfcSpace`s, per storey, as
3
+ * RINGS (charter #6232 M4): the Room tool tests "is this point already in a
4
+ * room" and links its layout faces to the rooms they are, both of which need
5
+ * a polygon, not a vertex cloud.
6
+ *
7
+ * - An extruded body's footprint is its swept profile, already a ring.
8
+ * - A faceted body (IfcTriangulatedFaceSet, IfcPolygonalFaceSet,
9
+ * IfcFacetedBrep, as AC20-FZK-Haus's rooms are) is outlined by the
10
+ * boundary of its UP-facing faces: for a volume with one floor and one
11
+ * ceiling over every plan point those faces tile the footprint exactly
12
+ * once, so the edges only one of them uses are the outline. Should that
13
+ * fail (an open shell, no up-facing face) the convex hull stands in: a
14
+ * simple polygon, never a cloud.
15
+ *
16
+ * Every footprint is storey-local metres. The body is read in the file's
17
+ * length unit, and so is a space authored this session: the in-store
18
+ * builders write native units (`resolveSpatialAnchor` carries the scale), so
19
+ * both are scaled alike.
20
+ */
21
+ import { EntityExtractor, type IfcDataStore } from '@ifc-lite/parser';
22
+ import type { Vec2 } from './auto-space-detect.js';
23
+ import { type OverlayWallReader } from './placement-frame.js';
24
+ type Vec3 = [number, number, number];
25
+ /** One existing space's footprint on its storey. */
26
+ export interface SpaceFootprint {
27
+ expressId: number;
28
+ /** Storey-local metres, a simple ring (no repeated closing vertex). */
29
+ footprint: Vec2[];
30
+ }
31
+ /**
32
+ * The plan outline of a faceted body: the boundary of its up-facing faces,
33
+ * chained into loops, the largest kept. Faces are 3D polygons in one frame.
34
+ */
35
+ export declare function facetedFootprint(faces: readonly (readonly Vec3[])[]): Vec2[] | null;
36
+ /**
37
+ * The plan footprint RING of a product's body (rep frame, native units): the
38
+ * largest ring over its body items. Null when no item gives one.
39
+ */
40
+ export declare function bodyFootprintRing(store: IfcDataStore, extractor: EntityExtractor, overlay: OverlayWallReader | undefined, representationId: number): Vec2[] | null;
41
+ /**
42
+ * Every existing IfcSpace's footprint ring, per storey expressId, with its
43
+ * id. Storeys without one are omitted. Refuses the whole store (empty map)
44
+ * when the length-unit scale can't be trusted — the same refusal
45
+ * `storeyPlanFrame` makes on the write side, so the two never disagree.
46
+ */
47
+ export declare function existingSpaceFootprintEntriesByStorey(store: IfcDataStore, overlay?: OverlayWallReader): Map<number, SpaceFootprint[]>;
48
+ /**
49
+ * Footprint rings (storey-local metres) of existing `IfcSpace` per storey,
50
+ * so generation can skip only the new rooms that overlap a present space.
51
+ * See `existingSpaceFootprintEntriesByStorey`, which also names each space.
52
+ */
53
+ export declare function existingSpaceFootprintsByStorey(store: IfcDataStore, overlay?: OverlayWallReader): Map<number, Vec2[][]>;
54
+ export {};
55
+ //# sourceMappingURL=space-footprints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-footprints.d.ts","sourceRoot":"","sources":["../../src/in-store/space-footprints.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,eAAe,EAA0B,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAI9B,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGrC,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,SAAS,EAAE,IAAI,EAAE,CAAC;CACnB;AA4BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAoDnF;AAiDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,gBAAgB,EAAE,MAAM,GACvB,IAAI,EAAE,GAAG,IAAI,CA0Bf;AAED;;;;;GAKG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CA+B/B;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAMvB"}
@@ -0,0 +1,260 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * The plan footprints of a model's existing `IfcSpace`s, per storey, as
6
+ * RINGS (charter #6232 M4): the Room tool tests "is this point already in a
7
+ * room" and links its layout faces to the rooms they are, both of which need
8
+ * a polygon, not a vertex cloud.
9
+ *
10
+ * - An extruded body's footprint is its swept profile, already a ring.
11
+ * - A faceted body (IfcTriangulatedFaceSet, IfcPolygonalFaceSet,
12
+ * IfcFacetedBrep, as AC20-FZK-Haus's rooms are) is outlined by the
13
+ * boundary of its UP-facing faces: for a volume with one floor and one
14
+ * ceiling over every plan point those faces tile the footprint exactly
15
+ * once, so the edges only one of them uses are the outline. Should that
16
+ * fail (an open shell, no up-facing face) the convex hull stands in: a
17
+ * simple polygon, never a cloud.
18
+ *
19
+ * Every footprint is storey-local metres. The body is read in the file's
20
+ * length unit, and so is a space authored this session: the in-store
21
+ * builders write native units (`resolveSpatialAnchor` carries the scale), so
22
+ * both are scaled alike.
23
+ */
24
+ import { EntityExtractor } from '@ifc-lite/parser';
25
+ import { safeLengthUnitScale } from './length-unit-scale.js';
26
+ import { applyFrame, frameInStoreyFrame, numericAttr, readEntity, readVec3, storeyPlacementChain, } from './placement-frame.js';
27
+ import { buildRelatingChildrenIndex, createOverlayLookup, effectiveMemberType, effectiveStoreyIds } from './spatial-children.js';
28
+ import { gatherExtrudedFootprint, resolveEntityTypeName } from './extract-walls.js';
29
+ function signedArea(ring) {
30
+ let a = 0;
31
+ for (let i = 0; i < ring.length; i++) {
32
+ const p = ring[i], q = ring[(i + 1) % ring.length];
33
+ a += p[0] * q[1] - q[0] * p[1];
34
+ }
35
+ return a / 2;
36
+ }
37
+ /** Andrew's monotone chain, CCW. */
38
+ function convexHull(points) {
39
+ const pts = [...points].sort((a, b) => a[0] - b[0] || a[1] - b[1]);
40
+ if (pts.length < 3)
41
+ return pts;
42
+ const cross = (o, a, b) => (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
43
+ const half = (list) => {
44
+ const out = [];
45
+ for (const p of list) {
46
+ while (out.length >= 2 && cross(out[out.length - 2], out[out.length - 1], p) <= 0)
47
+ out.pop();
48
+ out.push(p);
49
+ }
50
+ out.pop();
51
+ return out;
52
+ };
53
+ return [...half(pts), ...half([...pts].reverse())];
54
+ }
55
+ /**
56
+ * The plan outline of a faceted body: the boundary of its up-facing faces,
57
+ * chained into loops, the largest kept. Faces are 3D polygons in one frame.
58
+ */
59
+ export function facetedFootprint(faces) {
60
+ const key = (p) => `${p[0].toFixed(4)},${p[1].toFixed(4)}`;
61
+ const at = new Map();
62
+ const uses = new Map();
63
+ const directed = [];
64
+ const all = [];
65
+ for (const face of faces) {
66
+ for (const p of face)
67
+ all.push([p[0], p[1]]);
68
+ if (face.length < 3)
69
+ continue;
70
+ // Newell normal: its z is twice the projected signed area.
71
+ let nx = 0, ny = 0, nz = 0;
72
+ for (let i = 0; i < face.length; i++) {
73
+ const p = face[i], q = face[(i + 1) % face.length];
74
+ nx += (p[1] - q[1]) * (p[2] + q[2]);
75
+ ny += (p[2] - q[2]) * (p[0] + q[0]);
76
+ nz += (p[0] - q[0]) * (p[1] + q[1]);
77
+ }
78
+ if (nz <= 0.1 * Math.hypot(nx, ny, nz))
79
+ continue;
80
+ for (let i = 0; i < face.length; i++) {
81
+ const a = key(face[i]), b = key(face[(i + 1) % face.length]);
82
+ if (a === b)
83
+ continue;
84
+ at.set(a, [face[i][0], face[i][1]]);
85
+ directed.push([a, b]);
86
+ const undirected = a < b ? `${a}|${b}` : `${b}|${a}`;
87
+ uses.set(undirected, (uses.get(undirected) ?? 0) + 1);
88
+ }
89
+ }
90
+ const next = new Map();
91
+ for (const [a, b] of directed) {
92
+ if (uses.get(a < b ? `${a}|${b}` : `${b}|${a}`) !== 1)
93
+ continue;
94
+ (next.get(a) ?? next.set(a, []).get(a)).push(b);
95
+ }
96
+ let best = null;
97
+ let bestArea = 0;
98
+ for (const start of [...next.keys()]) {
99
+ while ((next.get(start)?.length ?? 0) > 0) {
100
+ const loop = [];
101
+ let cur = start;
102
+ for (let guard = 0; guard <= directed.length; guard++) {
103
+ const outs = next.get(cur);
104
+ if (!outs || outs.length === 0)
105
+ break;
106
+ loop.push(at.get(cur));
107
+ cur = outs.pop();
108
+ if (cur === start)
109
+ break;
110
+ }
111
+ const area = cur === start ? signedArea(loop) : 0;
112
+ if (loop.length >= 3 && Math.abs(area) > bestArea) {
113
+ bestArea = Math.abs(area);
114
+ best = loop;
115
+ }
116
+ }
117
+ }
118
+ if (best)
119
+ return signedArea(best) < 0 ? best.reverse() : best;
120
+ const hull = convexHull(all);
121
+ return hull.length >= 3 ? hull : null;
122
+ }
123
+ const list = (v) => (Array.isArray(v) ? v : []);
124
+ /** The faces of an IfcTriangulatedFaceSet / IfcPolygonalFaceSet as 3D polygons. */
125
+ function faceSetFaces(store, extractor, overlay, item, polygonal) {
126
+ const coordId = numericAttr(item.attributes[0]);
127
+ const coords = coordId === null ? null : readEntity(store, extractor, overlay, coordId);
128
+ const points = list(coords?.attributes[0]).map((p) => readVec3(p));
129
+ // PnIndex (triangulated: 4, polygonal: 3) remaps face indices into the point list.
130
+ const pn = list(item.attributes[polygonal ? 3 : 4]).map((v) => numericAttr(v));
131
+ const point = (index) => {
132
+ const i = numericAttr(index);
133
+ if (i === null)
134
+ return null;
135
+ const j = pn.length > 0 ? pn[i - 1] : i;
136
+ return j === null || j === undefined ? null : points[j - 1] ?? null;
137
+ };
138
+ const loops = polygonal
139
+ ? list(item.attributes[2]).map((ref) => {
140
+ const id = numericAttr(ref);
141
+ return list(id === null ? undefined : readEntity(store, extractor, overlay, id)?.attributes[0]);
142
+ })
143
+ : list(item.attributes[3]).map((tri) => list(tri));
144
+ return loops.map((loop) => loop.map(point)).filter((f) => f.every((p) => p !== null));
145
+ }
146
+ /** The faces of an IfcFacetedBrep (every bound's polyloop) as 3D polygons. */
147
+ function brepFaces(store, extractor, overlay, brep) {
148
+ const read = (ref) => {
149
+ const id = numericAttr(ref);
150
+ return id === null ? null : readEntity(store, extractor, overlay, id);
151
+ };
152
+ const faces = [];
153
+ for (const faceRef of list(read(brep.attributes[0])?.attributes[0])) {
154
+ for (const boundRef of list(read(faceRef)?.attributes[0])) {
155
+ const loop = read(read(boundRef)?.attributes[0]);
156
+ const pts = list(loop?.attributes[0]).map((ref) => readVec3(read(ref)?.attributes[0]));
157
+ if (pts.length >= 3 && pts.every((p) => p !== null))
158
+ faces.push(pts);
159
+ }
160
+ }
161
+ return faces;
162
+ }
163
+ /** Drop a repeated closing vertex. */
164
+ function open(ring) {
165
+ const [a, b] = [ring[0], ring[ring.length - 1]];
166
+ return ring.length > 3 && Math.abs(a[0] - b[0]) < 1e-9 && Math.abs(a[1] - b[1]) < 1e-9 ? ring.slice(0, -1) : ring;
167
+ }
168
+ /**
169
+ * The plan footprint RING of a product's body (rep frame, native units): the
170
+ * largest ring over its body items. Null when no item gives one.
171
+ */
172
+ export function bodyFootprintRing(store, extractor, overlay, representationId) {
173
+ const shape = readEntity(store, extractor, overlay, representationId);
174
+ let best = null;
175
+ for (const repRef of list(shape?.attributes[2])) {
176
+ const repId = numericAttr(repRef);
177
+ const rep = repId === null ? null : readEntity(store, extractor, overlay, repId);
178
+ if (!rep || String(rep.attributes[1] ?? '').replace(/'/g, '').toLowerCase() === 'axis')
179
+ continue;
180
+ for (const itemRef of list(rep.attributes[3])) {
181
+ const itemId = numericAttr(itemRef);
182
+ const item = itemId === null ? null : readEntity(store, extractor, overlay, itemId);
183
+ if (!item || itemId === null)
184
+ continue;
185
+ const type = resolveEntityTypeName(store, item, itemId);
186
+ let ring = null;
187
+ if (type === 'ifcextrudedareasolid') {
188
+ const pts = [];
189
+ gatherExtrudedFootprint(store, extractor, overlay, item, pts);
190
+ ring = pts.length >= 3 ? open(pts) : null;
191
+ }
192
+ else if (type === 'ifctriangulatedfaceset' || type === 'ifcpolygonalfaceset') {
193
+ ring = facetedFootprint(faceSetFaces(store, extractor, overlay, item, type === 'ifcpolygonalfaceset'));
194
+ }
195
+ else if (type === 'ifcfacetedbrep') {
196
+ ring = facetedFootprint(brepFaces(store, extractor, overlay, item));
197
+ }
198
+ if (ring && ring.length >= 3 && (!best || Math.abs(signedArea(ring)) > Math.abs(signedArea(best))))
199
+ best = ring;
200
+ }
201
+ }
202
+ return best;
203
+ }
204
+ /**
205
+ * Every existing IfcSpace's footprint ring, per storey expressId, with its
206
+ * id. Storeys without one are omitted. Refuses the whole store (empty map)
207
+ * when the length-unit scale can't be trusted — the same refusal
208
+ * `storeyPlanFrame` makes on the write side, so the two never disagree.
209
+ */
210
+ export function existingSpaceFootprintEntriesByStorey(store, overlay) {
211
+ const out = new Map();
212
+ if (!store.source)
213
+ return out;
214
+ const extractor = new EntityExtractor(store.source);
215
+ const scale = safeLengthUnitScale(store.source, store.entityIndex, 'existingSpaceFootprintsByStorey');
216
+ if (scale === null)
217
+ return out;
218
+ // Spaces authored this session count as existing (#5249).
219
+ const lookup = createOverlayLookup(overlay);
220
+ const aggregated = buildRelatingChildrenIndex(store, extractor, lookup, 'IFCRELAGGREGATES', 4, 5);
221
+ const contained = buildRelatingChildrenIndex(store, extractor, lookup, 'IFCRELCONTAINEDINSPATIALSTRUCTURE', 5, 4);
222
+ for (const storeyId of effectiveStoreyIds(store, lookup)) {
223
+ const kids = [...(aggregated.get(storeyId) ?? []), ...(contained.get(storeyId) ?? [])];
224
+ const storeyChain = storeyPlacementChain(store, extractor, overlay, storeyId);
225
+ const entries = [];
226
+ for (const id of kids) {
227
+ if ((effectiveMemberType(store, lookup, id) ?? '').toUpperCase() !== 'IFCSPACE')
228
+ continue;
229
+ const ent = readEntity(store, extractor, overlay, id);
230
+ const placementId = numericAttr(ent?.attributes[5]); // ObjectPlacement
231
+ const representationId = numericAttr(ent?.attributes[6]); // Representation
232
+ if (placementId === null || representationId === null)
233
+ continue;
234
+ const frame = frameInStoreyFrame(store, extractor, overlay, placementId, storeyChain);
235
+ const ring = bodyFootprintRing(store, extractor, overlay, representationId);
236
+ if (!frame || !ring)
237
+ continue;
238
+ entries.push({ expressId: id, footprint: ring.map((p) => {
239
+ const w = applyFrame(frame, p);
240
+ return [w[0] * scale, w[1] * scale];
241
+ }) });
242
+ }
243
+ if (entries.length)
244
+ out.set(storeyId, entries);
245
+ }
246
+ return out;
247
+ }
248
+ /**
249
+ * Footprint rings (storey-local metres) of existing `IfcSpace` per storey,
250
+ * so generation can skip only the new rooms that overlap a present space.
251
+ * See `existingSpaceFootprintEntriesByStorey`, which also names each space.
252
+ */
253
+ export function existingSpaceFootprintsByStorey(store, overlay) {
254
+ const out = new Map();
255
+ for (const [storeyId, entries] of existingSpaceFootprintEntriesByStorey(store, overlay)) {
256
+ out.set(storeyId, entries.map((e) => e.footprint));
257
+ }
258
+ return out;
259
+ }
260
+ //# sourceMappingURL=space-footprints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-footprints.js","sourceRoot":"","sources":["../../src/in-store/space-footprints.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../src/in-store/space.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE3E,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB;8CAC0C;IAC1C,kBAAkB,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5D,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;qEACiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC;;;;sCAIkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;wDACoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA4BD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,kBAAkB,GACzB,gBAAgB,CAkIlB"}
1
+ {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../src/in-store/space.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE3E,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB;8CAC0C;IAC1C,kBAAkB,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5D,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;qEACiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC;;;;sCAIkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;wDACoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA4BD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,kBAAkB,GACzB,gBAAgB,CA8IlB"}
@@ -15,6 +15,7 @@
15
15
  * (.INTERNAL.), ElevationWithFlooring
16
16
  */
17
17
  import { generateIfcGuid } from '@ifc-lite/encoding';
18
+ import { getSchemaRegistryForVersion } from '@ifc-lite/parser';
18
19
  import { assertFinitePoint3 } from '../ifc-creator-math.js';
19
20
  import { toNativeLength } from './anchor.js';
20
21
  import { assertPositiveFinite, emitBodyRepresentation, emitExtrudedSolid, emitLocalPlacement, emitPolygonProfile, emitRectangleProfile, ownerHistoryRef, productGuid } from './_emit-helpers.js';
@@ -53,6 +54,17 @@ export function addSpaceToStore(editor, anchor, params) {
53
54
  if (!polygon) {
54
55
  assertPositiveFinite([params.Width, params.Depth], 'addSpaceToStore: Width and Depth must be positive');
55
56
  }
57
+ const PredefinedType = params.PredefinedType ?? 'INTERNAL';
58
+ // IFC2X3's occurrence uses InteriorOrExteriorSpace, not IfcSpaceTypeEnum.
59
+ // IFCX uses the existing IFC4 positional adapter for basic spaces.
60
+ const registry = getSchemaRegistryForVersion(anchor.schema === 'IFC2X3' || anchor.schema === 'IFC4X3' ? anchor.schema : 'IFC4');
61
+ const classification = registry.entities.IfcSpace.allAttributes[9];
62
+ if (!registry.enums[classification.type].includes(PredefinedType)) {
63
+ throw new Error(`addSpaceToStore: IfcSpace.${classification.name} must be one of ${registry.enums[classification.type].join(', ')}`);
64
+ }
65
+ if (PredefinedType === 'USERDEFINED' && !params.ObjectType?.trim()) {
66
+ throw new Error('addSpaceToStore: IfcSpace.ObjectType is required for USERDEFINED');
67
+ }
56
68
  // Geometry coordinates must land in the file's native length unit —
57
69
  // params are metres, the file may be millimetres (a space baked into a
58
70
  // mm model used to export 1000× too small). Quantities keep their own
@@ -80,7 +92,7 @@ export function addSpaceToStore(editor, anchor, params) {
80
92
  `#${productShapeId}`,
81
93
  params.LongName ?? null,
82
94
  '.ELEMENT.',
83
- `.${params.PredefinedType ?? 'INTERNAL'}.`,
95
+ `.${PredefinedType}.`,
84
96
  null,
85
97
  ];
86
98
  const spaceId = editor.addEntity('IfcSpace', attrs).expressId;
@@ -119,10 +131,10 @@ export function addSpaceToStore(editor, anchor, params) {
119
131
  ]);
120
132
  // Pset_SpaceCommon — the standard IfcSpace pset, so the space carries real
121
133
  // properties (not just an empty schema template). Planned areas mirror the
122
- // measured ones; interior space ⇒ not external by default.
134
+ // measured ones; EXTERNAL must agree with IsExternal per Pset_SpaceCommon.
123
135
  editor.addPropertySet(spaceId, 'Pset_SpaceCommon', [
124
136
  { name: 'Reference', value: params.Name ?? '', type: 'LABEL' },
125
- { name: 'IsExternal', value: false, type: 'BOOLEAN' },
137
+ { name: 'IsExternal', value: PredefinedType === 'EXTERNAL', type: 'BOOLEAN' },
126
138
  { name: 'GrossPlannedArea', value: grossArea, type: 'REAL' },
127
139
  { name: 'NetPlannedArea', value: params.netFloorArea ?? area, type: 'REAL' },
128
140
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"space.js","sourceRoot":"","sources":["../../src/in-store/space.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAsB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgFjM,4CAA4C;AAC5C,SAAS,WAAW,CAAC,GAA6C;IAChE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,4BAA4B;AAC5B,SAAS,gBAAgB,CAAC,GAA6C;IACrE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,eAAe,CAAC,CAAqB;IAC5C,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,MAAqB,EACrB,MAA0B;IAE1B,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,eAAe,GAA6B,OAAO;QACvD,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEpB,oBAAoB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,0CAA0C,CAAC,CAAC;IAClF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,oBAAoB,CAClB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAC5B,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,uEAAuE;IACvE,sEAAsE;IACtE,uEAAuE;IACvE,MAAM,CAAC,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,kBAAkB,CACpC,MAAM,EACN,MAAM,CAAC,iBAAiB,EACxB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;IACF,MAAM,SAAS,GAAG,OAAO;QACvB,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAErG,4BAA4B;IAC5B,2DAA2D;IAC3D,gEAAgE;IAChE,qEAAqE;IACrE,8DAA8D;IAC9D,uEAAuE;IACvE,MAAM,KAAK,GAAmB;QAC5B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC;QACtC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC;QACtC,MAAM,CAAC,IAAI,IAAI,OAAO;QACtB,MAAM,CAAC,WAAW,IAAI,IAAI;QAC1B,MAAM,CAAC,UAAU,IAAI,IAAI;QACzB,IAAI,WAAW,EAAE;QACjB,IAAI,cAAc,EAAE;QACpB,MAAM,CAAC,QAAQ,IAAI,IAAI;QACvB,WAAW;QACX,IAAI,MAAM,CAAC,cAAc,IAAI,UAAU,GAAG;QAC1C,IAAI;KACL,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,KAAgD,CAAC,CAAC,SAAS,CAAC;IAEzG,0DAA0D;IAC1D,gEAAgE;IAChE,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE;QAC3D,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;QAClC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC;QACtC,IAAI;QACJ,IAAI;QACJ,IAAI,MAAM,CAAC,QAAQ,EAAE;QACrB,CAAC,IAAI,OAAO,EAAE,CAAC;KAChB,CAAC,CAAC,SAAS,CAAC;IAEb,+EAA+E;IAC/E,yEAAyE;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,wEAAwE;IACxE,qEAAqE;IACrE,kEAAkE;IAClE,iEAAiE;IACjE,mEAAmE;IACnE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACpF,MAAM,SAAS,GAAG,OAAO;QACvB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;QACrC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;IAChD,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,yBAAyB,EAAE;QACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE;QAClE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE;QAClF,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE;QACvE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE;QACnE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;KAClF,CAAC,CAAC;IAEH,2EAA2E;IAC3E,2EAA2E;IAC3E,2DAA2D;IAC3D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE;QACjD,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE;QACrD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;QAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;KAC7E,CAAC,CAAC;IAEH,6EAA6E;IAC7E,oEAAoE;IACpE,0EAA0E;IAC1E,6EAA6E;IAC7E,6DAA6D;IAC7D,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE;YACzD,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;YAClC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC;YACtC,IAAI;YACJ,IAAI;YACJ,IAAI,OAAO,EAAE;YACb,IAAI,QAAQ,CAAC,SAAS,EAAE;YACxB,IAAI;YACJ,IAAI,QAAQ,CAAC,iBAAiB,IAAI,UAAU,GAAG;YAC/C,IAAI,QAAQ,CAAC,kBAAkB,IAAI,YAAY,GAAG;SACR,CAAC,CAAC,SAAS,CAAC;QACxD,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;QACL,OAAO;QACP,WAAW;QACX,SAAS;QACT,OAAO;QACP,UAAU;QACV,cAAc;QACd,eAAe;QACf,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"space.js","sourceRoot":"","sources":["../../src/in-store/space.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAsB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgFjM,4CAA4C;AAC5C,SAAS,WAAW,CAAC,GAA6C;IAChE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED,4BAA4B;AAC5B,SAAS,gBAAgB,CAAC,GAA6C;IACrE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,eAAe,CAAC,CAAqB;IAC5C,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,MAAqB,EACrB,MAA0B;IAE1B,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,eAAe,GAA6B,OAAO;QACvD,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEpB,oBAAoB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,0CAA0C,CAAC,CAAC;IAClF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,oBAAoB,CAClB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAC5B,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,UAAU,CAAC;IAC3D,0EAA0E;IAC1E,mEAAmE;IACnE,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChI,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAc,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,6BAA6B,cAAc,CAAC,IAAI,mBAAmB,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvI,CAAC;IACD,IAAI,cAAc,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,oEAAoE;IACpE,uEAAuE;IACvE,sEAAsE;IACtE,uEAAuE;IACvE,MAAM,CAAC,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,kBAAkB,CACpC,MAAM,EACN,MAAM,CAAC,iBAAiB,EACxB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;IACF,MAAM,SAAS,GAAG,OAAO;QACvB,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,CAAC,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAErG,4BAA4B;IAC5B,2DAA2D;IAC3D,gEAAgE;IAChE,qEAAqE;IACrE,8DAA8D;IAC9D,uEAAuE;IACvE,MAAM,KAAK,GAAmB;QAC5B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC;QACtC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC;QACtC,MAAM,CAAC,IAAI,IAAI,OAAO;QACtB,MAAM,CAAC,WAAW,IAAI,IAAI;QAC1B,MAAM,CAAC,UAAU,IAAI,IAAI;QACzB,IAAI,WAAW,EAAE;QACjB,IAAI,cAAc,EAAE;QACpB,MAAM,CAAC,QAAQ,IAAI,IAAI;QACvB,WAAW;QACX,IAAI,cAAc,GAAG;QACrB,IAAI;KACL,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,KAAgD,CAAC,CAAC,SAAS,CAAC;IAEzG,0DAA0D;IAC1D,gEAAgE;IAChE,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE;QAC3D,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;QAClC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC;QACtC,IAAI;QACJ,IAAI;QACJ,IAAI,MAAM,CAAC,QAAQ,EAAE;QACrB,CAAC,IAAI,OAAO,EAAE,CAAC;KAChB,CAAC,CAAC,SAAS,CAAC;IAEb,+EAA+E;IAC/E,yEAAyE;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,wEAAwE;IACxE,qEAAqE;IACrE,kEAAkE;IAClE,iEAAiE;IACjE,mEAAmE;IACnE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACpF,MAAM,SAAS,GAAG,OAAO;QACvB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;QACrC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC;IAChD,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,yBAAyB,EAAE;QACxD,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE;QAClE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE;QAClF,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE;QACvE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE;QACnE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;KAClF,CAAC,CAAC;IAEH,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,kBAAkB,EAAE;QACjD,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,KAAK,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;QAC7E,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE;QAC5D,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;KAC7E,CAAC,CAAC;IAEH,6EAA6E;IAC7E,oEAAoE;IACpE,0EAA0E;IAC1E,6EAA6E;IAC7E,6DAA6D;IAC7D,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE;YACzD,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;YAClC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC;YACtC,IAAI;YACJ,IAAI;YACJ,IAAI,OAAO,EAAE;YACb,IAAI,QAAQ,CAAC,SAAS,EAAE;YACxB,IAAI;YACJ,IAAI,QAAQ,CAAC,iBAAiB,IAAI,UAAU,GAAG;YAC/C,IAAI,QAAQ,CAAC,kBAAkB,IAAI,YAAY,GAAG;SACR,CAAC,CAAC,SAAS,CAAC;QACxD,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;QACL,OAAO;QACP,WAAW;QACX,SAAS;QACT,OAAO;QACP,UAAU;QACV,cAAc;QACd,eAAe;QACf,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * `IfcRelAggregates` / `IfcRelContainedInSpatialStructure` by their relating
7
7
  * element. That index was built from the parsed type buckets only. So:
8
8
  * - a wall deleted this session was still a room divider;
9
- * - a space baked in an earlier Space Sketch run (overlay-created, together
9
+ * - a space written by an earlier Room tool run (overlay-created, together
10
10
  * with its containment relationship) was not an "existing space", so
11
11
  * baking again produced a duplicate room on top of it.
12
12
  *
@@ -9,7 +9,7 @@
9
9
  * `IfcRelAggregates` / `IfcRelContainedInSpatialStructure` by their relating
10
10
  * element. That index was built from the parsed type buckets only. So:
11
11
  * - a wall deleted this session was still a room divider;
12
- * - a space baked in an earlier Space Sketch run (overlay-created, together
12
+ * - a space written by an earlier Room tool run (overlay-created, together
13
13
  * with its containment relationship) was not an "existing space", so
14
14
  * baking again produced a duplicate room on top of it.
15
15
  *
@@ -0,0 +1,24 @@
1
+ /** Strict occurrence edits of the single stepped flight built by stair.ts
2
+ * (#6232). No inferred box, mapped shape, landing or multi-flight rewrite. */
3
+ import type { IfcDataStore } from '@ifc-lite/parser';
4
+ import type { MutablePropertyView, StoreEditor } from '@ifc-lite/mutations';
5
+ export interface StairDimensions {
6
+ readonly stairId: number;
7
+ readonly flightId: number;
8
+ readonly NumberOfRisers: number;
9
+ /** Metres, measured from the held flight foot. */
10
+ readonly Width: number;
11
+ readonly RiserHeight: number;
12
+ readonly TreadLength: number;
13
+ /** Absent for a flight solid down to its base. */
14
+ readonly WaistThickness?: number;
15
+ }
16
+ export type StairDimensionEdit = Partial<Pick<StairDimensions, 'Width' | 'RiserHeight' | 'TreadLength' | 'WaistThickness'>>;
17
+ /** Parent and flight resolve to the same strict, single-flight dimensions. */
18
+ export declare function readStairDimensions(store: IfcDataStore, id: number, view?: MutablePropertyView | null): StairDimensions | null;
19
+ /** Rebuild only the occurrence's canonical stepped body. Placements, the
20
+ * first-riser foot, identities, type/style leaves and source bodies stay held.
21
+ * RiserHeight changes the total rise; TreadLength changes the total run.
22
+ * Atomic refusal for unsupported graphs or dimensions, including late errors. */
23
+ export declare function editStairDimensionsInStore(store: IfcDataStore, editor: StoreEditor, id: number, patch: StairDimensionEdit): StairDimensions;
24
+ //# sourceMappingURL=stair-edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stair-edit.d.ts","sourceRoot":"","sources":["../../src/in-store/stair-edit.ts"],"names":[],"mappings":"AAIA;8EAC8E;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAO5E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC;AA+F5H,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAAG,eAAe,GAAG,IAAI,CAE9H;AAED;;;iFAGiF;AACjF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,eAAe,CAiD3I"}