@mantou/gem 1.5.2 → 1.5.6
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/elements/dialog-base.js +1 -1
- package/elements/dialog-base.js.map +1 -1
- package/elements/modal-base.d.ts +45 -34
- package/elements/modal-base.d.ts.map +1 -1
- package/elements/modal-base.js +1 -1
- package/elements/modal-base.js.map +1 -1
- package/elements/route.d.ts +2 -2
- package/elements/route.d.ts.map +1 -1
- package/elements/route.js +11 -7
- package/elements/route.js.map +1 -1
- package/elements/use.d.ts +1 -0
- package/elements/use.d.ts.map +1 -1
- package/elements/use.js +4 -1
- package/elements/use.js.map +1 -1
- package/lib/element.d.ts +5 -5
- package/lib/element.d.ts.map +1 -1
- package/lib/element.js +21 -23
- package/lib/element.js.map +1 -1
- package/lib/utils.d.ts +4 -5
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +65 -40
- package/lib/utils.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +7 -7
- package/src/elements/dialog-base.ts +1 -1
- package/src/elements/modal-base.ts +1 -1
- package/src/elements/route.ts +12 -7
- package/src/elements/use.ts +3 -1
- package/src/examples/multi-page/page-c.ts +1 -0
- package/src/examples/ref-route/index.ts +3 -2
- package/src/lib/element.ts +26 -27
- package/src/lib/utils.ts +53 -40
- package/src/lib/version.ts +1 -1
- package/src/test/gem-element/advance.test.ts +8 -2
- package/src/test/utils.test.ts +9 -6
- package/umd.js +6 -6
- package/umd.js.map +1 -1
package/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"AACA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,QAW5C;AAWD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,IAAI,QAKnD;AAED,wBAAgB,gBAAgB,CAAC,WAAW,SAAK,EAAE,YAAY,SAAK,UAGnE;AAGD,oBAAY,YAAY,GAAG,MAAM,CAAC;AAElC,UAAU,kBAAkB;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,KAAK,CAAC;CACZ;AACD,UAAU,cAAc,CAAC,CAAC;IACxB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CAC1B;;;;;AAED,qBAAa,UAAU,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/utils.js
CHANGED
|
@@ -3,7 +3,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
3
3
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
|
-
var
|
|
6
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
7
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
11
|
+
};
|
|
12
|
+
var _LinkedList_instances, _LinkedList_map, _LinkedList_firstItem, _LinkedList_lastItem, _LinkedList_delete, _QueryString_stringify, _QueryString_parse;
|
|
7
13
|
const microtaskSet = new Set();
|
|
8
14
|
export function addMicrotask(func) {
|
|
9
15
|
if (typeof func !== 'function')
|
|
@@ -43,47 +49,68 @@ export function absoluteLocation(currentPath = '', relativePath = '') {
|
|
|
43
49
|
export class LinkedList extends (globalThis.EventTarget || Object) {
|
|
44
50
|
constructor() {
|
|
45
51
|
super(...arguments);
|
|
46
|
-
|
|
52
|
+
_LinkedList_instances.add(this);
|
|
53
|
+
_LinkedList_map.set(this, new Map());
|
|
54
|
+
_LinkedList_firstItem.set(this, void 0);
|
|
55
|
+
_LinkedList_lastItem.set(this, void 0);
|
|
56
|
+
}
|
|
57
|
+
get size() {
|
|
58
|
+
return __classPrivateFieldGet(this, _LinkedList_map, "f").size;
|
|
47
59
|
}
|
|
48
|
-
//
|
|
60
|
+
// 添加到尾部,已存在时会删除老的项目
|
|
61
|
+
// 如果是添加第一个,start 事件会在添加前触发,避免处理事件重复的逻辑
|
|
49
62
|
add(value) {
|
|
50
|
-
|
|
51
|
-
if (!this.firstItem) {
|
|
63
|
+
if (!__classPrivateFieldGet(this, _LinkedList_lastItem, "f")) {
|
|
52
64
|
this.dispatchEvent(new CustomEvent('start'));
|
|
53
|
-
this.firstItem = item;
|
|
54
65
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
66
|
+
const item = __classPrivateFieldGet(this, _LinkedList_instances, "m", _LinkedList_delete).call(this, value) || { value };
|
|
67
|
+
item.prev = __classPrivateFieldGet(this, _LinkedList_lastItem, "f");
|
|
68
|
+
if (item.prev) {
|
|
69
|
+
item.prev.next = item;
|
|
58
70
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (
|
|
62
|
-
|
|
63
|
-
existItem.prev.next = existItem.next;
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
this.firstItem = existItem.next;
|
|
67
|
-
}
|
|
68
|
-
if (existItem.next) {
|
|
69
|
-
existItem.next.prev = existItem.prev;
|
|
70
|
-
}
|
|
71
|
+
item.next = undefined;
|
|
72
|
+
__classPrivateFieldSet(this, _LinkedList_lastItem, item, "f");
|
|
73
|
+
if (!__classPrivateFieldGet(this, _LinkedList_firstItem, "f")) {
|
|
74
|
+
__classPrivateFieldSet(this, _LinkedList_firstItem, item, "f");
|
|
71
75
|
}
|
|
72
|
-
this.
|
|
76
|
+
__classPrivateFieldGet(this, _LinkedList_map, "f").set(value, item);
|
|
73
77
|
}
|
|
78
|
+
// 删除这个元素后没有其他元素时立即出发 end 事件
|
|
79
|
+
delete(value) {
|
|
80
|
+
const deleteItem = __classPrivateFieldGet(this, _LinkedList_instances, "m", _LinkedList_delete).call(this, value);
|
|
81
|
+
if (!__classPrivateFieldGet(this, _LinkedList_firstItem, "f")) {
|
|
82
|
+
this.dispatchEvent(new CustomEvent('end'));
|
|
83
|
+
}
|
|
84
|
+
return deleteItem;
|
|
85
|
+
}
|
|
86
|
+
// 获取头部元素
|
|
74
87
|
get() {
|
|
75
|
-
const firstItem = this
|
|
88
|
+
const firstItem = __classPrivateFieldGet(this, _LinkedList_firstItem, "f");
|
|
76
89
|
if (!firstItem)
|
|
77
90
|
return;
|
|
78
|
-
this.
|
|
79
|
-
this.firstItem = firstItem.next;
|
|
80
|
-
if (!this.firstItem) {
|
|
81
|
-
this.lastItem = undefined;
|
|
82
|
-
this.dispatchEvent(new CustomEvent('end'));
|
|
83
|
-
}
|
|
91
|
+
__classPrivateFieldGet(this, _LinkedList_instances, "m", _LinkedList_delete).call(this, firstItem.value);
|
|
84
92
|
return firstItem.value;
|
|
85
93
|
}
|
|
86
94
|
}
|
|
95
|
+
_LinkedList_map = new WeakMap(), _LinkedList_firstItem = new WeakMap(), _LinkedList_lastItem = new WeakMap(), _LinkedList_instances = new WeakSet(), _LinkedList_delete = function _LinkedList_delete(value) {
|
|
96
|
+
const existItem = __classPrivateFieldGet(this, _LinkedList_map, "f").get(value);
|
|
97
|
+
if (existItem) {
|
|
98
|
+
if (existItem.prev) {
|
|
99
|
+
existItem.prev.next = existItem.next;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
__classPrivateFieldSet(this, _LinkedList_firstItem, existItem.next, "f");
|
|
103
|
+
}
|
|
104
|
+
if (existItem.next) {
|
|
105
|
+
existItem.next.prev = existItem.prev;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
__classPrivateFieldSet(this, _LinkedList_lastItem, existItem.prev, "f");
|
|
109
|
+
}
|
|
110
|
+
__classPrivateFieldGet(this, _LinkedList_map, "f").delete(value);
|
|
111
|
+
}
|
|
112
|
+
return existItem;
|
|
113
|
+
};
|
|
87
114
|
export class PropProxyMap extends WeakMap {
|
|
88
115
|
get(ele) {
|
|
89
116
|
let proxy = super.get(ele);
|
|
@@ -94,13 +121,10 @@ export class PropProxyMap extends WeakMap {
|
|
|
94
121
|
return proxy;
|
|
95
122
|
}
|
|
96
123
|
}
|
|
97
|
-
export function isObject(value) {
|
|
98
|
-
return typeof value === 'object';
|
|
99
|
-
}
|
|
100
124
|
export class QueryString extends URLSearchParams {
|
|
101
125
|
constructor(param) {
|
|
102
126
|
super(param);
|
|
103
|
-
_QueryString_stringify.set(this, (value) => (
|
|
127
|
+
_QueryString_stringify.set(this, (value) => (typeof value === 'string' ? value : JSON.stringify(value)));
|
|
104
128
|
_QueryString_parse.set(this, (value) => {
|
|
105
129
|
if (!value)
|
|
106
130
|
return null;
|
|
@@ -111,10 +135,8 @@ export class QueryString extends URLSearchParams {
|
|
|
111
135
|
return null;
|
|
112
136
|
}
|
|
113
137
|
});
|
|
114
|
-
if (param instanceof QueryString) {
|
|
115
|
-
return param;
|
|
116
|
-
}
|
|
117
138
|
}
|
|
139
|
+
// support `{ key: ObjectValue }`
|
|
118
140
|
concat(param) {
|
|
119
141
|
let query;
|
|
120
142
|
if (typeof param === 'string') {
|
|
@@ -123,8 +145,8 @@ export class QueryString extends URLSearchParams {
|
|
|
123
145
|
else {
|
|
124
146
|
query = param;
|
|
125
147
|
}
|
|
126
|
-
Object.
|
|
127
|
-
this.append(key,
|
|
148
|
+
Object.entries(query).forEach(([key, value]) => {
|
|
149
|
+
this.append(key, __classPrivateFieldGet(this, _QueryString_stringify, "f").call(this, value));
|
|
128
150
|
});
|
|
129
151
|
}
|
|
130
152
|
setAny(key, value) {
|
|
@@ -133,7 +155,8 @@ export class QueryString extends URLSearchParams {
|
|
|
133
155
|
value.forEach((e) => this.append(key, __classPrivateFieldGet(this, _QueryString_stringify, "f").call(this, e)));
|
|
134
156
|
}
|
|
135
157
|
else {
|
|
136
|
-
|
|
158
|
+
const v = __classPrivateFieldGet(this, _QueryString_stringify, "f").call(this, value);
|
|
159
|
+
v ? this.set(key, v) : this.delete(key);
|
|
137
160
|
}
|
|
138
161
|
}
|
|
139
162
|
getAny(key) {
|
|
@@ -278,7 +301,9 @@ export function removeItems(target, items) {
|
|
|
278
301
|
export function styleMap(obj) {
|
|
279
302
|
let styleString = '';
|
|
280
303
|
for (const key in obj) {
|
|
281
|
-
|
|
304
|
+
if (obj[key]) {
|
|
305
|
+
styleString += `${camelToKebabCase(key)}:${obj[key]};`;
|
|
306
|
+
}
|
|
282
307
|
}
|
|
283
308
|
return styleString;
|
|
284
309
|
}
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.5.
|
|
1
|
+
export declare const version = "1.5.6";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantou/gem",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.6",
|
|
4
4
|
"description": "💎 使用自定义元素的轻量级 WebApp 开发框架",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "index.js",
|
|
@@ -20,18 +20,18 @@
|
|
|
20
20
|
"typings": "index.d.ts",
|
|
21
21
|
"scripts": {
|
|
22
22
|
"docs": "npx gem-book docs",
|
|
23
|
-
"build:docs": "
|
|
23
|
+
"build:docs": "yarn docs -- --build",
|
|
24
24
|
"lint": "tsc --noEmit && eslint --ext .ts --fix src/",
|
|
25
25
|
"clean": "node -e \"fs.readdirSync('src').map(dir => require('rimraf').sync(dir))\"",
|
|
26
26
|
"example": "cross-env NODE_ENV=development webpack serve",
|
|
27
27
|
"build:examples": "rimraf build && node scripts/build-examples",
|
|
28
|
-
"build:module": "
|
|
28
|
+
"build:module": "yarn clean && tsc",
|
|
29
29
|
"build:umd": "cross-env NODE_ENV=production webpack --config webpack.config.umd.js",
|
|
30
|
-
"build": "
|
|
31
|
-
"prepare": "
|
|
32
|
-
"prepublishOnly": "
|
|
30
|
+
"build": "yarn build:module && yarn build:umd",
|
|
31
|
+
"prepare": "yarn build",
|
|
32
|
+
"prepublishOnly": "yarn lint && yarn test",
|
|
33
33
|
"release": "node scripts/release",
|
|
34
|
-
"test": "
|
|
34
|
+
"test": "yarn build:module && karma start --coverage"
|
|
35
35
|
},
|
|
36
36
|
"repository": {
|
|
37
37
|
"type": "git",
|
package/src/elements/route.ts
CHANGED
|
@@ -60,6 +60,7 @@ export interface RouteItem<T = unknown> {
|
|
|
60
60
|
// 支持 *
|
|
61
61
|
// 支持 /a/*
|
|
62
62
|
// 不支持相对路径
|
|
63
|
+
// 不能匹配查询字符串
|
|
63
64
|
pattern: string;
|
|
64
65
|
redirect?: string;
|
|
65
66
|
content?: TemplateResult;
|
|
@@ -109,7 +110,7 @@ type State = {
|
|
|
109
110
|
/**
|
|
110
111
|
* @customElement gem-route
|
|
111
112
|
* @attr inert 暂停路由更新
|
|
112
|
-
* @fires change
|
|
113
|
+
* @fires route-change
|
|
113
114
|
* @fires error
|
|
114
115
|
* @fires loading
|
|
115
116
|
*/
|
|
@@ -124,7 +125,7 @@ export class GemRouteElement extends GemElement<State> {
|
|
|
124
125
|
*/
|
|
125
126
|
@property locationStore?: Store<{ path: string; params: Params; query: QueryString; data?: any }>;
|
|
126
127
|
@property key: any; // 除了 href 提供另外一种方式来更新,比如语言更新也需要刷新 <gem-route>
|
|
127
|
-
@emitter
|
|
128
|
+
@emitter routeChange: Emitter<RouteItem | null>; // path 改变或者 key 改变,包含初始渲染
|
|
128
129
|
@emitter loading: Emitter<RouteItem>;
|
|
129
130
|
@emitter error: Emitter<any>;
|
|
130
131
|
|
|
@@ -186,7 +187,7 @@ export class GemRouteElement extends GemElement<State> {
|
|
|
186
187
|
this.currentRoute = route;
|
|
187
188
|
this.currentParams = params;
|
|
188
189
|
this.setState({ content });
|
|
189
|
-
this.
|
|
190
|
+
this.routeChange(this.currentRoute);
|
|
190
191
|
const title = route?.title;
|
|
191
192
|
if (title) updateStore(titleStore, { title });
|
|
192
193
|
this.#updateLocationStore();
|
|
@@ -194,7 +195,12 @@ export class GemRouteElement extends GemElement<State> {
|
|
|
194
195
|
|
|
195
196
|
mounted() {
|
|
196
197
|
this.effect(
|
|
197
|
-
([
|
|
198
|
+
([key, path], old) => {
|
|
199
|
+
// 只有查询参数改变
|
|
200
|
+
if (old && key === old[0] && path === old[1]) {
|
|
201
|
+
this.#updateLocationStore();
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
198
204
|
const { route, params = {} } = GemRouteElement.findRoute(this.routes, path);
|
|
199
205
|
const { redirect, content, getContent } = route || {};
|
|
200
206
|
if (redirect) {
|
|
@@ -219,10 +225,9 @@ export class GemRouteElement extends GemElement<State> {
|
|
|
219
225
|
},
|
|
220
226
|
() => {
|
|
221
227
|
const { path } = history.getParams();
|
|
222
|
-
return [this.key, path];
|
|
228
|
+
return [this.key, path, location.search];
|
|
223
229
|
},
|
|
224
230
|
);
|
|
225
|
-
this.effect(this.#updateLocationStore, () => [location.search]);
|
|
226
231
|
}
|
|
227
232
|
|
|
228
233
|
shouldUpdate() {
|
|
@@ -241,7 +246,7 @@ export class GemRouteElement extends GemElement<State> {
|
|
|
241
246
|
display: contents;
|
|
242
247
|
}
|
|
243
248
|
</style>
|
|
244
|
-
${content}
|
|
249
|
+
${content ?? html`<slot></slot>`}
|
|
245
250
|
`;
|
|
246
251
|
}
|
|
247
252
|
}
|
package/src/elements/use.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GemElement, html, attribute, property, customElement } from '../';
|
|
1
|
+
import { GemElement, html, attribute, property, customElement, state } from '../';
|
|
2
2
|
|
|
3
3
|
const eleCache = new Map<string, HTMLTemplateElement>();
|
|
4
4
|
/**
|
|
@@ -17,6 +17,8 @@ export class GemUseElement extends GemElement {
|
|
|
17
17
|
@property root?: HTMLElement | Document | ShadowRoot;
|
|
18
18
|
@property element?: string | DocumentFragment | Element;
|
|
19
19
|
|
|
20
|
+
@state active: boolean;
|
|
21
|
+
|
|
20
22
|
private getContent() {
|
|
21
23
|
const ele = this.element || (this.selector ? (this.root || document).querySelector(this.selector) : null);
|
|
22
24
|
if (typeof ele === 'string') {
|
|
@@ -7,7 +7,8 @@ import '../elements/layout';
|
|
|
7
7
|
|
|
8
8
|
const homeRoute: RouteItem = {
|
|
9
9
|
pattern: '/',
|
|
10
|
-
getContent(params) {
|
|
10
|
+
async getContent(params) {
|
|
11
|
+
await new Promise((res) => setTimeout(res, 1000));
|
|
11
12
|
return html`<route-home .params=${params}></route-home>`;
|
|
12
13
|
},
|
|
13
14
|
};
|
|
@@ -88,7 +89,7 @@ export class App extends GemElement {
|
|
|
88
89
|
<gem-route
|
|
89
90
|
ref=${this.routeRef.ref}
|
|
90
91
|
@loading=${console.log}
|
|
91
|
-
@change=${console.log}
|
|
92
|
+
@route-change=${console.log}
|
|
92
93
|
@error=${console.error}
|
|
93
94
|
.routes=${routes}
|
|
94
95
|
.locationStore=${locationStore}
|
package/src/lib/element.ts
CHANGED
|
@@ -25,11 +25,10 @@ export { ifDefined } from 'lit-html/directives/if-defined';
|
|
|
25
25
|
type CustomStateSet = Set<string>;
|
|
26
26
|
|
|
27
27
|
declare global {
|
|
28
|
-
interface ElementInternals {
|
|
28
|
+
interface ElementInternals extends ARIAMixin {
|
|
29
29
|
states: CustomStateSet;
|
|
30
30
|
// https://w3c.github.io/aria/#role_definitions
|
|
31
31
|
role?: string;
|
|
32
|
-
ariaModal?: boolean;
|
|
33
32
|
}
|
|
34
33
|
// 用于 css 选择器选择元素,使用 @refobject 自动选择获取
|
|
35
34
|
// 必须使用 attr 赋值
|
|
@@ -38,8 +37,8 @@ declare global {
|
|
|
38
37
|
* @attr inert
|
|
39
38
|
*/
|
|
40
39
|
interface HTMLElement {
|
|
41
|
-
attachInternals
|
|
42
|
-
inert
|
|
40
|
+
attachInternals: () => ElementInternals;
|
|
41
|
+
inert: boolean;
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
44
|
|
|
@@ -53,20 +52,15 @@ function execCallback(fun: any) {
|
|
|
53
52
|
|
|
54
53
|
// global render task pool
|
|
55
54
|
const asyncRenderTaskList = new LinkedList<() => void>();
|
|
56
|
-
const tick = () => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (task) {
|
|
64
|
-
task();
|
|
65
|
-
callback(timestamp);
|
|
66
|
-
}
|
|
67
|
-
});
|
|
55
|
+
const tick = (timeStamp = performance.now()) => {
|
|
56
|
+
if (performance.now() > timeStamp + 16) return requestAnimationFrame(tick);
|
|
57
|
+
const task = asyncRenderTaskList.get();
|
|
58
|
+
if (task) {
|
|
59
|
+
task();
|
|
60
|
+
tick(timeStamp);
|
|
61
|
+
}
|
|
68
62
|
};
|
|
69
|
-
asyncRenderTaskList.addEventListener('start', tick);
|
|
63
|
+
asyncRenderTaskList.addEventListener('start', () => addMicrotask(tick));
|
|
70
64
|
|
|
71
65
|
type GetDepFun<T> = () => T;
|
|
72
66
|
type EffectCallback<T> = (depValues: T, oldDepValues?: T) => any;
|
|
@@ -164,7 +158,7 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
|
|
|
164
158
|
if (!this.attachInternals) {
|
|
165
159
|
// https://bugs.webkit.org/show_bug.cgi?id=197960
|
|
166
160
|
this.attachInternals = () => {
|
|
167
|
-
return { states: getCustomStateSet() };
|
|
161
|
+
return { states: getCustomStateSet() } as any;
|
|
168
162
|
};
|
|
169
163
|
}
|
|
170
164
|
this.#internals = this.attachInternals();
|
|
@@ -198,7 +192,7 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
|
|
|
198
192
|
list?.forEach((effectItem) => {
|
|
199
193
|
const { callback, getDep, values, preCallback } = effectItem;
|
|
200
194
|
const newValues = getDep?.();
|
|
201
|
-
if (!getDep || isArrayChange(values, newValues)) {
|
|
195
|
+
if (!getDep || !values || isArrayChange(values, newValues)) {
|
|
202
196
|
execCallback(preCallback);
|
|
203
197
|
effectItem.preCallback = callback(newValues, values);
|
|
204
198
|
effectItem.values = newValues;
|
|
@@ -235,15 +229,17 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
|
|
|
235
229
|
getDep?: T extends any[] ? () => [...T] : undefined,
|
|
236
230
|
) => {
|
|
237
231
|
if (!this.#effectList) this.#effectList = [];
|
|
238
|
-
const values = getDep?.() as T;
|
|
239
232
|
const effectItem: EffectItem<T> = {
|
|
240
233
|
callback,
|
|
241
234
|
getDep,
|
|
242
|
-
values,
|
|
235
|
+
values: undefined,
|
|
243
236
|
initialized: !!this.isConnected,
|
|
244
237
|
};
|
|
245
238
|
// 以挂载时立即执行副作用,未挂载时等挂载后执行
|
|
246
|
-
if (this.isConnected)
|
|
239
|
+
if (this.isConnected) {
|
|
240
|
+
effectItem.values = getDep?.() as T;
|
|
241
|
+
effectItem.preCallback = callback(effectItem.values);
|
|
242
|
+
}
|
|
247
243
|
this.#effectList.push(effectItem);
|
|
248
244
|
};
|
|
249
245
|
|
|
@@ -279,7 +275,8 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
|
|
|
279
275
|
this.#effectList?.forEach((effectItem) => {
|
|
280
276
|
const { callback, getDep, initialized } = effectItem;
|
|
281
277
|
if (!initialized) {
|
|
282
|
-
effectItem.
|
|
278
|
+
effectItem.values = getDep?.();
|
|
279
|
+
effectItem.preCallback = callback(effectItem.values);
|
|
283
280
|
effectItem.initialized = true;
|
|
284
281
|
}
|
|
285
282
|
});
|
|
@@ -378,14 +375,16 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
|
|
|
378
375
|
}
|
|
379
376
|
};
|
|
380
377
|
|
|
381
|
-
closestElement(
|
|
382
|
-
|
|
383
|
-
|
|
378
|
+
closestElement<K extends keyof HTMLElementTagNameMap>(tag: K): HTMLElementTagNameMap[K] | null;
|
|
379
|
+
closestElement<K extends abstract new (...args: any) => any>(constructor: K): InstanceType<K> | null;
|
|
380
|
+
closestElement<K extends abstract new (...args: any) => any>(constructorOrTag: K | string): Element | null {
|
|
381
|
+
const isConstructor = typeof constructorOrTag === 'function';
|
|
382
|
+
const tagName = typeof constructorOrTag === 'string' && constructorOrTag.toUpperCase();
|
|
384
383
|
const getRootElement = (ele: Element): Element | null => {
|
|
385
384
|
const rootEle = ele.parentElement || (ele.getRootNode() as ShadowRoot).host;
|
|
386
385
|
if (!rootEle) return null;
|
|
387
386
|
if (isConstructor) {
|
|
388
|
-
if (rootEle.constructor ===
|
|
387
|
+
if (rootEle.constructor === constructorOrTag) {
|
|
389
388
|
return rootEle;
|
|
390
389
|
}
|
|
391
390
|
} else if (rootEle.tagName === tagName) {
|