@mantou/gem 1.6.9 → 1.6.10

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 +170 -182
  2. package/dist/gem.umd.js +23 -23
  3. package/elements/{dialog-base.d.ts → base/dialog.d.ts} +3 -3
  4. package/elements/base/dialog.d.ts.map +1 -0
  5. package/elements/{dialog-base.js → base/dialog.js} +24 -24
  6. package/elements/base/dialog.js.map +1 -0
  7. package/elements/base/gesture.d.ts +66 -0
  8. package/elements/base/gesture.d.ts.map +1 -0
  9. package/elements/base/gesture.js +214 -0
  10. package/elements/base/gesture.js.map +1 -0
  11. package/elements/base/link.d.ts +44 -0
  12. package/elements/base/link.d.ts.map +1 -0
  13. package/elements/base/link.js +206 -0
  14. package/elements/base/link.js.map +1 -0
  15. package/elements/{modal-base.d.ts → base/modal-factory.d.ts} +17 -8
  16. package/elements/base/modal-factory.d.ts.map +1 -0
  17. package/elements/{modal-base.js → base/modal-factory.js} +4 -4
  18. package/elements/base/modal-factory.js.map +1 -0
  19. package/elements/base/reflect.d.ts +6 -0
  20. package/elements/base/reflect.d.ts.map +1 -0
  21. package/elements/base/reflect.js +33 -0
  22. package/elements/base/reflect.js.map +1 -0
  23. package/elements/base/route.d.ts +78 -0
  24. package/elements/base/route.d.ts.map +1 -0
  25. package/elements/base/route.js +220 -0
  26. package/elements/base/route.js.map +1 -0
  27. package/elements/base/title.d.ts +30 -0
  28. package/elements/base/title.d.ts.map +1 -0
  29. package/elements/base/title.js +74 -0
  30. package/elements/base/title.js.map +1 -0
  31. package/elements/base/unsafe.d.ts +14 -0
  32. package/elements/base/unsafe.d.ts.map +1 -0
  33. package/elements/base/unsafe.js +42 -0
  34. package/elements/base/unsafe.js.map +1 -0
  35. package/elements/base/use.d.ts +19 -0
  36. package/elements/base/use.d.ts.map +1 -0
  37. package/elements/base/use.js +70 -0
  38. package/elements/base/use.js.map +1 -0
  39. package/elements/gesture.d.ts +1 -67
  40. package/elements/gesture.d.ts.map +1 -1
  41. package/elements/gesture.js +3 -219
  42. package/elements/gesture.js.map +1 -1
  43. package/elements/link.d.ts +1 -45
  44. package/elements/link.d.ts.map +1 -1
  45. package/elements/link.js +4 -208
  46. package/elements/link.js.map +1 -1
  47. package/elements/reflect.d.ts +1 -8
  48. package/elements/reflect.d.ts.map +1 -1
  49. package/elements/reflect.js +3 -39
  50. package/elements/reflect.js.map +1 -1
  51. package/elements/route.d.ts +1 -81
  52. package/elements/route.d.ts.map +1 -1
  53. package/elements/route.js +4 -228
  54. package/elements/route.js.map +1 -1
  55. package/elements/title.d.ts +1 -30
  56. package/elements/title.d.ts.map +1 -1
  57. package/elements/title.js +3 -75
  58. package/elements/title.js.map +1 -1
  59. package/elements/unsafe.d.ts +1 -14
  60. package/elements/unsafe.d.ts.map +1 -1
  61. package/elements/unsafe.js +3 -46
  62. package/elements/unsafe.js.map +1 -1
  63. package/elements/use.d.ts +1 -19
  64. package/elements/use.d.ts.map +1 -1
  65. package/elements/use.js +3 -74
  66. package/elements/use.js.map +1 -1
  67. package/lib/history.d.ts +28 -16
  68. package/lib/history.d.ts.map +1 -1
  69. package/lib/history.js +166 -168
  70. package/lib/history.js.map +1 -1
  71. package/lib/utils.d.ts.map +1 -1
  72. package/lib/utils.js +2 -1
  73. package/lib/utils.js.map +1 -1
  74. package/package.json +2 -2
  75. package/src/dist.ts +5 -2
  76. package/src/elements/{dialog-base.ts → base/dialog.ts} +4 -4
  77. package/src/elements/base/gesture.ts +256 -0
  78. package/src/elements/base/link.ts +178 -0
  79. package/src/elements/{modal-base.ts → base/modal-factory.ts} +3 -3
  80. package/src/elements/base/reflect.ts +29 -0
  81. package/src/elements/base/route.ts +244 -0
  82. package/src/elements/base/title.ts +68 -0
  83. package/src/elements/base/unsafe.ts +37 -0
  84. package/src/elements/base/use.ts +57 -0
  85. package/src/elements/gesture.ts +3 -257
  86. package/src/elements/link.ts +4 -179
  87. package/src/elements/reflect.ts +3 -31
  88. package/src/elements/route.ts +4 -248
  89. package/src/elements/title.ts +3 -68
  90. package/src/elements/unsafe.ts +3 -37
  91. package/src/elements/use.ts +3 -57
  92. package/src/lib/history.ts +182 -194
  93. package/src/lib/utils.ts +2 -1
  94. package/src/test/history.test.ts +15 -10
  95. package/elements/dialog-base.d.ts.map +0 -1
  96. package/elements/dialog-base.js.map +0 -1
  97. package/elements/modal-base.d.ts.map +0 -1
  98. package/elements/modal-base.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ import { GemElement } from '../../lib/element';
2
+ export declare class GemReflectElement extends GemElement {
3
+ target: HTMLElement;
4
+ constructor();
5
+ }
6
+ //# sourceMappingURL=reflect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../src/elements/base/reflect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAM/C,qBAAa,iBAAkB,SAAQ,UAAU;IACrC,MAAM,EAAE,WAAW,CAAiB;;CAqB/C"}
@@ -0,0 +1,33 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { GemElement } from '../../lib/element';
8
+ import { property } from '../../lib/decorators';
9
+ // support prerender
10
+ document.querySelectorAll('[data-reflect]').forEach((e) => e.remove());
11
+ export class GemReflectElement extends GemElement {
12
+ constructor() {
13
+ super({ isLight: true });
14
+ this.target = document.head;
15
+ this.hidden = true;
16
+ this.effect(() => {
17
+ const childNodes = [...this.childNodes];
18
+ childNodes.forEach((node) => {
19
+ if (node instanceof HTMLElement) {
20
+ node.dataset.reflect = '';
21
+ }
22
+ this.target.append(node);
23
+ });
24
+ return () => {
25
+ childNodes.forEach((node) => node.remove());
26
+ };
27
+ }, () => [this.target]);
28
+ }
29
+ }
30
+ __decorate([
31
+ property
32
+ ], GemReflectElement.prototype, "target", void 0);
33
+ //# sourceMappingURL=reflect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../src/elements/base/reflect.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,oBAAoB;AACpB,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAEvE,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAG/C;QACE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAHjB,WAAM,GAAgB,QAAQ,CAAC,IAAI,CAAC;QAI5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,CACT,GAAG,EAAE;YACH,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1B,IAAI,IAAI,YAAY,WAAW,EAAE;oBAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;iBAC3B;gBACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,EAAE;gBACV,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC;QACJ,CAAC,EACD,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CACpB,CAAC;IACJ,CAAC;CACF;AArBW;IAAT,QAAQ;iDAAqC"}
@@ -0,0 +1,78 @@
1
+ import { GemElement, TemplateResult } from '../../lib/element';
2
+ import { Emitter } from '../../lib/decorators';
3
+ import { Store } from '../../lib/store';
4
+ import { UpdateHistoryParams } from '../../lib/history';
5
+ import { QueryString } from '../../lib/utils';
6
+ declare type Params = Record<string, string>;
7
+ export declare function matchPath(pattern: string, path: string): Params | null;
8
+ export interface RouteItem<T = unknown> {
9
+ pattern: string;
10
+ redirect?: string;
11
+ content?: TemplateResult;
12
+ getContent?: (params: Params) => TemplateResult | Promise<TemplateResult>;
13
+ title?: string;
14
+ data?: T;
15
+ }
16
+ declare type RoutesObject = Record<string, RouteItem>;
17
+ export interface RouteOptions extends Omit<UpdateHistoryParams, 'path'> {
18
+ params?: Params;
19
+ }
20
+ export declare function createPath(route: RouteItem, options?: RouteOptions): string;
21
+ export declare function createHistoryParams(route: RouteItem, options?: RouteOptions): UpdateHistoryParams;
22
+ interface ConstructorOptions {
23
+ isLight?: boolean;
24
+ routes?: RouteItem[] | RoutesObject;
25
+ }
26
+ declare type State = {
27
+ content?: TemplateResult;
28
+ };
29
+ /**
30
+ * @attr inert 暂停路由更新
31
+ * @fires routechange
32
+ * @fires error
33
+ * @fires loading
34
+ */
35
+ export declare class GemRouteElement extends GemElement<State> {
36
+ #private;
37
+ routes?: RouteItem[] | RoutesObject;
38
+ /**
39
+ * @example
40
+ * const locationStore = GemRouteElement.createLocationStore()
41
+ * html`<gem-route .locationStore=${locationStore}>`
42
+ */
43
+ locationStore?: Store<{
44
+ path: string;
45
+ params: Params;
46
+ query: QueryString;
47
+ data?: any;
48
+ }>;
49
+ key: any;
50
+ routechange: Emitter<RouteItem | null>;
51
+ loading: Emitter<RouteItem>;
52
+ error: Emitter<any>;
53
+ currentRoute: RouteItem | null;
54
+ currentParams: Params;
55
+ static createLocationStore: () => Store<{
56
+ path: string;
57
+ query: (string | QueryString | undefined) & QueryString;
58
+ data: any;
59
+ params: Record<string, string>;
60
+ }>;
61
+ static findRoute: (target: RoutesObject | RouteItem<unknown>[] | undefined, path: string) => {
62
+ route: RouteItem<unknown>;
63
+ params: Params;
64
+ } | {
65
+ route: RouteItem<unknown> | null;
66
+ params?: undefined;
67
+ };
68
+ constructor({ isLight, routes }?: ConstructorOptions);
69
+ state: State;
70
+ mounted(): void;
71
+ shouldUpdate(): boolean;
72
+ render(): TemplateResult;
73
+ }
74
+ export declare class GemLightRouteElement extends GemRouteElement {
75
+ constructor(options?: ConstructorOptions);
76
+ }
77
+ export {};
78
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/elements/base/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAmC,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAA4B,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAuB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAyB9C,aAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAIrC,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAWtD;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,OAAO;IAKpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,aAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAG9C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,UASlE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,CAMjG;AAED,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;CACrC;AAED,aAAK,KAAK,GAAG;IACX,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,qBACa,eAAgB,SAAQ,UAAU,CAAC,KAAK,CAAC;;IAC1C,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;IAC9C;;;;OAIG;IACO,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IACxF,GAAG,EAAE,GAAG,CAAC;IACV,WAAW,EAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACvC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAE7B,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IAE/B,aAAa,EAAE,MAAM,CAAM;IAI3B,MAAM,CAAC,mBAAmB;;;;;OAGxB;IAEF,MAAM,CAAC,SAAS,kEAAmD,MAAM;;;;;;MAmBvE;gBAEU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAE,kBAAuB;IAKxD,KAAK,EAAE,KAAK,CAEV;IAuBF,OAAO;IAuCP,YAAY;IAKZ,MAAM;CAcP;AAED,qBAAa,oBAAqB,SAAQ,eAAe;gBAC3C,OAAO,GAAE,kBAAuB;CAG7C"}
@@ -0,0 +1,220 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
+ if (kind === "m") throw new TypeError("Private method is not writable");
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
+ };
13
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
15
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
16
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
17
+ };
18
+ var _GemRouteElement_lastLoader, _GemRouteElement_updateLocationStore, _GemRouteElement_setContent;
19
+ var GemRouteElement_1;
20
+ import { GemElement, html } from '../../lib/element';
21
+ import { property, connectStore, emitter } from '../../lib/decorators';
22
+ import { createStore, updateStore } from '../../lib/store';
23
+ import { titleStore, history } from '../../lib/history';
24
+ // TODO: use `URLPattern`
25
+ class ParamsRegExp extends RegExp {
26
+ constructor(pattern) {
27
+ const namePosition = {};
28
+ let i = 0;
29
+ super(`^${pattern
30
+ .replace(/:([^/$]+)/g, (_m, name) => {
31
+ namePosition[name] = i++;
32
+ return `([^/]+)`;
33
+ })
34
+ .replace('*', '.*')}$`, 'i');
35
+ this.namePosition = namePosition;
36
+ }
37
+ }
38
+ // `/a/b/:c/:d` `/a/b/1/2`
39
+ // 匹配成功时返回 params
40
+ export function matchPath(pattern, path) {
41
+ const reg = new ParamsRegExp(pattern);
42
+ const matchResult = path.match(reg) || `${path}/`.match(reg);
43
+ if (!matchResult)
44
+ return null;
45
+ const params = {};
46
+ if (matchResult) {
47
+ Object.keys(reg.namePosition).forEach((name) => {
48
+ params[name] = matchResult[reg.namePosition[name] + 1];
49
+ });
50
+ }
51
+ return params;
52
+ }
53
+ // 从路由创建路径
54
+ // 不包含 basePath
55
+ export function createPath(route, options) {
56
+ let path = route.pattern;
57
+ const params = options === null || options === void 0 ? void 0 : options.params;
58
+ if (params) {
59
+ Object.keys(params).forEach((key) => {
60
+ path = path.replace(new RegExp(`:${key}`, 'g'), params[key]);
61
+ });
62
+ }
63
+ return path;
64
+ }
65
+ export function createHistoryParams(route, options) {
66
+ const path = createPath(route, options);
67
+ return {
68
+ path,
69
+ ...options,
70
+ };
71
+ }
72
+ /**
73
+ * @attr inert 暂停路由更新
74
+ * @fires routechange
75
+ * @fires error
76
+ * @fires loading
77
+ */
78
+ let GemRouteElement = GemRouteElement_1 = class GemRouteElement extends GemElement {
79
+ constructor({ isLight, routes } = {}) {
80
+ super({ isLight });
81
+ // 当前匹配的路由的 params
82
+ this.currentParams = {};
83
+ _GemRouteElement_lastLoader.set(this, void 0);
84
+ this.state = {
85
+ content: undefined,
86
+ };
87
+ _GemRouteElement_updateLocationStore.set(this, () => {
88
+ if (this.locationStore) {
89
+ const { path, query, data } = history.getParams();
90
+ updateStore(this.locationStore, {
91
+ path,
92
+ params: this.currentParams,
93
+ query,
94
+ data,
95
+ });
96
+ }
97
+ });
98
+ _GemRouteElement_setContent.set(this, (route, params, content) => {
99
+ __classPrivateFieldSet(this, _GemRouteElement_lastLoader, undefined, "f");
100
+ this.currentRoute = route;
101
+ this.currentParams = params;
102
+ this.setState({ content });
103
+ this.routechange(this.currentRoute);
104
+ __classPrivateFieldGet(this, _GemRouteElement_updateLocationStore, "f").call(this);
105
+ });
106
+ this.routes = routes;
107
+ }
108
+ mounted() {
109
+ this.effect(([key, path], old) => {
110
+ // 只有查询参数改变
111
+ if (old && key === old[0] && path === old[1]) {
112
+ __classPrivateFieldGet(this, _GemRouteElement_updateLocationStore, "f").call(this);
113
+ return;
114
+ }
115
+ const { route, params = {} } = GemRouteElement_1.findRoute(this.routes, path);
116
+ const { redirect, content, getContent } = route || {};
117
+ if (redirect) {
118
+ history.replace({ path: redirect });
119
+ return;
120
+ }
121
+ const title = route === null || route === void 0 ? void 0 : route.title;
122
+ if (title)
123
+ updateStore(titleStore, { title });
124
+ const contentOrLoader = content || (getContent === null || getContent === void 0 ? void 0 : getContent(params));
125
+ if (contentOrLoader instanceof Promise) {
126
+ this.loading(route);
127
+ __classPrivateFieldSet(this, _GemRouteElement_lastLoader, contentOrLoader, "f");
128
+ const isSomeLoader = () => __classPrivateFieldGet(this, _GemRouteElement_lastLoader, "f") === contentOrLoader;
129
+ contentOrLoader
130
+ .then((content) => {
131
+ if (isSomeLoader())
132
+ __classPrivateFieldGet(this, _GemRouteElement_setContent, "f").call(this, route, params, content);
133
+ })
134
+ .catch((err) => {
135
+ if (isSomeLoader())
136
+ this.error(err);
137
+ });
138
+ return;
139
+ }
140
+ __classPrivateFieldGet(this, _GemRouteElement_setContent, "f").call(this, route, params, contentOrLoader);
141
+ }, () => {
142
+ const { path } = history.getParams();
143
+ return [this.key, path, location.search];
144
+ });
145
+ }
146
+ shouldUpdate() {
147
+ if (this.inert)
148
+ return false;
149
+ return true;
150
+ }
151
+ render() {
152
+ const { content } = this.state;
153
+ if (!this.shadowRoot)
154
+ return html `${content}`;
155
+ return html `
156
+ <style>
157
+ :host,
158
+ :not(:defined) {
159
+ display: contents;
160
+ }
161
+ </style>
162
+ ${content !== null && content !== void 0 ? content : html `<slot></slot>`}
163
+ `;
164
+ }
165
+ };
166
+ _GemRouteElement_lastLoader = new WeakMap(), _GemRouteElement_updateLocationStore = new WeakMap(), _GemRouteElement_setContent = new WeakMap();
167
+ GemRouteElement.createLocationStore = () => {
168
+ const { path, query, data } = history.getParams();
169
+ return createStore({ path, query, data, params: {} });
170
+ };
171
+ GemRouteElement.findRoute = (target = [], path) => {
172
+ let defaultRoute = null;
173
+ let routes;
174
+ if (target instanceof Array) {
175
+ routes = target;
176
+ }
177
+ else {
178
+ routes = Object.values(target);
179
+ }
180
+ for (const route of routes) {
181
+ if ('*' === route.pattern) {
182
+ defaultRoute = route;
183
+ }
184
+ else {
185
+ const params = matchPath(route.pattern, path);
186
+ if (params) {
187
+ return { route, params };
188
+ }
189
+ }
190
+ }
191
+ return { route: defaultRoute };
192
+ };
193
+ __decorate([
194
+ property
195
+ ], GemRouteElement.prototype, "routes", void 0);
196
+ __decorate([
197
+ property
198
+ ], GemRouteElement.prototype, "locationStore", void 0);
199
+ __decorate([
200
+ property
201
+ ], GemRouteElement.prototype, "key", void 0);
202
+ __decorate([
203
+ emitter
204
+ ], GemRouteElement.prototype, "routechange", void 0);
205
+ __decorate([
206
+ emitter
207
+ ], GemRouteElement.prototype, "loading", void 0);
208
+ __decorate([
209
+ emitter
210
+ ], GemRouteElement.prototype, "error", void 0);
211
+ GemRouteElement = GemRouteElement_1 = __decorate([
212
+ connectStore(history.store)
213
+ ], GemRouteElement);
214
+ export { GemRouteElement };
215
+ export class GemLightRouteElement extends GemRouteElement {
216
+ constructor(options = {}) {
217
+ super({ ...options, isLight: true });
218
+ }
219
+ }
220
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/elements/base/route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 标题显示在:
3
+ *
4
+ * - 桌面端 Tab 的 title
5
+ * - 移动端 Appbar 的 title
6
+ *
7
+ * 修改标题:
8
+ *
9
+ * - `<gem-route>` 匹配路由时自动设置 `route.title`
10
+ * - `<gem-link>` 的 `doc-title` 属性和 `route.title`
11
+ * - 修改路径时,`history` 默认设置 `title` 为空
12
+ * - 数据获取后,手动调用 `Title.setTitle`
13
+ * - `<gem-title>` 作为默认值设置
14
+ */
15
+ import { GemElement } from '../../lib/element';
16
+ /**
17
+ * 允许声明式设置 `document.title`
18
+ * @attr suffix
19
+ */
20
+ export declare class GemTitleElement extends GemElement {
21
+ static title: string;
22
+ static defaultTitle: string;
23
+ static defaultSuffix: string;
24
+ static setTitle(title: string): void;
25
+ static updateTitle(str?: string, suffix?: string): void;
26
+ suffix: string;
27
+ constructor();
28
+ render(): import("lit-html/lib/template-result").TemplateResult;
29
+ }
30
+ //# sourceMappingURL=title.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title.d.ts","sourceRoot":"","sources":["../../src/elements/base/title.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAQ,MAAM,mBAAmB,CAAC;AAKrD;;;GAGG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAE7C,MAAM,CAAC,KAAK,SAAkB;IAC9B,MAAM,CAAC,YAAY,SAAkB;IACrC,MAAM,CAAC,aAAa,SAA0B;IAE9C,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAI7B,MAAM,CAAC,WAAW,CAAC,GAAG,SAAK,EAAE,MAAM,SAAK;IAc7B,MAAM,EAAE,MAAM,CAAC;;IAO1B,MAAM;CASP"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * 标题显示在:
3
+ *
4
+ * - 桌面端 Tab 的 title
5
+ * - 移动端 Appbar 的 title
6
+ *
7
+ * 修改标题:
8
+ *
9
+ * - `<gem-route>` 匹配路由时自动设置 `route.title`
10
+ * - `<gem-link>` 的 `doc-title` 属性和 `route.title`
11
+ * - 修改路径时,`history` 默认设置 `title` 为空
12
+ * - 数据获取后,手动调用 `Title.setTitle`
13
+ * - `<gem-title>` 作为默认值设置
14
+ */
15
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
16
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
20
+ };
21
+ var GemTitleElement_1;
22
+ import { GemElement, html } from '../../lib/element';
23
+ import { attribute, connectStore } from '../../lib/decorators';
24
+ import { updateStore, connect } from '../../lib/store';
25
+ import { titleStore } from '../../lib/history';
26
+ /**
27
+ * 允许声明式设置 `document.title`
28
+ * @attr suffix
29
+ */
30
+ let GemTitleElement = GemTitleElement_1 = class GemTitleElement extends GemElement {
31
+ constructor() {
32
+ super();
33
+ new MutationObserver(() => this.update()).observe(this, { childList: true, characterData: true, subtree: true });
34
+ }
35
+ static setTitle(title) {
36
+ updateStore(titleStore, { title });
37
+ }
38
+ static updateTitle(str = '', suffix = '') {
39
+ const { title } = titleStore;
40
+ if (title && title !== GemTitleElement_1.defaultTitle) {
41
+ GemTitleElement_1.title = title;
42
+ document.title = GemTitleElement_1.title + suffix;
43
+ }
44
+ else if (str) {
45
+ GemTitleElement_1.title = str;
46
+ document.title = GemTitleElement_1.title + suffix;
47
+ }
48
+ else {
49
+ GemTitleElement_1.title = GemTitleElement_1.defaultTitle;
50
+ document.title = GemTitleElement_1.title;
51
+ }
52
+ }
53
+ render() {
54
+ // 多个 <gem-title> 时,最终 document.title 按执行顺序决定
55
+ GemTitleElement_1.updateTitle(this.textContent || '', this.suffix);
56
+ if (this.hidden) {
57
+ return html ``;
58
+ }
59
+ return html `${GemTitleElement_1.title}`;
60
+ }
61
+ };
62
+ // 没有后缀的标题
63
+ GemTitleElement.title = document.title;
64
+ GemTitleElement.defaultTitle = document.title;
65
+ GemTitleElement.defaultSuffix = ` - ${document.title}`;
66
+ __decorate([
67
+ attribute
68
+ ], GemTitleElement.prototype, "suffix", void 0);
69
+ GemTitleElement = GemTitleElement_1 = __decorate([
70
+ connectStore(titleStore)
71
+ ], GemTitleElement);
72
+ export { GemTitleElement };
73
+ connect(titleStore, GemTitleElement.updateTitle);
74
+ //# sourceMappingURL=title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title.js","sourceRoot":"","sources":["../../src/elements/base/title.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;;;;;;;;AAEH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;GAGG;AAEH,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,UAAU;IA0B7C;QACE,KAAK,EAAE,CAAC;QACR,IAAI,gBAAgB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACnH,CAAC;IAvBD,MAAM,CAAC,QAAQ,CAAC,KAAa;QAC3B,WAAW,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE;QACtC,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;QAC7B,IAAI,KAAK,IAAI,KAAK,KAAK,iBAAe,CAAC,YAAY,EAAE;YACnD,iBAAe,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9B,QAAQ,CAAC,KAAK,GAAG,iBAAe,CAAC,KAAK,GAAG,MAAM,CAAC;SACjD;aAAM,IAAI,GAAG,EAAE;YACd,iBAAe,CAAC,KAAK,GAAG,GAAG,CAAC;YAC5B,QAAQ,CAAC,KAAK,GAAG,iBAAe,CAAC,KAAK,GAAG,MAAM,CAAC;SACjD;aAAM;YACL,iBAAe,CAAC,KAAK,GAAG,iBAAe,CAAC,YAAY,CAAC;YACrD,QAAQ,CAAC,KAAK,GAAG,iBAAe,CAAC,KAAK,CAAC;SACxC;IACH,CAAC;IASD,MAAM;QACJ,6CAA6C;QAC7C,iBAAe,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAA,EAAE,CAAC;SACf;QACD,OAAO,IAAI,CAAA,GAAG,iBAAe,CAAC,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAA;AAvCC,UAAU;AACH,qBAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;AACvB,4BAAY,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC9B,6BAAa,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;AAoBnC;IAAV,SAAS;+CAAgB;AAxBf,eAAe;IAD3B,YAAY,CAAC,UAAU,CAAC;GACZ,eAAe,CAwC3B;SAxCY,eAAe;AA0C5B,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { GemElement } from '../../lib/element';
2
+ /**
3
+ * 直接写会被解释成固定属性,需要使用变量赋值
4
+ *
5
+ * @attr content
6
+ * @attr contentcss
7
+ */
8
+ export declare class GemUnsafeElement extends GemElement {
9
+ content: string;
10
+ contentcss: string;
11
+ constructor();
12
+ render(): undefined;
13
+ }
14
+ //# sourceMappingURL=unsafe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsafe.d.ts","sourceRoot":"","sources":["../../src/elements/base/unsafe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;;IAsB9B,MAAM;CAGP"}
@@ -0,0 +1,42 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { GemElement } from '../../lib/element';
8
+ import { attribute } from '../../lib/decorators';
9
+ /**
10
+ * 直接写会被解释成固定属性,需要使用变量赋值
11
+ *
12
+ * @attr content
13
+ * @attr contentcss
14
+ */
15
+ export class GemUnsafeElement extends GemElement {
16
+ constructor() {
17
+ super();
18
+ this.effect(() => {
19
+ if (this.shadowRoot) {
20
+ this.shadowRoot.innerHTML = `
21
+ <style>
22
+ :host {
23
+ display: contents;
24
+ }
25
+ ${this.contentcss}
26
+ </style>
27
+ ${this.content}
28
+ `;
29
+ }
30
+ }, () => [this.content, this.contentcss]);
31
+ }
32
+ render() {
33
+ return undefined;
34
+ }
35
+ }
36
+ __decorate([
37
+ attribute
38
+ ], GemUnsafeElement.prototype, "content", void 0);
39
+ __decorate([
40
+ attribute
41
+ ], GemUnsafeElement.prototype, "contentcss", void 0);
42
+ //# sourceMappingURL=unsafe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsafe.js","sourceRoot":"","sources":["../../src/elements/base/unsafe.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAI9C;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,CACT,GAAG,EAAE;YACH,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG;;;;;gBAKtB,IAAI,CAAC,UAAU;;cAEjB,IAAI,CAAC,OAAO;WACf,CAAC;aACH;QACH,CAAC,EACD,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CACtC,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA1BY;IAAV,SAAS;iDAAiB;AAChB;IAAV,SAAS;oDAAoB"}
@@ -0,0 +1,19 @@
1
+ import { GemElement } from '../../lib/element';
2
+ /**
3
+ * svg 中的 `<use>` 不能穿透 ShadowDOM,
4
+ * 此元素用来模拟 `<use>`,
5
+ * 由于是复制元素,所以不能像 `<use>` 一样自动更新
6
+ *
7
+ * slot 支持为 icon 添加效果,如涟漪,徽章
8
+ *
9
+ * @attr selector
10
+ */
11
+ export declare class GemUseElement extends GemElement {
12
+ selector: string;
13
+ root?: HTMLElement | Document | ShadowRoot;
14
+ element?: string | DocumentFragment | Element;
15
+ active: boolean;
16
+ private getContent;
17
+ render(): import("lit-html/lib/template-result").TemplateResult;
18
+ }
19
+ //# sourceMappingURL=use.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../src/elements/base/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,mBAAmB,CAAC;AAIrD;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAChC,QAAQ,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,OAAO,CAAC;IAEjD,MAAM,EAAE,OAAO,CAAC;IAEvB,OAAO,CAAC,UAAU;IAiBlB,MAAM;CAmBP"}
@@ -0,0 +1,70 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { GemElement, html } from '../../lib/element';
8
+ import { attribute, property, state } from '../../lib/decorators';
9
+ const eleCache = new Map();
10
+ /**
11
+ * svg 中的 `<use>` 不能穿透 ShadowDOM,
12
+ * 此元素用来模拟 `<use>`,
13
+ * 由于是复制元素,所以不能像 `<use>` 一样自动更新
14
+ *
15
+ * slot 支持为 icon 添加效果,如涟漪,徽章
16
+ *
17
+ * @attr selector
18
+ */
19
+ export class GemUseElement extends GemElement {
20
+ getContent() {
21
+ const ele = this.element || (this.selector ? (this.root || document).querySelector(this.selector) : null);
22
+ if (typeof ele === 'string') {
23
+ let temp = eleCache.get(ele);
24
+ if (!temp) {
25
+ temp = document.createElement('template');
26
+ temp.innerHTML = ele;
27
+ eleCache.set(ele, temp);
28
+ }
29
+ return temp.content.cloneNode(true);
30
+ }
31
+ else if (ele instanceof HTMLTemplateElement) {
32
+ return ele.content.cloneNode(true);
33
+ }
34
+ else {
35
+ return ele === null || ele === void 0 ? void 0 : ele.cloneNode(true);
36
+ }
37
+ }
38
+ render() {
39
+ return html `
40
+ <style>
41
+ :host {
42
+ position: relative;
43
+ }
44
+ :host(:not([hidden])) {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ }
48
+ svg {
49
+ width: 100%;
50
+ height: 100%;
51
+ }
52
+ </style>
53
+ ${this.getContent()}
54
+ <slot></slot>
55
+ `;
56
+ }
57
+ }
58
+ __decorate([
59
+ attribute
60
+ ], GemUseElement.prototype, "selector", void 0);
61
+ __decorate([
62
+ property
63
+ ], GemUseElement.prototype, "root", void 0);
64
+ __decorate([
65
+ property
66
+ ], GemUseElement.prototype, "element", void 0);
67
+ __decorate([
68
+ state
69
+ ], GemUseElement.prototype, "active", void 0);
70
+ //# sourceMappingURL=use.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use.js","sourceRoot":"","sources":["../../src/elements/base/use.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;AACxD;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAOnC,UAAU;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1G,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,EAAE;gBACT,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC1C,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aACzB;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACrC;aAAM,IAAI,GAAG,YAAY,mBAAmB,EAAE;YAC7C,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACpC;aAAM;YACL,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,SAAS,CAAC,IAAI,CAAC,CAAC;SAC7B;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;;;;;;;QAcP,IAAI,CAAC,UAAU,EAAE;;KAEpB,CAAC;IACJ,CAAC;CACF;AA1CY;IAAV,SAAS;+CAAkB;AAClB;IAAT,QAAQ;2CAA4C;AAC3C;IAAT,QAAQ;8CAA+C;AAEjD;IAAN,KAAK;6CAAiB"}