chat-layout 0.0.12 → 0.0.14

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 (3) hide show
  1. package/index.js +65 -51
  2. package/index.js.map +5 -5
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -1,6 +1,9 @@
1
1
  // @bun
2
2
  // text.civet
3
3
  function layoutFirstLine(ctx, text, maxWidth) {
4
+ if (maxWidth < 0) {
5
+ maxWidth = 0;
6
+ }
4
7
  const line = text.replaceAll(/[^\S\n]+/g, " ").split(`
5
8
  `, 1)[0].trim();
6
9
  const { width: textWidth, fontBoundingBoxAscent: shift, fontBoundingBoxDescent: lineHeight } = ctx.graphics.measureText(line);
@@ -12,6 +15,9 @@ function layoutFirstLine(ctx, text, maxWidth) {
12
15
  }
13
16
  }
14
17
  function layoutText(ctx, text, maxWidth) {
18
+ if (maxWidth < 0) {
19
+ maxWidth = 0;
20
+ }
15
21
  const results = [];
16
22
  for (let ref = text.replaceAll(/[^\S\n]+/g, " ").split(`
17
23
  `), i = 0, len = ref.length;i < len; i++) {
@@ -37,6 +43,9 @@ function layoutText(ctx, text, maxWidth) {
37
43
  } else {
38
44
  while (textWidth > maxWidth) {
39
45
  const splited = splitToFitText(ctx, line, maxWidth, textWidth);
46
+ if (splited.width === 0) {
47
+ return { width: 0, lines: [] };
48
+ }
40
49
  width = Math.max(width, splited.width);
41
50
  lines.push({ text: splited.text, width: splited.width, shift: shift / 2, lineHeight });
42
51
  line = splited.rest;
@@ -188,16 +197,20 @@ class VStack extends Group {
188
197
  let { width, height } = shallow(ctx).measureNode(child);
189
198
  const curctx = shallow(ctx);
190
199
  if (test.y >= y && test.y < y + height) {
200
+ let ref5;
201
+ if (alignment === "right") {
202
+ ref5 = test.x - fullwidth + width;
203
+ } else if (alignment === "center") {
204
+ ref5 = test.x - (fullwidth - width) / 2;
205
+ } else {
206
+ ref5 = test.x;
207
+ }
208
+ const x = ref5;
209
+ if (x < 0 || x >= width) {
210
+ return false;
211
+ }
191
212
  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
- })(),
213
+ x,
201
214
  y: test.y - y
202
215
  }));
203
216
  }
@@ -219,9 +232,9 @@ class HStack extends Group {
219
232
  let width = 0;
220
233
  let height = 0;
221
234
  let firstflex;
222
- for (let ref5 = this.children, i5 = 0, len5 = ref5.length;i5 < len5; i5++) {
235
+ for (let ref6 = this.children, i5 = 0, len5 = ref6.length;i5 < len5; i5++) {
223
236
  const index = i5;
224
- const child = ref5[i5];
237
+ const child = ref6[i5];
225
238
  if (this.options.gap != null && index !== 0) {
226
239
  width += this.options.gap;
227
240
  }
@@ -252,12 +265,12 @@ class HStack extends Group {
252
265
  }
253
266
  if (reverse) {
254
267
  x += ctx.measureNode(this).width;
255
- for (let ref6 = this.children, i6 = 0, len6 = ref6.length;i6 < len6; i6++) {
268
+ for (let ref7 = this.children, i6 = 0, len6 = ref7.length;i6 < len6; i6++) {
256
269
  const index = i6;
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;
270
+ const child = ref7[i6];
271
+ let ref8;
272
+ if (ref8 = this.options.gap != null && index !== 0 ? this.options.gap : undefined) {
273
+ const gap = ref8;
261
274
  x -= gap;
262
275
  ctx.remainingWidth -= gap;
263
276
  }
@@ -268,12 +281,12 @@ class HStack extends Group {
268
281
  ctx.remainingWidth -= width;
269
282
  }
270
283
  } else {
271
- for (let ref8 = this.children, i7 = 0, len7 = ref8.length;i7 < len7; i7++) {
284
+ for (let ref9 = this.children, i7 = 0, len7 = ref9.length;i7 < len7; i7++) {
272
285
  const index = i7;
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;
286
+ const child = ref9[i7];
287
+ let ref10;
288
+ if (ref10 = this.options.gap != null && index !== 0 ? this.options.gap : undefined) {
289
+ const gap = ref10;
277
290
  x += gap;
278
291
  ctx.remainingWidth -= gap;
279
292
  }
@@ -293,19 +306,19 @@ class HStack extends Group {
293
306
  }
294
307
  if (reverse) {
295
308
  let x = ctx.measureNode(this).width;
296
- for (let ref10 = this.children, i8 = 0, len8 = ref10.length;i8 < len8; i8++) {
309
+ for (let ref11 = this.children, i8 = 0, len8 = ref11.length;i8 < len8; i8++) {
297
310
  const index = i8;
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;
311
+ const child = ref11[i8];
312
+ let ref12;
313
+ if (ref12 = this.options.gap != null && index !== 0 ? this.options.gap : undefined) {
314
+ const gap = ref12;
302
315
  x -= gap;
303
316
  ctx.remainingWidth -= gap;
304
317
  }
305
318
  const { width } = shallow(ctx).measureNode(child);
306
319
  x -= width;
307
- let ref12;
308
- if (x <= (ref12 = test.x) && ref12 <= x + width) {
320
+ let ref13;
321
+ if (x <= (ref13 = test.x) && ref13 <= x + width) {
309
322
  return child.hittest(shallow(ctx), shallowMerge(test, {
310
323
  x: test.x - x
311
324
  }));
@@ -314,18 +327,18 @@ class HStack extends Group {
314
327
  }
315
328
  } else {
316
329
  let x = 0;
317
- for (let ref13 = this.children, i9 = 0, len9 = ref13.length;i9 < len9; i9++) {
330
+ for (let ref14 = this.children, i9 = 0, len9 = ref14.length;i9 < len9; i9++) {
318
331
  const index = i9;
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;
332
+ const child = ref14[i9];
333
+ let ref15;
334
+ if (ref15 = this.options.gap != null && index !== 0 ? this.options.gap : undefined) {
335
+ const gap = ref15;
323
336
  x += gap;
324
337
  ctx.remainingWidth -= gap;
325
338
  }
326
339
  const { width } = shallow(ctx).measureNode(child);
327
- let ref15;
328
- if (x <= (ref15 = test.x) && ref15 <= x + width) {
340
+ let ref16;
341
+ if (x <= (ref16 = test.x) && ref16 <= x + width) {
329
342
  return child.hittest(shallow(ctx), shallowMerge(test, {
330
343
  x: test.x - x
331
344
  }));
@@ -402,9 +415,9 @@ class PaddingBox extends Wrapper {
402
415
  hittest(ctx, test) {
403
416
  ctx.remainingWidth -= this.#left + this.#right;
404
417
  const { width, height } = shallow(ctx).measureNode(this.inner);
405
- let ref16;
406
418
  let ref17;
407
- if (0 <= (ref16 = test.x - this.#left) && ref16 < width && (0 <= (ref17 = test.y - this.#top) && ref17 < height)) {
419
+ let ref18;
420
+ if (0 <= (ref17 = test.x - this.#left) && ref17 < width && (0 <= (ref18 = test.y - this.#top) && ref18 < height)) {
408
421
  return this.inner.hittest(shallow(ctx), shallowMerge(test, {
409
422
  x: test.x - this.#left,
410
423
  y: test.y - this.#top
@@ -424,21 +437,21 @@ class AlignBox extends Wrapper {
424
437
  measure(ctx) {
425
438
  ctx.alignment = this.options.alignment;
426
439
  const { width, height } = ctx.measureNode(this.inner);
427
- let ref18;
440
+ let ref19;
428
441
  switch (this.options.alignment) {
429
442
  case "center": {
430
- ref18 = (ctx.remainingWidth - width) / 2;
443
+ ref19 = (ctx.remainingWidth - width) / 2;
431
444
  break;
432
445
  }
433
446
  case "right": {
434
- ref18 = ctx.remainingWidth - width;
447
+ ref19 = ctx.remainingWidth - width;
435
448
  break;
436
449
  }
437
450
  default: {
438
- ref18 = 0;
451
+ ref19 = 0;
439
452
  }
440
453
  }
441
- this.#shift = ref18;
454
+ this.#shift = ref19;
442
455
  return {
443
456
  width: ctx.remainingWidth,
444
457
  height
@@ -451,8 +464,8 @@ class AlignBox extends Wrapper {
451
464
  hittest(ctx, test) {
452
465
  ctx.alignment = this.options.alignment;
453
466
  const { width } = shallow(ctx).measureNode(this.inner);
454
- let ref19;
455
- if (0 <= (ref19 = test.x - this.#shift) && ref19 < width) {
467
+ let ref20;
468
+ if (0 <= (ref20 = test.x - this.#shift) && ref20 < width) {
456
469
  return this.inner.hittest(shallow(ctx), shallowMerge(test, {
457
470
  x: test.x - this.#shift
458
471
  }));
@@ -488,8 +501,8 @@ class MultilineText {
488
501
  g.fillStyle = ctx.resolveDynValue(this.options.style);
489
502
  switch (this.options.alignment) {
490
503
  case "left": {
491
- for (let ref20 = this.#lines, i10 = 0, len10 = ref20.length;i10 < len10; i10++) {
492
- const { text, shift, lineHeight } = ref20[i10];
504
+ for (let ref21 = this.#lines, i10 = 0, len10 = ref21.length;i10 < len10; i10++) {
505
+ const { text, shift, lineHeight } = ref21[i10];
493
506
  g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2);
494
507
  y += this.options.lineHeight;
495
508
  }
@@ -498,8 +511,8 @@ class MultilineText {
498
511
  case "right": {
499
512
  x += this.#width;
500
513
  g.textAlign = "right";
501
- for (let ref21 = this.#lines, i11 = 0, len11 = ref21.length;i11 < len11; i11++) {
502
- const { text, shift, lineHeight } = ref21[i11];
514
+ for (let ref22 = this.#lines, i11 = 0, len11 = ref22.length;i11 < len11; i11++) {
515
+ const { text, shift, lineHeight } = ref22[i11];
503
516
  g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2);
504
517
  y += this.options.lineHeight;
505
518
  }
@@ -508,8 +521,8 @@ class MultilineText {
508
521
  case "center": {
509
522
  x += this.#width / 2;
510
523
  g.textAlign = "center";
511
- for (let ref22 = this.#lines, i12 = 0, len12 = ref22.length;i12 < len12; i12++) {
512
- const { text, shift, lineHeight } = ref22[i12];
524
+ for (let ref23 = this.#lines, i12 = 0, len12 = ref23.length;i12 < len12; i12++) {
525
+ const { text, shift, lineHeight } = ref23[i12];
513
526
  g.fillText(text, x, y + shift + (this.options.lineHeight - lineHeight) / 2);
514
527
  y += this.options.lineHeight;
515
528
  }
@@ -646,6 +659,7 @@ class BaseRenderer {
646
659
  let ref;
647
660
  if (this.#lastWidth != this.graphics.canvas.clientWidth) {
648
661
  this.#cache = new WeakMap;
662
+ this.#lastWidth = this.graphics.canvas.clientWidth;
649
663
  } else if ((ref = this.#cache.get(node)) != null) {
650
664
  const result2 = ref;
651
665
  return result2;
@@ -993,5 +1007,5 @@ export {
993
1007
  AlignBox
994
1008
  };
995
1009
 
996
- //# debugId=825DA65A294F10FE64756E2164756E21
1010
+ //# debugId=8FD8B7ECB440302B64756E2164756E21
997
1011
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -2,13 +2,13 @@
2
2
  "version": 3,
3
3
  "sources": ["../text.civet", "../utils.civet", "../registry.civet", "../nodes.civet", "../renderer.civet"],
4
4
  "sourcesContent": [
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}",
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 if (maxWidth < 0) { maxWidth = 0 }\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 if (maxWidth < 0) { maxWidth = 0 }\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 if (splited.width === 0) { return { width: 0, lines: [] } }\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, 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}"
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 let ref5;if(alignment === \"right\") { ref5 = test.x - fullwidth + width}\nelse if(alignment === \"center\") { ref5 = test.x - (fullwidth - width) / 2}\nelse { ref5 = test.x };const x =ref5\n if (x < 0 || x >= width) { return false }\n return child.hittest(curctx, shallowMerge(test, {\n x: 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 ref6 = this.children, i5 = 0, len5 = ref6.length; i5 < len5; i5++) {const index = i5;const child = ref6[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 ref7 = this.children, i6 = 0, len6 = ref7.length; i6 < len6; i6++) {const index = i6;const child = ref7[i6];\n let ref8;if ((ref8 = (((this.options.gap != null) && index !== 0?this.options.gap:void 0)))) {const gap = ref8;\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 ref9 = this.children, i7 = 0, len7 = ref9.length; i7 < len7; i7++) {const index = i7;const child = ref9[i7];\n let ref10;if ((ref10 = (((this.options.gap != null) && index !== 0?this.options.gap:void 0)))) {const gap = ref10;\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 ref11 = this.children, i8 = 0, len8 = ref11.length; i8 < len8; i8++) {const index = i8;const child = ref11[i8];\n let ref12;if ((ref12 = (((this.options.gap != null) && index !== 0?this.options.gap:void 0)))) {const gap = ref12;\n x -= gap\n ctx.remainingWidth -= gap\n }\n const { width } = shallow(ctx).measureNode(child)\n x -= width\n let ref13;if (x <= (ref13 = test.x) && ref13 <= 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 ref14 = this.children, i9 = 0, len9 = ref14.length; i9 < len9; i9++) {const index = i9;const child = ref14[i9];\n let ref15;if ((ref15 = (((this.options.gap != null) && index !== 0?this.options.gap:void 0)))) {const gap = ref15;\n x += gap\n ctx.remainingWidth -= gap\n }\n const { width } = shallow(ctx).measureNode(child)\n let ref16;if (x <= (ref16 = test.x) && ref16 <= 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 ref17;let ref18;if(\n ((\n 0 <= (ref17 = test.x - this.#left) && ref17 < width)&&(\n 0 <= (ref18 = test.y - this.#top) && ref18 < 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 ref19;switch(this.options.alignment) {\n case 'center': { ref19 = (ctx.remainingWidth - width) / 2;break;\n }\n case 'right': { ref19 = ctx.remainingWidth - width;break;\n }\n default: { ref19 = 0 }\n };this.#shift = ref19\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 ref20;if (0 <= (ref20 = test.x - this.#shift) && ref20 < 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 ref21 = this.#lines, i10 = 0, len10 = ref21.length; i10 < len10; i10++) {const { text, shift, lineHeight } = ref21[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 ref22 = this.#lines, i11 = 0, len11 = ref22.length; i11 < len11; i11++) {const { text, shift, lineHeight } = ref22[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 ref23 = this.#lines, i12 = 0, len12 = ref23.length; i12 < len12; i12++) {const { text, shift, lineHeight } = ref23[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 this.#lastWidth = this.graphics.canvas.clientWidth\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": "825DA65A294F10FE64756E2164756E21",
11
+ "mappings": "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",
12
+ "debugId": "8FD8B7ECB440302B64756E2164756E21",
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.12"
7
+ "version": "0.0.14"
8
8
  }