@bodil/dom 0.1.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 (82) hide show
  1. package/LICENCE.md +288 -0
  2. package/dist/component.d.ts +147 -0
  3. package/dist/component.js +405 -0
  4. package/dist/component.js.map +1 -0
  5. package/dist/component.test.d.ts +1 -0
  6. package/dist/component.test.js +141 -0
  7. package/dist/component.test.js.map +1 -0
  8. package/dist/css.d.ts +14 -0
  9. package/dist/css.js +63 -0
  10. package/dist/css.js.map +1 -0
  11. package/dist/decorators/attribute.d.ts +26 -0
  12. package/dist/decorators/attribute.js +115 -0
  13. package/dist/decorators/attribute.js.map +1 -0
  14. package/dist/decorators/attribute.test.d.ts +1 -0
  15. package/dist/decorators/attribute.test.js +148 -0
  16. package/dist/decorators/attribute.test.js.map +1 -0
  17. package/dist/decorators/connect.d.ts +9 -0
  18. package/dist/decorators/connect.js +44 -0
  19. package/dist/decorators/connect.js.map +1 -0
  20. package/dist/decorators/connect.test.d.ts +1 -0
  21. package/dist/decorators/connect.test.js +196 -0
  22. package/dist/decorators/connect.test.js.map +1 -0
  23. package/dist/decorators/reactive.d.ts +7 -0
  24. package/dist/decorators/reactive.js +45 -0
  25. package/dist/decorators/reactive.js.map +1 -0
  26. package/dist/decorators/reactive.test.d.ts +1 -0
  27. package/dist/decorators/reactive.test.js +113 -0
  28. package/dist/decorators/reactive.test.js.map +1 -0
  29. package/dist/decorators/require.d.ts +3 -0
  30. package/dist/decorators/require.js +6 -0
  31. package/dist/decorators/require.js.map +1 -0
  32. package/dist/decorators/require.test.d.ts +1 -0
  33. package/dist/decorators/require.test.js +117 -0
  34. package/dist/decorators/require.test.js.map +1 -0
  35. package/dist/dom.d.ts +92 -0
  36. package/dist/dom.js +354 -0
  37. package/dist/dom.js.map +1 -0
  38. package/dist/emitter.d.ts +10 -0
  39. package/dist/emitter.js +17 -0
  40. package/dist/emitter.js.map +1 -0
  41. package/dist/event.d.ts +70 -0
  42. package/dist/event.js +14 -0
  43. package/dist/event.js.map +1 -0
  44. package/dist/event.test.d.ts +1 -0
  45. package/dist/event.test.js +20 -0
  46. package/dist/event.test.js.map +1 -0
  47. package/dist/geometry.d.ts +48 -0
  48. package/dist/geometry.js +117 -0
  49. package/dist/geometry.js.map +1 -0
  50. package/dist/index.d.ts +10 -0
  51. package/dist/index.js +11 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/scheduler.d.ts +2 -0
  54. package/dist/scheduler.js +54 -0
  55. package/dist/scheduler.js.map +1 -0
  56. package/dist/slot.d.ts +31 -0
  57. package/dist/slot.js +67 -0
  58. package/dist/slot.js.map +1 -0
  59. package/dist/test-global.d.ts +0 -0
  60. package/dist/test-global.js +5 -0
  61. package/dist/test-global.js.map +1 -0
  62. package/package.json +116 -0
  63. package/src/component.test.ts +90 -0
  64. package/src/component.ts +607 -0
  65. package/src/css.ts +69 -0
  66. package/src/decorators/attribute.test.ts +77 -0
  67. package/src/decorators/attribute.ts +197 -0
  68. package/src/decorators/connect.test.ts +119 -0
  69. package/src/decorators/connect.ts +85 -0
  70. package/src/decorators/reactive.test.ts +45 -0
  71. package/src/decorators/reactive.ts +80 -0
  72. package/src/decorators/require.test.ts +57 -0
  73. package/src/decorators/require.ts +11 -0
  74. package/src/dom.ts +456 -0
  75. package/src/emitter.ts +32 -0
  76. package/src/event.test.ts +22 -0
  77. package/src/event.ts +74 -0
  78. package/src/geometry.ts +147 -0
  79. package/src/index.ts +12 -0
  80. package/src/scheduler.ts +58 -0
  81. package/src/slot.ts +95 -0
  82. package/src/test-global.ts +5 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../../src/decorators/reactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEvD,MAAM,WAAW,GAAG,IAAI,OAAO,EAAgD,CAAC;AAEhF,MAAM,UAAU,eAAe,CAC3B,GAAW,EACX,GAAoB,EACpB,YAAmC;IAEnC,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,GAAG,EAAE,CAAC;QACV,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAChB,OAAO,GAAG,CAAC;AACf,CAAC;AAcD,MAAM,UAAU,QAAQ,CACpB,KAAiE,EACjE,OAGsC;IAEtC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC3B,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CACpC,MAAM,CAAE,KAAkD,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACtE,MAAM,EAAE,MAAM,CAAC,EAAE;aACpB,CAAC,CACc,CAAC;YACzB,OAAO;gBACH,GAAG;oBACC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC9B,CAAC;gBACD,GAAG,CAAC,KAAQ;oBACR,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;aACJ,CAAC;QACN,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAC3B,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAE,KAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAC7E,CAAC;YACN,OAAO,SAAS,GAAG;gBACf,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAO,CAAC;YACnC,CAAC,CAAC;QACN,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,EAAmB,CAAC;YAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7E,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,113 @@
1
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
2
+ var useValue = arguments.length > 2;
3
+ for (var i = 0; i < initializers.length; i++) {
4
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
5
+ }
6
+ return useValue ? value : void 0;
7
+ };
8
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
9
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
10
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
11
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
12
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
13
+ var _, done = false;
14
+ for (var i = decorators.length - 1; i >= 0; i--) {
15
+ var context = {};
16
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
17
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
18
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
19
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
20
+ if (kind === "accessor") {
21
+ if (result === void 0) continue;
22
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
23
+ if (_ = accept(result.get)) descriptor.get = _;
24
+ if (_ = accept(result.set)) descriptor.set = _;
25
+ if (_ = accept(result.init)) initializers.unshift(_);
26
+ }
27
+ else if (_ = accept(result)) {
28
+ if (kind === "field") initializers.unshift(_);
29
+ else descriptor[key] = _;
30
+ }
31
+ }
32
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
+ done = true;
34
+ };
35
+ import { Signal } from "@bodil/signal";
36
+ import { expect, test } from "vitest";
37
+ import { Component, reactive } from "../component";
38
+ import { customElement } from "lit/decorators.js";
39
+ test("@reactive", () => {
40
+ const name = Signal("Joe");
41
+ let ReactiveTestClass = (() => {
42
+ let _instanceExtraInitializers = [];
43
+ let _get_name_decorators;
44
+ let _counter_decorators;
45
+ let _counter_initializers = [];
46
+ let _counter_extraInitializers = [];
47
+ return class ReactiveTestClass {
48
+ static {
49
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
50
+ _get_name_decorators = [reactive];
51
+ _counter_decorators = [reactive];
52
+ __esDecorate(this, null, _get_name_decorators, { kind: "getter", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name }, metadata: _metadata }, null, _instanceExtraInitializers);
53
+ __esDecorate(this, null, _counter_decorators, { kind: "accessor", name: "counter", static: false, private: false, access: { has: obj => "counter" in obj, get: obj => obj.counter, set: (obj, value) => { obj.counter = value; } }, metadata: _metadata }, _counter_initializers, _counter_extraInitializers);
54
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
55
+ }
56
+ get name() {
57
+ return name.get();
58
+ }
59
+ accessor counter = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _counter_initializers, 0));
60
+ constructor() {
61
+ __runInitializers(this, _counter_extraInitializers);
62
+ }
63
+ };
64
+ })();
65
+ const instance = new ReactiveTestClass();
66
+ expect(instance.name).toBe("Joe");
67
+ name.set("Robert");
68
+ expect(instance.name).toBe("Robert");
69
+ const counter = Signal.computed(() => instance.counter);
70
+ expect(counter.get()).toBe(0);
71
+ instance.counter += 5;
72
+ expect(counter.get()).toBe(5);
73
+ });
74
+ test("@reactive Component fields", () => {
75
+ let ReactiveTestClass = (() => {
76
+ let _classDecorators = [customElement("reactive-test-class")];
77
+ let _classDescriptor;
78
+ let _classExtraInitializers = [];
79
+ let _classThis;
80
+ let _classSuper = Component;
81
+ let _name_decorators;
82
+ let _name_initializers = [];
83
+ let _name_extraInitializers = [];
84
+ var ReactiveTestClass = class extends _classSuper {
85
+ static { _classThis = this; }
86
+ static {
87
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
88
+ _name_decorators = [reactive];
89
+ __esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
90
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
91
+ ReactiveTestClass = _classThis = _classDescriptor.value;
92
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
93
+ __runInitializers(_classThis, _classExtraInitializers);
94
+ }
95
+ constructor() {
96
+ super(...arguments);
97
+ this.name = __runInitializers(this, _name_initializers, void 0);
98
+ __runInitializers(this, _name_extraInitializers);
99
+ }
100
+ };
101
+ return ReactiveTestClass = _classThis;
102
+ })();
103
+ // const instance = new ReactiveTestClass();
104
+ const instance = document.createElement("reactive-test-class");
105
+ instance.$signal("name");
106
+ const name = Signal.computed(() => instance.name);
107
+ expect(instance.name).toBeUndefined();
108
+ expect(name.get()).toBeUndefined();
109
+ instance.name = "Joe";
110
+ expect(instance.name).toBe("Joe");
111
+ expect(name.get()).toBe("Joe");
112
+ });
113
+ //# sourceMappingURL=reactive.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive.test.js","sourceRoot":"","sources":["../../src/decorators/reactive.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IACnB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,iBAAiB;;;;;;qBAAjB,iBAAiB;;;wCAClB,QAAQ;uCAIR,QAAQ;gBAJC,mKAAI,IAAI,6DAEjB;gBAES,0KAAS,OAAO,6BAAP,OAAO,yFAAK;;;YAJrB,IAAI,IAAI;gBACd,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,CAAC;YAES,QAAQ,CAAC,OAAO,IALxB,mDAAiB,iDAKU,CAAC,GAAC;;;;;;IAGnC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEzC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;IACtB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAE9B,iBAAiB;gCADtB,aAAa,CAAC,qBAAqB,CAAC;;;;0BACL,SAAS;;;;qCAAjB,SAAQ,WAAS;;;;oCACpC,QAAQ;gBAAC,8JAAA,IAAI,6BAAJ,IAAI,mFAAU;gBAD5B,6KAEC;;;gBAFK,uDAAiB;;;;gBACT,SAAI,uDAAU;;;;;;IAG5B,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAsB,CAAC;IACpF,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACnC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC;IACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Component } from "../component";
2
+ export declare const requiredProperties: unique symbol;
3
+ export declare function require<C extends Component, T>(_value: unknown, context: ClassFieldDecoratorContext<C, T> | ClassAccessorDecoratorContext<C, T>): undefined;
@@ -0,0 +1,6 @@
1
+ export const requiredProperties = Symbol("requiredProperties");
2
+ export function require(_value, context) {
3
+ context.metadata[requiredProperties] ??= new Set();
4
+ context.metadata[requiredProperties].add(context.name);
5
+ }
6
+ //# sourceMappingURL=require.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require.js","sourceRoot":"","sources":["../../src/decorators/require.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAE/D,MAAM,UAAU,OAAO,CACnB,MAAe,EACf,OAA+E;IAE/E,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,117 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { sleep } from "@bodil/core/async";
36
+ import { customElement } from "lit/decorators.js";
37
+ import { expect, test } from "vitest";
38
+ import { attribute, Component, reactive, require } from "../component";
39
+ test("@require", async () => {
40
+ let inits = 0, updates = 0;
41
+ let RequireTestClass = (() => {
42
+ let _classDecorators = [customElement("require-test-class")];
43
+ let _classDescriptor;
44
+ let _classExtraInitializers = [];
45
+ let _classThis;
46
+ let _classSuper = Component;
47
+ let _foo_decorators;
48
+ let _foo_initializers = [];
49
+ let _foo_extraInitializers = [];
50
+ let _bar_decorators;
51
+ let _bar_initializers = [];
52
+ let _bar_extraInitializers = [];
53
+ var RequireTestClass = class extends _classSuper {
54
+ static { _classThis = this; }
55
+ static {
56
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
57
+ _foo_decorators = [require, reactive];
58
+ _bar_decorators = [require, attribute];
59
+ __esDecorate(this, null, _bar_decorators, { kind: "accessor", name: "bar", static: false, private: false, access: { has: obj => "bar" in obj, get: obj => obj.bar, set: (obj, value) => { obj.bar = value; } }, metadata: _metadata }, _bar_initializers, _bar_extraInitializers);
60
+ __esDecorate(null, null, _foo_decorators, { kind: "field", name: "foo", static: false, private: false, access: { has: obj => "foo" in obj, get: obj => obj.foo, set: (obj, value) => { obj.foo = value; } }, metadata: _metadata }, _foo_initializers, _foo_extraInitializers);
61
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
62
+ RequireTestClass = _classThis = _classDescriptor.value;
63
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
64
+ __runInitializers(_classThis, _classExtraInitializers);
65
+ }
66
+ #bar_accessor_storage;
67
+ get bar() { return this.#bar_accessor_storage; }
68
+ set bar(value) { this.#bar_accessor_storage = value; }
69
+ initialised() {
70
+ inits++;
71
+ }
72
+ updated() {
73
+ updates++;
74
+ }
75
+ constructor() {
76
+ super(...arguments);
77
+ this.foo = __runInitializers(this, _foo_initializers, void 0);
78
+ this.#bar_accessor_storage = (__runInitializers(this, _foo_extraInitializers), __runInitializers(this, _bar_initializers, void 0));
79
+ __runInitializers(this, _bar_extraInitializers);
80
+ }
81
+ };
82
+ return RequireTestClass = _classThis;
83
+ })();
84
+ const c = document.createElement("require-test-class");
85
+ c.foo = "foo";
86
+ document.body.append(c);
87
+ await sleep(1);
88
+ // no updates yet when only foo is set
89
+ expect(inits).toBe(0);
90
+ expect(updates).toBe(0);
91
+ c.bar = "bar";
92
+ await sleep(1);
93
+ // foo and bar are both set, should cause an update
94
+ expect(inits).toBe(1);
95
+ expect(updates).toBe(1);
96
+ c.foo = undefined;
97
+ await sleep(1);
98
+ // foo has gone undefined, shouldn't update
99
+ expect(inits).toBe(1);
100
+ expect(updates).toBe(1);
101
+ c.foo = "wibble";
102
+ await sleep(1);
103
+ // foo has stopped being undefined, should update
104
+ expect(inits).toBe(2);
105
+ expect(updates).toBe(2);
106
+ c.bar = "bar";
107
+ await sleep(1);
108
+ // bar has been redeclared with the same value, shouldn't update
109
+ expect(inits).toBe(2);
110
+ expect(updates).toBe(2);
111
+ c.bar = "wibble";
112
+ await sleep(1);
113
+ // bar has a new value, should update
114
+ expect(inits).toBe(3);
115
+ expect(updates).toBe(3);
116
+ });
117
+ //# sourceMappingURL=require.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require.test.js","sourceRoot":"","sources":["../../src/decorators/require.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvE,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;IACxB,IAAI,KAAK,GAAG,CAAC,EACT,OAAO,GAAG,CAAC,CAAC;QAGV,gBAAgB;gCADrB,aAAa,CAAC,oBAAoB,CAAC;;;;0BACL,SAAS;;;;;;;oCAAjB,SAAQ,WAAS;;;;mCACnC,OAAO,EAAE,QAAQ;mCACjB,OAAO,EAAE,SAAS;gBAAC,8JAAS,GAAG,6BAAH,GAAG,iFAAqB;gBADlC,2JAAA,GAAG,6BAAH,GAAG,iFAAU;gBADpC,6KAWC;;;gBAXK,uDAAgB;;YAEE,sBAAiC;YAAjC,IAAS,GAAG,yCAAqB;YAAjC,IAAS,GAAG,+CAAqB;YAElC,WAAW;gBAC1B,KAAK,EAAE,CAAC;YACZ,CAAC;YAEkB,OAAO;gBACtB,OAAO,EAAE,CAAC;YACd,CAAC;;;gBATkB,QAAG,sDAAU;gBACH,mIAAwB;;;;;;IAWzD,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAqB,CAAC;IAC3E,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;IACd,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;IACf,sCAAsC;IACtC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;IACd,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;IACf,mDAAmD;IACnD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC;IAClB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;IACf,2CAA2C;IAC3C,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC;IACjB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;IACf,iDAAiD;IACjD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;IACd,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;IACf,gEAAgE;IAChE,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC;IACjB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;IACf,qCAAqC;IACrC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC"}
package/dist/dom.d.ts ADDED
@@ -0,0 +1,92 @@
1
+ import type { ReactiveController, ReactiveControllerHost } from "lit";
2
+ import type { Pixels } from "./css";
3
+ /**
4
+ * Given the name of a custom DOM element registered in
5
+ * {@link Window.customElements}, test whether an object is an instance of that
6
+ * element.
7
+ *
8
+ * The element must also be declared in {@link HTMLElementTagNameMap} for the
9
+ * type checker to follow along.
10
+ */
11
+ export declare function isElement<Name extends keyof HTMLElementTagNameMap>(name: Name, item: unknown): item is HTMLElementTagNameMap[Name];
12
+ /**
13
+ * Call {@link window.requestAnimationFrame} with the provided callback and return a
14
+ * {@link Disposable} which will cancel the request when disposed.
15
+ */
16
+ export declare function animationFrame(fn: (time: number) => void): Disposable;
17
+ /**
18
+ * Return a promise which will resolve when the next animation frame happens.
19
+ */
20
+ export declare function awaitFrame(): Promise<void>;
21
+ export declare function intersectionObserver(element: Element, callback: IntersectionObserverCallback, options?: IntersectionObserverInit): Disposable;
22
+ export declare function resizeObserver(element: Element, callback: ResizeObserverCallback, options?: ResizeObserverOptions): Disposable;
23
+ export declare function visibilityObserver(element: Element, callback: (oldState: boolean, newState: boolean) => void): Disposable;
24
+ export declare class DOMIterator extends Iterator<Node> {
25
+ private currentNode;
26
+ private goingForward;
27
+ constructor(startNode: Node | null);
28
+ reverse(): this;
29
+ skip(): this;
30
+ next(): IteratorResult<Node>;
31
+ }
32
+ export declare function childElements(parent: Element | DocumentFragment | null): IteratorObject<Element>;
33
+ /** Test whether the user has asked for reduced motion. */
34
+ export declare function prefersReducedMotion(): boolean;
35
+ /**
36
+ * Animates an element using keyframes. Returns a promise that resolves after
37
+ * the animation completes or gets cancelled.
38
+ */
39
+ export declare function animateTo(el: HTMLElement, keyframes: Array<Keyframe>, options?: KeyframeAnimationOptions): Promise<void>;
40
+ /**
41
+ * Stops all active animations on the target element. Returns a promise that
42
+ * resolves after all animations are cancelled.
43
+ */
44
+ export declare function stopAnimations(el: HTMLElement): Promise<void>;
45
+ /**
46
+ * Wait for any animations running on the element to complete.
47
+ */
48
+ export declare function animationEnd(el: HTMLElement): Promise<void>;
49
+ /**
50
+ * Check if any animations are currently active on an element.
51
+ */
52
+ export declare function isAnimating(el: HTMLElement): boolean;
53
+ export declare function findEventTarget<T extends EventTarget>(e: Event, predicate: (target: EventTarget) => target is T): T | null;
54
+ /**
55
+ * Dig through shadow roots to find the actual element that currently has focus.
56
+ * If nothing has focus in or below the given root, return undefined.
57
+ */
58
+ export declare function findActiveElement(root?: Document | ShadowRoot | null): Element | undefined;
59
+ /**
60
+ * As {@link findActiveElement}, but returns a list of the active elements as
61
+ * seen by each {@link Document} and {@link ShadowRoot} down to the actually
62
+ * active element.
63
+ */
64
+ export declare function activeElementPath(root?: Document | ShadowRoot | null): Array<Element> | undefined;
65
+ /**
66
+ * Find the first ancestor of the given `child` element matching the provided
67
+ * `predicate` function, walking up through shadow root boundaries.
68
+ */
69
+ export declare function findAncestor<T extends Element>(child: Element | null | undefined, predicate: (el: Element) => el is T): T | undefined;
70
+ export declare function findAncestor(child: Element | null | undefined, predicate: (el: Element) => boolean): Element | undefined;
71
+ export declare function isEditor(element: Element | null | undefined): boolean;
72
+ export type ScrollAlign = "start" | "end" | "center" | "fit";
73
+ export type ScrollToItemOptions = {
74
+ viewport: HTMLElement;
75
+ axis: "horizontal" | "vertical";
76
+ align: ScrollAlign;
77
+ behavior?: ScrollBehavior;
78
+ padStart?: Pixels;
79
+ padEnd?: Pixels;
80
+ };
81
+ export declare function scrollToItem(el: HTMLElement, scrollToItemOptions: ScrollToItemOptions): void;
82
+ export declare class HasSlotController implements ReactiveController {
83
+ host: ReactiveControllerHost & Element;
84
+ slotNames: Array<string>;
85
+ constructor(host: ReactiveControllerHost & Element, ...slotNames: Array<string>);
86
+ private hasDefaultSlot;
87
+ private hasNamedSlot;
88
+ test(slotName: string): boolean;
89
+ hostConnected(): void;
90
+ hostDisconnected(): void;
91
+ handleSlotChange: (event: Event) => void;
92
+ }