@mantou/gem 1.7.1 → 1.7.2
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.es.js +357 -362
- package/dist/gem.umd.js +24 -28
- package/elements/base/dialog.d.ts +7 -7
- package/elements/base/dialog.d.ts.map +1 -1
- package/elements/base/dialog.js +10 -3
- package/elements/base/dialog.js.map +1 -1
- package/elements/base/gesture.d.ts +4 -13
- package/elements/base/gesture.d.ts.map +1 -1
- package/elements/base/gesture.js +151 -134
- package/elements/base/gesture.js.map +1 -1
- package/elements/base/link.d.ts +10 -10
- package/elements/base/link.d.ts.map +1 -1
- package/elements/base/link.js +69 -63
- package/elements/base/link.js.map +1 -1
- package/elements/base/modal-factory.d.ts +106 -83
- package/elements/base/modal-factory.d.ts.map +1 -1
- package/elements/base/modal-factory.js +12 -8
- package/elements/base/modal-factory.js.map +1 -1
- package/elements/base/reflect.js.map +1 -1
- package/elements/base/route.d.ts +12 -5
- package/elements/base/route.d.ts.map +1 -1
- package/elements/base/route.js +16 -4
- package/elements/base/route.js.map +1 -1
- package/elements/base/title.d.ts +3 -1
- package/elements/base/title.d.ts.map +1 -1
- package/elements/base/title.js +14 -16
- package/elements/base/title.js.map +1 -1
- package/elements/base/unsafe.js.map +1 -1
- package/elements/base/use.d.ts +1 -1
- package/elements/base/use.d.ts.map +1 -1
- package/elements/base/use.js +27 -17
- package/elements/base/use.js.map +1 -1
- package/helper/i18n.d.ts +2 -2
- package/helper/i18n.d.ts.map +1 -1
- package/helper/i18n.js.map +1 -1
- package/helper/mediaquery.d.ts +16 -18
- package/helper/mediaquery.d.ts.map +1 -1
- package/helper/mediaquery.js +42 -41
- package/helper/mediaquery.js.map +1 -1
- package/helper/request.d.ts +1 -1
- package/helper/request.d.ts.map +1 -1
- package/helper/request.js.map +1 -1
- package/helper/ssr-shim.js.map +1 -1
- package/helper/theme.d.ts +2 -2
- package/helper/theme.d.ts.map +1 -1
- package/helper/theme.js +20 -24
- package/helper/theme.js.map +1 -1
- package/lib/decorators.d.ts +4 -4
- package/lib/decorators.d.ts.map +1 -1
- package/lib/decorators.js +1 -2
- package/lib/decorators.js.map +1 -1
- package/lib/element.d.ts +5 -7
- package/lib/element.d.ts.map +1 -1
- package/lib/element.js +41 -69
- package/lib/element.js.map +1 -1
- package/lib/history.d.ts +1 -1
- package/lib/history.d.ts.map +1 -1
- package/lib/history.js +2 -2
- package/lib/history.js.map +1 -1
- package/lib/store.d.ts +2 -2
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js.map +1 -1
- package/lib/utils.d.ts +8 -32
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +6 -21
- package/lib/utils.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
- package/src/elements/base/dialog.ts +8 -3
- package/src/elements/base/gesture.ts +51 -45
- package/src/elements/base/link.ts +64 -62
- package/src/elements/base/modal-factory.ts +5 -0
- package/src/elements/base/route.ts +21 -4
- package/src/elements/base/title.ts +8 -11
- package/src/elements/base/use.ts +3 -3
- package/src/helper/mediaquery.ts +43 -42
- package/src/helper/theme.ts +22 -24
- package/src/lib/decorators.ts +1 -2
- package/src/lib/element.ts +29 -58
- package/src/lib/history.ts +2 -1
- package/src/lib/utils.ts +10 -42
- package/src/lib/version.ts +1 -1
- package/src/test/history.test.ts +3 -1
- package/src/test/utils.test.ts +8 -1
package/lib/utils.js
CHANGED
|
@@ -33,7 +33,7 @@ function execMicrotaskStack() {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* 添加回调函数到微任务队列栈;
|
|
36
|
-
*
|
|
36
|
+
* 先进后执行,使用这个函数可以改变嵌套的元素 `mounted` 的顺序;
|
|
37
37
|
*/
|
|
38
38
|
export function addMicrotaskToStack(func) {
|
|
39
39
|
if (!microtaskStack.length) {
|
|
@@ -46,7 +46,7 @@ export function absoluteLocation(currentPath = '', relativePath = '') {
|
|
|
46
46
|
return pathname + search + hash;
|
|
47
47
|
}
|
|
48
48
|
// work on nodejs
|
|
49
|
-
export class LinkedList extends
|
|
49
|
+
export class LinkedList extends EventTarget {
|
|
50
50
|
constructor() {
|
|
51
51
|
super(...arguments);
|
|
52
52
|
_LinkedList_instances.add(this);
|
|
@@ -190,24 +190,6 @@ export function css(arr, ...args) {
|
|
|
190
190
|
}
|
|
191
191
|
// 跨多个 gem 工作
|
|
192
192
|
export const SheetToken = Symbol.for('gem@sheetToken');
|
|
193
|
-
// !!! 目前只有 Chrome/FirefoxNightly 支持
|
|
194
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=1520690
|
|
195
|
-
// https://bugs.webkit.org/show_bug.cgi?id=228684
|
|
196
|
-
export let useNativeCSSStyleSheet = true;
|
|
197
|
-
let CSSStyleSheet = globalThis.CSSStyleSheet;
|
|
198
|
-
try {
|
|
199
|
-
new CSSStyleSheet();
|
|
200
|
-
}
|
|
201
|
-
catch (_a) {
|
|
202
|
-
useNativeCSSStyleSheet = false;
|
|
203
|
-
CSSStyleSheet = class {
|
|
204
|
-
constructor() {
|
|
205
|
-
this.media = { mediaText: '' };
|
|
206
|
-
this.style = '';
|
|
207
|
-
this.replaceSync = (style) => (this.style = style);
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
193
|
/**
|
|
212
194
|
*
|
|
213
195
|
* 创建 style sheet 用于 `adoptedStyleSheets`,不支持样式更新
|
|
@@ -243,6 +225,8 @@ export function randomStr(number = 5, origin = '0123456789abcdefghijklmnopqrstuv
|
|
|
243
225
|
const nestingRuleRegExp = new RegExp('&.*{((.|\n)*)}', 'g');
|
|
244
226
|
// 只支持一层嵌套
|
|
245
227
|
// https://drafts.csswg.org/css-nesting-1/
|
|
228
|
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=1648037
|
|
229
|
+
// https://bugs.webkit.org/show_bug.cgi?id=223497
|
|
246
230
|
function flatStyled(style, type) {
|
|
247
231
|
const nestingRules = [];
|
|
248
232
|
let styledContent = `& {${style.replace(nestingRuleRegExp, (substr) => {
|
|
@@ -333,7 +317,8 @@ export function classMap(object) {
|
|
|
333
317
|
return objectMapToString(object, ' ', (key, value) => (value ? key : ''));
|
|
334
318
|
}
|
|
335
319
|
export const partMap = classMap;
|
|
320
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/exportparts
|
|
336
321
|
export function exportPartsMap(object) {
|
|
337
|
-
return objectMapToString(object, ',', (key, value) =>
|
|
322
|
+
return objectMapToString(object, ',', (key, value) => value === true || key === value ? key : value ? `${key}:${value}` : '');
|
|
338
323
|
}
|
|
339
324
|
//# sourceMappingURL=utils.js.map
|
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 = "1.7.
|
|
1
|
+
export declare const version = "1.7.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '1.7.
|
|
1
|
+
export const version = '1.7.2';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantou/gem",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"description": "💎 使用自定义元素的轻量级 WebApp 开发框架",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "index.js",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@web/dev-server-esbuild": "^0.2.16",
|
|
45
45
|
"@web/test-runner": "^0.13.22",
|
|
46
46
|
"rimraf": "^3.0.2",
|
|
47
|
-
"typescript": "^
|
|
47
|
+
"typescript": "^5.3.2",
|
|
48
48
|
"vite": "^2.7.13"
|
|
49
49
|
},
|
|
50
50
|
"author": "mantou132",
|
|
@@ -2,9 +2,10 @@ import { GemElement } from '../../lib/element';
|
|
|
2
2
|
import { attribute, state, connectStore } from '../../lib/decorators';
|
|
3
3
|
import { history } from '../../lib/history';
|
|
4
4
|
|
|
5
|
+
const final = Symbol();
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
8
|
* 在模版中声明的 dialog,使用 `open` 方法 打开;
|
|
7
|
-
* 如果要应用关闭动画,可以在动画执行完后设置 `hidden` 属性;
|
|
8
9
|
* 模拟 top layer:https://github.com/whatwg/html/issues/4633.
|
|
9
10
|
*
|
|
10
11
|
* @attr label
|
|
@@ -16,14 +17,13 @@ export abstract class GemDialogBaseElement extends GemElement {
|
|
|
16
17
|
@attribute label: string;
|
|
17
18
|
@state opened: boolean;
|
|
18
19
|
|
|
19
|
-
inert = true;
|
|
20
|
-
|
|
21
20
|
#nextSibling: ChildNode | null;
|
|
22
21
|
#parentElement: Node | null;
|
|
23
22
|
#inertStore: HTMLElement[] = [];
|
|
24
23
|
|
|
25
24
|
constructor() {
|
|
26
25
|
super();
|
|
26
|
+
this.inert = true;
|
|
27
27
|
this.internals.role = 'dialog';
|
|
28
28
|
this.internals.ariaModal = 'true';
|
|
29
29
|
}
|
|
@@ -42,6 +42,7 @@ export abstract class GemDialogBaseElement extends GemElement {
|
|
|
42
42
|
}
|
|
43
43
|
this.dispatchEvent(new CustomEvent('close'));
|
|
44
44
|
this.opened = false;
|
|
45
|
+
return final;
|
|
45
46
|
};
|
|
46
47
|
|
|
47
48
|
/**
|
|
@@ -58,6 +59,7 @@ export abstract class GemDialogBaseElement extends GemElement {
|
|
|
58
59
|
document.body.append(this);
|
|
59
60
|
this.dispatchEvent(new CustomEvent('open'));
|
|
60
61
|
this.opened = true;
|
|
62
|
+
return final;
|
|
61
63
|
};
|
|
62
64
|
|
|
63
65
|
/**@final */
|
|
@@ -70,6 +72,7 @@ export abstract class GemDialogBaseElement extends GemElement {
|
|
|
70
72
|
close: this.closeHandle,
|
|
71
73
|
shouldClose: this.shouldClose,
|
|
72
74
|
});
|
|
75
|
+
return final;
|
|
73
76
|
};
|
|
74
77
|
|
|
75
78
|
shouldClose() {
|
|
@@ -79,6 +82,7 @@ export abstract class GemDialogBaseElement extends GemElement {
|
|
|
79
82
|
/**@final */
|
|
80
83
|
close = () => {
|
|
81
84
|
history.back();
|
|
85
|
+
return final;
|
|
82
86
|
};
|
|
83
87
|
|
|
84
88
|
/**
|
|
@@ -90,5 +94,6 @@ export abstract class GemDialogBaseElement extends GemElement {
|
|
|
90
94
|
forceClose = () => {
|
|
91
95
|
this.opened = false;
|
|
92
96
|
setTimeout(this.close, 100);
|
|
97
|
+
return final;
|
|
93
98
|
};
|
|
94
99
|
}
|
|
@@ -70,39 +70,41 @@ export class GemGestureElement extends GemElement {
|
|
|
70
70
|
|
|
71
71
|
@attribute touchAction: string;
|
|
72
72
|
|
|
73
|
-
pressed = false; // 触发 press 之后不触发其他事件
|
|
74
|
-
pressTimer = 0;
|
|
75
|
-
|
|
76
|
-
startEventMap: Map<number, PointerEvent> = new Map();
|
|
77
|
-
movesMap: Map<number, PanEventDetail[]> = new Map();
|
|
78
|
-
|
|
79
73
|
constructor() {
|
|
80
74
|
super();
|
|
81
|
-
this.addEventListener('pointerdown', this
|
|
82
|
-
this.addEventListener('pointermove', this
|
|
83
|
-
this.addEventListener('pointerup', this
|
|
84
|
-
this.addEventListener('pointercancel', this
|
|
75
|
+
this.addEventListener('pointerdown', this.#onStart);
|
|
76
|
+
this.addEventListener('pointermove', this.#onMoveSet);
|
|
77
|
+
this.addEventListener('pointerup', this.#onEnd);
|
|
78
|
+
this.addEventListener('pointercancel', this.#onEnd);
|
|
85
79
|
this.addEventListener('dragstart', (evt) => evt.preventDefault());
|
|
86
80
|
}
|
|
87
81
|
|
|
88
|
-
|
|
82
|
+
#pressed = false; // 触发 press 之后不触发其他事件
|
|
83
|
+
#pressTimer = 0;
|
|
84
|
+
|
|
85
|
+
#startEventMap: Map<number, PointerEvent> = new Map();
|
|
86
|
+
|
|
87
|
+
/** 指针移动事件记录 */
|
|
88
|
+
movesMap: Map<number, PanEventDetail[]> = new Map();
|
|
89
|
+
|
|
90
|
+
#getMoves = (pointerId: number) => {
|
|
89
91
|
return this.movesMap.get(pointerId) || [];
|
|
90
|
-
}
|
|
92
|
+
};
|
|
91
93
|
|
|
92
|
-
getStartEvent(pointerId: number) {
|
|
93
|
-
return this
|
|
94
|
-
}
|
|
94
|
+
#getStartEvent = (pointerId: number) => {
|
|
95
|
+
return this.#startEventMap.get(pointerId) as PointerEvent;
|
|
96
|
+
};
|
|
95
97
|
|
|
96
|
-
|
|
98
|
+
#getOtherLastMove = (pointerId: number) => {
|
|
97
99
|
for (const id of this.movesMap.keys()) {
|
|
98
100
|
if (id !== pointerId) {
|
|
99
|
-
const moves = this
|
|
100
|
-
return moves[moves.length - 1] || this
|
|
101
|
+
const moves = this.#getMoves(id);
|
|
102
|
+
return moves[moves.length - 1] || this.#getStartEvent(id);
|
|
101
103
|
}
|
|
102
104
|
}
|
|
103
|
-
}
|
|
105
|
+
};
|
|
104
106
|
|
|
105
|
-
getMovementX(x: number, y: number) {
|
|
107
|
+
#getMovementX = (x: number, y: number) => {
|
|
106
108
|
const touchAction = this.touchAction;
|
|
107
109
|
if (
|
|
108
110
|
(touchAction.includes('pan-right') && x > 0) ||
|
|
@@ -116,9 +118,9 @@ export class GemGestureElement extends GemElement {
|
|
|
116
118
|
return 0;
|
|
117
119
|
}
|
|
118
120
|
return x;
|
|
119
|
-
}
|
|
121
|
+
};
|
|
120
122
|
|
|
121
|
-
getMovementY(x: number, y: number) {
|
|
123
|
+
#getMovementY = (x: number, y: number) => {
|
|
122
124
|
const touchAction = this.touchAction;
|
|
123
125
|
if (
|
|
124
126
|
(touchAction.includes('pan-down') && y > 0) ||
|
|
@@ -132,36 +134,35 @@ export class GemGestureElement extends GemElement {
|
|
|
132
134
|
return 0;
|
|
133
135
|
}
|
|
134
136
|
return y;
|
|
135
|
-
}
|
|
137
|
+
};
|
|
136
138
|
|
|
137
|
-
onStart(evt: PointerEvent) {
|
|
139
|
+
#onStart = (evt: PointerEvent) => {
|
|
138
140
|
evt.stopPropagation();
|
|
139
141
|
this.setPointerCapture(evt.pointerId);
|
|
140
142
|
this.movesMap.set(evt.pointerId, []);
|
|
141
|
-
this
|
|
143
|
+
this.#startEventMap.set(evt.pointerId, evt);
|
|
142
144
|
if (evt.isPrimary) {
|
|
143
|
-
this
|
|
144
|
-
this
|
|
145
|
+
this.#pressed = false;
|
|
146
|
+
this.#pressTimer = window.setTimeout(() => {
|
|
145
147
|
this.press(null);
|
|
146
|
-
this
|
|
148
|
+
this.#pressed = true;
|
|
147
149
|
}, 251);
|
|
148
150
|
}
|
|
149
|
-
}
|
|
151
|
+
};
|
|
150
152
|
|
|
151
|
-
onMove(evt: PointerEvent) {
|
|
152
|
-
evt.stopPropagation();
|
|
153
|
+
#onMove = (evt: PointerEvent) => {
|
|
153
154
|
const { pointerId, clientX, clientY, isPrimary, pointerType, timeStamp } = evt;
|
|
154
|
-
if (!this
|
|
155
|
-
const moves = this
|
|
156
|
-
const startEvent = this
|
|
155
|
+
if (!this.#pressed && this.hasPointerCapture(pointerId)) {
|
|
156
|
+
const moves = this.#getMoves(pointerId);
|
|
157
|
+
const startEvent = this.#getStartEvent(pointerId);
|
|
157
158
|
const lastMove = moves[moves.length - 1] || startEvent;
|
|
158
159
|
// https://bugs.webkit.org/show_bug.cgi?id=220194
|
|
159
160
|
// https://bugs.chromium.org/p/chromium/issues/detail?id=1092358
|
|
160
161
|
const movementX = clientX - lastMove.clientX;
|
|
161
162
|
const movementY = clientY - lastMove.clientY;
|
|
162
163
|
const move = {
|
|
163
|
-
x: this
|
|
164
|
-
y: this
|
|
164
|
+
x: this.#getMovementX(movementX, movementY),
|
|
165
|
+
y: this.#getMovementY(movementX, movementY),
|
|
165
166
|
clientX,
|
|
166
167
|
clientY,
|
|
167
168
|
timeStamp,
|
|
@@ -172,7 +173,7 @@ export class GemGestureElement extends GemElement {
|
|
|
172
173
|
this.pan(move);
|
|
173
174
|
|
|
174
175
|
if (this.movesMap.size !== 1) {
|
|
175
|
-
const secondaryPoint = this
|
|
176
|
+
const secondaryPoint = this.#getOtherLastMove(pointerId) as PanEventDetail;
|
|
176
177
|
const moveLen = Math.sqrt(movementX ** 2 + movementY ** 2);
|
|
177
178
|
const distanceLen = Math.sqrt(
|
|
178
179
|
(lastMove.clientX - secondaryPoint.clientX) ** 2 + (lastMove.clientY - secondaryPoint.clientY) ** 2,
|
|
@@ -193,23 +194,28 @@ export class GemGestureElement extends GemElement {
|
|
|
193
194
|
Math.abs(move.clientX - startEvent.clientX) > accuracy ||
|
|
194
195
|
Math.abs(move.clientY - startEvent.clientY) > accuracy
|
|
195
196
|
) {
|
|
196
|
-
window.clearTimeout(this
|
|
197
|
+
window.clearTimeout(this.#pressTimer);
|
|
197
198
|
}
|
|
198
199
|
}
|
|
199
|
-
}
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
#onMoveSet = (evt: PointerEvent) => {
|
|
203
|
+
evt.stopPropagation();
|
|
204
|
+
evt.getCoalescedEvents().forEach((evt) => this.#onMove(evt));
|
|
205
|
+
};
|
|
200
206
|
|
|
201
|
-
onEnd(evt: PointerEvent) {
|
|
207
|
+
#onEnd = (evt: PointerEvent) => {
|
|
202
208
|
evt.stopPropagation();
|
|
203
209
|
const { pointerId } = evt;
|
|
204
|
-
window.clearTimeout(this
|
|
210
|
+
window.clearTimeout(this.#pressTimer);
|
|
205
211
|
|
|
206
212
|
if (this.movesMap.size === 1) {
|
|
207
213
|
this.end(null);
|
|
208
214
|
}
|
|
209
215
|
|
|
210
216
|
// auto release: https://javascript.info/pointer-events#pointer-capturing
|
|
211
|
-
if (!this
|
|
212
|
-
const moves = this
|
|
217
|
+
if (!this.#pressed && this.hasPointerCapture(pointerId)) {
|
|
218
|
+
const moves = this.#getMoves(pointerId);
|
|
213
219
|
|
|
214
220
|
if (moves.length > 2) {
|
|
215
221
|
const { x, y, timeStamp, clientX, clientY } = moves[moves.length - 1];
|
|
@@ -238,8 +244,8 @@ export class GemGestureElement extends GemElement {
|
|
|
238
244
|
}
|
|
239
245
|
|
|
240
246
|
this.movesMap.delete(pointerId);
|
|
241
|
-
this
|
|
242
|
-
}
|
|
247
|
+
this.#startEventMap.delete(pointerId);
|
|
248
|
+
};
|
|
243
249
|
|
|
244
250
|
render() {
|
|
245
251
|
return html`
|
|
@@ -5,6 +5,10 @@ import { absoluteLocation } from '../../lib/utils';
|
|
|
5
5
|
|
|
6
6
|
import { matchPath, RouteItem, RouteOptions, createHistoryParams, createPath } from './route';
|
|
7
7
|
|
|
8
|
+
function isExternal(path: string) {
|
|
9
|
+
return !path.startsWith('/');
|
|
10
|
+
}
|
|
11
|
+
|
|
8
12
|
/**
|
|
9
13
|
* @attr href
|
|
10
14
|
* @attr target
|
|
@@ -29,11 +33,11 @@ export class GemLinkElement extends GemElement {
|
|
|
29
33
|
@attribute hint: 'on' | 'off';
|
|
30
34
|
|
|
31
35
|
// 动态路由,根据 route.pattern 和 options.params 计算出 path
|
|
32
|
-
@property route
|
|
36
|
+
@property route?: RouteItem;
|
|
33
37
|
/**@deprecated */
|
|
34
|
-
@property options
|
|
35
|
-
@property routeOptions
|
|
36
|
-
@property prepare
|
|
38
|
+
@property options?: RouteOptions;
|
|
39
|
+
@property routeOptions?: RouteOptions;
|
|
40
|
+
@property prepare?: () => void | Promise<void>;
|
|
37
41
|
|
|
38
42
|
@part link: string;
|
|
39
43
|
|
|
@@ -41,68 +45,45 @@ export class GemLinkElement extends GemElement {
|
|
|
41
45
|
return this.routeOptions || this.options;
|
|
42
46
|
}
|
|
43
47
|
|
|
48
|
+
get #hint() {
|
|
49
|
+
return this.hint || 'on';
|
|
50
|
+
}
|
|
51
|
+
|
|
44
52
|
constructor() {
|
|
45
53
|
super();
|
|
46
54
|
this.tabIndex = 0;
|
|
47
|
-
this.addEventListener('click', this
|
|
55
|
+
this.addEventListener('click', this.#onClick);
|
|
48
56
|
}
|
|
49
57
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (this.route) {
|
|
53
|
-
const queryProp = this.#routeOptions?.query || '';
|
|
54
|
-
const hashProp = this.#routeOptions?.hash || '';
|
|
55
|
-
return createPath(this.route, this.#routeOptions) + queryProp + hashProp;
|
|
56
|
-
} else {
|
|
57
|
-
const url = this.href || this.path + this.query + this.hash;
|
|
58
|
-
const { path, query } = history.getParams();
|
|
59
|
-
if (url.startsWith('#')) {
|
|
60
|
-
return `${path}${query}${url}`;
|
|
61
|
-
} else if (url.startsWith('?')) {
|
|
62
|
-
return `${path}${url}`;
|
|
63
|
-
} else if (url.startsWith('.')) {
|
|
64
|
-
return absoluteLocation(path, url);
|
|
65
|
-
} else {
|
|
66
|
-
return url;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
isExternal(pathInfo: string) {
|
|
72
|
-
return !pathInfo.startsWith('/');
|
|
73
|
-
}
|
|
58
|
+
#onClick = async () => {
|
|
59
|
+
const locationString = this.getLocationString();
|
|
74
60
|
|
|
75
|
-
|
|
76
|
-
const pathInfo = this.getPathInfo();
|
|
77
|
-
|
|
78
|
-
if (!pathInfo) return;
|
|
61
|
+
if (!locationString) return;
|
|
79
62
|
|
|
80
63
|
// 外部链接使用 `window.open`
|
|
81
|
-
if (
|
|
64
|
+
if (isExternal(locationString)) {
|
|
82
65
|
switch (this.target) {
|
|
83
66
|
case '_self':
|
|
84
|
-
window.location.href =
|
|
67
|
+
window.location.href = locationString;
|
|
85
68
|
return;
|
|
86
69
|
case '_parent':
|
|
87
|
-
window.parent.location.href =
|
|
70
|
+
window.parent.location.href = locationString;
|
|
88
71
|
return;
|
|
89
72
|
case '_top':
|
|
90
|
-
window.top!.location.href =
|
|
73
|
+
window.top!.location.href = locationString;
|
|
91
74
|
return;
|
|
92
75
|
default:
|
|
93
|
-
window.open(
|
|
76
|
+
window.open(locationString);
|
|
94
77
|
return;
|
|
95
78
|
}
|
|
96
79
|
}
|
|
97
80
|
|
|
98
81
|
const { path, query, hash } = history.getParams();
|
|
99
|
-
if (path + query + hash ===
|
|
82
|
+
if (path + query + hash === locationString) {
|
|
100
83
|
// 点击当前路由链接时,什么也没做
|
|
101
84
|
return;
|
|
102
85
|
}
|
|
103
86
|
|
|
104
|
-
e.stopPropagation();
|
|
105
|
-
|
|
106
87
|
await this.prepare?.();
|
|
107
88
|
|
|
108
89
|
if (this.route) {
|
|
@@ -111,7 +92,7 @@ export class GemLinkElement extends GemElement {
|
|
|
111
92
|
title: this.route.title || this.docTitle,
|
|
112
93
|
});
|
|
113
94
|
} else if (this.href) {
|
|
114
|
-
const { pathname, search, hash } = new URL(
|
|
95
|
+
const { pathname, search, hash } = new URL(locationString, location.origin);
|
|
115
96
|
history.pushIgnoreCloseHandle({
|
|
116
97
|
path: pathname,
|
|
117
98
|
query: search,
|
|
@@ -123,11 +104,18 @@ export class GemLinkElement extends GemElement {
|
|
|
123
104
|
}
|
|
124
105
|
};
|
|
125
106
|
|
|
126
|
-
preventDefault = (e: MouseEvent) => {
|
|
107
|
+
#preventDefault = (e: MouseEvent) => {
|
|
127
108
|
e.preventDefault();
|
|
128
109
|
};
|
|
129
110
|
|
|
130
|
-
|
|
111
|
+
#getHint = () => {
|
|
112
|
+
const locationString = this.getLocationString();
|
|
113
|
+
return isExternal(locationString)
|
|
114
|
+
? locationString
|
|
115
|
+
: new URL(history.basePath + locationString, location.origin).toString();
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
render() {
|
|
131
119
|
return html`
|
|
132
120
|
<style>
|
|
133
121
|
:host {
|
|
@@ -146,19 +134,36 @@ export class GemLinkElement extends GemElement {
|
|
|
146
134
|
</style>
|
|
147
135
|
<a
|
|
148
136
|
part=${this.link}
|
|
149
|
-
@click=${this
|
|
150
|
-
href=${ifDefined(
|
|
151
|
-
this.hint === 'off'
|
|
152
|
-
? undefined
|
|
153
|
-
: this.isExternal(pathInfo)
|
|
154
|
-
? pathInfo
|
|
155
|
-
: new URL(history.basePath + pathInfo, location.origin).toString(),
|
|
156
|
-
)}
|
|
137
|
+
@click=${this.#preventDefault}
|
|
138
|
+
href=${ifDefined(this.#hint === 'off' ? undefined : this.#getHint())}
|
|
157
139
|
>
|
|
158
140
|
<slot></slot>
|
|
159
141
|
</a>
|
|
160
142
|
`;
|
|
161
143
|
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* 如果该元素是外部链接返回 URL,否则返回路径(不包含 basePath)
|
|
147
|
+
*/
|
|
148
|
+
getLocationString() {
|
|
149
|
+
if (this.route) {
|
|
150
|
+
const queryProp = this.#routeOptions?.query || '';
|
|
151
|
+
const hashProp = this.#routeOptions?.hash || '';
|
|
152
|
+
return createPath(this.route, this.#routeOptions) + queryProp + hashProp;
|
|
153
|
+
} else {
|
|
154
|
+
const url = this.href || this.path + this.query + this.hash;
|
|
155
|
+
const { path, query } = history.getParams();
|
|
156
|
+
if (url.startsWith('#')) {
|
|
157
|
+
return `${path}${query}${url}`;
|
|
158
|
+
} else if (url.startsWith('?')) {
|
|
159
|
+
return `${path}${url}`;
|
|
160
|
+
} else if (url.startsWith('.')) {
|
|
161
|
+
return absoluteLocation(path, url);
|
|
162
|
+
} else {
|
|
163
|
+
return url;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
162
167
|
}
|
|
163
168
|
|
|
164
169
|
/**
|
|
@@ -170,15 +175,12 @@ export class GemActiveLinkElement extends GemLinkElement {
|
|
|
170
175
|
@attribute pattern: string; // 使用匹配模式设定 active
|
|
171
176
|
@state active: boolean;
|
|
172
177
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
this.active =
|
|
179
|
-
}
|
|
180
|
-
this.active = false;
|
|
181
|
-
}
|
|
182
|
-
return super.render(pathInfo);
|
|
178
|
+
constructor() {
|
|
179
|
+
super();
|
|
180
|
+
this.effect(() => {
|
|
181
|
+
const { path, query, hash } = history.getParams();
|
|
182
|
+
const isMatchPattern = this.pattern && matchPath(this.pattern, path);
|
|
183
|
+
this.active = !!isMatchPattern || path + query + hash === this.getLocationString();
|
|
184
|
+
});
|
|
183
185
|
}
|
|
184
186
|
}
|
|
@@ -13,6 +13,8 @@ const open = Symbol('open mark');
|
|
|
13
13
|
* 模拟 top layer:https://github.com/whatwg/html/issues/4633.
|
|
14
14
|
*/
|
|
15
15
|
export function createModalClass<T extends Record<string, unknown>>(options: T) {
|
|
16
|
+
const final = Symbol();
|
|
17
|
+
|
|
16
18
|
return class extends GemElement {
|
|
17
19
|
static inertStore: HTMLElement[] = [];
|
|
18
20
|
static instance: GemElement | null = null;
|
|
@@ -56,6 +58,7 @@ export function createModalClass<T extends Record<string, unknown>>(options: T)
|
|
|
56
58
|
shouldClose: this.shouldClose.bind(this),
|
|
57
59
|
});
|
|
58
60
|
}, 100);
|
|
61
|
+
return final;
|
|
59
62
|
}
|
|
60
63
|
|
|
61
64
|
/**
|
|
@@ -64,6 +67,7 @@ export function createModalClass<T extends Record<string, unknown>>(options: T)
|
|
|
64
67
|
*/
|
|
65
68
|
static close() {
|
|
66
69
|
history.back();
|
|
70
|
+
return final;
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
/**
|
|
@@ -74,6 +78,7 @@ export function createModalClass<T extends Record<string, unknown>>(options: T)
|
|
|
74
78
|
this.inertStore.forEach((e) => (e.inert = false));
|
|
75
79
|
this.instance?.remove();
|
|
76
80
|
updateStore(this.store, { [open]: false, ...options });
|
|
81
|
+
return final;
|
|
77
82
|
}
|
|
78
83
|
|
|
79
84
|
/**
|
|
@@ -8,7 +8,6 @@ interface NamePosition {
|
|
|
8
8
|
[index: string]: number;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
// TODO: use `URLPattern`
|
|
12
11
|
class ParamsRegExp extends RegExp {
|
|
13
12
|
namePosition: NamePosition;
|
|
14
13
|
constructor(pattern: string) {
|
|
@@ -28,10 +27,27 @@ class ParamsRegExp extends RegExp {
|
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
type Params = Record<string, string>;
|
|
30
|
+
declare global {
|
|
31
|
+
interface Window {
|
|
32
|
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=1731418
|
|
33
|
+
// https://github.com/WebKit/standards-positions/issues/61
|
|
34
|
+
URLPattern: any;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
31
37
|
|
|
32
|
-
//
|
|
38
|
+
// URLPattern 大小写敏感
|
|
33
39
|
// 匹配成功时返回 params
|
|
40
|
+
// `/a/b/:c/:d` `/a/b/1/2`
|
|
41
|
+
// pattern 以 / 结尾时能匹配 2 中路径
|
|
42
|
+
// `/a/b/:c/:d/` `/a/b/1/2`
|
|
43
|
+
// `/a/b/:c/:d/` `/a/b/1/2/`
|
|
34
44
|
export function matchPath(pattern: string, path: string) {
|
|
45
|
+
if (window.URLPattern) {
|
|
46
|
+
const urLPattern = new window.URLPattern({ pathname: pattern });
|
|
47
|
+
const matchResult = urLPattern.exec({ pathname: path }) || urLPattern.exec({ pathname: `${path}/` });
|
|
48
|
+
if (!matchResult) return null;
|
|
49
|
+
return matchResult.pathname.groups as Params;
|
|
50
|
+
}
|
|
35
51
|
const reg = new ParamsRegExp(pattern);
|
|
36
52
|
const matchResult = path.match(reg) || `${path}/`.match(reg);
|
|
37
53
|
if (!matchResult) return null;
|
|
@@ -111,13 +127,14 @@ export class GemRouteElement extends GemElement<State> {
|
|
|
111
127
|
* html`<gem-route .locationStore=${locationStore}>`
|
|
112
128
|
*/
|
|
113
129
|
@property locationStore?: Store<{ path: string; params: Params; query: QueryString; data?: any }>;
|
|
114
|
-
@property key
|
|
130
|
+
@property key?: any; // 除了 href 提供另外一种方式来更新,比如语言更新也需要刷新 <gem-route>
|
|
115
131
|
@emitter routechange: Emitter<RouteItem | null>; // path 改变或者 key 改变,包含初始渲染
|
|
116
132
|
@emitter loading: Emitter<RouteItem>;
|
|
117
133
|
@emitter error: Emitter<any>;
|
|
118
134
|
|
|
135
|
+
/**当前使用的路由对象 */
|
|
119
136
|
currentRoute: RouteItem | null;
|
|
120
|
-
|
|
137
|
+
/**当前匹配的路由的 params */
|
|
121
138
|
currentParams: Params = {};
|
|
122
139
|
|
|
123
140
|
#lastLoader?: Promise<TemplateResult>;
|