chat-layout 0.0.10 → 0.0.12

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/index.d.ts CHANGED
@@ -9,9 +9,11 @@ export abstract class Group<C extends CanvasRenderingContext2D> implements Node<
9
9
  export class VStack<C extends CanvasRenderingContext2D> extends Group<C> {
10
10
  readonly options: {
11
11
  gap?: number;
12
+ alignment?: "left" | "center" | "right";
12
13
  };
13
14
  constructor(children: Node<C>[], options?: {
14
15
  gap?: number;
16
+ alignment?: "left" | "center" | "right";
15
17
  });
16
18
  measure(ctx: Context<C>): Box;
17
19
  draw(ctx: Context<C>, x: number, y: number): boolean;
@@ -62,10 +64,10 @@ export class PaddingBox<C extends CanvasRenderingContext2D> extends Wrapper<C> {
62
64
  export class AlignBox<C extends CanvasRenderingContext2D> extends Wrapper<C> {
63
65
  #private;
64
66
  readonly options: {
65
- alignment: "left" | "center" | "right";
67
+ alignment: Alignment;
66
68
  };
67
69
  constructor(inner: Node<C>, options: {
68
- alignment: "left" | "center" | "right";
70
+ alignment: Alignment;
69
71
  });
70
72
  measure(ctx: Context<C>): Box;
71
73
  draw(ctx: Context<C>, x: number, y: number): boolean;
@@ -179,9 +181,12 @@ export interface RenderFeedback {
179
181
  minIdx: number;
180
182
  maxIdx: number;
181
183
  }
184
+ export type Alignment = "left" | "center" | "right";
182
185
  export interface Context<C extends CanvasRenderingContext2D> extends RendererOptions {
183
186
  graphics: C;
184
187
  remainingWidth: number;
188
+ alignment: Alignment;
189
+ reverse: boolean;
185
190
  measureNode(node: Node<C>): Box;
186
191
  invalidateNode(node: Node<C>): void;
187
192
  resolveDynValue<T>(value: DynValue<C, T>): T;
package/index.js CHANGED
@@ -127,6 +127,9 @@ class VStack extends Group {
127
127
  measure(ctx) {
128
128
  let width = 0;
129
129
  let height = 0;
130
+ if (this.options.alignment != null) {
131
+ ctx.alignment = this.options.alignment;
132
+ }
130
133
  for (let ref1 = this.children, i2 = 0, len2 = ref1.length;i2 < len2; i2++) {
131
134
  const index = i2;
132
135
  const child = ref1[i2];
@@ -142,31 +145,59 @@ class VStack extends Group {
142
145
  }
143
146
  draw(ctx, x, y) {
144
147
  let result = false;
148
+ const fullwidth = ctx.measureNode(this).width;
149
+ const alignment = this.options.alignment ?? ctx.alignment;
150
+ if (this.options.alignment != null) {
151
+ ctx.alignment = this.options.alignment;
152
+ }
145
153
  for (let ref2 = this.children, i3 = 0, len3 = ref2.length;i3 < len3; i3++) {
146
154
  const index = i3;
147
155
  const child = ref2[i3];
148
156
  if (this.options.gap != null && index !== 0) {
149
157
  y += this.options.gap;
150
158
  }
151
- const request_redraw = child.draw(ctx, x, y);
159
+ let { width, height } = shallow(ctx).measureNode(child);
160
+ const curctx = shallow(ctx);
161
+ let ref3;
162
+ if (alignment === "right") {
163
+ ref3 = child.draw(curctx, x + fullwidth - width, y);
164
+ } else if (alignment === "center") {
165
+ ref3 = child.draw(curctx, x + (fullwidth - width) / 2, y);
166
+ } else {
167
+ ref3 = child.draw(curctx, x, y);
168
+ }
169
+ const request_redraw = ref3;
152
170
  result ||= request_redraw;
153
- let { height } = shallow(ctx).measureNode(child);
154
171
  y += height;
155
172
  }
156
173
  return result;
157
174
  }
158
175
  hittest(ctx, test) {
159
176
  let y = 0;
160
- for (let ref3 = this.children, i4 = 0, len4 = ref3.length;i4 < len4; i4++) {
177
+ const fullwidth = ctx.measureNode(this).width;
178
+ const alignment = this.options.alignment ?? ctx.alignment;
179
+ if (this.options.alignment != null) {
180
+ ctx.alignment = this.options.alignment;
181
+ }
182
+ for (let ref4 = this.children, i4 = 0, len4 = ref4.length;i4 < len4; i4++) {
161
183
  const index = i4;
162
- const child = ref3[i4];
184
+ const child = ref4[i4];
163
185
  if (this.options.gap != null && index !== 0) {
164
186
  y += this.options.gap;
165
187
  }
188
+ let { width, height } = shallow(ctx).measureNode(child);
166
189
  const curctx = shallow(ctx);
167
- let { height } = curctx.measureNode(child);
168
190
  if (test.y >= y && test.y < y + height) {
169
191
  return child.hittest(curctx, shallowMerge(test, {
192
+ x: (() => {
193
+ if (alignment === "right") {
194
+ return test.x - fullwidth + width;
195
+ } else if (alignment === "center") {
196
+ return test.x - (fullwidth - width) / 2;
197
+ } else {
198
+ return test.x;
199
+ }
200
+ })(),
170
201
  y: test.y - y
171
202
  }));
172
203
  }
@@ -188,9 +219,9 @@ class HStack extends Group {
188
219
  let width = 0;
189
220
  let height = 0;
190
221
  let firstflex;
191
- for (let ref4 = this.children, i5 = 0, len5 = ref4.length;i5 < len5; i5++) {
222
+ for (let ref5 = this.children, i5 = 0, len5 = ref5.length;i5 < len5; i5++) {
192
223
  const index = i5;
193
- const child = ref4[i5];
224
+ const child = ref5[i5];
194
225
  if (this.options.gap != null && index !== 0) {
195
226
  width += this.options.gap;
196
227
  }
@@ -215,70 +246,92 @@ class HStack extends Group {
215
246
  }
216
247
  draw(ctx, x, y) {
217
248
  let result = false;
249
+ const reverse = this.options.reverse ?? ctx.reverse;
218
250
  if (this.options.reverse) {
251
+ ctx.reverse = this.options.reverse;
252
+ }
253
+ if (reverse) {
219
254
  x += ctx.measureNode(this).width;
220
- for (let ref5 = this.children, i6 = 0, len6 = ref5.length;i6 < len6; i6++) {
255
+ for (let ref6 = this.children, i6 = 0, len6 = ref6.length;i6 < len6; i6++) {
221
256
  const index = i6;
222
- const child = ref5[i6];
223
- if (this.options.gap != null && index !== 0) {
224
- x -= this.options.gap;
257
+ const child = ref6[i6];
258
+ let ref7;
259
+ if (ref7 = this.options.gap != null && index !== 0 ? this.options.gap : undefined) {
260
+ const gap = ref7;
261
+ x -= gap;
262
+ ctx.remainingWidth -= gap;
225
263
  }
226
264
  const { width } = shallow(ctx).measureNode(child);
227
265
  x -= width;
228
- const request_redraw = child.draw(ctx, x, y);
266
+ const request_redraw = child.draw(shallow(ctx), x, y);
229
267
  result ||= request_redraw;
268
+ ctx.remainingWidth -= width;
230
269
  }
231
270
  } else {
232
- for (let ref6 = this.children, i7 = 0, len7 = ref6.length;i7 < len7; i7++) {
271
+ for (let ref8 = this.children, i7 = 0, len7 = ref8.length;i7 < len7; i7++) {
233
272
  const index = i7;
234
- const child = ref6[i7];
235
- if (this.options.gap != null && index !== 0) {
236
- x += this.options.gap;
273
+ const child = ref8[i7];
274
+ let ref9;
275
+ if (ref9 = this.options.gap != null && index !== 0 ? this.options.gap : undefined) {
276
+ const gap = ref9;
277
+ x += gap;
278
+ ctx.remainingWidth -= gap;
237
279
  }
238
- const request_redraw = child.draw(ctx, x, y);
280
+ const request_redraw = child.draw(shallow(ctx), x, y);
239
281
  result ||= request_redraw;
240
282
  const { width } = shallow(ctx).measureNode(child);
283
+ ctx.remainingWidth -= width;
241
284
  x += width;
242
285
  }
243
286
  }
244
287
  return result;
245
288
  }
246
289
  hittest(ctx, test) {
290
+ const reverse = this.options.reverse ?? ctx.reverse;
247
291
  if (this.options.reverse) {
292
+ ctx.reverse = this.options.reverse;
293
+ }
294
+ if (reverse) {
248
295
  let x = ctx.measureNode(this).width;
249
- for (let ref7 = this.children, i8 = 0, len8 = ref7.length;i8 < len8; i8++) {
296
+ for (let ref10 = this.children, i8 = 0, len8 = ref10.length;i8 < len8; i8++) {
250
297
  const index = i8;
251
- const child = ref7[i8];
252
- if (this.options.gap != null && index !== 0) {
253
- x -= this.options.gap;
298
+ const child = ref10[i8];
299
+ let ref11;
300
+ if (ref11 = this.options.gap != null && index !== 0 ? this.options.gap : undefined) {
301
+ const gap = ref11;
302
+ x -= gap;
303
+ ctx.remainingWidth -= gap;
254
304
  }
255
- const curctx = shallow(ctx);
256
- const { width } = curctx.measureNode(child);
305
+ const { width } = shallow(ctx).measureNode(child);
257
306
  x -= width;
258
- let ref8;
259
- if (x <= (ref8 = test.x) && ref8 <= x + width) {
260
- return child.hittest(curctx, shallowMerge(test, {
307
+ let ref12;
308
+ if (x <= (ref12 = test.x) && ref12 <= x + width) {
309
+ return child.hittest(shallow(ctx), shallowMerge(test, {
261
310
  x: test.x - x
262
311
  }));
263
312
  }
313
+ ctx.remainingWidth -= width;
264
314
  }
265
315
  } else {
266
316
  let x = 0;
267
- for (let ref9 = this.children, i9 = 0, len9 = ref9.length;i9 < len9; i9++) {
317
+ for (let ref13 = this.children, i9 = 0, len9 = ref13.length;i9 < len9; i9++) {
268
318
  const index = i9;
269
- const child = ref9[i9];
270
- if (this.options.gap != null && index !== 0) {
271
- x += this.options.gap;
319
+ const child = ref13[i9];
320
+ let ref14;
321
+ if (ref14 = this.options.gap != null && index !== 0 ? this.options.gap : undefined) {
322
+ const gap = ref14;
323
+ x += gap;
324
+ ctx.remainingWidth -= gap;
272
325
  }
273
- const curctx = shallow(ctx);
274
- const { width } = curctx.measureNode(child);
275
- let ref10;
276
- if (x <= (ref10 = test.x) && ref10 <= x + width) {
277
- return child.hittest(curctx, shallowMerge(test, {
326
+ const { width } = shallow(ctx).measureNode(child);
327
+ let ref15;
328
+ if (x <= (ref15 = test.x) && ref15 <= x + width) {
329
+ return child.hittest(shallow(ctx), shallowMerge(test, {
278
330
  x: test.x - x
279
331
  }));
280
332
  }
281
333
  x += width;
334
+ ctx.remainingWidth -= width;
282
335
  }
283
336
  }
284
337
  return false;
@@ -335,7 +388,6 @@ class PaddingBox extends Wrapper {
335
388
  return this.padding.right ?? 0;
336
389
  }
337
390
  measure(ctx) {
338
- ctx = shallow(ctx);
339
391
  ctx.remainingWidth -= this.#left + this.#right;
340
392
  const { width, height } = ctx.measureNode(this.inner);
341
393
  return {
@@ -344,14 +396,16 @@ class PaddingBox extends Wrapper {
344
396
  };
345
397
  }
346
398
  draw(ctx, x, y) {
399
+ ctx.remainingWidth -= this.#left + this.#right;
347
400
  return this.inner.draw(ctx, x + this.#left, y + this.#top);
348
401
  }
349
402
  hittest(ctx, test) {
350
- const { width, height } = ctx.measureNode(this.inner);
351
- let ref11;
352
- let ref12;
353
- if (0 <= (ref11 = test.x - this.#left) && ref11 < width && (0 <= (ref12 = test.y - this.#top) && ref12 < height)) {
354
- return this.inner.hittest(ctx, shallowMerge(test, {
403
+ ctx.remainingWidth -= this.#left + this.#right;
404
+ const { width, height } = shallow(ctx).measureNode(this.inner);
405
+ let ref16;
406
+ let ref17;
407
+ if (0 <= (ref16 = test.x - this.#left) && ref16 < width && (0 <= (ref17 = test.y - this.#top) && ref17 < height)) {
408
+ return this.inner.hittest(shallow(ctx), shallowMerge(test, {
355
409
  x: test.x - this.#left,
356
410
  y: test.y - this.#top
357
411
  }));
@@ -368,35 +422,38 @@ class AlignBox extends Wrapper {
368
422
  this.options = options;
369
423
  }
370
424
  measure(ctx) {
425
+ ctx.alignment = this.options.alignment;
371
426
  const { width, height } = ctx.measureNode(this.inner);
372
- let ref13;
427
+ let ref18;
373
428
  switch (this.options.alignment) {
374
429
  case "center": {
375
- ref13 = (ctx.remainingWidth - width) / 2;
430
+ ref18 = (ctx.remainingWidth - width) / 2;
376
431
  break;
377
432
  }
378
433
  case "right": {
379
- ref13 = ctx.remainingWidth - width;
434
+ ref18 = ctx.remainingWidth - width;
380
435
  break;
381
436
  }
382
437
  default: {
383
- ref13 = 0;
438
+ ref18 = 0;
384
439
  }
385
440
  }
386
- this.#shift = ref13;
441
+ this.#shift = ref18;
387
442
  return {
388
443
  width: ctx.remainingWidth,
389
444
  height
390
445
  };
391
446
  }
392
447
  draw(ctx, x, y) {
448
+ ctx.alignment = this.options.alignment;
393
449
  return this.inner.draw(ctx, x + this.#shift, y);
394
450
  }
395
451
  hittest(ctx, test) {
396
- const { width } = ctx.measureNode(this.inner);
397
- let ref14;
398
- if (0 <= (ref14 = test.x - this.#shift) && ref14 < width) {
399
- return this.inner.hittest(ctx, shallowMerge(test, {
452
+ ctx.alignment = this.options.alignment;
453
+ const { width } = shallow(ctx).measureNode(this.inner);
454
+ let ref19;
455
+ if (0 <= (ref19 = test.x - this.#shift) && ref19 < width) {
456
+ return this.inner.hittest(shallow(ctx), shallowMerge(test, {
400
457
  x: test.x - this.#shift
401
458
  }));
402
459
  }
@@ -431,8 +488,8 @@ class MultilineText {
431
488
  g.fillStyle = ctx.resolveDynValue(this.options.style);
432
489
  switch (this.options.alignment) {
433
490
  case "left": {
434
- for (let ref15 = this.#lines, i10 = 0, len10 = ref15.length;i10 < len10; i10++) {
435
- const { text, shift, lineHeight } = ref15[i10];
491
+ for (let ref20 = this.#lines, i10 = 0, len10 = ref20.length;i10 < len10; i10++) {
492
+ const { text, shift, lineHeight } = ref20[i10];
436
493
  g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2);
437
494
  y += this.options.lineHeight;
438
495
  }
@@ -441,8 +498,8 @@ class MultilineText {
441
498
  case "right": {
442
499
  x += this.#width;
443
500
  g.textAlign = "right";
444
- for (let ref16 = this.#lines, i11 = 0, len11 = ref16.length;i11 < len11; i11++) {
445
- const { text, shift, lineHeight } = ref16[i11];
501
+ for (let ref21 = this.#lines, i11 = 0, len11 = ref21.length;i11 < len11; i11++) {
502
+ const { text, shift, lineHeight } = ref21[i11];
446
503
  g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2);
447
504
  y += this.options.lineHeight;
448
505
  }
@@ -451,8 +508,8 @@ class MultilineText {
451
508
  case "center": {
452
509
  x += this.#width / 2;
453
510
  g.textAlign = "center";
454
- for (let ref17 = this.#lines, i12 = 0, len12 = ref17.length;i12 < len12; i12++) {
455
- const { text, shift, lineHeight } = ref17[i12];
511
+ for (let ref22 = this.#lines, i12 = 0, len12 = ref22.length;i12 < len12; i12++) {
512
+ const { text, shift, lineHeight } = ref22[i12];
456
513
  g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2);
457
514
  y += this.options.lineHeight;
458
515
  }
@@ -551,6 +608,8 @@ class BaseRenderer {
551
608
  set remainingWidth(value) {
552
609
  Object.defineProperty(this, "remainingWidth", { value, writable: true });
553
610
  },
611
+ alignment: "left",
612
+ reverse: false,
554
613
  measureNode(node) {
555
614
  return self.measureNode(node, this);
556
615
  },
@@ -934,5 +993,5 @@ export {
934
993
  AlignBox
935
994
  };
936
995
 
937
- //# debugId=CE66C837C7DF222564756E2164756E21
996
+ //# debugId=825DA65A294F10FE64756E2164756E21
938
997
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -5,10 +5,10 @@
5
5
  "import type { Context } from \"./types.civet\"\n\nexport type TextLayout = {\n width: number\n text: string\n shift: number\n lineHeight: number\n}\n\nexport function layoutFirstLine<C extends CanvasRenderingContext2D>(\n ctx: Context<C>,\n text: string,\n maxWidth: number\n): TextLayout {\n const line = (((text.replaceAll(/[^\\S\\n]+/g, \" \")).split(\"\\n\", 1))[0]).trim()\n const { width: textWidth, fontBoundingBoxAscent: shift, fontBoundingBoxDescent: lineHeight } = ctx.graphics.measureText(line)\n if (textWidth <= maxWidth) {\n return ({ width: textWidth, text: line, shift: shift / 2, lineHeight })\n }\n else {\n const { width, text } = splitToFitText(ctx, line, maxWidth, textWidth)\n return ({ width, text, shift: shift / 2, lineHeight })\n }\n}\n\nexport function layoutText<C extends CanvasRenderingContext2D>(\n ctx: Context<C>,\n text: string,\n maxWidth: number\n): { width: number; lines: TextLayout[] } {\n const results=[];for (let ref = text\n .replaceAll(/[^\\S\\n]+/g, \" \")\n .split(\"\\n\"), i = 0, len = ref.length; i < len; i++) {const line = ref[i];\n const trimed = line.trim()\n if (!trimed) { continue }\n results.push(trimed)\n };const inputLines =results\n if (inputLines.length === 0) { return { width: 0, lines: [] } }\n let width = 0\n const lines: TextLayout[] = []\n for (let i1 = 0, len1 = inputLines.length; i1 < len1; i1++) {let line = inputLines[i1];\n let { width: textWidth, fontBoundingBoxAscent: shift, fontBoundingBoxDescent: lineHeight } = ctx.graphics.measureText(line)\n if (textWidth <= maxWidth) {\n width = Math.max(width, textWidth)\n lines.push({width: textWidth, text: line, shift: shift / 2, lineHeight: lineHeight})\n }\n else {\n while (textWidth > maxWidth) {\n const splited = splitToFitText(ctx, line, maxWidth, textWidth)\n width = Math.max(width, splited.width)\n lines.push({text: splited.text, width: splited.width, shift: shift / 2, lineHeight: lineHeight})\n line = splited.rest;\n ({ width: textWidth } = ctx.graphics.measureText(line))\n }\n if (textWidth > 0) {\n width = Math.max(width, textWidth)\n lines.push({width: textWidth, text: line, shift: shift / 2, lineHeight: lineHeight})\n }\n }\n }\n return ({ width, lines })\n}\n\nfunction splitToFitText<C extends CanvasRenderingContext2D>(\n ctx: Context<C>,\n text: string,\n width: number,\n totalWidth: number\n): { text: string, width: number, rest: string } {\n const arr = ctx.splitText(text)\n let guess = Math.floor((width / totalWidth) * arr.length)\n let guessText\n let { width: guessWidth } = ctx.graphics.measureText(guessText = arr.slice(0, guess).join(\"\"))\n while (!(guessWidth >= width)) {\n guess++;\n ({ width: guessWidth } = ctx.graphics.measureText(guessText = arr.slice(0, guess).join(\"\")))\n }\n while (guessWidth > width) {\n const lastSpace = arr.lastIndexOf(\" \", guess - 1)\n if (lastSpace > 0) {\n guess = lastSpace\n }\n else {\n guess--\n };\n ({ width: guessWidth } = ctx.graphics.measureText(guessText = arr.slice(0, guess).join(\"\")))\n }\n return ({text: guessText,\n width: guessWidth,\n rest: (arr.slice(guess).join(\"\")).trimStart()})\n}",
6
6
  "export function shallow<T extends {}>(object: T): T {\n return Object.create(object) as T\n}\n\nexport function shallowMerge<T extends {}, R extends {}>(object: T, other: R): T & R {\n return ({ __proto__: object, ...other } as unknown as T & R)\n}\n\n",
7
7
  "import type { Node } from \"./types.civet\"\n\nconst registry = new WeakMap<Node<any>, Node<any>>()\n\nexport function registerNodeParent<C extends CanvasRenderingContext2D>(node: Node<C>, parent: Node<C>): void {\n registry.set(node, parent)\n}\n\nexport function unregisterNodeParent<C extends CanvasRenderingContext2D>(node: Node<C>): void {\n registry.delete(node)\n}\n\nexport function getNodeParent<C extends CanvasRenderingContext2D>(node: Node<C>): (Node<C> | undefined) {\n return registry.get(node)\n}\n",
8
- "import type { Box, Context, Node, HitTest, DynValue } from \"./types.civet\";\nimport { layoutText, layoutFirstLine, type TextLayout } from \"./text.civet\";\nimport { shallow, shallowMerge } from \"./utils.civet\"\nimport { registerNodeParent, unregisterNodeParent } from \"./registry.civet\"\n\nexport abstract class Group<C extends CanvasRenderingContext2D> implements Node<C> {\n constructor(readonly children: Node<C>[]) {\n for (let i = 0, len = children.length; i < len; i++) {const child = children[i];\n registerNodeParent(child, this)\n }\n }\n\n abstract measure(ctx: Context<C>): Box\n abstract draw(ctx: Context<C>, x: number, y: number): boolean\n abstract hittest(ctx: Context<C>, test: HitTest): boolean\n get flex() {\n let results=false;for (let ref = this.children, i1 = 0, len1 = ref.length; i1 < len1; i1++) {const item = ref[i1];\n if (item.flex) {results = true; break}\n }return results\n }\n}\n\nexport class VStack<C extends CanvasRenderingContext2D> extends Group<C> {\n constructor(children: Node<C>[], readonly options: { gap?: number } = {}) {\n super(children)\n }\n\n measure(ctx: Context<C>): Box {\n let width = 0\n let height = 0\n for (let ref1 = this.children, i2 = 0, len2 = ref1.length; i2 < len2; i2++) {const index = i2;const child = ref1[i2];\n if ((this.options.gap != null) && index !== 0) { height += this.options.gap }\n let result = shallow(ctx).measureNode(child)\n height += result.height\n width = Math.max(width, result.width)\n }\n ctx.remainingWidth -= width\n return ({ width, height })\n }\n\n draw(ctx: Context<C>, x: number, y: number) {\n let result = false\n for (let ref2 = this.children, i3 = 0, len3 = ref2.length; i3 < len3; i3++) {const index = i3;const child = ref2[i3];\n if ((this.options.gap != null) && index !== 0) { y += this.options.gap }\n const request_redraw = child.draw(ctx, x, y)\n result ||= request_redraw\n let { height } = shallow(ctx).measureNode(child)\n y += height\n }\n return result\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n let y = 0\n for (let ref3 = this.children, i4 = 0, len4 = ref3.length; i4 < len4; i4++) {const index = i4;const child = ref3[i4];\n if ((this.options.gap != null) && index !== 0) { y += this.options.gap }\n const curctx = shallow(ctx)\n let { height } = curctx.measureNode(child)\n if (test.y >= y && test.y < y + height) {\n return child.hittest(curctx, shallowMerge(test, {\n y: test.y - y,\n }))\n }\n y += height\n }\n return false\n }\n}\n\nexport class HStack<C extends CanvasRenderingContext2D> extends Group<C> {\n constructor(\n readonly children: Node<C>[],\n readonly options: { reverse?: boolean; gap?: number } = {}\n ) { super(children) }\n\n measure(ctx: Context<C>): Box {\n let width = 0\n let height = 0\n let firstflex: (Node<C> | undefined)\n for (let ref4 = this.children, i5 = 0, len5 = ref4.length; i5 < len5; i5++) {const index = i5;const child = ref4[i5];\n if ((this.options.gap != null) && index !== 0) { width += this.options.gap }\n if ((firstflex == null) && child.flex) {\n firstflex = child\n continue\n }\n const curctx = shallow(ctx)\n curctx.remainingWidth = ctx.remainingWidth - width\n const result = curctx.measureNode(child)\n width += result.width\n height = Math.max(height, result.height)\n }\n\n if (firstflex != null) {\n const curctx = shallow(ctx)\n curctx.remainingWidth = ctx.remainingWidth - width\n const result = curctx.measureNode(firstflex)\n width += result.width\n height = Math.max(height, result.height)\n }\n\n return ({ width, height })\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n let result = false\n if (this.options.reverse) {\n x += ctx.measureNode(this).width\n for (let ref5 = this.children, i6 = 0, len6 = ref5.length; i6 < len6; i6++) {const index = i6;const child = ref5[i6];\n if ((this.options.gap != null) && index !== 0) { x -= this.options.gap }\n const { width } = shallow(ctx).measureNode(child)\n x -= width\n const request_redraw = child.draw(ctx, x, y)\n result ||= request_redraw\n }\n }\n else {\n for (let ref6 = this.children, i7 = 0, len7 = ref6.length; i7 < len7; i7++) {const index = i7;const child = ref6[i7];\n if ((this.options.gap != null) && index !== 0) { x += this.options.gap }\n const request_redraw = child.draw(ctx, x, y)\n result ||= request_redraw\n const { width } = shallow(ctx).measureNode(child)\n x += width\n }\n }\n return result\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n if (this.options.reverse) {\n let x = ctx.measureNode(this).width\n for (let ref7 = this.children, i8 = 0, len8 = ref7.length; i8 < len8; i8++) {const index = i8;const child = ref7[i8];\n if ((this.options.gap != null) && index !== 0) { x -= this.options.gap }\n const curctx = shallow(ctx)\n const { width } = curctx.measureNode(child)\n x -= width\n let ref8;if (x <= (ref8 = test.x) && ref8 <= x + width) {\n return child.hittest(curctx, shallowMerge(test, {\n x: test.x - x,\n }))\n }\n }\n }\n else {\n let x = 0\n for (let ref9 = this.children, i9 = 0, len9 = ref9.length; i9 < len9; i9++) {const index = i9;const child = ref9[i9];\n if ((this.options.gap != null) && index !== 0) { x += this.options.gap }\n const curctx = shallow(ctx)\n const { width } = curctx.measureNode(child)\n let ref10;if (x <= (ref10 = test.x) && ref10 <= x + width) {\n return child.hittest(curctx, shallowMerge(test, {\n x: test.x - x,\n }))\n }\n x += width\n }\n }\n return false\n }\n}\n\nexport class Wrapper<C extends CanvasRenderingContext2D> implements Node<C> {\n #inner: Node<C>;constructor(inner1: Node<C>) {\n this.#inner = inner1;\n registerNodeParent(this.#inner, this)\n }\n\n get inner() { return this.#inner }\n set inner(newnode: Node<C>) {\n if (newnode === this.#inner) { return }\n unregisterNodeParent(this.#inner)\n this.#inner = newnode\n registerNodeParent(newnode, this)\n }\n\n get flex() { return this.inner.flex }\n\n measure(ctx: Context<C>): Box {\n return this.inner.measure(ctx)\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n return this.inner.draw(ctx, x, y)\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n return this.inner.hittest(ctx, test)\n }\n}\n\nexport class PaddingBox<C extends CanvasRenderingContext2D> extends Wrapper<C> {\n constructor(\n inner: Node<C>,\n readonly padding: {\n top?: number\n bottom?: number\n left?: number\n right?: number\n }\n = {}\n ) { super(inner) }\n\n get #top() { return this.padding.top ?? 0 }\n get #bottom() { return this.padding.bottom ?? 0 }\n get #left() { return this.padding.left ?? 0 }\n get #right() { return this.padding.right ?? 0 }\n\n measure(ctx: Context<C>): Box {\n ctx = shallow(ctx)\n ctx.remainingWidth -= this.#left + this.#right\n const { width, height } = ctx.measureNode(this.inner)\n return ({width: width + this.#left + this.#right,\n height: height + this.#top + this.#bottom,})\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n return this.inner.draw(ctx, x + this.#left, y + this.#top)\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n const { width, height } = ctx.measureNode(this.inner)\n let ref11;let ref12;if(\n ((\n 0 <= (ref11 = test.x - this.#left) && ref11 < width)&&(\n 0 <= (ref12 = test.y - this.#top) && ref12 < height))) {\n return this.inner.hittest(ctx, shallowMerge(test, {\n x: test.x - this.#left,\n y: test.y - this.#top,\n }))\n }\n return false\n }\n}\n\nexport class AlignBox<C extends CanvasRenderingContext2D> extends Wrapper<C> {\n #shift = 0\n\n constructor(\n inner: Node<C>,\n readonly options: {\n alignment: \"left\" | \"center\" | \"right\"\n }\n ) { super(inner) }\n\n measure(ctx: Context<C>): Box {\n const { width, height } = ctx.measureNode(this.inner)\n let ref13;switch(this.options.alignment) {\n case 'center': { ref13 = (ctx.remainingWidth - width) / 2;break;\n }\n case 'right': { ref13 = ctx.remainingWidth - width;break;\n }\n default: { ref13 = 0 }\n };this.#shift = ref13\n return ({width: ctx.remainingWidth,\n height: height})\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n return this.inner.draw(ctx, x + this.#shift, y)\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n const { width } = ctx.measureNode(this.inner)\n let ref14;if (0 <= (ref14 = test.x - this.#shift) && ref14 < width) {\n return this.inner.hittest(ctx, shallowMerge(test, {\n x: test.x - this.#shift,\n }))\n }\n return false\n }\n}\n\nexport class MultilineText<C extends CanvasRenderingContext2D> implements Node<C> {\n #width: number = 0\n #lines: TextLayout[] = []\n\n constructor(\n readonly text: string,\n readonly options: {\n lineHeight: number\n font: string\n alignment: \"left\" | \"center\" | \"right\"\n style: DynValue<C, string>\n }\n ){}\n\n get flex() { return true }\n\n measure(ctx: Context<C>): Box {\n return ctx.with((g) => {\n g.font = this.options.font\n const {width: width1, lines } = layoutText(ctx, this.text, ctx.remainingWidth);this.#width = width1;this.#lines = lines;\n return ({ width: this.#width, height: this.#lines.length * this.options.lineHeight })\n })\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n return ctx.with((g) => {\n g.font = this.options.font\n g.fillStyle = ctx.resolveDynValue(this.options.style)\n switch(this.options.alignment) {\n case 'left': {\n for (let ref15 = this.#lines, i10 = 0, len10 = ref15.length; i10 < len10; i10++) {const { text, shift, lineHeight } = ref15[i10];\n g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2)\n y += this.options.lineHeight\n };break;\n }\n case 'right': {\n x += this.#width\n g.textAlign = \"right\"\n for (let ref16 = this.#lines, i11 = 0, len11 = ref16.length; i11 < len11; i11++) {const { text, shift, lineHeight } = ref16[i11];\n g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2)\n y += this.options.lineHeight\n };break;\n }\n case 'center': {\n x += this.#width / 2\n g.textAlign = \"center\"\n for (let ref17 = this.#lines, i12 = 0, len12 = ref17.length; i12 < len12; i12++) {const { text, shift, lineHeight } = ref17[i12];\n g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2)\n y += this.options.lineHeight\n };break;\n }\n }\n return false\n })\n }\n\n hittest(ctx: Context<C>, test: HitTest) { return false }\n}\n\nexport class Text<C extends CanvasRenderingContext2D> implements Node<C> {\n constructor(\n readonly text: string,\n readonly options: {\n lineHeight: number\n font: string\n style: DynValue<C, string>\n }\n ){}\n\n #width = 0\n #text = \"\"\n #shift = 0\n #lineHeight = 0\n\n get flex() { return false }\n\n measure(ctx: Context<C>): Box {\n return ctx.with((g) => {\n g.font = this.options.font\n const {width: width2,text: text1,shift: shift1,lineHeight: lineHeight1 } = layoutFirstLine(ctx, this.text, ctx.remainingWidth);this.#width = width2;this.#text = text1;this.#shift = shift1;this.#lineHeight = lineHeight1;\n return ({ width: this.#width, height: this.options.lineHeight })\n })\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n return ctx.with((g) => {\n g.font = this.options.font\n g.fillStyle = ctx.resolveDynValue(this.options.style)\n g.fillText(this.#text, x, y + this.#shift + (this.options.lineHeight - this.#lineHeight) / 2)\n return false\n })\n }\n\n hittest(ctx: Context<C>, test: HitTest) { return false }\n}\n\nexport class Fixed<C extends CanvasRenderingContext2D> implements Node<C> {\n constructor(readonly width: number, readonly height: number){}\n\n get flex() { return false }\n\n measure(ctx: Context<C>): Box {\n return ({ width: this.width, height: this.height })\n }\n\n draw(ctx: Context<C>, x: number, y: number) { return false }\n\n hittest(ctx: Context<C>, test: HitTest) { return false }\n}",
9
- "var concatAssign: <B, A extends {push: (this: A, b: B) => void} | (B extends unknown[] ? {push: (this: A, ...b: B) => void} : never)>(lhs: A, rhs: B) => A = (lhs, rhs) => (((rhs as any)?.[Symbol.isConcatSpreadable] ?? Array.isArray(rhs)) ? (lhs as any).push.apply(lhs, rhs as any) : (lhs as any).push(rhs), lhs);\nimport type { RendererOptions, Context, Node, Box, HitTest, DynValue, RenderFeedback } from \"./types.civet\"\nimport { shallow, shallowMerge } from \"./utils.civet\"\nimport { getNodeParent } from \"./registry.civet\"\n\nexport class BaseRenderer<C extends CanvasRenderingContext2D, O extends {} = {}> {\n graphics: C\n #ctx: Context<C>\n #lastWidth: number\n #cache = new WeakMap<Node<C>, Box>()\n\n protected get context() { return shallow(this.#ctx) }\n\n constructor(graphics1: C, readonly options: RendererOptions & O) {\n this.graphics = graphics1;\n this.graphics.textBaseline = 'top'\n this.graphics.textRendering = 'optimizeLegibility'\n const self = this\n this.#ctx = {\n graphics: this.graphics,\n get remainingWidth() { return this.graphics.canvas.clientWidth },\n set remainingWidth(value) {\n Object.defineProperty(this, \"remainingWidth\", {value: value, writable: true})\n },\n measureNode(node: Node<C>) { return self.measureNode(node, this) },\n invalidateNode: this.invalidateNode.bind(this),\n resolveDynValue<T>(value: DynValue<C, T>): T {\n if (typeof value === \"function\") {\n return value(this.graphics)\n }\n else {\n return value as T\n }\n },\n with<T>(cb: (g: C) => T): T {\n this.graphics.save()\n try {\n return cb(this.graphics)} finally { this.graphics.restore() }\n },\n splitText(text: string) { return options.splitText(text) }}\n this.#lastWidth = this.graphics.canvas.clientWidth\n }\n\n invalidateNode(node: Node<C>): void {\n this.#cache.delete(node)\n let it: (Node<C> | undefined) = node\n while (it = getNodeParent(it)) {\n this.#cache.delete(it)\n }\n }\n\n measureNode(node: Node<C>, ctx?: Context<C>): Box {\n let ref;if (this.#lastWidth != this.graphics.canvas.clientWidth) {\n this.#cache = new WeakMap<Node<C>, Box>()\n }\n else if ((ref= this.#cache.get(node)) != null) {const result = ref;\n return result\n }\n const result = node.measure(ctx ?? this.context)\n this.#cache.set(node, result)\n return result\n }\n}\n\nexport class DebugRenderer<C extends CanvasRenderingContext2D> extends BaseRenderer<C> {\n draw(node: Node<C>): boolean {\n const { clientWidth: viewportWidth, clientHeight: viewportHeight } = this.graphics.canvas\n this.graphics.clearRect(0, 0, viewportWidth, viewportHeight)\n return node.draw(this.context, 0, 0)\n }\n\n hittest(node: Node<C>, test: HitTest): boolean {\n return node.hittest(this.context, test)\n }\n}\n\nexport function memoRenderItem<C extends CanvasRenderingContext2D, T extends {}>(renderItem: (item: T) => Node<C>) {\n const cache = new WeakMap<T, Node<C>>()\n function fn(item: T): Node<C> {\n let ref1;if ((ref1= cache.get(item)) != null) { const result = ref1;return result }\n const result = renderItem(item)\n cache.set(item, result)\n return result\n }\n return Object.assign(fn, {reset: cache.delete.bind(cache)})\n}\n\nexport class ListState<T extends {}> {\n offset = 0\n position = NaN\n items: T[] = []\n\n unshift(...items: T[]) { return this.unshiftAll(items) }\n\n unshiftAll(items: T[]) {\n this.position += items.length\n return this.items = items.concat(this.items)\n }\n\n push(...items: T[]) { return this.pushAll(items) }\n\n pushAll(items: T[]) { return concatAssign(this.items, items) }\n\n reset(): void {\n this.items = []\n this.offset = 0\n this.position = NaN\n }\n\n resetScroll(): void {\n this.offset = 0\n this.position = NaN\n }\n\n applyScroll(delta: number) { return this.offset += delta }\n}\n\nexport abstract class VirtualizedRenderer<C extends CanvasRenderingContext2D, T extends {}> extends BaseRenderer<C, {\n renderItem: (item: T) => Node<C>\n list: ListState<T>\n}> {\n get position() { return this.options.list.position }\n set position(value) { this.options.list.position = value }\n\n get offset() { return this.options.list.offset }\n set offset(value) { this.options.list.offset = value }\n\n get items() { return this.options.list.items }\n set items(value) { this.options.list.items = value }\n\n abstract render(): boolean\n abstract hittest(test: HitTest): boolean\n}\n\nexport class TimelineRenderer<C extends CanvasRenderingContext2D, T extends {}> extends VirtualizedRenderer<C, T> {\n #action: \"idle\" | \"scrollToTop\" = \"idle\"\n\n render(feedback?: RenderFeedback): boolean {\n const { clientWidth: viewportWidth, clientHeight: viewportHeight } = this.graphics.canvas\n this.graphics.clearRect(0, 0, viewportWidth, viewportHeight)\n\n let drawlength = 0\n\n if (isNaN(this.position)) { this.position = 0 }\n\n if (this.offset > 0) {\n if (this.position == 0) {\n this.offset = 0\n }\n else {\n for (let i1 = this.position - 1; i1 >= 0; --i1) {const i = i1;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n this.position = i\n this.offset -= height\n if (this.offset <= 0) { break }\n }\n if (this.position == 0 && this.offset > 0) { this.offset = 0 }\n }\n }\n\n let y = this.offset\n const drawlist: [Node<C>, number][] = []\n\n feedback != null ? feedback.minIdx = this.position : void 0\n\n for (let end = this.items.length, i2 = this.position; i2 < end; ++i2) {const i = i2;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n if (y + height > 0) {\n drawlist.push([node, y])\n drawlength += height\n feedback != null ? feedback.maxIdx = i : void 0\n }\n else {\n this.offset += height\n this.position = i + 1\n }\n y += height\n if (y >= viewportHeight) { break }\n }\n\n let shift = 0\n\n if (y < viewportHeight) {\n if (this.position == 0 && drawlength < viewportHeight) {\n shift = -this.offset\n this.offset = 0\n }\n else {\n shift = viewportHeight - y\n y = this.offset += shift\n let lastidx = -1\n for (let i3 = this.position - 1; i3 >= 0; --i3) {const i = i3;\n const item = this.items[lastidx = i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n drawlength += height\n y -= height\n drawlist.push([node, y - shift])\n feedback != null ? feedback.minIdx = i : void 0\n if (y < 0) { break }\n }\n if (lastidx == 0 && drawlength < viewportHeight) {\n shift = -drawlist[drawlist.length-1][1]\n this.position = 0\n this.offset = 0\n }\n }\n }\n\n let result = false\n for (let i4 = 0, len = drawlist.length; i4 < len; i4++) {const [node, y] = drawlist[i4];\n const request_redraw = node.draw(this.context, 0, y + shift)\n result ||= request_redraw\n }\n\n if (this.#action === 'scrollToTop') {\n if (this.position === 0 && this.offset === 0) {\n this.#action = \"idle\"\n }\n else {\n this.options.list.applyScroll(5 * (this.position + 1))\n return true\n }\n }\n return result\n }\n\n hittest(test: HitTest): boolean {\n const viewportHeight = this.graphics.canvas.clientHeight\n let y = this.offset\n for (let end1 = this.items.length, i5 = this.position; i5 < end1; ++i5) {const i = i5;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n if (test.y < y + height) {\n return node.hittest(this.context, shallowMerge(test, {y: test.y - y}))\n }\n y += height\n if (y >= viewportHeight) { break }\n }\n return false\n }\n\n scrollToTop(): void {\n this.#action = \"scrollToTop\"\n }\n}\n\nexport class ChatRenderer<C extends CanvasRenderingContext2D, T extends {}> extends VirtualizedRenderer<C, T> {\n #action: \"idle\" | \"scrollToBottom\" = \"idle\"\n\n render(feedback?: RenderFeedback) {\n const { clientWidth: viewportWidth, clientHeight: viewportHeight } = this.graphics.canvas\n this.graphics.clearRect(0, 0, viewportWidth, viewportHeight)\n\n let drawlength = 0\n if (isNaN(this.position)) { this.position = this.items.length - 1 }\n\n if (this.offset < 0) {\n if (this.position == this.items.length - 1) {\n this.offset = 0\n }\n else {\n for (let end2 = this.items.length, i6 = this.position + 1; i6 < end2; ++i6) {const i = i6;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n this.position = i\n this.offset += height\n if (this.offset > 0) { break }\n }\n }\n }\n\n let y = viewportHeight + this.offset\n const drawlist: [Node<C>, number][] = []\n\n feedback != null ? feedback.maxIdx = this.position : void 0\n\n for (let i7 = this.position; i7 >= 0; --i7) {const i = i7;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n y -= height\n if (y <= viewportHeight) {\n drawlist.push([node, y])\n drawlength += height\n feedback != null ? feedback.minIdx = i : void 0\n }\n else {\n this.offset -= height\n this.position = i - 1\n }\n if (y < 0) { break }\n }\n\n let shift = 0\n\n if (y > 0) {\n shift = -y\n if (drawlength < viewportHeight) {\n y = drawlength\n for (let end3 = this.items.length, i8 = this.position + 1; i8 < end3; ++i8) {const i = i8;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n drawlist.push([node, y - shift])\n y = drawlength += height\n this.position = i\n feedback != null ? feedback.maxIdx = i : void 0\n if (y >= viewportHeight) { break }\n }\n if (drawlength < viewportHeight) {\n this.offset = 0\n }\n else {\n this.offset = drawlength - viewportHeight\n }\n }\n else {\n this.offset = drawlength - viewportHeight\n }\n }\n\n let result = false\n for (let i9 = 0, len1 = drawlist.length; i9 < len1; i9++) {const [node, y] = drawlist[i9];\n const request_redraw = node.draw(this.context, 0, y + shift)\n result ||= request_redraw\n }\n\n if (this.#action === 'scrollToBottom') {\n if (this.position === this.items.length - 1 && this.offset === 0) {\n this.#action = \"idle\"\n }\n else {\n this.options.list.applyScroll(-5 * (this.items.length - this.position))\n return true\n }\n }\n return result\n }\n\n hittest(test: HitTest): boolean {\n const viewportHeight = this.graphics.canvas.clientHeight\n\n let drawlength = 0\n\n const results=[];for (let i10 = this.position; i10 >= 0; --i10) {const i = i10;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n drawlength += height\n results.push([node, height] as const)\n };const heights =results\n\n let y = drawlength < viewportHeight ? drawlength : viewportHeight + this.offset\n\n if (test.y > y) { return false }\n\n for (let i11 = 0, len2 = heights.length; i11 < len2; i11++) {const [node, height] = heights[i11];\n y -= height\n if (test.y > y) {\n return node.hittest(this.context, shallowMerge(test, {y: test.y - y}))\n }\n }\n\n return false\n }\n\n scrollToBottom(): void {\n this.#action = \"scrollToBottom\"\n }\n}"
8
+ "import type { Box, Context, Node, HitTest, DynValue, Alignment } from \"./types.civet\";\nimport { layoutText, layoutFirstLine, type TextLayout } from \"./text.civet\";\nimport { shallow, shallowMerge } from \"./utils.civet\"\nimport { registerNodeParent, unregisterNodeParent } from \"./registry.civet\"\n\nexport abstract class Group<C extends CanvasRenderingContext2D> implements Node<C> {\n constructor(readonly children: Node<C>[]) {\n for (let i = 0, len = children.length; i < len; i++) {const child = children[i];\n registerNodeParent(child, this)\n }\n }\n\n abstract measure(ctx: Context<C>): Box\n abstract draw(ctx: Context<C>, x: number, y: number): boolean\n abstract hittest(ctx: Context<C>, test: HitTest): boolean\n get flex() {\n let results=false;for (let ref = this.children, i1 = 0, len1 = ref.length; i1 < len1; i1++) {const item = ref[i1];\n if (item.flex) {results = true; break}\n }return results\n }\n}\n\nexport class VStack<C extends CanvasRenderingContext2D> extends Group<C> {\n constructor(children: Node<C>[], readonly options: { gap?: number, alignment?: \"left\" | \"center\" | \"right\" } = {}) {\n super(children)\n }\n\n measure(ctx: Context<C>): Box {\n let width = 0\n let height = 0\n if (this.options.alignment != null) { ctx.alignment = this.options.alignment }\n for (let ref1 = this.children, i2 = 0, len2 = ref1.length; i2 < len2; i2++) {const index = i2;const child = ref1[i2];\n if ((this.options.gap != null) && index !== 0) { height += this.options.gap }\n let result = shallow(ctx).measureNode(child)\n height += result.height\n width = Math.max(width, result.width)\n }\n ctx.remainingWidth -= width\n return ({ width, height })\n }\n\n draw(ctx: Context<C>, x: number, y: number) {\n let result = false\n const fullwidth = ctx.measureNode(this).width\n const alignment = this.options.alignment ?? ctx.alignment\n if (this.options.alignment != null) { ctx.alignment = this.options.alignment }\n for (let ref2 = this.children, i3 = 0, len3 = ref2.length; i3 < len3; i3++) {const index = i3;const child = ref2[i3];\n if ((this.options.gap != null) && index !== 0) { y += this.options.gap }\n let { width, height } = shallow(ctx).measureNode(child)\n const curctx = shallow(ctx)\n let ref3;\n if(alignment === \"right\") { ref3 = child.draw(curctx, x + fullwidth - width, y)}\nelse if(alignment === \"center\") { ref3 = child.draw(curctx, x + (fullwidth - width) / 2, y)}\nelse { ref3 = child.draw(curctx, x, y) };const request_redraw =ref3\n result ||= request_redraw\n y += height\n }\n return result\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n let y = 0\n const fullwidth = ctx.measureNode(this).width\n const alignment = this.options.alignment ?? ctx.alignment\n if (this.options.alignment != null) { ctx.alignment = this.options.alignment }\n for (let ref4 = this.children, i4 = 0, len4 = ref4.length; i4 < len4; i4++) {const index = i4;const child = ref4[i4];\n if ((this.options.gap != null) && index !== 0) { y += this.options.gap }\n let { width, height } = shallow(ctx).measureNode(child)\n const curctx = shallow(ctx)\n if (test.y >= y && test.y < y + height) {\n return child.hittest(curctx, shallowMerge(test, {\n x: (()=>{if(alignment === \"right\") { return test.x - fullwidth + width}\nelse if(alignment === \"center\") { return test.x - (fullwidth - width) / 2}\nelse { return test.x }})(),\n y: test.y - y,\n }))\n }\n y += height\n }\n return false\n }\n}\n\nexport class HStack<C extends CanvasRenderingContext2D> extends Group<C> {\n constructor(\n readonly children: Node<C>[],\n readonly options: { reverse?: boolean; gap?: number } = {}\n ) { super(children) }\n\n measure(ctx: Context<C>): Box {\n let width = 0\n let height = 0\n let firstflex: (Node<C> | undefined)\n for (let ref5 = this.children, i5 = 0, len5 = ref5.length; i5 < len5; i5++) {const index = i5;const child = ref5[i5];\n if ((this.options.gap != null) && index !== 0) { width += this.options.gap }\n if ((firstflex == null) && child.flex) {\n firstflex = child\n continue\n }\n const curctx = shallow(ctx)\n curctx.remainingWidth = ctx.remainingWidth - width\n const result = curctx.measureNode(child)\n width += result.width\n height = Math.max(height, result.height)\n }\n\n if (firstflex != null) {\n const curctx = shallow(ctx)\n curctx.remainingWidth = ctx.remainingWidth - width\n const result = curctx.measureNode(firstflex)\n width += result.width\n height = Math.max(height, result.height)\n }\n\n return ({ width, height })\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n let result = false\n const reverse = this.options.reverse ?? ctx.reverse\n if (this.options.reverse) { ctx.reverse = this.options.reverse }\n if (reverse) {\n x += ctx.measureNode(this).width\n for (let ref6 = this.children, i6 = 0, len6 = ref6.length; i6 < len6; i6++) {const index = i6;const child = ref6[i6];\n let ref7;if ((ref7 = (((this.options.gap != null) && index !== 0?this.options.gap:void 0)))) {const gap = ref7;\n x -= gap\n ctx.remainingWidth -= gap\n }\n const { width } = shallow(ctx).measureNode(child)\n x -= width\n const request_redraw = child.draw(shallow(ctx), x, y)\n result ||= request_redraw\n ctx.remainingWidth -= width\n }\n }\n else {\n for (let ref8 = this.children, i7 = 0, len7 = ref8.length; i7 < len7; i7++) {const index = i7;const child = ref8[i7];\n let ref9;if ((ref9 = (((this.options.gap != null) && index !== 0?this.options.gap:void 0)))) {const gap = ref9;\n x += gap\n ctx.remainingWidth -= gap\n }\n const request_redraw = child.draw(shallow(ctx), x, y)\n result ||= request_redraw\n const { width } = shallow(ctx).measureNode(child)\n ctx.remainingWidth -= width\n x += width\n }\n }\n return result\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n const reverse = this.options.reverse ?? ctx.reverse\n if (this.options.reverse) { ctx.reverse = this.options.reverse }\n if (reverse) {\n let x = ctx.measureNode(this).width\n for (let ref10 = this.children, i8 = 0, len8 = ref10.length; i8 < len8; i8++) {const index = i8;const child = ref10[i8];\n let ref11;if ((ref11 = (((this.options.gap != null) && index !== 0?this.options.gap:void 0)))) {const gap = ref11;\n x -= gap\n ctx.remainingWidth -= gap\n }\n const { width } = shallow(ctx).measureNode(child)\n x -= width\n let ref12;if (x <= (ref12 = test.x) && ref12 <= x + width) {\n return child.hittest(shallow(ctx), shallowMerge(test, {\n x: test.x - x,\n }))\n }\n ctx.remainingWidth -= width\n }\n }\n else {\n let x = 0\n for (let ref13 = this.children, i9 = 0, len9 = ref13.length; i9 < len9; i9++) {const index = i9;const child = ref13[i9];\n let ref14;if ((ref14 = (((this.options.gap != null) && index !== 0?this.options.gap:void 0)))) {const gap = ref14;\n x += gap\n ctx.remainingWidth -= gap\n }\n const { width } = shallow(ctx).measureNode(child)\n let ref15;if (x <= (ref15 = test.x) && ref15 <= x + width) {\n return child.hittest(shallow(ctx), shallowMerge(test, {\n x: test.x - x,\n }))\n }\n x += width\n ctx.remainingWidth -= width\n }\n }\n return false\n }\n}\n\nexport class Wrapper<C extends CanvasRenderingContext2D> implements Node<C> {\n #inner: Node<C>;constructor(inner1: Node<C>) {\n this.#inner = inner1;\n registerNodeParent(this.#inner, this)\n }\n\n get inner() { return this.#inner }\n set inner(newnode: Node<C>) {\n if (newnode === this.#inner) { return }\n unregisterNodeParent(this.#inner)\n this.#inner = newnode\n registerNodeParent(newnode, this)\n }\n\n get flex() { return this.inner.flex }\n\n measure(ctx: Context<C>): Box {\n return this.inner.measure(ctx)\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n return this.inner.draw(ctx, x, y)\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n return this.inner.hittest(ctx, test)\n }\n}\n\nexport class PaddingBox<C extends CanvasRenderingContext2D> extends Wrapper<C> {\n constructor(\n inner: Node<C>,\n readonly padding: {\n top?: number\n bottom?: number\n left?: number\n right?: number\n }\n = {}\n ) { super(inner) }\n\n get #top() { return this.padding.top ?? 0 }\n get #bottom() { return this.padding.bottom ?? 0 }\n get #left() { return this.padding.left ?? 0 }\n get #right() { return this.padding.right ?? 0 }\n\n measure(ctx: Context<C>): Box {\n ctx.remainingWidth -= this.#left + this.#right\n const { width, height } = ctx.measureNode(this.inner)\n return ({width: width + this.#left + this.#right,\n height: height + this.#top + this.#bottom,})\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n ctx.remainingWidth -= this.#left + this.#right\n return this.inner.draw(ctx, x + this.#left, y + this.#top)\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n ctx.remainingWidth -= this.#left + this.#right\n const { width, height } = shallow(ctx).measureNode(this.inner)\n let ref16;let ref17;if(\n ((\n 0 <= (ref16 = test.x - this.#left) && ref16 < width)&&(\n 0 <= (ref17 = test.y - this.#top) && ref17 < height))) {\n return this.inner.hittest(shallow(ctx), shallowMerge(test, {\n x: test.x - this.#left,\n y: test.y - this.#top,\n }))\n }\n return false\n }\n}\n\nexport class AlignBox<C extends CanvasRenderingContext2D> extends Wrapper<C> {\n #shift = 0\n\n constructor(\n inner: Node<C>,\n readonly options: {alignment: Alignment}\n ) { super(inner) }\n\n measure(ctx: Context<C>): Box {\n ctx.alignment = this.options.alignment\n const { width, height } = ctx.measureNode(this.inner)\n let ref18;switch(this.options.alignment) {\n case 'center': { ref18 = (ctx.remainingWidth - width) / 2;break;\n }\n case 'right': { ref18 = ctx.remainingWidth - width;break;\n }\n default: { ref18 = 0 }\n };this.#shift = ref18\n return ({width: ctx.remainingWidth,\n height: height})\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n ctx.alignment = this.options.alignment\n return this.inner.draw(ctx, x + this.#shift, y)\n }\n\n hittest(ctx: Context<C>, test: HitTest): boolean {\n ctx.alignment = this.options.alignment\n const { width } = shallow(ctx).measureNode(this.inner)\n let ref19;if (0 <= (ref19 = test.x - this.#shift) && ref19 < width) {\n return this.inner.hittest(shallow(ctx), shallowMerge(test, {\n x: test.x - this.#shift,\n }))\n }\n return false\n }\n}\n\nexport class MultilineText<C extends CanvasRenderingContext2D> implements Node<C> {\n #width: number = 0\n #lines: TextLayout[] = []\n\n constructor(\n readonly text: string,\n readonly options: {\n lineHeight: number\n font: string\n alignment: \"left\" | \"center\" | \"right\"\n style: DynValue<C, string>\n }\n ){}\n\n get flex() { return true }\n\n measure(ctx: Context<C>): Box {\n return ctx.with((g) => {\n g.font = this.options.font\n const {width: width1, lines } = layoutText(ctx, this.text, ctx.remainingWidth);this.#width = width1;this.#lines = lines;\n return ({ width: this.#width, height: this.#lines.length * this.options.lineHeight })\n })\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n return ctx.with((g) => {\n g.font = this.options.font\n g.fillStyle = ctx.resolveDynValue(this.options.style)\n switch(this.options.alignment) {\n case 'left': {\n for (let ref20 = this.#lines, i10 = 0, len10 = ref20.length; i10 < len10; i10++) {const { text, shift, lineHeight } = ref20[i10];\n g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2)\n y += this.options.lineHeight\n };break;\n }\n case 'right': {\n x += this.#width\n g.textAlign = \"right\"\n for (let ref21 = this.#lines, i11 = 0, len11 = ref21.length; i11 < len11; i11++) {const { text, shift, lineHeight } = ref21[i11];\n g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2)\n y += this.options.lineHeight\n };break;\n }\n case 'center': {\n x += this.#width / 2\n g.textAlign = \"center\"\n for (let ref22 = this.#lines, i12 = 0, len12 = ref22.length; i12 < len12; i12++) {const { text, shift, lineHeight } = ref22[i12];\n g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2)\n y += this.options.lineHeight\n };break;\n }\n }\n return false\n })\n }\n\n hittest(ctx: Context<C>, test: HitTest) { return false }\n}\n\nexport class Text<C extends CanvasRenderingContext2D> implements Node<C> {\n constructor(\n readonly text: string,\n readonly options: {\n lineHeight: number\n font: string\n style: DynValue<C, string>\n }\n ){}\n\n #width = 0\n #text = \"\"\n #shift = 0\n #lineHeight = 0\n\n get flex() { return false }\n\n measure(ctx: Context<C>): Box {\n return ctx.with((g) => {\n g.font = this.options.font\n const {width: width2,text: text1,shift: shift1,lineHeight: lineHeight1 } = layoutFirstLine(ctx, this.text, ctx.remainingWidth);this.#width = width2;this.#text = text1;this.#shift = shift1;this.#lineHeight = lineHeight1;\n return ({ width: this.#width, height: this.options.lineHeight })\n })\n }\n\n draw(ctx: Context<C>, x: number, y: number): boolean {\n return ctx.with((g) => {\n g.font = this.options.font\n g.fillStyle = ctx.resolveDynValue(this.options.style)\n g.fillText(this.#text, x, y + this.#shift + (this.options.lineHeight - this.#lineHeight) / 2)\n return false\n })\n }\n\n hittest(ctx: Context<C>, test: HitTest) { return false }\n}\n\nexport class Fixed<C extends CanvasRenderingContext2D> implements Node<C> {\n constructor(readonly width: number, readonly height: number){}\n\n get flex() { return false }\n\n measure(ctx: Context<C>): Box {\n return ({ width: this.width, height: this.height })\n }\n\n draw(ctx: Context<C>, x: number, y: number) { return false }\n\n hittest(ctx: Context<C>, test: HitTest) { return false }\n}",
9
+ "var concatAssign: <B, A extends {push: (this: A, b: B) => void} | (B extends unknown[] ? {push: (this: A, ...b: B) => void} : never)>(lhs: A, rhs: B) => A = (lhs, rhs) => (((rhs as any)?.[Symbol.isConcatSpreadable] ?? Array.isArray(rhs)) ? (lhs as any).push.apply(lhs, rhs as any) : (lhs as any).push(rhs), lhs);\nimport type { RendererOptions, Context, Node, Box, HitTest, DynValue, RenderFeedback } from \"./types.civet\"\nimport { shallow, shallowMerge } from \"./utils.civet\"\nimport { getNodeParent } from \"./registry.civet\"\n\nexport class BaseRenderer<C extends CanvasRenderingContext2D, O extends {} = {}> {\n graphics: C\n #ctx: Context<C>\n #lastWidth: number\n #cache = new WeakMap<Node<C>, Box>()\n\n protected get context() { return shallow(this.#ctx) }\n\n constructor(graphics1: C, readonly options: RendererOptions & O) {\n this.graphics = graphics1;\n this.graphics.textBaseline = 'top'\n this.graphics.textRendering = 'optimizeLegibility'\n const self = this\n this.#ctx = {\n graphics: this.graphics,\n get remainingWidth() { return this.graphics.canvas.clientWidth },\n set remainingWidth(value) {\n Object.defineProperty(this, \"remainingWidth\", {value: value, writable: true})\n },\n alignment: \"left\",\n reverse: false,\n measureNode(node: Node<C>) { return self.measureNode(node, this) },\n invalidateNode: this.invalidateNode.bind(this),\n resolveDynValue<T>(value: DynValue<C, T>): T {\n if (typeof value === \"function\") {\n return value(this.graphics)\n }\n else {\n return value as T\n }\n },\n with<T>(cb: (g: C) => T): T {\n this.graphics.save()\n try {\n return cb(this.graphics)} finally { this.graphics.restore() }\n },\n splitText(text: string) { return options.splitText(text) }}\n this.#lastWidth = this.graphics.canvas.clientWidth\n }\n\n invalidateNode(node: Node<C>): void {\n this.#cache.delete(node)\n let it: (Node<C> | undefined) = node\n while (it = getNodeParent(it)) {\n this.#cache.delete(it)\n }\n }\n\n measureNode(node: Node<C>, ctx?: Context<C>): Box {\n let ref;if (this.#lastWidth != this.graphics.canvas.clientWidth) {\n this.#cache = new WeakMap<Node<C>, Box>()\n }\n else if ((ref= this.#cache.get(node)) != null) {const result = ref;\n return result\n }\n const result = node.measure(ctx ?? this.context)\n this.#cache.set(node, result)\n return result\n }\n}\n\nexport class DebugRenderer<C extends CanvasRenderingContext2D> extends BaseRenderer<C> {\n draw(node: Node<C>): boolean {\n const { clientWidth: viewportWidth, clientHeight: viewportHeight } = this.graphics.canvas\n this.graphics.clearRect(0, 0, viewportWidth, viewportHeight)\n return node.draw(this.context, 0, 0)\n }\n\n hittest(node: Node<C>, test: HitTest): boolean {\n return node.hittest(this.context, test)\n }\n}\n\nexport function memoRenderItem<C extends CanvasRenderingContext2D, T extends {}>(renderItem: (item: T) => Node<C>) {\n const cache = new WeakMap<T, Node<C>>()\n function fn(item: T): Node<C> {\n let ref1;if ((ref1= cache.get(item)) != null) { const result = ref1;return result }\n const result = renderItem(item)\n cache.set(item, result)\n return result\n }\n return Object.assign(fn, {reset: cache.delete.bind(cache)})\n}\n\nexport class ListState<T extends {}> {\n offset = 0\n position = NaN\n items: T[] = []\n\n unshift(...items: T[]) { return this.unshiftAll(items) }\n\n unshiftAll(items: T[]) {\n this.position += items.length\n return this.items = items.concat(this.items)\n }\n\n push(...items: T[]) { return this.pushAll(items) }\n\n pushAll(items: T[]) { return concatAssign(this.items, items) }\n\n reset(): void {\n this.items = []\n this.offset = 0\n this.position = NaN\n }\n\n resetScroll(): void {\n this.offset = 0\n this.position = NaN\n }\n\n applyScroll(delta: number) { return this.offset += delta }\n}\n\nexport abstract class VirtualizedRenderer<C extends CanvasRenderingContext2D, T extends {}> extends BaseRenderer<C, {\n renderItem: (item: T) => Node<C>\n list: ListState<T>\n}> {\n get position() { return this.options.list.position }\n set position(value) { this.options.list.position = value }\n\n get offset() { return this.options.list.offset }\n set offset(value) { this.options.list.offset = value }\n\n get items() { return this.options.list.items }\n set items(value) { this.options.list.items = value }\n\n abstract render(): boolean\n abstract hittest(test: HitTest): boolean\n}\n\nexport class TimelineRenderer<C extends CanvasRenderingContext2D, T extends {}> extends VirtualizedRenderer<C, T> {\n #action: \"idle\" | \"scrollToTop\" = \"idle\"\n\n render(feedback?: RenderFeedback): boolean {\n const { clientWidth: viewportWidth, clientHeight: viewportHeight } = this.graphics.canvas\n this.graphics.clearRect(0, 0, viewportWidth, viewportHeight)\n\n let drawlength = 0\n\n if (isNaN(this.position)) { this.position = 0 }\n\n if (this.offset > 0) {\n if (this.position == 0) {\n this.offset = 0\n }\n else {\n for (let i1 = this.position - 1; i1 >= 0; --i1) {const i = i1;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n this.position = i\n this.offset -= height\n if (this.offset <= 0) { break }\n }\n if (this.position == 0 && this.offset > 0) { this.offset = 0 }\n }\n }\n\n let y = this.offset\n const drawlist: [Node<C>, number][] = []\n\n feedback != null ? feedback.minIdx = this.position : void 0\n\n for (let end = this.items.length, i2 = this.position; i2 < end; ++i2) {const i = i2;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n if (y + height > 0) {\n drawlist.push([node, y])\n drawlength += height\n feedback != null ? feedback.maxIdx = i : void 0\n }\n else {\n this.offset += height\n this.position = i + 1\n }\n y += height\n if (y >= viewportHeight) { break }\n }\n\n let shift = 0\n\n if (y < viewportHeight) {\n if (this.position == 0 && drawlength < viewportHeight) {\n shift = -this.offset\n this.offset = 0\n }\n else {\n shift = viewportHeight - y\n y = this.offset += shift\n let lastidx = -1\n for (let i3 = this.position - 1; i3 >= 0; --i3) {const i = i3;\n const item = this.items[lastidx = i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n drawlength += height\n y -= height\n drawlist.push([node, y - shift])\n feedback != null ? feedback.minIdx = i : void 0\n if (y < 0) { break }\n }\n if (lastidx == 0 && drawlength < viewportHeight) {\n shift = -drawlist[drawlist.length-1][1]\n this.position = 0\n this.offset = 0\n }\n }\n }\n\n let result = false\n for (let i4 = 0, len = drawlist.length; i4 < len; i4++) {const [node, y] = drawlist[i4];\n const request_redraw = node.draw(this.context, 0, y + shift)\n result ||= request_redraw\n }\n\n if (this.#action === 'scrollToTop') {\n if (this.position === 0 && this.offset === 0) {\n this.#action = \"idle\"\n }\n else {\n this.options.list.applyScroll(5 * (this.position + 1))\n return true\n }\n }\n return result\n }\n\n hittest(test: HitTest): boolean {\n const viewportHeight = this.graphics.canvas.clientHeight\n let y = this.offset\n for (let end1 = this.items.length, i5 = this.position; i5 < end1; ++i5) {const i = i5;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n if (test.y < y + height) {\n return node.hittest(this.context, shallowMerge(test, {y: test.y - y}))\n }\n y += height\n if (y >= viewportHeight) { break }\n }\n return false\n }\n\n scrollToTop(): void {\n this.#action = \"scrollToTop\"\n }\n}\n\nexport class ChatRenderer<C extends CanvasRenderingContext2D, T extends {}> extends VirtualizedRenderer<C, T> {\n #action: \"idle\" | \"scrollToBottom\" = \"idle\"\n\n render(feedback?: RenderFeedback) {\n const { clientWidth: viewportWidth, clientHeight: viewportHeight } = this.graphics.canvas\n this.graphics.clearRect(0, 0, viewportWidth, viewportHeight)\n\n let drawlength = 0\n if (isNaN(this.position)) { this.position = this.items.length - 1 }\n\n if (this.offset < 0) {\n if (this.position == this.items.length - 1) {\n this.offset = 0\n }\n else {\n for (let end2 = this.items.length, i6 = this.position + 1; i6 < end2; ++i6) {const i = i6;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n this.position = i\n this.offset += height\n if (this.offset > 0) { break }\n }\n }\n }\n\n let y = viewportHeight + this.offset\n const drawlist: [Node<C>, number][] = []\n\n feedback != null ? feedback.maxIdx = this.position : void 0\n\n for (let i7 = this.position; i7 >= 0; --i7) {const i = i7;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n y -= height\n if (y <= viewportHeight) {\n drawlist.push([node, y])\n drawlength += height\n feedback != null ? feedback.minIdx = i : void 0\n }\n else {\n this.offset -= height\n this.position = i - 1\n }\n if (y < 0) { break }\n }\n\n let shift = 0\n\n if (y > 0) {\n shift = -y\n if (drawlength < viewportHeight) {\n y = drawlength\n for (let end3 = this.items.length, i8 = this.position + 1; i8 < end3; ++i8) {const i = i8;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n drawlist.push([node, y - shift])\n y = drawlength += height\n this.position = i\n feedback != null ? feedback.maxIdx = i : void 0\n if (y >= viewportHeight) { break }\n }\n if (drawlength < viewportHeight) {\n this.offset = 0\n }\n else {\n this.offset = drawlength - viewportHeight\n }\n }\n else {\n this.offset = drawlength - viewportHeight\n }\n }\n\n let result = false\n for (let i9 = 0, len1 = drawlist.length; i9 < len1; i9++) {const [node, y] = drawlist[i9];\n const request_redraw = node.draw(this.context, 0, y + shift)\n result ||= request_redraw\n }\n\n if (this.#action === 'scrollToBottom') {\n if (this.position === this.items.length - 1 && this.offset === 0) {\n this.#action = \"idle\"\n }\n else {\n this.options.list.applyScroll(-5 * (this.items.length - this.position))\n return true\n }\n }\n return result\n }\n\n hittest(test: HitTest): boolean {\n const viewportHeight = this.graphics.canvas.clientHeight\n\n let drawlength = 0\n\n const results=[];for (let i10 = this.position; i10 >= 0; --i10) {const i = i10;\n const item = this.items[i]\n const node = this.options.renderItem(item)\n const { height } = this.measureNode(node)\n drawlength += height\n results.push([node, height] as const)\n };const heights =results\n\n let y = drawlength < viewportHeight ? drawlength : viewportHeight + this.offset\n\n if (test.y > y) { return false }\n\n for (let i11 = 0, len2 = heights.length; i11 < len2; i11++) {const [node, height] = heights[i11];\n y -= height\n if (test.y > y) {\n return node.hittest(this.context, shallowMerge(test, {y: test.y - y}))\n }\n }\n\n return false\n }\n\n scrollToBottom(): void {\n this.#action = \"scrollToBottom\"\n }\n}"
10
10
  ],
11
- "mappings": "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",
12
- "debugId": "CE66C837C7DF222564756E2164756E21",
11
+ "mappings": ";;AASO,SAAS,eAAoD,CAClE,KACA,MACA,UACY;AACZ,QAAM,OAAU,KAAK,WAAW,aAAa,GAAG,EAAG,MAAM;AAAA,GAAM,CAAC,EAAG,GAAI,KAAK;AAC5E,UAAQ,OAAO,WAAW,uBAAuB,OAAO,wBAAwB,eAAe,IAAI,SAAS,YAAY,IAAI;AAC5H,MAAI,aAAa,UAAU;AACzB,WAAQ,EAAE,OAAO,WAAW,MAAM,MAAM,OAAO,QAAQ,GAAG,WAAW;AAAA,EACvE,OACK;AACH,YAAQ,OAAO,gBAAS,eAAe,KAAK,MAAM,UAAU,SAAS;AACrE,WAAQ,EAAE,OAAO,aAAM,OAAO,QAAQ,GAAG,WAAW;AAAA;AAAA;AAIjD,SAAS,UAA+C,CAC7D,KACA,MACA,UACwC;AACxC,QAAM,UAAQ,CAAC;AAAE,WAAS,MAAM,KAC3B,WAAW,aAAa,GAAG,EAC3B,MAAM;AAAA,CAAI,GAAG,IAAI,GAAG,MAAM,IAAI,OAAQ,IAAI,KAAK,KAAK;AAAC,UAAM,OAAO,IAAI;AACzE,UAAM,SAAS,KAAK,KAAK;AACzB,SAAK,QAAQ;AAAE;AAAA,IAAS;AACxB,YAAQ,KAAK,MAAM;AAAA,EACrB;AAAE,QAAM,aAAY;AACpB,MAAI,WAAW,WAAW,GAAG;AAAE,WAAO,EAAE,OAAO,GAAG,OAAO,CAAC,EAAE;AAAA,EAAE;AAC9D,MAAI,QAAQ;AACZ,QAAM,QAAsB,CAAC;AAC7B,WAAS,KAAK,GAAG,OAAO,WAAW,OAAQ,KAAK,MAAM,MAAM;AAAC,QAAI,OAAO,WAAW;AACjF,UAAM,OAAO,WAAW,uBAAuB,OAAO,wBAAwB,eAAe,IAAI,SAAS,YAAY,IAAI;AAC1H,QAAI,aAAa,UAAU;AACzB,cAAQ,KAAK,IAAI,OAAO,SAAS;AACjC,YAAM,KAAK,EAAC,OAAO,WAAW,MAAM,MAAM,OAAO,QAAQ,GAAG,WAAsB,CAAC;AAAA,IACrF,OACK;AACH,aAAO,YAAY,UAAU;AAC3B,cAAM,UAAU,eAAe,KAAK,MAAM,UAAU,SAAS;AAC7D,gBAAQ,KAAK,IAAI,OAAO,QAAQ,KAAK;AACrC,cAAM,KAAK,EAAC,MAAM,QAAQ,MAAM,OAAO,QAAQ,OAAO,OAAO,QAAQ,GAAG,WAAsB,CAAC;AAC/F,eAAO,QAAQ;AACf,SAAC,EAAE,OAAO,UAAU,IAAI,IAAI,SAAS,YAAY,IAAI;AAAA,MACvD;AACA,UAAI,YAAY,GAAG;AACjB,gBAAQ,KAAK,IAAI,OAAO,SAAS;AACjC,cAAM,KAAK,EAAC,OAAO,WAAW,MAAM,MAAM,OAAO,QAAQ,GAAG,WAAsB,CAAC;AAAA,MACrF;AAAA;AAAA,EAEJ;AACA,SAAQ,EAAE,OAAO,MAAM;AAAA;AAGzB,SAAS,cAAmD,CAC1D,KACA,MACA,OACA,YAC+C;AAC/C,QAAM,MAAM,IAAI,UAAU,IAAI;AAC9B,MAAI,QAAQ,KAAK,MAAO,QAAQ,aAAc,IAAI,MAAM;AACxD,MAAI;AACJ,QAAM,OAAO,eAAe,IAAI,SAAS,YAAY,YAAY,IAAI,MAAM,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;AAC7F,WAAS,cAAc,QAAQ;AAC7B;AACA,KAAC,EAAE,OAAO,WAAW,IAAI,IAAI,SAAS,YAAY,YAAY,IAAI,MAAM,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;AAAA,EAC5F;AACA,SAAO,aAAa,OAAO;AACzB,UAAM,YAAY,IAAI,YAAY,KAAK,QAAQ,CAAC;AAChD,QAAI,YAAY,GAAG;AACjB,cAAQ;AAAA,IACV,OACK;AACH;AAAA;AAEF,KAAC,EAAE,OAAO,WAAW,IAAI,IAAI,SAAS,YAAY,YAAY,IAAI,MAAM,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC;AAAA,EAC5F;AACA,SAAQ;AAAA,IAAC,MAAM;AAAA,IACf,OAAO;AAAA,IACP,MAAO,IAAI,MAAM,KAAK,EAAE,KAAK,EAAE,EAAG,UAAU;AAAA,EAAC;AAAA;;;ACzFxC,SAAS,OAAqB,CAAC,QAAc;AAClD,SAAO,OAAO,OAAO,MAAM;AAAA;AAGtB,SAAS,YAAwC,CAAC,QAAW,OAAiB;AACnF,SAAQ,EAAE,WAAW,WAAW,MAAM;AAAA;;;ACHxC,IAAM,WAAW,IAAI;AAEd,SAAS,kBAAuD,CAAC,MAAe,QAAuB;AAC5G,WAAS,IAAI,MAAM,MAAM;AAAA;AAGpB,SAAS,oBAAyD,CAAC,MAAqB;AAC7F,WAAS,OAAO,IAAI;AAAA;AAGf,SAAS,aAAkD,CAAC,MAAsC;AACvG,SAAO,SAAS,IAAI,IAAI;AAAA;;;ACRnB,MAAe,MAA8D;AAAA,EAC7D;AAAA,EAArB,WAAW,CAAU,UAAqB;AAArB;AACnB,aAAS,IAAI,GAAG,MAAM,SAAS,OAAQ,IAAI,KAAK,KAAK;AAAC,YAAM,QAAQ,SAAS;AAC3E,yBAAmB,OAAO,IAAI;AAAA,IAChC;AAAA;AAAA,MAME,IAAI,GAAG;AACT,QAAI,UAAQ;AAAM,aAAS,MAAM,KAAK,UAAU,KAAK,GAAG,OAAO,IAAI,OAAQ,KAAK,MAAM,MAAM;AAAC,YAAM,OAAO,IAAI;AAC5G,UAAI,KAAK,MAAM;AAAC,kBAAU;AAAM;AAAA,MAAK;AAAA,IACvC;AAAC,WAAO;AAAA;AAEZ;AAEO;AAAA,MAAM,eAAoD,MAAS;AAAA,EAC9B;AAAA,EAA1C,WAAW,CAAC,UAA8B,UAAqE,CAAC,GAAG;AACjH,UAAM,QAAQ;AAD0B;AAAA;AAAA,EAI1C,OAAO,CAAC,KAAsB;AAC5B,QAAI,QAAQ;AACZ,QAAI,SAAS;AACb,QAAI,KAAK,QAAQ,aAAa,MAAM;AAAE,UAAI,YAAY,KAAK,QAAQ;AAAA,IAAU;AAC7E,aAAS,OAAO,KAAK,UAAU,KAAK,GAAG,OAAO,KAAK,OAAQ,KAAK,MAAM,MAAM;AAAC,YAAM,QAAQ;AAAG,YAAM,QAAQ,KAAK;AAC/G,UAAK,KAAK,QAAQ,OAAO,QAAS,UAAU,GAAG;AAAE,kBAAU,KAAK,QAAQ;AAAA,MAAI;AAC5E,UAAI,SAAS,QAAQ,GAAG,EAAE,YAAY,KAAK;AAC3C,gBAAU,OAAO;AACjB,cAAQ,KAAK,IAAI,OAAO,OAAO,KAAK;AAAA,IACtC;AACA,QAAI,kBAAkB;AACtB,WAAQ,EAAE,OAAO,OAAO;AAAA;AAAA,EAG1B,IAAI,CAAC,KAAiB,GAAW,GAAW;AAC1C,QAAI,SAAS;AACb,UAAM,YAAY,IAAI,YAAY,IAAI,EAAE;AACxC,UAAM,YAAY,KAAK,QAAQ,aAAa,IAAI;AAChD,QAAI,KAAK,QAAQ,aAAa,MAAM;AAAE,UAAI,YAAY,KAAK,QAAQ;AAAA,IAAU;AAC7E,aAAS,OAAO,KAAK,UAAU,KAAK,GAAG,OAAO,KAAK,OAAQ,KAAK,MAAM,MAAM;AAAC,YAAM,QAAQ;AAAG,YAAM,QAAQ,KAAK;AAC/G,UAAK,KAAK,QAAQ,OAAO,QAAS,UAAU,GAAG;AAAE,aAAK,KAAK,QAAQ;AAAA,MAAI;AACvE,YAAM,OAAO,WAAW,QAAQ,GAAG,EAAE,YAAY,KAAK;AACtD,YAAM,SAAS,QAAQ,GAAG;AAC1B,UAAI;AACF,UAAG,cAAc,SAAS;AAAG,eAAO,MAAM,KAAK,QAAQ,IAAI,YAAY,OAAO,CAAC;AAAA,MAAC,WAChF,cAAc,UAAU;AAAE,eAAO,MAAM,KAAK,QAAQ,KAAK,YAAY,SAAS,GAAG,CAAC;AAAA,MAAC,OACrF;AAAM,eAAO,MAAM,KAAK,QAAQ,GAAG,CAAC;AAAA;AAAI,YAAM,iBAAgB;AAC9D,iBAAW;AACX,WAAK;AAAA,IACP;AACA,WAAO;AAAA;AAAA,EAGT,OAAO,CAAC,KAAiB,MAAwB;AAC/C,QAAI,IAAI;AACR,UAAM,YAAY,IAAI,YAAY,IAAI,EAAE;AACxC,UAAM,YAAY,KAAK,QAAQ,aAAa,IAAI;AAChD,QAAI,KAAK,QAAQ,aAAa,MAAM;AAAE,UAAI,YAAY,KAAK,QAAQ;AAAA,IAAU;AAC7E,aAAS,OAAO,KAAK,UAAU,KAAK,GAAG,OAAO,KAAK,OAAQ,KAAK,MAAM,MAAM;AAAC,YAAM,QAAQ;AAAG,YAAM,QAAQ,KAAK;AAC/G,UAAK,KAAK,QAAQ,OAAO,QAAS,UAAU,GAAG;AAAE,aAAK,KAAK,QAAQ;AAAA,MAAI;AACvE,YAAM,OAAO,WAAW,QAAQ,GAAG,EAAE,YAAY,KAAK;AACtD,YAAM,SAAS,QAAQ,GAAG;AAC1B,UAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,QAAQ;AACtC,eAAO,MAAM,QAAQ,QAAQ,aAAa,MAAM;AAAA,UAC9C,IAAI,MAAI;AAAC,gBAAG,cAAc,SAAS;AAAG,qBAAO,KAAK,IAAI,YAAY;AAAA,YAAK,WACzE,cAAc,UAAU;AAAE,qBAAO,KAAK,KAAK,YAAY,SAAS;AAAA,YAAC,OACnE;AAAM,qBAAO,KAAK;AAAA;AAAA,aAAM;AAAA,UACpB,GAAG,KAAK,IAAI;AAAA,QACd,CAAC,CAAC;AAAA,MACJ;AACA,WAAK;AAAA,IACP;AACA,WAAO;AAAA;AAEX;AAEO;AAAA,MAAM,eAAoD,MAAS;AAAA,EAE7D;AAAA,EACA;AAAA,EAFX,WAAW,CACA,UACA,UAA+C,CAAC,GACzD;AAAE,UAAM,QAAQ;AAFP;AACA;AAAA;AAAA,EAGX,OAAO,CAAC,KAAsB;AAC5B,QAAI,QAAQ;AACZ,QAAI,SAAS;AACb,QAAI;AACJ,aAAS,OAAO,KAAK,UAAU,KAAK,GAAG,OAAO,KAAK,OAAQ,KAAK,MAAM,MAAM;AAAC,YAAM,QAAQ;AAAG,YAAM,QAAQ,KAAK;AAC/G,UAAK,KAAK,QAAQ,OAAO,QAAS,UAAU,GAAG;AAAE,iBAAS,KAAK,QAAQ;AAAA,MAAI;AAC3E,UAAK,aAAa,QAAS,MAAM,MAAM;AACrC,oBAAY;AACZ;AAAA,MACF;AACA,YAAM,SAAS,QAAQ,GAAG;AAC1B,aAAO,iBAAiB,IAAI,iBAAiB;AAC7C,YAAM,SAAS,OAAO,YAAY,KAAK;AACvC,eAAS,OAAO;AAChB,eAAS,KAAK,IAAI,QAAQ,OAAO,MAAM;AAAA,IACzC;AAEA,QAAI,aAAa,MAAM;AACrB,YAAM,SAAS,QAAQ,GAAG;AAC1B,aAAO,iBAAiB,IAAI,iBAAiB;AAC7C,YAAM,SAAS,OAAO,YAAY,SAAS;AAC3C,eAAS,OAAO;AAChB,eAAS,KAAK,IAAI,QAAQ,OAAO,MAAM;AAAA,IACzC;AAEA,WAAQ,EAAE,OAAO,OAAO;AAAA;AAAA,EAG1B,IAAI,CAAC,KAAiB,GAAW,GAAoB;AACnD,QAAI,SAAS;AACb,UAAM,UAAU,KAAK,QAAQ,WAAW,IAAI;AAC5C,QAAI,KAAK,QAAQ,SAAS;AAAE,UAAI,UAAU,KAAK,QAAQ;AAAA,IAAQ;AAC/D,QAAI,SAAS;AACX,WAAK,IAAI,YAAY,IAAI,EAAE;AAC3B,eAAS,OAAO,KAAK,UAAU,KAAK,GAAG,OAAO,KAAK,OAAQ,KAAK,MAAM,MAAM;AAAC,cAAM,QAAQ;AAAG,cAAM,QAAQ,KAAK;AAC/G,YAAI;AAAK,YAAK,OAAU,KAAK,QAAQ,OAAO,QAAS,UAAU,IAAE,KAAK,QAAQ,MAAS,WAAM;AAAC,gBAAM,MAAM;AACxG,eAAK;AACL,cAAI,kBAAkB;AAAA,QACxB;AACA,gBAAQ,UAAU,QAAQ,GAAG,EAAE,YAAY,KAAK;AAChD,aAAK;AACL,cAAM,iBAAiB,MAAM,KAAK,QAAQ,GAAG,GAAG,GAAG,CAAC;AACpD,mBAAW;AACX,YAAI,kBAAkB;AAAA,MACxB;AAAA,IACF,OACK;AACH,eAAS,OAAO,KAAK,UAAU,KAAK,GAAG,OAAO,KAAK,OAAQ,KAAK,MAAM,MAAM;AAAC,cAAM,QAAQ;AAAG,cAAM,QAAQ,KAAK;AAC/G,YAAI;AAAK,YAAK,OAAU,KAAK,QAAQ,OAAO,QAAS,UAAU,IAAE,KAAK,QAAQ,MAAS,WAAM;AAAC,gBAAM,MAAM;AACxG,eAAK;AACL,cAAI,kBAAkB;AAAA,QACxB;AACA,cAAM,iBAAiB,MAAM,KAAK,QAAQ,GAAG,GAAG,GAAG,CAAC;AACpD,mBAAW;AACX,gBAAQ,UAAU,QAAQ,GAAG,EAAE,YAAY,KAAK;AAChD,YAAI,kBAAkB;AACtB,aAAK;AAAA,MACP;AAAA;AAEF,WAAO;AAAA;AAAA,EAGT,OAAO,CAAC,KAAiB,MAAwB;AAC/C,UAAM,UAAU,KAAK,QAAQ,WAAW,IAAI;AAC5C,QAAI,KAAK,QAAQ,SAAS;AAAE,UAAI,UAAU,KAAK,QAAQ;AAAA,IAAQ;AAC/D,QAAI,SAAS;AACX,UAAI,IAAI,IAAI,YAAY,IAAI,EAAE;AAC9B,eAAS,QAAQ,KAAK,UAAU,KAAK,GAAG,OAAO,MAAM,OAAQ,KAAK,MAAM,MAAM;AAAC,cAAM,QAAQ;AAAG,cAAM,QAAQ,MAAM;AAClH,YAAI;AAAM,YAAK,QAAW,KAAK,QAAQ,OAAO,QAAS,UAAU,IAAE,KAAK,QAAQ,MAAS,WAAM;AAAC,gBAAM,MAAM;AAC1G,eAAK;AACL,cAAI,kBAAkB;AAAA,QACxB;AACA,gBAAQ,UAAU,QAAQ,GAAG,EAAE,YAAY,KAAK;AAChD,aAAK;AACL,YAAI;AAAM,YAAI,MAAM,QAAQ,KAAK,MAAM,SAAS,IAAI,OAAO;AACzD,iBAAO,MAAM,QAAQ,QAAQ,GAAG,GAAG,aAAa,MAAM;AAAA,YACpD,GAAG,KAAK,IAAI;AAAA,UACd,CAAC,CAAC;AAAA,QACJ;AACA,YAAI,kBAAkB;AAAA,MACxB;AAAA,IACF,OACK;AACH,UAAI,IAAI;AACR,eAAS,QAAQ,KAAK,UAAU,KAAK,GAAG,OAAO,MAAM,OAAQ,KAAK,MAAM,MAAM;AAAC,cAAM,QAAQ;AAAG,cAAM,QAAQ,MAAM;AAClH,YAAI;AAAM,YAAK,QAAW,KAAK,QAAQ,OAAO,QAAS,UAAU,IAAE,KAAK,QAAQ,MAAS,WAAM;AAAC,gBAAM,MAAM;AAC1G,eAAK;AACL,cAAI,kBAAkB;AAAA,QACxB;AACA,gBAAQ,UAAU,QAAQ,GAAG,EAAE,YAAY,KAAK;AAChD,YAAI;AAAM,YAAI,MAAM,QAAQ,KAAK,MAAM,SAAS,IAAI,OAAO;AACzD,iBAAO,MAAM,QAAQ,QAAQ,GAAG,GAAG,aAAa,MAAM;AAAA,YACpD,GAAG,KAAK,IAAI;AAAA,UACd,CAAC,CAAC;AAAA,QACJ;AACA,aAAK;AACL,YAAI,kBAAkB;AAAA,MACxB;AAAA;AAEF,WAAO;AAAA;AAEX;AAEO;AAAA,MAAM,QAAgE;AAAA,EAC3E;AAAA,EAAgB,WAAW,CAAC,QAAiB;AAC3C,SAAK,SAAS;AACd,uBAAmB,KAAK,QAAQ,IAAI;AAAA;AAAA,MAGlC,KAAK,GAAG;AAAE,WAAO,KAAK;AAAA;AAAA,MACtB,KAAK,CAAC,SAAkB;AAC1B,QAAI,YAAY,KAAK,QAAQ;AAAE;AAAA,IAAO;AACtC,yBAAqB,KAAK,MAAM;AAChC,SAAK,SAAS;AACd,uBAAmB,SAAS,IAAI;AAAA;AAAA,MAG9B,IAAI,GAAG;AAAE,WAAO,KAAK,MAAM;AAAA;AAAA,EAE/B,OAAO,CAAC,KAAsB;AAC5B,WAAO,KAAK,MAAM,QAAQ,GAAG;AAAA;AAAA,EAG/B,IAAI,CAAC,KAAiB,GAAW,GAAoB;AACnD,WAAO,KAAK,MAAM,KAAK,KAAK,GAAG,CAAC;AAAA;AAAA,EAGlC,OAAO,CAAC,KAAiB,MAAwB;AAC/C,WAAO,KAAK,MAAM,QAAQ,KAAK,IAAI;AAAA;AAEvC;AAEO;AAAA,MAAM,mBAAwD,QAAW;AAAA,EAGnE;AAAA,EAFX,WAAW,CACT,OACS,UAMP,CAAC,GACH;AAAE,UAAM,KAAK;AAPJ;AAAA;AAAA,MASP,IAAI,GAAG;AAAE,WAAO,KAAK,QAAQ,OAAO;AAAA;AAAA,MACpC,OAAO,GAAG;AAAE,WAAO,KAAK,QAAQ,UAAU;AAAA;AAAA,MAC1C,KAAK,GAAG;AAAE,WAAO,KAAK,QAAQ,QAAQ;AAAA;AAAA,MACtC,MAAM,GAAG;AAAE,WAAO,KAAK,QAAQ,SAAS;AAAA;AAAA,EAE5C,OAAO,CAAC,KAAsB;AAC5B,QAAI,kBAAkB,KAAK,QAAQ,KAAK;AACxC,YAAQ,OAAO,WAAW,IAAI,YAAY,KAAK,KAAK;AACpD,WAAQ;AAAA,MAAC,OAAO,QAAQ,KAAK,QAAQ,KAAK;AAAA,MAC1C,QAAQ,SAAS,KAAK,OAAO,KAAK;AAAA,IAAQ;AAAA;AAAA,EAG5C,IAAI,CAAC,KAAiB,GAAW,GAAoB;AACnD,QAAI,kBAAkB,KAAK,QAAQ,KAAK;AACxC,WAAO,KAAK,MAAM,KAAK,KAAK,IAAI,KAAK,OAAO,IAAI,KAAK,IAAI;AAAA;AAAA,EAG3D,OAAO,CAAC,KAAiB,MAAwB;AAC/C,QAAI,kBAAkB,KAAK,QAAQ,KAAK;AACxC,YAAQ,OAAO,WAAW,QAAQ,GAAG,EAAE,YAAY,KAAK,KAAK;AAC7D,QAAI;AAAM,QAAI;AAAM,QAEhB,MAAM,QAAQ,KAAK,IAAI,KAAK,UAAU,QAAQ,UAC9C,MAAM,QAAQ,KAAK,IAAI,KAAK,SAAS,QAAQ,SAAU;AACzD,aAAO,KAAK,MAAM,QAAQ,QAAQ,GAAG,GAAG,aAAa,MAAM;AAAA,QACzD,GAAG,KAAK,IAAI,KAAK;AAAA,QACjB,GAAG,KAAK,IAAI,KAAK;AAAA,MACnB,CAAC,CAAC;AAAA,IACJ;AACA,WAAO;AAAA;AAEX;AAEO;AAAA,MAAM,iBAAsD,QAAW;AAAA,EAKjE;AAAA,EAJX,SAAS;AAAA,EAET,WAAW,CACT,OACS,SACT;AAAE,UAAM,KAAK;AADJ;AAAA;AAAA,EAGX,OAAO,CAAC,KAAsB;AAC5B,QAAI,YAAY,KAAK,QAAQ;AAC7B,YAAQ,OAAO,WAAW,IAAI,YAAY,KAAK,KAAK;AACpD,QAAI;AAAM,YAAO,KAAK,QAAQ;AAAA,WACvB,UAAU;AAAE,iBAAS,IAAI,iBAAiB,SAAS;AAAE;AAAA,MAC1D;AAAA,WACK,SAAS;AAAE,gBAAQ,IAAI,iBAAiB;AAAM;AAAA,MACnD;AAAA,eACS;AAAE,gBAAQ;AAAA,MAAE;AAAA;AACrB,SAAK,SAAS;AAChB,WAAQ;AAAA,MAAC,OAAO,IAAI;AAAA,MACpB;AAAA,IAAc;AAAA;AAAA,EAGhB,IAAI,CAAC,KAAiB,GAAW,GAAoB;AACnD,QAAI,YAAY,KAAK,QAAQ;AAC7B,WAAO,KAAK,MAAM,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AAAA;AAAA,EAGhD,OAAO,CAAC,KAAiB,MAAwB;AAC/C,QAAI,YAAY,KAAK,QAAQ;AAC7B,YAAQ,UAAU,QAAQ,GAAG,EAAE,YAAY,KAAK,KAAK;AACrD,QAAI;AAAM,QAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,WAAW,QAAQ,OAAO;AAClE,aAAO,KAAK,MAAM,QAAQ,QAAQ,GAAG,GAAG,aAAa,MAAM;AAAA,QACzD,GAAG,KAAK,IAAI,KAAK;AAAA,MACnB,CAAC,CAAC;AAAA,IACJ;AACA,WAAO;AAAA;AAEX;AAEO;AAAA,MAAM,cAAsE;AAAA,EAKtE;AAAA,EACA;AAAA,EALX,SAAiB;AAAA,EACjB,SAAuB,CAAC;AAAA,EAExB,WAAW,CACA,MACA,SAMV;AAPU;AACA;AAAA;AAAA,MAQP,IAAI,GAAG;AAAE,WAAO;AAAA;AAAA,EAEpB,OAAO,CAAC,KAAsB;AAC5B,WAAO,IAAI,KAAK,CAAC,MAAM;AACrB,QAAE,OAAO,KAAK,QAAQ;AACtB,cAAO,OAAQ,QAAQ,UAAU,WAAW,KAAK,KAAK,MAAM,IAAI,cAAc;AAAE,WAAK,SAAS;AAAO,WAAK,SAAS;AACnH,aAAQ,EAAE,OAAO,KAAK,QAAQ,QAAQ,KAAK,OAAO,SAAS,KAAK,QAAQ,WAAW;AAAA,KACpF;AAAA;AAAA,EAGH,IAAI,CAAC,KAAiB,GAAW,GAAoB;AACnD,WAAO,IAAI,KAAK,CAAC,MAAM;AACrB,QAAE,OAAO,KAAK,QAAQ;AACtB,QAAE,YAAY,IAAI,gBAAgB,KAAK,QAAQ,KAAK;AACpD,cAAO,KAAK,QAAQ;AAAA,aACb,QAAQ;AACX,mBAAS,QAAQ,KAAK,QAAQ,MAAM,GAAG,QAAQ,MAAM,OAAQ,MAAM,OAAO,OAAO;AAAC,oBAAQ,MAAM,OAAO,eAAe,MAAM;AAC1H,cAAE,SAAS,MAAM,GAAG,IAAI,SAAS,KAAK,QAAQ,aAAa,cAAc,CAAC;AAC1E,iBAAK,KAAK,QAAQ;AAAA,UACpB;AAAE;AAAA,QACJ;AAAA,aACK,SAAS;AACZ,eAAK,KAAK;AACV,YAAE,YAAY;AACd,mBAAS,QAAQ,KAAK,QAAQ,MAAM,GAAG,QAAQ,MAAM,OAAQ,MAAM,OAAO,OAAO;AAAC,oBAAQ,MAAM,OAAO,eAAe,MAAM;AAC1H,cAAE,SAAS,MAAM,GAAG,IAAI,SAAS,KAAK,QAAQ,aAAa,cAAc,CAAC;AAC1E,iBAAK,KAAK,QAAQ;AAAA,UACpB;AAAE;AAAA,QACJ;AAAA,aACK,UAAU;AACb,eAAK,KAAK,SAAS;AACnB,YAAE,YAAY;AACd,mBAAS,QAAQ,KAAK,QAAQ,MAAM,GAAG,QAAQ,MAAM,OAAQ,MAAM,OAAO,OAAO;AAAC,oBAAQ,MAAM,OAAO,eAAe,MAAM;AAC1H,cAAE,SAAS,MAAM,GAAG,IAAI,SAAS,KAAK,QAAQ,aAAa,cAAc,CAAC;AAC1E,iBAAK,KAAK,QAAQ;AAAA,UACpB;AAAE;AAAA,QACJ;AAAA;AAEF,aAAO;AAAA,KACR;AAAA;AAAA,EAGH,OAAO,CAAC,KAAiB,MAAe;AAAE,WAAO;AAAA;AACnD;AAEO;AAAA,MAAM,KAA6D;AAAA,EAE7D;AAAA,EACA;AAAA,EAFX,WAAW,CACA,MACA,SAKV;AANU;AACA;AAAA;AAAA,EAOX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,cAAc;AAAA,MAEV,IAAI,GAAG;AAAE,WAAO;AAAA;AAAA,EAEpB,OAAO,CAAC,KAAsB;AAC5B,WAAO,IAAI,KAAK,CAAC,MAAM;AACrB,QAAE,OAAO,KAAK,QAAQ;AACtB,cAAO,OAAQ,QAAO,MAAO,OAAM,OAAQ,QAAO,YAAa,gBAAgB,gBAAgB,KAAK,KAAK,MAAM,IAAI,cAAc;AAAE,WAAK,SAAS;AAAO,WAAK,QAAQ;AAAM,WAAK,SAAS;AAAO,WAAK,cAAc;AACnN,aAAQ,EAAE,OAAO,KAAK,QAAQ,QAAQ,KAAK,QAAQ,WAAW;AAAA,KAC/D;AAAA;AAAA,EAGH,IAAI,CAAC,KAAiB,GAAW,GAAoB;AACnD,WAAO,IAAI,KAAK,CAAC,MAAM;AACrB,QAAE,OAAO,KAAK,QAAQ;AACtB,QAAE,YAAY,IAAI,gBAAgB,KAAK,QAAQ,KAAK;AACpD,QAAE,SAAS,KAAK,OAAO,GAAG,IAAI,KAAK,UAAU,KAAK,QAAQ,aAAa,KAAK,eAAe,CAAC;AAC5F,aAAO;AAAA,KACR;AAAA;AAAA,EAGH,OAAO,CAAC,KAAiB,MAAe;AAAE,WAAO;AAAA;AACnD;AAEO;AAAA,MAAM,MAA8D;AAAA,EACpD;AAAA,EAAwB;AAAA,EAA7C,WAAW,CAAU,OAAwB,QAAe;AAAvC;AAAwB;AAAA;AAAA,MAEzC,IAAI,GAAG;AAAE,WAAO;AAAA;AAAA,EAEpB,OAAO,CAAC,KAAsB;AAC5B,WAAQ,EAAE,OAAO,KAAK,OAAO,QAAQ,KAAK,OAAO;AAAA;AAAA,EAGnD,IAAI,CAAC,KAAiB,GAAW,GAAW;AAAE,WAAO;AAAA;AAAA,EAErD,OAAO,CAAC,KAAiB,MAAe;AAAE,WAAO;AAAA;AACnD;;AC7ZA,IAAI,eAAyJ,CAAC,KAAK,SAAW,MAAc,OAAO,uBAAuB,MAAM,QAAQ,GAAG,IAAM,IAAY,KAAK,MAAM,KAAK,GAAU,IAAK,IAAY,KAAK,GAAG,GAAG;AAK5S;AAAA,MAAM,aAAsE;AAAA,EAQ9C;AAAA,EAPnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,IAAI;AAAA,MAEC,OAAO,GAAG;AAAE,WAAO,QAAQ,KAAK,IAAI;AAAA;AAAA,EAElD,WAAW,CAAC,WAAuB,SAA8B;AAA9B;AACjC,SAAK,WAAW;AAChB,SAAK,SAAS,eAAe;AAC7B,SAAK,SAAS,gBAAgB;AAC9B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,MACV,UAAU,KAAK;AAAA,UACX,cAAc,GAAG;AAAE,eAAO,KAAK,SAAS,OAAO;AAAA;AAAA,UAC/C,cAAc,CAAC,OAAO;AACxB,eAAO,eAAe,MAAM,kBAAkB,EAAC,OAAc,UAAU,KAAI,CAAC;AAAA;AAAA,MAE9E,WAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW,CAAC,MAAe;AAAE,eAAO,KAAK,YAAY,MAAM,IAAI;AAAA;AAAA,MAC/D,gBAAgB,KAAK,eAAe,KAAK,IAAI;AAAA,MAC7C,eAAkB,CAAC,OAA0B;AAC3C,mBAAW,UAAU,YAAY;AAC/B,iBAAO,MAAM,KAAK,QAAQ;AAAA,QAC5B,OACK;AACH,iBAAO;AAAA;AAAA;AAAA,MAGX,IAAO,CAAC,IAAoB;AAC1B,aAAK,SAAS,KAAK;AACnB,YAAI;AACJ,iBAAO,GAAG,KAAK,QAAQ;AAAA,kBAAG;AAAU,eAAK,SAAS,QAAQ;AAAA;AAAA;AAAA,MAE5D,SAAS,CAAC,MAAc;AAAE,eAAO,QAAQ,UAAU,IAAI;AAAA;AAAA,IAAG;AAC5D,SAAK,aAAa,KAAK,SAAS,OAAO;AAAA;AAAA,EAGzC,cAAc,CAAC,MAAqB;AAClC,SAAK,OAAO,OAAO,IAAI;AACvB,QAAI,KAA4B;AAChC,WAAO,KAAK,cAAc,EAAE,GAAG;AAC7B,WAAK,OAAO,OAAO,EAAE;AAAA,IACvB;AAAA;AAAA,EAGF,WAAW,CAAC,MAAe,KAAuB;AAChD,QAAI;AAAI,QAAI,KAAK,cAAc,KAAK,SAAS,OAAO,aAAa;AAC/D,WAAK,SAAS,IAAI;AAAA,IACpB,YACU,MAAK,KAAK,OAAO,IAAI,IAAI,MAAM,MAAM;AAAC,YAAM,UAAS;AAC7D,aAAO;AAAA,IACT;AACA,UAAM,SAAS,KAAK,QAAQ,OAAO,KAAK,OAAO;AAC/C,SAAK,OAAO,IAAI,MAAM,MAAM;AAC5B,WAAO;AAAA;AAEX;AAEO;AAAA,MAAM,sBAA2D,aAAgB;AAAA,EACtF,IAAI,CAAC,MAAwB;AAC3B,YAAQ,aAAa,eAAe,cAAc,mBAAmB,KAAK,SAAS;AACnF,SAAK,SAAS,UAAU,GAAG,GAAG,eAAe,cAAc;AAC3D,WAAO,KAAK,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA;AAAA,EAGrC,OAAO,CAAC,MAAe,MAAwB;AAC7C,WAAO,KAAK,QAAQ,KAAK,SAAS,IAAI;AAAA;AAE1C;AAEO,SAAS,cAAkE,CAAC,YAAkC;AACnH,QAAM,QAAQ,IAAI;AAClB,WAAS,EAAE,CAAC,MAAkB;AAC5B,QAAI;AAAK,SAAK,OAAM,MAAM,IAAI,IAAI,MAAM,MAAM;AAAE,YAAM,UAAS;AAAK,aAAO;AAAA,IAAO;AAClF,UAAM,SAAS,WAAW,IAAI;AAC9B,UAAM,IAAI,MAAM,MAAM;AACtB,WAAO;AAAA;AAET,SAAO,OAAO,OAAO,IAAI,EAAC,OAAO,MAAM,OAAO,KAAK,KAAK,EAAC,CAAC;AAAA;AAGrD;AAAA,MAAM,UAAyB;AAAA,EACpC,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAa,CAAC;AAAA,EAEd,OAAO,IAAI,OAAY;AAAE,WAAO,KAAK,WAAW,KAAK;AAAA;AAAA,EAErD,UAAU,CAAC,OAAY;AACrB,SAAK,YAAY,MAAM;AACvB,WAAO,KAAK,QAAQ,MAAM,OAAO,KAAK,KAAK;AAAA;AAAA,EAG7C,IAAI,IAAI,OAAY;AAAE,WAAO,KAAK,QAAQ,KAAK;AAAA;AAAA,EAE/C,OAAO,CAAC,OAAY;AAAE,WAAO,aAAa,KAAK,OAAO,KAAK;AAAA;AAAA,EAE3D,KAAK,GAAS;AACZ,SAAK,QAAQ,CAAC;AACd,SAAK,SAAS;AACd,SAAK,WAAW;AAAA;AAAA,EAGlB,WAAW,GAAS;AAClB,SAAK,SAAS;AACd,SAAK,WAAW;AAAA;AAAA,EAGlB,WAAW,CAAC,OAAe;AAAE,WAAO,KAAK,UAAU;AAAA;AACrD;AAEO;AAAA,MAAe,4BAAgF,aAGnG;AAAA,MACG,QAAQ,GAAG;AAAE,WAAO,KAAK,QAAQ,KAAK;AAAA;AAAA,MACtC,QAAQ,CAAC,OAAO;AAAE,SAAK,QAAQ,KAAK,WAAW;AAAA;AAAA,MAE/C,MAAM,GAAG;AAAE,WAAO,KAAK,QAAQ,KAAK;AAAA;AAAA,MACpC,MAAM,CAAC,OAAO;AAAE,SAAK,QAAQ,KAAK,SAAS;AAAA;AAAA,MAE3C,KAAK,GAAG;AAAE,WAAO,KAAK,QAAQ,KAAK;AAAA;AAAA,MACnC,KAAK,CAAC,OAAO;AAAE,SAAK,QAAQ,KAAK,QAAQ;AAAA;AAI/C;AAEO;AAAA,MAAM,yBAA6E,oBAA0B;AAAA,EAClH,UAAkC;AAAA,EAElC,MAAM,CAAC,UAAoC;AACzC,YAAQ,aAAa,eAAe,cAAc,mBAAmB,KAAK,SAAS;AACnF,SAAK,SAAS,UAAU,GAAG,GAAG,eAAe,cAAc;AAE3D,QAAI,aAAa;AAEjB,QAAI,MAAM,KAAK,QAAQ,GAAG;AAAE,WAAK,WAAW;AAAA,IAAE;AAE9C,QAAI,KAAK,SAAS,GAAG;AACnB,UAAI,KAAK,YAAY,GAAG;AACtB,aAAK,SAAS;AAAA,MAChB,OACK;AACH,iBAAS,KAAK,KAAK,WAAW,EAAG,MAAM,KAAK,IAAI;AAAC,gBAAM,IAAI;AACzD,gBAAM,OAAO,KAAK,MAAM;AACxB,gBAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AACzC,kBAAQ,WAAW,KAAK,YAAY,IAAI;AACxC,eAAK,WAAW;AAChB,eAAK,UAAU;AACf,cAAI,KAAK,UAAU,GAAG;AAAE;AAAA,UAAM;AAAA,QAChC;AACA,YAAI,KAAK,YAAY,KAAK,KAAK,SAAS,GAAG;AAAE,eAAK,SAAS;AAAA,QAAE;AAAA;AAAA,IAEjE;AAEA,QAAI,IAAI,KAAK;AACb,UAAM,WAAgC,CAAC;AAEvC,gBAAY,SAAO,SAAS,SAAS,KAAK;AAE1C,aAAS,MAAM,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAU,KAAK,OAAO,IAAI;AAAC,YAAM,IAAI;AAC/E,YAAM,OAAO,KAAK,MAAM;AACxB,YAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AACzC,cAAQ,WAAW,KAAK,YAAY,IAAI;AACxC,UAAI,IAAI,SAAS,GAAG;AAClB,iBAAS,KAAK,CAAC,MAAM,CAAC,CAAC;AACvB,sBAAc;AACd,oBAAY,SAAO,SAAS,SAAS;AAAA,MACvC,OACK;AACH,aAAK,UAAU;AACf,aAAK,WAAW,IAAI;AAAA;AAEtB,WAAK;AACL,UAAI,KAAK,gBAAgB;AAAE;AAAA,MAAM;AAAA,IACnC;AAEA,QAAI,QAAQ;AAEZ,QAAI,IAAI,gBAAgB;AACtB,UAAI,KAAK,YAAY,KAAK,aAAa,gBAAgB;AACrD,iBAAS,KAAK;AACd,aAAK,SAAS;AAAA,MAChB,OACK;AACH,gBAAQ,iBAAiB;AACzB,YAAI,KAAK,UAAU;AACnB,YAAI,UAAU;AACd,iBAAS,KAAK,KAAK,WAAW,EAAG,MAAM,KAAK,IAAI;AAAC,gBAAM,IAAI;AACzD,gBAAM,OAAO,KAAK,MAAM,UAAU;AAClC,gBAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AACzC,kBAAQ,WAAW,KAAK,YAAY,IAAI;AACxC,wBAAc;AACd,eAAK;AACL,mBAAS,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC;AAC/B,sBAAY,SAAO,SAAS,SAAS;AACrC,cAAI,IAAI,GAAG;AAAE;AAAA,UAAM;AAAA,QACrB;AACA,YAAI,WAAW,KAAK,aAAa,gBAAgB;AAC/C,mBAAS,SAAS,SAAS,SAAO,GAAG;AACrC,eAAK,WAAW;AAChB,eAAK,SAAS;AAAA,QAChB;AAAA;AAAA,IAEJ;AAEA,QAAI,SAAS;AACb,aAAS,KAAK,GAAG,MAAM,SAAS,OAAQ,KAAK,KAAK,MAAM;AAAC,aAAO,MAAM,MAAK,SAAS;AAClF,YAAM,iBAAiB,KAAK,KAAK,KAAK,SAAS,GAAG,KAAI,KAAK;AAC3D,iBAAW;AAAA,IACb;AAEA,QAAI,KAAK,YAAY,eAAe;AAClC,UAAI,KAAK,aAAa,KAAK,KAAK,WAAW,GAAG;AAC5C,aAAK,UAAU;AAAA,MACjB,OACK;AACH,aAAK,QAAQ,KAAK,YAAY,KAAK,KAAK,WAAW,EAAE;AACrD,eAAO;AAAA;AAAA,IAEX;AACA,WAAO;AAAA;AAAA,EAGT,OAAO,CAAC,MAAwB;AAC9B,UAAM,iBAAiB,KAAK,SAAS,OAAO;AAC5C,QAAI,IAAI,KAAK;AACb,aAAS,OAAO,KAAK,MAAM,QAAQ,KAAK,KAAK,SAAU,KAAK,QAAQ,IAAI;AAAC,YAAM,IAAI;AACjF,YAAM,OAAO,KAAK,MAAM;AACxB,YAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AACzC,cAAQ,WAAW,KAAK,YAAY,IAAI;AACxC,UAAI,KAAK,IAAI,IAAI,QAAQ;AACvB,eAAO,KAAK,QAAQ,KAAK,SAAS,aAAa,MAAM,EAAC,GAAG,KAAK,IAAI,EAAC,CAAC,CAAC;AAAA,MACvE;AACA,WAAK;AACL,UAAI,KAAK,gBAAgB;AAAE;AAAA,MAAM;AAAA,IACnC;AACA,WAAO;AAAA;AAAA,EAGT,WAAW,GAAS;AAClB,SAAK,UAAU;AAAA;AAEnB;AAEO;AAAA,MAAM,qBAAyE,oBAA0B;AAAA,EAC9G,UAAqC;AAAA,EAErC,MAAM,CAAC,UAA2B;AAChC,YAAQ,aAAa,eAAe,cAAc,mBAAmB,KAAK,SAAS;AACnF,SAAK,SAAS,UAAU,GAAG,GAAG,eAAe,cAAc;AAE3D,QAAI,aAAa;AACjB,QAAI,MAAM,KAAK,QAAQ,GAAG;AAAE,WAAK,WAAW,KAAK,MAAM,SAAS;AAAA,IAAE;AAElE,QAAI,KAAK,SAAS,GAAG;AACnB,UAAI,KAAK,YAAY,KAAK,MAAM,SAAS,GAAG;AAC1C,aAAK,SAAS;AAAA,MAChB,OACK;AACH,iBAAS,OAAO,KAAK,MAAM,QAAQ,KAAK,KAAK,WAAW,EAAG,KAAK,QAAQ,IAAI;AAAC,gBAAM,IAAI;AACrF,gBAAM,OAAO,KAAK,MAAM;AACxB,gBAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AACzC,kBAAQ,WAAW,KAAK,YAAY,IAAI;AACxC,eAAK,WAAW;AAChB,eAAK,UAAU;AACf,cAAI,KAAK,SAAS,GAAG;AAAE;AAAA,UAAM;AAAA,QAC/B;AAAA;AAAA,IAEJ;AAEA,QAAI,IAAI,iBAAiB,KAAK;AAC9B,UAAM,WAAgC,CAAC;AAEvC,gBAAY,SAAO,SAAS,SAAS,KAAK;AAE1C,aAAS,KAAK,KAAK,SAAU,MAAM,KAAK,IAAI;AAAC,YAAM,IAAI;AACrD,YAAM,OAAO,KAAK,MAAM;AACxB,YAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AACzC,cAAQ,WAAW,KAAK,YAAY,IAAI;AACxC,WAAK;AACL,UAAI,KAAK,gBAAgB;AACvB,iBAAS,KAAK,CAAC,MAAM,CAAC,CAAC;AACvB,sBAAc;AACd,oBAAY,SAAO,SAAS,SAAS;AAAA,MACvC,OACK;AACH,aAAK,UAAU;AACf,aAAK,WAAW,IAAI;AAAA;AAEtB,UAAI,IAAI,GAAG;AAAE;AAAA,MAAM;AAAA,IACrB;AAEA,QAAI,QAAQ;AAEZ,QAAI,IAAI,GAAG;AACT,eAAS;AACT,UAAI,aAAa,gBAAgB;AAC/B,YAAI;AACJ,iBAAS,OAAO,KAAK,MAAM,QAAQ,KAAK,KAAK,WAAW,EAAG,KAAK,QAAQ,IAAI;AAAC,gBAAM,IAAI;AACrF,gBAAM,OAAO,KAAK,MAAM;AACxB,gBAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AACzC,kBAAQ,WAAW,KAAK,YAAY,IAAI;AACxC,mBAAS,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC;AAC/B,cAAI,cAAc;AAClB,eAAK,WAAW;AAChB,sBAAY,SAAO,SAAS,SAAS;AACrC,cAAI,KAAK,gBAAgB;AAAE;AAAA,UAAM;AAAA,QACnC;AACA,YAAI,aAAa,gBAAgB;AAC/B,eAAK,SAAS;AAAA,QAChB,OACK;AACH,eAAK,SAAS,aAAa;AAAA;AAAA,MAE/B,OACK;AACH,aAAK,SAAS,aAAa;AAAA;AAAA,IAE/B;AAEA,QAAI,SAAS;AACb,aAAS,KAAK,GAAG,OAAO,SAAS,OAAQ,KAAK,MAAM,MAAM;AAAC,aAAO,MAAM,MAAK,SAAS;AACpF,YAAM,iBAAiB,KAAK,KAAK,KAAK,SAAS,GAAG,KAAI,KAAK;AAC3D,iBAAW;AAAA,IACb;AAEA,QAAI,KAAK,YAAY,kBAAkB;AACrC,UAAI,KAAK,aAAa,KAAK,MAAM,SAAS,KAAK,KAAK,WAAW,GAAG;AAChE,aAAK,UAAU;AAAA,MACjB,OACK;AACH,aAAK,QAAQ,KAAK,YAAY,MAAM,KAAK,MAAM,SAAS,KAAK,SAAS;AACtE,eAAO;AAAA;AAAA,IAEX;AACA,WAAO;AAAA;AAAA,EAGT,OAAO,CAAC,MAAwB;AAC9B,UAAM,iBAAiB,KAAK,SAAS,OAAO;AAE5C,QAAI,aAAa;AAEjB,UAAM,UAAQ,CAAC;AAAE,aAAS,MAAM,KAAK,SAAU,OAAO,KAAK,KAAK;AAAC,YAAM,IAAI;AACzE,YAAM,OAAO,KAAK,MAAM;AACxB,YAAM,OAAO,KAAK,QAAQ,WAAW,IAAI;AACzC,cAAQ,WAAW,KAAK,YAAY,IAAI;AACxC,oBAAc;AACd,cAAQ,KAAK,CAAC,MAAM,MAAM,CAAU;AAAA,IACtC;AAAE,UAAM,UAAS;AAEjB,QAAI,IAAI,aAAa,iBAAiB,aAAa,iBAAiB,KAAK;AAEzE,QAAI,KAAK,IAAI,GAAG;AAAE,aAAO;AAAA,IAAM;AAE/B,aAAS,MAAM,GAAG,OAAO,QAAQ,OAAQ,MAAM,MAAM,OAAO;AAAC,aAAO,MAAM,UAAU,QAAQ;AAC1F,WAAK;AACL,UAAI,KAAK,IAAI,GAAG;AACd,eAAO,KAAK,QAAQ,KAAK,SAAS,aAAa,MAAM,EAAC,GAAG,KAAK,IAAI,EAAC,CAAC,CAAC;AAAA,MACvE;AAAA,IACF;AAEA,WAAO;AAAA;AAAA,EAGT,cAAc,GAAS;AACrB,SAAK,UAAU;AAAA;AAEnB;",
12
+ "debugId": "825DA65A294F10FE64756E2164756E21",
13
13
  "names": []
14
14
  }
package/package.json CHANGED
@@ -4,5 +4,5 @@
4
4
  "type": "module",
5
5
  "devDependencies": {},
6
6
  "dependencies": {},
7
- "version": "0.0.10"
7
+ "version": "0.0.12"
8
8
  }