@joist/element 4.2.4-next.9 → 4.3.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.
- package/LICENSE +2 -2
- package/README.md +61 -30
- package/package.json +1 -1
- package/src/lib/define.ts +18 -0
- package/src/lib/element.test.ts +69 -0
- package/src/lib/element.ts +3 -5
- package/target/lib/define.d.ts +5 -0
- package/target/lib/define.js +14 -0
- package/target/lib/define.js.map +1 -0
- package/target/lib/element.d.ts +2 -2
- package/target/lib/element.js +2 -3
- package/target/lib/element.js.map +1 -1
- package/target/lib/element.test.js +96 -0
- package/target/lib/element.test.js.map +1 -1
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2019-
|
|
3
|
+
Copyright (c) 2019-2025 Danny Blue
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|
|
21
|
+
THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -4,12 +4,16 @@ Utilities for building web compnennts. Especially targeted at
|
|
|
4
4
|
|
|
5
5
|
## Table of Contents
|
|
6
6
|
|
|
7
|
-
- [
|
|
8
|
-
- [
|
|
9
|
-
- [
|
|
10
|
-
- [
|
|
11
|
-
- [
|
|
12
|
-
- [
|
|
7
|
+
- [Element](#element)
|
|
8
|
+
- [Table of Contents](#table-of-contents)
|
|
9
|
+
- [Installation](#installation)
|
|
10
|
+
- [Custom Element](#custom-element)
|
|
11
|
+
- [Dependencies](#dependencies)
|
|
12
|
+
- [Attributes](#attributes)
|
|
13
|
+
- [HTML and CSS](#html-and-css)
|
|
14
|
+
- [Listeners](#listeners)
|
|
15
|
+
- [Query](#query)
|
|
16
|
+
- [QueryAll](#queryall)
|
|
13
17
|
|
|
14
18
|
## Installation
|
|
15
19
|
|
|
@@ -23,7 +27,34 @@ To define a custom element decorate your custom element class and add a tagName
|
|
|
23
27
|
|
|
24
28
|
```ts
|
|
25
29
|
@element({
|
|
26
|
-
tagName:
|
|
30
|
+
tagName: "my-element",
|
|
31
|
+
})
|
|
32
|
+
export class MyElement extends HTMLElement {}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Dependencies
|
|
36
|
+
|
|
37
|
+
If your custom elements needs to wait to be registed until other elements have been registered.
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
@element({
|
|
41
|
+
tagName: "my-element",
|
|
42
|
+
dependsOn: ["element-2", "element-7"],
|
|
43
|
+
})
|
|
44
|
+
export class MyElement extends HTMLElement {}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
If there are more complicated needs or if the logic needs to be more dynamic, `dependsOn` can be an async function. The element would be registered when the Promise resolves. Below is an example that would be the equivalent to the previous example.
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
@element({
|
|
51
|
+
tagName: "my-element",
|
|
52
|
+
dependsOn() {
|
|
53
|
+
return Promise.all([
|
|
54
|
+
customElement.whenDefined("element-2"),
|
|
55
|
+
customElement.whenDefined("element-7"),
|
|
56
|
+
]);
|
|
57
|
+
},
|
|
27
58
|
})
|
|
28
59
|
export class MyElement extends HTMLElement {}
|
|
29
60
|
```
|
|
@@ -34,31 +65,31 @@ Attributes can be managed using the `@attr` decorator. This decorator will read
|
|
|
34
65
|
|
|
35
66
|
```ts
|
|
36
67
|
@element({
|
|
37
|
-
tagName:
|
|
68
|
+
tagName: "my-element",
|
|
38
69
|
})
|
|
39
70
|
export class MyElement extends HTMLElement {
|
|
40
71
|
@attr()
|
|
41
|
-
accessor greeting =
|
|
72
|
+
accessor greeting = "Hello World";
|
|
42
73
|
}
|
|
43
74
|
```
|
|
44
75
|
|
|
45
76
|
## HTML and CSS
|
|
46
77
|
|
|
47
78
|
HTML templates can be applied by passing the result of the `html` tag to the shaodw list.
|
|
48
|
-
CSS can be applied by passing the result of the `css` tag to the shadow list.
|
|
79
|
+
CSS can be applied by passing the result of the `css` tag to the shadow list.
|
|
49
80
|
Any new tagged template literal that returns a `ShadowResult` can be used.
|
|
50
81
|
|
|
51
82
|
```ts
|
|
52
83
|
@element({
|
|
53
|
-
tagName:
|
|
84
|
+
tagName: "my-element",
|
|
54
85
|
shadowDom: [
|
|
55
86
|
css`
|
|
56
87
|
h1 {
|
|
57
88
|
color: red;
|
|
58
89
|
}
|
|
59
90
|
`,
|
|
60
|
-
html`<h1>Hello World</h1
|
|
61
|
-
]
|
|
91
|
+
html`<h1>Hello World</h1>`,
|
|
92
|
+
],
|
|
62
93
|
})
|
|
63
94
|
export class MyElement extends HTMLElement {}
|
|
64
95
|
```
|
|
@@ -69,26 +100,26 @@ The `@listen` decorator allows you to easy setup event listeners. By default the
|
|
|
69
100
|
|
|
70
101
|
```ts
|
|
71
102
|
@element({
|
|
72
|
-
tagName:
|
|
73
|
-
shadowDom: []
|
|
103
|
+
tagName: "my-element",
|
|
104
|
+
shadowDom: [],
|
|
74
105
|
})
|
|
75
106
|
export class MyElement extends HTMLElement {
|
|
76
|
-
@listen(
|
|
107
|
+
@listen("eventname")
|
|
77
108
|
onEventName1() {
|
|
78
109
|
// all listener to the shadow root
|
|
79
110
|
}
|
|
80
111
|
|
|
81
|
-
@listen(
|
|
112
|
+
@listen("eventname", (host) => host)
|
|
82
113
|
onEventName2() {
|
|
83
114
|
// all listener to the host element
|
|
84
115
|
}
|
|
85
116
|
|
|
86
|
-
@listen(
|
|
117
|
+
@listen("eventname", (host) => host.querySelector("button"))
|
|
87
118
|
onEventName3() {
|
|
88
119
|
// add listener to a button found in the light dom
|
|
89
120
|
}
|
|
90
121
|
|
|
91
|
-
@listen(
|
|
122
|
+
@listen("eventname", "#test")
|
|
92
123
|
onEventName4() {
|
|
93
124
|
// add listener to element with the id of "test" that is found in the shadow dom
|
|
94
125
|
}
|
|
@@ -101,7 +132,7 @@ The `query` function will query for a particular element and allow you to easily
|
|
|
101
132
|
|
|
102
133
|
```ts
|
|
103
134
|
@element({
|
|
104
|
-
tagName:
|
|
135
|
+
tagName: "my-element",
|
|
105
136
|
shadowDom: [
|
|
106
137
|
html`
|
|
107
138
|
<label for="my-input">
|
|
@@ -109,18 +140,18 @@ The `query` function will query for a particular element and allow you to easily
|
|
|
109
140
|
</label>
|
|
110
141
|
|
|
111
142
|
<input id="my-input" />
|
|
112
|
-
|
|
113
|
-
]
|
|
143
|
+
`,
|
|
144
|
+
],
|
|
114
145
|
})
|
|
115
146
|
export class MyElement extends HTMLElement {
|
|
116
147
|
@observe()
|
|
117
148
|
accessor value: string;
|
|
118
149
|
|
|
119
|
-
#input = query(
|
|
150
|
+
#input = query("input");
|
|
120
151
|
|
|
121
152
|
@effect()
|
|
122
153
|
onChange() {
|
|
123
|
-
const input = this.#input({ value: this.value});
|
|
154
|
+
const input = this.#input({ value: this.value });
|
|
124
155
|
}
|
|
125
156
|
}
|
|
126
157
|
```
|
|
@@ -131,25 +162,25 @@ The `queryAll` function will get all elements that match the given query. A patc
|
|
|
131
162
|
|
|
132
163
|
```ts
|
|
133
164
|
@element({
|
|
134
|
-
tagName:
|
|
165
|
+
tagName: "my-element",
|
|
135
166
|
shadowDom: [
|
|
136
167
|
html`
|
|
137
168
|
<input id="first" />
|
|
138
169
|
<input id="second" />
|
|
139
|
-
|
|
140
|
-
]
|
|
170
|
+
`,
|
|
171
|
+
],
|
|
141
172
|
})
|
|
142
173
|
export class MyElement extends HTMLElement {
|
|
143
174
|
@observe()
|
|
144
175
|
accessor value: string;
|
|
145
176
|
|
|
146
|
-
#inputs = queryAll(
|
|
177
|
+
#inputs = queryAll("input");
|
|
147
178
|
|
|
148
179
|
@effect()
|
|
149
180
|
onChange() {
|
|
150
181
|
this.#input(() => {
|
|
151
|
-
return { value: this.value }
|
|
152
|
-
})
|
|
182
|
+
return { value: this.value };
|
|
183
|
+
});
|
|
153
184
|
}
|
|
154
185
|
}
|
|
155
186
|
```
|
package/package.json
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface DefineOpts {
|
|
2
|
+
tagName: string;
|
|
3
|
+
dependsOn?: string[] | (() => Promise<void>);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export async function define(opts: DefineOpts, element: CustomElementConstructor): Promise<void> {
|
|
7
|
+
if (!customElements.get(opts.tagName)) {
|
|
8
|
+
if (opts.dependsOn) {
|
|
9
|
+
if (typeof opts.dependsOn === "function") {
|
|
10
|
+
await opts.dependsOn();
|
|
11
|
+
} else {
|
|
12
|
+
await Promise.all(opts.dependsOn.map((d) => customElements.whenDefined(d)));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
customElements.define(opts.tagName, element);
|
|
17
|
+
}
|
|
18
|
+
}
|
package/src/lib/element.test.ts
CHANGED
|
@@ -123,3 +123,72 @@ it("should the correct shadow dom mode", async () => {
|
|
|
123
123
|
|
|
124
124
|
assert.equal(el.shadowRoot, null);
|
|
125
125
|
});
|
|
126
|
+
|
|
127
|
+
it("should wait to register itself until all elements it depends on are also registered", async () => {
|
|
128
|
+
@element({
|
|
129
|
+
tagName: "element-6",
|
|
130
|
+
dependsOn: ["element-7", "element-8"],
|
|
131
|
+
})
|
|
132
|
+
// @ts-ignore
|
|
133
|
+
class MyElement6 extends HTMLElement {}
|
|
134
|
+
|
|
135
|
+
assert.isUndefined(customElements.get("element-6"));
|
|
136
|
+
|
|
137
|
+
customElements.define("element-7", class extends HTMLElement {});
|
|
138
|
+
customElements.define("element-8", class extends HTMLElement {});
|
|
139
|
+
|
|
140
|
+
await Promise.all([
|
|
141
|
+
customElements.whenDefined("element-7"),
|
|
142
|
+
customElements.whenDefined("element-8"),
|
|
143
|
+
]);
|
|
144
|
+
|
|
145
|
+
assert.equal(customElements.get("element-6"), MyElement6);
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it("should wait to register itself until the custom dependsOn function runs", async () => {
|
|
149
|
+
let resolver: Function;
|
|
150
|
+
|
|
151
|
+
@element({
|
|
152
|
+
tagName: "element-9",
|
|
153
|
+
dependsOn() {
|
|
154
|
+
return new Promise((resolve) => {
|
|
155
|
+
resolver = resolve;
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
})
|
|
159
|
+
// @ts-ignore
|
|
160
|
+
class MyElement extends HTMLElement {}
|
|
161
|
+
|
|
162
|
+
assert.isUndefined(customElements.get("element-9"));
|
|
163
|
+
|
|
164
|
+
resolver!();
|
|
165
|
+
|
|
166
|
+
await Promise.resolve();
|
|
167
|
+
|
|
168
|
+
assert.equal(customElements.get("element-9"), MyElement);
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
it("should call disconnectedCallback when element is removed from DOM", async () => {
|
|
172
|
+
let disconnectedCalled = false;
|
|
173
|
+
|
|
174
|
+
@element({
|
|
175
|
+
tagName: "element-10",
|
|
176
|
+
})
|
|
177
|
+
class MyElement extends HTMLElement {
|
|
178
|
+
disconnectedCallback() {
|
|
179
|
+
disconnectedCalled = true;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const el = new MyElement();
|
|
184
|
+
document.body.append(el);
|
|
185
|
+
|
|
186
|
+
// Verify element is connected
|
|
187
|
+
expect(disconnectedCalled).to.be.false;
|
|
188
|
+
|
|
189
|
+
// Remove element from DOM
|
|
190
|
+
el.remove();
|
|
191
|
+
|
|
192
|
+
// Verify disconnectedCallback was called
|
|
193
|
+
expect(disconnectedCalled).to.be.true;
|
|
194
|
+
});
|
package/src/lib/element.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { define, DefineOpts } from "./define.js";
|
|
1
2
|
import { type AttrMetadata, metadataStore } from "./metadata.js";
|
|
2
3
|
import type { ShadowResult } from "./result.js";
|
|
3
4
|
|
|
4
|
-
export interface ElementOpts {
|
|
5
|
-
tagName?: string;
|
|
5
|
+
export interface ElementOpts extends Partial<DefineOpts> {
|
|
6
6
|
shadowDom?: ShadowResult[];
|
|
7
7
|
shadowDomOpts?: ShadowRootInit;
|
|
8
8
|
}
|
|
@@ -17,9 +17,7 @@ export function element<T extends ElementConstructor>(opts?: ElementOpts) {
|
|
|
17
17
|
|
|
18
18
|
ctx.addInitializer(function () {
|
|
19
19
|
if (opts?.tagName) {
|
|
20
|
-
|
|
21
|
-
customElements.define(opts.tagName, this);
|
|
22
|
-
}
|
|
20
|
+
define({ tagName: opts.tagName, dependsOn: opts.dependsOn }, this);
|
|
23
21
|
}
|
|
24
22
|
});
|
|
25
23
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export async function define(opts, element) {
|
|
2
|
+
if (!customElements.get(opts.tagName)) {
|
|
3
|
+
if (opts.dependsOn) {
|
|
4
|
+
if (typeof opts.dependsOn === "function") {
|
|
5
|
+
await opts.dependsOn();
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
await Promise.all(opts.dependsOn.map((d) => customElements.whenDefined(d)));
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
customElements.define(opts.tagName, element);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/lib/define.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAgB,EAAE,OAAiC;IAC9E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBACzC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
|
package/target/lib/element.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { DefineOpts } from "./define.js";
|
|
1
2
|
import type { ShadowResult } from "./result.js";
|
|
2
|
-
export interface ElementOpts {
|
|
3
|
-
tagName?: string;
|
|
3
|
+
export interface ElementOpts extends Partial<DefineOpts> {
|
|
4
4
|
shadowDom?: ShadowResult[];
|
|
5
5
|
shadowDomOpts?: ShadowRootInit;
|
|
6
6
|
}
|
package/target/lib/element.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
+
import { define } from "./define.js";
|
|
1
2
|
import { metadataStore } from "./metadata.js";
|
|
2
3
|
export function element(opts) {
|
|
3
4
|
return function elementDecorator(Base, ctx) {
|
|
4
5
|
const meta = metadataStore.read(ctx.metadata);
|
|
5
6
|
ctx.addInitializer(function () {
|
|
6
7
|
if (opts?.tagName) {
|
|
7
|
-
|
|
8
|
-
customElements.define(opts.tagName, this);
|
|
9
|
-
}
|
|
8
|
+
define({ tagName: opts.tagName, dependsOn: opts.dependsOn }, this);
|
|
10
9
|
}
|
|
11
10
|
});
|
|
12
11
|
const def = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/lib/element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/lib/element.ts"],"names":[],"mappings":"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"}
|
|
@@ -230,4 +230,100 @@ it("should the correct shadow dom mode", async () => {
|
|
|
230
230
|
const el = new MyElement();
|
|
231
231
|
assert.equal(el.shadowRoot, null);
|
|
232
232
|
});
|
|
233
|
+
it("should wait to register itself until all elements it depends on are also registered", async () => {
|
|
234
|
+
let MyElement6 = (() => {
|
|
235
|
+
let _classDecorators = [element({
|
|
236
|
+
tagName: "element-6",
|
|
237
|
+
dependsOn: ["element-7", "element-8"],
|
|
238
|
+
})];
|
|
239
|
+
let _classDescriptor;
|
|
240
|
+
let _classExtraInitializers = [];
|
|
241
|
+
let _classThis;
|
|
242
|
+
let _classSuper = HTMLElement;
|
|
243
|
+
var MyElement6 = class extends _classSuper {
|
|
244
|
+
static { _classThis = this; }
|
|
245
|
+
static {
|
|
246
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
247
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
248
|
+
MyElement6 = _classThis = _classDescriptor.value;
|
|
249
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
250
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
return MyElement6 = _classThis;
|
|
254
|
+
})();
|
|
255
|
+
assert.isUndefined(customElements.get("element-6"));
|
|
256
|
+
customElements.define("element-7", class extends HTMLElement {
|
|
257
|
+
});
|
|
258
|
+
customElements.define("element-8", class extends HTMLElement {
|
|
259
|
+
});
|
|
260
|
+
await Promise.all([
|
|
261
|
+
customElements.whenDefined("element-7"),
|
|
262
|
+
customElements.whenDefined("element-8"),
|
|
263
|
+
]);
|
|
264
|
+
assert.equal(customElements.get("element-6"), MyElement6);
|
|
265
|
+
});
|
|
266
|
+
it("should wait to register itself until the custom dependsOn function runs", async () => {
|
|
267
|
+
let resolver;
|
|
268
|
+
let MyElement = (() => {
|
|
269
|
+
let _classDecorators = [element({
|
|
270
|
+
tagName: "element-9",
|
|
271
|
+
dependsOn() {
|
|
272
|
+
return new Promise((resolve) => {
|
|
273
|
+
resolver = resolve;
|
|
274
|
+
});
|
|
275
|
+
},
|
|
276
|
+
})];
|
|
277
|
+
let _classDescriptor;
|
|
278
|
+
let _classExtraInitializers = [];
|
|
279
|
+
let _classThis;
|
|
280
|
+
let _classSuper = HTMLElement;
|
|
281
|
+
var MyElement = class extends _classSuper {
|
|
282
|
+
static { _classThis = this; }
|
|
283
|
+
static {
|
|
284
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
285
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
286
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
287
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
288
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
return MyElement = _classThis;
|
|
292
|
+
})();
|
|
293
|
+
assert.isUndefined(customElements.get("element-9"));
|
|
294
|
+
resolver();
|
|
295
|
+
await Promise.resolve();
|
|
296
|
+
assert.equal(customElements.get("element-9"), MyElement);
|
|
297
|
+
});
|
|
298
|
+
it("should call disconnectedCallback when element is removed from DOM", async () => {
|
|
299
|
+
let disconnectedCalled = false;
|
|
300
|
+
let MyElement = (() => {
|
|
301
|
+
let _classDecorators = [element({
|
|
302
|
+
tagName: "element-10",
|
|
303
|
+
})];
|
|
304
|
+
let _classDescriptor;
|
|
305
|
+
let _classExtraInitializers = [];
|
|
306
|
+
let _classThis;
|
|
307
|
+
let _classSuper = HTMLElement;
|
|
308
|
+
var MyElement = class extends _classSuper {
|
|
309
|
+
static { _classThis = this; }
|
|
310
|
+
static {
|
|
311
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
312
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
313
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
314
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
315
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
316
|
+
}
|
|
317
|
+
disconnectedCallback() {
|
|
318
|
+
disconnectedCalled = true;
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
return MyElement = _classThis;
|
|
322
|
+
})();
|
|
323
|
+
const el = new MyElement();
|
|
324
|
+
document.body.append(el);
|
|
325
|
+
expect(disconnectedCalled).to.be.false;
|
|
326
|
+
el.remove();
|
|
327
|
+
expect(disconnectedCalled).to.be.true;
|
|
328
|
+
});
|
|
233
329
|
//# 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,MAAM,EAAE,MAAM,MAAM,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QAIjD,SAAS;gCAHd,OAAO,CAAC;gBACP,OAAO,EAAE,WAAW;aACrB,CAAC;;;;0BACsB,WAAW;;;;;;;;;;;;;6BAAnB,SAAQ,WAAW;;;;sCAChC,IAAI,EAAE;sCAGN,IAAI,EAAE;sCAGN,IAAI,EAAE;sCAGN,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;gBARzB,uKAAS,MAAM,6BAAN,MAAM,uFAAW;gBAG1B,uKAAS,MAAM,6BAAN,MAAM,uFAAK;gBAGpB,uKAAS,MAAM,6BAAN,MAAM,uFAAQ;gBAGvB,uKAAS,MAAM,6BAAN,MAAM,uFAAS;gBAX1B,6KAYC;;;gBAZK,uDAAS;;YAEb,yEAAkB,OAAO,EAAC;YAA1B,IAAS,MAAM,4CAAW;YAA1B,IAAS,MAAM,kDAAW;YAG1B,8HAAkB,CAAC,GAAC;YAApB,IAAS,MAAM,4CAAK;YAApB,IAAS,MAAM,kDAAK;YAGpB,8HAAkB,IAAI,GAAC;YAAvB,IAAS,MAAM,4CAAQ;YAAvB,IAAS,MAAM,kDAAQ;YAGvB,8HAAkB,KAAK,GAAC;YAAxB,IAAS,MAAM,4CAAS;YAAxB,IAAS,MAAM,kDAAS;;;;;;;;IAG1B,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IAE3B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEzB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjD,EAAE,CAAC,MAAM,EAAE,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC1C,MAAM,aAAa,GAAa,EAAE,CAAC;QAK7B,SAAS;gCAHd,OAAO,CAAC;gBACP,OAAO,EAAE,WAAW;aACrB,CAAC;;;;0BACsB,WAAW;;;;;;;;;;;;;6BAAnB,SAAQ,WAAW;;;;sCAChC,IAAI,EAAE;sCAGN,IAAI,EAAE;sCAGN,IAAI,EAAE;sCAGN,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAR1B,uKAAS,MAAM,6BAAN,MAAM,uFAAW;gBAG1B,uKAAS,MAAM,6BAAN,MAAM,uFAAK;gBAGpB,uKAAS,MAAM,6BAAN,MAAM,uFAAQ;gBAGvB,uKAAS,MAAM,6BAAN,MAAM,uFAAiB;gBAXlC,6KAgBC;;;gBAhBK,uDAAS;;YAEb,yEAAkB,OAAO,EAAC;YAA1B,IAAS,MAAM,4CAAW;YAA1B,IAAS,MAAM,kDAAW;YAG1B,8HAAkB,CAAC,GAAC;YAApB,IAAS,MAAM,4CAAK;YAApB,IAAS,MAAM,kDAAK;YAGpB,8HAAkB,IAAI,GAAC;YAAvB,IAAS,MAAM,4CAAQ;YAAvB,IAAS,MAAM,kDAAQ;YAGvB,8HAAkB,aAAa,GAAC;YAAhC,IAAS,MAAM,4CAAiB;YAAhC,IAAS,MAAM,kDAAiB;YAEhC,wBAAwB,CAAC,IAAY;gBACnC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;;;;;;;;IAGH,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IAE3B,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC/B,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEjC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAKnE,SAAS;gCAJd,OAAO,CAAC;gBACP,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,EAAE;aACd,CAAC;;;;0BACsB,WAAW;6BAAnB,SAAQ,WAAW;;;;gBAAnC,6KAAsC;;;gBAAhC,uDAAS;;;;;IAEf,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IAE3B,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAoBnC,SAAS;gCAnBd,OAAO,CAAC;gBACP,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE;oBACT,GAAG,CAAA;;;;OAIF;oBACD,IAAI,CAAA,eAAe;oBACnB;wBACE,KAAK,CAAC,EAAE;4BACN,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;4BAC1C,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC;4BAE9B,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACjB,CAAC;qBACF;iBACF;aACF,CAAC;;;;0BACsB,WAAW;6BAAnB,SAAQ,WAAW;;;;gBAAnC,6KAAsC;;;gBAAhC,uDAAS;;;;;IAEf,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IAE3B,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAQ5C,SAAS;gCAPd,OAAO,CAAC;gBACP,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;iBACf;aACF,CAAC;;;;0BACsB,WAAW;6BAAnB,SAAQ,WAAW;;;;gBAAnC,6KAAsC;;;gBAAhC,uDAAS;;;;;IAEf,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IAE3B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"element.test.js","sourceRoot":"","sources":["../../src/lib/element.test.ts"],"names":[],"mappings":"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"}
|