@matthewp/zebra 0.0.4 → 0.1.1

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.
@@ -0,0 +1,552 @@
1
+ const ESC = {
2
+ '&': '&',
3
+ '<': '&lt;',
4
+ '>': '&gt;',
5
+ '"': '&quot;',
6
+ "'": '&#39;',
7
+ };
8
+ function escapeHtml(s) {
9
+ return s.replace(/[&<>"']/g, ch => ESC[ch]);
10
+ }
11
+ function escapeAttr(s) {
12
+ return s.replace(/[&"]/g, ch => ESC[ch]);
13
+ }
14
+ const VOID_TAGS = new Set([
15
+ 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',
16
+ 'link', 'meta', 'param', 'source', 'track', 'wbr',
17
+ ]);
18
+ export class Node {
19
+ _children = [];
20
+ append(...children) {
21
+ this._children.push(...children);
22
+ return this;
23
+ }
24
+ prepend(...children) {
25
+ this._children.unshift(...children);
26
+ return this;
27
+ }
28
+ setText(text) {
29
+ this._children = [text];
30
+ return this;
31
+ }
32
+ setAttribute(name, value) {
33
+ for (const child of this._children) {
34
+ if (child instanceof Node)
35
+ child.setAttribute(name, value);
36
+ }
37
+ return this;
38
+ }
39
+ removeAttribute(name) {
40
+ for (const child of this._children) {
41
+ if (child instanceof Node)
42
+ child.removeAttribute(name);
43
+ }
44
+ return this;
45
+ }
46
+ toggleAttribute(name, force) {
47
+ for (const child of this._children) {
48
+ if (child instanceof Node)
49
+ child.toggleAttribute(name, force);
50
+ }
51
+ return this;
52
+ }
53
+ addClass(...classes) {
54
+ for (const child of this._children) {
55
+ if (child instanceof Node)
56
+ child.addClass(...classes);
57
+ }
58
+ return this;
59
+ }
60
+ removeClass(...classes) {
61
+ for (const child of this._children) {
62
+ if (child instanceof Node)
63
+ child.removeClass(...classes);
64
+ }
65
+ return this;
66
+ }
67
+ toggleClass(name, force) {
68
+ for (const child of this._children) {
69
+ if (child instanceof Node)
70
+ child.toggleClass(name, force);
71
+ }
72
+ return this;
73
+ }
74
+ setStyle(prop, value) {
75
+ for (const child of this._children) {
76
+ if (child instanceof Node)
77
+ child.setStyle(prop, value);
78
+ }
79
+ return this;
80
+ }
81
+ removeStyle(prop) {
82
+ for (const child of this._children) {
83
+ if (child instanceof Node)
84
+ child.removeStyle(prop);
85
+ }
86
+ return this;
87
+ }
88
+ show() {
89
+ for (const child of this._children) {
90
+ if (child instanceof Node)
91
+ child.show();
92
+ }
93
+ return this;
94
+ }
95
+ hide() {
96
+ for (const child of this._children) {
97
+ if (child instanceof Node)
98
+ child.hide();
99
+ }
100
+ return this;
101
+ }
102
+ on(event, handler) {
103
+ for (const child of this._children) {
104
+ if (child instanceof Node)
105
+ child.on(event, handler);
106
+ }
107
+ return this;
108
+ }
109
+ clear() {
110
+ this._children = [];
111
+ return this;
112
+ }
113
+ disable() {
114
+ return this.toggleAttribute('disabled', true);
115
+ }
116
+ enable() {
117
+ return this.toggleAttribute('disabled', false);
118
+ }
119
+ mount(container) {
120
+ container.append(this.toDOM());
121
+ return this;
122
+ }
123
+ }
124
+ export class Element extends Node {
125
+ _tag;
126
+ _attrs = new Map();
127
+ _classes = new Set();
128
+ _style = new Map();
129
+ _listeners = [];
130
+ el = null;
131
+ constructor(tag) {
132
+ super();
133
+ this._tag = tag;
134
+ }
135
+ append(...children) {
136
+ this._children.push(...children);
137
+ if (this.el) {
138
+ for (const child of children) {
139
+ this.el.append(child instanceof Node ? child.toDOM() : child);
140
+ }
141
+ }
142
+ return this;
143
+ }
144
+ prepend(...children) {
145
+ this._children.unshift(...children);
146
+ if (this.el) {
147
+ for (let i = children.length - 1; i >= 0; i--) {
148
+ const child = children[i];
149
+ this.el.prepend(child instanceof Node ? child.toDOM() : child);
150
+ }
151
+ }
152
+ return this;
153
+ }
154
+ setText(text) {
155
+ this._children = [text];
156
+ if (this.el)
157
+ this.el.textContent = text;
158
+ return this;
159
+ }
160
+ setAttribute(name, value) {
161
+ this._attrs.set(name, value);
162
+ if (this.el)
163
+ this.el.setAttribute(name, value);
164
+ return this;
165
+ }
166
+ removeAttribute(name) {
167
+ this._attrs.delete(name);
168
+ if (this.el)
169
+ this.el.removeAttribute(name);
170
+ return this;
171
+ }
172
+ toggleAttribute(name, force) {
173
+ const has = this._attrs.has(name);
174
+ const shouldHave = force === undefined ? !has : force;
175
+ if (shouldHave)
176
+ this._attrs.set(name, '');
177
+ else
178
+ this._attrs.delete(name);
179
+ if (this.el)
180
+ this.el.toggleAttribute(name, force);
181
+ return this;
182
+ }
183
+ addClass(...classes) {
184
+ for (const c of classes)
185
+ this._classes.add(c);
186
+ if (this.el)
187
+ this.el.classList.add(...classes);
188
+ return this;
189
+ }
190
+ removeClass(...classes) {
191
+ for (const c of classes)
192
+ this._classes.delete(c);
193
+ if (this.el)
194
+ this.el.classList.remove(...classes);
195
+ return this;
196
+ }
197
+ toggleClass(name, force) {
198
+ const has = this._classes.has(name);
199
+ const shouldHave = force === undefined ? !has : force;
200
+ if (shouldHave)
201
+ this._classes.add(name);
202
+ else
203
+ this._classes.delete(name);
204
+ if (this.el)
205
+ this.el.classList.toggle(name, force);
206
+ return this;
207
+ }
208
+ setStyle(prop, value) {
209
+ this._style.set(prop, value);
210
+ if (this.el)
211
+ this.el.style.setProperty(prop, value);
212
+ return this;
213
+ }
214
+ removeStyle(prop) {
215
+ this._style.delete(prop);
216
+ if (this.el)
217
+ this.el.style.removeProperty(prop);
218
+ return this;
219
+ }
220
+ show() {
221
+ this._style.delete('display');
222
+ if (this.el)
223
+ this.el.style.removeProperty('display');
224
+ return this;
225
+ }
226
+ hide() {
227
+ this._style.set('display', 'none');
228
+ if (this.el)
229
+ this.el.style.display = 'none';
230
+ return this;
231
+ }
232
+ on(event, handler) {
233
+ this._listeners.push([event, handler]);
234
+ if (this.el)
235
+ this.el.addEventListener(event, handler);
236
+ return this;
237
+ }
238
+ emit(name, detail, options = {}) {
239
+ if (this.el) {
240
+ this.el.dispatchEvent(new CustomEvent(name, {
241
+ detail,
242
+ bubbles: options.bubbles ?? true,
243
+ cancelable: options.cancelable ?? false,
244
+ }));
245
+ }
246
+ return this;
247
+ }
248
+ focus() {
249
+ if (this.el)
250
+ this.el.focus();
251
+ return this;
252
+ }
253
+ blur() {
254
+ if (this.el)
255
+ this.el.blur();
256
+ return this;
257
+ }
258
+ isFocused() {
259
+ return this.el !== null && document.activeElement === this.el;
260
+ }
261
+ measure(fn) {
262
+ return this.el ? fn(this.el) : undefined;
263
+ }
264
+ setHTML(html) {
265
+ this._children = [new RawHTML(html)];
266
+ if (this.el)
267
+ this.el.innerHTML = html;
268
+ return this;
269
+ }
270
+ clear() {
271
+ this._children = [];
272
+ if (this.el)
273
+ this.el.replaceChildren();
274
+ return this;
275
+ }
276
+ remove() {
277
+ if (this.el)
278
+ this.el.remove();
279
+ return this;
280
+ }
281
+ hydrate(el) {
282
+ if (this.el)
283
+ return this;
284
+ this.el = el;
285
+ for (const [event, handler] of this._listeners) {
286
+ el.addEventListener(event, handler);
287
+ }
288
+ let cursor = el.firstChild;
289
+ for (const child of this._children) {
290
+ if (typeof child === 'string') {
291
+ if (!cursor || cursor.nodeType !== 3) {
292
+ throw new Error(`Hydration mismatch in <${this._tag}>: expected text node`);
293
+ }
294
+ cursor = cursor.nextSibling;
295
+ }
296
+ else if (child instanceof Element) {
297
+ if (!cursor || cursor.nodeType !== 1) {
298
+ throw new Error(`Hydration mismatch in <${this._tag}>: expected element <${child._tag}>`);
299
+ }
300
+ child.hydrate(cursor);
301
+ cursor = cursor.nextSibling;
302
+ }
303
+ else {
304
+ throw new Error(`Hydration not supported for ${child.constructor.name} children yet`);
305
+ }
306
+ }
307
+ return this;
308
+ }
309
+ toDOM() {
310
+ if (this.el)
311
+ return this.el;
312
+ const el = document.createElement(this._tag);
313
+ this.el = el;
314
+ for (const [name, value] of this._attrs) {
315
+ el.setAttribute(name, value);
316
+ }
317
+ if (this._classes.size > 0) {
318
+ el.className = Array.from(this._classes).join(' ');
319
+ }
320
+ for (const [prop, value] of this._style) {
321
+ el.style.setProperty(prop, value);
322
+ }
323
+ for (const child of this._children) {
324
+ el.append(child instanceof Node ? child.toDOM() : child);
325
+ }
326
+ for (const [event, handler] of this._listeners) {
327
+ el.addEventListener(event, handler);
328
+ }
329
+ return el;
330
+ }
331
+ toString() {
332
+ let html = `<${this._tag}`;
333
+ if (this._classes.size > 0) {
334
+ html += ` class="${escapeAttr(Array.from(this._classes).join(' '))}"`;
335
+ }
336
+ if (this._style.size > 0) {
337
+ const styleStr = Array.from(this._style.entries())
338
+ .map(([k, v]) => `${k}: ${v}`)
339
+ .join('; ');
340
+ html += ` style="${escapeAttr(styleStr)}"`;
341
+ }
342
+ for (const [name, value] of this._attrs) {
343
+ html += ` ${name}="${escapeAttr(value)}"`;
344
+ }
345
+ html += '>';
346
+ if (VOID_TAGS.has(this._tag))
347
+ return html;
348
+ for (const child of this._children) {
349
+ html += child instanceof Node ? child.toString() : escapeHtml(child);
350
+ }
351
+ html += `</${this._tag}>`;
352
+ return html;
353
+ }
354
+ }
355
+ export class RawHTML extends Node {
356
+ _html;
357
+ constructor(html) {
358
+ super();
359
+ this._html = html;
360
+ }
361
+ toDOM() {
362
+ const tpl = document.createElement('template');
363
+ tpl.innerHTML = this._html;
364
+ return tpl.content;
365
+ }
366
+ toString() {
367
+ return this._html;
368
+ }
369
+ }
370
+ export class Fragment extends Node {
371
+ toDOM() {
372
+ const frag = document.createDocumentFragment();
373
+ for (const child of this._children) {
374
+ frag.append(child instanceof Node ? child.toDOM() : child);
375
+ }
376
+ return frag;
377
+ }
378
+ toString() {
379
+ let html = '';
380
+ for (const child of this._children) {
381
+ html += child instanceof Node ? child.toString() : escapeHtml(child);
382
+ }
383
+ return html;
384
+ }
385
+ }
386
+ export class Div extends Element {
387
+ constructor() { super('div'); }
388
+ }
389
+ export class Span extends Element {
390
+ constructor() { super('span'); }
391
+ }
392
+ export class Anchor extends Element {
393
+ constructor() { super('a'); }
394
+ }
395
+ export class Button extends Element {
396
+ constructor() { super('button'); }
397
+ }
398
+ export class Input extends Element {
399
+ constructor() { super('input'); }
400
+ setValue(value) {
401
+ if (this.el)
402
+ this.el.value = value;
403
+ else
404
+ this.setAttribute('value', value);
405
+ return this;
406
+ }
407
+ getValue() {
408
+ return this.el ? this.el.value : (this._attrs.get('value') ?? '');
409
+ }
410
+ setChecked(value) {
411
+ if (this.el)
412
+ this.el.checked = value;
413
+ else
414
+ this.toggleAttribute('checked', value);
415
+ return this;
416
+ }
417
+ isChecked() {
418
+ return this.el ? this.el.checked : this._attrs.has('checked');
419
+ }
420
+ }
421
+ export class Textarea extends Element {
422
+ constructor() { super('textarea'); }
423
+ setValue(value) {
424
+ if (this.el)
425
+ this.el.value = value;
426
+ else
427
+ this.setText(value);
428
+ return this;
429
+ }
430
+ getValue() {
431
+ return this.el ? this.el.value : '';
432
+ }
433
+ }
434
+ export class Select extends Element {
435
+ constructor() { super('select'); }
436
+ setValue(value) {
437
+ if (this.el)
438
+ this.el.value = value;
439
+ else
440
+ this.setAttribute('value', value);
441
+ return this;
442
+ }
443
+ getValue() {
444
+ return this.el ? this.el.value : (this._attrs.get('value') ?? '');
445
+ }
446
+ }
447
+ export class Label extends Element {
448
+ constructor() { super('label'); }
449
+ }
450
+ export class Form extends Element {
451
+ constructor() { super('form'); }
452
+ }
453
+ export class Img extends Element {
454
+ constructor() { super('img'); }
455
+ }
456
+ export class P extends Element {
457
+ constructor() { super('p'); }
458
+ }
459
+ export class H1 extends Element {
460
+ constructor() { super('h1'); }
461
+ }
462
+ export class H2 extends Element {
463
+ constructor() { super('h2'); }
464
+ }
465
+ export class H3 extends Element {
466
+ constructor() { super('h3'); }
467
+ }
468
+ export class H4 extends Element {
469
+ constructor() { super('h4'); }
470
+ }
471
+ export class H5 extends Element {
472
+ constructor() { super('h5'); }
473
+ }
474
+ export class H6 extends Element {
475
+ constructor() { super('h6'); }
476
+ }
477
+ export class Ul extends Element {
478
+ constructor() { super('ul'); }
479
+ }
480
+ export class Ol extends Element {
481
+ constructor() { super('ol'); }
482
+ }
483
+ export class Li extends Element {
484
+ constructor() { super('li'); }
485
+ }
486
+ export class Section extends Element {
487
+ constructor() { super('section'); }
488
+ }
489
+ export class Article extends Element {
490
+ constructor() { super('article'); }
491
+ }
492
+ export class Header extends Element {
493
+ constructor() { super('header'); }
494
+ }
495
+ export class Footer extends Element {
496
+ constructor() { super('footer'); }
497
+ }
498
+ export class Nav extends Element {
499
+ constructor() { super('nav'); }
500
+ }
501
+ export class Main extends Element {
502
+ constructor() { super('main'); }
503
+ }
504
+ export class Aside extends Element {
505
+ constructor() { super('aside'); }
506
+ }
507
+ export class Table extends Element {
508
+ constructor() { super('table'); }
509
+ }
510
+ export class Thead extends Element {
511
+ constructor() { super('thead'); }
512
+ }
513
+ export class Tbody extends Element {
514
+ constructor() { super('tbody'); }
515
+ }
516
+ export class Tr extends Element {
517
+ constructor() { super('tr'); }
518
+ }
519
+ export class Td extends Element {
520
+ constructor() { super('td'); }
521
+ }
522
+ export class Th extends Element {
523
+ constructor() { super('th'); }
524
+ }
525
+ export class Option extends Element {
526
+ constructor() { super('option'); }
527
+ }
528
+ export class Output extends Element {
529
+ constructor() { super('output'); }
530
+ }
531
+ export class Br extends Element {
532
+ constructor() { super('br'); }
533
+ }
534
+ export class Hr extends Element {
535
+ constructor() { super('hr'); }
536
+ }
537
+ export class Pre extends Element {
538
+ constructor() { super('pre'); }
539
+ }
540
+ export class Code extends Element {
541
+ constructor() { super('code'); }
542
+ }
543
+ export class Strong extends Element {
544
+ constructor() { super('strong'); }
545
+ }
546
+ export class Em extends Element {
547
+ constructor() { super('em'); }
548
+ }
549
+ export class Small extends Element {
550
+ constructor() { super('small'); }
551
+ }
552
+ //# sourceMappingURL=element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../src/element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { Node, Element, Fragment, RawHTML, Div, Span, Anchor, Button, Input, Textarea, Label, Form, Img, P, H1, H2, H3, H4, H5, H6, Ul, Ol, Li, Section, Article, Header, Footer, Nav, Main, Aside, Table, Thead, Tbody, Tr, Td, Th, Select, Option, Output, Br, Hr, Pre, Code, Strong, Em, Small, } from './element.ts';
2
+ export type { Child } from './element.ts';
3
+ export { View } from './view.ts';
4
+ export { computed, effect, effectScope, endBatch, isComputed, isEffect, isEffectScope, isSignal, signal, startBatch, } from 'alien-signals';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,GAAG,EACH,CAAC,EACD,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,GAAG,EACH,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,EAAE,EACF,EAAE,EACF,EAAE,EACF,MAAM,EACN,MAAM,EACN,MAAM,EACN,EAAE,EACF,EAAE,EACF,GAAG,EACH,IAAI,EACJ,MAAM,EACN,EAAE,EACF,KAAK,GACN,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,MAAM,EACN,UAAU,GACX,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { Node, Element, Fragment, RawHTML, Div, Span, Anchor, Button, Input, Textarea, Label, Form, Img, P, H1, H2, H3, H4, H5, H6, Ul, Ol, Li, Section, Article, Header, Footer, Nav, Main, Aside, Table, Thead, Tbody, Tr, Td, Th, Select, Option, Output, Br, Hr, Pre, Code, Strong, Em, Small, } from "./element.js";
2
+ export { View } from "./view.js";
3
+ export { computed, effect, effectScope, endBatch, isComputed, isEffect, isEffectScope, isSignal, signal, startBatch, } from 'alien-signals';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,GAAG,EACH,IAAI,EACJ,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,GAAG,EACH,CAAC,EACD,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,GAAG,EACH,IAAI,EACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,EAAE,EACF,EAAE,EACF,EAAE,EACF,MAAM,EACN,MAAM,EACN,MAAM,EACN,EAAE,EACF,EAAE,EACF,GAAG,EACH,IAAI,EACJ,MAAM,EACN,EAAE,EACF,KAAK,GACN,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,MAAM,EACN,UAAU,GACX,MAAM,eAAe,CAAC"}
package/dist/list.d.ts CHANGED
@@ -1,18 +1,21 @@
1
+ import { Element } from './element.ts';
1
2
  import { View } from './view.ts';
2
- import { SafeHTML } from './html.ts';
3
- type ViewConstructor<T> = new () => View<T>;
4
- export declare class List<T = Record<string, unknown>> {
5
- private ViewClass;
6
- private keyFn;
7
- private views;
8
- private keys;
9
- private items;
10
- private container;
11
- constructor(ViewClass: ViewConstructor<T>, keyFn: (item: T) => unknown);
12
- template(items?: T[]): SafeHTML;
13
- mount(container: HTMLElement, items?: T[]): void;
14
- private updateView;
15
- update(items: T[]): void;
3
+ type ItemSource<T> = T[] | (() => T[]);
4
+ type Factory<T> = (item: T) => View;
5
+ export declare class List<T = unknown> extends View {
6
+ private _containerTag;
7
+ private _items;
8
+ private _keyFn;
9
+ private _factory;
10
+ private _views;
11
+ private _keys;
12
+ private _currentItems;
13
+ constructor(items: ItemSource<T>, keyFn: (item: T) => unknown, factory: Factory<T>, tag?: string);
14
+ private _getItems;
15
+ render(): Element;
16
+ private _buildInitial;
17
+ private _updateView;
18
+ private _reconcile;
16
19
  }
17
20
  export {};
18
21
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,KAAK,eAAe,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;AAE5C,qBAAa,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAA4B;gBAEjC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;IAKtE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ;IAQ/B,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE;IAezC,OAAO,CAAC,UAAU;IAIlB,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;CAmIlB"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACvC,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEpC,qBAAa,IAAI,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,IAAI;IACzC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,aAAa,CAAoB;gBAGvC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,EAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,GAAG,SAAQ;IASb,OAAO,CAAC,SAAS;IAMjB,MAAM,IAAI,OAAO;IAejB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;CAoHnB"}