@mantou/gem 1.7.0 → 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.
Files changed (98) hide show
  1. package/dist/gem.es.js +402 -543
  2. package/dist/gem.umd.js +27 -33
  3. package/elements/base/dialog.d.ts +9 -7
  4. package/elements/base/dialog.d.ts.map +1 -1
  5. package/elements/base/dialog.js +12 -3
  6. package/elements/base/dialog.js.map +1 -1
  7. package/elements/base/gesture.d.ts +4 -13
  8. package/elements/base/gesture.d.ts.map +1 -1
  9. package/elements/base/gesture.js +152 -135
  10. package/elements/base/gesture.js.map +1 -1
  11. package/elements/base/link.d.ts +12 -9
  12. package/elements/base/link.d.ts.map +1 -1
  13. package/elements/base/link.js +81 -62
  14. package/elements/base/link.js.map +1 -1
  15. package/elements/base/modal-factory.d.ts +104 -80
  16. package/elements/base/modal-factory.d.ts.map +1 -1
  17. package/elements/base/modal-factory.js +12 -8
  18. package/elements/base/modal-factory.js.map +1 -1
  19. package/elements/base/reflect.js.map +1 -1
  20. package/elements/base/route.d.ts +12 -5
  21. package/elements/base/route.d.ts.map +1 -1
  22. package/elements/base/route.js +17 -5
  23. package/elements/base/route.js.map +1 -1
  24. package/elements/base/title.d.ts +3 -1
  25. package/elements/base/title.d.ts.map +1 -1
  26. package/elements/base/title.js +14 -16
  27. package/elements/base/title.js.map +1 -1
  28. package/elements/base/unsafe.js +1 -1
  29. package/elements/base/unsafe.js.map +1 -1
  30. package/elements/base/use.d.ts +1 -1
  31. package/elements/base/use.d.ts.map +1 -1
  32. package/elements/base/use.js +28 -20
  33. package/elements/base/use.js.map +1 -1
  34. package/helper/i18n.d.ts +4 -4
  35. package/helper/i18n.d.ts.map +1 -1
  36. package/helper/i18n.js.map +1 -1
  37. package/helper/mediaquery.d.ts +16 -18
  38. package/helper/mediaquery.d.ts.map +1 -1
  39. package/helper/mediaquery.js +42 -41
  40. package/helper/mediaquery.js.map +1 -1
  41. package/helper/request.d.ts +1 -1
  42. package/helper/request.d.ts.map +1 -1
  43. package/helper/request.js.map +1 -1
  44. package/helper/ssr-shim.d.ts +2 -0
  45. package/helper/ssr-shim.d.ts.map +1 -0
  46. package/helper/ssr-shim.js +29 -0
  47. package/helper/ssr-shim.js.map +1 -0
  48. package/helper/theme.d.ts +2 -2
  49. package/helper/theme.d.ts.map +1 -1
  50. package/helper/theme.js +20 -24
  51. package/helper/theme.js.map +1 -1
  52. package/index.d.ts +0 -10
  53. package/index.d.ts.map +1 -1
  54. package/index.js +0 -7
  55. package/index.js.map +1 -1
  56. package/lib/decorators.d.ts +4 -4
  57. package/lib/decorators.d.ts.map +1 -1
  58. package/lib/decorators.js +1 -2
  59. package/lib/decorators.js.map +1 -1
  60. package/lib/element.d.ts +16 -10
  61. package/lib/element.d.ts.map +1 -1
  62. package/lib/element.js +57 -79
  63. package/lib/element.js.map +1 -1
  64. package/lib/history.d.ts +1 -1
  65. package/lib/history.d.ts.map +1 -1
  66. package/lib/history.js +2 -2
  67. package/lib/history.js.map +1 -1
  68. package/lib/store.d.ts +2 -2
  69. package/lib/store.d.ts.map +1 -1
  70. package/lib/store.js.map +1 -1
  71. package/lib/utils.d.ts +8 -32
  72. package/lib/utils.d.ts.map +1 -1
  73. package/lib/utils.js +6 -21
  74. package/lib/utils.js.map +1 -1
  75. package/lib/version.d.ts +1 -1
  76. package/lib/version.js +1 -1
  77. package/package.json +2 -2
  78. package/src/elements/base/dialog.ts +10 -3
  79. package/src/elements/base/gesture.ts +52 -46
  80. package/src/elements/base/link.ts +69 -61
  81. package/src/elements/base/modal-factory.ts +5 -0
  82. package/src/elements/base/route.ts +22 -5
  83. package/src/elements/base/title.ts +8 -11
  84. package/src/elements/base/unsafe.ts +1 -1
  85. package/src/elements/base/use.ts +4 -6
  86. package/src/helper/i18n.ts +3 -3
  87. package/src/helper/mediaquery.ts +43 -42
  88. package/src/helper/ssr-shim.ts +29 -0
  89. package/src/helper/theme.ts +22 -24
  90. package/src/index.ts +0 -16
  91. package/src/lib/decorators.ts +1 -2
  92. package/src/lib/element.ts +56 -71
  93. package/src/lib/history.ts +2 -1
  94. package/src/lib/utils.ts +10 -42
  95. package/src/lib/version.ts +1 -1
  96. package/src/test/gem-element/decorators.test.ts +6 -6
  97. package/src/test/history.test.ts +3 -1
  98. 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 (globalThis.EventTarget || Object) {
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 = window.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) => (value !== undefined ? `${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.0";
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.0';
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.0",
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": "^4.5.0",
47
+ "typescript": "^5.3.2",
48
48
  "vite": "^2.7.13"
49
49
  },
50
50
  "author": "mantou132",
@@ -2,26 +2,28 @@ 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
12
+ * @fires open
13
+ * @fires close
11
14
  */
12
15
  @connectStore(history.store)
13
16
  export abstract class GemDialogBaseElement extends GemElement {
14
17
  @attribute label: string;
15
18
  @state opened: boolean;
16
19
 
17
- inert = true;
18
-
19
20
  #nextSibling: ChildNode | null;
20
21
  #parentElement: Node | null;
21
22
  #inertStore: HTMLElement[] = [];
22
23
 
23
24
  constructor() {
24
25
  super();
26
+ this.inert = true;
25
27
  this.internals.role = 'dialog';
26
28
  this.internals.ariaModal = 'true';
27
29
  }
@@ -40,6 +42,7 @@ export abstract class GemDialogBaseElement extends GemElement {
40
42
  }
41
43
  this.dispatchEvent(new CustomEvent('close'));
42
44
  this.opened = false;
45
+ return final;
43
46
  };
44
47
 
45
48
  /**
@@ -56,6 +59,7 @@ export abstract class GemDialogBaseElement extends GemElement {
56
59
  document.body.append(this);
57
60
  this.dispatchEvent(new CustomEvent('open'));
58
61
  this.opened = true;
62
+ return final;
59
63
  };
60
64
 
61
65
  /**@final */
@@ -68,6 +72,7 @@ export abstract class GemDialogBaseElement extends GemElement {
68
72
  close: this.closeHandle,
69
73
  shouldClose: this.shouldClose,
70
74
  });
75
+ return final;
71
76
  };
72
77
 
73
78
  shouldClose() {
@@ -77,6 +82,7 @@ export abstract class GemDialogBaseElement extends GemElement {
77
82
  /**@final */
78
83
  close = () => {
79
84
  history.back();
85
+ return final;
80
86
  };
81
87
 
82
88
  /**
@@ -88,5 +94,6 @@ export abstract class GemDialogBaseElement extends GemElement {
88
94
  forceClose = () => {
89
95
  this.opened = false;
90
96
  setTimeout(this.close, 100);
97
+ return final;
91
98
  };
92
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.onStart);
82
- this.addEventListener('pointermove', this.onMove);
83
- this.addEventListener('pointerup', this.onEnd);
84
- this.addEventListener('pointercancel', this.onEnd);
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
- getMoves(pointerId: number) {
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.startEventMap.get(pointerId) as PointerEvent;
94
- }
94
+ #getStartEvent = (pointerId: number) => {
95
+ return this.#startEventMap.get(pointerId) as PointerEvent;
96
+ };
95
97
 
96
- getOtherLastmove(pointerId: number) {
98
+ #getOtherLastMove = (pointerId: number) => {
97
99
  for (const id of this.movesMap.keys()) {
98
100
  if (id !== pointerId) {
99
- const moves = this.getMoves(id);
100
- return moves[moves.length - 1] || this.getStartEvent(id);
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.startEventMap.set(evt.pointerId, evt);
143
+ this.#startEventMap.set(evt.pointerId, evt);
142
144
  if (evt.isPrimary) {
143
- this.pressed = false;
144
- this.pressTimer = window.setTimeout(() => {
145
+ this.#pressed = false;
146
+ this.#pressTimer = window.setTimeout(() => {
145
147
  this.press(null);
146
- this.pressed = true;
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.pressed && this.hasPointerCapture(pointerId)) {
155
- const moves = this.getMoves(pointerId);
156
- const startEvent = this.getStartEvent(pointerId);
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.getMovementX(movementX, movementY),
164
- y: this.getMovementY(movementX, movementY),
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.getOtherLastmove(pointerId) as PanEventDetail;
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.pressTimer);
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.pressTimer);
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.pressed && this.hasPointerCapture(pointerId)) {
212
- const moves = this.getMoves(pointerId);
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,13 +244,13 @@ export class GemGestureElement extends GemElement {
238
244
  }
239
245
 
240
246
  this.movesMap.delete(pointerId);
241
- this.startEventMap.delete(pointerId);
242
- }
247
+ this.#startEventMap.delete(pointerId);
248
+ };
243
249
 
244
250
  render() {
245
251
  return html`
246
252
  <style>
247
- :host {
253
+ :host(:where(:not([hidden]))) {
248
254
  display: block;
249
255
  user-select: none;
250
256
  touch-action: ${this.touchAction || 'none'};
@@ -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,83 +33,66 @@ export class GemLinkElement extends GemElement {
29
33
  @attribute hint: 'on' | 'off';
30
34
 
31
35
  // 动态路由,根据 route.pattern 和 options.params 计算出 path
32
- @property route: RouteItem | undefined;
33
- @property options: RouteOptions | undefined;
34
- @property prepare: (() => void | Promise<void>) | undefined;
36
+ @property route?: RouteItem;
37
+ /**@deprecated */
38
+ @property options?: RouteOptions;
39
+ @property routeOptions?: RouteOptions;
40
+ @property prepare?: () => void | Promise<void>;
35
41
 
36
42
  @part link: string;
37
43
 
38
- constructor() {
39
- super();
40
- this.tabIndex = 0;
41
- this.addEventListener('click', this.clickHandle);
44
+ get #routeOptions() {
45
+ return this.routeOptions || this.options;
42
46
  }
43
47
 
44
- // 不包含 basePath
45
- getPathInfo() {
46
- if (this.route) {
47
- const queryProp = this.options?.query || '';
48
- const hashProp = this.options?.hash || '';
49
- return createPath(this.route, this.options) + queryProp + hashProp;
50
- } else {
51
- const url = this.href || this.path + this.query + this.hash;
52
- const { path, query } = history.getParams();
53
- if (url.startsWith('#')) {
54
- return `${path}${query}${url}`;
55
- } else if (url.startsWith('?')) {
56
- return `${path}${url}`;
57
- } else if (url.startsWith('.')) {
58
- return absoluteLocation(path, url);
59
- } else {
60
- return url;
61
- }
62
- }
48
+ get #hint() {
49
+ return this.hint || 'on';
63
50
  }
64
51
 
65
- isExternal(pathInfo: string) {
66
- return !pathInfo.startsWith('/');
52
+ constructor() {
53
+ super();
54
+ this.tabIndex = 0;
55
+ this.addEventListener('click', this.#onClick);
67
56
  }
68
57
 
69
- clickHandle = async (e: MouseEvent) => {
70
- const pathInfo = this.getPathInfo();
58
+ #onClick = async () => {
59
+ const locationString = this.getLocationString();
71
60
 
72
- if (!pathInfo) return;
61
+ if (!locationString) return;
73
62
 
74
63
  // 外部链接使用 `window.open`
75
- if (this.isExternal(pathInfo)) {
64
+ if (isExternal(locationString)) {
76
65
  switch (this.target) {
77
66
  case '_self':
78
- window.location.href = pathInfo;
67
+ window.location.href = locationString;
79
68
  return;
80
69
  case '_parent':
81
- window.parent.location.href = pathInfo;
70
+ window.parent.location.href = locationString;
82
71
  return;
83
72
  case '_top':
84
- window.top!.location.href = pathInfo;
73
+ window.top!.location.href = locationString;
85
74
  return;
86
75
  default:
87
- window.open(pathInfo);
76
+ window.open(locationString);
88
77
  return;
89
78
  }
90
79
  }
91
80
 
92
81
  const { path, query, hash } = history.getParams();
93
- if (path + query + hash === pathInfo) {
82
+ if (path + query + hash === locationString) {
94
83
  // 点击当前路由链接时,什么也没做
95
84
  return;
96
85
  }
97
86
 
98
- e.stopPropagation();
99
-
100
87
  await this.prepare?.();
101
88
 
102
89
  if (this.route) {
103
90
  history.pushIgnoreCloseHandle({
104
- ...createHistoryParams(this.route, this.options),
91
+ ...createHistoryParams(this.route, this.#routeOptions),
105
92
  title: this.route.title || this.docTitle,
106
93
  });
107
94
  } else if (this.href) {
108
- const { pathname, search, hash } = new URL(pathInfo, location.origin);
95
+ const { pathname, search, hash } = new URL(locationString, location.origin);
109
96
  history.pushIgnoreCloseHandle({
110
97
  path: pathname,
111
98
  query: search,
@@ -117,11 +104,18 @@ export class GemLinkElement extends GemElement {
117
104
  }
118
105
  };
119
106
 
120
- preventDefault = (e: MouseEvent) => {
107
+ #preventDefault = (e: MouseEvent) => {
121
108
  e.preventDefault();
122
109
  };
123
110
 
124
- render(pathInfo = this.getPathInfo()) {
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() {
125
119
  return html`
126
120
  <style>
127
121
  :host {
@@ -140,19 +134,36 @@ export class GemLinkElement extends GemElement {
140
134
  </style>
141
135
  <a
142
136
  part=${this.link}
143
- @click=${this.preventDefault}
144
- href=${ifDefined(
145
- this.hint === 'off'
146
- ? undefined
147
- : this.isExternal(pathInfo)
148
- ? pathInfo
149
- : new URL(history.basePath + pathInfo, location.origin).toString(),
150
- )}
137
+ @click=${this.#preventDefault}
138
+ href=${ifDefined(this.#hint === 'off' ? undefined : this.#getHint())}
151
139
  >
152
140
  <slot></slot>
153
141
  </a>
154
142
  `;
155
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
+ }
156
167
  }
157
168
 
158
169
  /**
@@ -164,15 +175,12 @@ export class GemActiveLinkElement extends GemLinkElement {
164
175
  @attribute pattern: string; // 使用匹配模式设定 active
165
176
  @state active: boolean;
166
177
 
167
- render() {
168
- const { path, query, hash } = history.getParams();
169
- const isMatchPattern = this.pattern && matchPath(this.pattern, path);
170
- const pathInfo = this.getPathInfo();
171
- if (isMatchPattern || path + query + hash === pathInfo) {
172
- this.active = true;
173
- } else {
174
- this.active = false;
175
- }
176
- 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
+ });
177
185
  }
178
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
  /**