@mantou/gem 2.2.4 → 2.2.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/dist/gem.js +36 -0
- package/dist/gem.mjs +36 -0
- package/elements/base/gesture.d.ts.map +1 -1
- package/elements/base/gesture.js +14 -0
- package/elements/base/gesture.js.map +1 -1
- package/helper/hmr.d.ts.map +1 -1
- package/helper/hmr.js +116 -111
- package/helper/hmr.js.map +1 -1
- package/helper/request.d.ts.map +1 -1
- package/helper/request.js +2 -0
- package/helper/request.js.map +1 -1
- package/lib/history.d.ts.map +1 -1
- package/lib/history.js +1 -1
- package/lib/history.js.map +1 -1
- package/lib/lit-html.d.ts.map +1 -1
- package/lib/lit-html.js +11 -0
- package/lib/lit-html.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +8 -7
- package/lib/utils.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +5 -4
- package/src/elements/base/gesture.ts +13 -0
- package/src/helper/hmr.ts +132 -126
- package/src/helper/request.ts +1 -0
- package/src/lib/history.ts +3 -1
- package/src/lib/lit-html.ts +9 -0
- package/src/lib/utils.ts +6 -6
- package/src/lib/version.ts +1 -1
- package/src/test/lit-html.test.ts +19 -0
- package/src/test/utils.test.ts +24 -0
- package/dist/gem.es.js +0 -2731
- package/dist/gem.umd.js +0 -44
package/lib/utils.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ export declare class LinkedList<T = any> extends EventTarget {
|
|
|
33
33
|
get size(): number;
|
|
34
34
|
get first(): LinkedListItem<T> | undefined;
|
|
35
35
|
get last(): LinkedListItem<T> | undefined;
|
|
36
|
-
isSuperLinkOf(subLink: LinkedList<T
|
|
36
|
+
isSuperLinkOf(subLink: LinkedList<T>, allowGap?: boolean): boolean;
|
|
37
37
|
find(value: T): LinkedListItem<T> | undefined;
|
|
38
38
|
/**
|
|
39
39
|
* 添加到尾部,已存在时会删除老的项目
|
package/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"AAGA,iBAAS,cAAc,CAAC,EAAE,EAAE,MAAM,IAAI,QAErC;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,MAAM,wBAAiB,QAOrE;AAED,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC;IACd,SAAS,EAAE,KAAK,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC;IACd,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC1B,CAAC;AAGF,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GASvE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CACnD;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAGrG,wBAAgB,gBAAgB,CAAC,WAAW,SAAK,EAAE,YAAY,SAAK,UAGnE;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAC5F,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EACV,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EACd,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAIf;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,KAAK,CAAC;CACZ;AACD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,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,GAAG,GAAG,CAAE,SAAQ,WAAW;;IAC1C,gBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC3D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,GAAG,EACjE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,KACxC,IAAI,CAAC;IAwBV,IAAI,IAAI,WAEP;IAED,IAAI,KAAK,kCAER;IAED,IAAI,IAAI,kCAEP;IAED,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,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
|
@@ -66,18 +66,19 @@ export class LinkedList extends EventTarget {
|
|
|
66
66
|
get last() {
|
|
67
67
|
return this.#lastItem;
|
|
68
68
|
}
|
|
69
|
-
isSuperLinkOf(subLink) {
|
|
69
|
+
isSuperLinkOf(subLink, allowGap = false) {
|
|
70
70
|
let subItem = subLink.first;
|
|
71
71
|
if (!subItem)
|
|
72
72
|
return true;
|
|
73
|
-
let item = this.find(subItem.value);
|
|
74
|
-
while (item &&
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
let item = allowGap ? this.#firstItem : this.find(subItem.value);
|
|
74
|
+
while (item && subItem) {
|
|
75
|
+
if (item.value === subItem.value)
|
|
76
|
+
subItem = subItem.next;
|
|
77
|
+
else if (!allowGap)
|
|
78
|
+
return false;
|
|
78
79
|
item = item.next;
|
|
79
80
|
}
|
|
80
|
-
return
|
|
81
|
+
return !subItem;
|
|
81
82
|
}
|
|
82
83
|
find(value) {
|
|
83
84
|
return this.#map.get(value);
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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
|
|
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 = "2.2.
|
|
1
|
+
export declare const version = "2.2.6";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '2.2.
|
|
1
|
+
export const version = '2.2.6';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantou/gem",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.6",
|
|
4
4
|
"description": "💎 使用自定义元素的轻量级 WebApp 开发框架",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"frontend",
|
|
@@ -35,13 +35,15 @@
|
|
|
35
35
|
"docs:remote": "pnpm run docs",
|
|
36
36
|
"build:docs": "pnpm run docs --build",
|
|
37
37
|
"build:module": "tsc -p tsconfig.build.json",
|
|
38
|
-
"build:lib": "
|
|
38
|
+
"build:lib": "rslib build",
|
|
39
39
|
"build": "pnpm build:module && pnpm build:lib",
|
|
40
40
|
"start": "pnpm build:module --watch",
|
|
41
41
|
"test": "cross-env wtr"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@gemjs/config": "^2.1.3",
|
|
45
|
+
"@rslib/core": "^0.23.0",
|
|
46
|
+
"@swc/helpers": "^0.5.23",
|
|
45
47
|
"@types/chai": "^5.0.0",
|
|
46
48
|
"@types/mocha": "^10.0.7",
|
|
47
49
|
"@types/trusted-types": "^2.0.7",
|
|
@@ -49,8 +51,7 @@
|
|
|
49
51
|
"@web/test-runner": "^0.18.1",
|
|
50
52
|
"chai": "^5.1.1",
|
|
51
53
|
"rimraf": "^3.0.2",
|
|
52
|
-
"typescript": "^5.6.2"
|
|
53
|
-
"vite": "^5.2.10"
|
|
54
|
+
"typescript": "^5.6.2"
|
|
54
55
|
},
|
|
55
56
|
"author": "mantou132",
|
|
56
57
|
"license": "MIT",
|
|
@@ -74,6 +74,7 @@ export class GemGestureElement extends GemElement {
|
|
|
74
74
|
@state grabbing: boolean;
|
|
75
75
|
|
|
76
76
|
#pressed = false; // 触发 press 之后不触发其他事件
|
|
77
|
+
#gestureTriggered = false; // 会排除 touchAction 方向
|
|
77
78
|
#pressTimer: ReturnType<typeof setTimeout> | number = 0;
|
|
78
79
|
|
|
79
80
|
#startEventMap: Map<number, PointerEvent> = new Map();
|
|
@@ -135,9 +136,11 @@ export class GemGestureElement extends GemElement {
|
|
|
135
136
|
this.#startEventMap.set(evt.pointerId, evt);
|
|
136
137
|
if (evt.isPrimary) {
|
|
137
138
|
this.#pressed = false;
|
|
139
|
+
this.#gestureTriggered = false;
|
|
138
140
|
this.#pressTimer = setTimeout(() => {
|
|
139
141
|
this.press(evt);
|
|
140
142
|
this.#pressed = true;
|
|
143
|
+
this.#gestureTriggered = true;
|
|
141
144
|
}, 251);
|
|
142
145
|
}
|
|
143
146
|
};
|
|
@@ -168,6 +171,7 @@ export class GemGestureElement extends GemElement {
|
|
|
168
171
|
this.pan(move);
|
|
169
172
|
|
|
170
173
|
if (this.movesMap.size !== 1) {
|
|
174
|
+
this.#gestureTriggered = true;
|
|
171
175
|
const secondaryPoint = this.#getOtherLastMove(pointerId) as PanEventDetail;
|
|
172
176
|
const moveLen = Math.sqrt(movementX ** 2 + movementY ** 2);
|
|
173
177
|
const distanceLen = Math.sqrt(
|
|
@@ -180,6 +184,9 @@ export class GemGestureElement extends GemElement {
|
|
|
180
184
|
const y = (lastMove.clientY + secondaryPoint.clientY) / 2;
|
|
181
185
|
this.pinch({ x, y, scale: newDistanceLen / distanceLen });
|
|
182
186
|
this.rotate({ x, y, rotate: angleAB(newDistanceLen, distanceLen, moveLen, secondaryPoint, lastMove, move) });
|
|
187
|
+
} else if (move.x || move.y) {
|
|
188
|
+
// 经过 touch-action 过滤后仍有位移,说明手势已被本元素认领
|
|
189
|
+
this.#gestureTriggered = true;
|
|
183
190
|
}
|
|
184
191
|
|
|
185
192
|
const accuracy = pointerType === 'touch' ? 5 : 0;
|
|
@@ -211,6 +218,7 @@ export class GemGestureElement extends GemElement {
|
|
|
211
218
|
|
|
212
219
|
if (this.movesMap.size === 1) {
|
|
213
220
|
this.grabbing = false;
|
|
221
|
+
this.#gestureTriggered = false;
|
|
214
222
|
this.end(evt);
|
|
215
223
|
}
|
|
216
224
|
|
|
@@ -252,6 +260,10 @@ export class GemGestureElement extends GemElement {
|
|
|
252
260
|
|
|
253
261
|
#preventDefault = (evt: Event) => evt.preventDefault();
|
|
254
262
|
|
|
263
|
+
#onTouchMove = (evt: TouchEvent) => {
|
|
264
|
+
if (this.#gestureTriggered) evt.preventDefault();
|
|
265
|
+
};
|
|
266
|
+
|
|
255
267
|
@mounted()
|
|
256
268
|
#init = () => {
|
|
257
269
|
this.addEventListener('pointerdown', this.#onStart);
|
|
@@ -262,6 +274,7 @@ export class GemGestureElement extends GemElement {
|
|
|
262
274
|
this.addEventListener('pointercancel', this.#onEnd);
|
|
263
275
|
|
|
264
276
|
this.addEventListener('dragstart', this.#preventDefault);
|
|
277
|
+
this.addEventListener('touchmove', this.#onTouchMove, { passive: false });
|
|
265
278
|
};
|
|
266
279
|
|
|
267
280
|
/** 一次手势的指针移动事件记录 */
|
package/src/helper/hmr.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { attribute, boolattribute, emitter, numattribute, property, state } from '../lib/decorators';
|
|
1
|
+
import { attribute, boolattribute, emitter, globalemitter, numattribute, property, state } from '../lib/decorators';
|
|
2
2
|
import { GemElement, type Metadata, UpdateToken } from '../lib/reactive';
|
|
3
3
|
import type { Store } from '../lib/store';
|
|
4
4
|
import { Logger } from './logger';
|
|
5
5
|
|
|
6
6
|
const logger = new Logger('HMR');
|
|
7
7
|
|
|
8
|
-
const nativeDefineElement =
|
|
8
|
+
const nativeDefineElement =
|
|
9
|
+
typeof window === 'undefined' || !window.customElements
|
|
10
|
+
? undefined
|
|
11
|
+
: window.customElements.define.bind(window.customElements);
|
|
9
12
|
|
|
10
13
|
const cache = new Map<string, Element[]>();
|
|
11
14
|
function updateElement(name: string, fn: (ele: Element) => void) {
|
|
@@ -140,6 +143,7 @@ const descMap = {
|
|
|
140
143
|
property,
|
|
141
144
|
state,
|
|
142
145
|
emitter,
|
|
146
|
+
globalemitter,
|
|
143
147
|
};
|
|
144
148
|
|
|
145
149
|
function setArrValue<T>(obj: any, field: string, val: T[] = []) {
|
|
@@ -159,147 +163,149 @@ declare global {
|
|
|
159
163
|
}
|
|
160
164
|
}
|
|
161
165
|
|
|
162
|
-
window
|
|
163
|
-
window.
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
addInitializer
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (!existed) {
|
|
170
|
-
window._hmrClassRegistry.set(name, cls);
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
logger.info(`class <${name}> update,`, { existed, cls });
|
|
175
|
-
|
|
176
|
-
let current: any[] = [existed, cls];
|
|
177
|
-
while (current) {
|
|
178
|
-
const [oldClass, newClass] = current;
|
|
179
|
-
if (oldClass === newClass || current.some((e) => e === GemElement || e === Function.prototype)) break;
|
|
180
|
-
if (current.some((e) => !e) || checkClassNeedReload(oldClass, newClass)) {
|
|
181
|
-
location.reload();
|
|
182
|
-
return;
|
|
183
|
-
}
|
|
166
|
+
if (typeof window !== 'undefined' && nativeDefineElement && !window._hmrClassRegistry) {
|
|
167
|
+
window._hmrClassRegistry = new Map();
|
|
168
|
+
window._hmrRegisterClass =
|
|
169
|
+
(name: string) =>
|
|
170
|
+
(cls: HasFieldsRecordClass, { addInitializer }: ClassDecoratorContext) => {
|
|
171
|
+
addInitializer(() => {
|
|
172
|
+
const existed = window._hmrClassRegistry.get(name);
|
|
184
173
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const isOldInstance = instance instanceof oldClass;
|
|
188
|
-
if (isOldInstance) return true;
|
|
189
|
-
setProperty(newClass, Symbol.hasInstance, undefined);
|
|
190
|
-
const isNew = instance instanceof newClass;
|
|
191
|
-
setProperty(newClass, Symbol.hasInstance, hasInstance);
|
|
192
|
-
return isNew;
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
const oldMetadata = getMetadata(oldClass);
|
|
196
|
-
const newMetadata = getMetadata(newClass);
|
|
197
|
-
|
|
198
|
-
if (checkMetadataNeedReload(oldMetadata, newMetadata)) {
|
|
199
|
-
location.reload();
|
|
174
|
+
if (!existed) {
|
|
175
|
+
window._hmrClassRegistry.set(name, cls);
|
|
200
176
|
return;
|
|
201
177
|
}
|
|
202
178
|
|
|
203
|
-
|
|
179
|
+
logger.info(`class <${name}> update,`, { existed, cls });
|
|
180
|
+
|
|
181
|
+
let current: any[] = [existed, cls];
|
|
182
|
+
while (current) {
|
|
183
|
+
const [oldClass, newClass] = current;
|
|
184
|
+
if (oldClass === newClass || current.some((e) => e === GemElement || e === Function.prototype)) break;
|
|
185
|
+
if (current.some((e) => !e) || checkClassNeedReload(oldClass, newClass)) {
|
|
186
|
+
location.reload();
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// 修正 `instanceof`
|
|
191
|
+
setProperty(newClass, Symbol.hasInstance, function hasInstance(instance: any) {
|
|
192
|
+
const isOldInstance = instance instanceof oldClass;
|
|
193
|
+
if (isOldInstance) return true;
|
|
194
|
+
setProperty(newClass, Symbol.hasInstance, undefined);
|
|
195
|
+
const isNew = instance instanceof newClass;
|
|
196
|
+
setProperty(newClass, Symbol.hasInstance, hasInstance);
|
|
197
|
+
return isNew;
|
|
198
|
+
});
|
|
204
199
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
return;
|
|
208
|
-
}
|
|
200
|
+
const oldMetadata = getMetadata(oldClass);
|
|
201
|
+
const newMetadata = getMetadata(newClass);
|
|
209
202
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
203
|
+
if (checkMetadataNeedReload(oldMetadata, newMetadata)) {
|
|
204
|
+
location.reload();
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const fields = getFields(oldClass, newClass);
|
|
209
|
+
|
|
210
|
+
if (checkFieldsNeedReload(fields)) {
|
|
211
|
+
location.reload();
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
Object.entries(fields.staticFields).forEach(([type, { remove, add }]) => {
|
|
216
|
+
remove.forEach((prop) => {
|
|
217
|
+
if (safeProp.has(type)) {
|
|
218
|
+
deleteProperty(oldClass, prop.name);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
add.forEach((prop) => {
|
|
222
|
+
if (safeProp.has(type)) {
|
|
223
|
+
setProperty(oldClass, prop.name, getProperty(newClass, prop.name));
|
|
224
|
+
}
|
|
225
|
+
});
|
|
230
226
|
});
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
227
|
+
|
|
228
|
+
const instanceFieldsEntries = Object.entries(fields.instanceFields);
|
|
229
|
+
// 删除的属性重新加回来要先清除占位值
|
|
230
|
+
instanceFieldsEntries.forEach(([type, { add }]) => {
|
|
234
231
|
add.forEach((prop) => {
|
|
235
232
|
if (type in descMap) {
|
|
236
|
-
(
|
|
237
|
-
name: prop.name,
|
|
238
|
-
metadata: oldMetadata,
|
|
239
|
-
addInitializer: (fn: () => void) => fn.apply(element),
|
|
240
|
-
} as ClassMemberDecoratorContext);
|
|
233
|
+
deleteProperty(oldClass.prototype, prop.name);
|
|
241
234
|
}
|
|
242
235
|
});
|
|
236
|
+
});
|
|
237
|
+
updateElement(name, (element) => {
|
|
238
|
+
instanceFieldsEntries.forEach(([type, { add, remove }]) => {
|
|
239
|
+
add.forEach((prop) => {
|
|
240
|
+
if (type in descMap) {
|
|
241
|
+
(descMap as any)[type](undefined, {
|
|
242
|
+
name: prop.name,
|
|
243
|
+
metadata: oldMetadata,
|
|
244
|
+
addInitializer: (fn: () => void) => fn.apply(element),
|
|
245
|
+
} as ClassMemberDecoratorContext);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
remove.forEach((prop) => {
|
|
249
|
+
setProperty(element, prop.name, undefined);
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
// 删除的属性在 proto 上添加占位符
|
|
254
|
+
instanceFieldsEntries.forEach(([type, { remove }]) => {
|
|
243
255
|
remove.forEach((prop) => {
|
|
244
|
-
|
|
256
|
+
if (type in descMap) {
|
|
257
|
+
// attribute 映射 prop 没有移除
|
|
258
|
+
setProperty(oldClass.prototype, prop.name, undefined);
|
|
259
|
+
}
|
|
245
260
|
});
|
|
246
261
|
});
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
262
|
+
|
|
263
|
+
setArrValue(oldMetadata, 'definedParts', newMetadata.definedParts);
|
|
264
|
+
setArrValue(oldMetadata, 'definedSlots', newMetadata.definedSlots);
|
|
265
|
+
setArrValue(oldMetadata, 'observedProperties', newMetadata.observedProperties);
|
|
266
|
+
setArrValue(oldMetadata, 'observedAttributes', newMetadata.observedAttributes);
|
|
267
|
+
setArrValue(oldMetadata, 'definedEvents', newMetadata.definedEvents);
|
|
268
|
+
setArrValue(oldMetadata, 'definedCSSStates', newMetadata.definedCSSStates);
|
|
269
|
+
setArrValue(oldMetadata, 'adoptedStyleSheets', newMetadata.adoptedStyleSheets);
|
|
270
|
+
setArrValue(oldClass, '_defined_fields_', newClass._defined_fields_);
|
|
271
|
+
|
|
272
|
+
[
|
|
273
|
+
[oldClass, newClass],
|
|
274
|
+
[oldClass.prototype, newClass.prototype],
|
|
275
|
+
].forEach(([existedObj, newObj]) => {
|
|
276
|
+
Object.assign(
|
|
277
|
+
existedObj,
|
|
278
|
+
Object.fromEntries(
|
|
279
|
+
getHmrMethodKeys(newObj)
|
|
280
|
+
.filter((key) => existedObj[key].toString() !== newObj[key].toString())
|
|
281
|
+
.map((key) => [key, newObj[key]]),
|
|
282
|
+
),
|
|
283
|
+
);
|
|
255
284
|
});
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
setArrValue(oldMetadata, 'definedParts', newMetadata.definedParts);
|
|
259
|
-
setArrValue(oldMetadata, 'definedSlots', newMetadata.definedSlots);
|
|
260
|
-
setArrValue(oldMetadata, 'observedProperties', newMetadata.observedProperties);
|
|
261
|
-
setArrValue(oldMetadata, 'observedAttributes', newMetadata.observedAttributes);
|
|
262
|
-
setArrValue(oldMetadata, 'definedEvents', newMetadata.definedEvents);
|
|
263
|
-
setArrValue(oldMetadata, 'definedCSSStates', newMetadata.definedCSSStates);
|
|
264
|
-
setArrValue(oldMetadata, 'adoptedStyleSheets', newMetadata.adoptedStyleSheets);
|
|
265
|
-
setArrValue(oldClass, '_defined_fields_', newClass._defined_fields_);
|
|
266
|
-
|
|
267
|
-
[
|
|
268
|
-
[oldClass, newClass],
|
|
269
|
-
[oldClass.prototype, newClass.prototype],
|
|
270
|
-
].forEach(([existedObj, newObj]) => {
|
|
271
|
-
Object.assign(
|
|
272
|
-
existedObj,
|
|
273
|
-
Object.fromEntries(
|
|
274
|
-
getHmrMethodKeys(newObj)
|
|
275
|
-
.filter((key) => existedObj[key].toString() !== newObj[key].toString())
|
|
276
|
-
.map((key) => [key, newObj[key]]),
|
|
277
|
-
),
|
|
278
|
-
);
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
current = [getPrototypeOf(oldClass), getPrototypeOf(newClass)];
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
};
|
|
285
285
|
|
|
286
|
-
|
|
287
|
-
|
|
286
|
+
current = [getPrototypeOf(oldClass), getPrototypeOf(newClass)];
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
};
|
|
288
290
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
291
|
+
window.customElements.define = (name: string, cls: CustomElementConstructor) => {
|
|
292
|
+
const existed = customElements.get(name);
|
|
293
|
+
|
|
294
|
+
if (!existed) {
|
|
295
|
+
nativeDefineElement(name, cls);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
293
298
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
299
|
+
// 等待类更新
|
|
300
|
+
queueMicrotask(() => {
|
|
301
|
+
logger.info(`<${name}> update,`, { cls });
|
|
297
302
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
+
updateElement(name, (element) => {
|
|
304
|
+
// 触发样式更新,支持 Light DOM
|
|
305
|
+
element.after(element);
|
|
306
|
+
// 重新渲染
|
|
307
|
+
(element as any)[UpdateToken]?.();
|
|
308
|
+
});
|
|
303
309
|
});
|
|
304
|
-
}
|
|
305
|
-
}
|
|
310
|
+
};
|
|
311
|
+
}
|
package/src/helper/request.ts
CHANGED
package/src/lib/history.ts
CHANGED
|
@@ -213,7 +213,8 @@ if (!globalThis._GEMHISTORY) {
|
|
|
213
213
|
// 初始化 historyState
|
|
214
214
|
const { protocol, pathname, search, hash } = location;
|
|
215
215
|
// 支持在 `data:` `blob:` 中 `import`
|
|
216
|
-
if (protocol.startsWith('http')
|
|
216
|
+
if (protocol.startsWith('http') || protocol.startsWith('tauri'))
|
|
217
|
+
gemHistory.replace({ path: pathname, query: search, hash });
|
|
217
218
|
} else if (nativeHistory.state.$hasCloseHandle) {
|
|
218
219
|
store(nativeHistory.state);
|
|
219
220
|
const params = normalizeParams({ title: document.title });
|
|
@@ -315,4 +316,5 @@ if (!globalThis._GEMHISTORY) {
|
|
|
315
316
|
}
|
|
316
317
|
|
|
317
318
|
const { history, titleStore, basePathStore } = globalThis._GEMHISTORY;
|
|
319
|
+
|
|
318
320
|
export { basePathStore, history, titleStore };
|
package/src/lib/lit-html.ts
CHANGED
|
@@ -615,9 +615,11 @@ export class TemplateInstance implements Disconnectable {
|
|
|
615
615
|
}
|
|
616
616
|
}
|
|
617
617
|
|
|
618
|
+
const conditionMap = new Map<Element, ConditionChain>();
|
|
618
619
|
ifMap.forEach((idx, element) => {
|
|
619
620
|
const chain = new ConditionChain(element, idx);
|
|
620
621
|
this._$conditions.push(chain);
|
|
622
|
+
conditionMap.set(element, chain);
|
|
621
623
|
let ele: Element | null = element;
|
|
622
624
|
while ((ele = ele.nextElementSibling)) {
|
|
623
625
|
const pos = elseIfMap.get(ele);
|
|
@@ -625,6 +627,13 @@ export class TemplateInstance implements Disconnectable {
|
|
|
625
627
|
chain.push(ele, pos);
|
|
626
628
|
}
|
|
627
629
|
});
|
|
630
|
+
// A ChildPart can use the following conditional element as its end boundary.
|
|
631
|
+
// Point it to the persistent chain marker before v-if can remove that element.
|
|
632
|
+
for (const part of this._$parts) {
|
|
633
|
+
if (part?.type !== CHILD_PART) continue;
|
|
634
|
+
const chain = conditionMap.get(part._$endNode as Element);
|
|
635
|
+
if (chain) part._$endNode = chain.mark;
|
|
636
|
+
}
|
|
628
637
|
|
|
629
638
|
// We need to set the currentNode away from the cloned tree so that we
|
|
630
639
|
// don't hold onto the tree even if the tree is detached and should be
|
package/src/lib/utils.ts
CHANGED
|
@@ -113,16 +113,16 @@ export class LinkedList<T = any> extends EventTarget {
|
|
|
113
113
|
return this.#lastItem;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
isSuperLinkOf(subLink: LinkedList<T
|
|
116
|
+
isSuperLinkOf(subLink: LinkedList<T>, allowGap = false) {
|
|
117
117
|
let subItem = subLink.first;
|
|
118
118
|
if (!subItem) return true;
|
|
119
|
-
let item = this.find(subItem.value);
|
|
120
|
-
while (item &&
|
|
121
|
-
subItem = subItem.next;
|
|
122
|
-
if (!
|
|
119
|
+
let item = allowGap ? this.#firstItem : this.find(subItem.value);
|
|
120
|
+
while (item && subItem) {
|
|
121
|
+
if (item.value === subItem.value) subItem = subItem.next;
|
|
122
|
+
else if (!allowGap) return false;
|
|
123
123
|
item = item.next;
|
|
124
124
|
}
|
|
125
|
-
return
|
|
125
|
+
return !subItem;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
find(value: T) {
|
package/src/lib/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '2.2.
|
|
1
|
+
export const version = '2.2.6';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { html, render } from '../lib/lit-html';
|
|
2
|
+
import { expect } from './utils';
|
|
3
|
+
|
|
4
|
+
describe('lit-html', () => {
|
|
5
|
+
it('updates an iterable before a removed v-if element', () => {
|
|
6
|
+
const container = document.createElement('div');
|
|
7
|
+
const view = (messages: string[], permissionRequest: boolean) =>
|
|
8
|
+
html`${messages.map((message) => html`<p>${message}</p>`)}<div v-if=${permissionRequest}>Permission request</div>`;
|
|
9
|
+
|
|
10
|
+
render(view(['Message 1'], false), container);
|
|
11
|
+
expect(container.textContent?.trim()).to.equal('Message 1');
|
|
12
|
+
|
|
13
|
+
expect(() => render(view(['Message 1', 'Message 2'], false), container)).not.to.throw();
|
|
14
|
+
expect(container.textContent?.replace(/\s/g, '')).to.equal('Message1Message2');
|
|
15
|
+
|
|
16
|
+
render(view(['Message 1', 'Message 2'], true), container);
|
|
17
|
+
expect(container.textContent?.replace(/\s/g, '')).to.equal('Message1Message2Permissionrequest');
|
|
18
|
+
});
|
|
19
|
+
});
|
package/src/test/utils.test.ts
CHANGED
|
@@ -48,6 +48,30 @@ describe('utils 测试', () => {
|
|
|
48
48
|
expect(new LinkedList().isSuperLinkOf(subLinked)).to.equal(false);
|
|
49
49
|
expect(subLinked.isSuperLinkOf(new LinkedList())).to.equal(true);
|
|
50
50
|
|
|
51
|
+
// allowGap:超集中可跳过部分节点
|
|
52
|
+
const withGap = new LinkedList();
|
|
53
|
+
const a = () => 'a';
|
|
54
|
+
const b = () => 'b';
|
|
55
|
+
const c = () => 'c';
|
|
56
|
+
const d = () => 'd';
|
|
57
|
+
withGap.add(a);
|
|
58
|
+
withGap.add(b);
|
|
59
|
+
withGap.add(c);
|
|
60
|
+
withGap.add(d);
|
|
61
|
+
const gapSub = new LinkedList();
|
|
62
|
+
gapSub.add(a);
|
|
63
|
+
gapSub.add(c);
|
|
64
|
+
gapSub.add(d);
|
|
65
|
+
expect(withGap.isSuperLinkOf(gapSub)).to.equal(false);
|
|
66
|
+
expect(withGap.isSuperLinkOf(gapSub, true)).to.equal(true);
|
|
67
|
+
expect(gapSub.isSuperLinkOf(withGap, true)).to.equal(false);
|
|
68
|
+
// 顺序不一致则不是超集
|
|
69
|
+
const reordered = new LinkedList();
|
|
70
|
+
reordered.add(a);
|
|
71
|
+
reordered.add(d);
|
|
72
|
+
reordered.add(b);
|
|
73
|
+
expect(withGap.isSuperLinkOf(reordered, true)).to.equal(false);
|
|
74
|
+
|
|
51
75
|
linkedList.delete(fun2);
|
|
52
76
|
expect(linkedList.size).to.equal(1);
|
|
53
77
|
linkedList.add(fun2);
|