linecraft 0.2.3 → 0.2.5

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 (77) hide show
  1. package/README.md +84 -7
  2. package/lib/components/code-debug.d.ts +7 -1
  3. package/lib/components/code-debug.d.ts.map +1 -1
  4. package/lib/components/code-debug.js +261 -232
  5. package/lib/components/code-debug.js.map +1 -1
  6. package/lib/components/code-debug.test.d.ts +2 -0
  7. package/lib/components/code-debug.test.d.ts.map +1 -0
  8. package/lib/components/code-debug.test.js +253 -0
  9. package/lib/components/code-debug.test.js.map +1 -0
  10. package/lib/components/progress-bar-grid.d.ts.map +1 -1
  11. package/lib/components/progress-bar-grid.js +2 -1
  12. package/lib/components/progress-bar-grid.js.map +1 -1
  13. package/lib/components/progress-bar-grid.test.js +8 -7
  14. package/lib/components/progress-bar-grid.test.js.map +1 -1
  15. package/lib/components/prompt.d.ts.map +1 -1
  16. package/lib/components/prompt.js +2 -1
  17. package/lib/components/prompt.js.map +1 -1
  18. package/lib/components/segments.d.ts.map +1 -1
  19. package/lib/components/segments.js +0 -7
  20. package/lib/components/segments.js.map +1 -1
  21. package/lib/components/style.test.js +12 -11
  22. package/lib/components/style.test.js.map +1 -1
  23. package/lib/components/styled.d.ts +1 -0
  24. package/lib/components/styled.d.ts.map +1 -1
  25. package/lib/components/styled.js +38 -8
  26. package/lib/components/styled.js.map +1 -1
  27. package/lib/components/styled.test.js +12 -11
  28. package/lib/components/styled.test.js.map +1 -1
  29. package/lib/layout/grid.d.ts +3 -2
  30. package/lib/layout/grid.d.ts.map +1 -1
  31. package/lib/layout/grid.js +166 -81
  32. package/lib/layout/grid.js.map +1 -1
  33. package/lib/layout/grid.test.js +70 -3
  34. package/lib/layout/grid.test.js.map +1 -1
  35. package/lib/native/diff.d.ts.map +1 -1
  36. package/lib/native/diff.js +2 -1
  37. package/lib/native/diff.js.map +1 -1
  38. package/lib/native/diff.test.js.map +1 -1
  39. package/lib/native/region-old.js +4 -4
  40. package/lib/native/region-old.js.map +1 -1
  41. package/lib/native/region-renderer.d.ts +3 -2
  42. package/lib/native/region-renderer.d.ts.map +1 -1
  43. package/lib/native/region-renderer.js +39 -9
  44. package/lib/native/region-renderer.js.map +1 -1
  45. package/lib/native/region-simple.d.ts.map +1 -1
  46. package/lib/native/region-simple.js +1 -1
  47. package/lib/native/region-simple.js.map +1 -1
  48. package/lib/region.d.ts +3 -3
  49. package/lib/region.d.ts.map +1 -1
  50. package/lib/region.js +15 -66
  51. package/lib/region.js.map +1 -1
  52. package/lib/types.d.ts +1 -0
  53. package/lib/types.d.ts.map +1 -1
  54. package/lib/utils/colors.d.ts.map +1 -1
  55. package/lib/utils/colors.js +3 -0
  56. package/lib/utils/colors.js.map +1 -1
  57. package/lib/utils/cursor-position.d.ts.map +1 -1
  58. package/lib/utils/cursor-position.js +4 -15
  59. package/lib/utils/cursor-position.js.map +1 -1
  60. package/lib/utils/prompt.js +3 -3
  61. package/lib/utils/prompt.js.map +1 -1
  62. package/lib/utils/terminal-theme.d.ts +5 -4
  63. package/lib/utils/terminal-theme.d.ts.map +1 -1
  64. package/lib/utils/terminal-theme.js +7 -6
  65. package/lib/utils/terminal-theme.js.map +1 -1
  66. package/lib/utils/text.d.ts +91 -2
  67. package/lib/utils/text.d.ts.map +1 -1
  68. package/lib/utils/text.js +765 -72
  69. package/lib/utils/text.js.map +1 -1
  70. package/lib/utils/text.test.d.ts +2 -0
  71. package/lib/utils/text.test.d.ts.map +1 -0
  72. package/lib/utils/text.test.js +237 -0
  73. package/lib/utils/text.test.js.map +1 -0
  74. package/lib/utils/wait-for-spacebar.d.ts.map +1 -1
  75. package/lib/utils/wait-for-spacebar.js +2 -9
  76. package/lib/utils/wait-for-spacebar.js.map +1 -1
  77. package/package.json +7 -3
@@ -1,7 +1,7 @@
1
1
  // CSS Grid-based layout system for terminal components
2
2
  // Simplified grid that eliminates circular measurement complexity
3
3
  import { applyStyle } from '../utils/colors.js';
4
- import { getTrimmedTextWidth, stripAnsi } from '../utils/text.js';
4
+ import { stripAnsi, countVisibleChars, splitAtVisiblePos } from '../utils/text.js';
5
5
  import { callComponent, createChildContext } from '../component.js';
6
6
  /**
7
7
  * Extract character and color from spaceBetween option for a specific gap index
@@ -40,16 +40,27 @@ function parseTemplateEntry(entry) {
40
40
  }
41
41
  throw new Error(`Invalid flex unit: ${entry}. Use format like '*', '1*', '2*'`);
42
42
  }
43
- // Minmax: { min: 40, width: '2*' }
44
- const match = entry.width.match(/^(\d+)\*$/);
45
- if (match) {
46
- return {
47
- type: 'minmax',
48
- value: entry.min,
49
- flexRatio: parseInt(match[1], 10),
50
- };
43
+ // Minmax: { min: 40, max: 100, width: '2*' } or { max: 50, width: '1*' } or { max: 50 } (defaults to '1*')
44
+ const result = {
45
+ type: 'minmax',
46
+ value: entry.min ?? 0,
47
+ max: entry.max,
48
+ hasMin: entry.min !== undefined, // Track if min was explicitly provided
49
+ };
50
+ if (entry.width) {
51
+ const match = entry.width.match(/^(\d+)\*$/);
52
+ if (match) {
53
+ result.flexRatio = parseInt(match[1], 10);
54
+ }
55
+ else {
56
+ throw new Error(`Invalid minmax width: ${entry.width}. Use format like '2*'`);
57
+ }
51
58
  }
52
- throw new Error(`Invalid minmax width: ${entry.width}. Use format like '2*'`);
59
+ else {
60
+ // Default to '1*' if no width specified (for max-only or min+max)
61
+ result.flexRatio = 1;
62
+ }
63
+ return result;
53
64
  }
54
65
  /**
55
66
  * Calculate column widths from template
@@ -108,9 +119,25 @@ function calculateColumnWidths(tracks, availableWidth, columnGap, autoContentWid
108
119
  flexTotal += track.flexRatio ?? 1;
109
120
  }
110
121
  else if (track.type === 'minmax') {
111
- widths[i] = track.value; // Start with min
112
- fixedTotal += track.value;
113
- flexTotal += track.flexRatio ?? 1;
122
+ // If no min specified (hasMin === false) and max is set, use auto content width as starting point
123
+ // Otherwise, use the min value (even if it's 0)
124
+ // Note: hasMin is only set for minmax tracks, so we check it explicitly
125
+ if (track.hasMin === false && track.max !== undefined) {
126
+ // Max-only: use measured content width (clamped to max) as column width
127
+ // Content will be truncated to max during rendering (via availableWidth passed to child)
128
+ // Column width is content-based (no padding for short content), but content truncates to max
129
+ const autoWidth = autoContentWidths[i] ?? 0;
130
+ widths[i] = Math.min(autoWidth, track.max); // Use content width, clamped to max
131
+ // Add content width to fixedTotal so it's accounted for in remainingSpace
132
+ fixedTotal += widths[i];
133
+ // DO NOT add to flexTotal - max-only columns are content-based, not flex-based
134
+ }
135
+ else {
136
+ // Regular minmax with min: participates in flex distribution
137
+ widths[i] = track.value; // Start with min (even if min is 0)
138
+ fixedTotal += track.value;
139
+ flexTotal += track.flexRatio ?? 1;
140
+ }
114
141
  }
115
142
  else if (track.type === 'auto') {
116
143
  const autoWidth = autoContentWidths[i] ?? 0;
@@ -130,8 +157,23 @@ function calculateColumnWidths(tracks, availableWidth, columnGap, autoContentWid
130
157
  widths[i] = (track.flexRatio ?? 1) * flexUnit;
131
158
  }
132
159
  else if (track.type === 'minmax') {
133
- // Add flex space to min width
134
- widths[i] = track.value + (track.flexRatio ?? 1) * flexUnit;
160
+ // For max-only (no min specified), don't add flex space - keep at measured content width
161
+ // For regular minmax (with min), add flex space to min value
162
+ if (track.hasMin) {
163
+ // Regular minmax: add flex space to min value
164
+ widths[i] = widths[i] + (track.flexRatio ?? 1) * flexUnit;
165
+ // Clamp to max if specified
166
+ if (track.max !== undefined) {
167
+ widths[i] = Math.min(widths[i], track.max);
168
+ }
169
+ }
170
+ else {
171
+ // Max-only: don't expand beyond measured content width (already clamped to max in Step 1)
172
+ // Just ensure we don't exceed max
173
+ if (track.max !== undefined) {
174
+ widths[i] = Math.min(widths[i], track.max);
175
+ }
176
+ }
135
177
  }
136
178
  }
137
179
  }
@@ -209,18 +251,31 @@ function getRenderedWidth(result) {
209
251
  return 0;
210
252
  }
211
253
  if (Array.isArray(result)) {
212
- return result.reduce((max, line) => Math.max(max, getTrimmedTextWidth(line)), 0);
254
+ return result.reduce((max, line) => Math.max(max, countVisibleChars(line)), 0);
213
255
  }
214
- return getTrimmedTextWidth(result);
256
+ return countVisibleChars(result);
215
257
  }
216
258
  function measureAutoContentWidths(tracks, children, ctxFactory) {
217
259
  const widths = new Array(tracks.length).fill(0);
218
260
  for (let i = 0; i < tracks.length; i++) {
219
- if (tracks[i].type !== 'auto') {
220
- continue;
261
+ const track = tracks[i];
262
+ // Measure auto columns and minmax columns (for minmax, measure with max constraint if present)
263
+ if (track.type === 'auto') {
264
+ const result = children[i] ? callComponent(children[i], ctxFactory(i)) : null;
265
+ widths[i] = getRenderedWidth(result);
266
+ }
267
+ else if (track.type === 'minmax' && track.max !== undefined) {
268
+ // For minmax with max, measure with max width constraint so truncation happens during measurement
269
+ const baseCtx = ctxFactory(i);
270
+ const maxWidth = track.max;
271
+ const constrainedCtx = createChildContext(baseCtx, {
272
+ availableWidth: maxWidth,
273
+ columnIndex: i,
274
+ rowIndex: 0,
275
+ });
276
+ const result = children[i] ? callComponent(children[i], constrainedCtx) : null;
277
+ widths[i] = getRenderedWidth(result);
221
278
  }
222
- const result = children[i] ? callComponent(children[i], ctxFactory(i)) : null;
223
- widths[i] = getRenderedWidth(result);
224
279
  }
225
280
  return widths;
226
281
  }
@@ -231,11 +286,10 @@ function measureAutoContentWidths(tracks, children, ctxFactory) {
231
286
  */
232
287
  export function grid(options, ...children) {
233
288
  // Convert children to Components
234
- const convertedChildren = children.map(child => {
289
+ const convertedChildren = children.map((child) => {
235
290
  if (typeof child === 'string') {
236
- // Import Styled dynamically to avoid circular dependency
237
- const { Styled } = require('../components/styled');
238
- return Styled({}, child);
291
+ // Convert string to a simple component that returns the string
292
+ return (ctx) => child;
239
293
  }
240
294
  // If it's an object with a render method, extract the render function
241
295
  if (typeof child === 'object' && child !== null && 'render' in child && typeof child.render === 'function') {
@@ -252,9 +306,12 @@ export function grid(options, ...children) {
252
306
  return null;
253
307
  }
254
308
  // Determine number of explicit columns
309
+ // When using template, auto-repeat for extra children (don't wrap)
310
+ // When using columns without autoColumns, wrap to new rows
255
311
  const explicitColumns = columns ?? template ?? [];
256
- const numColumns = explicitColumns.length > 0 ? explicitColumns.length : 1;
257
- // Group children into rows (wrap when exceeding numColumns)
312
+ const shouldAutoRepeat = template !== undefined || autoColumns !== undefined;
313
+ const numColumns = shouldAutoRepeat ? validChildren.length : (explicitColumns.length > 0 ? explicitColumns.length : 1);
314
+ // Group children into rows (wrap when exceeding numColumns, unless auto-repeat)
258
315
  const rowsData = [];
259
316
  for (let i = 0; i < validChildren.length; i += numColumns) {
260
317
  rowsData.push(validChildren.slice(i, i + numColumns));
@@ -282,8 +339,14 @@ export function grid(options, ...children) {
282
339
  for (let colIdx = 0; colIdx < rowChildren.length; colIdx++) {
283
340
  const child = rowChildren[colIdx];
284
341
  const width = columnWidths[colIdx] ?? 0;
342
+ const track = tracks[colIdx];
343
+ // For max-only minmax columns, pass max width to child (so it truncates), not column width
344
+ // Column width is content-based (no padding), but content should be truncated to max
345
+ const childWidth = (track?.type === 'minmax' && track?.hasMin === false && track?.max !== undefined)
346
+ ? track.max
347
+ : width;
285
348
  const childCtx = createChildContext(ctx, {
286
- availableWidth: width,
349
+ availableWidth: childWidth,
287
350
  columnIndex: colIdx,
288
351
  rowIndex: rowIdx,
289
352
  });
@@ -304,13 +367,23 @@ export function grid(options, ...children) {
304
367
  else if (Array.isArray(result)) {
305
368
  columnContent = result[lineIdx] ?? '';
306
369
  }
307
- else {
370
+ else if (typeof result === 'string') {
308
371
  columnContent = lineIdx === 0 ? result : '';
309
372
  }
310
- const plainContent = stripAnsi(columnContent);
311
- const paddedContent = plainContent.length < columnWidth
312
- ? columnContent + ' '.repeat(columnWidth - plainContent.length)
313
- : columnContent;
373
+ else {
374
+ columnContent = '';
375
+ }
376
+ const visibleWidth = countVisibleChars(columnContent);
377
+ let finalContent = columnContent;
378
+ if (visibleWidth > columnWidth) {
379
+ // Need to truncate at visible width
380
+ const split = splitAtVisiblePos(columnContent, columnWidth);
381
+ finalContent = split.before;
382
+ }
383
+ const finalVisibleWidth = countVisibleChars(finalContent);
384
+ const paddedContent = finalVisibleWidth < columnWidth
385
+ ? finalContent + ' '.repeat(columnWidth - finalVisibleWidth)
386
+ : finalContent;
314
387
  lineParts.push(paddedContent);
315
388
  // Add column gap
316
389
  if (colIdx < rowChildren.length - 1 && columnGap > 0) {
@@ -363,13 +436,18 @@ export function grid(options, ...children) {
363
436
  // Render each child
364
437
  const results = [];
365
438
  let anyRenderableChild = false;
366
- let currentX = startX;
367
439
  for (let i = 0; i < validChildren.length; i++) {
368
440
  const child = validChildren[i];
369
441
  const width = actualWidths[i] ?? 0;
442
+ const track = tracks[i];
443
+ // For max-only minmax columns, pass max width to child (so it truncates), not column width
444
+ // Column width is content-based (no padding), but content should be truncated to max
445
+ const childWidth = (track?.type === 'minmax' && track?.hasMin === false && track?.max !== undefined)
446
+ ? track.max
447
+ : width;
370
448
  // Create context for child
371
449
  const childCtx = createChildContext(ctx, {
372
- availableWidth: width,
450
+ availableWidth: childWidth,
373
451
  columnIndex: i,
374
452
  rowIndex: 0,
375
453
  });
@@ -392,7 +470,6 @@ export function grid(options, ...children) {
392
470
  results.push(' '.repeat(columnGap));
393
471
  }
394
472
  }
395
- currentX += width + columnGap;
396
473
  }
397
474
  if (!anyRenderableChild) {
398
475
  return null;
@@ -409,34 +486,18 @@ export function grid(options, ...children) {
409
486
  const autoContents = [];
410
487
  let totalAutoWidth = 0;
411
488
  let partIdx = 0;
412
- // Debug: log what we're working with
413
- if (process.env.DEBUG_GRID) {
414
- console.log('DEBUG: spaceBetween with auto columns');
415
- console.log('DEBUG: validChildren.length:', validChildren.length);
416
- console.log('DEBUG: results.length:', results.length);
417
- console.log('DEBUG: tracks:', tracks.map(t => t.type));
418
- }
419
489
  for (let i = 0; i < validChildren.length; i++) {
420
490
  const track = tracks[i];
421
491
  if (track.type === 'auto') {
422
- if (process.env.DEBUG_GRID) {
423
- console.log(`DEBUG: Processing auto column ${i}, partIdx=${partIdx}, results[partIdx]=`, results[partIdx]);
424
- }
425
492
  const result = results[partIdx];
426
493
  partIdx++;
427
494
  const content = result === null ? '' : (typeof result === 'string' ? result : '');
428
- const plainContent = stripAnsi(content);
429
- totalAutoWidth += plainContent.length;
495
+ const visibleWidth = countVisibleChars(content);
496
+ totalAutoWidth += visibleWidth;
430
497
  autoContents.push(content);
431
- if (process.env.DEBUG_GRID) {
432
- console.log(`DEBUG: Collected auto column ${i}: "${plainContent}", totalAutoWidth=${totalAutoWidth}, autoContents.length=${autoContents.length}`);
433
- }
434
498
  // Skip gap result if present (spaceBetween adds gap results between columns)
435
499
  // Only skip if this is not the last column and there's a gap result
436
500
  if (i < validChildren.length - 1 && columnGap > 0 && partIdx < results.length) {
437
- if (process.env.DEBUG_GRID) {
438
- console.log(`DEBUG: Skipping gap result at partIdx=${partIdx}`);
439
- }
440
501
  partIdx++; // Skip the gap result
441
502
  }
442
503
  }
@@ -448,10 +509,6 @@ export function grid(options, ...children) {
448
509
  }
449
510
  }
450
511
  }
451
- if (process.env.DEBUG_GRID) {
452
- console.log('DEBUG: Final autoContents.length:', autoContents.length);
453
- console.log('DEBUG: Final totalAutoWidth:', totalAutoWidth);
454
- }
455
512
  // Calculate spaceBetween fill width
456
513
  const spaceBetweenWidth = Math.max(0, ctx.availableWidth - totalAutoWidth);
457
514
  const { char: spaceChar, color: spaceColor } = getSpaceBetweenChar(spaceBetween, 0);
@@ -470,9 +527,9 @@ export function grid(options, ...children) {
470
527
  }
471
528
  const line = lineParts.join('');
472
529
  // Pad to full width to ensure right column is at the end
473
- const plainLine = stripAnsi(line);
474
- const paddedLine = plainLine.length < ctx.availableWidth
475
- ? line + ' '.repeat(ctx.availableWidth - plainLine.length)
530
+ const visibleLineWidth = countVisibleChars(line);
531
+ const paddedLine = visibleLineWidth < ctx.availableWidth
532
+ ? line + ' '.repeat(ctx.availableWidth - visibleLineWidth)
476
533
  : line;
477
534
  return paddedLine;
478
535
  }
@@ -484,8 +541,9 @@ export function grid(options, ...children) {
484
541
  partIdx++;
485
542
  const columnWidth = actualWidths[i] ?? 0;
486
543
  const track = tracks[i];
487
- const isAuto = track?.type === 'auto';
488
- const isFlex = track?.type === 'flex' || track?.type === 'minmax';
544
+ // Treat max-only minmax columns as auto (no padding, content-based)
545
+ const isAuto = track?.type === 'auto' || (track?.type === 'minmax' && track?.hasMin === false && track?.max !== undefined);
546
+ const isFlex = track?.type === 'flex' || (track?.type === 'minmax' && track?.hasMin === true);
489
547
  if (result === null) {
490
548
  // Null result - pad to column width
491
549
  // If spaceBetween is set, use it to fill empty columns (especially flex columns)
@@ -502,28 +560,46 @@ export function grid(options, ...children) {
502
560
  }
503
561
  }
504
562
  else {
505
- const columnContent = typeof result === 'string' ? result : '';
563
+ let columnContent;
564
+ if (typeof result === 'string') {
565
+ columnContent = result;
566
+ }
567
+ else if (Array.isArray(result)) {
568
+ // Multi-line result - take first line for single-row rendering
569
+ columnContent = result[0] ?? '';
570
+ }
571
+ else {
572
+ columnContent = '';
573
+ }
506
574
  if (isAuto) {
507
575
  lineParts.push(columnContent);
508
576
  }
509
577
  else {
510
- const plainContent = stripAnsi(columnContent);
578
+ const visibleWidth = countVisibleChars(columnContent);
511
579
  let paddedContent;
512
580
  // If content is empty and this is a flex column with spaceBetween, fill it
513
- if (plainContent.length === 0 && spaceBetween && columnWidth > 0 && isFlex) {
581
+ if (visibleWidth === 0 && spaceBetween && columnWidth > 0 && isFlex) {
514
582
  const { char: spaceChar, color: spaceColor } = getSpaceBetweenChar(spaceBetween, i);
515
583
  const fillText = spaceChar.repeat(columnWidth);
516
584
  paddedContent = spaceColor ? applyStyle(fillText, { color: spaceColor }) : fillText;
517
585
  }
518
- else if (plainContent.length === 0 && spaceBetween && columnWidth > 0) {
586
+ else if (visibleWidth === 0 && spaceBetween && columnWidth > 0) {
519
587
  const { char: spaceChar, color: spaceColor } = getSpaceBetweenChar(spaceBetween, i);
520
588
  const fillText = spaceChar.repeat(columnWidth);
521
589
  paddedContent = spaceColor ? applyStyle(fillText, { color: spaceColor }) : fillText;
522
590
  }
523
591
  else {
524
- paddedContent = plainContent.length < columnWidth
525
- ? columnContent + ' '.repeat(columnWidth - plainContent.length)
526
- : columnContent;
592
+ // Truncate if needed, then pad
593
+ let finalContent = columnContent;
594
+ if (visibleWidth > columnWidth) {
595
+ // Need to truncate at visible width
596
+ const split = splitAtVisiblePos(columnContent, columnWidth);
597
+ finalContent = split.before;
598
+ }
599
+ const finalVisibleWidth = countVisibleChars(finalContent);
600
+ paddedContent = finalVisibleWidth < columnWidth
601
+ ? finalContent + ' '.repeat(columnWidth - finalVisibleWidth)
602
+ : finalContent;
527
603
  }
528
604
  lineParts.push(paddedContent);
529
605
  }
@@ -543,9 +619,9 @@ export function grid(options, ...children) {
543
619
  }
544
620
  const line = lineParts.join('');
545
621
  // CRITICAL: Pad line to full availableWidth to ensure grid fills the region
546
- const plainLine = line.replace(/\x1b\[[0-9;]*m/g, '');
547
- const paddedLine = plainLine.length < ctx.availableWidth
548
- ? line + ' '.repeat(ctx.availableWidth - plainLine.length)
622
+ const visibleLineWidth = countVisibleChars(line);
623
+ const paddedLine = visibleLineWidth < ctx.availableWidth
624
+ ? line + ' '.repeat(ctx.availableWidth - visibleLineWidth)
549
625
  : line;
550
626
  return paddedLine;
551
627
  }
@@ -559,8 +635,9 @@ export function grid(options, ...children) {
559
635
  partIdx++;
560
636
  const columnWidth = actualWidths[i] ?? 0;
561
637
  const track = tracks[i];
562
- const isAuto = track?.type === 'auto';
563
- const isFlex = track?.type === 'flex' || track?.type === 'minmax';
638
+ // Treat max-only minmax columns as auto (no padding, content-based)
639
+ const isAuto = track?.type === 'auto' || (track?.type === 'minmax' && track?.hasMin === false && track?.max !== undefined);
640
+ const isFlex = track?.type === 'flex' || (track?.type === 'minmax' && track?.hasMin === true);
564
641
  if (result === null) {
565
642
  // Null result - pad to column width
566
643
  // If spaceBetween is set, use it to fill empty columns (especially flex columns)
@@ -595,23 +672,31 @@ export function grid(options, ...children) {
595
672
  lineParts.push(columnContent);
596
673
  }
597
674
  else {
598
- const plainContent = columnContent.replace(/\x1b\[[0-9;]*m/g, '');
675
+ const visibleWidth = countVisibleChars(columnContent);
599
676
  let paddedContent;
600
677
  // If content is empty and this is a flex column with spaceBetween, fill it
601
- if (plainContent.length === 0 && spaceBetween && columnWidth > 0 && isFlex) {
678
+ if (visibleWidth === 0 && spaceBetween && columnWidth > 0 && isFlex) {
602
679
  const { char: spaceChar, color: spaceColor } = getSpaceBetweenChar(spaceBetween, i);
603
680
  const fillText = spaceChar.repeat(columnWidth);
604
681
  paddedContent = spaceColor ? applyStyle(fillText, { color: spaceColor }) : fillText;
605
682
  }
606
- else if (plainContent.length === 0 && spaceBetween && columnWidth > 0) {
683
+ else if (visibleWidth === 0 && spaceBetween && columnWidth > 0) {
607
684
  const { char: spaceChar, color: spaceColor } = getSpaceBetweenChar(spaceBetween, i);
608
685
  const fillText = spaceChar.repeat(columnWidth);
609
686
  paddedContent = spaceColor ? applyStyle(fillText, { color: spaceColor }) : fillText;
610
687
  }
611
688
  else {
612
- paddedContent = plainContent.length < columnWidth
613
- ? columnContent + ' '.repeat(columnWidth - plainContent.length)
614
- : columnContent;
689
+ // Truncate if needed, then pad
690
+ let finalContent = columnContent;
691
+ if (visibleWidth > columnWidth) {
692
+ // Need to truncate at visible width
693
+ const split = splitAtVisiblePos(columnContent, columnWidth);
694
+ finalContent = split.before;
695
+ }
696
+ const finalVisibleWidth = countVisibleChars(finalContent);
697
+ paddedContent = finalVisibleWidth < columnWidth
698
+ ? finalContent + ' '.repeat(columnWidth - finalVisibleWidth)
699
+ : finalContent;
615
700
  }
616
701
  lineParts.push(paddedContent);
617
702
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/layout/grid.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,kEAAkE;AAGlE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAwD,mBAAmB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAExH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;GAGG;AACH,SAAS,mBAAmB,CAC1B,YAAmC,EACnC,QAAgB;IAEhB,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7E,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,gBAAgB;IAChB,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC;AAChE,CAAC;AA8DD,SAAS,kBAAkB,CAAC,KAAwB;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,4BAA4B;QAC5B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAClD,CAAC;QACD,oCAAoC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,mCAAmC,CAAC,CAAC;IAClF,CAAC;IAED,mCAAmC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK,CAAC,GAAG;YAChB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAClC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,KAAK,wBAAwB,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CACrB,OAAwC,EACxC,WAA0C,EAC1C,QAAyC,EACzC,KAAa;IAEb,sEAAsE;IACtE,mFAAmF;IACnF,4DAA4D;IAE5D,IAAI,eAAoC,CAAC;IACzC,IAAI,UAA6B,CAAC;IAElC,IAAI,OAAO,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACvD,+CAA+C;QAC/C,eAAe,GAAG,OAAO,IAAI,EAAE,CAAC;QAChC,UAAU,GAAG,WAAW,IAAI,IAAI,CAAC;IACnC,CAAC;SAAM,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,gEAAgE;QAChE,eAAe,GAAG,QAAQ,CAAC;QAC3B,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,+DAA+D;QAC/D,eAAe,GAAG,EAAE,CAAC;QACrB,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,oEAAoE;YACpE,+EAA+E;YAC/E,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAmB,EACnB,cAAsB,EACtB,SAAiB,EACjB,iBAA2B;IAE3B,sCAAsC;IACtC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,MAAM,GAAa,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAElD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,qBAAqB;YACrC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAE,iBAAiB;YAC3C,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC;YAC1B,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;YACtB,UAAU,IAAI,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;IAE9D,mEAAmE;IACnE,IAAI,SAAS,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;YAChD,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,8BAA8B;gBAC9B,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,4DAA4D;IAC5D,mEAAmE;IACnE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC,CAAC;IAC/D,IAAI,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1D,IAAI,YAAY,GAAG,eAAe,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACvD,0DAA0D;QAC1D,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5D,cAAc,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,MAAM,SAAS,GAAG,YAAY,GAAG,cAAc,CAAC;QAChD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC,CAAC;YACvE,MAAM,KAAK,GAAG,gBAAgB,GAAG,SAAS,CAAC;YAE3C,IAAI,aAAa,GAAG,cAAc,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7D,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzD,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED,IAAI,SAAS,GAAG,eAAe,GAAG,aAAa,CAAC;YAChD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,OAAO,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,WAAW,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;gBACzC,2BAA2B;gBAC3B,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACjF,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC1B,SAAS,IAAI,CAAC,CAAC;gBACjB,CAAC;gBACD,GAAG,EAAE,CAAC;gBACN,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE;oBAAE,MAAM,CAAC,eAAe;YACvD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,+EAA+E;YAC/E,IAAI,cAAc,GAAG,eAAe,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,eAAe,GAAG,cAAc,CAAC;gBAC/C,IAAI,aAAa,GAAG,CAAC,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC5D,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;wBACzD,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAED,iEAAiE;gBACjE,IAAI,SAAS,GAAG,eAAe,GAAG,aAAa,CAAC;gBAChD,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,OAAO,SAAS,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3C,MAAM,WAAW,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;oBACzC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAChF,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;wBAC1B,SAAS,IAAI,CAAC,CAAC;oBACjB,CAAC;oBACD,GAAG,EAAE,CAAC;oBACN,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE;wBAAE,MAAM,CAAC,eAAe;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAgC;IACxD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAAmB,EACnB,QAAqB,EACrB,UAA4C;IAE5C,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/E,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAClB,OAAoB,EACpB,GAAG,QAAwD;IAE3D,iCAAiC;IACjC,MAAM,iBAAiB,GAAgB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,yDAAyD;YACzD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,sEAAsE;QACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC3G,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,qCAAqC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAkB,EAAE,EAAE;QAC5B,MAAM,EACJ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,QAAQ,GAAG,CAAC,EACZ,SAAS,GAAG,CAAC,EACb,MAAM,GAAG,CAAC,EACV,YAAY,EACZ,OAAO,GAAG,OAAO,EAClB,GAAG,OAAO,CAAC;QAEZ,kDAAkD;QAClD,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;QAEnF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uCAAuC;QACvC,MAAM,eAAe,GAAG,OAAO,IAAI,QAAQ,IAAI,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3E,4DAA4D;QAC5D,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,wEAAwE;QACxE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,iGAAiG;YACjG,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACjG,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAExD,wEAAwE;YACxE,MAAM,iBAAiB,GAAG,wBAAwB,CAChD,MAAM,EACN,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACjC,cAAc,EAAE,MAAM,CAAC,iBAAiB;gBACxC,WAAW,EAAE,KAAK;gBAClB,QAAQ,EAAE,CAAC;aACZ,CAAC,CACH,CAAC;YACF,MAAM,YAAY,GAAG,qBAAqB,CACxC,MAAM,EACN,GAAG,CAAC,cAAc,EAClB,SAAS,EACT,iBAAiB,CAClB,CAAC;YAEF,kBAAkB;YAClB,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrC,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;gBAE7C,6BAA6B;gBAC7B,MAAM,UAAU,GAAiC,EAAE,CAAC;gBACpD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;oBAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;oBAClC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAExC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE;wBACvC,cAAc,EAAE,KAAK;wBACrB,WAAW,EAAE,MAAM;wBACnB,QAAQ,EAAE,MAAM;qBACjB,CAAC,CAAC;oBAEH,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC9C,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;gBAED,+CAA+C;gBAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC1B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EACvD,SAAS,CACV,CAAC;gBAEF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;oBACvD,MAAM,SAAS,GAAa,EAAE,CAAC;oBAC/B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;wBAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;wBAClC,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAE9C,IAAI,aAAqB,CAAC;wBAC1B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;4BACpB,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC1C,CAAC;6BAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;4BACjC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;wBACxC,CAAC;6BAAM,CAAC;4BACN,aAAa,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9C,CAAC;wBAED,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;wBAC9C,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,WAAW;4BACrD,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;4BAC/D,CAAC,CAAC,aAAa,CAAC;wBAClB,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBAE9B,iBAAiB;wBACjB,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;4BACrD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;wBACxC,CAAC;oBACH,CAAC;oBAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;oBAClC,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,cAAc;wBACtD,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;wBAC1D,CAAC,CAAC,IAAI,CAAC;oBACT,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/B,CAAC;gBAED,sCAAsC;gBACtC,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAChC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,wCAAwC;QACxC,0BAA0B;QAC1B,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACxD,MAAM,iBAAiB,GAAG,wBAAwB,CAChD,MAAM,EACN,aAAa,EACb,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;YACjC,cAAc,EAAE,MAAM,CAAC,iBAAiB;YACxC,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,CAAC;SACZ,CAAC,CACH,CAAC;QACF,MAAM,YAAY,GAAG,qBAAqB,CACxC,MAAM,EACN,GAAG,CAAC,cAAc,EAClB,SAAS,EACT,iBAAiB,CAClB,CAAC;QAEF,kCAAkC;QAClC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,YAAY,GAAG,YAAY,CAAC;QAEhC,IAAI,OAAO,KAAK,eAAe,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,iDAAiD;YACjD,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7E,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAE1G,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,yCAAyC;gBACzC,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;gBAC5C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAED,oBAAoB;QACpB,MAAM,OAAO,GAAiC,EAAE,CAAC;QACjD,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,IAAI,QAAQ,GAAG,MAAM,CAAC;QAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEnC,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE;gBACvC,cAAc,EAAE,KAAK;gBACrB,WAAW,EAAE,CAAC;gBACd,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;YAEH,eAAe;YACf,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,kBAAkB,GAAG,IAAI,CAAC;YAC5B,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClD,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;oBACpF,gCAAgC;oBAChC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAClF,CAAC;qBAAM,CAAC;oBACN,gCAAgC;oBAChC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAED,QAAQ,IAAI,KAAK,GAAG,SAAS,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uEAAuE;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EACpD,CAAC,CACF,CAAC;QAEF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnB,2FAA2F;YAC3F,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAE1E,IAAI,YAAY,IAAI,cAAc,IAAI,OAAO,EAAE,CAAC;gBAC9C,oFAAoF;gBACpF,uEAAuE;gBACvE,MAAM,YAAY,GAAa,EAAE,CAAC;gBAClC,IAAI,cAAc,GAAG,CAAC,CAAC;gBACvB,IAAI,OAAO,GAAG,CAAC,CAAC;gBAEhB,qCAAqC;gBACrC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;oBAClE,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;oBACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzD,CAAC;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBAExB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;4BAC3B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,aAAa,OAAO,qBAAqB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC7G,CAAC;wBACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;wBAChC,OAAO,EAAE,CAAC;wBACV,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAClF,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;wBACxC,cAAc,IAAI,YAAY,CAAC,MAAM,CAAC;wBACtC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAE3B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;4BAC3B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,MAAM,YAAY,qBAAqB,cAAc,yBAAyB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;wBACpJ,CAAC;wBAED,6EAA6E;wBAC7E,oEAAoE;wBACpE,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;4BAC9E,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;gCAC3B,OAAO,CAAC,GAAG,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;4BAClE,CAAC;4BACD,OAAO,EAAE,CAAC,CAAC,sBAAsB;wBACnC,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,8BAA8B;wBAC9B,OAAO,EAAE,CAAC;wBACV,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;4BAC9E,OAAO,EAAE,CAAC,CAAC,sBAAsB;wBACnC,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;oBACtE,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;gBAC9D,CAAC;gBAED,oCAAoC;gBACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC;gBAC3E,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACrD,MAAM,mBAAmB,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAEhG,8DAA8D;gBAC9D,MAAM,SAAS,GAAa,EAAE,CAAC;gBAC/B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC5B,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;wBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC7C,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;wBAClC,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChC,yDAAyD;gBACzD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,cAAc;oBACtD,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;oBAC1D,CAAC,CAAC,IAAI,CAAC;gBACT,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,qCAAqC;YACrC,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;gBAChC,OAAO,EAAE,CAAC;gBACV,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC;gBAEtC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,KAAK,MAAM,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC;gBAElE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,oCAAoC;oBACpC,iFAAiF;oBACjF,IAAI,CAAC,MAAM,IAAI,YAAY,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBAC/C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;wBACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC/C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACtF,CAAC;yBAAM,IAAI,CAAC,MAAM,EAAE,CAAC;wBACnB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/D,IAAI,MAAM,EAAE,CAAC;wBACX,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;wBAC9C,IAAI,aAAqB,CAAC;wBAC1B,2EAA2E;wBAC3E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,IAAI,WAAW,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;4BAC3E,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;4BACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;4BAC/C,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBACtF,CAAC;6BAAM,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;4BACxE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;4BACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;4BAC/C,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBACtF,CAAC;6BAAM,CAAC;4BACN,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,WAAW;gCAC/C,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;gCAC/D,CAAC,CAAC,aAAa,CAAC;wBACpB,CAAC;wBACD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAClC,CAAC;gBACD,CAAC;gBAED,sFAAsF;gBACtF,sDAAsD;gBACtD,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBAClD,2CAA2C;oBAC3C,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;wBAC7B,OAAO,EAAE,CAAC,CAAC,sBAAsB;oBACnC,CAAC;oBACD,+EAA+E;oBAC/E,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,4EAA4E;YAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,cAAc;gBACtD,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC1D,CAAC,CAAC,IAAI,CAAC;YACT,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,oCAAoC;QACpC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YACpD,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;gBAChC,OAAO,EAAE,CAAC;gBACV,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC;gBACtC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,KAAK,MAAM,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC;gBAElE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,oCAAoC;oBACpC,iFAAiF;oBACjF,IAAI,CAAC,MAAM,IAAI,YAAY,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBAC/C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;wBACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC/C,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACtF,CAAC;yBAAM,IAAI,CAAC,MAAM,EAAE,CAAC;wBACnB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC1C,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACrB,CAAC;oBACD,6BAA6B;oBAC7B,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;wBAC9E,OAAO,EAAE,CAAC;oBACZ,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,aAAqB,CAAC;gBAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxC,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9C,CAAC;gBAED,mDAAmD;gBACnD,gEAAgE;gBAChE,gFAAgF;gBAChF,IAAI,MAAM,EAAE,CAAC;oBACX,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;oBAClE,IAAI,aAAqB,CAAC;oBAC1B,2EAA2E;oBAC3E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,IAAI,WAAW,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;wBAC3E,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;wBACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC/C,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACtF,CAAC;yBAAM,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACxE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;wBACpF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC/C,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACtF,CAAC;yBAAM,CAAC;wBACN,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,WAAW;4BAC/C,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;4BAC/D,CAAC,CAAC,aAAa,CAAC;oBACpB,CAAC;oBACD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChC,CAAC;gBAED,sFAAsF;gBACtF,sDAAsD;gBACtD,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;oBAClD,2CAA2C;oBAC3C,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;wBAC7B,OAAO,EAAE,CAAC,CAAC,sBAAsB;oBACnC,CAAC;oBACD,+EAA+E;oBAC/E,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,mEAAmE;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,cAAc;gBACtD,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC1D,CAAC,CAAC,IAAI,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/layout/grid.ts"],"names":[],"mappings":"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"}