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.
Files changed (42) hide show
  1. package/LANGUAGE_REFERENCE.md +472 -4
  2. package/dist/ast/types.d.ts +84 -4
  3. package/dist/ast/types.d.ts.map +1 -1
  4. package/dist/cli.js +28 -6
  5. package/dist/cli.js.map +1 -1
  6. package/dist/exporters/svg.d.ts +3 -0
  7. package/dist/exporters/svg.d.ts.map +1 -1
  8. package/dist/exporters/svg.js +48 -2
  9. package/dist/exporters/svg.js.map +1 -1
  10. package/dist/geometry/index.d.ts.map +1 -1
  11. package/dist/geometry/index.js +7 -0
  12. package/dist/geometry/index.js.map +1 -1
  13. package/dist/geometry/types.d.ts +7 -0
  14. package/dist/geometry/types.d.ts.map +1 -1
  15. package/dist/lowering/index.d.ts +23 -1
  16. package/dist/lowering/index.d.ts.map +1 -1
  17. package/dist/lowering/index.js +374 -28
  18. package/dist/lowering/index.js.map +1 -1
  19. package/dist/parser/grammar.d.ts +52 -5
  20. package/dist/parser/grammar.d.ts.map +1 -1
  21. package/dist/parser/grammar.js +4927 -2026
  22. package/dist/parser/grammar.js.map +1 -1
  23. package/dist/validation/index.d.ts +5 -0
  24. package/dist/validation/index.d.ts.map +1 -1
  25. package/dist/validation/index.js +215 -0
  26. package/dist/validation/index.js.map +1 -1
  27. package/examples/advanced_positioning.psc +225 -0
  28. package/examples/advanced_positioning.svg +76 -0
  29. package/examples/courtyard_house.psc +141 -0
  30. package/examples/courtyard_house.svg +93 -0
  31. package/examples/orientation.psc +141 -0
  32. package/examples/orientation.svg +88 -0
  33. package/examples/zones.psc +275 -0
  34. package/examples/zones.svg +89 -0
  35. package/package.json +1 -1
  36. package/examples/casa_moderna.psc +0 -375
  37. package/examples/casa_moderna_v2.psc +0 -406
  38. package/examples/casa_moderna_v3.psc +0 -375
  39. package/examples/casa_moderna_v5.psc +0 -397
  40. package/examples/house2.psc +0 -156
  41. package/examples/house2.svg +0 -103
  42. package/examples/house3.svg +0 -139
@@ -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 size = geometry.size;
155
+ const sizeValue = geometry.size;
108
156
  const gap = room.gap?.distance ?? 0;
109
- const alignment = room.align?.alignment ?? 'center';
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 - size.x - gap;
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 - size.y - gap;
173
+ y = targetBounds.minY - resolvedSize.y - gap;
125
174
  break;
126
175
  }
127
- // Determine alignment
128
- if (room.attach.direction === 'east_of' || room.attach.direction === 'west_of') {
129
- switch (alignment) {
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 = targetBounds.maxY - size.y;
195
+ y = withValue - resolvedSize.y;
132
196
  break;
133
197
  case 'bottom':
134
- y = targetBounds.minY;
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
- switch (alignment) {
145
- case 'left':
146
- x = targetBounds.minX;
147
- break;
148
- case 'right':
149
- x = targetBounds.maxX - size.x;
150
- break;
151
- case 'center':
152
- x = (targetBounds.minX + targetBounds.maxX) / 2 - size.x / 2;
153
- break;
154
- default:
155
- x = targetBounds.minX;
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 }, size);
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
- // Lower rooms in order (dependencies must come first)
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":"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"}
@@ -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 = AST.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[]];