@mantou/gem 2.2.0 → 2.2.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 +2039 -2051
- package/dist/gem.umd.js +12 -32
- package/elements/base/dialog.d.ts +1 -1
- package/elements/base/dialog.d.ts.map +1 -1
- package/elements/base/dialog.js +2 -2
- package/elements/base/dialog.js.map +1 -1
- package/elements/base/gesture.d.ts +1 -1
- package/elements/base/gesture.d.ts.map +1 -1
- package/elements/base/gesture.js +5 -5
- package/elements/base/gesture.js.map +1 -1
- package/elements/base/link.d.ts +1 -1
- package/elements/base/link.d.ts.map +1 -1
- package/elements/base/link.js +18 -19
- package/elements/base/link.js.map +1 -1
- package/elements/base/modal-factory.d.ts +93 -57
- package/elements/base/modal-factory.d.ts.map +1 -1
- package/elements/base/modal-factory.js +4 -3
- package/elements/base/modal-factory.js.map +1 -1
- package/elements/base/reflect.d.ts +1 -2
- package/elements/base/reflect.d.ts.map +1 -1
- package/elements/base/reflect.js +8 -10
- package/elements/base/reflect.js.map +1 -1
- package/elements/base/route.d.ts +18 -8
- package/elements/base/route.d.ts.map +1 -1
- package/elements/base/route.js +17 -21
- package/elements/base/route.js.map +1 -1
- package/elements/base/title.d.ts +1 -1
- package/elements/base/title.d.ts.map +1 -1
- package/elements/base/title.js +5 -7
- package/elements/base/title.js.map +1 -1
- package/elements/base/unsafe.d.ts +4 -3
- package/elements/base/unsafe.d.ts.map +1 -1
- package/elements/base/unsafe.js +45 -24
- 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 +1 -1
- package/elements/base/use.js.map +1 -1
- package/elements/link.js +1 -1
- package/elements/link.js.map +1 -1
- package/elements/route.js +1 -1
- package/elements/route.js.map +1 -1
- package/helper/hmr.d.ts +11 -0
- package/helper/hmr.d.ts.map +1 -0
- package/helper/hmr.js +255 -0
- package/helper/hmr.js.map +1 -0
- package/helper/i18n.d.ts +2 -2
- package/helper/i18n.d.ts.map +1 -1
- package/helper/i18n.js +5 -4
- package/helper/i18n.js.map +1 -1
- package/helper/logger.d.ts +1 -1
- package/helper/logger.d.ts.map +1 -1
- package/helper/logger.js +8 -5
- package/helper/logger.js.map +1 -1
- package/helper/mediaquery.js +1 -1
- package/helper/mediaquery.js.map +1 -1
- package/helper/react-utils.d.ts.map +1 -1
- package/helper/react-utils.js +2 -6
- package/helper/react-utils.js.map +1 -1
- package/helper/ssr-shim.d.ts.map +1 -1
- package/helper/ssr-shim.js +2 -1
- package/helper/ssr-shim.js.map +1 -1
- package/helper/theme.d.ts +17 -6
- package/helper/theme.d.ts.map +1 -1
- package/helper/theme.js +23 -8
- package/helper/theme.js.map +1 -1
- package/index.d.ts +1 -2
- package/index.d.ts.map +1 -1
- package/index.js +1 -3
- package/index.js.map +1 -1
- package/lib/decorators.d.ts +54 -62
- package/lib/decorators.d.ts.map +1 -1
- package/lib/decorators.js +90 -91
- package/lib/decorators.js.map +1 -1
- package/lib/directive.d.ts +0 -18
- package/lib/directive.d.ts.map +1 -1
- package/lib/directive.js +1 -2
- package/lib/directive.js.map +1 -1
- package/lib/element.d.ts +8 -137
- package/lib/element.d.ts.map +1 -1
- package/lib/element.js +16 -481
- package/lib/element.js.map +1 -1
- package/lib/history.d.ts +68 -10
- package/lib/history.d.ts.map +1 -1
- package/lib/history.js +15 -15
- package/lib/history.js.map +1 -1
- package/lib/lit-html.d.ts +7 -109
- package/lib/lit-html.d.ts.map +1 -1
- package/lib/lit-html.js +75 -32
- package/lib/lit-html.js.map +1 -1
- package/lib/reactive.d.ts +130 -0
- package/lib/reactive.d.ts.map +1 -0
- package/lib/reactive.js +474 -0
- package/lib/reactive.js.map +1 -0
- package/lib/repeat.d.ts +3 -3
- package/lib/repeat.d.ts.map +1 -1
- package/lib/repeat.js +3 -3
- package/lib/repeat.js.map +1 -1
- package/lib/store.d.ts +15 -4
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +2 -0
- package/lib/store.js.map +1 -1
- package/lib/utils.d.ts +26 -11
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +21 -14
- package/lib/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/dist.ts +6 -8
- package/src/elements/base/dialog.ts +2 -2
- package/src/elements/base/gesture.ts +6 -6
- package/src/elements/base/link.ts +18 -24
- package/src/elements/base/modal-factory.ts +4 -3
- package/src/elements/base/reflect.ts +2 -3
- package/src/elements/base/route.ts +21 -28
- package/src/elements/base/title.ts +6 -8
- package/src/elements/base/unsafe.ts +33 -14
- package/src/elements/base/use.ts +1 -1
- package/src/elements/link.ts +1 -1
- package/src/elements/route.ts +1 -1
- package/src/helper/hmr.ts +305 -0
- package/src/helper/i18n.ts +7 -7
- package/src/helper/logger.ts +9 -5
- package/src/helper/mediaquery.ts +1 -1
- package/src/helper/react-utils.ts +4 -12
- package/src/helper/ssr-shim.ts +3 -1
- package/src/helper/theme.ts +29 -14
- package/src/index.ts +1 -4
- package/src/lib/decorators.ts +107 -117
- package/src/lib/directive.ts +3 -5
- package/src/lib/element.ts +21 -600
- package/src/lib/history.ts +16 -18
- package/src/lib/lit-html.ts +89 -34
- package/src/lib/reactive.ts +620 -0
- package/src/lib/repeat.ts +5 -5
- package/src/lib/store.ts +4 -2
- package/src/lib/utils.ts +41 -29
- package/src/test/elements/link.test.ts +2 -2
- package/src/test/elements/reflect.test.ts +3 -3
- package/src/test/elements/title.test.ts +2 -2
- package/src/test/gem-element/advance.test.ts +11 -10
- package/src/test/gem-element/basic.test.ts +4 -5
- package/src/test/gem-element/decorators.test.ts +10 -10
- package/src/test/gem-element/multi.test.ts +2 -2
- package/src/test/history.test.ts +1 -2
- package/src/test/store.test.ts +2 -3
- package/src/test/utils.test.ts +5 -6
- package/src/test/utils.ts +2 -2
- package/helper/react-shim.d.ts +0 -15
- package/helper/react-shim.d.ts.map +0 -1
- package/helper/react-shim.js +0 -56
- package/helper/react-shim.js.map +0 -1
- package/lib/directives.d.ts +0 -4
- package/lib/directives.d.ts.map +0 -1
- package/lib/directives.js +0 -5
- package/lib/directives.js.map +0 -1
- package/lib/ref.d.ts +0 -1
- package/lib/ref.d.ts.map +0 -1
- package/lib/ref.js +0 -2
- package/lib/ref.js.map +0 -1
package/lib/utils.d.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function
|
|
1
|
+
declare function queueMicrotask(cb: () => void): void;
|
|
2
|
+
export declare function addMicrotask(func: () => void, method?: typeof queueMicrotask): void;
|
|
3
|
+
type OverrideFn = {
|
|
4
|
+
name: never;
|
|
5
|
+
apply: never;
|
|
6
|
+
call: never;
|
|
7
|
+
bind: never;
|
|
8
|
+
toString: never;
|
|
9
|
+
prototype: never;
|
|
10
|
+
length: never;
|
|
11
|
+
arguments: never;
|
|
12
|
+
caller: never;
|
|
13
|
+
[Symbol.hasInstance]: never;
|
|
14
|
+
[Symbol.metadata]: never;
|
|
15
|
+
};
|
|
16
|
+
export declare function createUpdater<T, Fn = (payload?: Partial<T>) => any>(initState: T, fn: Fn): Fn & Omit<OverrideFn, keyof T> & T;
|
|
17
|
+
export type Updater<T, Fn = (payload?: Partial<T>) => any> = ReturnType<typeof createUpdater<T, Fn>>;
|
|
3
18
|
export declare function absoluteLocation(currentPath?: string, relativePath?: string): string;
|
|
4
19
|
export type NonPrimitive = object;
|
|
5
20
|
export declare function addListener<T extends EventTarget, A extends Parameters<T['addEventListener']>>(target: T, type: A[0], listener: A[1], options?: A[2]): () => void;
|
|
@@ -20,8 +35,15 @@ export declare class LinkedList<T = any> extends EventTarget {
|
|
|
20
35
|
get last(): LinkedListItem<T> | undefined;
|
|
21
36
|
isSuperLinkOf(subLink: LinkedList<T>): boolean;
|
|
22
37
|
find(value: T): LinkedListItem<T> | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* 添加到尾部,已存在时会删除老的项目
|
|
40
|
+
* 如果是添加第一个,start 事件会在添加前触发,避免处理事件重复的逻辑
|
|
41
|
+
*/
|
|
23
42
|
add(value: T): void;
|
|
43
|
+
/** 删除这个元素后没有其他元素时立即出发 end 事件 */
|
|
24
44
|
delete(value: T): LinkedListItem<T> | undefined;
|
|
45
|
+
clear(): void;
|
|
46
|
+
/** 获取头部元素,会从链表删除 */
|
|
25
47
|
get(): T | undefined;
|
|
26
48
|
}
|
|
27
49
|
export declare class PropProxyMap<T extends NonPrimitive, V = unknown> extends WeakMap<T, Record<string, V>> {
|
|
@@ -29,7 +51,6 @@ export declare class PropProxyMap<T extends NonPrimitive, V = unknown> extends W
|
|
|
29
51
|
}
|
|
30
52
|
export declare class QueryString extends URLSearchParams {
|
|
31
53
|
#private;
|
|
32
|
-
constructor(param?: any);
|
|
33
54
|
concat(param: any): void;
|
|
34
55
|
setAny(key: string, value: any): void;
|
|
35
56
|
getAny(key: string): any;
|
|
@@ -52,18 +73,12 @@ export declare class GemError extends Error {
|
|
|
52
73
|
constructor(msg: string);
|
|
53
74
|
}
|
|
54
75
|
export declare function isArrayChange(newValues: any[], oldValues: any[]): boolean;
|
|
55
|
-
export declare function objectMapToString<T = any>(object: Record<string, T>, separate: string,
|
|
56
|
-
type StyleProp = keyof CSSStyleDeclaration | `--${string}` | '
|
|
76
|
+
export declare function objectMapToString<T = any>(object: Record<string, T>, separate: string, toStr: (key: string, value: T) => string): string;
|
|
77
|
+
type StyleProp = keyof CSSStyleDeclaration | `--${string}` | 'positionAnchor' | 'anchorDefault' | 'anchorName';
|
|
57
78
|
export type StyleObject = Partial<Record<StyleProp, string | number | false | undefined | null>>;
|
|
58
79
|
export declare function styleMap(object: StyleObject): string;
|
|
59
80
|
export declare function classMap(object: Record<string, string | number | boolean | undefined | null>): string;
|
|
60
81
|
export declare const partMap: typeof classMap;
|
|
61
82
|
export declare function exportPartsMap(object: Record<string, string | boolean | undefined | null>): string;
|
|
62
|
-
declare global {
|
|
63
|
-
interface PropertyIndexedKeyframes extends StyleObject {
|
|
64
|
-
}
|
|
65
|
-
interface Keyframe extends StyleObject {
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
83
|
export {};
|
|
69
84
|
//# sourceMappingURL=utils.d.ts.map
|
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,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/utils.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
const { assign, fromEntries, entries, keys } = Object;
|
|
2
|
+
// 用原生 Chrome 找不到调用栈
|
|
3
|
+
function queueMicrotask(cb) {
|
|
4
|
+
Promise.resolve().then(cb);
|
|
5
|
+
}
|
|
2
6
|
const microtaskSet = new Set();
|
|
3
|
-
export function addMicrotask(func) {
|
|
7
|
+
export function addMicrotask(func, method = queueMicrotask) {
|
|
4
8
|
if (microtaskSet.has(func))
|
|
5
9
|
return;
|
|
6
|
-
|
|
10
|
+
method(() => {
|
|
7
11
|
microtaskSet.delete(func);
|
|
8
12
|
func();
|
|
9
13
|
});
|
|
@@ -17,7 +21,8 @@ export function createUpdater(initState, fn) {
|
|
|
17
21
|
delete state.name;
|
|
18
22
|
delete state.length;
|
|
19
23
|
assign(state, initState);
|
|
20
|
-
//
|
|
24
|
+
// ts 不允许直接 Omit 掉 Fn 上的属性
|
|
25
|
+
// 只能利用 ts plugin 移除多余的自动完成项
|
|
21
26
|
return state;
|
|
22
27
|
}
|
|
23
28
|
// 不编码 hash 用于比较
|
|
@@ -77,8 +82,10 @@ export class LinkedList extends EventTarget {
|
|
|
77
82
|
find(value) {
|
|
78
83
|
return this.#map.get(value);
|
|
79
84
|
}
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
/**
|
|
86
|
+
* 添加到尾部,已存在时会删除老的项目
|
|
87
|
+
* 如果是添加第一个,start 事件会在添加前触发,避免处理事件重复的逻辑
|
|
88
|
+
*/
|
|
82
89
|
add(value) {
|
|
83
90
|
if (!this.#lastItem) {
|
|
84
91
|
this.dispatchEvent(new CustomEvent('start'));
|
|
@@ -95,7 +102,7 @@ export class LinkedList extends EventTarget {
|
|
|
95
102
|
}
|
|
96
103
|
this.#map.set(value, item);
|
|
97
104
|
}
|
|
98
|
-
|
|
105
|
+
/** 删除这个元素后没有其他元素时立即出发 end 事件 */
|
|
99
106
|
delete(value) {
|
|
100
107
|
const deleteItem = this.#delete(value);
|
|
101
108
|
if (!this.#firstItem) {
|
|
@@ -103,8 +110,11 @@ export class LinkedList extends EventTarget {
|
|
|
103
110
|
}
|
|
104
111
|
return deleteItem;
|
|
105
112
|
}
|
|
106
|
-
|
|
107
|
-
|
|
113
|
+
clear() {
|
|
114
|
+
this.#map.clear();
|
|
115
|
+
this.#firstItem = this.#lastItem = undefined;
|
|
116
|
+
}
|
|
117
|
+
/** 获取头部元素,会从链表删除 */
|
|
108
118
|
get() {
|
|
109
119
|
const firstItem = this.#firstItem;
|
|
110
120
|
if (!firstItem)
|
|
@@ -124,9 +134,6 @@ export class PropProxyMap extends WeakMap {
|
|
|
124
134
|
}
|
|
125
135
|
}
|
|
126
136
|
export class QueryString extends URLSearchParams {
|
|
127
|
-
constructor(param) {
|
|
128
|
-
super(param);
|
|
129
|
-
}
|
|
130
137
|
// support `{ key: ObjectValue }`
|
|
131
138
|
concat(param) {
|
|
132
139
|
let query;
|
|
@@ -196,7 +203,7 @@ export function randomStr(len = 5) {
|
|
|
196
203
|
return str;
|
|
197
204
|
}
|
|
198
205
|
export function camelToKebabCase(str) {
|
|
199
|
-
return str.replace(/[A-Z]/g,
|
|
206
|
+
return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
|
200
207
|
}
|
|
201
208
|
export function kebabToCamelCase(str) {
|
|
202
209
|
return str.replace(/-(.)/g, (_substr, $1) => $1.toUpperCase());
|
|
@@ -223,10 +230,10 @@ export function isArrayChange(newValues, oldValues) {
|
|
|
223
230
|
}
|
|
224
231
|
return false;
|
|
225
232
|
}
|
|
226
|
-
export function objectMapToString(object, separate,
|
|
233
|
+
export function objectMapToString(object, separate, toStr) {
|
|
227
234
|
let result = separate;
|
|
228
235
|
for (const key in object) {
|
|
229
|
-
const s =
|
|
236
|
+
const s = toStr(key, object[key]);
|
|
230
237
|
result += s ? s + separate : '';
|
|
231
238
|
}
|
|
232
239
|
return result;
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"AAAA,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;AAEtD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAc,CAAC;AAC3C,MAAM,UAAU,YAAY,CAAC,IAAgB;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantou/gem",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "💎 使用自定义元素的轻量级 WebApp 开发框架",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"frontend",
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
"build:lib": "vite build",
|
|
39
39
|
"build": "pnpm build:module && pnpm build:lib",
|
|
40
40
|
"start": "pnpm build:module --watch",
|
|
41
|
-
"test": "cross-env
|
|
41
|
+
"test": "cross-env wtr"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@gemjs/config": "^2.1.
|
|
44
|
+
"@gemjs/config": "^2.1.2",
|
|
45
45
|
"@types/chai": "^5.0.0",
|
|
46
46
|
"@types/mocha": "^10.0.7",
|
|
47
47
|
"@types/trusted-types": "^2.0.7",
|
package/src/dist.ts
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 导出所有内容,包括 gem 元素
|
|
3
3
|
*/
|
|
4
|
+
|
|
5
|
+
export * from '.';
|
|
6
|
+
export * from './elements/base/dialog';
|
|
7
|
+
export * from './elements/base/modal-factory';
|
|
4
8
|
export * from './elements/link';
|
|
9
|
+
export * from './elements/reflect';
|
|
5
10
|
export * from './elements/route';
|
|
6
11
|
export * from './elements/title';
|
|
7
|
-
export * from './elements/use';
|
|
8
12
|
export * from './elements/unsafe';
|
|
9
|
-
export * from './elements/
|
|
10
|
-
|
|
11
|
-
export * from './elements/base/modal-factory';
|
|
12
|
-
export * from './elements/base/dialog';
|
|
13
|
-
|
|
13
|
+
export * from './elements/use';
|
|
14
14
|
export * from './helper/i18n';
|
|
15
15
|
export * from './helper/logger';
|
|
16
16
|
export * from './helper/mediaquery';
|
|
17
17
|
export * from './helper/request';
|
|
18
18
|
export * from './helper/theme';
|
|
19
|
-
|
|
20
|
-
export * from '.';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { attribute, state, connectStore, aria, willMount } from '../../lib/decorators';
|
|
1
|
+
import { aria, attribute, connectStore, state, willMount } from '../../lib/decorators';
|
|
3
2
|
import { history } from '../../lib/history';
|
|
3
|
+
import { GemElement } from '../../lib/reactive';
|
|
4
4
|
|
|
5
5
|
const final = Symbol();
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { css, GemElement } from '../../lib/element';
|
|
2
1
|
import type { Emitter } from '../../lib/decorators';
|
|
3
2
|
import { adoptedStyle, attribute, emitter, mounted, state } from '../../lib/decorators';
|
|
3
|
+
import { css, GemElement } from '../../lib/reactive';
|
|
4
4
|
|
|
5
5
|
export type PanEventDetail = {
|
|
6
6
|
// movement
|
|
@@ -46,7 +46,7 @@ function angleAB(
|
|
|
46
46
|
|
|
47
47
|
const style = css`
|
|
48
48
|
@layer {
|
|
49
|
-
|
|
49
|
+
&:where(:not([hidden])) {
|
|
50
50
|
display: block;
|
|
51
51
|
user-select: none;
|
|
52
52
|
touch-action: attr(touch-action, none);
|
|
@@ -73,7 +73,7 @@ export class GemGestureElement extends GemElement {
|
|
|
73
73
|
@state grabbing: boolean;
|
|
74
74
|
|
|
75
75
|
#pressed = false; // 触发 press 之后不触发其他事件
|
|
76
|
-
#pressTimer = 0;
|
|
76
|
+
#pressTimer: ReturnType<typeof setTimeout> | number = 0;
|
|
77
77
|
|
|
78
78
|
#startEventMap: Map<number, PointerEvent> = new Map();
|
|
79
79
|
|
|
@@ -134,7 +134,7 @@ export class GemGestureElement extends GemElement {
|
|
|
134
134
|
this.#startEventMap.set(evt.pointerId, evt);
|
|
135
135
|
if (evt.isPrimary) {
|
|
136
136
|
this.#pressed = false;
|
|
137
|
-
this.#pressTimer =
|
|
137
|
+
this.#pressTimer = setTimeout(() => {
|
|
138
138
|
this.press(evt);
|
|
139
139
|
this.#pressed = true;
|
|
140
140
|
}, 251);
|
|
@@ -187,7 +187,7 @@ export class GemGestureElement extends GemElement {
|
|
|
187
187
|
Math.abs(move.clientX - startEvent.clientX) > accuracy ||
|
|
188
188
|
Math.abs(move.clientY - startEvent.clientY) > accuracy
|
|
189
189
|
) {
|
|
190
|
-
|
|
190
|
+
clearTimeout(this.#pressTimer);
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
193
|
};
|
|
@@ -205,7 +205,7 @@ export class GemGestureElement extends GemElement {
|
|
|
205
205
|
#onEnd = async (evt: PointerEvent) => {
|
|
206
206
|
evt.stopPropagation();
|
|
207
207
|
const { pointerId } = evt;
|
|
208
|
-
|
|
208
|
+
clearTimeout(this.#pressTimer);
|
|
209
209
|
|
|
210
210
|
if (this.movesMap.size === 1) {
|
|
211
211
|
this.grabbing = false;
|
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
import { css, GemElement, html } from '../../lib/element';
|
|
2
1
|
import {
|
|
2
|
+
adoptedStyle,
|
|
3
|
+
aria,
|
|
3
4
|
attribute,
|
|
4
|
-
|
|
5
|
-
state,
|
|
6
|
-
part,
|
|
5
|
+
boolattribute,
|
|
7
6
|
connectStore,
|
|
8
|
-
shadow,
|
|
9
|
-
aria,
|
|
10
|
-
adoptedStyle,
|
|
11
|
-
mounted,
|
|
12
7
|
effect,
|
|
13
|
-
|
|
8
|
+
mounted,
|
|
9
|
+
part,
|
|
10
|
+
property,
|
|
11
|
+
shadow,
|
|
12
|
+
state,
|
|
14
13
|
template,
|
|
15
14
|
} from '../../lib/decorators';
|
|
16
|
-
import {
|
|
15
|
+
import { css, GemElement, html } from '../../lib/element';
|
|
16
|
+
import { basePathStore, history } from '../../lib/history';
|
|
17
17
|
import { absoluteLocation } from '../../lib/utils';
|
|
18
|
-
|
|
19
18
|
import type { RouteItem, RouteOptions } from './route';
|
|
20
|
-
import {
|
|
19
|
+
import { createHistoryParams, createPath, matchPath } from './route';
|
|
21
20
|
|
|
22
21
|
function isExternal(path: string) {
|
|
23
22
|
return !path.startsWith('/');
|
|
@@ -47,6 +46,8 @@ const styles = css`
|
|
|
47
46
|
@shadow()
|
|
48
47
|
@aria({ focusable: true })
|
|
49
48
|
export class GemLinkElement extends GemElement {
|
|
49
|
+
@part static link: string;
|
|
50
|
+
|
|
50
51
|
@attribute href: string;
|
|
51
52
|
@attribute target: string;
|
|
52
53
|
@attribute path: string;
|
|
@@ -63,8 +64,6 @@ export class GemLinkElement extends GemElement {
|
|
|
63
64
|
@property routeOptions?: RouteOptions;
|
|
64
65
|
@property prepare?: () => void | Promise<void>;
|
|
65
66
|
|
|
66
|
-
@part link: string;
|
|
67
|
-
|
|
68
67
|
get #routeOptions() {
|
|
69
68
|
return this.routeOptions || this.options;
|
|
70
69
|
}
|
|
@@ -73,7 +72,9 @@ export class GemLinkElement extends GemElement {
|
|
|
73
72
|
return this.hint || 'on';
|
|
74
73
|
}
|
|
75
74
|
|
|
76
|
-
#onClick = async () => {
|
|
75
|
+
#onClick = async (e: MouseEvent) => {
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
|
|
77
78
|
const locationString = this._getLocationString();
|
|
78
79
|
|
|
79
80
|
if (!locationString) return;
|
|
@@ -122,8 +123,6 @@ export class GemLinkElement extends GemElement {
|
|
|
122
123
|
}
|
|
123
124
|
};
|
|
124
125
|
|
|
125
|
-
#preventDefault = (e: MouseEvent) => e.preventDefault();
|
|
126
|
-
|
|
127
126
|
#getHint = () => {
|
|
128
127
|
const locationString = this._getLocationString();
|
|
129
128
|
return isExternal(locationString)
|
|
@@ -146,13 +145,8 @@ export class GemLinkElement extends GemElement {
|
|
|
146
145
|
|
|
147
146
|
@template()
|
|
148
147
|
#content = () => {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
@click=${this.#preventDefault}
|
|
152
|
-
href=${this.#hint === 'off' ? null : this.#getHint()}
|
|
153
|
-
tabindex="-1"
|
|
154
|
-
><slot></slot
|
|
155
|
-
></a>`;
|
|
148
|
+
const href = this.#hint === 'off' ? null : this.#getHint();
|
|
149
|
+
return html`<a part=${GemLinkElement.link} href=${href} tabindex="-1"><slot></slot></a>`;
|
|
156
150
|
};
|
|
157
151
|
|
|
158
152
|
/**
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
import { connect, createStore } from '../../lib/store';
|
|
3
|
-
import { history } from '../../lib/history';
|
|
1
|
+
/** biome-ignore-all lint/complexity/noThisInStatic: base class */
|
|
4
2
|
import { aria, mounted, shadow } from '../../lib/decorators';
|
|
3
|
+
import { history } from '../../lib/history';
|
|
4
|
+
import { GemElement } from '../../lib/reactive';
|
|
5
|
+
import { connect, createStore } from '../../lib/store';
|
|
5
6
|
|
|
6
7
|
const open = Symbol('open mark');
|
|
7
8
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* - ref 读取时需要用到 `target` `dataset`
|
|
3
2
|
* - 预渲染可能造成重复的元素,在序列化时可以用正则移除 GemReflectElement 渲染的从开始到结束连续的元素
|
|
4
3
|
* - `replaceAll(/<!--gem-reflect-start-->.*?<!--gem-reflect-end-->/gs, '')`
|
|
5
4
|
*
|
|
6
5
|
* 不能在在顶级代码块中清除这些元素,因为重复加载该代码时会把正常 reflect 元素清除,
|
|
7
6
|
* 比如 duoyun-ui 文档站加载示例元素时把 GemReflectElement 渲染的元素清除
|
|
8
7
|
*/
|
|
9
|
-
|
|
8
|
+
|
|
10
9
|
import { attribute, effect, property, willMount } from '../../lib/decorators';
|
|
10
|
+
import { GemElement } from '../../lib/reactive';
|
|
11
11
|
|
|
12
12
|
const START = 'gem-reflect-start';
|
|
13
13
|
const END = 'gem-reflect-end';
|
|
@@ -37,7 +37,6 @@ export class GemReflectElement extends GemElement {
|
|
|
37
37
|
@willMount()
|
|
38
38
|
#init = () => {
|
|
39
39
|
this.hidden = true;
|
|
40
|
-
this.dataset.gemReflect = '';
|
|
41
40
|
};
|
|
42
41
|
|
|
43
42
|
#startNode = createReflectFragmentTag(START);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { TemplateResult } from '../../lib/element';
|
|
2
|
-
import { createState, css, GemElement, html } from '../../lib/element';
|
|
3
1
|
import type { Emitter } from '../../lib/decorators';
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import { createStore, connect } from '../../lib/store';
|
|
2
|
+
import { adoptedStyle, boolattribute, effect, emitter, light, property, shadow, template } from '../../lib/decorators';
|
|
3
|
+
import { createState, css, GemElement, html } from '../../lib/element';
|
|
7
4
|
import type { UpdateHistoryParams } from '../../lib/history';
|
|
8
|
-
import {
|
|
5
|
+
import { history, titleStore } from '../../lib/history';
|
|
6
|
+
import type { TemplateResult } from '../../lib/lit-html';
|
|
7
|
+
import type { Store } from '../../lib/store';
|
|
8
|
+
import { connect, createStore } from '../../lib/store';
|
|
9
9
|
import type { QueryString } from '../../lib/utils';
|
|
10
10
|
import { addListener } from '../../lib/utils';
|
|
11
11
|
|
|
@@ -30,11 +30,9 @@ class ParamsRegExp extends RegExp {
|
|
|
30
30
|
|
|
31
31
|
type Params = Record<string, string>;
|
|
32
32
|
declare global {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
URLPattern: any;
|
|
37
|
-
}
|
|
33
|
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=1731418
|
|
34
|
+
// https://github.com/WebKit/standards-positions/issues/61
|
|
35
|
+
var URLPattern: any;
|
|
38
36
|
}
|
|
39
37
|
|
|
40
38
|
/**
|
|
@@ -51,8 +49,8 @@ declare global {
|
|
|
51
49
|
* ```
|
|
52
50
|
*/
|
|
53
51
|
export function matchPath(pattern: string, path: string) {
|
|
54
|
-
if (
|
|
55
|
-
const urLPattern = new
|
|
52
|
+
if (globalThis.URLPattern) {
|
|
53
|
+
const urLPattern = new URLPattern({ pathname: pattern });
|
|
56
54
|
const matchResult = urLPattern.exec({ pathname: path }) || urLPattern.exec({ pathname: `${path}/` });
|
|
57
55
|
if (!matchResult) return null;
|
|
58
56
|
return matchResult.pathname.groups as Params;
|
|
@@ -171,7 +169,7 @@ export class GemLightRouteElement extends GemElement {
|
|
|
171
169
|
static findRoute = (target: RouteItem[] | RoutesObject = [], path: string) => {
|
|
172
170
|
let defaultRoute: RouteItem | null = null;
|
|
173
171
|
let routes: RouteItem[];
|
|
174
|
-
if (target
|
|
172
|
+
if (Array.isArray(target)) {
|
|
175
173
|
routes = target;
|
|
176
174
|
} else {
|
|
177
175
|
routes = Object.values(target);
|
|
@@ -217,7 +215,7 @@ export class GemLightRouteElement extends GemElement {
|
|
|
217
215
|
}
|
|
218
216
|
};
|
|
219
217
|
|
|
220
|
-
#lastLoader?: Promise<TemplateResult | undefined>;
|
|
218
|
+
#lastLoader?: TemplateResult | Promise<TemplateResult | undefined>;
|
|
221
219
|
#setContent = (route: RouteItem | null, params: Params, content?: TemplateResult) => {
|
|
222
220
|
this.beforeroutechange(route);
|
|
223
221
|
this.#lastLoader = undefined;
|
|
@@ -280,7 +278,7 @@ export class GemLightRouteElement extends GemElement {
|
|
|
280
278
|
};
|
|
281
279
|
|
|
282
280
|
// 重写 `update`,并暴露为公共字段
|
|
283
|
-
update = () => {
|
|
281
|
+
update = async () => {
|
|
284
282
|
const { path, hash, query } = this.trigger.getParams();
|
|
285
283
|
const { route, params = {} } = GemRouteElement.findRoute(this.routes, path);
|
|
286
284
|
const { redirect, content, getContent } = route || {};
|
|
@@ -300,19 +298,14 @@ export class GemLightRouteElement extends GemElement {
|
|
|
300
298
|
}
|
|
301
299
|
const contentOrLoader = content || getContent?.(params, this.shadowRoot || this);
|
|
302
300
|
this.loading(route);
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
contentOrLoader
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
.catch((err) => {
|
|
311
|
-
if (isSomeLoader()) this.error(err);
|
|
312
|
-
});
|
|
313
|
-
return;
|
|
301
|
+
this.#lastLoader = contentOrLoader;
|
|
302
|
+
const isSomeLoader = () => this.#lastLoader === contentOrLoader;
|
|
303
|
+
try {
|
|
304
|
+
const newContent = await contentOrLoader;
|
|
305
|
+
if (isSomeLoader()) this.#setContent(route, params, newContent);
|
|
306
|
+
} catch (err) {
|
|
307
|
+
if (isSomeLoader()) this.error(err);
|
|
314
308
|
}
|
|
315
|
-
this.#setContent(route, params, contentOrLoader);
|
|
316
309
|
};
|
|
317
310
|
}
|
|
318
311
|
|
|
@@ -12,26 +12,24 @@
|
|
|
12
12
|
* - `<gem-title>` 作为默认值设置
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { GemElement, html } from '../../lib/element';
|
|
16
15
|
import { attribute, boolattribute, effect, mounted, shadow, template } from '../../lib/decorators';
|
|
17
|
-
import { connect } from '../../lib/store';
|
|
18
16
|
import { titleStore } from '../../lib/history';
|
|
17
|
+
import { GemElement, html } from '../../lib/reactive';
|
|
18
|
+
import { connect } from '../../lib/store';
|
|
19
19
|
|
|
20
20
|
// 避免重定向时的中间状态标题
|
|
21
|
-
let timer = 0;
|
|
21
|
+
let timer: ReturnType<typeof setTimeout> | number = 0;
|
|
22
22
|
const setTitle = (documentTitle: string) => {
|
|
23
23
|
clearTimeout(timer);
|
|
24
|
-
timer =
|
|
24
|
+
timer = setTimeout(() => (document.title = documentTitle));
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
function setDocumentTitle(defaultTitle?: string | null, prefix = '', suffix = '') {
|
|
28
28
|
const title = titleStore.title || defaultTitle;
|
|
29
29
|
if (title && title !== titleStore.defaultTitle) {
|
|
30
|
-
GemTitleElement.title = title;
|
|
31
|
-
setTitle(prefix + GemTitleElement.title + suffix);
|
|
30
|
+
setTitle(prefix + (GemTitleElement.title = title) + suffix);
|
|
32
31
|
} else {
|
|
33
|
-
GemTitleElement.title = titleStore.defaultTitle;
|
|
34
|
-
setTitle(GemTitleElement.title);
|
|
32
|
+
setTitle((GemTitleElement.title = titleStore.defaultTitle));
|
|
35
33
|
}
|
|
36
34
|
}
|
|
37
35
|
|
|
@@ -1,23 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { adoptedStyle, attribute, effect, property, shadow, template } from '../../lib/decorators';
|
|
2
|
+
import type { Sheet } from '../../lib/reactive';
|
|
3
|
+
import { css, GemElement, SheetToken } from '../../lib/reactive';
|
|
4
|
+
|
|
5
|
+
const style = css`
|
|
6
|
+
:host(:where(:not([hidden]))) {
|
|
7
|
+
display: contents;
|
|
8
|
+
}
|
|
9
|
+
`;
|
|
3
10
|
|
|
4
11
|
@shadow()
|
|
12
|
+
@adoptedStyle(style)
|
|
5
13
|
export class GemUnsafeElement extends GemElement {
|
|
6
|
-
@attribute
|
|
7
|
-
@
|
|
14
|
+
@attribute html: string;
|
|
15
|
+
@property styles?: string | Sheet<any> | Sheet<any>[];
|
|
16
|
+
|
|
17
|
+
get #sheets() {
|
|
18
|
+
if (!this.styles) return [];
|
|
19
|
+
if (typeof this.styles === 'string') {
|
|
20
|
+
const sheet = new CSSStyleSheet();
|
|
21
|
+
sheet.replaceSync(this.styles);
|
|
22
|
+
return [sheet];
|
|
23
|
+
} else {
|
|
24
|
+
return [this.styles].flat().map((e) => e[SheetToken].getStyle());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@effect()
|
|
29
|
+
#adoptStyles = () => {
|
|
30
|
+
const sheets = this.shadowRoot!.adoptedStyleSheets;
|
|
31
|
+
this.shadowRoot!.adoptedStyleSheets = sheets.concat(this.#sheets);
|
|
32
|
+
return () => {
|
|
33
|
+
this.shadowRoot!.adoptedStyleSheets = sheets;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
8
36
|
|
|
9
37
|
@template()
|
|
10
38
|
#content = () => {
|
|
11
|
-
|
|
12
|
-
<style>
|
|
13
|
-
:host(:where(:not([hidden]))) {
|
|
14
|
-
display: contents;
|
|
15
|
-
}
|
|
16
|
-
${this.contentcss}
|
|
17
|
-
</style>
|
|
18
|
-
`;
|
|
19
|
-
|
|
20
|
-
this.shadowRoot!.innerHTML = this.content + style.trim();
|
|
39
|
+
this.shadowRoot!.innerHTML = this.html;
|
|
21
40
|
|
|
22
41
|
// 不要更新内容
|
|
23
42
|
return undefined;
|
package/src/elements/base/use.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { css, GemElement, html } from '../../lib/element';
|
|
2
1
|
import { adoptedStyle, attribute, property, shadow, state, template } from '../../lib/decorators';
|
|
2
|
+
import { css, GemElement, html } from '../../lib/reactive';
|
|
3
3
|
|
|
4
4
|
const styles = css`
|
|
5
5
|
:host(:where(:not([hidden]))) {
|