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.
- package/index.js +65 -51
- package/index.js.map +5 -5
- 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
|
|
235
|
+
for (let ref6 = this.children, i5 = 0, len5 = ref6.length;i5 < len5; i5++) {
|
|
223
236
|
const index = i5;
|
|
224
|
-
const child =
|
|
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
|
|
268
|
+
for (let ref7 = this.children, i6 = 0, len6 = ref7.length;i6 < len6; i6++) {
|
|
256
269
|
const index = i6;
|
|
257
|
-
const child =
|
|
258
|
-
let
|
|
259
|
-
if (
|
|
260
|
-
const gap =
|
|
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
|
|
284
|
+
for (let ref9 = this.children, i7 = 0, len7 = ref9.length;i7 < len7; i7++) {
|
|
272
285
|
const index = i7;
|
|
273
|
-
const child =
|
|
274
|
-
let
|
|
275
|
-
if (
|
|
276
|
-
const gap =
|
|
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
|
|
309
|
+
for (let ref11 = this.children, i8 = 0, len8 = ref11.length;i8 < len8; i8++) {
|
|
297
310
|
const index = i8;
|
|
298
|
-
const child =
|
|
299
|
-
let
|
|
300
|
-
if (
|
|
301
|
-
const gap =
|
|
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
|
|
308
|
-
if (x <= (
|
|
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
|
|
330
|
+
for (let ref14 = this.children, i9 = 0, len9 = ref14.length;i9 < len9; i9++) {
|
|
318
331
|
const index = i9;
|
|
319
|
-
const child =
|
|
320
|
-
let
|
|
321
|
-
if (
|
|
322
|
-
const gap =
|
|
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
|
|
328
|
-
if (x <= (
|
|
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
|
-
|
|
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
|
|
440
|
+
let ref19;
|
|
428
441
|
switch (this.options.alignment) {
|
|
429
442
|
case "center": {
|
|
430
|
-
|
|
443
|
+
ref19 = (ctx.remainingWidth - width) / 2;
|
|
431
444
|
break;
|
|
432
445
|
}
|
|
433
446
|
case "right": {
|
|
434
|
-
|
|
447
|
+
ref19 = ctx.remainingWidth - width;
|
|
435
448
|
break;
|
|
436
449
|
}
|
|
437
450
|
default: {
|
|
438
|
-
|
|
451
|
+
ref19 = 0;
|
|
439
452
|
}
|
|
440
453
|
}
|
|
441
|
-
this.#shift =
|
|
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
|
|
455
|
-
if (0 <= (
|
|
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
|
|
492
|
-
const { text, shift, lineHeight } =
|
|
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
|
|
502
|
-
const { text, shift, lineHeight } =
|
|
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
|
|
512
|
-
const { text, shift, lineHeight } =
|
|
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=
|
|
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": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "8FD8B7ECB440302B64756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/package.json
CHANGED