@joist/element 4.0.0-next.4 → 4.0.0-next.41
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/README.md +102 -15
- package/package.json +7 -9
- package/src/lib/attr-changed.test.ts +34 -0
- package/src/lib/attr-changed.ts +15 -0
- package/src/lib/attr.test.ts +159 -97
- package/src/lib/attr.ts +26 -33
- package/src/lib/element.test.ts +95 -71
- package/src/lib/element.ts +107 -51
- package/src/lib/lifecycle.test.ts +31 -0
- package/src/lib/lifecycle.ts +9 -0
- package/src/lib/listen.test.ts +104 -0
- package/src/lib/listen.ts +27 -7
- package/src/lib/metadata.ts +21 -8
- package/src/lib/query.test.ts +21 -47
- package/src/lib/query.ts +2 -8
- package/src/lib/result.ts +1 -21
- package/src/lib/tags.ts +27 -12
- package/src/lib/template.test.ts +123 -0
- package/src/lib/template.ts +118 -0
- package/src/lib.ts +3 -2
- package/target/lib/attr-changed.d.ts +1 -0
- package/target/lib/attr-changed.js +10 -0
- package/target/lib/attr-changed.js.map +1 -0
- package/target/lib/attr-changed.test.d.ts +1 -0
- package/target/lib/attr-changed.test.js +54 -0
- package/target/lib/attr-changed.test.js.map +1 -0
- package/target/lib/attr.d.ts +3 -1
- package/target/lib/attr.js +23 -25
- package/target/lib/attr.js.map +1 -1
- package/target/lib/attr.test.js +373 -251
- package/target/lib/attr.test.js.map +1 -1
- package/target/lib/element.d.ts +8 -339
- package/target/lib/element.js +81 -39
- package/target/lib/element.js.map +1 -1
- package/target/lib/element.test.js +154 -178
- package/target/lib/element.test.js.map +1 -1
- package/target/lib/lifecycle.d.ts +1 -0
- package/target/lib/lifecycle.js +8 -0
- package/target/lib/lifecycle.js.map +1 -0
- package/target/lib/lifecycle.test.d.ts +1 -0
- package/target/lib/lifecycle.test.js +48 -0
- package/target/lib/lifecycle.test.js.map +1 -0
- package/target/lib/listen.d.ts +2 -2
- package/target/lib/listen.js +18 -3
- package/target/lib/listen.js.map +1 -1
- package/target/lib/listen.test.d.ts +1 -0
- package/target/lib/listen.test.js +167 -0
- package/target/lib/listen.test.js.map +1 -0
- package/target/lib/metadata.d.ts +20 -10
- package/target/lib/metadata.js +8 -2
- package/target/lib/metadata.js.map +1 -1
- package/target/lib/query.d.ts +1 -1
- package/target/lib/query.js +1 -6
- package/target/lib/query.js.map +1 -1
- package/target/lib/query.test.js +35 -74
- package/target/lib/query.test.js.map +1 -1
- package/target/lib/result.d.ts +1 -8
- package/target/lib/result.js +1 -14
- package/target/lib/result.js.map +1 -1
- package/target/lib/tags.d.ts +10 -6
- package/target/lib/tags.js +20 -11
- package/target/lib/tags.js.map +1 -1
- package/target/lib/template.d.ts +11 -0
- package/target/lib/template.js +87 -0
- package/target/lib/template.js.map +1 -0
- package/target/lib/template.test.d.ts +1 -0
- package/target/lib/template.test.js +91 -0
- package/target/lib/template.test.js.map +1 -0
- package/target/lib.d.ts +3 -2
- package/target/lib.js +3 -2
- package/target/lib.js.map +1 -1
|
@@ -0,0 +1,167 @@
|
|
|
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
|
+
document.body.append(el);
|
|
41
|
+
el.dispatchEvent(new Event('click'));
|
|
42
|
+
el.remove();
|
|
43
|
+
});
|
|
44
|
+
it('should add listener to the shadow root if available', (done) => {
|
|
45
|
+
let MyElement = (() => {
|
|
46
|
+
let _classDecorators = [element({
|
|
47
|
+
tagName: 'listener-2',
|
|
48
|
+
shadowDom: []
|
|
49
|
+
})];
|
|
50
|
+
let _classDescriptor;
|
|
51
|
+
let _classExtraInitializers = [];
|
|
52
|
+
let _classThis;
|
|
53
|
+
let _classSuper = HTMLElement;
|
|
54
|
+
let _instanceExtraInitializers = [];
|
|
55
|
+
let _onClick_decorators;
|
|
56
|
+
var MyElement = class extends _classSuper {
|
|
57
|
+
static { _classThis = this; }
|
|
58
|
+
static {
|
|
59
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
60
|
+
_onClick_decorators = [listen('click')];
|
|
61
|
+
__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);
|
|
62
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
63
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
64
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
65
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
66
|
+
}
|
|
67
|
+
onClick(e) {
|
|
68
|
+
assert.equal(e.type, 'click');
|
|
69
|
+
done();
|
|
70
|
+
}
|
|
71
|
+
constructor() {
|
|
72
|
+
super(...arguments);
|
|
73
|
+
__runInitializers(this, _instanceExtraInitializers);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
return MyElement = _classThis;
|
|
77
|
+
})();
|
|
78
|
+
const el = new MyElement();
|
|
79
|
+
document.body.append(el);
|
|
80
|
+
el.shadowRoot.dispatchEvent(new Event('click'));
|
|
81
|
+
el.remove();
|
|
82
|
+
});
|
|
83
|
+
it('should restrict argument to an event or an event subtype', (done) => {
|
|
84
|
+
class CustomEvent extends Event {
|
|
85
|
+
test = 'Hello World';
|
|
86
|
+
constructor() {
|
|
87
|
+
super('customevent');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
let MyElement = (() => {
|
|
91
|
+
let _classDecorators = [element({
|
|
92
|
+
tagName: 'listener-3'
|
|
93
|
+
})];
|
|
94
|
+
let _classDescriptor;
|
|
95
|
+
let _classExtraInitializers = [];
|
|
96
|
+
let _classThis;
|
|
97
|
+
let _classSuper = HTMLElement;
|
|
98
|
+
let _instanceExtraInitializers = [];
|
|
99
|
+
let _onClick_decorators;
|
|
100
|
+
var MyElement = class extends _classSuper {
|
|
101
|
+
static { _classThis = this; }
|
|
102
|
+
static {
|
|
103
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
104
|
+
_onClick_decorators = [listen('customevent')];
|
|
105
|
+
__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);
|
|
106
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
107
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
108
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
109
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
110
|
+
}
|
|
111
|
+
onClick(e) {
|
|
112
|
+
assert.equal(e.type, 'customevent');
|
|
113
|
+
done();
|
|
114
|
+
}
|
|
115
|
+
constructor() {
|
|
116
|
+
super(...arguments);
|
|
117
|
+
__runInitializers(this, _instanceExtraInitializers);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
return MyElement = _classThis;
|
|
121
|
+
})();
|
|
122
|
+
const el = new MyElement();
|
|
123
|
+
document.body.append(el);
|
|
124
|
+
el.dispatchEvent(new CustomEvent());
|
|
125
|
+
el.remove();
|
|
126
|
+
});
|
|
127
|
+
it('should respect a provided selector function', (done) => {
|
|
128
|
+
let MyElement = (() => {
|
|
129
|
+
let _classDecorators = [element({
|
|
130
|
+
tagName: 'listener-4',
|
|
131
|
+
shadowDom: []
|
|
132
|
+
})];
|
|
133
|
+
let _classDescriptor;
|
|
134
|
+
let _classExtraInitializers = [];
|
|
135
|
+
let _classThis;
|
|
136
|
+
let _classSuper = HTMLElement;
|
|
137
|
+
let _instanceExtraInitializers = [];
|
|
138
|
+
let _onClick_decorators;
|
|
139
|
+
var MyElement = class extends _classSuper {
|
|
140
|
+
static { _classThis = this; }
|
|
141
|
+
static {
|
|
142
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
143
|
+
_onClick_decorators = [listen('click', (host) => host)];
|
|
144
|
+
__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);
|
|
145
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
146
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
147
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
148
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
149
|
+
}
|
|
150
|
+
onClick(e) {
|
|
151
|
+
assert.equal(e.type, 'click');
|
|
152
|
+
done();
|
|
153
|
+
}
|
|
154
|
+
constructor() {
|
|
155
|
+
super(...arguments);
|
|
156
|
+
__runInitializers(this, _instanceExtraInitializers);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
return MyElement = _classThis;
|
|
160
|
+
})();
|
|
161
|
+
const el = new MyElement();
|
|
162
|
+
document.body.append(el);
|
|
163
|
+
el.dispatchEvent(new Event('click'));
|
|
164
|
+
el.remove();
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
//# 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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"}
|
package/target/lib/metadata.d.ts
CHANGED
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
export interface AttrDef {
|
|
2
2
|
propName: string | symbol;
|
|
3
|
-
attrName: string;
|
|
4
3
|
observe: boolean;
|
|
4
|
+
reflect: boolean;
|
|
5
|
+
getPropValue: Function;
|
|
6
|
+
setPropValue: Function;
|
|
5
7
|
}
|
|
6
|
-
export type
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
root: ListenerRootSelector;
|
|
12
|
-
}>;
|
|
8
|
+
export type ListenerSelector<T> = (el: T) => Element | ShadowRoot | null;
|
|
9
|
+
export interface Listener<T> {
|
|
10
|
+
event: string;
|
|
11
|
+
cb: (e: Event) => void;
|
|
12
|
+
selector: ListenerSelector<T>;
|
|
13
13
|
}
|
|
14
|
-
export declare class
|
|
15
|
-
|
|
14
|
+
export declare class AttrMetadata extends Map<string, AttrDef> {
|
|
15
|
+
}
|
|
16
|
+
export declare class AttrChangeMetadata extends Map<string, Set<Function>> {
|
|
17
|
+
}
|
|
18
|
+
export declare class ElementMetadata<T> {
|
|
19
|
+
attrs: AttrMetadata;
|
|
20
|
+
attrChanges: AttrChangeMetadata;
|
|
21
|
+
listeners: Listener<T>[];
|
|
22
|
+
onReady: Set<Function>;
|
|
23
|
+
}
|
|
24
|
+
export declare class MetadataStore extends WeakMap<object, ElementMetadata<unknown>> {
|
|
25
|
+
read<T>(value: object): ElementMetadata<T>;
|
|
16
26
|
}
|
|
17
27
|
export declare const metadataStore: MetadataStore;
|
package/target/lib/metadata.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
Symbol.metadata ??= Symbol('Symbol.metadata');
|
|
2
|
+
export class AttrMetadata extends Map {
|
|
3
|
+
}
|
|
4
|
+
export class AttrChangeMetadata extends Map {
|
|
5
|
+
}
|
|
2
6
|
export class ElementMetadata {
|
|
3
|
-
attrs =
|
|
4
|
-
|
|
7
|
+
attrs = new AttrMetadata();
|
|
8
|
+
attrChanges = new AttrChangeMetadata();
|
|
9
|
+
listeners = [];
|
|
10
|
+
onReady = new Set();
|
|
5
11
|
}
|
|
6
12
|
export class MetadataStore extends WeakMap {
|
|
7
13
|
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;
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAAC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAkBvD,MAAM,OAAO,YAAa,SAAQ,GAAoB;CAAG;AACzD,MAAM,OAAO,kBAAmB,SAAQ,GAA0B;CAAG;AAErE,MAAM,OAAO,eAAe;IAC1B,KAAK,GAAiB,IAAI,YAAY,EAAE,CAAC;IACzC,WAAW,GAAuB,IAAI,kBAAkB,EAAE,CAAC;IAC3D,SAAS,GAAkB,EAAE,CAAC;IAC9B,OAAO,GAAkB,IAAI,GAAG,EAAE,CAAC;CACpC;AAED,MAAM,OAAO,aAAc,SAAQ,OAAyC;IAC1E,IAAI,CAAI,KAAa;QACnB,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,GAAkB,IAAI,aAAa,EAAE,CAAC"}
|
package/target/lib/query.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ type QueryResult<T> = (updates?: Partial<T>) => T;
|
|
|
5
5
|
export declare function query<K extends Tags>(selectors: K): QueryResult<HTMLElementTagNameMap[K]>;
|
|
6
6
|
export declare function query<K extends SVGTags>(selectors: K): QueryResult<SVGElementTagNameMap[K]>;
|
|
7
7
|
export declare function query<K extends MathTags>(selectors: K): QueryResult<MathMLElementTagNameMap[K]>;
|
|
8
|
-
export declare function query<E extends
|
|
8
|
+
export declare function query<E extends HTMLElement = HTMLElement>(selectors: string): QueryResult<E>;
|
|
9
9
|
export {};
|
package/target/lib/query.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export function query(query) {
|
|
2
2
|
let res = null;
|
|
3
|
-
return function (
|
|
3
|
+
return function () {
|
|
4
4
|
if (res) {
|
|
5
5
|
return res;
|
|
6
6
|
}
|
|
@@ -13,11 +13,6 @@ export function query(query) {
|
|
|
13
13
|
if (!res) {
|
|
14
14
|
throw new Error('could not find element');
|
|
15
15
|
}
|
|
16
|
-
if (updates) {
|
|
17
|
-
for (let update in updates) {
|
|
18
|
-
Reflect.set(res, update, updates[update]);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
16
|
return res;
|
|
22
17
|
};
|
|
23
18
|
}
|
package/target/lib/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/lib/query.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,KAAK,CAAiB,KAAQ;IAC5C,IAAI,GAAG,GAAoC,IAAI,CAAC;IAEhD,OAAO
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/lib/query.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,KAAK,CAAiB,KAAQ;IAC5C,IAAI,GAAG,GAAoC,IAAI,CAAC;IAEhD,OAAO;QACL,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAI,KAAK,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,IAAI,CAAC,aAAa,CAAI,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC"}
|
package/target/lib/query.test.js
CHANGED
|
@@ -1,80 +1,41 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { expect } from '
|
|
2
|
+
import { expect } from 'chai';
|
|
3
3
|
import { element } from './element.js';
|
|
4
4
|
import { query } from './query.js';
|
|
5
5
|
import { html } from './tags.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
let
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
expect(el.lname()).to.equal(el.shadowRoot?.querySelector('#lname'));
|
|
41
|
-
});
|
|
42
|
-
it('should patch the selected item', () => {
|
|
43
|
-
let MyElement = (() => {
|
|
44
|
-
let _classDecorators = [element({
|
|
45
|
-
tagName: 'query-test-2',
|
|
46
|
-
shadow: [
|
|
47
|
-
html `
|
|
48
|
-
<form>
|
|
49
|
-
<input id="fname" name="fname" />
|
|
50
|
-
<input id="lname" name="lname" />
|
|
51
|
-
</form>
|
|
52
|
-
`
|
|
53
|
-
]
|
|
54
|
-
})];
|
|
55
|
-
let _classDescriptor;
|
|
56
|
-
let _classExtraInitializers = [];
|
|
57
|
-
let _classThis;
|
|
58
|
-
let _classSuper = HTMLElement;
|
|
59
|
-
var MyElement = class extends _classSuper {
|
|
60
|
-
static { _classThis = this; }
|
|
61
|
-
static {
|
|
62
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
63
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
64
|
-
MyElement = _classThis = _classDescriptor.value;
|
|
65
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
66
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
67
|
-
}
|
|
68
|
-
fname = query('#fname');
|
|
69
|
-
lname = query('#lname');
|
|
70
|
-
};
|
|
71
|
-
return MyElement = _classThis;
|
|
72
|
-
})();
|
|
73
|
-
const el = new MyElement();
|
|
74
|
-
el.fname({ value: 'Foo' });
|
|
75
|
-
el.lname({ value: 'Bar' });
|
|
76
|
-
expect(el.shadowRoot?.querySelector('#fname')?.value).to.equal('Foo');
|
|
77
|
-
expect(el.shadowRoot?.querySelector('#lname')?.value).to.equal('Bar');
|
|
78
|
-
});
|
|
6
|
+
it('should work', () => {
|
|
7
|
+
let MyElement = (() => {
|
|
8
|
+
let _classDecorators = [element({
|
|
9
|
+
tagName: 'query-test-1',
|
|
10
|
+
shadowDom: [
|
|
11
|
+
html `
|
|
12
|
+
<form>
|
|
13
|
+
<input id="fname" name="fname" />
|
|
14
|
+
<input id="lname" name="lname" />
|
|
15
|
+
</form>
|
|
16
|
+
`
|
|
17
|
+
]
|
|
18
|
+
})];
|
|
19
|
+
let _classDescriptor;
|
|
20
|
+
let _classExtraInitializers = [];
|
|
21
|
+
let _classThis;
|
|
22
|
+
let _classSuper = HTMLElement;
|
|
23
|
+
var MyElement = class extends _classSuper {
|
|
24
|
+
static { _classThis = this; }
|
|
25
|
+
static {
|
|
26
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
27
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
28
|
+
MyElement = _classThis = _classDescriptor.value;
|
|
29
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
30
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
31
|
+
}
|
|
32
|
+
fname = query('#fname');
|
|
33
|
+
lname = query('#lname');
|
|
34
|
+
};
|
|
35
|
+
return MyElement = _classThis;
|
|
36
|
+
})();
|
|
37
|
+
const el = new MyElement();
|
|
38
|
+
expect(el.fname()).to.equal(el.shadowRoot?.querySelector('#fname'));
|
|
39
|
+
expect(el.lname()).to.equal(el.shadowRoot?.querySelector('#lname'));
|
|
79
40
|
});
|
|
80
41
|
//# sourceMappingURL=query.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.test.js","sourceRoot":"","sources":["../../src/lib/query.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"query.test.js","sourceRoot":"","sources":["../../src/lib/query.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QAYf,SAAS;gCAXd,OAAO,CAAC;gBACP,OAAO,EAAE,cAAc;gBACvB,SAAS,EAAE;oBACT,IAAI,CAAA;;;;;OAKH;iBACF;aACF,CAAC;;;;0BACsB,WAAW;6BAAnB,SAAQ,WAAW;;;;gBAAnC,6KAGC;;;gBAHK,uDAAS;;YACb,KAAK,GAAG,KAAK,CAAmB,QAAQ,CAAC,CAAC;YAC1C,KAAK,GAAG,KAAK,CAAmB,QAAQ,CAAC,CAAC;;;;IAG5C,MAAM,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC;IAE3B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC"}
|
package/target/lib/result.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
1
|
export interface ShadowResult {
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
export declare abstract class JoistShadowResult implements ShadowResult {
|
|
5
|
-
strings: TemplateStringsArray;
|
|
6
|
-
values: any[];
|
|
7
|
-
constructor(raw: TemplateStringsArray, ...values: any[]);
|
|
8
|
-
run(el: HTMLElement): void;
|
|
9
|
-
abstract setup(root: ShadowRoot): void;
|
|
2
|
+
apply(el: Element): void;
|
|
10
3
|
}
|
package/target/lib/result.js
CHANGED
|
@@ -1,15 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
strings;
|
|
3
|
-
values;
|
|
4
|
-
constructor(raw, ...values) {
|
|
5
|
-
this.strings = raw;
|
|
6
|
-
this.values = values;
|
|
7
|
-
}
|
|
8
|
-
run(el) {
|
|
9
|
-
if (!el.shadowRoot) {
|
|
10
|
-
throw new Error('ShadowResult has not been applied');
|
|
11
|
-
}
|
|
12
|
-
this.setup(el.shadowRoot);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
1
|
+
export {};
|
|
15
2
|
//# sourceMappingURL=result.js.map
|
package/target/lib/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/lib/result.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/lib/result.ts"],"names":[],"mappings":""}
|
package/target/lib/tags.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class HTMLResult extends
|
|
3
|
-
|
|
1
|
+
import { ShadowResult } from './result.js';
|
|
2
|
+
export declare class HTMLResult<T extends HTMLElement> implements ShadowResult {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(raw: TemplateStringsArray, ..._values: any[]);
|
|
5
|
+
apply(el: T): void;
|
|
4
6
|
}
|
|
5
|
-
export declare function html(strings: TemplateStringsArray, ...values: any[]): HTMLResult
|
|
6
|
-
export declare class CSSResult
|
|
7
|
-
|
|
7
|
+
export declare function html<T extends HTMLElement>(strings: TemplateStringsArray, ...values: any[]): HTMLResult<T>;
|
|
8
|
+
export declare class CSSResult implements ShadowResult {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(raw: TemplateStringsArray, ..._values: any[]);
|
|
11
|
+
apply(el: HTMLElement): void;
|
|
8
12
|
}
|
|
9
13
|
export declare function css(strings: TemplateStringsArray): CSSResult;
|
package/target/lib/tags.js
CHANGED
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
template.innerHTML = concat(
|
|
6
|
-
|
|
1
|
+
export class HTMLResult {
|
|
2
|
+
#template;
|
|
3
|
+
constructor(raw, ..._values) {
|
|
4
|
+
this.#template = document.createElement('template');
|
|
5
|
+
this.#template.innerHTML = concat(raw);
|
|
6
|
+
}
|
|
7
|
+
apply(el) {
|
|
8
|
+
if (el.shadowRoot) {
|
|
9
|
+
el.shadowRoot.append(this.#template.content.cloneNode(true));
|
|
10
|
+
}
|
|
7
11
|
}
|
|
8
12
|
}
|
|
9
13
|
export function html(strings, ...values) {
|
|
10
14
|
return new HTMLResult(strings, ...values);
|
|
11
15
|
}
|
|
12
|
-
export class CSSResult
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
sheet
|
|
16
|
-
|
|
16
|
+
export class CSSResult {
|
|
17
|
+
#sheet;
|
|
18
|
+
constructor(raw, ..._values) {
|
|
19
|
+
this.#sheet = new CSSStyleSheet();
|
|
20
|
+
this.#sheet.replaceSync(concat(raw));
|
|
21
|
+
}
|
|
22
|
+
apply(el) {
|
|
23
|
+
if (el.shadowRoot) {
|
|
24
|
+
el.shadowRoot.adoptedStyleSheets = [...el.shadowRoot.adoptedStyleSheets, this.#sheet];
|
|
25
|
+
}
|
|
17
26
|
}
|
|
18
27
|
}
|
|
19
28
|
export function css(strings) {
|
package/target/lib/tags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/lib/tags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/lib/tags.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAU;IACrB,SAAS,CAAC;IAEV,YAAY,GAAyB,EAAE,GAAG,OAAc;QACtD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,EAAK;QACT,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;YAClB,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,IAAI,CAClB,OAA6B,EAC7B,GAAG,MAAa;IAEhB,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC;IAEP,YAAY,GAAyB,EAAE,GAAG,OAAc;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,EAAe;QACnB,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;YAClB,EAAE,CAAC,UAAU,CAAC,kBAAkB,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,GAAG,CAAC,OAA6B;IAC/C,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,MAAM,CAAC,OAA6B;IAC3C,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type TemplateValueGetter = (key: string) => string;
|
|
2
|
+
export interface TemplateOpts {
|
|
3
|
+
value?: TemplateValueGetter;
|
|
4
|
+
tokenPrefix?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface RenderOpts {
|
|
7
|
+
refresh?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function template({ tokenPrefix, value }?: TemplateOpts): <T extends HTMLElement>(this: T, opts?: RenderOpts) => void;
|
|
10
|
+
export declare function getTemplateValue(obj: object, key: string): any;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
class Updates extends Set {
|
|
2
|
+
}
|
|
3
|
+
export function template({ tokenPrefix = '#:', value } = {}) {
|
|
4
|
+
let updates = null;
|
|
5
|
+
return function render(opts) {
|
|
6
|
+
if (!updates || opts?.refresh) {
|
|
7
|
+
updates = findUpdates(this, {
|
|
8
|
+
tokenPrefix,
|
|
9
|
+
value: value ?? ((key) => getTemplateValue(this, key))
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
for (let update of updates) {
|
|
14
|
+
update();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function findUpdates(el, opts) {
|
|
20
|
+
const iterator = document.createTreeWalker(el.shadowRoot ?? el, NodeFilter.SHOW_ELEMENT);
|
|
21
|
+
const updates = new Updates();
|
|
22
|
+
while (iterator.nextNode()) {
|
|
23
|
+
const res = trackElement(iterator.currentNode, updates, opts);
|
|
24
|
+
if (res !== null) {
|
|
25
|
+
iterator.currentNode = res;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return updates;
|
|
29
|
+
}
|
|
30
|
+
function trackElement(node, updates, opts) {
|
|
31
|
+
const element = node;
|
|
32
|
+
const getter = opts.value;
|
|
33
|
+
const tokenPrefix = opts.tokenPrefix;
|
|
34
|
+
for (let attr of element.attributes) {
|
|
35
|
+
const nodeValue = attr.value.trim();
|
|
36
|
+
const realAttributeName = attr.name.replace(tokenPrefix, '');
|
|
37
|
+
let update = null;
|
|
38
|
+
if (attr.name.startsWith(`${tokenPrefix}bind`)) {
|
|
39
|
+
update = () => {
|
|
40
|
+
const value = getter(attr.value);
|
|
41
|
+
if (element.textContent !== value) {
|
|
42
|
+
element.textContent = getter(attr.value);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else if (attr.name.startsWith(tokenPrefix)) {
|
|
47
|
+
const isBooleanAttr = nodeValue.startsWith('!');
|
|
48
|
+
const isPositive = nodeValue.startsWith('!!');
|
|
49
|
+
const propertyKey = nodeValue.replaceAll('!', '');
|
|
50
|
+
if (isBooleanAttr) {
|
|
51
|
+
update = () => {
|
|
52
|
+
let value = isPositive ? !!getter(propertyKey) : !getter(propertyKey);
|
|
53
|
+
if (value) {
|
|
54
|
+
element.setAttribute(realAttributeName, '');
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
element.removeAttribute(realAttributeName);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const realAttribute = document.createAttribute(realAttributeName);
|
|
63
|
+
element.setAttributeNode(realAttribute);
|
|
64
|
+
update = () => {
|
|
65
|
+
const value = getter(nodeValue);
|
|
66
|
+
if (realAttribute.value !== value) {
|
|
67
|
+
realAttribute.value = value;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (update) {
|
|
73
|
+
updates.add(update);
|
|
74
|
+
update();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
export function getTemplateValue(obj, key) {
|
|
80
|
+
const parsed = key.split('.');
|
|
81
|
+
let pointer = obj;
|
|
82
|
+
for (let part of parsed) {
|
|
83
|
+
pointer = pointer[part];
|
|
84
|
+
}
|
|
85
|
+
return pointer;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|