@mantou/gem 2.2.1 → 2.2.3

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 (93) hide show
  1. package/dist/gem.es.js +1154 -1154
  2. package/dist/gem.umd.js +12 -15
  3. package/elements/base/gesture.d.ts +1 -0
  4. package/elements/base/gesture.d.ts.map +1 -1
  5. package/elements/base/gesture.js +3 -2
  6. package/elements/base/gesture.js.map +1 -1
  7. package/elements/base/link.d.ts +1 -1
  8. package/elements/base/link.d.ts.map +1 -1
  9. package/elements/base/link.js +13 -9
  10. package/elements/base/link.js.map +1 -1
  11. package/elements/base/modal-factory.d.ts +73 -48
  12. package/elements/base/modal-factory.d.ts.map +1 -1
  13. package/elements/base/modal-factory.js +12 -11
  14. package/elements/base/modal-factory.js.map +1 -1
  15. package/elements/base/route.d.ts +1 -1
  16. package/elements/base/route.d.ts.map +1 -1
  17. package/elements/base/route.js +11 -15
  18. package/elements/base/route.js.map +1 -1
  19. package/elements/base/title.d.ts.map +1 -1
  20. package/elements/base/title.js +2 -4
  21. package/elements/base/title.js.map +1 -1
  22. package/elements/base/unsafe.d.ts +3 -2
  23. package/elements/base/unsafe.d.ts.map +1 -1
  24. package/elements/base/unsafe.js +45 -24
  25. package/elements/base/unsafe.js.map +1 -1
  26. package/helper/i18n.d.ts.map +1 -1
  27. package/helper/logger.d.ts.map +1 -1
  28. package/helper/react-utils.d.ts.map +1 -1
  29. package/helper/react-utils.js +2 -6
  30. package/helper/react-utils.js.map +1 -1
  31. package/helper/request.d.ts +4 -4
  32. package/helper/request.d.ts.map +1 -1
  33. package/helper/request.js +14 -14
  34. package/helper/request.js.map +1 -1
  35. package/helper/ssr-shim.d.ts.map +1 -1
  36. package/helper/ssr-shim.js +0 -1
  37. package/helper/ssr-shim.js.map +1 -1
  38. package/helper/theme.d.ts +15 -3
  39. package/helper/theme.d.ts.map +1 -1
  40. package/helper/theme.js +22 -7
  41. package/helper/theme.js.map +1 -1
  42. package/lib/decorators.d.ts +50 -50
  43. package/lib/decorators.d.ts.map +1 -1
  44. package/lib/decorators.js +52 -51
  45. package/lib/decorators.js.map +1 -1
  46. package/lib/directive.d.ts.map +1 -1
  47. package/lib/element.d.ts.map +1 -1
  48. package/lib/element.js.map +1 -1
  49. package/lib/history.d.ts +1 -1
  50. package/lib/history.d.ts.map +1 -1
  51. package/lib/history.js +3 -3
  52. package/lib/history.js.map +1 -1
  53. package/lib/lit-html.d.ts +17 -9
  54. package/lib/lit-html.d.ts.map +1 -1
  55. package/lib/lit-html.js +6 -9
  56. package/lib/lit-html.js.map +1 -1
  57. package/lib/reactive.d.ts +18 -5
  58. package/lib/reactive.d.ts.map +1 -1
  59. package/lib/reactive.js +29 -22
  60. package/lib/reactive.js.map +1 -1
  61. package/lib/repeat.d.ts.map +1 -1
  62. package/lib/store.d.ts +2 -2
  63. package/lib/store.d.ts.map +1 -1
  64. package/lib/store.js +1 -0
  65. package/lib/store.js.map +1 -1
  66. package/lib/utils.d.ts +4 -1
  67. package/lib/utils.d.ts.map +1 -1
  68. package/lib/utils.js +11 -9
  69. package/lib/utils.js.map +1 -1
  70. package/lib/version.d.ts +1 -1
  71. package/lib/version.js +1 -1
  72. package/package.json +2 -2
  73. package/src/elements/base/gesture.ts +4 -2
  74. package/src/elements/base/link.ts +3 -3
  75. package/src/elements/base/modal-factory.ts +12 -11
  76. package/src/elements/base/route.ts +9 -15
  77. package/src/elements/base/title.ts +2 -4
  78. package/src/elements/base/unsafe.ts +33 -14
  79. package/src/helper/react-utils.ts +4 -12
  80. package/src/helper/request.ts +17 -17
  81. package/src/helper/ssr-shim.ts +0 -1
  82. package/src/helper/theme.ts +25 -10
  83. package/src/lib/decorators.ts +53 -56
  84. package/src/lib/element.ts +0 -1
  85. package/src/lib/history.ts +3 -4
  86. package/src/lib/lit-html.ts +13 -6
  87. package/src/lib/reactive.ts +66 -28
  88. package/src/lib/store.ts +3 -2
  89. package/src/lib/utils.ts +15 -8
  90. package/src/lib/version.ts +1 -1
  91. package/src/test/gem-element/advance.test.ts +1 -1
  92. package/src/test/gem-element/basic.test.ts +1 -2
  93. package/src/test/utils.test.ts +1 -1
package/lib/utils.js CHANGED
@@ -1,18 +1,16 @@
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, isNodeForceMicrotask) {
7
+ export function addMicrotask(func, method = queueMicrotask) {
4
8
  if (microtaskSet.has(func))
5
9
  return;
6
- const next = () => {
10
+ method(() => {
7
11
  microtaskSet.delete(func);
8
12
  func();
9
- };
10
- if (isNodeForceMicrotask) {
11
- process.nextTick(next);
12
- }
13
- else {
14
- Promise.resolve().then(next);
15
- }
13
+ });
16
14
  microtaskSet.add(func);
17
15
  }
18
16
  // 注意 typeof state === 'function' 但是没有 Function 的方法和属性
@@ -112,6 +110,10 @@ export class LinkedList extends EventTarget {
112
110
  }
113
111
  return deleteItem;
114
112
  }
113
+ clear() {
114
+ this.#map.clear();
115
+ this.#firstItem = this.#lastItem = undefined;
116
+ }
115
117
  /** 获取头部元素,会从链表删除 */
116
118
  get() {
117
119
  const firstItem = this.#firstItem;
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "2.2.1";
1
+ export declare const version = "2.2.3";
2
2
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '2.2.1';
1
+ export const version = '2.2.3';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantou/gem",
3
- "version": "2.2.1",
3
+ "version": "2.2.3",
4
4
  "description": "💎 使用自定义元素的轻量级 WebApp 开发框架",
5
5
  "keywords": [
6
6
  "frontend",
@@ -41,7 +41,7 @@
41
41
  "test": "cross-env wtr"
42
42
  },
43
43
  "devDependencies": {
44
- "@gemjs/config": "^2.1.1",
44
+ "@gemjs/config": "^2.1.3",
45
45
  "@types/chai": "^5.0.0",
46
46
  "@types/mocha": "^10.0.7",
47
47
  "@types/trusted-types": "^2.0.7",
@@ -11,6 +11,7 @@ export type PanEventDetail = {
11
11
  timeStamp: number;
12
12
  isPrimary: boolean;
13
13
  pointerId: number;
14
+ pressed: boolean;
14
15
  };
15
16
  export interface SwipeEventDetail {
16
17
  direction: 'top' | 'right' | 'bottom' | 'left';
@@ -46,7 +47,7 @@ function angleAB(
46
47
 
47
48
  const style = css`
48
49
  @layer {
49
- :scope:where(:not([hidden])) {
50
+ &:where(:not([hidden])) {
50
51
  display: block;
51
52
  user-select: none;
52
53
  touch-action: attr(touch-action, none);
@@ -143,7 +144,7 @@ export class GemGestureElement extends GemElement {
143
144
 
144
145
  #onMove = (evt: PointerEvent) => {
145
146
  const { pointerId, clientX, clientY, isPrimary, pointerType, timeStamp } = evt;
146
- if (!this.#pressed && this.hasPointerCapture(pointerId)) {
147
+ if (this.hasPointerCapture(pointerId)) {
147
148
  const moves = this.#getMoves(pointerId);
148
149
  const startEvent = this.#getStartEvent(pointerId);
149
150
  const lastMove = moves[moves.length - 1] || startEvent;
@@ -161,6 +162,7 @@ export class GemGestureElement extends GemElement {
161
162
  timeStamp,
162
163
  isPrimary,
163
164
  pointerId,
165
+ pressed: this.#pressed,
164
166
  };
165
167
  moves.push(move);
166
168
  this.pan(move);
@@ -46,6 +46,8 @@ const styles = css`
46
46
  @shadow()
47
47
  @aria({ focusable: true })
48
48
  export class GemLinkElement extends GemElement {
49
+ @part static link: string;
50
+
49
51
  @attribute href: string;
50
52
  @attribute target: string;
51
53
  @attribute path: string;
@@ -62,8 +64,6 @@ export class GemLinkElement extends GemElement {
62
64
  @property routeOptions?: RouteOptions;
63
65
  @property prepare?: () => void | Promise<void>;
64
66
 
65
- @part link: string;
66
-
67
67
  get #routeOptions() {
68
68
  return this.routeOptions || this.options;
69
69
  }
@@ -146,7 +146,7 @@ export class GemLinkElement extends GemElement {
146
146
  @template()
147
147
  #content = () => {
148
148
  const href = this.#hint === 'off' ? null : this.#getHint();
149
- return html`<a part=${this.link} href=${href} tabindex="-1"><slot></slot></a>`;
149
+ return html`<a part=${GemLinkElement.link} href=${href} tabindex="-1"><slot></slot></a>`;
150
150
  };
151
151
 
152
152
  /**
@@ -1,3 +1,4 @@
1
+ /** biome-ignore-all lint/complexity/noThisInStatic: base class */
1
2
  import { aria, mounted, shadow } from '../../lib/decorators';
2
3
  import { history } from '../../lib/history';
3
4
  import { GemElement } from '../../lib/reactive';
@@ -32,7 +33,7 @@ export function createModalClass<T extends Record<string, unknown>>(options: T)
32
33
 
33
34
  /**@final */
34
35
  static get isOpen() {
35
- return ModalElement.store[open];
36
+ return this.store[open];
36
37
  }
37
38
 
38
39
  /**
@@ -41,19 +42,19 @@ export function createModalClass<T extends Record<string, unknown>>(options: T)
41
42
  * 浏览器 history 为异步 API,需要设置较长延迟;
42
43
  */
43
44
  static open(opts: T) {
44
- const instance = new ModalElement();
45
- ModalElement.instance = instance;
46
- ModalElement.inertStore = ([...document.body.children] as HTMLElement[]).filter((e) => !e.inert);
47
- ModalElement.inertStore.forEach((e) => (e.inert = true));
45
+ const instance = new this();
46
+ this.instance = instance;
47
+ this.inertStore = ([...document.body.children] as HTMLElement[]).filter((e) => !e.inert);
48
+ this.inertStore.forEach((e) => (e.inert = true));
48
49
  document.body.append(instance);
49
- const changeStore = () => ModalElement.store({ [open]: true, ...opts });
50
+ const changeStore = () => this.store({ [open]: true, ...opts });
50
51
  setTimeout(() => {
51
52
  changeStore();
52
53
  history.push({
53
54
  title: instance.label,
54
55
  open: changeStore,
55
- close: ModalElement.closeHandle.bind(ModalElement),
56
- shouldClose: ModalElement.shouldClose.bind(ModalElement),
56
+ close: this.closeHandle.bind(this),
57
+ shouldClose: this.shouldClose.bind(this),
57
58
  });
58
59
  }, 100);
59
60
  return final;
@@ -73,9 +74,9 @@ export function createModalClass<T extends Record<string, unknown>>(options: T)
73
74
  * history 中自动调用
74
75
  */
75
76
  static closeHandle() {
76
- ModalElement.inertStore.forEach((e) => (e.inert = false));
77
- ModalElement.instance?.remove();
78
- ModalElement.store({ [open]: false, ...options });
77
+ this.inertStore.forEach((e) => (e.inert = false));
78
+ this.instance?.remove();
79
+ this.store({ [open]: false, ...options });
79
80
  return final;
80
81
  }
81
82
 
@@ -32,7 +32,6 @@ type Params = Record<string, string>;
32
32
  declare global {
33
33
  // https://bugzilla.mozilla.org/show_bug.cgi?id=1731418
34
34
  // https://github.com/WebKit/standards-positions/issues/61
35
- // eslint-disable-next-line no-var
36
35
  var URLPattern: any;
37
36
  }
38
37
 
@@ -216,7 +215,7 @@ export class GemLightRouteElement extends GemElement {
216
215
  }
217
216
  };
218
217
 
219
- #lastLoader?: Promise<TemplateResult | undefined>;
218
+ #lastLoader?: TemplateResult | Promise<TemplateResult | undefined>;
220
219
  #setContent = (route: RouteItem | null, params: Params, content?: TemplateResult) => {
221
220
  this.beforeroutechange(route);
222
221
  this.#lastLoader = undefined;
@@ -279,7 +278,7 @@ export class GemLightRouteElement extends GemElement {
279
278
  };
280
279
 
281
280
  // 重写 `update`,并暴露为公共字段
282
- update = () => {
281
+ update = async () => {
283
282
  const { path, hash, query } = this.trigger.getParams();
284
283
  const { route, params = {} } = GemRouteElement.findRoute(this.routes, path);
285
284
  const { redirect, content, getContent } = route || {};
@@ -299,19 +298,14 @@ export class GemLightRouteElement extends GemElement {
299
298
  }
300
299
  const contentOrLoader = content || getContent?.(params, this.shadowRoot || this);
301
300
  this.loading(route);
302
- if (contentOrLoader instanceof Promise) {
303
- this.#lastLoader = contentOrLoader;
304
- const isSomeLoader = () => this.#lastLoader === contentOrLoader;
305
- contentOrLoader
306
- .then((newContent) => {
307
- if (isSomeLoader()) this.#setContent(route, params, newContent);
308
- })
309
- .catch((err) => {
310
- if (isSomeLoader()) this.error(err);
311
- });
312
- 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);
313
308
  }
314
- this.#setContent(route, params, contentOrLoader);
315
309
  };
316
310
  }
317
311
 
@@ -27,11 +27,9 @@ const setTitle = (documentTitle: string) => {
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 { attribute, shadow, template } from '../../lib/decorators';
2
- import { GemElement } from '../../lib/reactive';
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 content: string;
7
- @attribute contentcss: string;
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
- const style = /*html*/ `
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;
@@ -1,18 +1,10 @@
1
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
- // @ts-ignore
3
- // eslint-disable-next-line import/no-unresolved, import/no-extraneous-dependencies
1
+ // @ts-expect-error
4
2
  import type { ReactNode } from 'react';
5
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6
- // @ts-ignore
7
- // eslint-disable-next-line import/no-unresolved, import/no-extraneous-dependencies
3
+ // @ts-expect-error
8
4
  import { useEffect, useRef, useState } from 'react';
9
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
- // @ts-ignore
11
- // eslint-disable-next-line import/no-unresolved, import/no-extraneous-dependencies
5
+ // @ts-expect-error
12
6
  import type { Root } from 'react-dom/client';
13
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
14
- // @ts-ignore
15
- // eslint-disable-next-line import/no-unresolved, import/no-extraneous-dependencies
7
+ // @ts-expect-error
16
8
  import { createRoot } from 'react-dom/client';
17
9
 
18
10
  import type { Store } from '../lib/store';
@@ -8,9 +8,9 @@ type Options = {
8
8
  origin?: string;
9
9
  base?: string;
10
10
  // only for get/del/put/post
11
- appendHeaders?: (input?: any) => HeadersInit;
12
- transformInput?: (input?: any) => any;
13
- transformOutput?: (output: any, req: Request) => any;
11
+ appendHeaders?: (input?: any) => HeadersInit | Promise<HeadersInit>;
12
+ transformInput?: (input?: any) => any | Promise<any>;
13
+ transformOutput?: (output: any, req: Request) => any | Promise<any>;
14
14
  } & RequestInit;
15
15
 
16
16
  function initRequest(options: Options = {}) {
@@ -83,7 +83,7 @@ function initRequest(options: Options = {}) {
83
83
  data = await res.text();
84
84
  }
85
85
  if (isClientError) throw new (Error as any)(res.statusText, { cause: data });
86
- return transformOutput(data, req);
86
+ return await transformOutput(data, req);
87
87
  } catch {
88
88
  throw new Error('Parse error');
89
89
  }
@@ -91,33 +91,33 @@ function initRequest(options: Options = {}) {
91
91
 
92
92
  return {
93
93
  request,
94
- get<T>(path: string, params?: ReqParams) {
95
- const i = transformInput(params);
94
+ async get<T>(path: string, params?: ReqParams) {
95
+ const i = await transformInput(params);
96
96
  return request<T>(serializationUrl(path, i), {
97
97
  method: 'GET',
98
- headers: appendHeaders(i),
98
+ headers: await appendHeaders(i),
99
99
  });
100
100
  },
101
- del<T>(path: string, params?: ReqParams) {
102
- const i = transformInput(params);
101
+ async del<T>(path: string, params?: ReqParams) {
102
+ const i = await transformInput(params);
103
103
  return request<T>(serializationUrl(path, i), {
104
104
  method: 'DELETE',
105
- headers: appendHeaders(i),
105
+ headers: await appendHeaders(i),
106
106
  });
107
107
  },
108
- put<T>(path: string, body?: ReqBody) {
109
- const i = transformInput(body);
108
+ async put<T>(path: string, body?: ReqBody) {
109
+ const i = await transformInput(body);
110
110
  return request<T>(serializationUrl(path), {
111
111
  method: 'PUT',
112
- headers: appendHeaders(i),
112
+ headers: await appendHeaders(i),
113
113
  body: serializationBody(i),
114
114
  });
115
115
  },
116
- post<T>(path: string, body?: ReqBody) {
117
- const i = transformInput(body);
116
+ async post<T>(path: string, body?: ReqBody) {
117
+ const i = await transformInput(body);
118
118
  return request<T>(serializationUrl(path), {
119
119
  method: 'POST',
120
- headers: appendHeaders(i),
120
+ headers: await appendHeaders(i),
121
121
  body: serializationBody(i),
122
122
  });
123
123
  },
@@ -126,4 +126,4 @@ function initRequest(options: Options = {}) {
126
126
 
127
127
  const { request, del, get, post, put } = initRequest();
128
128
 
129
- export { initRequest, request, del, get, post, put };
129
+ export { del, get, initRequest, post, put, request };
@@ -1,7 +1,6 @@
1
1
  /// 简单的垫片,让 GemElement 服务端渲染不报错
2
2
  /// 渲染时将忽略 GemElement 内容
3
3
 
4
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
5
4
  // @ts-nocheck
6
5
  if (typeof window === 'undefined') {
7
6
  const getAny = () => {
@@ -2,9 +2,10 @@ import type { GemElement, Sheet } from '../lib/reactive';
2
2
  import { css, SheetToken } from '../lib/reactive';
3
3
  import type { Store } from '../lib/store';
4
4
  import { connect, createStore } from '../lib/store';
5
+ import type { Updater } from '../lib/utils';
5
6
  import { camelToKebabCase, createUpdater, randomStr } from '../lib/utils';
6
7
 
7
- export type Theme<T> = ReturnType<typeof createUpdater<T>> &
8
+ export type Theme<T> = Updater<T> &
8
9
  Sheet<unknown> & {
9
10
  [K in keyof T as K extends `${string}Color`
10
11
  ? `${string & K}${'' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900}`
@@ -52,7 +53,7 @@ function createThemeFromProps<T extends Record<string, unknown>>(themeObj: T, pr
52
53
  }
53
54
  rules += `${props[key]}:${store[key]};`;
54
55
  });
55
- styleSheet.setContent(`:scope,:host{${rules}}`);
56
+ styleSheet.setContent(`&,:host{${rules}}`);
56
57
  };
57
58
  updateContent();
58
59
  connect(store, () => {
@@ -81,19 +82,33 @@ export function createOverrideTheme<T extends Record<string, unknown>>(theme: Th
81
82
  return createThemeFromProps(themeObj, getThemeProps(theme));
82
83
  }
83
84
 
85
+ /**
86
+ * 返回一个主题对象,但同时又是一个装饰器函数,用来装饰一个主题更新函数
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const elementTheme = createDecoratorTheme({ color: '' });
91
+ * class MyElement {
92
+ * @​elementTheme()
93
+ * #theme = () => ({ color: this.color });
94
+ * }
95
+ * ```
96
+ * */
84
97
  export function createDecoratorTheme<T extends Record<string, unknown>>(themeObj: T) {
85
- const themeAsKeys = createThemeFromProps<T>(themeObj);
98
+ const themeAsKeys = createThemeFromProps(themeObj);
86
99
  const props = getThemeProps(themeAsKeys);
87
- const update =
88
- <E extends GemElement, V extends () => T, K = any[] | undefined>(
89
- getDep?: K extends readonly any[] ? (instance: E) => K : undefined,
90
- ) =>
91
- (_: any, { addInitializer, access }: ClassFieldDecoratorContext<E, V> | ClassMethodDecoratorContext<E, V>) => {
100
+ const update = <E extends GemElement, V extends () => T, K = any[] | undefined>(
101
+ getDep?: K extends readonly any[] ? (instance: E) => K : undefined,
102
+ ) => {
103
+ type Ctx = ClassFieldDecoratorContext<E, V> | ClassMethodDecoratorContext<E, V>;
104
+ return (_: any, { addInitializer, access }: Ctx) => {
92
105
  addInitializer(function (this: E) {
93
106
  const theme = createThemeFromProps({ ...themeObj }, props);
94
- this.internals.sheets.push(theme[SheetToken].getStyle(this));
107
+ this.internals.sheets.push(theme[SheetToken].getStyle(this, true));
95
108
  this.memo(() => theme(access.get(this).apply(this)), getDep && (() => getDep(this) as any));
96
109
  });
97
110
  };
98
- return createUpdater(themeAsKeys, update) as ReturnType<typeof createUpdater<typeof themeAsKeys, typeof update>>;
111
+ };
112
+ // 不知道为什么 `as` 能解决外部 `SheetToken` 不能命名的问题
113
+ return createUpdater(themeAsKeys, update) as Updater<Theme<T>, typeof update>;
99
114
  }