@mantou/gem 1.6.4 → 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 (158) hide show
  1. package/README.md +6 -38
  2. package/dist/gem.es.js +3260 -0
  3. package/dist/gem.umd.js +229 -0
  4. package/elements/{dialog-base.d.ts → base/dialog.d.ts} +4 -4
  5. package/elements/base/dialog.d.ts.map +1 -0
  6. package/elements/{dialog-base.js → base/dialog.js} +26 -28
  7. package/elements/base/dialog.js.map +1 -0
  8. package/elements/base/gesture.d.ts +66 -0
  9. package/elements/base/gesture.d.ts.map +1 -0
  10. package/elements/base/gesture.js +214 -0
  11. package/elements/base/gesture.js.map +1 -0
  12. package/elements/base/link.d.ts +44 -0
  13. package/elements/base/link.d.ts.map +1 -0
  14. package/elements/base/link.js +206 -0
  15. package/elements/base/link.js.map +1 -0
  16. package/elements/{modal-base.d.ts → base/modal-factory.d.ts} +20 -20
  17. package/elements/base/modal-factory.d.ts.map +1 -0
  18. package/elements/{modal-base.js → base/modal-factory.js} +10 -7
  19. package/elements/base/modal-factory.js.map +1 -0
  20. package/elements/base/reflect.d.ts +6 -0
  21. package/elements/base/reflect.d.ts.map +1 -0
  22. package/elements/base/reflect.js +33 -0
  23. package/elements/base/reflect.js.map +1 -0
  24. package/elements/base/route.d.ts +78 -0
  25. package/elements/base/route.d.ts.map +1 -0
  26. package/elements/base/route.js +220 -0
  27. package/elements/base/route.js.map +1 -0
  28. package/elements/base/title.d.ts +30 -0
  29. package/elements/base/title.d.ts.map +1 -0
  30. package/elements/base/title.js +74 -0
  31. package/elements/base/title.js.map +1 -0
  32. package/elements/base/unsafe.d.ts +14 -0
  33. package/elements/base/unsafe.d.ts.map +1 -0
  34. package/elements/base/unsafe.js +42 -0
  35. package/elements/base/unsafe.js.map +1 -0
  36. package/elements/base/use.d.ts +19 -0
  37. package/elements/base/use.d.ts.map +1 -0
  38. package/elements/base/use.js +70 -0
  39. package/elements/base/use.js.map +1 -0
  40. package/elements/gesture.d.ts +1 -67
  41. package/elements/gesture.d.ts.map +1 -1
  42. package/elements/gesture.js +3 -219
  43. package/elements/gesture.js.map +1 -1
  44. package/elements/link.d.ts +1 -45
  45. package/elements/link.d.ts.map +1 -1
  46. package/elements/link.js +4 -215
  47. package/elements/link.js.map +1 -1
  48. package/elements/reflect.d.ts +1 -8
  49. package/elements/reflect.d.ts.map +1 -1
  50. package/elements/reflect.js +3 -39
  51. package/elements/reflect.js.map +1 -1
  52. package/elements/route.d.ts +1 -81
  53. package/elements/route.d.ts.map +1 -1
  54. package/elements/route.js +4 -225
  55. package/elements/route.js.map +1 -1
  56. package/elements/title.d.ts +1 -30
  57. package/elements/title.d.ts.map +1 -1
  58. package/elements/title.js +3 -75
  59. package/elements/title.js.map +1 -1
  60. package/elements/unsafe.d.ts +1 -14
  61. package/elements/unsafe.d.ts.map +1 -1
  62. package/elements/unsafe.js +3 -46
  63. package/elements/unsafe.js.map +1 -1
  64. package/elements/use.d.ts +1 -19
  65. package/elements/use.d.ts.map +1 -1
  66. package/elements/use.js +3 -74
  67. package/elements/use.js.map +1 -1
  68. package/helper/i18n.js +47 -58
  69. package/helper/i18n.js.map +1 -1
  70. package/helper/request.js +11 -19
  71. package/helper/request.js.map +1 -1
  72. package/index.d.ts +5 -4
  73. package/index.d.ts.map +1 -1
  74. package/index.js +4 -2
  75. package/index.js.map +1 -1
  76. package/lib/element.d.ts.map +1 -1
  77. package/lib/element.js +1 -1
  78. package/lib/element.js.map +1 -1
  79. package/lib/history.d.ts +28 -16
  80. package/lib/history.d.ts.map +1 -1
  81. package/lib/history.js +179 -169
  82. package/lib/history.js.map +1 -1
  83. package/lib/utils.d.ts +3 -1
  84. package/lib/utils.d.ts.map +1 -1
  85. package/lib/utils.js +7 -5
  86. package/lib/utils.js.map +1 -1
  87. package/lib/version.d.ts +1 -1
  88. package/lib/version.js +1 -1
  89. package/package.json +25 -53
  90. package/src/{umd.ts → dist.ts} +4 -5
  91. package/src/elements/{dialog-base.ts → base/dialog.ts} +6 -7
  92. package/src/elements/base/gesture.ts +256 -0
  93. package/src/elements/base/link.ts +178 -0
  94. package/src/elements/{modal-base.ts → base/modal-factory.ts} +3 -3
  95. package/src/elements/base/reflect.ts +29 -0
  96. package/src/elements/base/route.ts +244 -0
  97. package/src/elements/base/title.ts +68 -0
  98. package/src/elements/base/unsafe.ts +37 -0
  99. package/src/elements/base/use.ts +57 -0
  100. package/src/elements/gesture.ts +3 -257
  101. package/src/elements/link.ts +4 -179
  102. package/src/elements/reflect.ts +3 -31
  103. package/src/elements/route.ts +4 -248
  104. package/src/elements/title.ts +3 -68
  105. package/src/elements/unsafe.ts +3 -37
  106. package/src/elements/use.ts +3 -57
  107. package/src/index.ts +4 -6
  108. package/src/lib/element.ts +2 -1
  109. package/src/lib/history.ts +183 -195
  110. package/src/lib/utils.ts +11 -5
  111. package/src/lib/version.ts +1 -1
  112. package/src/test/gem-element/advance.test.ts +1 -0
  113. package/src/test/gem-element/basic.test.ts +1 -0
  114. package/src/test/gem-element/decorators.test.ts +1 -0
  115. package/src/test/gem-element/multi.test.ts +1 -0
  116. package/src/test/history.test.ts +16 -10
  117. package/src/test/store.test.ts +1 -0
  118. package/src/test/utils.test.ts +1 -0
  119. package/elements/dialog-base.d.ts.map +0 -1
  120. package/elements/dialog-base.js.map +0 -1
  121. package/elements/modal-base.d.ts.map +0 -1
  122. package/elements/modal-base.js.map +0 -1
  123. package/src/examples/base-path/index.ts +0 -44
  124. package/src/examples/controlled/index.ts +0 -75
  125. package/src/examples/decorator/chidren.ts +0 -77
  126. package/src/examples/decorator/index.ts +0 -110
  127. package/src/examples/dialog/index.ts +0 -148
  128. package/src/examples/effect/index.ts +0 -45
  129. package/src/examples/elements/env.ts +0 -7
  130. package/src/examples/elements/layout.ts +0 -53
  131. package/src/examples/elements/nav.ts +0 -71
  132. package/src/examples/elements/source.ts +0 -68
  133. package/src/examples/gesture/canvas.ts +0 -69
  134. package/src/examples/gesture/index.ts +0 -97
  135. package/src/examples/gesture/manifest.json +0 -3
  136. package/src/examples/hash/index.ts +0 -55
  137. package/src/examples/i18n/index.ts +0 -63
  138. package/src/examples/index/index.ts +0 -33
  139. package/src/examples/index/manifest.json +0 -5
  140. package/src/examples/light-dom/index.ts +0 -31
  141. package/src/examples/multi-page/api.ts +0 -9
  142. package/src/examples/multi-page/index.ts +0 -78
  143. package/src/examples/multi-page/page-a.ts +0 -16
  144. package/src/examples/multi-page/page-b.ts +0 -12
  145. package/src/examples/multi-page/page-c.ts +0 -40
  146. package/src/examples/multi-page/store.ts +0 -10
  147. package/src/examples/perf-demo/index.ts +0 -136
  148. package/src/examples/ref-route/index.ts +0 -109
  149. package/src/examples/reflect/index.ts +0 -61
  150. package/src/examples/styled/index.ts +0 -39
  151. package/src/examples/svg-icon/index.ts +0 -31
  152. package/src/examples/theme/index.ts +0 -56
  153. package/src/examples/unsafe/index.ts +0 -29
  154. package/umd.d.ts +0 -18
  155. package/umd.d.ts.map +0 -1
  156. package/umd.js +0 -54
  157. package/umd.js.LICENSE.txt +0 -13
  158. package/umd.js.map +0 -1
@@ -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"}