@pascal-app/core 0.5.1 → 0.7.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 (134) hide show
  1. package/dist/events/bus.d.ts +74 -4
  2. package/dist/events/bus.d.ts.map +1 -1
  3. package/dist/events/bus.js +1 -1
  4. package/dist/hooks/scene-registry/scene-registry.d.ts +2 -0
  5. package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
  6. package/dist/hooks/scene-registry/scene-registry.js +2 -0
  7. package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
  8. package/dist/hooks/spatial-grid/spatial-grid-manager.js +164 -6
  9. package/dist/hooks/spatial-grid/spatial-grid.d.ts +2 -0
  10. package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
  11. package/dist/hooks/spatial-grid/spatial-grid.js +43 -20
  12. package/dist/index.d.ts +9 -13
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +7 -11
  15. package/dist/lib/door-operation.d.ts +7 -0
  16. package/dist/lib/door-operation.d.ts.map +1 -0
  17. package/dist/lib/door-operation.js +25 -0
  18. package/dist/lib/polygon-geometry.d.ts +3 -0
  19. package/dist/lib/polygon-geometry.d.ts.map +1 -0
  20. package/dist/lib/polygon-geometry.js +90 -0
  21. package/dist/lib/slab-polygon.d.ts +3 -0
  22. package/dist/lib/slab-polygon.d.ts.map +1 -0
  23. package/dist/lib/slab-polygon.js +58 -0
  24. package/dist/lib/space-detection.d.ts +10 -17
  25. package/dist/lib/space-detection.d.ts.map +1 -1
  26. package/dist/lib/space-detection.js +666 -453
  27. package/dist/material-library.d.ts +20 -0
  28. package/dist/material-library.d.ts.map +1 -0
  29. package/dist/material-library.js +580 -0
  30. package/dist/schema/asset-url.d.ts +34 -0
  31. package/dist/schema/asset-url.d.ts.map +1 -0
  32. package/dist/schema/asset-url.js +79 -0
  33. package/dist/schema/asset-url.test.d.ts +2 -0
  34. package/dist/schema/asset-url.test.d.ts.map +1 -0
  35. package/dist/schema/asset-url.test.js +138 -0
  36. package/dist/schema/index.d.ts +14 -7
  37. package/dist/schema/index.d.ts.map +1 -1
  38. package/dist/schema/index.js +10 -7
  39. package/dist/schema/material.d.ts +112 -2
  40. package/dist/schema/material.d.ts.map +1 -1
  41. package/dist/schema/material.js +55 -1
  42. package/dist/schema/nodes/ceiling.d.ts +11 -1
  43. package/dist/schema/nodes/ceiling.d.ts.map +1 -1
  44. package/dist/schema/nodes/ceiling.js +6 -0
  45. package/dist/schema/nodes/column.d.ts +520 -0
  46. package/dist/schema/nodes/column.d.ts.map +1 -0
  47. package/dist/schema/nodes/column.js +385 -0
  48. package/dist/schema/nodes/door.d.ts +74 -1
  49. package/dist/schema/nodes/door.d.ts.map +1 -1
  50. package/dist/schema/nodes/door.js +39 -2
  51. package/dist/schema/nodes/fence.d.ts +34 -0
  52. package/dist/schema/nodes/fence.d.ts.map +1 -1
  53. package/dist/schema/nodes/fence.js +5 -0
  54. package/dist/schema/nodes/guide.d.ts +17 -0
  55. package/dist/schema/nodes/guide.d.ts.map +1 -1
  56. package/dist/schema/nodes/guide.js +11 -1
  57. package/dist/schema/nodes/item.d.ts +10 -2
  58. package/dist/schema/nodes/item.d.ts.map +1 -1
  59. package/dist/schema/nodes/item.js +18 -1
  60. package/dist/schema/nodes/level.d.ts +1 -1
  61. package/dist/schema/nodes/level.d.ts.map +1 -1
  62. package/dist/schema/nodes/level.js +6 -0
  63. package/dist/schema/nodes/roof-segment.d.ts +3 -1
  64. package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
  65. package/dist/schema/nodes/roof-segment.js +1 -0
  66. package/dist/schema/nodes/roof.d.ts +108 -0
  67. package/dist/schema/nodes/roof.d.ts.map +1 -1
  68. package/dist/schema/nodes/roof.js +58 -2
  69. package/dist/schema/nodes/scan.d.ts.map +1 -1
  70. package/dist/schema/nodes/scan.js +2 -1
  71. package/dist/schema/nodes/site.d.ts +2 -1
  72. package/dist/schema/nodes/site.d.ts.map +1 -1
  73. package/dist/schema/nodes/slab.d.ts +11 -1
  74. package/dist/schema/nodes/slab.d.ts.map +1 -1
  75. package/dist/schema/nodes/slab.js +7 -0
  76. package/dist/schema/nodes/spawn.d.ts +24 -0
  77. package/dist/schema/nodes/spawn.d.ts.map +1 -0
  78. package/dist/schema/nodes/spawn.js +8 -0
  79. package/dist/schema/nodes/stair-segment.d.ts +3 -1
  80. package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
  81. package/dist/schema/nodes/stair-segment.js +1 -0
  82. package/dist/schema/nodes/stair.d.ts +122 -2
  83. package/dist/schema/nodes/stair.d.ts.map +1 -1
  84. package/dist/schema/nodes/stair.js +72 -2
  85. package/dist/schema/nodes/surface-hole-metadata.d.ts +10 -0
  86. package/dist/schema/nodes/surface-hole-metadata.d.ts.map +1 -0
  87. package/dist/schema/nodes/surface-hole-metadata.js +5 -0
  88. package/dist/schema/nodes/wall.d.ts +87 -1
  89. package/dist/schema/nodes/wall.d.ts.map +1 -1
  90. package/dist/schema/nodes/wall.js +45 -4
  91. package/dist/schema/nodes/window.d.ts +57 -1
  92. package/dist/schema/nodes/window.d.ts.map +1 -1
  93. package/dist/schema/nodes/window.js +29 -0
  94. package/dist/schema/types.d.ts +653 -12
  95. package/dist/schema/types.d.ts.map +1 -1
  96. package/dist/schema/types.js +4 -0
  97. package/dist/store/actions/node-actions.d.ts +1 -1
  98. package/dist/store/actions/node-actions.d.ts.map +1 -1
  99. package/dist/store/actions/node-actions.js +181 -5
  100. package/dist/store/history-control.d.ts +14 -0
  101. package/dist/store/history-control.d.ts.map +1 -0
  102. package/dist/store/history-control.js +22 -0
  103. package/dist/store/use-interactive.d.ts +43 -0
  104. package/dist/store/use-interactive.d.ts.map +1 -1
  105. package/dist/store/use-interactive.js +66 -0
  106. package/dist/store/use-scene.d.ts.map +1 -1
  107. package/dist/store/use-scene.js +307 -3
  108. package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -1
  109. package/dist/systems/ceiling/ceiling-system.js +7 -0
  110. package/dist/systems/fence/fence-system.d.ts.map +1 -1
  111. package/dist/systems/fence/fence-system.js +106 -39
  112. package/dist/systems/roof/roof-system.d.ts.map +1 -1
  113. package/dist/systems/roof/roof-system.js +31 -1
  114. package/dist/systems/slab/slab-system.d.ts.map +1 -1
  115. package/dist/systems/slab/slab-system.js +45 -8
  116. package/dist/systems/stair/stair-opening-sync.d.ts +6 -0
  117. package/dist/systems/stair/stair-opening-sync.d.ts.map +1 -0
  118. package/dist/systems/stair/stair-opening-sync.js +576 -0
  119. package/dist/systems/stair/stair-opening-sync.test.d.ts +2 -0
  120. package/dist/systems/stair/stair-opening-sync.test.d.ts.map +1 -0
  121. package/dist/systems/stair/stair-opening-sync.test.js +65 -0
  122. package/dist/systems/stair/stair-system.d.ts.map +1 -1
  123. package/dist/systems/stair/stair-system.js +119 -2
  124. package/dist/systems/wall/wall-curve.d.ts +43 -0
  125. package/dist/systems/wall/wall-curve.d.ts.map +1 -0
  126. package/dist/systems/wall/wall-curve.js +176 -0
  127. package/dist/systems/wall/wall-footprint.d.ts.map +1 -1
  128. package/dist/systems/wall/wall-footprint.js +16 -2
  129. package/dist/systems/wall/wall-mitering.d.ts +7 -0
  130. package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
  131. package/dist/systems/wall/wall-mitering.js +76 -3
  132. package/dist/systems/wall/wall-system.d.ts.map +1 -1
  133. package/dist/systems/wall/wall-system.js +202 -2
  134. package/package.json +33 -5
@@ -0,0 +1,7 @@
1
+ import type { DoorNode, DoorType } from '../schema/nodes/door';
2
+ export declare const SECTIONAL_GARAGE_RENDER_OPEN_SCALE = 0.88;
3
+ export declare function clampDoorOperationState(value: number | undefined): number;
4
+ export declare function isOperationDoorType(doorType: DoorType | DoorNode['doorType'] | string | undefined): doorType is "folding" | "pocket" | "barn" | "sliding" | "garage-sectional" | "garage-rollup" | "garage-tiltup";
5
+ export declare function getDoorRenderOpenAmount(doorType: DoorType | DoorNode['doorType'], operationState: number | undefined): number;
6
+ export declare function getGarageVisibleOpeningRatio(doorType: DoorType | DoorNode['doorType'], operationState: number | undefined): number;
7
+ //# sourceMappingURL=door-operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"door-operation.d.ts","sourceRoot":"","sources":["../../src/lib/door-operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE9D,eAAO,MAAM,kCAAkC,OAAO,CAAA;AAEtD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,UAEhE;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,SAAS,kHAW/D;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,EACzC,cAAc,EAAE,MAAM,GAAG,SAAS,UAMnC;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,EACzC,cAAc,EAAE,MAAM,GAAG,SAAS,UAOnC"}
@@ -0,0 +1,25 @@
1
+ export const SECTIONAL_GARAGE_RENDER_OPEN_SCALE = 0.88;
2
+ export function clampDoorOperationState(value) {
3
+ return Math.max(0, Math.min(1, value ?? 0));
4
+ }
5
+ export function isOperationDoorType(doorType) {
6
+ return (doorType === 'folding' ||
7
+ doorType === 'pocket' ||
8
+ doorType === 'barn' ||
9
+ doorType === 'sliding' ||
10
+ doorType === 'garage-sectional' ||
11
+ doorType === 'garage-rollup' ||
12
+ doorType === 'garage-tiltup');
13
+ }
14
+ export function getDoorRenderOpenAmount(doorType, operationState) {
15
+ const openAmount = clampDoorOperationState(operationState);
16
+ return doorType === 'garage-sectional'
17
+ ? openAmount * SECTIONAL_GARAGE_RENDER_OPEN_SCALE
18
+ : openAmount;
19
+ }
20
+ export function getGarageVisibleOpeningRatio(doorType, operationState) {
21
+ if (doorType === 'garage-sectional') {
22
+ return Math.min(1, clampDoorOperationState(operationState) / SECTIONAL_GARAGE_RENDER_OPEN_SCALE);
23
+ }
24
+ return clampDoorOperationState(operationState);
25
+ }
@@ -0,0 +1,3 @@
1
+ export declare function insetPolygonFromCentroid(polygon: Array<[number, number]>, inset: number): Array<[number, number]>;
2
+ export declare function simplifyClosedPolygon(polygon: Array<[number, number]>, tolerance: number): Array<[number, number]>;
3
+ //# sourceMappingURL=polygon-geometry.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,90 @@
1
+ export function insetPolygonFromCentroid(polygon, inset) {
2
+ if (inset <= 0) {
3
+ return polygon.map(([x, z]) => [x, z]);
4
+ }
5
+ const centroid = polygon.reduce((acc, [x, z]) => ({ x: acc.x + x, z: acc.z + z }), { x: 0, z: 0 });
6
+ centroid.x /= Math.max(polygon.length, 1);
7
+ centroid.z /= Math.max(polygon.length, 1);
8
+ return polygon.map(([x, z]) => {
9
+ const dx = x - centroid.x;
10
+ const dz = z - centroid.z;
11
+ const length = Math.hypot(dx, dz);
12
+ if (length <= inset + 1e-6) {
13
+ return [x, z];
14
+ }
15
+ const scale = (length - inset) / length;
16
+ return [centroid.x + dx * scale, centroid.z + dz * scale];
17
+ });
18
+ }
19
+ function pointLineDistance(point, start, end) {
20
+ const dx = end[0] - start[0];
21
+ const dz = end[1] - start[1];
22
+ const lengthSquared = dx * dx + dz * dz;
23
+ if (lengthSquared < 1e-9) {
24
+ return Math.hypot(point[0] - start[0], point[1] - start[1]);
25
+ }
26
+ const cross = (point[0] - start[0]) * dz - (point[1] - start[1]) * dx;
27
+ return Math.abs(cross) / Math.sqrt(lengthSquared);
28
+ }
29
+ function dedupePolygonPoints(polygon, tolerance = 1e-6) {
30
+ const deduped = [];
31
+ for (const point of polygon) {
32
+ const previous = deduped[deduped.length - 1];
33
+ if (previous && Math.hypot(point[0] - previous[0], point[1] - previous[1]) <= tolerance) {
34
+ continue;
35
+ }
36
+ deduped.push(point);
37
+ }
38
+ if (deduped.length > 2 &&
39
+ Math.hypot(deduped[0][0] - deduped[deduped.length - 1][0], deduped[0][1] - deduped[deduped.length - 1][1]) <= tolerance) {
40
+ deduped.pop();
41
+ }
42
+ return deduped;
43
+ }
44
+ function simplifyPolyline(points, tolerance) {
45
+ if (points.length <= 2) {
46
+ return points.map(([x, z]) => [x, z]);
47
+ }
48
+ let maxDistance = -1;
49
+ let splitIndex = -1;
50
+ for (let index = 1; index < points.length - 1; index += 1) {
51
+ const distance = pointLineDistance(points[index], points[0], points[points.length - 1]);
52
+ if (distance > maxDistance) {
53
+ maxDistance = distance;
54
+ splitIndex = index;
55
+ }
56
+ }
57
+ if (maxDistance <= tolerance || splitIndex === -1) {
58
+ return [points[0], points[points.length - 1]];
59
+ }
60
+ const left = simplifyPolyline(points.slice(0, splitIndex + 1), tolerance);
61
+ const right = simplifyPolyline(points.slice(splitIndex), tolerance);
62
+ return [...left.slice(0, -1), ...right];
63
+ }
64
+ export function simplifyClosedPolygon(polygon, tolerance) {
65
+ const cleanPolygon = dedupePolygonPoints(polygon);
66
+ if (cleanPolygon.length <= 3 || tolerance <= 0) {
67
+ return cleanPolygon;
68
+ }
69
+ let anchorA = 0;
70
+ let anchorB = Math.floor(cleanPolygon.length / 2);
71
+ let maxDistanceSquared = -1;
72
+ for (let i = 0; i < cleanPolygon.length; i += 1) {
73
+ for (let j = i + 1; j < cleanPolygon.length; j += 1) {
74
+ const dx = cleanPolygon[j][0] - cleanPolygon[i][0];
75
+ const dz = cleanPolygon[j][1] - cleanPolygon[i][1];
76
+ const distanceSquared = dx * dx + dz * dz;
77
+ if (distanceSquared > maxDistanceSquared) {
78
+ maxDistanceSquared = distanceSquared;
79
+ anchorA = i;
80
+ anchorB = j;
81
+ }
82
+ }
83
+ }
84
+ const forward = cleanPolygon.slice(anchorA, anchorB + 1);
85
+ const wrapped = [...cleanPolygon.slice(anchorB), ...cleanPolygon.slice(0, anchorA + 1)];
86
+ const simplifiedForward = simplifyPolyline(forward, tolerance);
87
+ const simplifiedWrapped = simplifyPolyline(wrapped, tolerance);
88
+ const simplified = dedupePolygonPoints([...simplifiedForward.slice(0, -1), ...simplifiedWrapped.slice(0, -1)], tolerance * 0.25);
89
+ return simplified.length >= 3 ? simplified : cleanPolygon;
90
+ }
@@ -0,0 +1,3 @@
1
+ import type { SlabNode } from '../schema';
2
+ export declare function getRenderableSlabPolygon(slabNode: SlabNode): Array<[number, number]>;
3
+ //# sourceMappingURL=slab-polygon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slab-polygon.d.ts","sourceRoot":"","sources":["../../src/lib/slab-polygon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQzC,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAOpF"}
@@ -0,0 +1,58 @@
1
+ import { insetPolygonFromCentroid, simplifyClosedPolygon } from './polygon-geometry';
2
+ /** Half of default wall thickness — used to extend slab geometry under walls */
3
+ const SLAB_OUTSET = 0.05;
4
+ const AUTO_SLAB_INSET = 0.02;
5
+ const AUTO_SLAB_SIMPLIFY_TOLERANCE = 0.08;
6
+ export function getRenderableSlabPolygon(slabNode) {
7
+ return slabNode.autoFromWalls
8
+ ? simplifyClosedPolygon(insetPolygonFromCentroid(slabNode.polygon, AUTO_SLAB_INSET), AUTO_SLAB_SIMPLIFY_TOLERANCE)
9
+ : outsetPolygon(slabNode.polygon, SLAB_OUTSET);
10
+ }
11
+ /**
12
+ * Expand a polygon outward by a uniform distance.
13
+ * Offsets each edge outward then intersects consecutive offset edges.
14
+ */
15
+ function outsetPolygon(polygon, amount) {
16
+ const n = polygon.length;
17
+ if (n < 3)
18
+ return polygon;
19
+ // Determine winding via signed area
20
+ let area2 = 0;
21
+ for (let i = 0; i < n; i++) {
22
+ const j = (i + 1) % n;
23
+ area2 += polygon[i][0] * polygon[j][1] - polygon[j][0] * polygon[i][1];
24
+ }
25
+ const s = area2 >= 0 ? 1 : -1;
26
+ // Offset each edge outward by amount
27
+ const offEdges = [];
28
+ for (let i = 0; i < n; i++) {
29
+ const j = (i + 1) % n;
30
+ const dx = polygon[j][0] - polygon[i][0];
31
+ const dz = polygon[j][1] - polygon[i][1];
32
+ const len = Math.sqrt(dx * dx + dz * dz);
33
+ if (len < 1e-9) {
34
+ offEdges.push([polygon[i][0], polygon[i][1], dx, dz]);
35
+ continue;
36
+ }
37
+ const nx = ((s * dz) / len) * amount;
38
+ const nz = ((s * -dx) / len) * amount;
39
+ offEdges.push([polygon[i][0] + nx, polygon[i][1] + nz, dx, dz]);
40
+ }
41
+ // Intersect consecutive offset edges to get new vertices
42
+ const result = [];
43
+ for (let i = 0; i < n; i++) {
44
+ const j = (i + 1) % n;
45
+ const [ax, az, adx, adz] = offEdges[i];
46
+ const [bx, bz, bdx, bdz] = offEdges[j];
47
+ const denom = adx * bdz - adz * bdx;
48
+ if (Math.abs(denom) < 1e-9) {
49
+ // Parallel edges — use offset endpoint
50
+ result.push([ax + adx, az + adz]);
51
+ }
52
+ else {
53
+ const t = ((bx - ax) * bdz - (bz - az) * bdx) / denom;
54
+ result.push([ax + t * adx, az + t * adz]);
55
+ }
56
+ }
57
+ return result;
58
+ }
@@ -1,4 +1,8 @@
1
- import type { WallNode } from '../schema';
1
+ import { type WallNode } from '../schema';
2
+ type Point2D = {
3
+ x: number;
4
+ y: number;
5
+ };
2
6
  export type Space = {
3
7
  id: string;
4
8
  levelId: string;
@@ -6,29 +10,18 @@ export type Space = {
6
10
  wallIds: string[];
7
11
  isExterior: boolean;
8
12
  };
9
- /**
10
- * Initializes space detection sync with scene and editor stores
11
- * Call this once during app initialization
12
- */
13
- export declare function initSpaceDetectionSync(sceneStore: any, // useScene store
14
- editorStore: any): () => void;
15
13
  type WallSideUpdate = {
16
14
  wallId: string;
17
15
  frontSide: 'interior' | 'exterior' | 'unknown';
18
16
  backSide: 'interior' | 'exterior' | 'unknown';
19
17
  };
20
- /**
21
- * Detects spaces for a level by flood-filling a grid from the edges
22
- * Returns wall side updates and detected spaces
23
- */
24
- export declare function detectSpacesForLevel(levelId: string, walls: WallNode[], gridResolution?: number): {
25
- wallUpdates: WallSideUpdate[];
18
+ export declare function resolveWallSurfaceSides(wall: Pick<WallNode, 'start' | 'end' | 'thickness' | 'frontSide' | 'backSide'>, roomPolygons: Point2D[][]): Pick<WallSideUpdate, 'frontSide' | 'backSide'>;
19
+ export declare function detectSpacesForLevel(levelId: string, walls: WallNode[]): {
20
+ roomPolygons: Point2D[][];
26
21
  spaces: Space[];
22
+ wallUpdates: WallSideUpdate[];
27
23
  };
28
- /**
29
- * Checks if a wall touches any other walls
30
- * Used to determine if space detection should run
31
- */
24
+ export declare function initSpaceDetectionSync(sceneStore: any, editorStore: any): () => void;
32
25
  export declare function wallTouchesOthers(wall: WallNode, otherWalls: WallNode[]): boolean;
33
26
  export {};
34
27
  //# sourceMappingURL=space-detection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"space-detection.d.ts","sourceRoot":"","sources":["../../src/lib/space-detection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAMzC,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;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,GAAG,EAAE,iBAAiB;AAClC,WAAW,EAAE,GAAG,GACf,MAAM,IAAI,CAkGZ;AA+DD,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;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EAAE,EACjB,cAAc,SAAM,GACnB;IACD,WAAW,EAAE,cAAc,EAAE,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAA;CAChB,CAqBA;AAsWD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAkBjF"}
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"}