@joist/element 4.7.0 → 4.7.1
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/package.json +1 -1
- package/target/lib/attr-changed.d.ts +3 -0
- package/target/lib/attr-changed.d.ts.map +1 -0
- package/target/lib/attr-changed.js +12 -0
- package/target/lib/attr-changed.js.map +1 -0
- package/target/lib/attr-changed.test.d.ts +2 -0
- package/target/lib/attr-changed.test.d.ts.map +1 -0
- package/target/lib/attr-changed.test.js +150 -0
- package/target/lib/attr-changed.test.js.map +1 -0
- package/target/lib/attr.d.ts +7 -0
- package/target/lib/attr.d.ts.map +1 -0
- package/target/lib/attr.js +66 -0
- package/target/lib/attr.js.map +1 -0
- package/target/lib/attr.test.d.ts +2 -0
- package/target/lib/attr.test.d.ts.map +1 -0
- package/target/lib/attr.test.js +520 -0
- package/target/lib/attr.test.js.map +1 -0
- package/target/lib/define.d.ts +6 -0
- package/target/lib/define.d.ts.map +1 -0
- package/target/lib/define.js +14 -0
- package/target/lib/define.js.map +1 -0
- package/target/lib/element.d.ts +12 -0
- package/target/lib/element.d.ts.map +1 -0
- package/target/lib/element.js +118 -0
- package/target/lib/element.js.map +1 -0
- package/target/lib/element.test.d.ts +2 -0
- package/target/lib/element.test.d.ts.map +1 -0
- package/target/lib/element.test.js +365 -0
- package/target/lib/element.test.js.map +1 -0
- package/target/lib/lifecycle.d.ts +2 -0
- package/target/lib/lifecycle.d.ts.map +1 -0
- package/target/lib/lifecycle.js +8 -0
- package/target/lib/lifecycle.js.map +1 -0
- package/target/lib/lifecycle.test.d.ts +2 -0
- package/target/lib/lifecycle.test.d.ts.map +1 -0
- package/target/lib/lifecycle.test.js +81 -0
- package/target/lib/lifecycle.test.js.map +1 -0
- package/target/lib/listen.d.ts +3 -0
- package/target/lib/listen.d.ts.map +1 -0
- package/target/lib/listen.js +26 -0
- package/target/lib/listen.js.map +1 -0
- package/target/lib/listen.test.d.ts +2 -0
- package/target/lib/listen.test.d.ts.map +1 -0
- package/target/lib/listen.test.js +305 -0
- package/target/lib/listen.test.js.map +1 -0
- package/target/lib/metadata.d.ts +31 -0
- package/target/lib/metadata.d.ts.map +1 -0
- package/target/lib/metadata.js +21 -0
- package/target/lib/metadata.js.map +1 -0
- package/target/lib/query-all.d.ts +11 -0
- package/target/lib/query-all.d.ts.map +1 -0
- package/target/lib/query-all.js +40 -0
- package/target/lib/query-all.js.map +1 -0
- package/target/lib/query-all.test.d.ts +2 -0
- package/target/lib/query-all.test.d.ts.map +1 -0
- package/target/lib/query-all.test.js +228 -0
- package/target/lib/query-all.test.js.map +1 -0
- package/target/lib/query.d.ts +11 -0
- package/target/lib/query.d.ts.map +1 -0
- package/target/lib/query.js +36 -0
- package/target/lib/query.js.map +1 -0
- package/target/lib/query.test.d.ts +2 -0
- package/target/lib/query.test.d.ts.map +1 -0
- package/target/lib/query.test.js +221 -0
- package/target/lib/query.test.js.map +1 -0
- package/target/lib/result.d.ts +4 -0
- package/target/lib/result.d.ts.map +1 -0
- package/target/lib/result.js +2 -0
- package/target/lib/result.js.map +1 -0
- package/target/lib/tags.d.ts +15 -0
- package/target/lib/tags.d.ts.map +1 -0
- package/target/lib/tags.js +44 -0
- package/target/lib/tags.js.map +1 -0
- package/target/lib/tags.test.d.ts +2 -0
- package/target/lib/tags.test.d.ts.map +1 -0
- package/target/lib/tags.test.js +93 -0
- package/target/lib/tags.test.js.map +1 -0
- package/target/lib.d.ts +10 -0
- package/target/lib.d.ts.map +1 -0
- package/target/lib.js +9 -0
- package/target/lib.js.map +1 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { define } from "./define.js";
|
|
2
|
+
import { metadataStore } from "./metadata.js";
|
|
3
|
+
export function element(opts) {
|
|
4
|
+
return function elementDecorator(Base, ctx) {
|
|
5
|
+
const meta = metadataStore.read(ctx.metadata);
|
|
6
|
+
ctx.addInitializer(function () {
|
|
7
|
+
if (opts?.tagName) {
|
|
8
|
+
define({ tagName: opts.tagName, dependsOn: opts.dependsOn }, this);
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const def = {
|
|
12
|
+
[Base.name]: class extends Base {
|
|
13
|
+
static observedAttributes = Array.from(meta.attrs.keys());
|
|
14
|
+
#abortController = null;
|
|
15
|
+
constructor(...args) {
|
|
16
|
+
super(...args);
|
|
17
|
+
if (opts?.shadowDom) {
|
|
18
|
+
if (!this.shadowRoot) {
|
|
19
|
+
this.attachShadow(opts.shadowDomOpts ?? { mode: "open" });
|
|
20
|
+
}
|
|
21
|
+
for (const res of opts.shadowDom) {
|
|
22
|
+
res.apply(this);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
for (const cb of meta.onReady) {
|
|
26
|
+
cb.call(this);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
30
|
+
const attr = meta.attrs.get(name);
|
|
31
|
+
const cbs = meta.attrChanges.get(name);
|
|
32
|
+
if (attr) {
|
|
33
|
+
if (oldValue !== newValue) {
|
|
34
|
+
const sourceValue = attr.access.get.call(this);
|
|
35
|
+
let value = newValue;
|
|
36
|
+
if (typeof sourceValue === "boolean") {
|
|
37
|
+
// treat as boolean
|
|
38
|
+
value = newValue !== null;
|
|
39
|
+
}
|
|
40
|
+
else if (typeof sourceValue === "number") {
|
|
41
|
+
// treat as number
|
|
42
|
+
value = Number(newValue);
|
|
43
|
+
}
|
|
44
|
+
attr.access.set.call(this, value);
|
|
45
|
+
}
|
|
46
|
+
if (cbs) {
|
|
47
|
+
for (const cb of cbs) {
|
|
48
|
+
cb.call(this, name, oldValue, newValue);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (attr.observe) {
|
|
52
|
+
if (super.attributeChangedCallback) {
|
|
53
|
+
super.attributeChangedCallback(name, oldValue, newValue);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
connectedCallback() {
|
|
59
|
+
if (!this.#abortController) {
|
|
60
|
+
this.#abortController = new AbortController();
|
|
61
|
+
for (const { event, cb, selector } of meta.listeners) {
|
|
62
|
+
const root = selector(this);
|
|
63
|
+
if (root) {
|
|
64
|
+
root.addEventListener(event, cb.bind(this), {
|
|
65
|
+
signal: this.#abortController.signal,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
throw new Error(`could not add listener to ${root}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
reflectAttributeValues(this, meta.attrs);
|
|
74
|
+
if (super.connectedCallback) {
|
|
75
|
+
super.connectedCallback();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
disconnectedCallback() {
|
|
79
|
+
if (this.#abortController) {
|
|
80
|
+
this.#abortController.abort();
|
|
81
|
+
this.#abortController = null;
|
|
82
|
+
}
|
|
83
|
+
if (super.disconnectedCallback) {
|
|
84
|
+
super.disconnectedCallback();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
return def[Base.name];
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function reflectAttributeValues(el, attrs) {
|
|
93
|
+
for (const [attrName, { access, reflect }] of attrs) {
|
|
94
|
+
if (reflect) {
|
|
95
|
+
const value = access.get.call(el);
|
|
96
|
+
// reflect values back to attributes
|
|
97
|
+
if (value !== null && value !== undefined && value !== "") {
|
|
98
|
+
if (typeof value === "boolean") {
|
|
99
|
+
if (value === true) {
|
|
100
|
+
// set boolean attribute
|
|
101
|
+
if (!el.hasAttribute(attrName)) {
|
|
102
|
+
el.setAttribute(attrName, "");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (!el.hasAttribute(attrName)) {
|
|
107
|
+
// only set parent attribute if it doesn't exist
|
|
108
|
+
// set key/value attribute
|
|
109
|
+
const strValue = String(value);
|
|
110
|
+
if (el.getAttribute(attrName) !== strValue) {
|
|
111
|
+
el.setAttribute(attrName, strValue);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/lib/element.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.test.d.ts","sourceRoot":"","sources":["../../src/lib/element.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { assert, expect } from "chai";
|
|
36
|
+
import { attr } from "./attr.js";
|
|
37
|
+
import { element } from "./element.js";
|
|
38
|
+
import { css, html } from "./tags.js";
|
|
39
|
+
it("should write default value to attribute", async () => {
|
|
40
|
+
let MyElement = (() => {
|
|
41
|
+
let _classDecorators = [element({
|
|
42
|
+
tagName: "element-1",
|
|
43
|
+
})];
|
|
44
|
+
let _classDescriptor;
|
|
45
|
+
let _classExtraInitializers = [];
|
|
46
|
+
let _classThis;
|
|
47
|
+
let _classSuper = HTMLElement;
|
|
48
|
+
let _value1_decorators;
|
|
49
|
+
let _value1_initializers = [];
|
|
50
|
+
let _value1_extraInitializers = [];
|
|
51
|
+
let _value2_decorators;
|
|
52
|
+
let _value2_initializers = [];
|
|
53
|
+
let _value2_extraInitializers = [];
|
|
54
|
+
let _value3_decorators;
|
|
55
|
+
let _value3_initializers = [];
|
|
56
|
+
let _value3_extraInitializers = [];
|
|
57
|
+
let _value4_decorators;
|
|
58
|
+
let _value4_initializers = [];
|
|
59
|
+
let _value4_extraInitializers = [];
|
|
60
|
+
var MyElement = class extends _classSuper {
|
|
61
|
+
static { _classThis = this; }
|
|
62
|
+
static {
|
|
63
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
64
|
+
_value1_decorators = [attr()];
|
|
65
|
+
_value2_decorators = [attr()];
|
|
66
|
+
_value3_decorators = [attr()];
|
|
67
|
+
_value4_decorators = [attr({ reflect: false })];
|
|
68
|
+
__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);
|
|
69
|
+
__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);
|
|
70
|
+
__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);
|
|
71
|
+
__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);
|
|
72
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
73
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
74
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
75
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
76
|
+
}
|
|
77
|
+
#value1_accessor_storage = __runInitializers(this, _value1_initializers, "hello");
|
|
78
|
+
get value1() { return this.#value1_accessor_storage; } // no attribute
|
|
79
|
+
set value1(value) { this.#value1_accessor_storage = value; }
|
|
80
|
+
#value2_accessor_storage = (__runInitializers(this, _value1_extraInitializers), __runInitializers(this, _value2_initializers, 0));
|
|
81
|
+
get value2() { return this.#value2_accessor_storage; } // number
|
|
82
|
+
set value2(value) { this.#value2_accessor_storage = value; }
|
|
83
|
+
#value3_accessor_storage = (__runInitializers(this, _value2_extraInitializers), __runInitializers(this, _value3_initializers, true));
|
|
84
|
+
get value3() { return this.#value3_accessor_storage; } // boolean
|
|
85
|
+
set value3(value) { this.#value3_accessor_storage = value; }
|
|
86
|
+
#value4_accessor_storage = (__runInitializers(this, _value3_extraInitializers), __runInitializers(this, _value4_initializers, "foo"));
|
|
87
|
+
get value4() { return this.#value4_accessor_storage; }
|
|
88
|
+
set value4(value) { this.#value4_accessor_storage = value; }
|
|
89
|
+
constructor() {
|
|
90
|
+
super(...arguments);
|
|
91
|
+
__runInitializers(this, _value4_extraInitializers);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
return MyElement = _classThis;
|
|
95
|
+
})();
|
|
96
|
+
const el = new MyElement();
|
|
97
|
+
document.body.append(el);
|
|
98
|
+
expect(el.getAttribute("value1")).to.equal("hello");
|
|
99
|
+
expect(el.getAttribute("value2")).to.equal("0");
|
|
100
|
+
expect(el.getAttribute("value3")).to.equal("");
|
|
101
|
+
expect(el.getAttribute("value4")).to.equal(null);
|
|
102
|
+
el.remove();
|
|
103
|
+
});
|
|
104
|
+
it("should register attributes", async () => {
|
|
105
|
+
const observedAttrs = [];
|
|
106
|
+
let MyElement = (() => {
|
|
107
|
+
let _classDecorators = [element({
|
|
108
|
+
tagName: "element-2",
|
|
109
|
+
})];
|
|
110
|
+
let _classDescriptor;
|
|
111
|
+
let _classExtraInitializers = [];
|
|
112
|
+
let _classThis;
|
|
113
|
+
let _classSuper = HTMLElement;
|
|
114
|
+
let _value1_decorators;
|
|
115
|
+
let _value1_initializers = [];
|
|
116
|
+
let _value1_extraInitializers = [];
|
|
117
|
+
let _value2_decorators;
|
|
118
|
+
let _value2_initializers = [];
|
|
119
|
+
let _value2_extraInitializers = [];
|
|
120
|
+
let _value3_decorators;
|
|
121
|
+
let _value3_initializers = [];
|
|
122
|
+
let _value3_extraInitializers = [];
|
|
123
|
+
let _value4_decorators;
|
|
124
|
+
let _value4_initializers = [];
|
|
125
|
+
let _value4_extraInitializers = [];
|
|
126
|
+
var MyElement = class extends _classSuper {
|
|
127
|
+
static { _classThis = this; }
|
|
128
|
+
static {
|
|
129
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
130
|
+
_value1_decorators = [attr()];
|
|
131
|
+
_value2_decorators = [attr()];
|
|
132
|
+
_value3_decorators = [attr()];
|
|
133
|
+
_value4_decorators = [attr({ observed: false })];
|
|
134
|
+
__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);
|
|
135
|
+
__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);
|
|
136
|
+
__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);
|
|
137
|
+
__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);
|
|
138
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
139
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
140
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
141
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
142
|
+
}
|
|
143
|
+
#value1_accessor_storage = __runInitializers(this, _value1_initializers, "hello");
|
|
144
|
+
get value1() { return this.#value1_accessor_storage; }
|
|
145
|
+
set value1(value) { this.#value1_accessor_storage = value; }
|
|
146
|
+
#value2_accessor_storage = (__runInitializers(this, _value1_extraInitializers), __runInitializers(this, _value2_initializers, 0));
|
|
147
|
+
get value2() { return this.#value2_accessor_storage; }
|
|
148
|
+
set value2(value) { this.#value2_accessor_storage = value; }
|
|
149
|
+
#value3_accessor_storage = (__runInitializers(this, _value2_extraInitializers), __runInitializers(this, _value3_initializers, true));
|
|
150
|
+
get value3() { return this.#value3_accessor_storage; }
|
|
151
|
+
set value3(value) { this.#value3_accessor_storage = value; }
|
|
152
|
+
#value4_accessor_storage = (__runInitializers(this, _value3_extraInitializers), __runInitializers(this, _value4_initializers, "hello world"));
|
|
153
|
+
get value4() { return this.#value4_accessor_storage; }
|
|
154
|
+
set value4(value) { this.#value4_accessor_storage = value; }
|
|
155
|
+
attributeChangedCallback(name) {
|
|
156
|
+
observedAttrs.push(name);
|
|
157
|
+
}
|
|
158
|
+
constructor() {
|
|
159
|
+
super(...arguments);
|
|
160
|
+
__runInitializers(this, _value4_extraInitializers);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
return MyElement = _classThis;
|
|
164
|
+
})();
|
|
165
|
+
const el = new MyElement();
|
|
166
|
+
el.setAttribute("value1", "foo");
|
|
167
|
+
el.setAttribute("value2", "1");
|
|
168
|
+
el.setAttribute("value3", "false");
|
|
169
|
+
el.setAttribute("value4", "bar");
|
|
170
|
+
expect(observedAttrs).to.deep.equal(["value1", "value2", "value3"]);
|
|
171
|
+
});
|
|
172
|
+
it("should attach shadow root when the shadow property exists", async () => {
|
|
173
|
+
let MyElement = (() => {
|
|
174
|
+
let _classDecorators = [element({
|
|
175
|
+
tagName: "element-3",
|
|
176
|
+
shadowDom: [],
|
|
177
|
+
})];
|
|
178
|
+
let _classDescriptor;
|
|
179
|
+
let _classExtraInitializers = [];
|
|
180
|
+
let _classThis;
|
|
181
|
+
let _classSuper = HTMLElement;
|
|
182
|
+
var MyElement = class extends _classSuper {
|
|
183
|
+
static { _classThis = this; }
|
|
184
|
+
static {
|
|
185
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
186
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
187
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
188
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
189
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
return MyElement = _classThis;
|
|
193
|
+
})();
|
|
194
|
+
const el = new MyElement();
|
|
195
|
+
expect(el.shadowRoot).to.be.instanceOf(ShadowRoot);
|
|
196
|
+
});
|
|
197
|
+
it("should apply html and css", async () => {
|
|
198
|
+
let MyElement = (() => {
|
|
199
|
+
let _classDecorators = [element({
|
|
200
|
+
tagName: "element-4",
|
|
201
|
+
shadowDom: [
|
|
202
|
+
css `
|
|
203
|
+
:host {
|
|
204
|
+
display: contents;
|
|
205
|
+
}
|
|
206
|
+
`,
|
|
207
|
+
html `<slot></slot>`,
|
|
208
|
+
{
|
|
209
|
+
apply(el) {
|
|
210
|
+
const div = document.createElement("div");
|
|
211
|
+
div.innerHTML = "hello world";
|
|
212
|
+
el.append(div);
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
],
|
|
216
|
+
})];
|
|
217
|
+
let _classDescriptor;
|
|
218
|
+
let _classExtraInitializers = [];
|
|
219
|
+
let _classThis;
|
|
220
|
+
let _classSuper = HTMLElement;
|
|
221
|
+
var MyElement = class extends _classSuper {
|
|
222
|
+
static { _classThis = this; }
|
|
223
|
+
static {
|
|
224
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
225
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
226
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
227
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
228
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
return MyElement = _classThis;
|
|
232
|
+
})();
|
|
233
|
+
const el = new MyElement();
|
|
234
|
+
expect(el.shadowRoot?.adoptedStyleSheets.length).to.equal(1);
|
|
235
|
+
expect(el.shadowRoot?.innerHTML).to.equal("<slot></slot>");
|
|
236
|
+
expect(el.innerHTML).to.equal("<div>hello world</div>");
|
|
237
|
+
});
|
|
238
|
+
it("should the correct shadow dom mode", async () => {
|
|
239
|
+
let MyElement = (() => {
|
|
240
|
+
let _classDecorators = [element({
|
|
241
|
+
tagName: "element-5",
|
|
242
|
+
shadowDom: [],
|
|
243
|
+
shadowDomOpts: {
|
|
244
|
+
mode: "closed",
|
|
245
|
+
},
|
|
246
|
+
})];
|
|
247
|
+
let _classDescriptor;
|
|
248
|
+
let _classExtraInitializers = [];
|
|
249
|
+
let _classThis;
|
|
250
|
+
let _classSuper = HTMLElement;
|
|
251
|
+
var MyElement = class extends _classSuper {
|
|
252
|
+
static { _classThis = this; }
|
|
253
|
+
static {
|
|
254
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
255
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
256
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
257
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
258
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
return MyElement = _classThis;
|
|
262
|
+
})();
|
|
263
|
+
const el = new MyElement();
|
|
264
|
+
assert.equal(el.shadowRoot, null);
|
|
265
|
+
});
|
|
266
|
+
it("should wait to register itself until all elements it depends on are also registered", async () => {
|
|
267
|
+
let MyElement6 = (() => {
|
|
268
|
+
let _classDecorators = [element({
|
|
269
|
+
tagName: "element-6",
|
|
270
|
+
dependsOn: ["element-7", "element-8"],
|
|
271
|
+
})];
|
|
272
|
+
let _classDescriptor;
|
|
273
|
+
let _classExtraInitializers = [];
|
|
274
|
+
let _classThis;
|
|
275
|
+
let _classSuper = HTMLElement;
|
|
276
|
+
var MyElement6 = class extends _classSuper {
|
|
277
|
+
static { _classThis = this; }
|
|
278
|
+
static {
|
|
279
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
280
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
281
|
+
MyElement6 = _classThis = _classDescriptor.value;
|
|
282
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
283
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
return MyElement6 = _classThis;
|
|
287
|
+
})();
|
|
288
|
+
assert.isUndefined(customElements.get("element-6"));
|
|
289
|
+
customElements.define("element-7", class extends HTMLElement {
|
|
290
|
+
});
|
|
291
|
+
customElements.define("element-8", class extends HTMLElement {
|
|
292
|
+
});
|
|
293
|
+
await Promise.all([
|
|
294
|
+
customElements.whenDefined("element-7"),
|
|
295
|
+
customElements.whenDefined("element-8"),
|
|
296
|
+
]);
|
|
297
|
+
assert.equal(customElements.get("element-6"), MyElement6);
|
|
298
|
+
});
|
|
299
|
+
it("should wait to register itself until the custom dependsOn function runs", async () => {
|
|
300
|
+
let resolver;
|
|
301
|
+
let MyElement = (() => {
|
|
302
|
+
let _classDecorators = [element({
|
|
303
|
+
tagName: "element-9",
|
|
304
|
+
dependsOn() {
|
|
305
|
+
return new Promise((resolve) => {
|
|
306
|
+
resolver = resolve;
|
|
307
|
+
});
|
|
308
|
+
},
|
|
309
|
+
})];
|
|
310
|
+
let _classDescriptor;
|
|
311
|
+
let _classExtraInitializers = [];
|
|
312
|
+
let _classThis;
|
|
313
|
+
let _classSuper = HTMLElement;
|
|
314
|
+
var MyElement = class extends _classSuper {
|
|
315
|
+
static { _classThis = this; }
|
|
316
|
+
static {
|
|
317
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
318
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
319
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
320
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
321
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
return MyElement = _classThis;
|
|
325
|
+
})();
|
|
326
|
+
assert.isUndefined(customElements.get("element-9"));
|
|
327
|
+
resolver();
|
|
328
|
+
await Promise.resolve();
|
|
329
|
+
assert.equal(customElements.get("element-9"), MyElement);
|
|
330
|
+
});
|
|
331
|
+
it("should call disconnectedCallback when element is removed from DOM", async () => {
|
|
332
|
+
let disconnectedCalled = false;
|
|
333
|
+
let MyElement = (() => {
|
|
334
|
+
let _classDecorators = [element({
|
|
335
|
+
tagName: "element-10",
|
|
336
|
+
})];
|
|
337
|
+
let _classDescriptor;
|
|
338
|
+
let _classExtraInitializers = [];
|
|
339
|
+
let _classThis;
|
|
340
|
+
let _classSuper = HTMLElement;
|
|
341
|
+
var MyElement = class extends _classSuper {
|
|
342
|
+
static { _classThis = this; }
|
|
343
|
+
static {
|
|
344
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
345
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
346
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
347
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
348
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
349
|
+
}
|
|
350
|
+
disconnectedCallback() {
|
|
351
|
+
disconnectedCalled = true;
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
return MyElement = _classThis;
|
|
355
|
+
})();
|
|
356
|
+
const el = new MyElement();
|
|
357
|
+
document.body.append(el);
|
|
358
|
+
// Verify element is connected
|
|
359
|
+
expect(disconnectedCalled).to.be.false;
|
|
360
|
+
// Remove element from DOM
|
|
361
|
+
el.remove();
|
|
362
|
+
// Verify disconnectedCallback was called
|
|
363
|
+
expect(disconnectedCalled).to.be.true;
|
|
364
|
+
});
|
|
365
|
+
//# sourceMappingURL=element.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element.test.js","sourceRoot":"","sources":["../../src/lib/element.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/lib/lifecycle.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,KAEjB,KAAK,MAAM,IAAI,EACf,KAAK,2BAA2B,KAC/B,IAAI,CAKR"}
|
|
@@ -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,CAC5B,GAAe,EACf,GAAgC;QAEhC,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 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.test.d.ts","sourceRoot":"","sources":["../../src/lib/lifecycle.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
import { assert } from "chai";
|
|
36
|
+
import { element } from "./element.js";
|
|
37
|
+
import { ready } from "./lifecycle.js";
|
|
38
|
+
it("should call all callbacks when template is ready", () => {
|
|
39
|
+
let MyElement = (() => {
|
|
40
|
+
let _classDecorators = [element({
|
|
41
|
+
tagName: "template-ready-1",
|
|
42
|
+
})];
|
|
43
|
+
let _classDescriptor;
|
|
44
|
+
let _classExtraInitializers = [];
|
|
45
|
+
let _classThis;
|
|
46
|
+
let _classSuper = HTMLElement;
|
|
47
|
+
let _instanceExtraInitializers = [];
|
|
48
|
+
let _onTemplateReady1_decorators;
|
|
49
|
+
let _onTemplateReady2_decorators;
|
|
50
|
+
var MyElement = class extends _classSuper {
|
|
51
|
+
static { _classThis = this; }
|
|
52
|
+
static {
|
|
53
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
54
|
+
_onTemplateReady1_decorators = [ready()];
|
|
55
|
+
_onTemplateReady2_decorators = [ready()];
|
|
56
|
+
__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);
|
|
57
|
+
__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);
|
|
58
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
59
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
60
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
61
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
62
|
+
}
|
|
63
|
+
callCount = (__runInitializers(this, _instanceExtraInitializers), {});
|
|
64
|
+
onTemplateReady1() {
|
|
65
|
+
this.callCount.onTemplateReady1 ??= 0;
|
|
66
|
+
this.callCount.onTemplateReady1++;
|
|
67
|
+
}
|
|
68
|
+
onTemplateReady2() {
|
|
69
|
+
this.callCount.onTemplateReady2 ??= 0;
|
|
70
|
+
this.callCount.onTemplateReady2++;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return MyElement = _classThis;
|
|
74
|
+
})();
|
|
75
|
+
const el = new MyElement();
|
|
76
|
+
assert.deepEqual(el.callCount, {
|
|
77
|
+
onTemplateReady1: 1,
|
|
78
|
+
onTemplateReady2: 1,
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# 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,gBAAgB,CAAC;AAEvC,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,gBAAgB,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;YACpC,CAAC;YAGD,gBAAgB;gBACd,IAAI,CAAC,SAAS,CAAC,gBAAgB,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;YACpC,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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type ListenerSelector } from "./metadata.js";
|
|
2
|
+
export declare function listen<This extends HTMLElement>(event: string, selector?: ListenerSelector<This> | string): (value: (e: any) => void, ctx: ClassMethodDecoratorContext<This>) => void;
|
|
3
|
+
//# sourceMappingURL=listen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listen.d.ts","sourceRoot":"","sources":["../../src/lib/listen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,eAAe,CAAC;AAErE,wBAAgB,MAAM,CAAC,IAAI,SAAS,WAAW,EAC7C,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,IAGxC,OAAO,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,EACvB,KAAK,2BAA2B,CAAC,IAAI,CAAC,KACrC,IAAI,CAyBR"}
|