@joist/element 3.0.1-canary.1684071270.0 → 3.0.4

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 (52) hide show
  1. package/README.md +15 -8
  2. package/package.json +9 -3
  3. package/src/lib/attr.test.ts +80 -0
  4. package/src/lib/attr.ts +91 -0
  5. package/src/lib/listen.ts +14 -0
  6. package/src/lib/result.ts +27 -0
  7. package/src/lib/shadow.test.ts +40 -0
  8. package/src/lib/shadow.ts +18 -0
  9. package/src/lib/tag-name.test.ts +11 -0
  10. package/src/lib/tag-name.ts +11 -0
  11. package/src/lib/tags.test.ts +28 -0
  12. package/src/lib/tags.ts +94 -0
  13. package/src/lib.ts +6 -0
  14. package/target/lib/attr.d.ts +1 -1
  15. package/target/lib/attr.js +25 -26
  16. package/target/lib/attr.js.map +1 -1
  17. package/target/lib/attr.test.js +140 -84
  18. package/target/lib/attr.test.js.map +1 -1
  19. package/target/lib/listen.d.ts +1 -1
  20. package/target/lib/listen.js +3 -6
  21. package/target/lib/listen.js.map +1 -1
  22. package/target/lib/result.d.ts +7 -5
  23. package/target/lib/result.js +15 -16
  24. package/target/lib/result.js.map +1 -1
  25. package/target/lib/shadow.d.ts +2 -0
  26. package/target/lib/shadow.js +12 -0
  27. package/target/lib/shadow.js.map +1 -0
  28. package/target/lib/{template.test.js → shadow.test.js} +18 -12
  29. package/target/lib/shadow.test.js.map +1 -0
  30. package/target/lib/tag-name.d.ts +1 -0
  31. package/target/lib/{define.js → tag-name.js} +3 -3
  32. package/target/lib/tag-name.js.map +1 -0
  33. package/target/lib/tag-name.test.d.ts +1 -0
  34. package/target/lib/tag-name.test.js +24 -0
  35. package/target/lib/tag-name.test.js.map +1 -0
  36. package/target/lib/tags.d.ts +20 -6
  37. package/target/lib/tags.js +41 -13
  38. package/target/lib/tags.js.map +1 -1
  39. package/target/lib/tags.test.d.ts +1 -0
  40. package/target/lib/tags.test.js +23 -0
  41. package/target/lib/tags.test.js.map +1 -0
  42. package/target/lib.d.ts +4 -4
  43. package/target/lib.js +4 -4
  44. package/target/lib.js.map +1 -1
  45. package/target/lib/define.d.ts +0 -1
  46. package/target/lib/define.js.map +0 -1
  47. package/target/lib/template.d.ts +0 -3
  48. package/target/lib/template.js +0 -25
  49. package/target/lib/template.js.map +0 -1
  50. package/target/lib/template.test.js.map +0 -1
  51. package/target/tsconfig.tsbuildinfo +0 -1
  52. /package/target/lib/{template.test.d.ts → shadow.test.d.ts} +0 -0
@@ -4,119 +4,175 @@ import { attr } from './attr.js';
4
4
  describe('observable: attr()', () => {
5
5
  it('should write default value to attribute', async () => {
6
6
  let MyElement = (() => {
7
+ let _classSuper = HTMLElement;
7
8
  let _instanceExtraInitializers = [];
8
- let _hello_decorators;
9
- let _hello_initializers = [];
10
- return class MyElement extends HTMLElement {
9
+ let _value1_decorators;
10
+ let _value1_initializers = [];
11
+ let _value2_decorators;
12
+ let _value2_initializers = [];
13
+ let _value3_decorators;
14
+ let _value3_initializers = [];
15
+ return class MyElement extends _classSuper {
11
16
  static {
12
- _hello_decorators = [attr];
13
- __esDecorate(this, null, _hello_decorators, { kind: "accessor", name: "hello", static: false, private: false, access: { has: obj => "hello" in obj, get: obj => obj.hello, set: (obj, value) => { obj.hello = value; } } }, _hello_initializers, _instanceExtraInitializers);
17
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
18
+ _value1_decorators = [attr];
19
+ _value2_decorators = [attr];
20
+ _value3_decorators = [attr];
21
+ __esDecorate(this, null, _value1_decorators, { kind: "accessor", name: "value1", static: false, private: false, access: { has: obj => "value1" in obj, get: obj => obj.value1, set: (obj, value) => { obj.value1 = value; } }, metadata: _metadata }, _value1_initializers, _instanceExtraInitializers);
22
+ __esDecorate(this, null, _value2_decorators, { kind: "accessor", name: "value2", static: false, private: false, access: { has: obj => "value2" in obj, get: obj => obj.value2, set: (obj, value) => { obj.value2 = value; } }, metadata: _metadata }, _value2_initializers, _instanceExtraInitializers);
23
+ __esDecorate(this, null, _value3_decorators, { kind: "accessor", name: "value3", static: false, private: false, access: { has: obj => "value3" in obj, get: obj => obj.value3, set: (obj, value) => { obj.value3 = value; } }, metadata: _metadata }, _value3_initializers, _instanceExtraInitializers);
24
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
14
25
  }
15
- #hello_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _hello_initializers, 'world'));
16
- get hello() { return this.#hello_accessor_storage; }
17
- set hello(value) { this.#hello_accessor_storage = value; }
26
+ #value1_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value1_initializers, 'hello'));
27
+ get value1() { return this.#value1_accessor_storage; }
28
+ set value1(value) { this.#value1_accessor_storage = value; }
29
+ #value2_accessor_storage = __runInitializers(this, _value2_initializers, 0);
30
+ get value2() { return this.#value2_accessor_storage; }
31
+ set value2(value) { this.#value2_accessor_storage = value; }
32
+ #value3_accessor_storage = __runInitializers(this, _value3_initializers, true);
33
+ get value3() { return this.#value3_accessor_storage; }
34
+ set value3(value) { this.#value3_accessor_storage = value; }
18
35
  };
19
36
  })();
20
37
  customElements.define('attr-test-1', MyElement);
21
38
  const el = await fixture(html `<attr-test-1></attr-test-1>`);
22
- expect(el.getAttribute('hello')).to.equal('world');
39
+ expect(el.getAttribute('value1')).to.equal('hello');
40
+ expect(el.getAttribute('value2')).to.equal('0');
41
+ expect(el.getAttribute('value3')).to.equal('');
23
42
  });
24
- it('should read default value from attribute', async () => {
43
+ it('should read and parse the correct values', async () => {
25
44
  let MyElement = (() => {
26
- let _instanceExtraInitializers_1 = [];
27
- let _hello_decorators;
28
- let _hello_initializers = [];
29
- return class MyElement extends HTMLElement {
45
+ let _classSuper = HTMLElement;
46
+ let _instanceExtraInitializers = [];
47
+ let _value1_decorators;
48
+ let _value1_initializers = [];
49
+ let _value2_decorators;
50
+ let _value2_initializers = [];
51
+ let _value3_decorators;
52
+ let _value3_initializers = [];
53
+ let _value4_decorators;
54
+ let _value4_initializers = [];
55
+ return class MyElement extends _classSuper {
30
56
  static {
31
- _hello_decorators = [attr];
32
- __esDecorate(this, null, _hello_decorators, { kind: "accessor", name: "hello", static: false, private: false, access: { has: obj => "hello" in obj, get: obj => obj.hello, set: (obj, value) => { obj.hello = value; } } }, _hello_initializers, _instanceExtraInitializers_1);
57
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
58
+ _value1_decorators = [attr];
59
+ _value2_decorators = [attr];
60
+ _value3_decorators = [attr];
61
+ _value4_decorators = [attr];
62
+ __esDecorate(this, null, _value1_decorators, { kind: "accessor", name: "value1", static: false, private: false, access: { has: obj => "value1" in obj, get: obj => obj.value1, set: (obj, value) => { obj.value1 = value; } }, metadata: _metadata }, _value1_initializers, _instanceExtraInitializers);
63
+ __esDecorate(this, null, _value2_decorators, { kind: "accessor", name: "value2", static: false, private: false, access: { has: obj => "value2" in obj, get: obj => obj.value2, set: (obj, value) => { obj.value2 = value; } }, metadata: _metadata }, _value2_initializers, _instanceExtraInitializers);
64
+ __esDecorate(this, null, _value3_decorators, { kind: "accessor", name: "value3", static: false, private: false, access: { has: obj => "value3" in obj, get: obj => obj.value3, set: (obj, value) => { obj.value3 = value; } }, metadata: _metadata }, _value3_initializers, _instanceExtraInitializers);
65
+ __esDecorate(this, null, _value4_decorators, { kind: "accessor", name: "value4", static: false, private: false, access: { has: obj => "value4" in obj, get: obj => obj.value4, set: (obj, value) => { obj.value4 = value; } }, metadata: _metadata }, _value4_initializers, _instanceExtraInitializers);
66
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
33
67
  }
34
- #hello_accessor_storage = (__runInitializers(this, _instanceExtraInitializers_1), __runInitializers(this, _hello_initializers, 'world'));
35
- get hello() { return this.#hello_accessor_storage; }
36
- set hello(value) { this.#hello_accessor_storage = value; }
68
+ #value1_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value1_initializers, 100));
69
+ get value1() { return this.#value1_accessor_storage; }
70
+ set value1(value) { this.#value1_accessor_storage = value; }
71
+ #value2_accessor_storage = __runInitializers(this, _value2_initializers, 0);
72
+ get value2() { return this.#value2_accessor_storage; }
73
+ set value2(value) { this.#value2_accessor_storage = value; }
74
+ #value3_accessor_storage = __runInitializers(this, _value3_initializers, false);
75
+ get value3() { return this.#value3_accessor_storage; }
76
+ set value3(value) { this.#value3_accessor_storage = value; }
77
+ #value4_accessor_storage = __runInitializers(this, _value4_initializers, 'hello');
78
+ get value4() { return this.#value4_accessor_storage; }
79
+ set value4(value) { this.#value4_accessor_storage = value; }
37
80
  };
38
81
  })();
39
82
  customElements.define('attr-test-2', MyElement);
40
- const el = await fixture(html `<attr-test-2 hello="foo"></attr-test-2>`);
41
- expect(el.hello).to.equal('foo');
83
+ const el = await fixture(html `<attr-test-2 value2="2" value3 value4="world"></attr-test-2>`);
84
+ expect(el.value1).to.equal(100);
85
+ expect(el.value2).to.equal(2);
86
+ expect(el.value3).to.equal(true);
87
+ expect(el.value4).to.equal('world');
42
88
  });
43
- it('should write boolean attr values', async () => {
89
+ it('should not write falsy props to attributes', async () => {
44
90
  let MyElement = (() => {
45
- let _instanceExtraInitializers_2 = [];
46
- let _hello_decorators;
47
- let _hello_initializers = [];
48
- return class MyElement extends HTMLElement {
91
+ let _classSuper = HTMLElement;
92
+ let _instanceExtraInitializers = [];
93
+ let _value1_decorators;
94
+ let _value1_initializers = [];
95
+ let _value2_decorators;
96
+ let _value2_initializers = [];
97
+ let _value3_decorators;
98
+ let _value3_initializers = [];
99
+ return class MyElement extends _classSuper {
49
100
  static {
50
- _hello_decorators = [attr];
51
- __esDecorate(this, null, _hello_decorators, { kind: "accessor", name: "hello", static: false, private: false, access: { has: obj => "hello" in obj, get: obj => obj.hello, set: (obj, value) => { obj.hello = value; } } }, _hello_initializers, _instanceExtraInitializers_2);
101
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
102
+ _value1_decorators = [attr];
103
+ _value2_decorators = [attr];
104
+ _value3_decorators = [attr];
105
+ __esDecorate(this, null, _value1_decorators, { kind: "accessor", name: "value1", static: false, private: false, access: { has: obj => "value1" in obj, get: obj => obj.value1, set: (obj, value) => { obj.value1 = value; } }, metadata: _metadata }, _value1_initializers, _instanceExtraInitializers);
106
+ __esDecorate(this, null, _value2_decorators, { kind: "accessor", name: "value2", static: false, private: false, access: { has: obj => "value2" in obj, get: obj => obj.value2, set: (obj, value) => { obj.value2 = value; } }, metadata: _metadata }, _value2_initializers, _instanceExtraInitializers);
107
+ __esDecorate(this, null, _value3_decorators, { kind: "accessor", name: "value3", static: false, private: false, access: { has: obj => "value3" in obj, get: obj => obj.value3, set: (obj, value) => { obj.value3 = value; } }, metadata: _metadata }, _value3_initializers, _instanceExtraInitializers);
108
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
52
109
  }
53
- #hello_accessor_storage = (__runInitializers(this, _instanceExtraInitializers_2), __runInitializers(this, _hello_initializers, true));
54
- get hello() { return this.#hello_accessor_storage; }
55
- set hello(value) { this.#hello_accessor_storage = value; }
110
+ #value1_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value1_initializers, undefined));
111
+ get value1() { return this.#value1_accessor_storage; }
112
+ set value1(value) { this.#value1_accessor_storage = value; }
113
+ #value2_accessor_storage = __runInitializers(this, _value2_initializers, null);
114
+ get value2() { return this.#value2_accessor_storage; }
115
+ set value2(value) { this.#value2_accessor_storage = value; }
116
+ #value3_accessor_storage = __runInitializers(this, _value3_initializers, '');
117
+ get value3() { return this.#value3_accessor_storage; }
118
+ set value3(value) { this.#value3_accessor_storage = value; }
56
119
  };
57
120
  })();
58
121
  customElements.define('attr-test-3', MyElement);
59
122
  const el = await fixture(html `<attr-test-3></attr-test-3>`);
60
- expect(el.getAttribute('hello')).to.equal('');
61
- el.hello = false;
62
- expect(el.getAttribute('hello')).to.equal(null);
123
+ expect(el.hasAttribute('value1')).to.be.false;
124
+ expect(el.hasAttribute('value2')).to.be.false;
125
+ expect(el.hasAttribute('value3')).to.be.false;
63
126
  });
64
- it('should parse to boolean values', async () => {
127
+ it('should update attributes when props are changed', async () => {
65
128
  let MyElement = (() => {
66
- let _instanceExtraInitializers_3 = [];
67
- let _hello_decorators;
68
- let _hello_initializers = [];
69
- return class MyElement extends HTMLElement {
129
+ let _classSuper = HTMLElement;
130
+ let _instanceExtraInitializers = [];
131
+ let _value1_decorators;
132
+ let _value1_initializers = [];
133
+ let _value2_decorators;
134
+ let _value2_initializers = [];
135
+ let _value3_decorators;
136
+ let _value3_initializers = [];
137
+ let _value4_decorators;
138
+ let _value4_initializers = [];
139
+ return class MyElement extends _classSuper {
70
140
  static {
71
- _hello_decorators = [attr];
72
- __esDecorate(this, null, _hello_decorators, { kind: "accessor", name: "hello", static: false, private: false, access: { has: obj => "hello" in obj, get: obj => obj.hello, set: (obj, value) => { obj.hello = value; } } }, _hello_initializers, _instanceExtraInitializers_3);
141
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
142
+ _value1_decorators = [attr];
143
+ _value2_decorators = [attr];
144
+ _value3_decorators = [attr];
145
+ _value4_decorators = [attr];
146
+ __esDecorate(this, null, _value1_decorators, { kind: "accessor", name: "value1", static: false, private: false, access: { has: obj => "value1" in obj, get: obj => obj.value1, set: (obj, value) => { obj.value1 = value; } }, metadata: _metadata }, _value1_initializers, _instanceExtraInitializers);
147
+ __esDecorate(this, null, _value2_decorators, { kind: "accessor", name: "value2", static: false, private: false, access: { has: obj => "value2" in obj, get: obj => obj.value2, set: (obj, value) => { obj.value2 = value; } }, metadata: _metadata }, _value2_initializers, _instanceExtraInitializers);
148
+ __esDecorate(this, null, _value3_decorators, { kind: "accessor", name: "value3", static: false, private: false, access: { has: obj => "value3" in obj, get: obj => obj.value3, set: (obj, value) => { obj.value3 = value; } }, metadata: _metadata }, _value3_initializers, _instanceExtraInitializers);
149
+ __esDecorate(this, null, _value4_decorators, { kind: "accessor", name: "value4", static: false, private: false, access: { has: obj => "value4" in obj, get: obj => obj.value4, set: (obj, value) => { obj.value4 = value; } }, metadata: _metadata }, _value4_initializers, _instanceExtraInitializers);
150
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
73
151
  }
74
- #hello_accessor_storage = (__runInitializers(this, _instanceExtraInitializers_3), __runInitializers(this, _hello_initializers, false));
75
- get hello() { return this.#hello_accessor_storage; }
76
- set hello(value) { this.#hello_accessor_storage = value; }
152
+ #value1_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value1_initializers, 'hello'));
153
+ get value1() { return this.#value1_accessor_storage; }
154
+ set value1(value) { this.#value1_accessor_storage = value; }
155
+ #value2_accessor_storage = __runInitializers(this, _value2_initializers, 0);
156
+ get value2() { return this.#value2_accessor_storage; }
157
+ set value2(value) { this.#value2_accessor_storage = value; }
158
+ #value3_accessor_storage = __runInitializers(this, _value3_initializers, true);
159
+ get value3() { return this.#value3_accessor_storage; }
160
+ set value3(value) { this.#value3_accessor_storage = value; }
161
+ #value4_accessor_storage = __runInitializers(this, _value4_initializers, false);
162
+ get value4() { return this.#value4_accessor_storage; }
163
+ set value4(value) { this.#value4_accessor_storage = value; }
77
164
  };
78
165
  })();
79
166
  customElements.define('attr-test-4', MyElement);
80
- const el = await fixture(html `<attr-test-4 hello></attr-test-4>`);
81
- expect(el.hello).to.equal(true);
82
- });
83
- it('should read attributes as number if prop is of type number', async () => {
84
- let MyElement = (() => {
85
- let _instanceExtraInitializers_4 = [];
86
- let _value_decorators;
87
- let _value_initializers = [];
88
- return class MyElement extends HTMLElement {
89
- static {
90
- _value_decorators = [attr];
91
- __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } } }, _value_initializers, _instanceExtraInitializers_4);
92
- }
93
- #value_accessor_storage = (__runInitializers(this, _instanceExtraInitializers_4), __runInitializers(this, _value_initializers, 0));
94
- get value() { return this.#value_accessor_storage; }
95
- set value(value) { this.#value_accessor_storage = value; }
96
- };
97
- })();
98
- customElements.define('attr-test-5', MyElement);
99
- const el = await fixture(html `<attr-test-5 value="100"></attr-test-5>`);
100
- expect(el.value).to.equal(100);
101
- });
102
- it('should NOT read attributes as number if prop is of type string', async () => {
103
- let MyElement = (() => {
104
- let _instanceExtraInitializers_5 = [];
105
- let _value_decorators;
106
- let _value_initializers = [];
107
- return class MyElement extends HTMLElement {
108
- static {
109
- _value_decorators = [attr];
110
- __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } } }, _value_initializers, _instanceExtraInitializers_5);
111
- }
112
- #value_accessor_storage = (__runInitializers(this, _instanceExtraInitializers_5), __runInitializers(this, _value_initializers, '0'));
113
- get value() { return this.#value_accessor_storage; }
114
- set value(value) { this.#value_accessor_storage = value; }
115
- };
116
- })();
117
- customElements.define('attr-test-6', MyElement);
118
- const el = await fixture(html `<attr-test-6 value="100"></attr-test-6>`);
119
- expect(el.value).to.equal('100');
167
+ const el = await fixture(html `<attr-test-4></attr-test-4>`);
168
+ el.value1 = 'world';
169
+ el.value2 = 100;
170
+ el.value3 = false;
171
+ el.value4 = true;
172
+ expect(el.getAttribute('value1')).to.equal('world');
173
+ expect(el.getAttribute('value2')).to.equal('100');
174
+ expect(el.hasAttribute('value3')).to.be.false;
175
+ expect(el.hasAttribute('value4')).to.be.true;
120
176
  });
121
177
  });
122
178
  //# sourceMappingURL=attr.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attr.test.js","sourceRoot":"","sources":["../../src/lib/attr.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attr.test.js","sourceRoot":"","sources":["../../src/lib/attr.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare function listen<This extends HTMLElement>(event: string): (value: (e: Event) => void, ctx: ClassMethodDecoratorContext<This>) => void;
1
+ export declare function listen<This extends HTMLElement>(event: string, root?: (el: This) => ShadowRoot | This): (value: (e: Event) => void, ctx: ClassMethodDecoratorContext<This>) => void;
@@ -1,11 +1,8 @@
1
- export function listen(event) {
1
+ export function listen(event, root = (el) => el.shadowRoot || el) {
2
2
  return (value, ctx) => {
3
3
  ctx.addInitializer(function () {
4
- // method initializers are run before fields and accessors.
5
- // we want to wait till after all have run so we can check if there is a shadowRoot or not.
6
- setTimeout(() => {
7
- const root = this.shadowRoot || this;
8
- root.addEventListener(event, value.bind(this));
4
+ Promise.resolve().then(() => {
5
+ root(this).addEventListener(event, value.bind(this));
9
6
  });
10
7
  });
11
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"listen.js","sourceRoot":"","sources":["../../src/lib/listen.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAA2B,KAAa;IAC5D,OAAO,CAAC,KAAyB,EAAE,GAAsC,EAAE,EAAE;QAC3E,GAAG,CAAC,cAAc,CAAC;YACjB,2DAA2D;YAC3D,2FAA2F;YAC3F,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;gBAErC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"listen.js","sourceRoot":"","sources":["../../src/lib/listen.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CACpB,KAAa,EACb,OAAwC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE;IAEnE,OAAO,CAAC,KAAyB,EAAE,GAAsC,EAAE,EAAE;QAC3E,GAAG,CAAC,cAAc,CAAC;YAGjB,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,7 +1,9 @@
1
- export declare abstract class Result<T> {
1
+ export declare abstract class ShadowResult {
2
2
  #private;
3
- constructor(raw: TemplateStringsArray);
4
- toString(): string;
5
- toValue(): T;
6
- abstract createValue(str: string): T;
3
+ strings: TemplateStringsArray;
4
+ values: any[];
5
+ get shadow(): ShadowRoot;
6
+ constructor(raw: TemplateStringsArray, ...values: any[]);
7
+ execute(root: ShadowRoot): void;
8
+ abstract apply(root: ShadowRoot): void;
7
9
  }
@@ -1,21 +1,20 @@
1
- export class Result {
2
- #raw;
3
- #stringRes = null;
4
- #valueRes = null;
5
- constructor(raw) {
6
- this.#raw = raw;
7
- }
8
- toString() {
9
- if (!this.#stringRes) {
10
- this.#stringRes = this.#raw.toString();
1
+ export class ShadowResult {
2
+ strings;
3
+ values;
4
+ #shadow = undefined;
5
+ get shadow() {
6
+ if (!this.#shadow) {
7
+ throw new Error('ShadowResult has not been applied');
11
8
  }
12
- return this.#stringRes;
9
+ return this.#shadow;
13
10
  }
14
- toValue() {
15
- if (!this.#valueRes) {
16
- this.#valueRes = this.createValue(this.toString());
17
- }
18
- return this.#valueRes;
11
+ constructor(raw, ...values) {
12
+ this.strings = raw;
13
+ this.values = values;
14
+ }
15
+ execute(root) {
16
+ this.#shadow = root;
17
+ this.apply(root);
19
18
  }
20
19
  }
21
20
  //# sourceMappingURL=result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/lib/result.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,MAAM;IAC1B,IAAI,CAAuB;IAC3B,UAAU,GAAkB,IAAI,CAAC;IACjC,SAAS,GAAa,IAAI,CAAC;IAE3B,YAAY,GAAyB;QACnC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACpD;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CAGF"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/lib/result.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,YAAY;IAChC,OAAO,CAAuB;IAC9B,MAAM,CAAQ;IAEd,OAAO,GAA2B,SAAS,CAAC;IAE5C,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACtD;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,YAAY,GAAyB,EAAE,GAAG,MAAa;QACrD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,IAAgB;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;CAGF"}
@@ -0,0 +1,2 @@
1
+ import { ShadowResult } from './result.js';
2
+ export declare function shadow<This extends HTMLElement, T extends ShadowResult>(_: undefined, ctx: ClassFieldDecoratorContext<This, T>): (this: This, result: T) => T;
@@ -0,0 +1,12 @@
1
+ export function shadow(_, ctx) {
2
+ ctx.addInitializer(function () {
3
+ if (!this.shadowRoot) {
4
+ this.attachShadow({ mode: 'open' });
5
+ }
6
+ });
7
+ return function (result) {
8
+ result.execute(this.shadowRoot);
9
+ return result;
10
+ };
11
+ }
12
+ //# sourceMappingURL=shadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../../src/lib/shadow.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM,CACpB,CAAY,EACZ,GAAwC;IAExC,GAAG,CAAC,cAAc,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;SACrC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,UAAsB,MAAS;QACpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC;QAEjC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,17 +1,20 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { expect } from '@open-wc/testing';
3
3
  import { css, html } from './tags.js';
4
- import { styles, template } from './template.js';
4
+ import { shadow } from './shadow.js';
5
5
  describe('template', () => {
6
6
  it('should apply a stylesheet', () => {
7
7
  let MyElement = (() => {
8
+ let _classSuper = HTMLElement;
8
9
  let _instanceExtraInitializers = [];
9
10
  let _styles_decorators;
10
11
  let _styles_initializers = [];
11
- return class MyElement extends HTMLElement {
12
+ return class MyElement extends _classSuper {
12
13
  static {
13
- _styles_decorators = [styles];
14
- __esDecorate(null, null, _styles_decorators, { kind: "field", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles, set: (obj, value) => { obj.styles = value; } } }, _styles_initializers, _instanceExtraInitializers);
14
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
15
+ _styles_decorators = [shadow];
16
+ __esDecorate(null, null, _styles_decorators, { kind: "field", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles, set: (obj, value) => { obj.styles = value; } }, metadata: _metadata }, _styles_initializers, _instanceExtraInitializers);
17
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
15
18
  }
16
19
  styles = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _styles_initializers, css `
17
20
  :host {
@@ -26,19 +29,22 @@ describe('template', () => {
26
29
  });
27
30
  it('should apply html', () => {
28
31
  let MyElement = (() => {
29
- let _instanceExtraInitializers_1 = [];
32
+ let _classSuper = HTMLElement;
33
+ let _instanceExtraInitializers = [];
30
34
  let _styles_decorators;
31
35
  let _styles_initializers = [];
32
36
  let _template_decorators;
33
37
  let _template_initializers = [];
34
- return class MyElement extends HTMLElement {
38
+ return class MyElement extends _classSuper {
35
39
  static {
36
- _styles_decorators = [styles];
37
- _template_decorators = [template];
38
- __esDecorate(null, null, _styles_decorators, { kind: "field", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles, set: (obj, value) => { obj.styles = value; } } }, _styles_initializers, _instanceExtraInitializers_1);
39
- __esDecorate(null, null, _template_decorators, { kind: "field", name: "template", static: false, private: false, access: { has: obj => "template" in obj, get: obj => obj.template, set: (obj, value) => { obj.template = value; } } }, _template_initializers, _instanceExtraInitializers_1);
40
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
41
+ _styles_decorators = [shadow];
42
+ _template_decorators = [shadow];
43
+ __esDecorate(null, null, _styles_decorators, { kind: "field", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles, set: (obj, value) => { obj.styles = value; } }, metadata: _metadata }, _styles_initializers, _instanceExtraInitializers);
44
+ __esDecorate(null, null, _template_decorators, { kind: "field", name: "template", static: false, private: false, access: { has: obj => "template" in obj, get: obj => obj.template, set: (obj, value) => { obj.template = value; } }, metadata: _metadata }, _template_initializers, _instanceExtraInitializers);
45
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
40
46
  }
41
- styles = (__runInitializers(this, _instanceExtraInitializers_1), __runInitializers(this, _styles_initializers, css `
47
+ styles = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _styles_initializers, css `
42
48
  :host {
43
49
  display: flex;
44
50
  }
@@ -51,4 +57,4 @@ describe('template', () => {
51
57
  expect(el.shadowRoot?.innerHTML).to.eq('<slot></slot>');
52
58
  });
53
59
  });
54
- //# sourceMappingURL=template.test.js.map
60
+ //# sourceMappingURL=shadow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadow.test.js","sourceRoot":"","sources":["../../src/lib/shadow.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YAC7B,SAAS;8BAAS,WAAW;;;;yBAA7B,SAAU,SAAQ,WAAW;;;0CAChC,MAAM;oBAAC,oKAAA,MAAM,6BAAN,MAAM,wFAIZ;;;gBAJM,MAAM,uGAAG,GAAG,CAAA;;;;OAInB,GAAC;;;QAGJ,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE/C,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;QAE3B,MAAM,CAAC,EAAE,CAAC,UAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACrB,SAAS;8BAAS,WAAW;;;;;;yBAA7B,SAAU,SAAQ,WAAW;;;0CAChC,MAAM;4CAMN,MAAM;oBANC,oKAAA,MAAM,6BAAN,MAAM,wFAIZ;oBAEM,0KAAA,QAAQ,6BAAR,QAAQ,0FAAuB;;;gBAN/B,MAAM,uGAAG,GAAG,CAAA;;;;OAInB,GAAC;gBAEM,QAAQ,mDAAG,IAAI,CAAA,eAAe,EAAC;;;QAGzC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAE/C,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;QAE3B,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function tagName(_val: unknown, _ctx: ClassFieldDecoratorContext): (this: CustomElementConstructor, val: string) => string;
@@ -1,6 +1,6 @@
1
- export function define(_val, _ctx) {
1
+ export function tagName(_val, _ctx) {
2
2
  return function (val) {
3
- setTimeout(() => {
3
+ Promise.resolve().then(() => {
4
4
  if (!customElements.get(val)) {
5
5
  customElements.define(val, this);
6
6
  }
@@ -8,4 +8,4 @@ export function define(_val, _ctx) {
8
8
  return val;
9
9
  };
10
10
  }
11
- //# sourceMappingURL=define.js.map
11
+ //# sourceMappingURL=tag-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-name.js","sourceRoot":"","sources":["../../src/lib/tag-name.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,IAAgC;IACrE,OAAO,UAA0C,GAAW;QAC1D,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC5B,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aAClC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { tagName } from './tag-name.js';
3
+ describe('tag-name', () => {
4
+ it('should define a custom element', async () => {
5
+ let MyElement = (() => {
6
+ let _classSuper = HTMLElement;
7
+ let _staticExtraInitializers = [];
8
+ let _static_tagName_decorators;
9
+ let _static_tagName_initializers = [];
10
+ return class MyElement extends _classSuper {
11
+ static {
12
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
13
+ _static_tagName_decorators = [tagName];
14
+ __esDecorate(null, null, _static_tagName_decorators, { kind: "field", name: "tagName", static: true, private: false, access: { has: obj => "tagName" in obj, get: obj => obj.tagName, set: (obj, value) => { obj.tagName = value; } }, metadata: _metadata }, _static_tagName_initializers, _staticExtraInitializers);
15
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
16
+ __runInitializers(this, _staticExtraInitializers);
17
+ }
18
+ static tagName = __runInitializers(this, _static_tagName_initializers, 'tn-test-1');
19
+ };
20
+ })();
21
+ return customElements.whenDefined(MyElement.tagName);
22
+ });
23
+ });
24
+ //# sourceMappingURL=tag-name.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-name.test.js","sourceRoot":"","sources":["../../src/lib/tag-name.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YACxC,SAAS;8BAAS,WAAW;;;;yBAA7B,SAAU,SAAQ,WAAW;;;kDAChC,OAAO;oBAAC,6KAAO,OAAO,6BAAP,OAAO,8FAAe;;oBADlC,kDAAS;;gBACJ,MAAM,CAAC,OAAO,yDAAG,WAAW,EAAC;;;QAGxC,OAAO,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,9 +1,23 @@
1
- import { Result } from './result.js';
2
- export declare class HTMLResult extends Result<HTMLTemplateElement> {
3
- createValue(str: string): HTMLTemplateElement;
1
+ import { ShadowResult } from './result.js';
2
+ type Tags = keyof HTMLElementTagNameMap;
3
+ type SVGTags = keyof SVGElementTagNameMap;
4
+ type MathTags = keyof MathMLElementTagNameMap;
5
+ export declare const htmlTemplateCache: WeakMap<TemplateStringsArray, HTMLTemplateElement>;
6
+ export declare class HTMLResult extends ShadowResult {
7
+ query<K extends Tags>(selectors: K): HTMLElementTagNameMap[K] | null;
8
+ query<K extends SVGTags>(selectors: K): SVGElementTagNameMap[K] | null;
9
+ query<K extends MathTags>(selectors: K): MathMLElementTagNameMap[K] | null;
10
+ query<E extends Element = Element>(selectors: string): E | null;
11
+ queryAll<K extends Tags>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
12
+ queryAll<K extends SVGTags>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
13
+ queryAll<K extends MathTags>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;
14
+ queryAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
15
+ apply(root: ShadowRoot): void;
4
16
  }
5
- export declare function html(strings: TemplateStringsArray): HTMLResult;
6
- export declare class CSSResult extends Result<CSSStyleSheet> {
7
- createValue(str: string): CSSStyleSheet;
17
+ export declare function html(strings: TemplateStringsArray, ...values: any[]): HTMLResult;
18
+ export declare const styleSheetCache: WeakMap<TemplateStringsArray, CSSStyleSheet>;
19
+ export declare class CSSResult extends ShadowResult {
20
+ apply(root: ShadowRoot): void;
8
21
  }
9
22
  export declare function css(strings: TemplateStringsArray): CSSResult;
23
+ export {};