@mantou/gem 1.7.5 → 1.7.7

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 (45) hide show
  1. package/dist/gem.es.js +59 -50
  2. package/dist/gem.umd.js +23 -23
  3. package/elements/base/modal-factory.d.ts +2 -1
  4. package/elements/base/modal-factory.d.ts.map +1 -1
  5. package/elements/base/route.d.ts +1 -1
  6. package/elements/base/route.d.ts.map +1 -1
  7. package/elements/base/title.d.ts +3 -1
  8. package/elements/base/title.d.ts.map +1 -1
  9. package/elements/base/title.js +15 -16
  10. package/elements/base/title.js.map +1 -1
  11. package/helper/theme.d.ts +3 -0
  12. package/helper/theme.d.ts.map +1 -1
  13. package/helper/theme.js +6 -0
  14. package/helper/theme.js.map +1 -1
  15. package/lib/element.d.ts +1 -1
  16. package/lib/element.d.ts.map +1 -1
  17. package/lib/element.js +16 -18
  18. package/lib/element.js.map +1 -1
  19. package/lib/history.d.ts.map +1 -1
  20. package/lib/history.js +18 -13
  21. package/lib/history.js.map +1 -1
  22. package/lib/store.d.ts +2 -9
  23. package/lib/store.d.ts.map +1 -1
  24. package/lib/store.js +7 -9
  25. package/lib/store.js.map +1 -1
  26. package/lib/utils.d.ts +21 -4
  27. package/lib/utils.d.ts.map +1 -1
  28. package/lib/utils.js +87 -1
  29. package/lib/utils.js.map +1 -1
  30. package/lib/version.d.ts +1 -1
  31. package/lib/version.js +1 -1
  32. package/package.json +11 -7
  33. package/src/elements/base/route.ts +1 -1
  34. package/src/elements/base/title.ts +14 -11
  35. package/src/helper/theme.ts +7 -0
  36. package/src/lib/element.ts +10 -10
  37. package/src/lib/history.ts +18 -13
  38. package/src/lib/store.ts +7 -17
  39. package/src/lib/utils.ts +102 -5
  40. package/src/lib/version.ts +1 -1
  41. package/src/test/gem-element/advance.test.ts +12 -1
  42. package/src/test/gem-element/decorators.test.ts +17 -21
  43. package/src/test/gem-element/multi.test.ts +8 -5
  44. package/src/test/store.test.ts +1 -3
  45. package/src/test/utils.test.ts +24 -0
package/lib/utils.js CHANGED
@@ -334,7 +334,7 @@ export function objectMapToString(object, separate, toString) {
334
334
  }
335
335
  // 不支持 webkit 属性
336
336
  export function styleMap(object) {
337
- return objectMapToString(object, ';', (key, value) => value !== undefined ? `${camelToKebabCase(key)}:${value}` : '');
337
+ return objectMapToString(object, ';', (key, value) => value !== undefined && value !== null ? `${camelToKebabCase(key)}:${value}` : '');
338
338
  }
339
339
  export function classMap(object) {
340
340
  return objectMapToString(object, ' ', (key, value) => (value ? key : ''));
@@ -344,4 +344,90 @@ export const partMap = classMap;
344
344
  export function exportPartsMap(object) {
345
345
  return objectMapToString(object, ',', (key, value) => value === true || key === value ? key : value ? `${key}:${value}` : '');
346
346
  }
347
+ /**
348
+ * @example
349
+ * ```css
350
+ * animation: 150ms ease 0ms showMask;`
351
+ * @keyframes showMask {
352
+ * from {
353
+ * opacity: 0;
354
+ * }
355
+ * }
356
+ * ```
357
+ */
358
+ // export function createCSSAnimation(
359
+ // keyframes: PropertyIndexedKeyframes | Keyframe[],
360
+ // options?: number | (KeyframeEffectOptions & { name: string }),
361
+ // ) {
362
+ // const frames = new Map<number, StyleObject>();
363
+ // if (Array.isArray(keyframes)) {
364
+ // keyframes.forEach((keyframe, index) => {
365
+ // const offset = keyframes.length === 1 ? 1 : keyframe.offset || index / (keyframes.length - 1);
366
+ // frames.set(offset, {
367
+ // ...keyframe,
368
+ // // https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats#attributes
369
+ // cssOffset: undefined,
370
+ // offset: keyframe.cssOffset,
371
+ // composite: undefined,
372
+ // animationComposition: keyframe.composite,
373
+ // easing: undefined,
374
+ // animationTimingFunction: keyframe.easing,
375
+ // } as StyleObject);
376
+ // });
377
+ // } else {
378
+ // const offsetList: (number | null)[] = Array.isArray(keyframes.offset)
379
+ // ? keyframes.offset
380
+ // : keyframes.offset === undefined
381
+ // ? []
382
+ // : [keyframes.offset];
383
+ // if (offsetList.length && offsetList.at(-1) !== 1) offsetList.push(1);
384
+ // const setStyle = (offset: number, key: string, value: string | number | null | undefined) => {
385
+ // const style = frames.get(offset) || {};
386
+ // switch (key) {
387
+ // case 'offset':
388
+ // break;
389
+ // case 'cssOffset':
390
+ // Reflect.set(style, 'offset', value);
391
+ // break;
392
+ // case 'composite':
393
+ // Reflect.set(style, 'animationComposition', value);
394
+ // break;
395
+ // case 'easing':
396
+ // Reflect.set(style, 'animationTimingFunction', value);
397
+ // break;
398
+ // default:
399
+ // Reflect.set(style, key, value);
400
+ // }
401
+ // frames.set(offset, style);
402
+ // };
403
+ // for (const key in keyframes) {
404
+ // const framesValue = keyframes[key];
405
+ // !Array.isArray(framesValue)
406
+ // ? setStyle(1, key, framesValue)
407
+ // : framesValue.length === 1
408
+ // ? setStyle(1, key, framesValue[0])
409
+ // : framesValue.forEach((value, index) =>
410
+ // setStyle(offsetList[index] ?? index / (framesValue.length - 1), key, value),
411
+ // );
412
+ // }
413
+ // }
414
+ // let framesStr = '';
415
+ // frames.forEach((rules, offset) => {
416
+ // framesStr += `${(offset * 100).toFixed()}%{${styleMap(rules)}}`;
417
+ // });
418
+ // if (options) {
419
+ // const {
420
+ // // 只能使用 ms 数字
421
+ // duration = 0,
422
+ // easing = '',
423
+ // delay = 0,
424
+ // iterations = 1,
425
+ // direction = '',
426
+ // fill = '',
427
+ // name = `ani-${randomStr()}`,
428
+ // } = typeof options === 'number' ? ({ duration: options } as Exclude<typeof options, number>) : options;
429
+ // return `${duration}ms ${easing} ${delay}ms ${iterations} ${direction} ${fill} ${name};@keyframes ${name}{${framesStr}}`;
430
+ // }
431
+ // return framesStr;
432
+ // }
347
433
  //# sourceMappingURL=utils.js.map
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "1.7.5";
1
+ export declare const version = "1.7.7";
2
2
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '1.7.5';
1
+ export const version = '1.7.7';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,7 +1,17 @@
1
1
  {
2
2
  "name": "@mantou/gem",
3
- "version": "1.7.5",
3
+ "version": "1.7.7",
4
4
  "description": "💎 使用自定义元素的轻量级 WebApp 开发框架",
5
+ "keywords": [
6
+ "frontend",
7
+ "web components",
8
+ "custom elements",
9
+ "global state management",
10
+ "framework"
11
+ ],
12
+ "esm.sh": {
13
+ "bundle": false
14
+ },
5
15
  "main": "index.js",
6
16
  "module": "index.js",
7
17
  "exports": {
@@ -28,12 +38,6 @@
28
38
  "start": "yarn build:module --watch",
29
39
  "test": "cross-env NODE_OPTIONS=--no-experimental-fetch wtr"
30
40
  },
31
- "keywords": [
32
- "web",
33
- "webcomponents",
34
- "global state management",
35
- "web framework"
36
- ],
37
41
  "dependencies": {
38
42
  "lit-html": "^1.4.1"
39
43
  },
@@ -74,7 +74,7 @@ export interface RouteItem<T = unknown> {
74
74
  data?: T;
75
75
  }
76
76
 
77
- type RoutesObject = Record<string, RouteItem>;
77
+ export type RoutesObject = Record<string, RouteItem>;
78
78
 
79
79
  // params 中的成员不会验证
80
80
  export interface RouteOptions extends Omit<UpdateHistoryParams, 'path'> {
@@ -14,13 +14,13 @@
14
14
  */
15
15
 
16
16
  import { GemElement, html } from '../../lib/element';
17
- import { attribute, connectStore } from '../../lib/decorators';
17
+ import { attribute, boolattribute } from '../../lib/decorators';
18
18
  import { updateStore, connect } from '../../lib/store';
19
19
  import { titleStore } from '../../lib/history';
20
20
 
21
21
  const defaultTitle = document.title;
22
22
 
23
- function updateTitle(str?: string | null, prefix = '', suffix = '') {
23
+ function setDocumentTitle(str?: string | null, prefix = '', suffix = '') {
24
24
  const title = titleStore.title || str;
25
25
  if (title && title !== defaultTitle) {
26
26
  GemTitleElement.title = title;
@@ -31,18 +31,20 @@ function updateTitle(str?: string | null, prefix = '', suffix = '') {
31
31
  }
32
32
  }
33
33
 
34
+ connect(titleStore, setDocumentTitle);
35
+
34
36
  export const PREFIX = `${defaultTitle} | `;
35
37
  export const SUFFIX = ` - ${defaultTitle}`;
36
38
 
37
39
  /**
38
- * 允许声明式设置 `document.title`
40
+ * 映射到 `document.title`
39
41
  * @attr prefix
40
42
  * @attr suffix
41
43
  */
42
- @connectStore(titleStore)
43
44
  export class GemTitleElement extends GemElement {
44
45
  @attribute prefix: string;
45
46
  @attribute suffix: string;
47
+ @boolattribute inert: boolean;
46
48
 
47
49
  // 没有后缀的当前标题
48
50
  static title = document.title;
@@ -64,15 +66,16 @@ export class GemTitleElement extends GemElement {
64
66
  });
65
67
  }
66
68
 
69
+ mounted = () => {
70
+ this.effect(
71
+ () => !this.inert && connect(titleStore, this.update),
72
+ () => [this.inert],
73
+ );
74
+ };
75
+
67
76
  render() {
68
77
  // 多个 <gem-title> 时,最终 document.title 按执行顺序决定
69
- updateTitle(this.textContent, this.prefix, this.suffix);
70
-
71
- if (this.hidden) {
72
- return html``;
73
- }
78
+ setDocumentTitle(this.textContent?.trim(), this.prefix, this.suffix);
74
79
  return html`${GemTitleElement.title}`;
75
80
  }
76
81
  }
77
-
78
- connect(titleStore, updateTitle);
@@ -7,12 +7,14 @@ type SomeType<T> = {
7
7
 
8
8
  const themeStoreMap = new WeakMap();
9
9
 
10
+ /**获取主题原始值 */
10
11
  export function getThemeStore<T>(theme: SomeType<T>) {
11
12
  return themeStoreMap.get(theme) as Store<T>;
12
13
  }
13
14
 
14
15
  const themePropsMap = new WeakMap();
15
16
 
17
+ /**获取 css 变量名 */
16
18
  export function getThemeProps<T>(theme: SomeType<T>) {
17
19
  return themePropsMap.get(theme) as SomeType<T>;
18
20
  }
@@ -62,3 +64,8 @@ export function updateTheme<T = Record<string, unknown>>(theme: SomeType<T>, new
62
64
  updateStore(getThemeStore(theme), newThemeObj);
63
65
  setThemeFnMap.get(theme)();
64
66
  }
67
+
68
+ export function useTheme<T extends Record<string, unknown>>(themeObj: T) {
69
+ const theme = createTheme(themeObj);
70
+ return [theme, (newThemeObj: Partial<T>) => updateTheme(theme, newThemeObj)] as const;
71
+ }
@@ -359,6 +359,7 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
359
359
  return GemElement.#final;
360
360
  }
361
361
 
362
+ #disconnectStore?: (() => void)[];
362
363
  #connectedCallback = () => {
363
364
  if (this.#isAppendReason) {
364
365
  this.#isAppendReason = false;
@@ -370,15 +371,17 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
370
371
 
371
372
  this.willMount?.();
372
373
  const { observedStores, rootElement } = this.constructor as typeof GemElement;
373
- observedStores?.forEach((store) => {
374
- connect(store, this.#update);
375
- });
374
+ this.#disconnectStore = observedStores?.map((store) => connect(store, this.#update));
376
375
  const temp = this.#render();
377
376
  temp !== undefined && render(temp, this.#renderRoot);
378
377
  this.#isMounted = true;
379
378
  this.#unmountCallback = this.mounted?.();
380
379
  this.#initEffect();
381
- if (rootElement && (this.getRootNode() as ShadowRoot).host?.tagName !== rootElement.toUpperCase()) {
380
+ if (
381
+ rootElement &&
382
+ this.isConnected &&
383
+ (this.getRootNode() as ShadowRoot).host?.tagName !== rootElement.toUpperCase()
384
+ ) {
382
385
  throw new GemError(`not allow current root type`);
383
386
  }
384
387
  };
@@ -406,10 +409,10 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
406
409
  /**
407
410
  * @private
408
411
  * @final
409
- * use `mounted`
412
+ * use `mounted`; 允许手动调用 `connectedCallback` 以清除装饰器定义的字段
410
413
  */
411
414
  connectedCallback() {
412
- if (this.#isAsync) {
415
+ if (this.isConnected && this.#isAsync) {
413
416
  asyncRenderTaskList.add(this.#connectedCallback);
414
417
  } else {
415
418
  this.#connectedCallback();
@@ -436,10 +439,7 @@ export abstract class GemElement<T = Record<string, unknown>> extends HTMLElemen
436
439
  return;
437
440
  }
438
441
  this.#isMounted = false;
439
- const { observedStores } = this.constructor as typeof GemElement;
440
- observedStores?.forEach((store) => {
441
- disconnect(store, this.#update);
442
- });
442
+ this.#disconnectStore?.forEach((disconnect) => disconnect());
443
443
  execCallback(this.#unmountCallback);
444
444
  this.unmounted?.();
445
445
  this.#effectList?.forEach(({ preCallback }) => execCallback(preCallback));
@@ -1,6 +1,6 @@
1
1
  // https://github.com/WICG/navigation-api#stakeholder-feedback
2
2
 
3
- import { createStore, updateStore, connect } from './store';
3
+ import { connect, useStore } from './store';
4
4
  import { QueryString, cleanObject, GemError, absoluteLocation } from './utils';
5
5
 
6
6
  const nativeHistory = window.history;
@@ -18,7 +18,7 @@ export interface HistoryState {
18
18
  [index: string]: any;
19
19
  }
20
20
 
21
- const store = createStore<HistoryState>({
21
+ const [store, updateHistoryStore] = useStore<HistoryState>({
22
22
  $hasCloseHandle: false,
23
23
  $hasOpenHandle: false,
24
24
  $hasShouldCloseHandle: false,
@@ -85,10 +85,12 @@ function updateHistory(p: UpdateHistoryParams, native: typeof nativeHistory.push
85
85
  $hasOpenHandle: !!open,
86
86
  $hasShouldCloseHandle: !!shouldClose,
87
87
  $key: getKey(),
88
+ $title: title,
88
89
  ...data,
89
90
  };
90
91
  paramsMap.set(state.$key, params);
91
- updateStore(cleanObject(store), state);
92
+ cleanObject(store);
93
+ updateHistoryStore(state);
92
94
  const url = getUrlBarPath(path) + new QueryString(query) + hash;
93
95
  const prevHash = decodeURIComponent(location.hash);
94
96
  native(state, title, url);
@@ -100,12 +102,14 @@ function updateHistoryByNative(data: any, title: string, originUrl: string, nati
100
102
  validData(data);
101
103
  const state = {
102
104
  $key: getKey(),
105
+ $title: title,
103
106
  ...(data || {}),
104
107
  };
105
108
  const { pathname, search, hash } = new URL(originUrl, location.origin + location.pathname);
106
109
  const params = normalizeParams({ path: pathname, query: new QueryString(search), hash, title, data });
107
110
  paramsMap.set(state.$key, params);
108
- updateStore(cleanObject(store), state);
111
+ cleanObject(store);
112
+ updateHistoryStore(state);
109
113
  const url = getUrlBarPath(pathname) + params.query + hash;
110
114
  const prevHash = location.hash;
111
115
  native(state, title, url);
@@ -113,7 +117,7 @@ function updateHistoryByNative(data: any, title: string, originUrl: string, nati
113
117
  if (prevHash !== hash) window.dispatchEvent(new CustomEvent('hashchange'));
114
118
  }
115
119
 
116
- const gemBasePathStore = createStore({
120
+ const [gemBasePathStore, updateBasePathStore] = useStore({
117
121
  basePath: '',
118
122
  });
119
123
 
@@ -126,7 +130,7 @@ class GemHistory {
126
130
  }
127
131
  set basePath(basePath: string) {
128
132
  // 应用初始化的时候设置
129
- updateStore(gemBasePathStore, { basePath });
133
+ updateBasePathStore({ basePath });
130
134
  // paramsMap 更新后 ui 才会更新
131
135
  Object.assign(paramsMap.get(store.$key)!, { path: getInternalPath(location.pathname) });
132
136
  }
@@ -135,7 +139,7 @@ class GemHistory {
135
139
  }
136
140
  updateParams(params: UpdateHistoryParams) {
137
141
  Object.assign(paramsMap.get(store.$key)!, params);
138
- updateStore(store, {});
142
+ updateHistoryStore();
139
143
  }
140
144
  push(params: UpdateHistoryParams) {
141
145
  updateHistory(params, nativePushState);
@@ -162,7 +166,7 @@ class GemHistory {
162
166
  // `<gem-**>` 只读写父应用 `basePath`
163
167
  const gemHistory = new GemHistory();
164
168
 
165
- const gemTitleStore = createStore({ title: '' });
169
+ const [gemTitleStore, updateTitleStore] = useStore({ title: '' });
166
170
 
167
171
  const _GEMHISTORY = { history: gemHistory, titleStore: gemTitleStore, basePathStore: gemBasePathStore };
168
172
 
@@ -195,7 +199,7 @@ if (!window._GEMHISTORY) {
195
199
  const { pathname, search, hash } = location;
196
200
  gemHistory.replace({ path: pathname, query: search, hash });
197
201
  } else if (nativeHistory.state.$hasCloseHandle) {
198
- updateStore(store, nativeHistory.state);
202
+ updateHistoryStore(nativeHistory.state);
199
203
  const params = normalizeParams({ title: document.title });
200
204
  paramsMap.set(store.$key, params);
201
205
  // 有 handle 返回键的页面刷新需要清除返回 handler
@@ -203,7 +207,7 @@ if (!window._GEMHISTORY) {
203
207
  } else {
204
208
  // 有 gem 历史的正常普通刷新, 储存 params
205
209
  const params = normalizeParams({ title: document.title, hash: location.hash });
206
- updateStore(store, {
210
+ updateHistoryStore({
207
211
  $key: getKey(),
208
212
  ...(nativeHistory.state || {}),
209
213
  });
@@ -220,7 +224,7 @@ if (!window._GEMHISTORY) {
220
224
  connect(store, () => {
221
225
  const { title } = gemHistory.getParams();
222
226
  if (title !== gemTitleStore.title) {
223
- updateStore(gemTitleStore, { title });
227
+ updateTitleStore({ title });
224
228
  }
225
229
  });
226
230
 
@@ -251,7 +255,7 @@ if (!window._GEMHISTORY) {
251
255
  path: pathname,
252
256
  query: new QueryString(search),
253
257
  hash,
254
- title: document.title, // 浏览器缓存的 title
258
+ title: newState.$title, // document.title 是导航前的
255
259
  data: newState,
256
260
  });
257
261
  }
@@ -288,7 +292,8 @@ if (!window._GEMHISTORY) {
288
292
  }
289
293
  }
290
294
 
291
- updateStore(cleanObject(store), newState);
295
+ cleanObject(store);
296
+ updateHistoryStore(newState);
292
297
  });
293
298
  }
294
299
 
package/src/lib/store.ts CHANGED
@@ -13,32 +13,22 @@ export function createStore<T extends NonPrimitive>(originStore: T) {
13
13
  return originStore as Store<T>;
14
14
  }
15
15
 
16
- interface StoreObjectSet {
17
- [store: string]: NonPrimitive;
18
- }
19
- export type StoreSet<T> = {
20
- [P in keyof T]: T[P] & Store<T[P]>;
21
- };
22
- export function createStoreSet<T extends StoreObjectSet>(originStoreSet: T) {
23
- const keys = Object.keys(originStoreSet);
24
- keys.forEach((key) => {
25
- createStore(originStoreSet[key]);
26
- });
27
-
28
- return originStoreSet as StoreSet<T>;
29
- }
30
-
31
16
  export function updateStore<T extends NonPrimitive>(store: Store<T>, value?: Partial<T>) {
32
17
  Object.assign(store, value);
33
- const listeners = StoreListenerMap.get(store);
34
- listeners?.forEach((func) => {
18
+ StoreListenerMap.get(store)?.forEach((func) => {
35
19
  addMicrotask(func);
36
20
  });
37
21
  }
38
22
 
23
+ export function useStore<T extends NonPrimitive>(originStore: T) {
24
+ const store = createStore(originStore);
25
+ return [store, (value?: Partial<T>) => updateStore(store, value)] as const;
26
+ }
27
+
39
28
  export function connect<T extends NonPrimitive>(store: Store<T>, func: () => void) {
40
29
  const listeners = StoreListenerMap.get(store);
41
30
  listeners?.add(func);
31
+ return () => listeners?.delete(func);
42
32
  }
43
33
 
44
34
  export function disconnect<T extends NonPrimitive>(store: Store<T>, func: () => void) {
package/src/lib/utils.ts CHANGED
@@ -377,26 +377,123 @@ export function objectMapToString<T = any>(
377
377
  return result;
378
378
  }
379
379
 
380
- type StyleProp = keyof CSSStyleDeclaration | `--${string}`;
380
+ // Wait: Typescript lib dom CSSStyleDeclaration anchor position
381
+ type StyleProp = keyof CSSStyleDeclaration | `--${string}` | 'anchorDefault' | 'anchorName';
381
382
 
382
- export type StyleObject = Partial<Record<StyleProp, string | number | undefined>>;
383
+ export type StyleObject = Partial<Record<StyleProp, string | number | undefined | null>>;
383
384
 
384
385
  // 不支持 webkit 属性
385
386
  export function styleMap(object: StyleObject) {
386
387
  return objectMapToString(object, ';', (key, value) =>
387
- value !== undefined ? `${camelToKebabCase(key)}:${value}` : '',
388
+ value !== undefined && value !== null ? `${camelToKebabCase(key)}:${value}` : '',
388
389
  );
389
390
  }
390
391
 
391
- export function classMap(object: Record<string, boolean | string | number | undefined>) {
392
+ export function classMap(object: Record<string, boolean | string | number | undefined | null>) {
392
393
  return objectMapToString(object, ' ', (key, value) => (value ? key : ''));
393
394
  }
394
395
 
395
396
  export const partMap = classMap;
396
397
 
397
398
  // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/exportparts
398
- export function exportPartsMap(object: Record<string, string | undefined | boolean>) {
399
+ export function exportPartsMap(object: Record<string, string | boolean | undefined | null>) {
399
400
  return objectMapToString(object, ',', (key, value) =>
400
401
  value === true || key === value ? key : value ? `${key}:${value}` : '',
401
402
  );
402
403
  }
404
+
405
+ declare global {
406
+ interface PropertyIndexedKeyframes extends StyleObject {}
407
+ interface Keyframe extends StyleObject {}
408
+ }
409
+
410
+ /**
411
+ * @example
412
+ * ```css
413
+ * animation: 150ms ease 0ms showMask;`
414
+ * @keyframes showMask {
415
+ * from {
416
+ * opacity: 0;
417
+ * }
418
+ * }
419
+ * ```
420
+ */
421
+ // export function createCSSAnimation(
422
+ // keyframes: PropertyIndexedKeyframes | Keyframe[],
423
+ // options?: number | (KeyframeEffectOptions & { name: string }),
424
+ // ) {
425
+ // const frames = new Map<number, StyleObject>();
426
+ // if (Array.isArray(keyframes)) {
427
+ // keyframes.forEach((keyframe, index) => {
428
+ // const offset = keyframes.length === 1 ? 1 : keyframe.offset || index / (keyframes.length - 1);
429
+ // frames.set(offset, {
430
+ // ...keyframe,
431
+ // // https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats#attributes
432
+ // cssOffset: undefined,
433
+ // offset: keyframe.cssOffset,
434
+ // composite: undefined,
435
+ // animationComposition: keyframe.composite,
436
+ // easing: undefined,
437
+ // animationTimingFunction: keyframe.easing,
438
+ // } as StyleObject);
439
+ // });
440
+ // } else {
441
+ // const offsetList: (number | null)[] = Array.isArray(keyframes.offset)
442
+ // ? keyframes.offset
443
+ // : keyframes.offset === undefined
444
+ // ? []
445
+ // : [keyframes.offset];
446
+ // if (offsetList.length && offsetList.at(-1) !== 1) offsetList.push(1);
447
+
448
+ // const setStyle = (offset: number, key: string, value: string | number | null | undefined) => {
449
+ // const style = frames.get(offset) || {};
450
+ // switch (key) {
451
+ // case 'offset':
452
+ // break;
453
+ // case 'cssOffset':
454
+ // Reflect.set(style, 'offset', value);
455
+ // break;
456
+ // case 'composite':
457
+ // Reflect.set(style, 'animationComposition', value);
458
+ // break;
459
+ // case 'easing':
460
+ // Reflect.set(style, 'animationTimingFunction', value);
461
+ // break;
462
+ // default:
463
+ // Reflect.set(style, key, value);
464
+ // }
465
+ // frames.set(offset, style);
466
+ // };
467
+ // for (const key in keyframes) {
468
+ // const framesValue = keyframes[key];
469
+ // !Array.isArray(framesValue)
470
+ // ? setStyle(1, key, framesValue)
471
+ // : framesValue.length === 1
472
+ // ? setStyle(1, key, framesValue[0])
473
+ // : framesValue.forEach((value, index) =>
474
+ // setStyle(offsetList[index] ?? index / (framesValue.length - 1), key, value),
475
+ // );
476
+ // }
477
+ // }
478
+
479
+ // let framesStr = '';
480
+ // frames.forEach((rules, offset) => {
481
+ // framesStr += `${(offset * 100).toFixed()}%{${styleMap(rules)}}`;
482
+ // });
483
+
484
+ // if (options) {
485
+ // const {
486
+ // // 只能使用 ms 数字
487
+ // duration = 0,
488
+ // easing = '',
489
+ // delay = 0,
490
+ // iterations = 1,
491
+ // direction = '',
492
+ // fill = '',
493
+ // name = `ani-${randomStr()}`,
494
+ // } = typeof options === 'number' ? ({ duration: options } as Exclude<typeof options, number>) : options;
495
+ // return `${duration}ms ${easing} ${delay}ms ${iterations} ${direction} ${fill} ${name};@keyframes ${name}{${framesStr}}`;
496
+ // }
497
+
498
+ // return framesStr;
499
+ // }
@@ -1 +1 @@
1
- export const version = '1.7.5';
1
+ export const version = '1.7.7';