@bodil/dom 0.1.10 → 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.
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/decorators/connect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAYvC,MAAM,cAAc,GAAG,IAAI,OAAO,EAAmC,CAAC;AAEtE,SAAS,eAAe,CAAC,GAAc,EAAE,GAAoB;IACzD,IAAI,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAc;IACxC,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAUD,MAAM,UAAU,OAAO,CACnB,KAAkC,EAClC,OAEoD;IAEpD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACT,OAAO,CAAC,cAAc,CAAC;gBACnB,eAAe,CAAC,IAAI,EAAE,KAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,OAAO;QACX,KAAK,OAAO;YACR,OAAO,UAAmB,KAAsB;gBAC5C,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC;IACV,CAAC;AACL,CAAC;AAUD,MAAM,UAAU,aAAa,CACzB,KAAkC,EAClC,OAEoD;IAEpD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACT,OAAO,CAAC,cAAc,CAAC;gBACnB,eAAe,CAAC,IAAI,EAAE;oBAClB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAM,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,OAAO;QACX,KAAK,OAAO;YACR,OAAO,UAAmB,KAAsB;gBAC5C,eAAe,CAAC,IAAI,EAAE;oBAClB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;IACV,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/decorators/connect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAYvC,MAAM,cAAc,GAAG,IAAI,OAAO,EAAmC,CAAC;AAEtE,SAAS,eAAe,CAAC,GAAc,EAAE,GAAoB;IACzD,IAAI,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACjB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAc;IACxC,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAWD,MAAM,UAAU,OAAO,CACnB,KAAkC,EAClC,OAEoD;IAEpD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACT,OAAO,CAAC,cAAc,CAAC;gBACnB,eAAe,CAAC,IAAI,EAAE,KAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,OAAO;QACX,KAAK,OAAO;YACR,OAAO,UAAmB,KAAsB;gBAC5C,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC;IACV,CAAC;AACL,CAAC;AAWD,MAAM,UAAU,aAAa,CACzB,KAAkC,EAClC,OAEoD;IAEpD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACT,OAAO,CAAC,cAAc,CAAC;gBACnB,eAAe,CAAC,IAAI,EAAE;oBAClB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAM,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,OAAO;QACX,KAAK,OAAO;YACR,OAAO,UAAmB,KAAsB;gBAC5C,eAAe,CAAC,IAAI,EAAE;oBAClB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;IACV,CAAC;AACL,CAAC"}
@@ -75,7 +75,7 @@ test("@require", async () => {
75
75
  constructor() {
76
76
  super(...arguments);
77
77
  this.foo = __runInitializers(this, _foo_initializers, void 0);
78
- this.#bar_accessor_storage = (__runInitializers(this, _foo_extraInitializers), __runInitializers(this, _bar_initializers, void 0));
78
+ this.#bar_accessor_storage = (__runInitializers(this, _foo_extraInitializers), __runInitializers(this, _bar_initializers, null));
79
79
  __runInitializers(this, _bar_extraInitializers);
80
80
  }
81
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"require.test.js","sourceRoot":"","sources":["../../src/decorators/require.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"require.test.js","sourceRoot":"","sources":["../../src/decorators/require.test.ts"],"names":[],"mappings":"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"}
package/dist/dom.d.ts CHANGED
@@ -37,9 +37,10 @@ export declare class DOMIterator extends Iterator<Node> {
37
37
  next(): IteratorResult<Node>;
38
38
  }
39
39
  /**
40
- * Get an iterator over the child elements of an {@link Element} or {@link DocumentFragment}.
40
+ * Return all descendants of `root` which match the `predicate` function.
41
41
  */
42
- export declare function childElements(parent: Element | DocumentFragment | null): IteratorObject<Element>;
42
+ export declare function findDescendants<T extends Element>(root: Element | DocumentFragment | null, predicate: (child: Element) => child is T): IteratorObject<T>;
43
+ export declare function findDescendants(root: Element | DocumentFragment | null, predicate: (child: Element) => boolean): IteratorObject<Element>;
43
44
  /** Test whether the user has asked for reduced motion. */
44
45
  export declare function prefersReducedMotion(): boolean;
45
46
  /**
@@ -108,6 +109,15 @@ export type ScrollToItemOptions = {
108
109
  * This is {@link Element.scrollIntoView} for advanced users.
109
110
  */
110
111
  export declare function scrollToItem(el: HTMLElement, scrollToItemOptions: ScrollToItemOptions): void;
112
+ /**
113
+ * Assign a unique ID to the target element.
114
+ *
115
+ * Returns the ID that was assigned.
116
+ *
117
+ * If the target element already has an `id` attribute, this will not be
118
+ * overwritten.
119
+ */
120
+ export declare function applyUniqueID(target: HTMLElement): string;
111
121
  /**
112
122
  * A {@link ReactiveController} which tracks whether a slot is populated.
113
123
  */
package/dist/dom.js CHANGED
@@ -2,8 +2,9 @@
2
2
  * DOM manipulation tools.
3
3
  * @module
4
4
  */
5
- import { assertNever, isNullish, unreachable } from "@bodil/core/assert";
6
- import { toDisposable } from "@bodil/core/disposable";
5
+ import { assertNever, isEmpty, isNullish, unreachable } from "@bodil/core/assert";
6
+ import { DisposableContext, toDisposable } from "@bodil/core/disposable";
7
+ import { eventListener } from "./event";
7
8
  import { contains } from "./geometry";
8
9
  /**
9
10
  * Given the name of a custom DOM element registered in
@@ -96,21 +97,11 @@ export class DOMIterator extends Iterator {
96
97
  return { done: false, value: resultNode };
97
98
  }
98
99
  }
99
- /**
100
- * Get an iterator over the child elements of an {@link Element} or {@link DocumentFragment}.
101
- */
102
- export function childElements(parent) {
103
- if (parent === null) {
100
+ export function findDescendants(root, predicate) {
101
+ if (root === null) {
104
102
  return Iterator.from([]);
105
103
  }
106
- const iter = function* () {
107
- let el = parent.firstElementChild;
108
- while (el !== null) {
109
- yield el;
110
- el = el.nextElementSibling;
111
- }
112
- };
113
- return Iterator.from(iter());
104
+ return Iterator.from(root.children).flatMap((el) => predicate(el) ? [el, ...findDescendants(el, predicate)] : findDescendants(el, predicate));
114
105
  }
115
106
  /** Test whether the user has asked for reduced motion. */
116
107
  export function prefersReducedMotion() {
@@ -153,9 +144,13 @@ export async function stopAnimations(el) {
153
144
  export async function animationEnd(el) {
154
145
  await Promise.all(el.getAnimations().map((animation) => {
155
146
  return new Promise((resolve) => {
156
- const handleAnimationEvent = () => requestAnimationFrame(resolve);
157
- animation.addEventListener("cancel", () => handleAnimationEvent(), { once: true });
158
- animation.addEventListener("finish", () => handleAnimationEvent(), { once: true });
147
+ const context = new DisposableContext();
148
+ const handleAnimationEvent = () => {
149
+ context.dispose();
150
+ requestAnimationFrame(resolve);
151
+ };
152
+ context.use(eventListener(animation, "cancel", handleAnimationEvent, { once: true }));
153
+ context.use(eventListener(animation, "finish", handleAnimationEvent, { once: true }));
159
154
  });
160
155
  }));
161
156
  }
@@ -332,6 +327,27 @@ export function scrollToItem(el, scrollToItemOptions) {
332
327
  });
333
328
  }
334
329
  }
330
+ const ids = {};
331
+ function freshID(tagName) {
332
+ const next = ids[tagName] ?? 1;
333
+ ids[tagName] = next + 1;
334
+ return next;
335
+ }
336
+ /**
337
+ * Assign a unique ID to the target element.
338
+ *
339
+ * Returns the ID that was assigned.
340
+ *
341
+ * If the target element already has an `id` attribute, this will not be
342
+ * overwritten.
343
+ */
344
+ export function applyUniqueID(target) {
345
+ if (isEmpty(target.id)) {
346
+ const name = target.tagName.toLowerCase();
347
+ target.id = `${name}-${freshID(name)}`;
348
+ }
349
+ return target.id;
350
+ }
335
351
  // HasSlotController nicked largely verbatim from Shoelace
336
352
  // https://github.com/shoelace-style/shoelace/blob/next/src/internal/slot.ts
337
353
  /**
package/dist/dom.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { html } from "lit";
2
+ import { expect, test } from "vitest";
3
+ import { findDescendants } from "./dom";
4
+ import { testHTML } from "./test";
5
+ test("findDescendants", async () => {
6
+ const root = await testHTML(html `
7
+ <p>foo</p>
8
+ <div><p>bar</p></div>
9
+ <article>
10
+ <div>
11
+ <p>baz</p>
12
+ <p>gazonk</p>
13
+ </div>
14
+ </article>
15
+ `);
16
+ expect(findDescendants(root, (el) => el instanceof HTMLParagraphElement)
17
+ .map((el) => el.innerText)
18
+ .toArray()).toEqual(["foo", "bar", "baz", "gazonk"]);
19
+ });
20
+ //# sourceMappingURL=dom.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.test.js","sourceRoot":"","sources":["../src/dom.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;IAC/B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAA;;;;;;;;;KAS/B,CAAC,CAAC;IACH,MAAM,CACF,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,oBAAoB,CAAC;SAC5D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;SACzB,OAAO,EAAE,CACjB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -8,4 +8,5 @@ import * as dom from "./dom";
8
8
  import * as event from "./event";
9
9
  import * as geometry from "./geometry";
10
10
  import * as signal from "./signal";
11
- export { component, css, dom, event, geometry, signal };
11
+ import * as test from "./test";
12
+ export { component, css, dom, event, geometry, signal, test };
package/dist/index.js CHANGED
@@ -8,5 +8,6 @@ import * as dom from "./dom";
8
8
  import * as event from "./event";
9
9
  import * as geometry from "./geometry";
10
10
  import * as signal from "./signal";
11
- export { component, css, dom, event, geometry, signal };
11
+ import * as test from "./test";
12
+ export { component, css, dom, event, geometry, signal, test };
12
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC"}
package/dist/test.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Tools for testing web components.
3
+ * @module
4
+ */
5
+ /**
6
+ * Render a Lit template and wait for any {@link Component}s inside it to
7
+ * stabilise before returning the {@link HTMLElement} containing the rendered
8
+ * template.
9
+ *
10
+ * The root element is also a {@link Disposable} which will remove itself from
11
+ * the DOM and dispose its {@link Component}s when disposed.
12
+ *
13
+ * @example
14
+ * using root = await testHTML(html`<my-component></my-component>`);
15
+ * expect(root.querySelector("my-component")).toBeInstanceOf(MyComponent);
16
+ */
17
+ export declare function testHTML(template: unknown): Promise<HTMLElement & Disposable>;
package/dist/test.js ADDED
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Tools for testing web components.
3
+ * @module
4
+ */
5
+ import { render } from "lit";
6
+ import { Component } from "./component";
7
+ /**
8
+ * Render a Lit template and wait for any {@link Component}s inside it to
9
+ * stabilise before returning the {@link HTMLElement} containing the rendered
10
+ * template.
11
+ *
12
+ * The root element is also a {@link Disposable} which will remove itself from
13
+ * the DOM and dispose its {@link Component}s when disposed.
14
+ *
15
+ * @example
16
+ * using root = await testHTML(html`<my-component></my-component>`);
17
+ * expect(root.querySelector("my-component")).toBeInstanceOf(MyComponent);
18
+ */
19
+ export async function testHTML(template) {
20
+ const root = document.createElement("section");
21
+ document.body.append(root);
22
+ render(template, root, { host: root });
23
+ root[Symbol.dispose] = () => {
24
+ Iterator.from(root.children)
25
+ .filter((el) => el instanceof Component)
26
+ .forEach((comp) => comp[Symbol.dispose]());
27
+ root.remove();
28
+ };
29
+ await Promise.all(Iterator.from(root.children)
30
+ .filter((el) => el instanceof Component)
31
+ .map((el) => el.hasStabilised));
32
+ return root;
33
+ }
34
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAiB;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAA6B,CAAC;IAC3E,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE;QACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;aACvB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,SAAS,CAAC;aACvC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;SACvB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,SAAS,CAAC;SACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CACrC,CAAC;IACF,OAAO,IAAI,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bodil/dom",
3
- "version": "0.1.10",
3
+ "version": "0.2.0",
4
4
  "description": "DOM and web component tools",
5
5
  "homepage": "https://codeberg.org/bodil/dom",
6
6
  "repository": {
@@ -56,40 +56,46 @@
56
56
  "types": "./dist/signal.d.ts",
57
57
  "import": "./dist/signal.js"
58
58
  }
59
+ },
60
+ "./test": {
61
+ "import": {
62
+ "types": "./dist/test.d.ts",
63
+ "import": "./dist/test.js"
64
+ }
59
65
  }
60
66
  },
61
67
  "publishConfig": {
62
68
  "access": "public"
63
69
  },
64
70
  "dependencies": {
65
- "@bodil/core": "^0.5.2",
66
- "@bodil/opt": "^0.4.3",
67
- "@bodil/signal": "^0.5.1",
71
+ "@bodil/core": "^0.5.3",
72
+ "@bodil/opt": "^1.0.0",
73
+ "@bodil/signal": "^0.5.2",
68
74
  "lit": "^3.3.2",
69
- "type-fest": "^5.3.1"
75
+ "type-fest": "^5.4.4"
70
76
  },
71
77
  "devDependencies": {
72
78
  "@eslint/eslintrc": "^3.3.3",
73
- "@eslint/js": "^9.39.2",
74
- "@ianvs/prettier-plugin-sort-imports": "^4.7.0",
75
- "@typescript-eslint/eslint-plugin": "^8.52.0",
76
- "@typescript-eslint/parser": "^8.52.0",
79
+ "@eslint/js": "^10.0.1",
80
+ "@ianvs/prettier-plugin-sort-imports": "^4.7.1",
81
+ "@typescript-eslint/eslint-plugin": "^8.56.0",
82
+ "@typescript-eslint/parser": "^8.56.0",
77
83
  "@typhonjs-typedoc/ts-lib-docs": "^2024.12.25",
78
- "@vitest/browser-playwright": "^4.0.16",
79
- "@vitest/coverage-v8": "^4.0.16",
80
- "eslint": "^9.39.2",
84
+ "@vitest/browser-playwright": "^4.0.18",
85
+ "@vitest/coverage-v8": "^4.0.18",
86
+ "eslint": "^10.0.1",
81
87
  "eslint-config-prettier": "^10.1.8",
82
- "eslint-plugin-jsdoc": "^61.5.0",
83
- "globals": "^17.0.0",
84
- "happy-dom": "^20.0.11",
88
+ "eslint-plugin-jsdoc": "^62.7.0",
89
+ "globals": "^17.3.0",
90
+ "happy-dom": "^20.7.0",
85
91
  "npm-run-all2": "^8.0.4",
86
- "prettier": "^3.7.4",
87
- "typedoc": "^0.28.15",
92
+ "prettier": "^3.8.1",
93
+ "typedoc": "^0.28.17",
88
94
  "typedoc-plugin-extras": "^4.0.1",
89
- "typedoc-plugin-mdn-links": "^5.0.10",
95
+ "typedoc-plugin-mdn-links": "^5.1.1",
90
96
  "typedoc-theme-fresh": "^0.2.3",
91
97
  "typescript": "^5.9.3",
92
- "vitest": "^4.0.16"
98
+ "vitest": "^4.0.18"
93
99
  },
94
100
  "prettier": {
95
101
  "editorconfig": true,
package/src/component.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * @module
4
4
  */
5
5
 
6
- import { isIterable, isNullish } from "@bodil/core/assert";
6
+ import { isNullish, present } from "@bodil/core/assert";
7
7
  import { DisposableContext, toDisposable, type Disposifiable } from "@bodil/core/disposable";
8
8
  import { Signal } from "@bodil/signal";
9
9
  import {
@@ -29,10 +29,9 @@ import {
29
29
  toAttribute,
30
30
  type AttributeConfig,
31
31
  } from "./decorators/attribute";
32
- import { connectedJobs } from "./decorators/connect";
33
32
  import { reactiveFields, signalForObject } from "./decorators/reactive";
34
33
  import { requiredProperties } from "./decorators/require";
35
- import { childElements } from "./dom";
34
+ import { findDescendants } from "./dom";
36
35
  import { EmitterElement } from "./emitter";
37
36
  import { eventListener } from "./event";
38
37
  import { scheduler } from "./scheduler";
@@ -54,12 +53,6 @@ export {
54
53
  type AttributeGetterSetterOptions,
55
54
  type AttributeType,
56
55
  } from "./decorators/attribute";
57
- export {
58
- connect,
59
- connectEffect,
60
- type ConnectFunction,
61
- type ConnectFunctionReturnValue,
62
- } from "./decorators/connect";
63
56
  export { reactive } from "./decorators/reactive";
64
57
  export { require } from "./decorators/require";
65
58
  export { EmitterElement } from "./emitter";
@@ -74,6 +67,8 @@ export type UpdateConfig = {
74
67
 
75
68
  const finalised = Symbol("finalised");
76
69
 
70
+ export type Disposables = Disposifiable | Iterable<Disposifiable | undefined> | undefined | void;
71
+
77
72
  export type Deps = Array<typeof HTMLElement>;
78
73
 
79
74
  export type CSSStyleSpec = CSSResult | CSSStyleSheet | string;
@@ -152,6 +147,7 @@ export abstract class Component
152
147
 
153
148
  readonly #controllers = new Set<ReactiveController>();
154
149
  readonly #connectedContext = new DisposableContext();
150
+ readonly #finalCleanupContext = new DisposableContext();
155
151
  #dirty = false;
156
152
  #isUpdatePending = false;
157
153
  #updateSignal?: Signal.Computed<void>;
@@ -307,27 +303,12 @@ export abstract class Component
307
303
  }
308
304
  }
309
305
 
310
- /**
311
- * This lifecycle callback is called when the component is attached to the
312
- * DOM.
313
- *
314
- * Generally, prefer using methods with @{@link connect} decorators to
315
- * overriding this method.
316
- */
317
- protected connectedCallback() {
306
+ private connectedCallback() {
318
307
  this.#connectedContext.dispose();
319
308
  this.#controllers.forEach((c) => c.hostConnected?.());
320
309
  this.#rootPart?.setConnected(true);
321
310
 
322
- for (const job of connectedJobs(this)) {
323
- const result = job.call(this);
324
- const items = isNullish(result)
325
- ? Iterator.from<Disposifiable>([])
326
- : isIterable(result)
327
- ? Iterator.from(result)
328
- : Iterator.from([result]);
329
- items.filter((i) => i !== undefined).forEach(this.useWhileConnected.bind(this));
330
- }
311
+ this.connected();
331
312
 
332
313
  this.useWhileConnected(
333
314
  Signal.effect(() => {
@@ -345,19 +326,13 @@ export abstract class Component
345
326
  this.requestUpdate();
346
327
  }
347
328
 
348
- /**
349
- * This lifecycle callback is called when the component is removed from the
350
- * DOM.
351
- *
352
- * Generally, prefer using methods with @{@link connect} decorators to
353
- * overriding this method.
354
- */
355
- protected disconnectedCallback() {
329
+ private disconnectedCallback() {
356
330
  if (this.#updateSignal !== undefined) {
357
331
  this.#updateSignalWatcher.unwatch(this.#updateSignal);
358
332
  this.#updateSignal = undefined;
359
333
  }
360
334
  this.#isUpdatePending = false;
335
+ this.disconnected();
361
336
  this.#abortController.abort(
362
337
  new DOMException(`${this.tagName} element disconnected`, "AbortError"),
363
338
  );
@@ -394,7 +369,10 @@ export abstract class Component
394
369
  const attrConfig = (this.constructor as typeof Component).attributeConfig.get(name);
395
370
  if (attrConfig !== undefined) {
396
371
  const value = fromAttribute(valueString, attrConfig.type);
397
- this[attrConfig.property as keyof this] = value as any;
372
+ try {
373
+ this[attrConfig.property as keyof this] = value as any;
374
+ // Silently swallow any write errors.
375
+ } catch (_e) {}
398
376
  }
399
377
  }
400
378
 
@@ -466,9 +444,7 @@ export abstract class Component
466
444
  () => {
467
445
  return requiredProperties.size === 0
468
446
  ? true
469
- : requiredProperties
470
- .keys()
471
- .every((key) => (this as any)[key] !== undefined);
447
+ : requiredProperties.keys().every((key) => !isNullish((this as any)[key]));
472
448
  },
473
449
  // every signal update is relevant, even if the signal value doesn't
474
450
  // change, because the required values probably did.
@@ -557,12 +533,7 @@ export abstract class Component
557
533
  protected findChildComponents(
558
534
  root: Element | ShadowRoot = this.renderRoot,
559
535
  ): IteratorObject<Component> {
560
- let all: Array<Element> = childElements(root).toArray();
561
- const top = [...all];
562
- for (const el of top) {
563
- all = [...all, ...this.findChildComponents(el)];
564
- }
565
- return Iterator.from(all).filter((el) => el instanceof Component);
536
+ return findDescendants(root, (el) => el instanceof Component);
566
537
  }
567
538
 
568
539
  /**
@@ -579,6 +550,22 @@ export abstract class Component
579
550
  await Promise.all(children.map((child) => child.hasStabilised)).catch(console.error);
580
551
  }
581
552
 
553
+ /**
554
+ * This lifecycle callback is called each time this component is connected
555
+ * to the DOM.
556
+ */
557
+ protected connected(): void {
558
+ //
559
+ }
560
+
561
+ /**
562
+ * This lifecycle callback is called each time this component is
563
+ * disconnected from the DOM.
564
+ */
565
+ protected disconnected(): void {
566
+ //
567
+ }
568
+
582
569
  /**
583
570
  * This lifecycle callback is called each time an update has completed.
584
571
  */
@@ -642,14 +629,33 @@ export abstract class Component
642
629
  return nothing;
643
630
  }
644
631
 
645
- [Symbol.dispose]() {
632
+ [Symbol.dispose](): void {
646
633
  for (const child of this.findChildComponents()) {
647
634
  child[Symbol.dispose]();
648
635
  }
636
+ this.remove();
649
637
  this.disconnectedCallback();
650
638
  (this.#rootPart as any)?._$clear?.();
651
639
  this.#rootPart = undefined;
652
- this.remove();
640
+ this.#finalCleanupContext.dispose();
641
+ }
642
+
643
+ /**
644
+ * Register a {@link Disposable} for automatic disposal when this component
645
+ * is disposed.
646
+ */
647
+ use(disposifiable: undefined): undefined;
648
+ use(disposifiable: null): null;
649
+ use(disposifiable: Disposifiable): Disposable;
650
+ use(disposifiable: Disposifiable | undefined): Disposable | undefined;
651
+ use(disposifiable: Disposifiable | null | undefined): Disposable | null | undefined;
652
+ use(disposifiable: Disposifiable | null | undefined): Disposable | null | undefined {
653
+ if (isNullish(disposifiable)) {
654
+ return disposifiable;
655
+ }
656
+ const disposable = toDisposable(disposifiable);
657
+ this.#finalCleanupContext.use(disposable);
658
+ return disposable;
653
659
  }
654
660
 
655
661
  /**
@@ -668,6 +674,11 @@ export abstract class Component
668
674
  * this.useWhileConnected(this.on("click", this.handleClick.bind(this)));
669
675
  * }
670
676
  */
677
+ useWhileConnected(
678
+ disposifiable: Disposifiable,
679
+ secondDisposable: Disposifiable,
680
+ ...disposifiables: Array<Disposifiable>
681
+ ): Array<Disposable>;
671
682
  useWhileConnected(disposifiable: undefined): undefined;
672
683
  useWhileConnected(disposifiable: null): null;
673
684
  useWhileConnected(disposifiable: Disposifiable): Disposable;
@@ -677,7 +688,15 @@ export abstract class Component
677
688
  ): Disposable | null | undefined;
678
689
  useWhileConnected(
679
690
  disposifiable: Disposifiable | null | undefined,
680
- ): Disposable | null | undefined {
691
+ ...disposifiables: Array<Disposifiable>
692
+ ): Array<Disposable> | Disposable | null | undefined {
693
+ if (disposifiables.length > 0) {
694
+ return [disposifiable, ...disposifiables].map((d) => {
695
+ const disposable = toDisposable(present(d));
696
+ this.#connectedContext.use(disposable);
697
+ return disposable;
698
+ });
699
+ }
681
700
  if (isNullish(disposifiable)) {
682
701
  return disposifiable;
683
702
  }