@bodil/dom 0.1.9 → 0.2.0

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 (65) hide show
  1. package/dist/component.d.ts +227 -9
  2. package/dist/component.js +185 -38
  3. package/dist/component.js.map +1 -1
  4. package/dist/css.d.ts +4 -0
  5. package/dist/css.js +4 -0
  6. package/dist/css.js.map +1 -1
  7. package/dist/decorators/attribute.d.ts +15 -15
  8. package/dist/decorators/attribute.js +28 -9
  9. package/dist/decorators/attribute.js.map +1 -1
  10. package/dist/decorators/attribute.test.js +58 -6
  11. package/dist/decorators/attribute.test.js.map +1 -1
  12. package/dist/decorators/connect.d.ts +2 -0
  13. package/dist/decorators/connect.js.map +1 -1
  14. package/dist/decorators/connect.test.js +1 -1
  15. package/dist/decorators/connect.test.js.map +1 -1
  16. package/dist/decorators/reactive.d.ts +1 -1
  17. package/dist/decorators/reactive.js +1 -1
  18. package/dist/decorators/reactive.js.map +1 -1
  19. package/dist/decorators/reactive.test.js +1 -1
  20. package/dist/decorators/reactive.test.js.map +1 -1
  21. package/dist/decorators/require.test.js +1 -1
  22. package/dist/decorators/require.test.js.map +1 -1
  23. package/dist/dom.d.ts +43 -1
  24. package/dist/dom.js +63 -15
  25. package/dist/dom.js.map +1 -1
  26. package/dist/dom.test.d.ts +1 -0
  27. package/dist/dom.test.js +20 -0
  28. package/dist/dom.test.js.map +1 -0
  29. package/dist/emitter.d.ts +8 -0
  30. package/dist/emitter.js.map +1 -1
  31. package/dist/event.d.ts +4 -0
  32. package/dist/event.js.map +1 -1
  33. package/dist/geometry.d.ts +7 -0
  34. package/dist/geometry.js +4 -0
  35. package/dist/geometry.js.map +1 -1
  36. package/dist/index.d.ts +2 -1
  37. package/dist/index.js +2 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/signal.d.ts +12 -3
  40. package/dist/signal.js +7 -1
  41. package/dist/signal.js.map +1 -1
  42. package/dist/signal.test.js +2 -2
  43. package/dist/signal.test.js.map +1 -1
  44. package/dist/test.d.ts +17 -0
  45. package/dist/test.js +34 -0
  46. package/dist/test.js.map +1 -0
  47. package/package.json +27 -19
  48. package/src/component.ts +289 -53
  49. package/src/css.ts +5 -0
  50. package/src/decorators/attribute.test.ts +41 -14
  51. package/src/decorators/attribute.ts +57 -29
  52. package/src/decorators/reactive.test.ts +1 -1
  53. package/src/decorators/reactive.ts +4 -4
  54. package/src/decorators/require.test.ts +1 -1
  55. package/src/dom.test.ts +23 -0
  56. package/src/dom.ts +87 -15
  57. package/src/emitter.ts +8 -0
  58. package/src/event.ts +4 -0
  59. package/src/geometry.ts +8 -0
  60. package/src/index.ts +2 -1
  61. package/src/signal.test.ts +2 -2
  62. package/src/signal.ts +13 -2
  63. package/src/test.ts +38 -0
  64. package/src/decorators/connect.test.ts +0 -119
  65. package/src/decorators/connect.ts +0 -85
package/dist/component.js CHANGED
@@ -1,19 +1,21 @@
1
+ /**
2
+ * Web component base class.
3
+ * @module
4
+ */
1
5
  var _a;
2
- import { isIterable, isNullish } from "@bodil/core/assert";
6
+ import { isNullish, present } from "@bodil/core/assert";
3
7
  import { DisposableContext, toDisposable } from "@bodil/core/disposable";
4
8
  import { Signal } from "@bodil/signal";
5
9
  import { adoptStyles, getCompatibleStyle, nothing, render, unsafeCSS, } from "lit";
6
10
  import { attributeConfig, fromAttribute, toAttribute, } from "./decorators/attribute";
7
- import { connectedJobs } from "./decorators/connect";
8
11
  import { reactiveFields, signalForObject } from "./decorators/reactive";
9
12
  import { requiredProperties } from "./decorators/require";
10
- import { childElements } from "./dom";
13
+ import { findDescendants } from "./dom";
11
14
  import { EmitterElement } from "./emitter";
12
15
  import { eventListener } from "./event";
13
16
  import { scheduler } from "./scheduler";
14
17
  import { findSlot, getOrSetQuery, getOrSetSignal, listsEqual, SlotChangeController, } from "./slot";
15
18
  export { attribute, attributeGetter, attributeSetter, } from "./decorators/attribute";
16
- export { connect, connectEffect, } from "./decorators/connect";
17
19
  export { reactive } from "./decorators/reactive";
18
20
  export { require } from "./decorators/require";
19
21
  export { EmitterElement } from "./emitter";
@@ -22,13 +24,31 @@ const finalised = Symbol("finalised");
22
24
  function processCSSStyleSpec(spec) {
23
25
  return getCompatibleStyle(typeof spec === "string" ? unsafeCSS(spec) : spec);
24
26
  }
27
+ /**
28
+ * Error thrown when a {@link Component.render} method causes infinite
29
+ * re-renders.
30
+ */
25
31
  export class ComponentUpdateLoopError extends Error {
26
32
  constructor(message, options) {
27
33
  super(message, options);
28
34
  this.name = "ComponentUpdateLoopError";
29
35
  }
30
36
  }
37
+ /**
38
+ * Base class for web components.
39
+ */
31
40
  export class Component extends EmitterElement {
41
+ /**
42
+ * Declare the web components this element will be using.
43
+ *
44
+ * This is a convenient place to make sure these web components will be
45
+ * defined when your component is rendered. It has no effect otherwise.
46
+ *
47
+ * @example
48
+ * class MyComponent extends Component {
49
+ * static deps: Deps = [ MySubcomponent, MyOtherSubcomponent ];
50
+ * }
51
+ */
32
52
  static { this.deps = []; }
33
53
  static { this.shadowRootOptions = { mode: "open" }; }
34
54
  static { this.initialisers = new Set(); }
@@ -41,6 +61,7 @@ export class Component extends EmitterElement {
41
61
  static { this[_a] = true; }
42
62
  #controllers;
43
63
  #connectedContext;
64
+ #finalCleanupContext;
44
65
  #dirty;
45
66
  #isUpdatePending;
46
67
  #updateSignal;
@@ -52,25 +73,53 @@ export class Component extends EmitterElement {
52
73
  #initialised;
53
74
  #viewTransitionRequested;
54
75
  #ignoreAttributeUpdates;
76
+ /**
77
+ * True if this component had scheduled an update which has not yet started.
78
+ */
55
79
  get isUpdatePending() {
56
80
  return this.#isUpdatePending;
57
81
  }
58
82
  get updateComplete() {
59
83
  return this.#updateResult.promise;
60
84
  }
85
+ /**
86
+ * A {@link Promise} which resolves when this component has completed its
87
+ * first update and considers itself stabilised, according to the
88
+ * {@link Component.stabilise} method.
89
+ *
90
+ * By default, a component considers itself stabilised when all of its
91
+ * children which are also {@link Component}s are reporting as stabilised.
92
+ */
61
93
  get hasStabilised() {
62
94
  return this.#stabilised.promise;
63
95
  }
64
- #abortController;
96
+ /**
97
+ * An {@link AbortSignal} which will trigger when this component is
98
+ * disconnected from the DOM.
99
+ *
100
+ * This can be passed along to asynchronous tasks such as {@link fetch}
101
+ * initiated by this component, which will then be aborted automatically if
102
+ * the component is removed from the DOM.
103
+ */
65
104
  get abortSignal() {
66
105
  return this.#abortController.signal;
67
106
  }
107
+ #abortController;
108
+ /**
109
+ * Register a function which will be executed whenever an instance of this
110
+ * class is constructed.
111
+ */
68
112
  static addInitialiser(init) {
69
113
  if (!Object.hasOwn(this, "initialisers")) {
70
114
  this.initialisers = new Set();
71
115
  }
72
116
  this.initialisers.add(init);
73
117
  }
118
+ /**
119
+ * A list of the attributes this element has declared.
120
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#responding_to_attribute_changes
121
+ * @internal
122
+ */
74
123
  static get observedAttributes() {
75
124
  this.finalise();
76
125
  return this.attributeConfig.keys().toArray();
@@ -106,11 +155,13 @@ export class Component extends EmitterElement {
106
155
  }
107
156
  }
108
157
  }
158
+ /** @ignore */
109
159
  constructor() {
110
160
  super();
111
161
  this.renderOptions = { host: this };
112
162
  this.#controllers = new Set();
113
163
  this.#connectedContext = new DisposableContext();
164
+ this.#finalCleanupContext = new DisposableContext();
114
165
  this.#dirty = false;
115
166
  this.#isUpdatePending = false;
116
167
  this.#updateSignalWatcher = new Signal.subtle.Watcher(() => this.requestUpdate());
@@ -125,7 +176,7 @@ export class Component extends EmitterElement {
125
176
  // set up reactive fields, because decorators can't do this themselves
126
177
  const fields = this.constructor[Symbol.metadata]?.[reactiveFields] ?? [];
127
178
  for (const field of fields) {
128
- const sig = signalForObject(this, field, () => Signal(undefined, { equals: Object.is }));
179
+ const sig = signalForObject(this, field, () => Signal.from(undefined, { equals: Object.is }));
129
180
  Object.defineProperty(this, field, {
130
181
  get() {
131
182
  return sig.get();
@@ -164,15 +215,7 @@ export class Component extends EmitterElement {
164
215
  this.#connectedContext.dispose();
165
216
  this.#controllers.forEach((c) => c.hostConnected?.());
166
217
  this.#rootPart?.setConnected(true);
167
- for (const job of connectedJobs(this)) {
168
- const result = job.call(this);
169
- const items = isNullish(result)
170
- ? Iterator.from([])
171
- : isIterable(result)
172
- ? Iterator.from(result)
173
- : Iterator.from([result]);
174
- items.filter((i) => i !== undefined).forEach(this.useWhileConnected.bind(this));
175
- }
218
+ this.connected();
176
219
  this.useWhileConnected(Signal.effect(() => {
177
220
  if (this.hasRequiredProperties().get()) {
178
221
  if (!this.#initialised) {
@@ -191,12 +234,16 @@ export class Component extends EmitterElement {
191
234
  this.#updateSignal = undefined;
192
235
  }
193
236
  this.#isUpdatePending = false;
237
+ this.disconnected();
194
238
  this.#abortController.abort(new DOMException(`${this.tagName} element disconnected`, "AbortError"));
195
239
  this.#abortController = new AbortController();
196
240
  this.#rootPart?.setConnected(false);
197
241
  this.#controllers.forEach((c) => c.hostDisconnected?.());
198
242
  this.#connectedContext.dispose();
199
243
  }
244
+ /**
245
+ * @internal
246
+ */
200
247
  setAttributeQuietly(name, value) {
201
248
  this.#ignoreAttributeUpdates++;
202
249
  if (value === null) {
@@ -207,6 +254,9 @@ export class Component extends EmitterElement {
207
254
  }
208
255
  this.#ignoreAttributeUpdates--;
209
256
  }
257
+ /**
258
+ * @internal
259
+ */
210
260
  attributeChangedCallback(name, old, valueString) {
211
261
  if (this.#ignoreAttributeUpdates > 0 || old === valueString) {
212
262
  return;
@@ -214,9 +264,18 @@ export class Component extends EmitterElement {
214
264
  const attrConfig = this.constructor.attributeConfig.get(name);
215
265
  if (attrConfig !== undefined) {
216
266
  const value = fromAttribute(valueString, attrConfig.type);
217
- this[attrConfig.property] = value;
267
+ try {
268
+ this[attrConfig.property] = value;
269
+ // Silently swallow any write errors.
270
+ }
271
+ catch (_e) { }
218
272
  }
219
273
  }
274
+ /**
275
+ * Typedoc does *not* like this type signature. TODO figure out how to
276
+ * document it properly.
277
+ * @ignore
278
+ */
220
279
  $signal(prop) {
221
280
  const _value = this[prop];
222
281
  return signalForObject(this, prop, () => {
@@ -232,6 +291,16 @@ export class Component extends EmitterElement {
232
291
  removeController(controller) {
233
292
  this.#controllers.delete(controller);
234
293
  }
294
+ /**
295
+ * Create the component's render root.
296
+ *
297
+ * By default, this creates a {@link ShadowRoot} and attaches it to the
298
+ * component.
299
+ *
300
+ * If you don't want to use a shadow DOM, you can override this method to
301
+ * just `return this`, which causes the component's contents to render as
302
+ * direct children of the component itself.
303
+ */
235
304
  createRenderRoot() {
236
305
  const renderRoot = this.shadowRoot ??
237
306
  this.attachShadow(this.constructor.shadowRootOptions);
@@ -239,6 +308,9 @@ export class Component extends EmitterElement {
239
308
  this.renderOptions.renderBefore ??= renderRoot.firstChild;
240
309
  return renderRoot;
241
310
  }
311
+ /**
312
+ * Ask this component to update itself.
313
+ */
242
314
  requestUpdate(opts) {
243
315
  this.#dirty = true;
244
316
  if (opts?.viewTransition === true) {
@@ -250,16 +322,16 @@ export class Component extends EmitterElement {
250
322
  scheduler(this);
251
323
  }
252
324
  }
253
- #hasRequiredProperties;
325
+ /**
326
+ * @internal
327
+ */
254
328
  hasRequiredProperties() {
255
329
  if (this.#hasRequiredProperties === undefined) {
256
330
  const requiredProperties = this.constructor.requiredProperties;
257
331
  this.#hasRequiredProperties = Signal.computed(() => {
258
332
  return requiredProperties.size === 0
259
333
  ? true
260
- : requiredProperties
261
- .keys()
262
- .every((key) => this[key] !== undefined);
334
+ : requiredProperties.keys().every((key) => !isNullish(this[key]));
263
335
  },
264
336
  // every signal update is relevant, even if the signal value doesn't
265
337
  // change, because the required values probably did.
@@ -267,6 +339,8 @@ export class Component extends EmitterElement {
267
339
  }
268
340
  return this.#hasRequiredProperties;
269
341
  }
342
+ #hasRequiredProperties;
343
+ /** @internal */
270
344
  async performUpdate() {
271
345
  if (!this.isConnected || !this.isUpdatePending) {
272
346
  return;
@@ -320,6 +394,7 @@ export class Component extends EmitterElement {
320
394
  }
321
395
  }
322
396
  }
397
+ /** @internal */
323
398
  update() {
324
399
  if (this.#updateSignal !== undefined) {
325
400
  this.#updateSignalWatcher.unwatch(this.#updateSignal);
@@ -331,38 +406,94 @@ export class Component extends EmitterElement {
331
406
  this.#updateSignalWatcher.watch(this.#updateSignal);
332
407
  this.#updateSignal.get();
333
408
  }
409
+ /**
410
+ * Return an iterator over this component's children which are also
411
+ * {@link Component}s.
412
+ */
334
413
  findChildComponents(root = this.renderRoot) {
335
- let all = childElements(root).toArray();
336
- const top = [...all];
337
- for (const el of top) {
338
- all = [...all, ...this.findChildComponents(el)];
339
- }
340
- return Iterator.from(all).filter((el) => el instanceof Component);
414
+ return findDescendants(root, (el) => el instanceof Component);
341
415
  }
416
+ /**
417
+ * Return a {@link Promise} which resolves when this component considers
418
+ * itself to have stabilised.
419
+ *
420
+ * The default implementation waits for any children which are also
421
+ * {@link Component}s to report that they have also stabilised.
422
+ */
342
423
  async stabilise() {
343
424
  // wait for children to stabilise
344
425
  const children = this.findChildComponents();
345
426
  // eslint-disable-next-line no-console
346
427
  await Promise.all(children.map((child) => child.hasStabilised)).catch(console.error);
347
428
  }
429
+ /**
430
+ * This lifecycle callback is called each time this component is connected
431
+ * to the DOM.
432
+ */
433
+ connected() {
434
+ //
435
+ }
436
+ /**
437
+ * This lifecycle callback is called each time this component is
438
+ * disconnected from the DOM.
439
+ */
440
+ disconnected() {
441
+ //
442
+ }
443
+ /**
444
+ * This lifecycle callback is called each time an update has completed.
445
+ */
348
446
  updated() {
349
- // called when an update has completed
447
+ //
350
448
  }
449
+ /**
450
+ * This lifecycle callback is called after the component's first update has
451
+ * completed, and before {@link Component.updated}.
452
+ */
351
453
  firstUpdated() {
352
- // called when the first update has completed, and before
353
- // {@link Component.updated}.
454
+ //
354
455
  }
456
+ /**
457
+ * This lifecycle callback is called when the component considers itself
458
+ * stabilised after its first update.
459
+ *
460
+ * @see {@link Component.hasStabilised}
461
+ */
355
462
  stabilised() {
356
- // called when the component has stabilised after its first update
463
+ //
357
464
  }
465
+ /**
466
+ * This lifecycle callback is called every time a property decorated with
467
+ * the @{@link require} decorator has changed, but only when every property
468
+ * marked as such is not `undefined`.
469
+ */
358
470
  initialised() {
359
- // called when a property marked `@require` has changed and every
360
- // such property is non-`undefined`.
471
+ //
361
472
  }
473
+ /**
474
+ * This lifecycle callback is called the first time every property decorated
475
+ * with @{@link require} has been defined, and before
476
+ * {@link Component.initialised}.
477
+ */
362
478
  firstInitialised() {
363
- // called the first time all properties marked `@require` become
364
- // defined, and before {@link Component.initialised}.
479
+ //
365
480
  }
481
+ /**
482
+ * Render the component's contents.
483
+ *
484
+ * This function should return a Lit [renderable
485
+ * value](https://lit.dev/docs/templates/expressions/#child-expressions),
486
+ * usually an {@link html} template.
487
+ *
488
+ * @example
489
+ * class MyComponent extends Component {
490
+ * protected override render() {
491
+ * return html`
492
+ * <h1>Hello Joe!</h1>
493
+ * `;
494
+ * }
495
+ * }
496
+ */
366
497
  render() {
367
498
  return nothing;
368
499
  }
@@ -370,12 +501,28 @@ export class Component extends EmitterElement {
370
501
  for (const child of this.findChildComponents()) {
371
502
  child[Symbol.dispose]();
372
503
  }
504
+ this.remove();
373
505
  this.disconnectedCallback();
374
506
  this.#rootPart?._$clear?.();
375
507
  this.#rootPart = undefined;
376
- this.remove();
508
+ this.#finalCleanupContext.dispose();
377
509
  }
378
- useWhileConnected(disposifiable) {
510
+ use(disposifiable) {
511
+ if (isNullish(disposifiable)) {
512
+ return disposifiable;
513
+ }
514
+ const disposable = toDisposable(disposifiable);
515
+ this.#finalCleanupContext.use(disposable);
516
+ return disposable;
517
+ }
518
+ useWhileConnected(disposifiable, ...disposifiables) {
519
+ if (disposifiables.length > 0) {
520
+ return [disposifiable, ...disposifiables].map((d) => {
521
+ const disposable = toDisposable(present(d));
522
+ this.#connectedContext.use(disposable);
523
+ return disposable;
524
+ });
525
+ }
379
526
  if (isNullish(disposifiable)) {
380
527
  return disposifiable;
381
528
  }
@@ -425,9 +572,9 @@ export class Component extends EmitterElement {
425
572
  return query(slotEl);
426
573
  }
427
574
  const sig = getOrSetSignal(this, query, () => {
428
- const sig = Signal(query(slotEl), { equals: listsEqual });
575
+ const sig = Signal.from(query(slotEl), { equals: listsEqual });
429
576
  this.addController(new SlotChangeController(this, slot, sig, query));
430
- return sig.readOnly();
577
+ return sig.readOnly;
431
578
  });
432
579
  return sig;
433
580
  }
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAsB,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EACH,WAAW,EACX,kBAAkB,EAClB,OAAO,EACP,MAAM,EACN,SAAS,GAOZ,MAAM,KAAK,CAAC;AAGb,OAAO,EACH,eAAe,EACf,aAAa,EACb,WAAW,GAEd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EACH,QAAQ,EACR,aAAa,EACb,cAAc,EACd,UAAU,EACV,oBAAoB,GAEvB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACH,SAAS,EACT,eAAe,EACf,eAAe,GAIlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACH,OAAO,EACP,aAAa,GAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAM3D,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAQtC,SAAS,mBAAmB,CAAC,IAAkB;IAC3C,OAAO,kBAAkB,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAC/C,YAAY,OAAgB,EAAE,OAAsB;QAChD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAC3C,CAAC;CACJ;AAED,MAAM,OAAgB,SAClB,SAAQ,cAAc;aAGf,SAAI,GAAS,EAAE,AAAX,CAAY;aAEhB,sBAAiB,GAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,AAAnC,CAAoC;aACrD,iBAAY,GAAG,IAAI,GAAG,EAAc,AAAxB,CAAyB;IAE5C,cAAc;aACG,oBAAe,GAAG,IAAI,GAAG,EAA2B,AAArC,CAAsC;IACtE,cAAc;aACG,kBAAa,GAA6B,EAAE,AAA/B,CAAgC;IAC9D,cAAc;aACG,uBAAkB,GAAG,IAAI,GAAG,EAAmB,AAA7B,CAA8B;aAClD,QAAW,GAAG,IAAI,AAAP,CAAQ;IAKzB,YAAY,CAAiC;IAC7C,iBAAiB,CAA2B;IACrD,MAAM,CAAS;IACf,gBAAgB,CAAS;IACzB,aAAa,CAAyB;IAC7B,oBAAoB,CAAyD;IACtF,aAAa,CAAoC;IACxC,WAAW,CAAiC;IACrD,SAAS,CAAY;IACrB,YAAY,CAAS;IACrB,YAAY,CAAS;IACrB,wBAAwB,CAAS;IACjC,uBAAuB,CAAS;IAIhC,IAAI,eAAe;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IACD,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;IACtC,CAAC;IACD,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,gBAAgB,CAAyB;IACzC,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAgB;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACjD,CAAC;IAEO,MAAM,CAAC,QAAQ;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAqB,CAAC;YAC/D,MAAM,CAAC,QAAQ,EAAE,CAAC;YAElB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAC;gBAC3B,GAAG,MAAM,CAAC,eAAe;gBACzB,GAAG,CAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,CAAkC;oBAC1E,EAAE,CAAC;aACV,CAAC,CAAC;YACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,CAAC;gBAC9B,GAAG,MAAM,CAAC,kBAAkB;gBAC5B,GAAG,CAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,kBAAkB,CAA0B,IAAI,EAAE,CAAC;aACnF,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7B,MAAM,MAAM,GAAG,IAAI,GAAG,CACjB,IAAI,CAAC,MAAyB;yBAC1B,IAAI,CAAC,QAAQ,CAAC;yBACd,OAAO,EAAyB,CACxC,CAAC;oBACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;wBACzB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC3D,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;QACI,KAAK,EAAE,CAAC;QAjFZ,kBAAa,GAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAGrC,iBAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC7C,sBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACrD,WAAM,GAAG,KAAK,CAAC;QACf,qBAAgB,GAAG,KAAK,CAAC;QAEhB,yBAAoB,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACtF,kBAAa,GAAG,OAAO,CAAC,aAAa,EAAW,CAAC;QACxC,gBAAW,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QAErD,iBAAY,GAAG,KAAK,CAAC;QACrB,iBAAY,GAAG,KAAK,CAAC;QACrB,6BAAwB,GAAG,KAAK,CAAC;QAGxB,eAAU,GAA6B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAYxE,qBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAsDrC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QAEjC,sEAAsE;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACzE,KAAK,MAAM,KAAK,IAAI,MAAmC,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAC1C,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAClB,CAAC;YAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC/B,GAAG;oBACC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;gBACrB,CAAC;gBACD,GAAG,CAAC,KAAK;oBACL,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC;gBACD,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,IAAI;aACrB,CAAC,CAAC;QACP,CAAC;QAED,mBAAmB;QACnB,KAAK,MAAM,IAAI,IAAK,IAAI,CAAC,WAAgC,CAAC,YAAY,EAAE,CAAC;YACrE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,+CAA+C;QAC/C,MAAM,oBAAoB,GAAI,IAAI,CAAC,WAAgC,CAAC,eAAe;aAC9E,MAAM,EAAE;aACR,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;aAC9B,OAAO,EAAE,CAAC;QACf,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,cAAc,CAAC,GAAG,EAAE;gBAChB,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;oBACtC,MAAM,KAAK,GAAG,WAAW,CAAE,IAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnE,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;wBACpB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAC/C,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAES,iBAAiB;QACvB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnC,KAAK,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC3B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAgB,EAAE,CAAC;gBAClC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;oBAClB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBACvB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC,iBAAiB,CAClB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACf,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,CAAC;gBACD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC;QACL,CAAC,CAAC,CACL,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAES,oBAAoB;QAC1B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CACvB,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,OAAO,uBAAuB,EAAE,YAAY,CAAC,CACzE,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;IACrC,CAAC;IAED,mBAAmB,CAAC,IAAY,EAAE,KAAoB;QAClD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACnC,CAAC;IAES,wBAAwB,CAC9B,IAAY,EACZ,GAAkB,EAClB,WAA0B;QAE1B,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC1D,OAAO;QACX,CAAC;QACD,MAAM,UAAU,GAAI,IAAI,CAAC,WAAgC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,QAAsB,CAAC,GAAG,KAAY,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,OAAO,CAAmD,IAAO;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YACpC,MAAM,IAAI,SAAS,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC,CAAc,CAAC;IACpB,CAAC;IAED,aAAa,CAAC,UAA8B;QACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpD,UAAU,CAAC,aAAa,EAAE,EAAE,CAAC;QACjC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,UAA8B;QAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAES,gBAAgB;QACtB,MAAM,UAAU,GACZ,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,WAAgC,CAAC,iBAAiB,CAAC,CAAC;QAChF,WAAW,CAAC,UAAU,EAAE,CAAC,GAAI,IAAI,CAAC,WAAgC,CAAC,aAAa,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,aAAa,CAAC,YAAY,KAAK,UAAU,CAAC,UAAU,CAAC;QAC1D,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,IAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,IAAI,EAAE,cAAc,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACjE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,sBAAsB,CAA4B;IAClD,qBAAqB;QACjB,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,kBAAkB,GAAI,IAAI,CAAC,WAAgC,CAAC,kBAAkB,CAAC;YACrF,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,QAAQ,CACzC,GAAG,EAAE;gBACD,OAAO,kBAAkB,CAAC,IAAI,KAAK,CAAC;oBAChC,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,kBAAkB;yBACb,IAAI,EAAE;yBACN,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,IAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;YAChE,CAAC;YACD,oEAAoE;YACpE,oDAAoD;YACpD,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAC1B,CAAC;QACN,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACvC,CAAC;IAES,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7C,OAAO;QACX,CAAC;QAED,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,SAAS,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,cAAc,GAAG,IAAI,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC;QACF,IAAI,CAAC;YACD,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,+DAA+D;gBAC/D,yDAAyD;gBACzD,6CAA6C;gBAC7C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,KAAK,EAAE,CAAC;gBACR,oDAAoD;gBACpD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACZ,MAAM,IAAI,wBAAwB,CAC9B,gCAAgC,KAAK,2EAA2E,CACnH,CAAC;gBACN,CAAC;gBACD,IACI,IAAI,CAAC,wBAAwB;oBAC7B,OAAO,QAAQ,CAAC,mBAAmB,KAAK,UAAU,EACpD,CAAC;oBACC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;oBACtC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACJ,SAAS,EAAE,CAAC;gBAChB,CAAC;YACL,CAAC;YACD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,cAAc,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACL,CAAC;IACL,CAAC;IAES,MAAM;QACZ,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAClD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAES,mBAAmB,CACzB,OAA6B,IAAI,CAAC,UAAU;QAE5C,IAAI,GAAG,GAAmB,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,SAAS,CAAC,CAAC;IACtE,CAAC;IAES,KAAK,CAAC,SAAS;QACrB,iCAAiC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,sCAAsC;QACtC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzF,CAAC;IAES,OAAO;QACb,sCAAsC;IAC1C,CAAC;IAES,YAAY;QAClB,yDAAyD;QACzD,6BAA6B;IACjC,CAAC;IAES,UAAU;QAChB,kEAAkE;IACtE,CAAC;IAES,WAAW;QACjB,iEAAiE;QACjE,oCAAoC;IACxC,CAAC;IAES,gBAAgB;QACtB,gEAAgE;QAChE,qDAAqD;IACzD,CAAC;IAES,MAAM;QACZ,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAxXgB,SAAS,EAwXxB,MAAM,CAAC,OAAO,EAAC;QACZ,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC7C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAiB,EAAE,OAAO,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;IAyBD,iBAAiB,CACb,aAA+C;QAE/C,IAAI,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3B,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,EAAE,CACE,IAAO,EACP,QAAiD,EACjD,OAA2C;QAE3C,OAAO,aAAa,CAAC,IAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACH,iBAAiB;QACb,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAYD,KAAK,CAAC,QAAgB;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAgBD,QAAQ,CAAC,QAAgB;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAuCD,SAAS,CACL,OAA0B;QAM1B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAA8B,EAAE,EAAE;YACtF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC9B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK,KAAK,IAAI;oBACd,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;oBAC/B,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,gBAAgB,GAClB,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gBACpC,CAAC,CAAE,QAA2B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACvE,CAAC,CAAC,QAAQ,CAAC;YACnB,OAAO,UAAU,KAAK,SAAS;gBAC3B,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,UAAU,CAAC;gBAC3D,CAAC,CAAC,gBAAgB,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACrE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
package/dist/css.d.ts CHANGED
@@ -1,3 +1,7 @@
1
+ /**
2
+ * CSS manipulation tools.
3
+ * @module
4
+ */
1
5
  import { Option } from "@bodil/opt";
2
6
  export type Pixels = number;
3
7
  /**
package/dist/css.js CHANGED
@@ -1,3 +1,7 @@
1
+ /**
2
+ * CSS manipulation tools.
3
+ * @module
4
+ */
1
5
  import { assert } from "@bodil/core/assert";
2
6
  import { None, Option, Some } from "@bodil/opt";
3
7
  /**
package/dist/css.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"css.js","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIhD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,QAAgB;IAClE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,cAAc,GAAG,6DAA6D,CAAC;AAErF,SAAS,aAAa,CAAC,KAAa;IAChC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACnC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACnD,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACtC,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACvC,KAAK,GAAG;gBACJ,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;YACxC,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAC7B,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC;gBACI,OAAO,IAAI,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACnC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACnD,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,KAAK,GAAG;gBACJ,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;YAC/B;gBACI,OAAO,IAAI,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIhD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,QAAgB;IAClE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,cAAc,GAAG,6DAA6D,CAAC;AAErF,SAAS,aAAa,CAAC,KAAa;IAChC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACnC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACnD,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACtC,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;YACvC,KAAK,GAAG;gBACJ,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;YACxC,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAC7B,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC;gBACI,OAAO,IAAI,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACnC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACnD,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,KAAK,GAAG;gBACJ,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;YAC/B;gBACI,OAAO,IAAI,CAAC;QACpB,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -18,31 +18,31 @@ export type AttributeConfig = {
18
18
  reactive: boolean;
19
19
  };
20
20
  export declare function toAttribute(value: unknown, type: AttributeType): string | null;
21
- export declare function fromAttribute(value: string | null, type: typeof Number): number | undefined;
21
+ export declare function fromAttribute(value: string | null, type: typeof Number): number | null;
22
22
  export declare function fromAttribute(value: string | null, type: typeof Boolean): boolean;
23
- export declare function fromAttribute(value: string | null, type: typeof String): string | undefined;
24
- export declare function fromAttribute(value: string | null, type: AttributeType): string | number | boolean | undefined;
25
- export declare function attributeGetter<C extends Component, T extends number | undefined>(options: AttributeOptions & {
23
+ export declare function fromAttribute(value: string | null, type: typeof String): string | null;
24
+ export declare function fromAttribute(value: string | null, type: AttributeType): string | number | boolean | null;
25
+ export declare function attributeGetter<C extends Component, T extends number | null>(options: AttributeOptions & {
26
26
  type: typeof Number;
27
27
  }): ClassGetterDecoratorFunction<C, T>;
28
- export declare function attributeGetter<C extends Component, T extends boolean | undefined>(options: AttributeOptions & {
28
+ export declare function attributeGetter<C extends Component, T extends boolean | null>(options: AttributeOptions & {
29
29
  type: typeof Boolean;
30
30
  }): ClassGetterDecoratorFunction<C, T>;
31
- export declare function attributeGetter<C extends Component, T extends string | undefined>(options: AttributeOptions): ClassGetterDecoratorFunction<C, T>;
32
- export declare function attributeGetter<C extends Component, T extends string | undefined>(value: ClassGetterDecoratorTarget<C, T>, context: ClassGetterDecoratorContext<C, T>): ClassGetterDecoratorResult<C, T>;
33
- export declare function attributeSetter<C extends Component, T extends number | undefined>(options: AttributeOptions & {
31
+ export declare function attributeGetter<C extends Component, T extends string | null>(options: AttributeOptions): ClassGetterDecoratorFunction<C, T>;
32
+ export declare function attributeGetter<C extends Component, T extends string | null>(value: ClassGetterDecoratorTarget<C, T>, context: ClassGetterDecoratorContext<C, T>): ClassGetterDecoratorResult<C, T>;
33
+ export declare function attributeSetter<C extends Component, T extends number | null>(options: AttributeOptions & {
34
34
  type: typeof Number;
35
35
  }): ClassSetterDecoratorFunction<C, T>;
36
- export declare function attributeSetter<C extends Component, T extends boolean | undefined>(options: AttributeOptions & {
36
+ export declare function attributeSetter<C extends Component, T extends boolean | null>(options: AttributeOptions & {
37
37
  type: typeof Boolean;
38
38
  }): ClassSetterDecoratorFunction<C, T>;
39
- export declare function attributeSetter<C extends Component, T extends string | undefined>(options: AttributeOptions): ClassSetterDecoratorFunction<C, T>;
40
- export declare function attributeSetter<C extends Component, T extends string | undefined>(value: ClassSetterDecoratorTarget<C, T>, context: ClassSetterDecoratorContext<C, T>): ClassSetterDecoratorResult<C, T>;
41
- export declare function attribute<C extends Component, T extends number | undefined>(options: AttributeOptions & {
39
+ export declare function attributeSetter<C extends Component, T extends string | null>(options: AttributeOptions): ClassSetterDecoratorFunction<C, T>;
40
+ export declare function attributeSetter<C extends Component, T extends string | null>(value: ClassSetterDecoratorTarget<C, T>, context: ClassSetterDecoratorContext<C, T>): ClassSetterDecoratorResult<C, T>;
41
+ export declare function attribute<C extends Component, T extends number | null>(options: AttributeOptions & {
42
42
  type: typeof Number;
43
43
  }): ClassAccessorDecoratorFunction<C, T>;
44
- export declare function attribute<C extends Component, T extends boolean | undefined>(options: AttributeOptions & {
44
+ export declare function attribute<C extends Component, T extends boolean | null>(options: AttributeOptions & {
45
45
  type: typeof Boolean;
46
46
  }): ClassAccessorDecoratorFunction<C, T>;
47
- export declare function attribute<C extends Component, T extends string | undefined>(options: AttributeOptions): ClassAccessorDecoratorFunction<C, T>;
48
- export declare function attribute<C extends Component, T extends string | undefined>(value: ClassAccessorDecoratorTarget<C, T>, context: ClassAccessorDecoratorContext<C, T>): ClassAccessorDecoratorResult<C, T>;
47
+ export declare function attribute<C extends Component, T extends string | null>(options: AttributeOptions): ClassAccessorDecoratorFunction<C, T>;
48
+ export declare function attribute<C extends Component, T extends string | null>(value: ClassAccessorDecoratorTarget<C, T>, context: ClassAccessorDecoratorContext<C, T>): ClassAccessorDecoratorResult<C, T>;
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/unified-signatures */
2
- import { isDeepEqual, isNullish, unreachable } from "@bodil/core/assert";
2
+ import { assertNever, isDeepEqual, isNullish, unreachable } from "@bodil/core/assert";
3
3
  import { None, Some } from "@bodil/opt";
4
4
  import { Signal } from "@bodil/signal";
5
5
  import { signalForObject } from "./reactive";
@@ -22,8 +22,8 @@ export function toAttribute(value, type) {
22
22
  export function fromAttribute(value, type) {
23
23
  switch (type) {
24
24
  case Number: {
25
- const num = value === null ? undefined : Number(value);
26
- if (num !== undefined && Number.isNaN(num)) {
25
+ const num = value === null ? null : Number(value);
26
+ if (num !== null && Number.isNaN(num)) {
27
27
  throw new TypeError(`numeric attribute value ${JSON.stringify(value)} parsed as NaN`);
28
28
  }
29
29
  return num;
@@ -31,7 +31,7 @@ export function fromAttribute(value, type) {
31
31
  case Boolean:
32
32
  return value !== null;
33
33
  case String:
34
- return value ?? undefined;
34
+ return value ?? null;
35
35
  default:
36
36
  unreachable();
37
37
  }
@@ -80,13 +80,17 @@ export function attribute(valueOrOptions, context) {
80
80
  if (context.kind === "accessor") {
81
81
  return accessor(options, context, value);
82
82
  }
83
- // ensure getters/setters aren't configured with reactive or reflect
84
- if (options.reactive) {
85
- throw new TypeError(`Getter/setter attributes cannot be declared with reactive: true (on ${JSON.stringify(context.name)})`);
86
- }
87
83
  if (context.kind === "setter") {
84
+ // ensure setters aren't configured with reactive
85
+ if (options.reactive) {
86
+ throw new TypeError(`Setter attributes cannot be declared with reactive: true (on ${JSON.stringify(context.name)})`);
87
+ }
88
88
  return setter(options, value);
89
89
  }
90
+ if (context.kind === "getter") {
91
+ return getter(options, context, value);
92
+ }
93
+ assertNever(context);
90
94
  };
91
95
  }
92
96
  function syncAttribute(target, options, value, force = false) {
@@ -96,6 +100,21 @@ function syncAttribute(target, options, value, force = false) {
96
100
  target.setAttributeQuietly(key, attributeValue);
97
101
  }
98
102
  }
103
+ function getter(options, context, getter) {
104
+ if (options.reactive) {
105
+ const getSig = (obj) => signalForObject(obj, context.name, () => {
106
+ const sig = Signal.computed(getter.bind(obj));
107
+ // FIXME this leaks when obj isn't explicitly disposed
108
+ obj.use(Signal.effect(() => {
109
+ syncAttribute(obj, options, sig.get());
110
+ }));
111
+ return sig;
112
+ });
113
+ return function () {
114
+ return getSig(this).get();
115
+ };
116
+ }
117
+ }
99
118
  function setter(options, setter) {
100
119
  if (options.reflect) {
101
120
  return function (value) {
@@ -107,7 +126,7 @@ function setter(options, setter) {
107
126
  function accessor(options, context, value) {
108
127
  if (options.reactive) {
109
128
  let initValue = None;
110
- const getSig = (obj) => signalForObject(obj, context.name, () => Signal(initValue.unwrapExact(), {
129
+ const getSig = (obj) => signalForObject(obj, context.name, () => Signal.from(initValue.unwrapExact(), {
111
130
  equals: Object.is,
112
131
  }));
113
132
  return {