planscript 1.4.0 → 2.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.
- package/LANGUAGE_REFERENCE.md +472 -4
- package/dist/ast/types.d.ts +84 -4
- package/dist/ast/types.d.ts.map +1 -1
- package/dist/cli.js +28 -6
- package/dist/cli.js.map +1 -1
- package/dist/exporters/svg.d.ts +3 -0
- package/dist/exporters/svg.d.ts.map +1 -1
- package/dist/exporters/svg.js +48 -2
- package/dist/exporters/svg.js.map +1 -1
- package/dist/geometry/index.d.ts.map +1 -1
- package/dist/geometry/index.js +7 -0
- package/dist/geometry/index.js.map +1 -1
- package/dist/geometry/types.d.ts +7 -0
- package/dist/geometry/types.d.ts.map +1 -1
- package/dist/lowering/index.d.ts +23 -1
- package/dist/lowering/index.d.ts.map +1 -1
- package/dist/lowering/index.js +374 -28
- package/dist/lowering/index.js.map +1 -1
- package/dist/parser/grammar.d.ts +52 -5
- package/dist/parser/grammar.d.ts.map +1 -1
- package/dist/parser/grammar.js +4927 -2026
- package/dist/parser/grammar.js.map +1 -1
- package/dist/validation/index.d.ts +5 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +215 -0
- package/dist/validation/index.js.map +1 -1
- package/examples/advanced_positioning.psc +225 -0
- package/examples/advanced_positioning.svg +76 -0
- package/examples/courtyard_house.psc +141 -0
- package/examples/courtyard_house.svg +93 -0
- package/examples/orientation.psc +141 -0
- package/examples/orientation.svg +88 -0
- package/examples/zones.psc +275 -0
- package/examples/zones.svg +89 -0
- package/package.json +1 -1
- package/examples/casa_moderna.psc +0 -375
- package/examples/casa_moderna_v2.psc +0 -406
- package/examples/casa_moderna_v3.psc +0 -375
- package/examples/casa_moderna_v5.psc +0 -397
- package/examples/house2.psc +0 -156
- package/examples/house2.svg +0 -103
- package/examples/house3.svg +0 -139
package/dist/lowering/index.js
CHANGED
|
@@ -83,6 +83,54 @@ function getRoomBounds(room) {
|
|
|
83
83
|
maxY: Math.max(...ys),
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
|
+
// Resolve 'auto' dimensions based on extend directive or target room
|
|
87
|
+
function resolveSize(sizeValue, room, targetBounds, resolvedRooms) {
|
|
88
|
+
let x;
|
|
89
|
+
let y;
|
|
90
|
+
// Resolve X dimension
|
|
91
|
+
if (sizeValue.x === 'auto') {
|
|
92
|
+
if (room.extend && room.extend.axis === 'x') {
|
|
93
|
+
// Use extend directive to calculate width
|
|
94
|
+
const fromRoom = resolvedRooms.get(room.extend.from.room);
|
|
95
|
+
const toRoom = resolvedRooms.get(room.extend.to.room);
|
|
96
|
+
if (!fromRoom || !toRoom) {
|
|
97
|
+
throw new LoweringError(`Room "${room.name}" extend references unknown room`, room.name);
|
|
98
|
+
}
|
|
99
|
+
const fromValue = getRoomEdge(fromRoom, room.extend.from.edge);
|
|
100
|
+
const toValue = getRoomEdge(toRoom, room.extend.to.edge);
|
|
101
|
+
x = Math.abs(toValue - fromValue);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
// Default: use target room's width
|
|
105
|
+
x = targetBounds.maxX - targetBounds.minX;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
x = sizeValue.x;
|
|
110
|
+
}
|
|
111
|
+
// Resolve Y dimension
|
|
112
|
+
if (sizeValue.y === 'auto') {
|
|
113
|
+
if (room.extend && room.extend.axis === 'y') {
|
|
114
|
+
// Use extend directive to calculate height
|
|
115
|
+
const fromRoom = resolvedRooms.get(room.extend.from.room);
|
|
116
|
+
const toRoom = resolvedRooms.get(room.extend.to.room);
|
|
117
|
+
if (!fromRoom || !toRoom) {
|
|
118
|
+
throw new LoweringError(`Room "${room.name}" extend references unknown room`, room.name);
|
|
119
|
+
}
|
|
120
|
+
const fromValue = getRoomEdge(fromRoom, room.extend.from.edge);
|
|
121
|
+
const toValue = getRoomEdge(toRoom, room.extend.to.edge);
|
|
122
|
+
y = Math.abs(toValue - fromValue);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Default: use target room's height
|
|
126
|
+
y = targetBounds.maxY - targetBounds.minY;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
y = sizeValue.y;
|
|
131
|
+
}
|
|
132
|
+
return { x, y };
|
|
133
|
+
}
|
|
86
134
|
function lowerRoomGeometry(room, resolvedRooms) {
|
|
87
135
|
const geometry = room.geometry;
|
|
88
136
|
switch (geometry.type) {
|
|
@@ -104,9 +152,10 @@ function lowerRoomGeometry(room, resolvedRooms) {
|
|
|
104
152
|
throw new LoweringError(`Room "${room.name}" attaches to unknown room "${room.attach.target}"`, room.name);
|
|
105
153
|
}
|
|
106
154
|
const targetBounds = getRoomBounds(targetRoom);
|
|
107
|
-
const
|
|
155
|
+
const sizeValue = geometry.size;
|
|
108
156
|
const gap = room.gap?.distance ?? 0;
|
|
109
|
-
|
|
157
|
+
// Resolve auto dimensions based on extend directive or target room
|
|
158
|
+
const resolvedSize = resolveSize(sizeValue, room, targetBounds, resolvedRooms);
|
|
110
159
|
let x;
|
|
111
160
|
let y;
|
|
112
161
|
// Determine position based on direction
|
|
@@ -115,47 +164,155 @@ function lowerRoomGeometry(room, resolvedRooms) {
|
|
|
115
164
|
x = targetBounds.maxX + gap;
|
|
116
165
|
break;
|
|
117
166
|
case 'west_of':
|
|
118
|
-
x = targetBounds.minX -
|
|
167
|
+
x = targetBounds.minX - resolvedSize.x - gap;
|
|
119
168
|
break;
|
|
120
169
|
case 'north_of':
|
|
121
170
|
y = targetBounds.maxY + gap;
|
|
122
171
|
break;
|
|
123
172
|
case 'south_of':
|
|
124
|
-
y = targetBounds.minY -
|
|
173
|
+
y = targetBounds.minY - resolvedSize.y - gap;
|
|
125
174
|
break;
|
|
126
175
|
}
|
|
127
|
-
// Determine alignment
|
|
128
|
-
|
|
129
|
-
|
|
176
|
+
// Determine alignment - check for explicit or simple alignment
|
|
177
|
+
const align = room.align;
|
|
178
|
+
if (align && 'myEdge' in align) {
|
|
179
|
+
// Explicit alignment: align my left with bedroom.left
|
|
180
|
+
const explicitAlign = align;
|
|
181
|
+
const withRoom = resolvedRooms.get(explicitAlign.withRoom);
|
|
182
|
+
if (!withRoom) {
|
|
183
|
+
throw new LoweringError(`Room "${room.name}" aligns with unknown room "${explicitAlign.withRoom}"`, room.name);
|
|
184
|
+
}
|
|
185
|
+
const withValue = getRoomEdge(withRoom, explicitAlign.withEdge);
|
|
186
|
+
// Calculate position based on which edge we're aligning
|
|
187
|
+
switch (explicitAlign.myEdge) {
|
|
188
|
+
case 'left':
|
|
189
|
+
x = withValue;
|
|
190
|
+
break;
|
|
191
|
+
case 'right':
|
|
192
|
+
x = withValue - resolvedSize.x;
|
|
193
|
+
break;
|
|
130
194
|
case 'top':
|
|
131
|
-
y =
|
|
195
|
+
y = withValue - resolvedSize.y;
|
|
132
196
|
break;
|
|
133
197
|
case 'bottom':
|
|
134
|
-
y =
|
|
198
|
+
y = withValue;
|
|
135
199
|
break;
|
|
136
|
-
case 'center':
|
|
137
|
-
y = (targetBounds.minY + targetBounds.maxY) / 2 - size.y / 2;
|
|
138
|
-
break;
|
|
139
|
-
default:
|
|
140
|
-
y = targetBounds.minY;
|
|
141
200
|
}
|
|
142
201
|
}
|
|
143
202
|
else {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
203
|
+
// Simple alignment
|
|
204
|
+
const simpleAlign = align;
|
|
205
|
+
const alignment = simpleAlign?.alignment ?? 'center';
|
|
206
|
+
if (room.attach.direction === 'east_of' || room.attach.direction === 'west_of') {
|
|
207
|
+
switch (alignment) {
|
|
208
|
+
case 'top':
|
|
209
|
+
y = targetBounds.maxY - resolvedSize.y;
|
|
210
|
+
break;
|
|
211
|
+
case 'bottom':
|
|
212
|
+
y = targetBounds.minY;
|
|
213
|
+
break;
|
|
214
|
+
case 'center':
|
|
215
|
+
y = (targetBounds.minY + targetBounds.maxY) / 2 - resolvedSize.y / 2;
|
|
216
|
+
break;
|
|
217
|
+
default:
|
|
218
|
+
y = targetBounds.minY;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
switch (alignment) {
|
|
223
|
+
case 'left':
|
|
224
|
+
x = targetBounds.minX;
|
|
225
|
+
break;
|
|
226
|
+
case 'right':
|
|
227
|
+
x = targetBounds.maxX - resolvedSize.x;
|
|
228
|
+
break;
|
|
229
|
+
case 'center':
|
|
230
|
+
x = (targetBounds.minX + targetBounds.maxX) / 2 - resolvedSize.x / 2;
|
|
231
|
+
break;
|
|
232
|
+
default:
|
|
233
|
+
x = targetBounds.minX;
|
|
234
|
+
}
|
|
156
235
|
}
|
|
157
236
|
}
|
|
158
|
-
return rectAtSizeToPolygon({ x: x, y: y },
|
|
237
|
+
return rectAtSizeToPolygon({ x: x, y: y }, resolvedSize);
|
|
238
|
+
}
|
|
239
|
+
case 'RoomFill': {
|
|
240
|
+
// Fill between two rooms
|
|
241
|
+
const [room1Name, room2Name] = geometry.between;
|
|
242
|
+
const room1 = resolvedRooms.get(room1Name);
|
|
243
|
+
const room2 = resolvedRooms.get(room2Name);
|
|
244
|
+
if (!room1) {
|
|
245
|
+
throw new LoweringError(`Room "${room.name}" references unknown room "${room1Name}"`, room.name);
|
|
246
|
+
}
|
|
247
|
+
if (!room2) {
|
|
248
|
+
throw new LoweringError(`Room "${room.name}" references unknown room "${room2Name}"`, room.name);
|
|
249
|
+
}
|
|
250
|
+
const bounds1 = getRoomBounds(room1);
|
|
251
|
+
const bounds2 = getRoomBounds(room2);
|
|
252
|
+
// Determine fill direction based on room positions
|
|
253
|
+
// If rooms are separated horizontally, fill horizontally
|
|
254
|
+
// If rooms are separated vertically, fill vertically
|
|
255
|
+
const horizontalGap = Math.max(bounds1.minX, bounds2.minX) - Math.min(bounds1.maxX, bounds2.maxX);
|
|
256
|
+
const verticalGap = Math.max(bounds1.minY, bounds2.minY) - Math.min(bounds1.maxY, bounds2.maxY);
|
|
257
|
+
let minX, maxX, minY, maxY;
|
|
258
|
+
if (horizontalGap > 0) {
|
|
259
|
+
// Rooms are separated horizontally - fill the gap
|
|
260
|
+
minX = Math.min(bounds1.maxX, bounds2.maxX);
|
|
261
|
+
maxX = Math.max(bounds1.minX, bounds2.minX);
|
|
262
|
+
// Use explicit width if provided, or calculate from gap
|
|
263
|
+
if (geometry.width !== undefined) {
|
|
264
|
+
const centerX = (minX + maxX) / 2;
|
|
265
|
+
minX = centerX - geometry.width / 2;
|
|
266
|
+
maxX = centerX + geometry.width / 2;
|
|
267
|
+
}
|
|
268
|
+
// Y spans from the max of the bottom edges to the min of the top edges
|
|
269
|
+
minY = Math.max(bounds1.minY, bounds2.minY);
|
|
270
|
+
maxY = Math.min(bounds1.maxY, bounds2.maxY);
|
|
271
|
+
// Use explicit height if provided
|
|
272
|
+
if (geometry.height !== undefined) {
|
|
273
|
+
const centerY = (minY + maxY) / 2;
|
|
274
|
+
minY = centerY - geometry.height / 2;
|
|
275
|
+
maxY = centerY + geometry.height / 2;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
else if (verticalGap > 0) {
|
|
279
|
+
// Rooms are separated vertically - fill the gap
|
|
280
|
+
minY = Math.min(bounds1.maxY, bounds2.maxY);
|
|
281
|
+
maxY = Math.max(bounds1.minY, bounds2.minY);
|
|
282
|
+
// Use explicit height if provided
|
|
283
|
+
if (geometry.height !== undefined) {
|
|
284
|
+
const centerY = (minY + maxY) / 2;
|
|
285
|
+
minY = centerY - geometry.height / 2;
|
|
286
|
+
maxY = centerY + geometry.height / 2;
|
|
287
|
+
}
|
|
288
|
+
// X spans from the max of the left edges to the min of the right edges
|
|
289
|
+
minX = Math.max(bounds1.minX, bounds2.minX);
|
|
290
|
+
maxX = Math.min(bounds1.maxX, bounds2.maxX);
|
|
291
|
+
// Use explicit width if provided
|
|
292
|
+
if (geometry.width !== undefined) {
|
|
293
|
+
const centerX = (minX + maxX) / 2;
|
|
294
|
+
minX = centerX - geometry.width / 2;
|
|
295
|
+
maxX = centerX + geometry.width / 2;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
// Rooms overlap or touch - use the bounding box of both
|
|
300
|
+
minX = Math.min(bounds1.minX, bounds2.minX);
|
|
301
|
+
maxX = Math.max(bounds1.maxX, bounds2.maxX);
|
|
302
|
+
minY = Math.min(bounds1.minY, bounds2.minY);
|
|
303
|
+
maxY = Math.max(bounds1.maxY, bounds2.maxY);
|
|
304
|
+
if (geometry.width !== undefined) {
|
|
305
|
+
const centerX = (minX + maxX) / 2;
|
|
306
|
+
minX = centerX - geometry.width / 2;
|
|
307
|
+
maxX = centerX + geometry.width / 2;
|
|
308
|
+
}
|
|
309
|
+
if (geometry.height !== undefined) {
|
|
310
|
+
const centerY = (minY + maxY) / 2;
|
|
311
|
+
minY = centerY - geometry.height / 2;
|
|
312
|
+
maxY = centerY + geometry.height / 2;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return rectDiagonalToPolygon({ x: minX, y: minY }, { x: maxX, y: maxY });
|
|
159
316
|
}
|
|
160
317
|
case 'RoomRectSpan': {
|
|
161
318
|
const fromRoom = resolvedRooms.get(geometry.spanX.from.room);
|
|
@@ -177,14 +334,183 @@ function lowerRoomGeometry(room, resolvedRooms) {
|
|
|
177
334
|
}
|
|
178
335
|
}
|
|
179
336
|
// ============================================================================
|
|
337
|
+
// Zone Lowering Functions
|
|
338
|
+
// ============================================================================
|
|
339
|
+
// Translate all points in a polygon by an offset
|
|
340
|
+
function translatePolygon(polygon, offset) {
|
|
341
|
+
return polygon.map(p => ({ x: p.x + offset.x, y: p.y + offset.y }));
|
|
342
|
+
}
|
|
343
|
+
// Calculate bounding box from a set of rooms
|
|
344
|
+
function calculateZoneBounds(rooms) {
|
|
345
|
+
if (rooms.length === 0) {
|
|
346
|
+
return { minX: 0, maxX: 0, minY: 0, maxY: 0 };
|
|
347
|
+
}
|
|
348
|
+
let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;
|
|
349
|
+
for (const room of rooms) {
|
|
350
|
+
for (const p of room.polygon) {
|
|
351
|
+
minX = Math.min(minX, p.x);
|
|
352
|
+
maxX = Math.max(maxX, p.x);
|
|
353
|
+
minY = Math.min(minY, p.y);
|
|
354
|
+
maxY = Math.max(maxY, p.y);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return { minX, maxX, minY, maxY };
|
|
358
|
+
}
|
|
359
|
+
// Lower a zone: first lower its rooms in local coordinates, then calculate zone offset
|
|
360
|
+
function lowerZone(zone, resolvedRooms, zoneBounds) {
|
|
361
|
+
// First, lower all rooms within the zone using local coordinates
|
|
362
|
+
const localRooms = new Map();
|
|
363
|
+
for (const room of zone.rooms) {
|
|
364
|
+
const polygon = lowerRoomGeometry(room, localRooms);
|
|
365
|
+
const loweredRoom = {
|
|
366
|
+
name: room.name,
|
|
367
|
+
label: room.label,
|
|
368
|
+
polygon,
|
|
369
|
+
zone: zone.name,
|
|
370
|
+
};
|
|
371
|
+
localRooms.set(room.name, loweredRoom);
|
|
372
|
+
}
|
|
373
|
+
// Calculate the zone's local bounding box (before translation)
|
|
374
|
+
const localBounds = calculateZoneBounds(Array.from(localRooms.values()));
|
|
375
|
+
const zoneWidth = localBounds.maxX - localBounds.minX;
|
|
376
|
+
const zoneHeight = localBounds.maxY - localBounds.minY;
|
|
377
|
+
// Calculate zone offset based on attach directive
|
|
378
|
+
let offsetX = 0;
|
|
379
|
+
let offsetY = 0;
|
|
380
|
+
if (zone.attach) {
|
|
381
|
+
// Check if target is a zone or a room
|
|
382
|
+
const targetZone = zoneBounds.get(zone.attach.target);
|
|
383
|
+
const targetRoom = resolvedRooms.get(zone.attach.target);
|
|
384
|
+
let targetBounds;
|
|
385
|
+
if (targetZone) {
|
|
386
|
+
targetBounds = targetZone;
|
|
387
|
+
}
|
|
388
|
+
else if (targetRoom) {
|
|
389
|
+
targetBounds = getRoomBounds(targetRoom);
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
throw new LoweringError(`Zone "${zone.name}" attaches to unknown zone or room "${zone.attach.target}"`, zone.name);
|
|
393
|
+
}
|
|
394
|
+
const gap = zone.gap?.distance ?? 0;
|
|
395
|
+
// Calculate base position based on direction
|
|
396
|
+
switch (zone.attach.direction) {
|
|
397
|
+
case 'east_of':
|
|
398
|
+
offsetX = targetBounds.maxX + gap - localBounds.minX;
|
|
399
|
+
break;
|
|
400
|
+
case 'west_of':
|
|
401
|
+
offsetX = targetBounds.minX - gap - zoneWidth - localBounds.minX;
|
|
402
|
+
break;
|
|
403
|
+
case 'north_of':
|
|
404
|
+
offsetY = targetBounds.maxY + gap - localBounds.minY;
|
|
405
|
+
break;
|
|
406
|
+
case 'south_of':
|
|
407
|
+
offsetY = targetBounds.minY - gap - zoneHeight - localBounds.minY;
|
|
408
|
+
break;
|
|
409
|
+
}
|
|
410
|
+
// Apply alignment
|
|
411
|
+
const align = zone.align;
|
|
412
|
+
if (align && 'alignment' in align) {
|
|
413
|
+
const alignment = align.alignment;
|
|
414
|
+
if (zone.attach.direction === 'east_of' || zone.attach.direction === 'west_of') {
|
|
415
|
+
switch (alignment) {
|
|
416
|
+
case 'top':
|
|
417
|
+
offsetY = targetBounds.maxY - zoneHeight - localBounds.minY;
|
|
418
|
+
break;
|
|
419
|
+
case 'bottom':
|
|
420
|
+
offsetY = targetBounds.minY - localBounds.minY;
|
|
421
|
+
break;
|
|
422
|
+
case 'center':
|
|
423
|
+
offsetY = (targetBounds.minY + targetBounds.maxY) / 2 - zoneHeight / 2 - localBounds.minY;
|
|
424
|
+
break;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
switch (alignment) {
|
|
429
|
+
case 'left':
|
|
430
|
+
offsetX = targetBounds.minX - localBounds.minX;
|
|
431
|
+
break;
|
|
432
|
+
case 'right':
|
|
433
|
+
offsetX = targetBounds.maxX - zoneWidth - localBounds.minX;
|
|
434
|
+
break;
|
|
435
|
+
case 'center':
|
|
436
|
+
offsetX = (targetBounds.minX + targetBounds.maxX) / 2 - zoneWidth / 2 - localBounds.minX;
|
|
437
|
+
break;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
// Translate all rooms by the offset
|
|
443
|
+
const translatedRooms = [];
|
|
444
|
+
for (const room of localRooms.values()) {
|
|
445
|
+
const translatedRoom = {
|
|
446
|
+
name: room.name,
|
|
447
|
+
label: room.label,
|
|
448
|
+
polygon: translatePolygon(room.polygon, { x: offsetX, y: offsetY }),
|
|
449
|
+
zone: zone.name,
|
|
450
|
+
};
|
|
451
|
+
translatedRooms.push(translatedRoom);
|
|
452
|
+
}
|
|
453
|
+
// Calculate and store the zone's global bounding box
|
|
454
|
+
const globalBounds = calculateZoneBounds(translatedRooms);
|
|
455
|
+
zoneBounds.set(zone.name, {
|
|
456
|
+
name: zone.name,
|
|
457
|
+
...globalBounds,
|
|
458
|
+
});
|
|
459
|
+
return translatedRooms;
|
|
460
|
+
}
|
|
461
|
+
// ============================================================================
|
|
462
|
+
// Courtyard Lowering
|
|
463
|
+
// ============================================================================
|
|
464
|
+
function lowerCourtyard(courtyard) {
|
|
465
|
+
let polygon;
|
|
466
|
+
if (courtyard.geometry.type === 'CourtyardRect') {
|
|
467
|
+
const { p1, p2 } = courtyard.geometry;
|
|
468
|
+
polygon = rectDiagonalToPolygon(p1, p2);
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
polygon = courtyard.geometry.points;
|
|
472
|
+
}
|
|
473
|
+
return {
|
|
474
|
+
name: courtyard.name,
|
|
475
|
+
label: courtyard.label,
|
|
476
|
+
polygon,
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
// ============================================================================
|
|
480
|
+
// Site Info Helpers
|
|
481
|
+
// ============================================================================
|
|
482
|
+
function getOppositeDirection(dir) {
|
|
483
|
+
switch (dir) {
|
|
484
|
+
case 'north': return 'south';
|
|
485
|
+
case 'south': return 'north';
|
|
486
|
+
case 'east': return 'west';
|
|
487
|
+
case 'west': return 'east';
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
function deriveSiteInfo(street, hemisphere = 'north') {
|
|
491
|
+
// In northern hemisphere: sun rises east, sets west
|
|
492
|
+
// In southern hemisphere: sun path is through north, so morning is still east
|
|
493
|
+
// but "good sun" (for living spaces) comes from north instead of south
|
|
494
|
+
const morningSun = 'east';
|
|
495
|
+
const afternoonSun = 'west';
|
|
496
|
+
return {
|
|
497
|
+
street,
|
|
498
|
+
hemisphere,
|
|
499
|
+
back: getOppositeDirection(street),
|
|
500
|
+
morningSun,
|
|
501
|
+
afternoonSun,
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
// ============================================================================
|
|
180
505
|
// Main Lowering Function
|
|
181
506
|
// ============================================================================
|
|
182
507
|
export function lower(program) {
|
|
183
508
|
const plan = program.plan;
|
|
184
509
|
const resolvedRooms = new Map();
|
|
510
|
+
const zoneBounds = new Map();
|
|
185
511
|
// Lower footprint
|
|
186
512
|
const footprint = lowerFootprint(plan.footprint);
|
|
187
|
-
//
|
|
513
|
+
// First, lower standalone rooms (not in zones) - they may be referenced by zones
|
|
188
514
|
for (const room of plan.rooms) {
|
|
189
515
|
const polygon = lowerRoomGeometry(room, resolvedRooms);
|
|
190
516
|
const loweredRoom = {
|
|
@@ -194,6 +520,19 @@ export function lower(program) {
|
|
|
194
520
|
};
|
|
195
521
|
resolvedRooms.set(room.name, loweredRoom);
|
|
196
522
|
}
|
|
523
|
+
// Then, lower zones in order (they can reference standalone rooms or previous zones)
|
|
524
|
+
for (const zone of plan.zones) {
|
|
525
|
+
const zoneRooms = lowerZone(zone, resolvedRooms, zoneBounds);
|
|
526
|
+
// Add zone rooms to the resolved rooms map
|
|
527
|
+
for (const room of zoneRooms) {
|
|
528
|
+
resolvedRooms.set(room.name, room);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
// Lower courtyards
|
|
532
|
+
const courtyards = [];
|
|
533
|
+
for (const courtyard of plan.courtyards) {
|
|
534
|
+
courtyards.push(lowerCourtyard(courtyard));
|
|
535
|
+
}
|
|
197
536
|
// Extract defaults
|
|
198
537
|
const defaults = {};
|
|
199
538
|
if (program.defaults) {
|
|
@@ -204,14 +543,21 @@ export function lower(program) {
|
|
|
204
543
|
defaults.windowWidth = program.defaults.windowWidth;
|
|
205
544
|
}
|
|
206
545
|
}
|
|
546
|
+
// Derive site info if site declaration present
|
|
547
|
+
let site;
|
|
548
|
+
if (program.site) {
|
|
549
|
+
site = deriveSiteInfo(program.site.street, program.site.hemisphere ?? 'north');
|
|
550
|
+
}
|
|
207
551
|
return {
|
|
208
552
|
name: plan.name,
|
|
209
553
|
footprint,
|
|
210
554
|
rooms: Array.from(resolvedRooms.values()),
|
|
555
|
+
courtyards,
|
|
211
556
|
openings: plan.openings,
|
|
212
557
|
wallOverrides: plan.wallOverrides,
|
|
213
558
|
assertions: plan.assertions,
|
|
214
559
|
defaults,
|
|
560
|
+
site,
|
|
215
561
|
};
|
|
216
562
|
}
|
|
217
563
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lowering/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lowering/index.ts"],"names":[],"mappings":"AA8EA,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,OAAO,aAAc,SAAQ,KAAK;IAG7B;IAFT,YACE,OAAe,EACR,QAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,aAAQ,GAAR,QAAQ,CAAS;QAGxB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,SAAS,cAAc,CAAC,SAAoB;IAC1C,IAAI,SAAS,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,2BAA2B;IAC3B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAElC,OAAO;QACL,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;QACpB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;QACpB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;QACpB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAS,EAAE,EAAS;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAElC,OAAO;QACL,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;QACpB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;QACpB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;QACpB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAS,EAAE,IAAW;IACjD,OAAO;QACL,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QACpB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QAC7B,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE;QACtC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAa,EAAE,IAAW;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO;QACL,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE;QAC5C,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE;QAC5C,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE;QAC5C,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,KAAK,EAAE;KAC7C,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAiB,EAAE,IAAyC;IAC/E,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACzB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACzB,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAiB;IACtC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;KACtB,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,SAAS,WAAW,CAClB,SAAoB,EACpB,IAAoB,EACpB,YAAwE,EACxE,aAAuC;IAEvC,IAAI,CAAS,CAAC;IACd,IAAI,CAAS,CAAC;IAEd,sBAAsB;IACtB,IAAI,SAAS,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC5C,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,kCAAkC,EACpD,IAAI,CAAC,IAAI,CACV,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACzD,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,mCAAmC;YACnC,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,sBAAsB;IACtB,IAAI,SAAS,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC5C,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,kCAAkC,EACpD,IAAI,CAAC,IAAI,CACV,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACzD,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,oCAAoC;YACpC,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAC5C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAoB,EACpB,aAAuC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE/B,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,aAAa;YAChB,OAAO,QAAQ,CAAC,MAAM,CAAC;QAEzB,KAAK,kBAAkB;YACrB,OAAO,qBAAqB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEzD,KAAK,gBAAgB;YACnB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEzD,KAAK,oBAAoB;YACvB,OAAO,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEjE,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,4BAA4B;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,gDAAgD,EAClE,IAAI,CAAC,IAAI,CACV,CAAC;YACJ,CAAC;YAED,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,+BAA+B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EACtE,IAAI,CAAC,IAAI,CACV,CAAC;YACJ,CAAC;YAED,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,IAAI,CAAC,CAAC;YAEpC,mEAAmE;YACnE,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;YAE/E,IAAI,CAAS,CAAC;YACd,IAAI,CAAS,CAAC;YAEd,wCAAwC;YACxC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC9B,KAAK,SAAS;oBACZ,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBAC5B,MAAM;gBACR,KAAK,SAAS;oBACZ,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC;oBAC7C,MAAM;gBACR,KAAK,UAAU;oBACb,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBAC5B,MAAM;gBACR,KAAK,UAAU;oBACb,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,GAAG,GAAG,CAAC;oBAC7C,MAAM;YACV,CAAC;YAED,+DAA+D;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC/B,sDAAsD;gBACtD,MAAM,aAAa,GAAG,KAA+B,CAAC;gBACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,+BAA+B,aAAa,CAAC,QAAQ,GAAG,EAC1E,IAAI,CAAC,IAAI,CACV,CAAC;gBACJ,CAAC;gBACD,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAEhE,wDAAwD;gBACxD,QAAQ,aAAa,CAAC,MAAM,EAAE,CAAC;oBAC7B,KAAK,MAAM;wBACT,CAAC,GAAG,SAAS,CAAC;wBACd,MAAM;oBACR,KAAK,OAAO;wBACV,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;wBAC/B,MAAM;oBACR,KAAK,KAAK;wBACR,CAAC,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;wBAC/B,MAAM;oBACR,KAAK,QAAQ;wBACX,CAAC,GAAG,SAAS,CAAC;wBACd,MAAM;gBACV,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,mBAAmB;gBACnB,MAAM,WAAW,GAAG,KAAyC,CAAC;gBAC9D,MAAM,SAAS,GAAG,WAAW,EAAE,SAAS,IAAI,QAAQ,CAAC;gBAErD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC/E,QAAQ,SAAS,EAAE,CAAC;wBAClB,KAAK,KAAK;4BACR,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;4BACvC,MAAM;wBACR,KAAK,QAAQ;4BACX,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;4BACtB,MAAM;wBACR,KAAK,QAAQ;4BACX,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;4BACrE,MAAM;wBACR;4BACE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;oBAC1B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,QAAQ,SAAS,EAAE,CAAC;wBAClB,KAAK,MAAM;4BACT,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;4BACtB,MAAM;wBACR,KAAK,OAAO;4BACV,CAAC,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;4BACvC,MAAM;wBACR,KAAK,QAAQ;4BACX,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;4BACrE,MAAM;wBACR;4BACE,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAE,EAAE,CAAC,EAAE,CAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,yBAAyB;YACzB,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;YAChD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,8BAA8B,SAAS,GAAG,EAC5D,IAAI,CAAC,IAAI,CACV,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,8BAA8B,SAAS,GAAG,EAC5D,IAAI,CAAC,IAAI,CACV,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAErC,mDAAmD;YACnD,yDAAyD;YACzD,qDAAqD;YACrD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAClG,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAEhG,IAAI,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,CAAC;YAE3D,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,kDAAkD;gBAClD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE5C,wDAAwD;gBACxD,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;oBACpC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;gBACtC,CAAC;gBAED,uEAAuE;gBACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE5C,kCAAkC;gBAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;oBACrC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;iBAAM,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC3B,gDAAgD;gBAChD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE5C,kCAAkC;gBAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;oBACrC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvC,CAAC;gBAED,uEAAuE;gBACvE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE5C,iCAAiC;gBACjC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;oBACpC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,wDAAwD;gBACxD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE5C,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;oBACpC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;oBACrC,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YAED,OAAO,qBAAqB,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAEzD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,8BAA8B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAC3E,IAAI,CAAC,IAAI,CACV,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,8BAA8B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,EACzE,IAAI,CAAC,IAAI,CACV,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAE7B,OAAO,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE,CAAC;QAED;YACE,MAAM,IAAI,aAAa,CAAC,0BAA2B,QAAgB,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,iDAAiD;AACjD,SAAS,gBAAgB,CAAC,OAAgB,EAAE,MAAa;IACvD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,6CAA6C;AAC7C,SAAS,mBAAmB,CAAC,KAAoB;IAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC;IAEzE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,uFAAuF;AACvF,SAAS,SAAS,CAChB,IAAoB,EACpB,aAAuC,EACvC,UAAmC;IAEnC,iEAAiE;IACjE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QACF,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IACtD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAEvD,kDAAkD;IAClD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,sCAAsC;QACtC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,YAAwE,CAAC;QAE7E,IAAI,UAAU,EAAE,CAAC;YACf,YAAY,GAAG,UAAU,CAAC;QAC5B,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,aAAa,CACrB,SAAS,IAAI,CAAC,IAAI,uCAAuC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAC9E,IAAI,CAAC,IAAI,CACV,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,IAAI,CAAC,CAAC;QAEpC,6CAA6C;QAC7C,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC9B,KAAK,SAAS;gBACZ,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC;gBACrD,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC;gBACjE,MAAM;YACR,KAAK,UAAU;gBACb,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC;gBACrD,MAAM;YACR,KAAK,UAAU;gBACb,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,GAAG,GAAG,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;gBAClE,MAAM;QACV,CAAC;QAED,kBAAkB;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAK,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;YAClC,MAAM,SAAS,GAAI,KAA8B,CAAC,SAAS,CAAC;YAE5D,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC/E,QAAQ,SAAS,EAAE,CAAC;oBAClB,KAAK,KAAK;wBACR,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;wBAC5D,MAAM;oBACR,KAAK,QAAQ;wBACX,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;wBAC/C,MAAM;oBACR,KAAK,QAAQ;wBACX,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC;wBAC1F,MAAM;gBACV,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,SAAS,EAAE,CAAC;oBAClB,KAAK,MAAM;wBACT,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;wBAC/C,MAAM;oBACR,KAAK,OAAO;wBACV,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC;wBAC3D,MAAM;oBACR,KAAK,QAAQ;wBACX,OAAO,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC;wBACzF,MAAM;gBACV,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,eAAe,GAAkB,EAAE,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QACvC,MAAM,cAAc,GAAgB;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;YACnE,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QACF,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC;IAED,qDAAqD;IACrD,MAAM,YAAY,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAC1D,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,SAAS,cAAc,CAAC,SAA8B;IACpD,IAAI,OAAgB,CAAC;IAErB,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAChD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC;QACtC,OAAO,GAAG,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,OAAO;KACR,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,SAAS,oBAAoB,CAAC,GAAsB;IAClD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;QAC7B,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;QAC7B,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;QAC3B,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAyB,EAAE,aAAyB,OAAO;IACjF,oDAAoD;IACpD,8EAA8E;IAC9E,uEAAuE;IACvE,MAAM,UAAU,GAAsB,MAAM,CAAC;IAC7C,MAAM,YAAY,GAAsB,MAAM,CAAC;IAE/C,OAAO;QACL,MAAM;QACN,UAAU;QACV,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC;QAClC,UAAU;QACV,YAAY;KACb,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,UAAU,KAAK,CAAC,OAAgB;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEjD,kBAAkB;IAClB,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEjD,iFAAiF;IACjF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO;SACR,CAAC;QACF,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,qFAAqF;IACrF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QAE7D,2CAA2C;QAC3C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,mBAAmB;IACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7C,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/C,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,IAAI,IAA0B,CAAC;IAC/B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC;IACjF,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QACzC,UAAU;QACV,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ;QACR,IAAI;KACL,CAAC;AACJ,CAAC"}
|
package/dist/parser/grammar.d.ts
CHANGED
|
@@ -81,31 +81,73 @@ export type DefaultsWindowWidth = {
|
|
|
81
81
|
type: "windowWidth";
|
|
82
82
|
value: Number_1;
|
|
83
83
|
};
|
|
84
|
+
export type SiteDeclaration = AST.SiteDeclaration;
|
|
85
|
+
export type SiteContent = SiteStreet | SiteHemisphere;
|
|
86
|
+
export type SiteStreet = {
|
|
87
|
+
type: "street";
|
|
88
|
+
direction: CardinalDirection;
|
|
89
|
+
};
|
|
90
|
+
export type SiteHemisphere = {
|
|
91
|
+
type: "hemisphere";
|
|
92
|
+
value: Hemisphere;
|
|
93
|
+
};
|
|
94
|
+
export type CardinalDirection = AST.CardinalDirection;
|
|
95
|
+
export type Hemisphere = AST.Hemisphere;
|
|
84
96
|
export type PlanDefinition = AST.PlanDefinition;
|
|
85
|
-
export type PlanContent = Footprint | RoomDefinition | Opening | WallThicknessOverride | Assertion;
|
|
97
|
+
export type PlanContent = Footprint | ZoneDefinition | CourtyardDefinition | RoomDefinition | Opening | WallThicknessOverride | Assertion;
|
|
86
98
|
export type Footprint = FootprintPolygon | FootprintRect;
|
|
87
99
|
export type FootprintPolygon = AST.FootprintPolygon;
|
|
88
100
|
export type FootprintRect = AST.FootprintRect;
|
|
101
|
+
export type ZoneDefinition = AST.ZoneDefinition;
|
|
102
|
+
export type ZoneContent = RoomDefinition | ZoneLabel | AttachDirective | AlignDirective | GapDirective;
|
|
103
|
+
export type ZoneLabel = {
|
|
104
|
+
type: "label";
|
|
105
|
+
value: String_1;
|
|
106
|
+
};
|
|
107
|
+
export type CourtyardDefinition = AST.CourtyardDefinition;
|
|
108
|
+
export type CourtyardContent = CourtyardGeometry | CourtyardLabel;
|
|
109
|
+
export type CourtyardGeometry = CourtyardPolygon | CourtyardRect;
|
|
110
|
+
export type CourtyardRect = AST.CourtyardRect;
|
|
111
|
+
export type CourtyardPolygon = AST.CourtyardPolygon;
|
|
112
|
+
export type CourtyardLabel = {
|
|
113
|
+
type: "label";
|
|
114
|
+
value: String_1;
|
|
115
|
+
};
|
|
89
116
|
export type RoomDefinition = AST.RoomDefinition;
|
|
90
|
-
export type RoomContent = RoomGeometry | RoomLabel | AttachDirective | AlignDirective | GapDirective;
|
|
117
|
+
export type RoomContent = RoomGeometry | RoomLabel | AttachDirective | AlignDirective | GapDirective | ExtendDirective | WidthDirective | HeightDirective;
|
|
91
118
|
export type RoomLabel = {
|
|
92
119
|
type: "label";
|
|
93
120
|
value: String_1;
|
|
94
121
|
};
|
|
95
|
-
export type RoomGeometry = RoomPolygon | RoomRectSpan | RoomRectAtSize | RoomRectCenterSize | RoomRectSizeOnly | RoomRectDiagonal;
|
|
122
|
+
export type RoomGeometry = RoomPolygon | RoomRectSpan | RoomRectAtSize | RoomRectCenterSize | RoomRectSizeOnly | RoomRectDiagonal | RoomFill;
|
|
96
123
|
export type RoomPolygon = AST.RoomPolygon;
|
|
97
124
|
export type RoomRectDiagonal = AST.RoomRectDiagonal;
|
|
98
125
|
export type RoomRectAtSize = AST.RoomRectAtSize;
|
|
99
126
|
export type RoomRectCenterSize = AST.RoomRectCenterSize;
|
|
100
127
|
export type RoomRectSizeOnly = AST.RoomRectSizeOnly;
|
|
128
|
+
export type SizeValue = AST.SizeValue;
|
|
129
|
+
export type DimensionValue = "auto" | Number_1;
|
|
130
|
+
export type RoomFill = AST.RoomFill;
|
|
101
131
|
export type RoomRectSpan = AST.RoomRectSpan;
|
|
102
132
|
export type EdgeReference = AST.EdgeReference;
|
|
103
133
|
export type EdgeRefSide = "left" | "right" | "top" | "bottom";
|
|
104
134
|
export type AttachDirective = AST.AttachDirective;
|
|
105
135
|
export type RelativeDirection = AST.RelativeDirection;
|
|
106
|
-
export type AlignDirective =
|
|
136
|
+
export type AlignDirective = AlignDirectiveExplicit | AlignDirectiveSimple;
|
|
137
|
+
export type AlignDirectiveExplicit = AST.AlignDirectiveExplicit;
|
|
138
|
+
export type AlignDirectiveSimple = AST.AlignDirectiveSimple;
|
|
107
139
|
export type AlignmentType = AST.AlignmentType;
|
|
140
|
+
export type AlignEdge = AST.AlignEdge;
|
|
108
141
|
export type GapDirective = AST.GapDirective;
|
|
142
|
+
export type ExtendDirective = AST.ExtendDirective;
|
|
143
|
+
export type WidthDirective = {
|
|
144
|
+
type: "WidthDirective";
|
|
145
|
+
value: Number_1;
|
|
146
|
+
};
|
|
147
|
+
export type HeightDirective = {
|
|
148
|
+
type: "HeightDirective";
|
|
149
|
+
value: Number_1;
|
|
150
|
+
};
|
|
109
151
|
export type Opening = DoorOpening | WindowOpening;
|
|
110
152
|
export type DoorOpening = AST.DoorOpening;
|
|
111
153
|
export type DoorContent = DoorBetween | DoorOnRoomEdge | DoorOnSharedEdge | DoorAt | DoorWidth | DoorSwing;
|
|
@@ -155,12 +197,17 @@ export type WindowSill = {
|
|
|
155
197
|
};
|
|
156
198
|
export type EdgeSide = AST.EdgeSide;
|
|
157
199
|
export type WallThicknessOverride = AST.WallThicknessOverride;
|
|
158
|
-
export type Assertion = AssertionInsideFootprint | AssertionNoOverlap | AssertionOpeningsOnWalls | AssertionMinRoomArea | AssertionRoomsConnected;
|
|
200
|
+
export type Assertion = AssertionInsideFootprint | AssertionNoOverlap | AssertionOpeningsOnWalls | AssertionMinRoomArea | AssertionRoomsConnected | AssertionOrientationHasWindow | AssertionOrientationNearStreet | AssertionOrientationAwayFromStreet | AssertionOrientationGardenView;
|
|
159
201
|
export type AssertionInsideFootprint = AST.AssertionInsideFootprint;
|
|
160
202
|
export type AssertionNoOverlap = AST.AssertionNoOverlap;
|
|
161
203
|
export type AssertionOpeningsOnWalls = AST.AssertionOpeningsOnWalls;
|
|
162
204
|
export type AssertionMinRoomArea = AST.AssertionMinRoomArea;
|
|
163
205
|
export type AssertionRoomsConnected = AST.AssertionRoomsConnected;
|
|
206
|
+
export type AssertionOrientationHasWindow = AST.AssertionOrientationHasWindow;
|
|
207
|
+
export type AssertionOrientationNearStreet = AST.AssertionOrientationNearStreet;
|
|
208
|
+
export type AssertionOrientationAwayFromStreet = AST.AssertionOrientationAwayFromStreet;
|
|
209
|
+
export type AssertionOrientationGardenView = AST.AssertionOrientationGardenView;
|
|
210
|
+
export type OrientationTarget = AST.OrientationTarget;
|
|
164
211
|
export type Point = AST.Point;
|
|
165
212
|
export type PointList = PointListBracketed | PointListSpaced;
|
|
166
213
|
export type PointListBracketed = [Point, ...AST.Point[]];
|