@joist/element 3.9.1 → 4.0.0-next.10

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 (81) hide show
  1. package/README.md +67 -29
  2. package/package.json +5 -4
  3. package/src/lib/attr.test.ts +122 -48
  4. package/src/lib/attr.ts +61 -34
  5. package/src/lib/element.test.ts +89 -16
  6. package/src/lib/element.ts +74 -38
  7. package/src/lib/lifecycle.test.ts +31 -0
  8. package/src/lib/lifecycle.ts +9 -0
  9. package/src/lib/listen.test.ts +88 -0
  10. package/src/lib/listen.ts +27 -4
  11. package/src/lib/metadata.ts +17 -3
  12. package/src/lib/query.test.ts +53 -0
  13. package/src/lib/query.ts +37 -0
  14. package/src/lib/result.ts +2 -26
  15. package/src/lib/tags.ts +22 -64
  16. package/src/lib/template.test.ts +95 -0
  17. package/src/lib/template.ts +115 -0
  18. package/src/lib.ts +3 -3
  19. package/target/lib/attr.d.ts +4 -1
  20. package/target/lib/attr.js +49 -28
  21. package/target/lib/attr.js.map +1 -1
  22. package/target/lib/attr.test.js +277 -147
  23. package/target/lib/attr.test.js.map +1 -1
  24. package/target/lib/element.d.ts +6 -1
  25. package/target/lib/element.js +58 -29
  26. package/target/lib/element.js.map +1 -1
  27. package/target/lib/element.test.js +186 -64
  28. package/target/lib/element.test.js.map +1 -1
  29. package/target/lib/lifecycle.d.ts +1 -0
  30. package/target/lib/lifecycle.js +8 -0
  31. package/target/lib/lifecycle.js.map +1 -0
  32. package/target/lib/lifecycle.test.js +48 -0
  33. package/target/lib/lifecycle.test.js.map +1 -0
  34. package/target/lib/listen.d.ts +2 -1
  35. package/target/lib/listen.js +21 -3
  36. package/target/lib/listen.js.map +1 -1
  37. package/target/lib/listen.test.js +159 -0
  38. package/target/lib/listen.test.js.map +1 -0
  39. package/target/lib/metadata.d.ts +14 -3
  40. package/target/lib/metadata.js +2 -2
  41. package/target/lib/metadata.js.map +1 -1
  42. package/target/lib/query.d.ts +9 -0
  43. package/target/lib/query.js +24 -0
  44. package/target/lib/query.js.map +1 -0
  45. package/target/lib/query.test.js +78 -0
  46. package/target/lib/query.test.js.map +1 -0
  47. package/target/lib/result.d.ts +2 -8
  48. package/target/lib/result.js +1 -19
  49. package/target/lib/result.js.map +1 -1
  50. package/target/lib/tags.d.ts +10 -20
  51. package/target/lib/tags.js +17 -29
  52. package/target/lib/tags.js.map +1 -1
  53. package/target/lib/template.d.ts +9 -0
  54. package/target/lib/template.js +83 -0
  55. package/target/lib/template.js.map +1 -0
  56. package/target/lib/template.test.d.ts +1 -0
  57. package/target/lib/template.test.js +70 -0
  58. package/target/lib/template.test.js.map +1 -0
  59. package/target/lib.d.ts +3 -3
  60. package/target/lib.js +3 -3
  61. package/target/lib.js.map +1 -1
  62. package/src/lib/shadow.test.ts +0 -40
  63. package/src/lib/shadow.ts +0 -16
  64. package/src/lib/tag-name.test.ts +0 -13
  65. package/src/lib/tag-name.ts +0 -10
  66. package/src/lib/tags.test.ts +0 -28
  67. package/target/lib/shadow.d.ts +0 -2
  68. package/target/lib/shadow.js +0 -10
  69. package/target/lib/shadow.js.map +0 -1
  70. package/target/lib/shadow.test.js +0 -69
  71. package/target/lib/shadow.test.js.map +0 -1
  72. package/target/lib/tag-name.d.ts +0 -1
  73. package/target/lib/tag-name.js +0 -6
  74. package/target/lib/tag-name.js.map +0 -1
  75. package/target/lib/tag-name.test.js +0 -36
  76. package/target/lib/tag-name.test.js.map +0 -1
  77. package/target/lib/tags.test.js +0 -23
  78. package/target/lib/tags.test.js.map +0 -1
  79. /package/target/lib/{shadow.test.d.ts → lifecycle.test.d.ts} +0 -0
  80. /package/target/lib/{tag-name.test.d.ts → listen.test.d.ts} +0 -0
  81. /package/target/lib/{tags.test.d.ts → query.test.d.ts} +0 -0
@@ -1,69 +1,191 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
- import { expect, fixture, html } from '@open-wc/testing';
2
+ import { expect } from 'chai';
3
3
  import { attr } from './attr.js';
4
4
  import { element } from './element.js';
5
- import { tagName } from './tag-name.js';
6
- describe('@element()', () => {
7
- it('should write default value to attribute', async () => {
8
- let MyElement = (() => {
9
- let _classDecorators = [element];
10
- let _classDescriptor;
11
- let _classExtraInitializers = [];
12
- let _classThis;
13
- let _classSuper = HTMLElement;
14
- let _static_tag_decorators;
15
- let _static_tag_initializers = [];
16
- let _static_tag_extraInitializers = [];
17
- let _value1_decorators;
18
- let _value1_initializers = [];
19
- let _value1_extraInitializers = [];
20
- let _value2_decorators;
21
- let _value2_initializers = [];
22
- let _value2_extraInitializers = [];
23
- let _value3_decorators;
24
- let _value3_initializers = [];
25
- let _value3_extraInitializers = [];
26
- var MyElement = class extends _classSuper {
27
- static { _classThis = this; }
28
- static {
29
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
30
- _static_tag_decorators = [tagName];
31
- _value1_decorators = [attr];
32
- _value2_decorators = [attr];
33
- _value3_decorators = [attr];
34
- __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, _value1_extraInitializers);
35
- __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, _value2_extraInitializers);
36
- __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, _value3_extraInitializers);
37
- __esDecorate(null, null, _static_tag_decorators, { kind: "field", name: "tag", static: true, private: false, access: { has: obj => "tag" in obj, get: obj => obj.tag, set: (obj, value) => { obj.tag = value; } }, metadata: _metadata }, _static_tag_initializers, _static_tag_extraInitializers);
38
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
39
- MyElement = _classThis = _classDescriptor.value;
40
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
41
- }
42
- static tag = __runInitializers(_classThis, _static_tag_initializers, 'element-1');
43
- #value1_accessor_storage = __runInitializers(this, _value1_initializers, 'hello');
44
- get value1() { return this.#value1_accessor_storage; }
45
- set value1(value) { this.#value1_accessor_storage = value; }
46
- #value2_accessor_storage = (__runInitializers(this, _value1_extraInitializers), __runInitializers(this, _value2_initializers, 0));
47
- get value2() { return this.#value2_accessor_storage; }
48
- set value2(value) { this.#value2_accessor_storage = value; }
49
- #value3_accessor_storage = (__runInitializers(this, _value2_extraInitializers), __runInitializers(this, _value3_initializers, true));
50
- get value3() { return this.#value3_accessor_storage; }
51
- set value3(value) { this.#value3_accessor_storage = value; }
52
- constructor() {
53
- super(...arguments);
54
- __runInitializers(this, _value3_extraInitializers);
55
- }
56
- static {
57
- __runInitializers(_classThis, _static_tag_extraInitializers);
58
- __runInitializers(_classThis, _classExtraInitializers);
59
- }
60
- };
61
- return MyElement = _classThis;
62
- })();
63
- const el = await fixture(html `<element-1></element-1>`);
64
- expect(el.getAttribute('value1')).to.equal('hello');
65
- expect(el.getAttribute('value2')).to.equal('0');
66
- expect(el.getAttribute('value3')).to.equal('');
67
- });
5
+ import { css, html } from './tags.js';
6
+ it('should write default value to attribute', async () => {
7
+ let MyElement = (() => {
8
+ let _classDecorators = [element({
9
+ tagName: 'element-1'
10
+ })];
11
+ let _classDescriptor;
12
+ let _classExtraInitializers = [];
13
+ let _classThis;
14
+ let _classSuper = HTMLElement;
15
+ let _value1_decorators;
16
+ let _value1_initializers = [];
17
+ let _value1_extraInitializers = [];
18
+ let _value2_decorators;
19
+ let _value2_initializers = [];
20
+ let _value2_extraInitializers = [];
21
+ let _value3_decorators;
22
+ let _value3_initializers = [];
23
+ let _value3_extraInitializers = [];
24
+ var MyElement = class extends _classSuper {
25
+ static { _classThis = this; }
26
+ static {
27
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
28
+ _value1_decorators = [attr()];
29
+ _value2_decorators = [attr()];
30
+ _value3_decorators = [attr()];
31
+ __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, _value1_extraInitializers);
32
+ __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, _value2_extraInitializers);
33
+ __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, _value3_extraInitializers);
34
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
35
+ MyElement = _classThis = _classDescriptor.value;
36
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
37
+ __runInitializers(_classThis, _classExtraInitializers);
38
+ }
39
+ #value1_accessor_storage = __runInitializers(this, _value1_initializers, 'hello');
40
+ get value1() { return this.#value1_accessor_storage; }
41
+ set value1(value) { this.#value1_accessor_storage = value; }
42
+ #value2_accessor_storage = (__runInitializers(this, _value1_extraInitializers), __runInitializers(this, _value2_initializers, 0));
43
+ get value2() { return this.#value2_accessor_storage; }
44
+ set value2(value) { this.#value2_accessor_storage = value; }
45
+ #value3_accessor_storage = (__runInitializers(this, _value2_extraInitializers), __runInitializers(this, _value3_initializers, true));
46
+ get value3() { return this.#value3_accessor_storage; }
47
+ set value3(value) { this.#value3_accessor_storage = value; }
48
+ constructor() {
49
+ super(...arguments);
50
+ __runInitializers(this, _value3_extraInitializers);
51
+ }
52
+ };
53
+ return MyElement = _classThis;
54
+ })();
55
+ const el = new MyElement();
56
+ document.body.append(el);
57
+ expect(el.getAttribute('value1')).to.equal('hello');
58
+ expect(el.getAttribute('value2')).to.equal('0');
59
+ expect(el.getAttribute('value3')).to.equal('');
60
+ el.remove();
61
+ });
62
+ it('should register attributes', async () => {
63
+ let MyElement = (() => {
64
+ let _classDecorators = [element({
65
+ tagName: 'element-2'
66
+ })];
67
+ let _classDescriptor;
68
+ let _classExtraInitializers = [];
69
+ let _classThis;
70
+ let _classSuper = HTMLElement;
71
+ let _value1_decorators;
72
+ let _value1_initializers = [];
73
+ let _value1_extraInitializers = [];
74
+ let _value2_decorators;
75
+ let _value2_initializers = [];
76
+ let _value2_extraInitializers = [];
77
+ let _value3_decorators;
78
+ let _value3_initializers = [];
79
+ let _value3_extraInitializers = [];
80
+ let _value4_decorators;
81
+ let _value4_initializers = [];
82
+ let _value4_extraInitializers = [];
83
+ var MyElement = class extends _classSuper {
84
+ static { _classThis = this; }
85
+ static {
86
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
87
+ _value1_decorators = [attr()];
88
+ _value2_decorators = [attr()];
89
+ _value3_decorators = [attr()];
90
+ _value4_decorators = [attr({ observed: false })];
91
+ __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, _value1_extraInitializers);
92
+ __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, _value2_extraInitializers);
93
+ __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, _value3_extraInitializers);
94
+ __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, _value4_extraInitializers);
95
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
96
+ MyElement = _classThis = _classDescriptor.value;
97
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
98
+ __runInitializers(_classThis, _classExtraInitializers);
99
+ }
100
+ #value1_accessor_storage = __runInitializers(this, _value1_initializers, 'hello');
101
+ get value1() { return this.#value1_accessor_storage; }
102
+ set value1(value) { this.#value1_accessor_storage = value; }
103
+ #value2_accessor_storage = (__runInitializers(this, _value1_extraInitializers), __runInitializers(this, _value2_initializers, 0));
104
+ get value2() { return this.#value2_accessor_storage; }
105
+ set value2(value) { this.#value2_accessor_storage = value; }
106
+ #value3_accessor_storage = (__runInitializers(this, _value2_extraInitializers), __runInitializers(this, _value3_initializers, true));
107
+ get value3() { return this.#value3_accessor_storage; }
108
+ set value3(value) { this.#value3_accessor_storage = value; }
109
+ #value4_accessor_storage = (__runInitializers(this, _value3_extraInitializers), __runInitializers(this, _value4_initializers, 'hello world'));
110
+ get value4() { return this.#value4_accessor_storage; }
111
+ set value4(value) { this.#value4_accessor_storage = value; }
112
+ constructor() {
113
+ super(...arguments);
114
+ __runInitializers(this, _value4_extraInitializers);
115
+ }
116
+ };
117
+ return MyElement = _classThis;
118
+ })();
119
+ expect(Reflect.get(MyElement, 'observedAttributes')).to.deep.equal([
120
+ 'value1',
121
+ 'value2',
122
+ 'value3'
123
+ ]);
124
+ });
125
+ it('should attach shadow root when the shadow property exists', async () => {
126
+ let MyElement = (() => {
127
+ let _classDecorators = [element({
128
+ tagName: 'element-3',
129
+ shadow: []
130
+ })];
131
+ let _classDescriptor;
132
+ let _classExtraInitializers = [];
133
+ let _classThis;
134
+ let _classSuper = HTMLElement;
135
+ var MyElement = class extends _classSuper {
136
+ static { _classThis = this; }
137
+ static {
138
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
139
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
140
+ MyElement = _classThis = _classDescriptor.value;
141
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
142
+ __runInitializers(_classThis, _classExtraInitializers);
143
+ }
144
+ };
145
+ return MyElement = _classThis;
146
+ })();
147
+ const el = new MyElement();
148
+ expect(el.shadowRoot).to.be.instanceOf(ShadowRoot);
149
+ });
150
+ it('should apply html and css', async () => {
151
+ let MyElement = (() => {
152
+ let _classDecorators = [element({
153
+ tagName: 'element-4',
154
+ shadow: [
155
+ css `
156
+ :host {
157
+ display: contents;
158
+ }
159
+ `,
160
+ html `<slot></slot>`,
161
+ {
162
+ apply(el) {
163
+ const div = document.createElement('div');
164
+ div.innerHTML = 'hello world';
165
+ el.append(div);
166
+ }
167
+ }
168
+ ]
169
+ })];
170
+ let _classDescriptor;
171
+ let _classExtraInitializers = [];
172
+ let _classThis;
173
+ let _classSuper = HTMLElement;
174
+ var MyElement = class extends _classSuper {
175
+ static { _classThis = this; }
176
+ static {
177
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
178
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
179
+ MyElement = _classThis = _classDescriptor.value;
180
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
181
+ __runInitializers(_classThis, _classExtraInitializers);
182
+ }
183
+ };
184
+ return MyElement = _classThis;
185
+ })();
186
+ const el = new MyElement();
187
+ expect(el.shadowRoot.adoptedStyleSheets.length).to.equal(1);
188
+ expect(el.shadowRoot.innerHTML).to.equal(`<slot></slot>`);
189
+ expect(el.innerHTML).to.equal(`<div>hello world</div>`);
68
190
  });
69
191
  //# sourceMappingURL=element.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"element.test.js","sourceRoot":"","sources":["../../src/lib/element.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YAEjD,SAAS;oCADd,OAAO;;;;8BACgB,WAAW;;;;;;;;;;;;;iCAAnB,SAAQ,WAAW;;;;8CAChC,OAAO;0CAEP,IAAI;0CACJ,IAAI;0CACJ,IAAI;oBAFC,uKAAS,MAAM,6BAAN,MAAM,uFAAW;oBAC1B,uKAAS,MAAM,6BAAN,MAAM,uFAAK;oBACpB,uKAAS,MAAM,6BAAN,MAAM,uFAAQ;oBAJpB,iKAAO,GAAG,6BAAH,GAAG,+FAAe;oBADpC,6KAMC;;;;gBALU,MAAM,CAAC,GAAG,2DAAG,WAAW,EAAC;gBAE5B,yEAAkB,OAAO,EAAC;gBAA1B,IAAS,MAAM,4CAAW;gBAA1B,IAAS,MAAM,kDAAW;gBAC1B,8HAAkB,CAAC,GAAC;gBAApB,IAAS,MAAM,4CAAK;gBAApB,IAAS,MAAM,kDAAK;gBACpB,8HAAkB,IAAI,GAAC;gBAAvB,IAAS,MAAM,4CAAQ;gBAAvB,IAAS,MAAM,kDAAQ;;;;;;;oBALzB,uDAAS;;;;;QAQf,MAAM,EAAE,GAAG,MAAM,OAAO,CAAY,IAAI,CAAA,yBAAyB,CAAC,CAAC;QAEnE,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"element.test.js","sourceRoot":"","sources":["../../src/lib/element.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function ready(): (val: Function, ctx: ClassMethodDecoratorContext) => void;
@@ -0,0 +1,8 @@
1
+ import { metadataStore } from './metadata.js';
2
+ export function ready() {
3
+ return function readyDecorator(val, ctx) {
4
+ const metadata = metadataStore.read(ctx.metadata);
5
+ metadata.onReady.add(val);
6
+ };
7
+ }
8
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lib/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,KAAK;IACnB,OAAO,SAAS,cAAc,CAAC,GAAa,EAAE,GAAgC;QAC5E,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { assert } from 'chai';
3
+ import { element } from './element.js';
4
+ import { ready } from './lifecycle';
5
+ it('should call all callbacks when template is ready', () => {
6
+ let MyElement = (() => {
7
+ let _classDecorators = [element({
8
+ tagName: 'template-ready-1'
9
+ })];
10
+ let _classDescriptor;
11
+ let _classExtraInitializers = [];
12
+ let _classThis;
13
+ let _classSuper = HTMLElement;
14
+ let _instanceExtraInitializers = [];
15
+ let _onTemplateReady1_decorators;
16
+ let _onTemplateReady2_decorators;
17
+ var MyElement = class extends _classSuper {
18
+ static { _classThis = this; }
19
+ static {
20
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
21
+ _onTemplateReady1_decorators = [ready()];
22
+ _onTemplateReady2_decorators = [ready()];
23
+ __esDecorate(this, null, _onTemplateReady1_decorators, { kind: "method", name: "onTemplateReady1", static: false, private: false, access: { has: obj => "onTemplateReady1" in obj, get: obj => obj.onTemplateReady1 }, metadata: _metadata }, null, _instanceExtraInitializers);
24
+ __esDecorate(this, null, _onTemplateReady2_decorators, { kind: "method", name: "onTemplateReady2", static: false, private: false, access: { has: obj => "onTemplateReady2" in obj, get: obj => obj.onTemplateReady2 }, metadata: _metadata }, null, _instanceExtraInitializers);
25
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
26
+ MyElement = _classThis = _classDescriptor.value;
27
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
28
+ __runInitializers(_classThis, _classExtraInitializers);
29
+ }
30
+ callCount = (__runInitializers(this, _instanceExtraInitializers), {});
31
+ onTemplateReady1() {
32
+ this.callCount['onTemplateReady1'] ??= 0;
33
+ this.callCount['onTemplateReady1']++;
34
+ }
35
+ onTemplateReady2() {
36
+ this.callCount['onTemplateReady2'] ??= 0;
37
+ this.callCount['onTemplateReady2']++;
38
+ }
39
+ };
40
+ return MyElement = _classThis;
41
+ })();
42
+ const el = new MyElement();
43
+ assert.deepEqual(el.callCount, {
44
+ onTemplateReady1: 1,
45
+ onTemplateReady2: 1
46
+ });
47
+ });
48
+ //# sourceMappingURL=lifecycle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.test.js","sourceRoot":"","sources":["../../src/lib/lifecycle.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAIpD,SAAS;gCAHd,OAAO,CAAC;gBACP,OAAO,EAAE,kBAAkB;aAC5B,CAAC;;;;0BACsB,WAAW;;;;6BAAnB,SAAQ,WAAW;;;;gDAGhC,KAAK,EAAE;gDAMP,KAAK,EAAE;gBALR,mMAAA,gBAAgB,6DAGf;gBAGD,mMAAA,gBAAgB,6DAGf;gBAbH,6KAcC;;;gBAdK,uDAAS;;YACb,SAAS,IADL,mDAAS,EACuB,EAAE,EAAC;YAGvC,gBAAgB;gBACd,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACvC,CAAC;YAGD,gBAAgB;gBACd,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACvC,CAAC;;;;IAGH,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IAE3B,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE;QAC7B,gBAAgB,EAAE,CAAC;QACnB,gBAAgB,EAAE,CAAC;KACpB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1,2 @@
1
- export declare function listen<This extends HTMLElement>(event: string): (value: (e: Event) => void, ctx: ClassMethodDecoratorContext<This>) => void;
1
+ import { ListenerSelector } from './metadata.js';
2
+ export declare function listen<This extends HTMLElement>(event: string, selector?: ListenerSelector | string): (value: (e: any) => void, ctx: ClassMethodDecoratorContext<This>) => void;
@@ -1,8 +1,26 @@
1
1
  import { metadataStore } from './metadata.js';
2
- export function listen(event) {
3
- return (value, ctx) => {
2
+ export function listen(event, selector) {
3
+ return function listenDecorator(value, ctx) {
4
4
  const metadata = metadataStore.read(ctx.metadata);
5
- metadata.listeners.set(event, value);
5
+ let selectorInternal = (el) => el.shadowRoot ?? el;
6
+ if (selector) {
7
+ if (typeof selector === 'string') {
8
+ selectorInternal = (el) => {
9
+ if (el.shadowRoot) {
10
+ return el.shadowRoot.querySelector(selector);
11
+ }
12
+ return el.querySelector(selector);
13
+ };
14
+ }
15
+ else {
16
+ selectorInternal = selector;
17
+ }
18
+ }
19
+ metadata.listeners.push({
20
+ event,
21
+ cb: value,
22
+ selector: selectorInternal
23
+ });
6
24
  };
7
25
  }
8
26
  //# sourceMappingURL=listen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"listen.js","sourceRoot":"","sources":["../../src/lib/listen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,UAAU,MAAM,CAA2B,KAAa;IAC5D,OAAO,CAAC,KAAyB,EAAE,GAAsC,EAAE,EAAE;QAC3E,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"listen.js","sourceRoot":"","sources":["../../src/lib/listen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,aAAa,EAAE,MAAM,eAAe,CAAC;AAEhE,MAAM,UAAU,MAAM,CACpB,KAAa,EACb,QAAoC;IAEpC,OAAO,SAAS,eAAe,CAAC,KAAuB,EAAE,GAAsC;QAC7F,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,gBAAgB,GAAqB,CAAC,EAAW,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC;QAE9E,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACjC,gBAAgB,GAAG,CAAC,EAAW,EAAE,EAAE;oBACjC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;wBAClB,OAAO,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC/C,CAAC;oBAED,OAAO,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,gBAAgB,GAAG,QAAQ,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;YACtB,KAAK;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,gBAAgB;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,159 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { assert } from 'chai';
3
+ import { element } from './element.js';
4
+ import { listen } from './listen.js';
5
+ describe('@listen()', () => {
6
+ it('should add listener to an outer HTMLElement', (done) => {
7
+ let MyElement = (() => {
8
+ let _classDecorators = [element({
9
+ tagName: 'listener-1'
10
+ })];
11
+ let _classDescriptor;
12
+ let _classExtraInitializers = [];
13
+ let _classThis;
14
+ let _classSuper = HTMLElement;
15
+ let _instanceExtraInitializers = [];
16
+ let _onClick_decorators;
17
+ var MyElement = class extends _classSuper {
18
+ static { _classThis = this; }
19
+ static {
20
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
21
+ _onClick_decorators = [listen('click')];
22
+ __esDecorate(this, null, _onClick_decorators, { kind: "method", name: "onClick", static: false, private: false, access: { has: obj => "onClick" in obj, get: obj => obj.onClick }, metadata: _metadata }, null, _instanceExtraInitializers);
23
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
24
+ MyElement = _classThis = _classDescriptor.value;
25
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
26
+ __runInitializers(_classThis, _classExtraInitializers);
27
+ }
28
+ onClick(e) {
29
+ assert.equal(e.type, 'click');
30
+ done();
31
+ }
32
+ constructor() {
33
+ super(...arguments);
34
+ __runInitializers(this, _instanceExtraInitializers);
35
+ }
36
+ };
37
+ return MyElement = _classThis;
38
+ })();
39
+ const el = new MyElement();
40
+ el.dispatchEvent(new Event('click'));
41
+ });
42
+ it('should add listener to the shadow root if available', (done) => {
43
+ let MyElement = (() => {
44
+ let _classDecorators = [element({
45
+ tagName: 'listener-2',
46
+ shadow: []
47
+ })];
48
+ let _classDescriptor;
49
+ let _classExtraInitializers = [];
50
+ let _classThis;
51
+ let _classSuper = HTMLElement;
52
+ let _instanceExtraInitializers = [];
53
+ let _onClick_decorators;
54
+ var MyElement = class extends _classSuper {
55
+ static { _classThis = this; }
56
+ static {
57
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
58
+ _onClick_decorators = [listen('click')];
59
+ __esDecorate(this, null, _onClick_decorators, { kind: "method", name: "onClick", static: false, private: false, access: { has: obj => "onClick" in obj, get: obj => obj.onClick }, metadata: _metadata }, null, _instanceExtraInitializers);
60
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
61
+ MyElement = _classThis = _classDescriptor.value;
62
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
63
+ __runInitializers(_classThis, _classExtraInitializers);
64
+ }
65
+ onClick(e) {
66
+ assert.equal(e.type, 'click');
67
+ done();
68
+ }
69
+ constructor() {
70
+ super(...arguments);
71
+ __runInitializers(this, _instanceExtraInitializers);
72
+ }
73
+ };
74
+ return MyElement = _classThis;
75
+ })();
76
+ const el = new MyElement();
77
+ el.shadowRoot.dispatchEvent(new Event('click'));
78
+ });
79
+ it('should restrict argument to an event or an event subtype', (done) => {
80
+ class CustomEvent extends Event {
81
+ test = 'Hello World';
82
+ constructor() {
83
+ super('customevent');
84
+ }
85
+ }
86
+ let MyElement = (() => {
87
+ let _classDecorators = [element({
88
+ tagName: 'listener-3'
89
+ })];
90
+ let _classDescriptor;
91
+ let _classExtraInitializers = [];
92
+ let _classThis;
93
+ let _classSuper = HTMLElement;
94
+ let _instanceExtraInitializers = [];
95
+ let _onClick_decorators;
96
+ var MyElement = class extends _classSuper {
97
+ static { _classThis = this; }
98
+ static {
99
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
100
+ _onClick_decorators = [listen('customevent')];
101
+ __esDecorate(this, null, _onClick_decorators, { kind: "method", name: "onClick", static: false, private: false, access: { has: obj => "onClick" in obj, get: obj => obj.onClick }, metadata: _metadata }, null, _instanceExtraInitializers);
102
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
103
+ MyElement = _classThis = _classDescriptor.value;
104
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
105
+ __runInitializers(_classThis, _classExtraInitializers);
106
+ }
107
+ onClick(e) {
108
+ assert.equal(e.type, 'customevent');
109
+ done();
110
+ }
111
+ constructor() {
112
+ super(...arguments);
113
+ __runInitializers(this, _instanceExtraInitializers);
114
+ }
115
+ };
116
+ return MyElement = _classThis;
117
+ })();
118
+ const el = new MyElement();
119
+ el.dispatchEvent(new CustomEvent());
120
+ });
121
+ it('should respect a provided selector function', (done) => {
122
+ let MyElement = (() => {
123
+ let _classDecorators = [element({
124
+ tagName: 'listener-4',
125
+ shadow: []
126
+ })];
127
+ let _classDescriptor;
128
+ let _classExtraInitializers = [];
129
+ let _classThis;
130
+ let _classSuper = HTMLElement;
131
+ let _instanceExtraInitializers = [];
132
+ let _onClick_decorators;
133
+ var MyElement = class extends _classSuper {
134
+ static { _classThis = this; }
135
+ static {
136
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
137
+ _onClick_decorators = [listen('click', (host) => host)];
138
+ __esDecorate(this, null, _onClick_decorators, { kind: "method", name: "onClick", static: false, private: false, access: { has: obj => "onClick" in obj, get: obj => obj.onClick }, metadata: _metadata }, null, _instanceExtraInitializers);
139
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
140
+ MyElement = _classThis = _classDescriptor.value;
141
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
142
+ __runInitializers(_classThis, _classExtraInitializers);
143
+ }
144
+ onClick(e) {
145
+ assert.equal(e.type, 'click');
146
+ done();
147
+ }
148
+ constructor() {
149
+ super(...arguments);
150
+ __runInitializers(this, _instanceExtraInitializers);
151
+ }
152
+ };
153
+ return MyElement = _classThis;
154
+ })();
155
+ const el = new MyElement();
156
+ el.dispatchEvent(new Event('click'));
157
+ });
158
+ });
159
+ //# sourceMappingURL=listen.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listen.test.js","sourceRoot":"","sources":["../../src/lib/listen.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,18 @@
1
+ export interface AttrDef {
2
+ propName: string | symbol;
3
+ attrName: string;
4
+ observe: boolean;
5
+ }
6
+ export type ListenerSelector = (el: Element) => Element | ShadowRoot | null;
7
+ export interface Listener {
8
+ event: string;
9
+ cb: (e: Event) => void;
10
+ selector: ListenerSelector;
11
+ }
1
12
  export declare class ElementMetadata {
2
- attrs: string[];
3
- tagName?: (val: any) => string;
4
- listeners: Map<string, (e: Event) => void>;
13
+ attrs: AttrDef[];
14
+ listeners: Listener[];
15
+ onReady: Set<Function>;
5
16
  }
6
17
  export declare class MetadataStore extends WeakMap<object, ElementMetadata> {
7
18
  read(value: object): ElementMetadata;
@@ -1,8 +1,8 @@
1
1
  Symbol.metadata ??= Symbol('Symbol.metadata');
2
2
  export class ElementMetadata {
3
3
  attrs = [];
4
- tagName;
5
- listeners = new Map();
4
+ listeners = [];
5
+ onReady = new Set();
6
6
  }
7
7
  export class MetadataStore extends WeakMap {
8
8
  read(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAAC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEvD,MAAM,OAAO,eAAe;IAC1B,KAAK,GAAa,EAAE,CAAC;IACrB,OAAO,CAAwB;IAC/B,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;CACnD;AAED,MAAM,OAAO,aAAc,SAAQ,OAAgC;IACjE,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,eAAe,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAAC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAgBvD,MAAM,OAAO,eAAe;IAC1B,KAAK,GAAc,EAAE,CAAC;IACtB,SAAS,GAAe,EAAE,CAAC;IAC3B,OAAO,GAAG,IAAI,GAAG,EAAY,CAAC;CAC/B;AAED,MAAM,OAAO,aAAc,SAAQ,OAAgC;IACjE,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,eAAe,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ type Tags = keyof HTMLElementTagNameMap;
2
+ type SVGTags = keyof SVGElementTagNameMap;
3
+ type MathTags = keyof MathMLElementTagNameMap;
4
+ type QueryResult<T> = (updates?: Partial<T>) => T;
5
+ export declare function query<K extends Tags>(selectors: K): QueryResult<HTMLElementTagNameMap[K]>;
6
+ export declare function query<K extends SVGTags>(selectors: K): QueryResult<SVGElementTagNameMap[K]>;
7
+ export declare function query<K extends MathTags>(selectors: K): QueryResult<MathMLElementTagNameMap[K]>;
8
+ export declare function query<E extends HTMLElement = HTMLElement>(selectors: string): QueryResult<E>;
9
+ export {};