timered-counter 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +252 -102
- package/dist/custom-elements.json +252 -102
- package/dist/decimal-js-number-adapter.esm-browser.js +9 -0
- package/dist/decimal-js-number-adapter.esm-browser.js.map +1 -0
- package/dist/decimal-js-number-adapter.global.js +10 -0
- package/dist/decimal-js-number-adapter.global.js.map +1 -0
- package/dist/grapheme-splitter-string-adapter.esm-browser.js +2 -0
- package/dist/grapheme-splitter-string-adapter.esm-browser.js.map +1 -0
- package/dist/grapheme-splitter-string-adapter.global.js +2 -0
- package/dist/grapheme-splitter-string-adapter.global.js.map +1 -0
- package/dist/src/index.d.ts +1 -5
- package/dist/src/index.js +1 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/mixins/counter-base.js +9 -9
- package/dist/src/mixins/counter-base.js.map +1 -1
- package/dist/src/number-adapter/decimal-js.d.ts +8 -1
- package/dist/src/number-adapter/decimal-js.js +7 -0
- package/dist/src/number-adapter/decimal-js.js.map +1 -1
- package/dist/src/number-adapter/index.d.ts +6 -4
- package/dist/src/number-adapter/index.js +7 -4
- package/dist/src/number-adapter/index.js.map +1 -1
- package/dist/src/string-adapter/grapheme-splitter.d.ts +7 -0
- package/dist/src/string-adapter/grapheme-splitter.js +7 -0
- package/dist/src/string-adapter/grapheme-splitter.js.map +1 -1
- package/dist/src/string-adapter/index.d.ts +6 -4
- package/dist/src/string-adapter/index.js +7 -4
- package/dist/src/string-adapter/index.js.map +1 -1
- package/dist/src/timered-counter-adapter.d.ts +65 -0
- package/dist/src/timered-counter-adapter.js +120 -0
- package/dist/src/timered-counter-adapter.js.map +1 -0
- package/dist/stories/timered-counter/decimaljs.stories.js +4 -2
- package/dist/stories/timered-counter/decimaljs.stories.js.map +1 -1
- package/dist/stories/timered-counter-number/decimaljs.stories.js +4 -2
- package/dist/stories/timered-counter-number/decimaljs.stories.js.map +1 -1
- package/dist/stories/timered-counter-string/decimaljs.stories.js +4 -2
- package/dist/stories/timered-counter-string/decimaljs.stories.js.map +1 -1
- package/dist/stories/timered-counter-string/grapheme-splitter.stories.js +7 -3
- package/dist/stories/timered-counter-string/grapheme-splitter.stories.js.map +1 -1
- package/dist/stories/timered-counter-string/intl-segmenter.stories.js +5 -3
- package/dist/stories/timered-counter-string/intl-segmenter.stories.js.map +1 -1
- package/dist/timered-counter.esm-browser.js +54 -61
- package/dist/timered-counter.esm-browser.js.map +1 -1
- package/dist/timered-counter.global.js +51 -58
- package/dist/timered-counter.global.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/src/counter-adapter.d.ts +0 -38
- package/dist/src/counter-adapter.js +0 -71
- package/dist/src/counter-adapter.js.map +0 -1
@@ -83,5 +83,12 @@ const DecimalJsAdapter = (config = { precision: 1e3 }) => {
|
|
83
83
|
},
|
84
84
|
};
|
85
85
|
};
|
86
|
+
export function register(counterAdapter, config) {
|
87
|
+
counterAdapter.registerNumberAdapter(['decimal.js', 'decimal-js', 'decimaljs'], () => DecimalJsAdapter(config));
|
88
|
+
}
|
86
89
|
export { DecimalJsAdapter };
|
90
|
+
export default {
|
91
|
+
register,
|
92
|
+
DecimalJsAdapter,
|
93
|
+
};
|
87
94
|
//# sourceMappingURL=decimal-js.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decimal-js.js","sourceRoot":"","sources":["../../../src/number-adapter/decimal-js.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
1
|
+
{"version":3,"file":"decimal-js.js","sourceRoot":"","sources":["../../../src/number-adapter/decimal-js.ts"],"names":[],"mappings":"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","sourcesContent":["import { Decimal } from 'decimal.js';\nimport { isString } from 'remeda';\nimport type { NumberAdapter } from './types.js';\nimport type { TimeredCounterAdapter } from '../timered-counter-adapter.js';\n\nconst numberRegex = /^-?\\d+(\\.\\d+)?$/;\n\nconst DecimalJsAdapter: (config?: Decimal.Config) => NumberAdapter<Decimal> = (\n config = { precision: 1e3 },\n) => {\n const InnerDecimal = Decimal.clone(config);\n return {\n create(value: string | number): Decimal {\n if (isString(value) && !numberRegex.test(value)) value = 0;\n return new InnerDecimal(value);\n },\n add(a, b) {\n return a.plus(b);\n },\n sub(a, b) {\n return a.minus(b);\n },\n mul(a, b) {\n return a.times(b);\n },\n div(a, b) {\n return a.div(b);\n },\n compare(a, b) {\n return a.cmp(b) as 1 | 0 | -1;\n },\n eq(a, b) {\n return a.eq(b);\n },\n gt(a, b) {\n return a.gt(b);\n },\n gte(a, b) {\n return a.gte(b);\n },\n lt(a, b) {\n return a.lt(b);\n },\n lte(a, b) {\n return a.lte(b);\n },\n isInteger(a) {\n return a.isInteger();\n },\n isNegative(a) {\n return a.isNegative();\n },\n isPositive(a) {\n return a.isPositive();\n },\n isZero(a) {\n return a.isZero();\n },\n isNaN(a) {\n return a.isNaN();\n },\n isFinite(a) {\n return a.isFinite();\n },\n abs(a) {\n return a.abs();\n },\n ceil(a) {\n return a.ceil();\n },\n floor(a) {\n return a.floor();\n },\n round(a) {\n return a.round();\n },\n max(a, b) {\n return InnerDecimal.max(a, b);\n },\n min(a, b) {\n return InnerDecimal.min(a, b);\n },\n toNumber(a) {\n return a.toNumber();\n },\n toString(a) {\n return a.toFixed();\n },\n };\n};\n\nexport function register(\n counterAdapter: typeof TimeredCounterAdapter,\n config?: Decimal.Config,\n) {\n counterAdapter.registerNumberAdapter(\n ['decimal.js', 'decimal-js', 'decimaljs'],\n () => DecimalJsAdapter(config),\n );\n}\n\nexport { DecimalJsAdapter };\n\nexport default {\n register,\n DecimalJsAdapter,\n};\n"]}
|
@@ -1,4 +1,6 @@
|
|
1
|
-
export * from
|
2
|
-
export * from
|
3
|
-
export * from
|
4
|
-
|
1
|
+
export * from './types.js';
|
2
|
+
export * from './build-in-number.js';
|
3
|
+
export * from './build-in-bigint.js';
|
4
|
+
/**
|
5
|
+
* decimal-js 作为外部模块, 按需引入
|
6
|
+
*/
|
@@ -1,5 +1,8 @@
|
|
1
|
-
export * from
|
2
|
-
export * from
|
3
|
-
export * from
|
4
|
-
|
1
|
+
export * from './types.js';
|
2
|
+
export * from './build-in-number.js';
|
3
|
+
export * from './build-in-bigint.js';
|
4
|
+
/**
|
5
|
+
* decimal-js 作为外部模块, 按需引入
|
6
|
+
*/
|
7
|
+
// export * from "./decimal-js.js";
|
5
8
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/number-adapter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/number-adapter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAErC;;GAEG;AACH,mCAAmC","sourcesContent":["export * from './types.js';\nexport * from './build-in-number.js';\nexport * from './build-in-bigint.js';\n\n/**\n * decimal-js 作为外部模块, 按需引入\n */\n// export * from \"./decimal-js.js\";\n"]}
|
@@ -1,8 +1,15 @@
|
|
1
1
|
import { StringAdapter } from './types.js';
|
2
|
+
import type { TimeredCounterAdapter } from '../timered-counter-adapter.js';
|
2
3
|
/**
|
3
4
|
* 使用 `grapheme-splitter` 库的字符串适配器. 该适配器使用 `grapheme-splitter` 库将字符串转换为字符数组.
|
4
5
|
*
|
5
6
|
* 要使用 {@link GraphemeSplitterAdapter} 需要安装 `grapheme-splitter`.
|
6
7
|
*/
|
7
8
|
declare const GraphemeSplitterAdapter: () => StringAdapter;
|
9
|
+
export declare function register(counterAdapter: typeof TimeredCounterAdapter): void;
|
8
10
|
export { GraphemeSplitterAdapter };
|
11
|
+
declare const _default: {
|
12
|
+
register: typeof register;
|
13
|
+
GraphemeSplitterAdapter: () => StringAdapter;
|
14
|
+
};
|
15
|
+
export default _default;
|
@@ -12,5 +12,12 @@ const GraphemeSplitterAdapter = () => {
|
|
12
12
|
},
|
13
13
|
};
|
14
14
|
};
|
15
|
+
export function register(counterAdapter) {
|
16
|
+
counterAdapter.registerStringAdapter(['grapheme-splitter'], () => GraphemeSplitterAdapter());
|
17
|
+
}
|
15
18
|
export { GraphemeSplitterAdapter };
|
19
|
+
export default {
|
20
|
+
register,
|
21
|
+
GraphemeSplitterAdapter,
|
22
|
+
};
|
16
23
|
//# sourceMappingURL=grapheme-splitter.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"grapheme-splitter.js","sourceRoot":"","sources":["../../../src/string-adapter/grapheme-splitter.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"grapheme-splitter.js","sourceRoot":"","sources":["../../../src/string-adapter/grapheme-splitter.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AAIjD;;;;GAIG;AACH,MAAM,uBAAuB,GAAwB,GAAG,EAAE;IACxD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAExC,OAAO;QACL,aAAa,CAAC,KAAa;YACzB,OAAO,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,cAA4C;IACnE,cAAc,CAAC,qBAAqB,CAAC,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAC/D,uBAAuB,EAAE,CAC1B,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,eAAe;IACb,QAAQ;IACR,uBAAuB;CACxB,CAAC","sourcesContent":["import GraphemeSplitter from 'grapheme-splitter';\nimport { StringAdapter } from './types.js';\nimport type { TimeredCounterAdapter } from '../timered-counter-adapter.js';\n\n/**\n * 使用 `grapheme-splitter` 库的字符串适配器. 该适配器使用 `grapheme-splitter` 库将字符串转换为字符数组.\n *\n * 要使用 {@link GraphemeSplitterAdapter} 需要安装 `grapheme-splitter`.\n */\nconst GraphemeSplitterAdapter: () => StringAdapter = () => {\n const splitter = new GraphemeSplitter();\n\n return {\n stringToChars(value: string): string[] {\n return splitter.splitGraphemes(value);\n },\n };\n};\n\nexport function register(counterAdapter: typeof TimeredCounterAdapter) {\n counterAdapter.registerStringAdapter(['grapheme-splitter'], () =>\n GraphemeSplitterAdapter(),\n );\n}\n\nexport { GraphemeSplitterAdapter };\n\nexport default {\n register,\n GraphemeSplitterAdapter,\n};\n"]}
|
@@ -1,4 +1,6 @@
|
|
1
|
-
export * from
|
2
|
-
export * from
|
3
|
-
export * from
|
4
|
-
|
1
|
+
export * from './types.js';
|
2
|
+
export * from './build-in-string.js';
|
3
|
+
export * from './build-in-intl-segmenter.js';
|
4
|
+
/**
|
5
|
+
* grapheme-splitter 作为外部模块, 按需引入
|
6
|
+
*/
|
@@ -1,5 +1,8 @@
|
|
1
|
-
export * from
|
2
|
-
export * from
|
3
|
-
export * from
|
4
|
-
|
1
|
+
export * from './types.js';
|
2
|
+
export * from './build-in-string.js';
|
3
|
+
export * from './build-in-intl-segmenter.js';
|
4
|
+
/**
|
5
|
+
* grapheme-splitter 作为外部模块, 按需引入
|
6
|
+
*/
|
7
|
+
// export * from "./grapheme-splitter.js";
|
5
8
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/string-adapter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/string-adapter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAE7C;;GAEG;AACH,0CAA0C","sourcesContent":["export * from './types.js';\nexport * from './build-in-string.js';\nexport * from './build-in-intl-segmenter.js';\n\n/**\n * grapheme-splitter 作为外部模块, 按需引入\n */\n// export * from \"./grapheme-splitter.js\";\n"]}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
import { NumberAdapter } from './number-adapter/index.js';
|
2
|
+
import { StringAdapter } from './string-adapter/index.js';
|
3
|
+
export declare class TimeredCounterAdapter {
|
4
|
+
static AVAILABLE_NUMBER_ADAPTERS: Map<string[], () => NumberAdapter>;
|
5
|
+
static AVAILABLE_STRING_ADAPTERS: Map<string[], () => StringAdapter>;
|
6
|
+
/**
|
7
|
+
* 数字适配器, 有以下两种:
|
8
|
+
* 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.
|
9
|
+
* 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.
|
10
|
+
*
|
11
|
+
* 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.
|
12
|
+
*
|
13
|
+
* @default BuildInNumberAdapter
|
14
|
+
*/
|
15
|
+
static NUMBER_ADAPTER: NumberAdapter;
|
16
|
+
/**
|
17
|
+
* 字符串适配器, 有以下两种:
|
18
|
+
* 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.
|
19
|
+
* 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.
|
20
|
+
* 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.
|
21
|
+
*
|
22
|
+
* 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.
|
23
|
+
*
|
24
|
+
* @default BuildInStringAdapter
|
25
|
+
*/
|
26
|
+
static STRING_ADAPTER: StringAdapter;
|
27
|
+
/**
|
28
|
+
* 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.
|
29
|
+
*
|
30
|
+
* @see https://lit.dev/docs/components/properties/#attributes
|
31
|
+
* @protected
|
32
|
+
*/
|
33
|
+
static VALUE_CONVERTER: {
|
34
|
+
fromAttribute(value: string | null): string | null;
|
35
|
+
toAttribute(value: unknown): string | null | undefined;
|
36
|
+
};
|
37
|
+
/**
|
38
|
+
* 设置要使用的数字适配器. 仅对设置完之后的 TimeredCounter 实例生效.
|
39
|
+
*
|
40
|
+
* 接受的关键字除了内置的 `number` 以外, 还可以通过 {@link registerNumberAdapter} 注册的 `keyword`.
|
41
|
+
*
|
42
|
+
* @param adapterOrType
|
43
|
+
*/
|
44
|
+
static setNumberAdapter(adapterOrType: NumberAdapter | 'number' | string): void;
|
45
|
+
/**
|
46
|
+
* 与 {@link setNumberAdapter} 类似, 用于设置字符串适配器.
|
47
|
+
*/
|
48
|
+
static setStringAdapter(adapterOrType: StringAdapter | 'string' | 'intl-segmenter' | string): void;
|
49
|
+
static registerNumberAdapter(keyword: string[], adapter: () => NumberAdapter): void;
|
50
|
+
static registerStringAdapter(keyword: string[], adapter: () => StringAdapter): void;
|
51
|
+
/**
|
52
|
+
* 可以直接使用 adapter 文件的导出进行注册.
|
53
|
+
*
|
54
|
+
* adapter 文件需要导出一个名为 register 的函数, 该函数接受一个 TimeredCounterAdapter 类型的参数.
|
55
|
+
*
|
56
|
+
* 具体示例请查看 {@link GraphemeSplitterAdapter} or {@link DecimalJsAdapter}.
|
57
|
+
*/
|
58
|
+
static registryAdapter(adapter: {
|
59
|
+
register: (counterAdapter: typeof TimeredCounterAdapter) => void;
|
60
|
+
}): void;
|
61
|
+
}
|
62
|
+
export declare function setNumberAdapter(...args: Parameters<(typeof TimeredCounterAdapter)['setNumberAdapter']>): void;
|
63
|
+
export declare function setStringAdapter(...args: Parameters<(typeof TimeredCounterAdapter)['setStringAdapter']>): void;
|
64
|
+
export declare function registerNumberAdapter(...args: Parameters<(typeof TimeredCounterAdapter)['registerNumberAdapter']>): void;
|
65
|
+
export declare function registerStringAdapter(...args: Parameters<(typeof TimeredCounterAdapter)['registerStringAdapter']>): void;
|
@@ -0,0 +1,120 @@
|
|
1
|
+
import { isNullish, isString } from 'remeda';
|
2
|
+
import { BuildInNumberAdapter } from './number-adapter/index.js';
|
3
|
+
import { BuildInIntlSegmenterAdapter, BuildInStringAdapter, } from './string-adapter/index.js';
|
4
|
+
export class TimeredCounterAdapter {
|
5
|
+
/**
|
6
|
+
* 设置要使用的数字适配器. 仅对设置完之后的 TimeredCounter 实例生效.
|
7
|
+
*
|
8
|
+
* 接受的关键字除了内置的 `number` 以外, 还可以通过 {@link registerNumberAdapter} 注册的 `keyword`.
|
9
|
+
*
|
10
|
+
* @param adapterOrType
|
11
|
+
*/
|
12
|
+
static setNumberAdapter(adapterOrType) {
|
13
|
+
let adapter = BuildInNumberAdapter();
|
14
|
+
if (isString(adapterOrType)) {
|
15
|
+
for (const [keywords, adapterFactory,] of TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS) {
|
16
|
+
if (keywords.includes(adapterOrType)) {
|
17
|
+
adapter = adapterFactory();
|
18
|
+
break;
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
else {
|
23
|
+
adapter = adapterOrType;
|
24
|
+
}
|
25
|
+
TimeredCounterAdapter.NUMBER_ADAPTER = adapter;
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* 与 {@link setNumberAdapter} 类似, 用于设置字符串适配器.
|
29
|
+
*/
|
30
|
+
static setStringAdapter(adapterOrType) {
|
31
|
+
let adapter = BuildInStringAdapter();
|
32
|
+
if (isString(adapterOrType)) {
|
33
|
+
for (const [keywords, adapterFactory,] of TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS) {
|
34
|
+
if (keywords.includes(adapterOrType)) {
|
35
|
+
adapter = adapterFactory();
|
36
|
+
break;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
adapter = adapterOrType;
|
42
|
+
}
|
43
|
+
TimeredCounterAdapter.STRING_ADAPTER = adapter;
|
44
|
+
}
|
45
|
+
static registerNumberAdapter(keyword, adapter) {
|
46
|
+
TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS.set(keyword, adapter);
|
47
|
+
}
|
48
|
+
static registerStringAdapter(keyword, adapter) {
|
49
|
+
TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS.set(keyword, adapter);
|
50
|
+
}
|
51
|
+
/**
|
52
|
+
* 可以直接使用 adapter 文件的导出进行注册.
|
53
|
+
*
|
54
|
+
* adapter 文件需要导出一个名为 register 的函数, 该函数接受一个 TimeredCounterAdapter 类型的参数.
|
55
|
+
*
|
56
|
+
* 具体示例请查看 {@link GraphemeSplitterAdapter} or {@link DecimalJsAdapter}.
|
57
|
+
*/
|
58
|
+
static registryAdapter(adapter) {
|
59
|
+
adapter.register(this);
|
60
|
+
}
|
61
|
+
}
|
62
|
+
TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS = new Map([
|
63
|
+
[['number'], BuildInNumberAdapter],
|
64
|
+
// [['decimal.js', 'decimaljs'], DecimalJsAdapter()],
|
65
|
+
]);
|
66
|
+
TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS = new Map([
|
67
|
+
[['string'], BuildInStringAdapter],
|
68
|
+
[['intl-segmenter'], BuildInIntlSegmenterAdapter],
|
69
|
+
// [['grapheme-splitter'], GraphemeSplitterAdapter()],
|
70
|
+
]);
|
71
|
+
/**
|
72
|
+
* 数字适配器, 有以下两种:
|
73
|
+
* 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.
|
74
|
+
* 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.
|
75
|
+
*
|
76
|
+
* 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.
|
77
|
+
*
|
78
|
+
* @default BuildInNumberAdapter
|
79
|
+
*/
|
80
|
+
TimeredCounterAdapter.NUMBER_ADAPTER = BuildInNumberAdapter();
|
81
|
+
/**
|
82
|
+
* 字符串适配器, 有以下两种:
|
83
|
+
* 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.
|
84
|
+
* 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.
|
85
|
+
* 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.
|
86
|
+
*
|
87
|
+
* 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.
|
88
|
+
*
|
89
|
+
* @default BuildInStringAdapter
|
90
|
+
*/
|
91
|
+
TimeredCounterAdapter.STRING_ADAPTER = BuildInStringAdapter();
|
92
|
+
/**
|
93
|
+
* 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.
|
94
|
+
*
|
95
|
+
* @see https://lit.dev/docs/components/properties/#attributes
|
96
|
+
* @protected
|
97
|
+
*/
|
98
|
+
TimeredCounterAdapter.VALUE_CONVERTER = {
|
99
|
+
fromAttribute(value) {
|
100
|
+
return value;
|
101
|
+
},
|
102
|
+
toAttribute(value) {
|
103
|
+
return isNullish(value)
|
104
|
+
? value
|
105
|
+
: TimeredCounterAdapter.NUMBER_ADAPTER.toString(value);
|
106
|
+
},
|
107
|
+
};
|
108
|
+
export function setNumberAdapter(...args) {
|
109
|
+
TimeredCounterAdapter.setNumberAdapter(...args);
|
110
|
+
}
|
111
|
+
export function setStringAdapter(...args) {
|
112
|
+
TimeredCounterAdapter.setStringAdapter(...args);
|
113
|
+
}
|
114
|
+
export function registerNumberAdapter(...args) {
|
115
|
+
TimeredCounterAdapter.registerNumberAdapter(...args);
|
116
|
+
}
|
117
|
+
export function registerStringAdapter(...args) {
|
118
|
+
TimeredCounterAdapter.registerStringAdapter(...args);
|
119
|
+
}
|
120
|
+
//# sourceMappingURL=timered-counter-adapter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"timered-counter-adapter.js","sourceRoot":"","sources":["../../src/timered-counter-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNullish, isString } from 'remeda';\nimport { BuildInNumberAdapter, NumberAdapter } from './number-adapter/index.js';\nimport {\n BuildInIntlSegmenterAdapter,\n BuildInStringAdapter,\n StringAdapter,\n} from './string-adapter/index.js';\n\nexport class TimeredCounterAdapter {\n static AVAILABLE_NUMBER_ADAPTERS: Map<string[], () => NumberAdapter> =\n new Map([\n [['number'], BuildInNumberAdapter],\n // [['decimal.js', 'decimaljs'], DecimalJsAdapter()],\n ]);\n\n static AVAILABLE_STRING_ADAPTERS: Map<string[], () => StringAdapter> =\n new Map([\n [['string'], BuildInStringAdapter],\n [['intl-segmenter'], BuildInIntlSegmenterAdapter],\n // [['grapheme-splitter'], GraphemeSplitterAdapter()],\n ]);\n\n /**\n * 数字适配器, 有以下两种:\n * 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.\n * 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.\n *\n * 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.\n *\n * @default BuildInNumberAdapter\n */\n static NUMBER_ADAPTER: NumberAdapter = BuildInNumberAdapter();\n\n /**\n * 字符串适配器, 有以下两种:\n * 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.\n * 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.\n * 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.\n *\n * 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.\n *\n * @default BuildInStringAdapter\n */\n static STRING_ADAPTER: StringAdapter = BuildInStringAdapter();\n\n /**\n * 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.\n *\n * @see https://lit.dev/docs/components/properties/#attributes\n * @protected\n */\n static VALUE_CONVERTER = {\n fromAttribute(value: string | null) {\n return value;\n },\n toAttribute(value: unknown) {\n return isNullish(value)\n ? value\n : TimeredCounterAdapter.NUMBER_ADAPTER.toString(value);\n },\n };\n\n /**\n * 设置要使用的数字适配器. 仅对设置完之后的 TimeredCounter 实例生效.\n *\n * 接受的关键字除了内置的 `number` 以外, 还可以通过 {@link registerNumberAdapter} 注册的 `keyword`.\n *\n * @param adapterOrType\n */\n static setNumberAdapter(adapterOrType: NumberAdapter | 'number' | string) {\n let adapter: NumberAdapter = BuildInNumberAdapter();\n\n if (isString(adapterOrType)) {\n for (const [\n keywords,\n adapterFactory,\n ] of TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS) {\n if (keywords.includes(adapterOrType)) {\n adapter = adapterFactory();\n break;\n }\n }\n } else {\n adapter = adapterOrType;\n }\n\n TimeredCounterAdapter.NUMBER_ADAPTER = adapter;\n }\n\n /**\n * 与 {@link setNumberAdapter} 类似, 用于设置字符串适配器.\n */\n static setStringAdapter(\n adapterOrType: StringAdapter | 'string' | 'intl-segmenter' | string,\n ) {\n let adapter: StringAdapter = BuildInStringAdapter();\n\n if (isString(adapterOrType)) {\n for (const [\n keywords,\n adapterFactory,\n ] of TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS) {\n if (keywords.includes(adapterOrType)) {\n adapter = adapterFactory();\n break;\n }\n }\n } else {\n adapter = adapterOrType;\n }\n\n TimeredCounterAdapter.STRING_ADAPTER = adapter;\n }\n\n static registerNumberAdapter(\n keyword: string[],\n adapter: () => NumberAdapter,\n ) {\n TimeredCounterAdapter.AVAILABLE_NUMBER_ADAPTERS.set(keyword, adapter);\n }\n\n static registerStringAdapter(\n keyword: string[],\n adapter: () => StringAdapter,\n ) {\n TimeredCounterAdapter.AVAILABLE_STRING_ADAPTERS.set(keyword, adapter);\n }\n\n /**\n * 可以直接使用 adapter 文件的导出进行注册.\n *\n * adapter 文件需要导出一个名为 register 的函数, 该函数接受一个 TimeredCounterAdapter 类型的参数.\n *\n * 具体示例请查看 {@link GraphemeSplitterAdapter} or {@link DecimalJsAdapter}.\n */\n static registryAdapter(adapter: {\n register: (counterAdapter: typeof TimeredCounterAdapter) => void;\n }) {\n adapter.register(this);\n }\n}\n\nexport function setNumberAdapter(\n ...args: Parameters<(typeof TimeredCounterAdapter)['setNumberAdapter']>\n) {\n TimeredCounterAdapter.setNumberAdapter(...args);\n}\n\nexport function setStringAdapter(\n ...args: Parameters<(typeof TimeredCounterAdapter)['setStringAdapter']>\n) {\n TimeredCounterAdapter.setStringAdapter(...args);\n}\n\nexport function registerNumberAdapter(\n ...args: Parameters<(typeof TimeredCounterAdapter)['registerNumberAdapter']>\n) {\n TimeredCounterAdapter.registerNumberAdapter(...args);\n}\n\nexport function registerStringAdapter(\n ...args: Parameters<(typeof TimeredCounterAdapter)['registerStringAdapter']>\n) {\n TimeredCounterAdapter.registerStringAdapter(...args);\n}\n"]}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { setCustomElementsManifest, } from '@storybook/web-components';
|
2
2
|
import customElementsManifest from '../../custom-elements.json' with { type: 'json' };
|
3
|
-
import {
|
3
|
+
import { TimeredCounterAdapter } from '../../src/index.js';
|
4
|
+
import DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';
|
4
5
|
import { bigNumber } from '../story-parts/big-number.js';
|
5
6
|
import { setByAttr, setByProp } from '../utils/index.js';
|
6
7
|
setCustomElementsManifest(customElementsManifest);
|
@@ -12,7 +13,8 @@ const meta = {
|
|
12
13
|
controls: { expanded: true },
|
13
14
|
},
|
14
15
|
beforeEach: () => {
|
15
|
-
|
16
|
+
TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);
|
17
|
+
TimeredCounterAdapter.setNumberAdapter('decimal.js');
|
16
18
|
},
|
17
19
|
};
|
18
20
|
export default meta;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decimaljs.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter/decimaljs.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"decimaljs.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter/decimaljs.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAuB,MAAM,oBAAoB,CAAC;AAChF,OAAO,sBAAsB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEzD,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;AAElD,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,iBAAiB;IAC5B,IAAI,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACrC,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC7B;IACD,UAAU,EAAE,GAAG,EAAE;QACf,qBAAqB,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;QAC9D,qBAAqB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,KAAK,EACL,MAAM,GACP,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,SAAS,GAA6B;IACjD,IAAI,EAAE;QACJ,SAAS,EAAE,aAAa;QACxB,gBAAgB,EAAE;YAChB,QAAQ,EAAE,GAAG;SACd;KACF;IACD,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CACzC,cAAc,CACG,CAAC;QAEpB,MAAM,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE,CAC9C,SAAS,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAClD,CAAC;QAEF,MAAM,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE,CAC7C,SAAS,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAClD,CAAC;IACJ,CAAC;CACF,CAAC","sourcesContent":["import {\n Meta,\n setCustomElementsManifest,\n StoryObj,\n} from '@storybook/web-components';\nimport customElementsManifest from '../../custom-elements.json' with { type: 'json' };\nimport { TimeredCounterAdapter, type TimeredCounter } from '../../src/index.js';\nimport DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';\nimport { bigNumber } from '../story-parts/big-number.js';\nimport { setByAttr, setByProp } from '../utils/index.js';\n\nsetCustomElementsManifest(customElementsManifest);\n\nconst meta: Meta = {\n title: 'TimeredCounter/with decimal.js',\n component: 'timered-counter',\n tags: ['autodocs', 'timered-counter'],\n parameters: {\n controls: { expanded: true },\n },\n beforeEach: () => {\n TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);\n TimeredCounterAdapter.setNumberAdapter('decimal.js');\n },\n};\nexport default meta;\n\nexport {\n Basic,\n Events,\n AnimationOptions,\n Slots,\n Styles,\n} from './index.stories.js';\n\nexport const BigNumber: StoryObj<TimeredCounter> = {\n args: {\n className: 'test-target',\n animationOptions: {\n duration: 100,\n },\n },\n async play(context) {\n const { canvasElement, step } = context;\n const counter = canvasElement.querySelector(\n '.test-target',\n ) as TimeredCounter;\n\n await step('Testing with attribute', async () =>\n bigNumber(context, { counter, setBy: setByAttr }),\n );\n\n await step('Testing with property', async () =>\n bigNumber(context, { counter, setBy: setByProp }),\n );\n },\n};\n"]}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { setCustomElementsManifest, } from '@storybook/web-components';
|
2
2
|
import customElementsManifest from '../../custom-elements.json' with { type: 'json' };
|
3
|
-
import {
|
3
|
+
import { TimeredCounterAdapter, } from '../../src/index.js';
|
4
|
+
import DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';
|
4
5
|
import { setByAttr, setByProp } from '../utils/index.js';
|
5
6
|
import { bigNumber } from '../story-parts/big-number.js';
|
6
7
|
export { Basic, Events, Styles, LocaleNumber, AnimationOptions, } from './index.stories.js';
|
@@ -13,7 +14,8 @@ const meta = {
|
|
13
14
|
controls: { expanded: true },
|
14
15
|
},
|
15
16
|
beforeEach: () => {
|
16
|
-
|
17
|
+
TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);
|
18
|
+
TimeredCounterAdapter.setNumberAdapter('decimal.js');
|
17
19
|
},
|
18
20
|
};
|
19
21
|
export default meta;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decimaljs.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter-number/decimaljs.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EACL,
|
1
|
+
{"version":3,"file":"decimaljs.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter-number/decimaljs.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EACL,qBAAqB,GAGtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;AAElD,MAAM,IAAI,GAAS;IACjB,KAAK,EAAE,sCAAsC;IAC7C,SAAS,EAAE,wBAAwB;IACnC,IAAI,EAAE,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAC5C,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC7B;IACD,UAAU,EAAE,GAAG,EAAE;QACf,qBAAqB,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;QAC9D,qBAAqB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;CACF,CAAC;AACF,eAAe,IAAI,CAAC;AAEpB,MAAM,CAAC,MAAM,SAAS,GAAmC;IACvD,IAAI,EAAE;QACJ,SAAS,EAAE,aAAa;QACxB,gBAAgB,EAAE;YAChB,QAAQ,EAAE,GAAG;SACd;KACF;IACD,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CACzC,cAAc,CACG,CAAC;QAEpB,MAAM,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE,CAC9C,SAAS,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAClD,CAAC;QAEF,MAAM,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE,CAC7C,SAAS,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAClD,CAAC;IACJ,CAAC;CACF,CAAC","sourcesContent":["import {\n Meta,\n setCustomElementsManifest,\n StoryObj,\n} from '@storybook/web-components';\nimport customElementsManifest from '../../custom-elements.json' with { type: 'json' };\nimport {\n TimeredCounterAdapter,\n type TimeredCounter,\n TimeredCounterNumber,\n} from '../../src/index.js';\nimport DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';\nimport { setByAttr, setByProp } from '../utils/index.js';\nimport { bigNumber } from '../story-parts/big-number.js';\n\nexport {\n Basic,\n Events,\n Styles,\n LocaleNumber,\n AnimationOptions,\n} from './index.stories.js';\n\nsetCustomElementsManifest(customElementsManifest);\n\nconst meta: Meta = {\n title: 'TimeredCounterNumber/with decimal.js',\n component: 'timered-counter-number',\n tags: ['autodocs', 'timered-counter-number'],\n parameters: {\n controls: { expanded: true },\n },\n beforeEach: () => {\n TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);\n TimeredCounterAdapter.setNumberAdapter('decimal.js');\n },\n};\nexport default meta;\n\nexport const BigNumber: StoryObj<TimeredCounterNumber> = {\n args: {\n className: 'test-target',\n animationOptions: {\n duration: 100,\n },\n },\n async play(context) {\n const { canvasElement, step } = context;\n const counter = canvasElement.querySelector(\n '.test-target',\n ) as TimeredCounter;\n\n await step('Testing with attribute', async () =>\n bigNumber(context, { counter, setBy: setByAttr }),\n );\n\n await step('Testing with property', async () =>\n bigNumber(context, { counter, setBy: setByProp }),\n );\n },\n};\n"]}
|
@@ -3,7 +3,8 @@ import { expect } from '@storybook/test';
|
|
3
3
|
import { range } from 'remeda';
|
4
4
|
import { faker } from '@faker-js/faker';
|
5
5
|
import customElementsManifest from '../../custom-elements.json' with { type: 'json' };
|
6
|
-
import {
|
6
|
+
import { TimeredCounterAdapter, } from '../../src/index.js';
|
7
|
+
import DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';
|
7
8
|
import { bigNumber } from '../story-parts/big-number.js';
|
8
9
|
import { setByAttr, setByProp } from '../utils/index.js';
|
9
10
|
import { animationEvents } from '../story-parts/animation-events.js';
|
@@ -21,7 +22,8 @@ const meta = {
|
|
21
22
|
controls: { expanded: true },
|
22
23
|
},
|
23
24
|
beforeEach: () => {
|
24
|
-
|
25
|
+
TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);
|
26
|
+
TimeredCounterAdapter.setNumberAdapter('decimal.js');
|
25
27
|
},
|
26
28
|
};
|
27
29
|
export default meta;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"decimaljs.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter-string/decimaljs.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,sBAAsB,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EACL,
|
1
|
+
{"version":3,"file":"decimaljs.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter-string/decimaljs.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Meta,\n setCustomElementsManifest,\n StoryObj,\n} from '@storybook/web-components';\nimport { expect } from '@storybook/test';\nimport { range } from 'remeda';\nimport { faker } from '@faker-js/faker';\nimport customElementsManifest from '../../custom-elements.json' with { type: 'json' };\nimport {\n TimeredCounterAdapter,\n type TimeredCounter,\n TimeredCounterString,\n} from '../../src/index.js';\nimport DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';\n\nimport { bigNumber } from '../story-parts/big-number.js';\nimport { setByAttr, setByProp } from '../utils/index.js';\nimport { animationEvents } from '../story-parts/animation-events.js';\n\nexport { Basic, AnimationOptions, Styles, Emoji } from './index.stories.js';\n\nsetCustomElementsManifest(customElementsManifest);\n\nfunction equal(counter: TimeredCounter, a: any, b: any) {\n a = counter.getAttribute('aria-label')?.replaceAll(/\\s/g, ' ');\n return expect(a).toBe(b.toString());\n}\n\nconst meta: Meta = {\n title: 'TimeredCounterString/with decimal.js',\n component: 'timered-counter-string',\n tags: ['autodocs', 'timered-counter-string'],\n parameters: {\n controls: { expanded: true },\n },\n beforeEach: () => {\n TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);\n TimeredCounterAdapter.setNumberAdapter('decimal.js');\n },\n};\nexport default meta;\n\nexport const Events: StoryObj<TimeredCounterString> = {\n args: {\n className: 'test-target',\n animationOptions: { duration: 100 },\n },\n async play(context) {\n const { canvasElement, step } = context;\n const counter = canvasElement.querySelector(\n '.test-target',\n ) as TimeredCounter;\n\n const list = range(0, 5).map(() =>\n faker.lorem.sentence({ min: 1, max: 2 }),\n );\n\n await step('Testing with attribute', () =>\n animationEvents(context, { counter, list, setBy: setByAttr, equal }),\n );\n\n await step('Testing with property', () =>\n animationEvents(context, { counter, list, setBy: setByProp, equal }),\n );\n },\n};\n\nexport const BigNumber: StoryObj<TimeredCounterString> = {\n args: {\n className: 'test-target',\n animationOptions: {\n duration: 100,\n },\n },\n async play(context) {\n const { canvasElement, step } = context;\n const counter = canvasElement.querySelector(\n '.test-target',\n ) as TimeredCounter;\n\n await step('Testing with attribute', async () =>\n bigNumber(context, { counter, setBy: setByAttr, equal }),\n );\n\n await step('Testing with property', async () =>\n bigNumber(context, { counter, setBy: setByProp, equal }),\n );\n },\n};\n"]}
|
@@ -3,7 +3,9 @@ import { expect } from '@storybook/test';
|
|
3
3
|
import { range } from 'remeda';
|
4
4
|
import { faker } from '@faker-js/faker';
|
5
5
|
import customElementsManifest from '../../custom-elements.json' with { type: 'json' };
|
6
|
-
import {
|
6
|
+
import { TimeredCounterAdapter, } from '../../src/index.js';
|
7
|
+
import DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';
|
8
|
+
import GraphemeSplitterStringAdapter from '../../src/string-adapter/grapheme-splitter.js';
|
7
9
|
import { bigNumber } from '../story-parts/big-number.js';
|
8
10
|
import { setByAttr, setByProp } from '../utils/index.js';
|
9
11
|
import { animationEvents } from '../story-parts/animation-events.js';
|
@@ -21,8 +23,10 @@ const meta = {
|
|
21
23
|
controls: { expanded: true },
|
22
24
|
},
|
23
25
|
beforeEach: () => {
|
24
|
-
|
25
|
-
|
26
|
+
TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);
|
27
|
+
TimeredCounterAdapter.registryAdapter(GraphemeSplitterStringAdapter);
|
28
|
+
TimeredCounterAdapter.setNumberAdapter('decimal.js');
|
29
|
+
TimeredCounterAdapter.setStringAdapter('grapheme-splitter');
|
26
30
|
},
|
27
31
|
};
|
28
32
|
export default meta;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"grapheme-splitter.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter-string/grapheme-splitter.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,sBAAsB,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EACL,
|
1
|
+
{"version":3,"file":"grapheme-splitter.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter-string/grapheme-splitter.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Meta,\n setCustomElementsManifest,\n StoryObj,\n} from '@storybook/web-components';\nimport { expect } from '@storybook/test';\nimport { range } from 'remeda';\nimport { faker } from '@faker-js/faker';\nimport customElementsManifest from '../../custom-elements.json' with { type: 'json' };\nimport {\n TimeredCounterAdapter,\n type TimeredCounter,\n TimeredCounterString,\n} from '../../src/index.js';\nimport DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';\nimport GraphemeSplitterStringAdapter from '../../src/string-adapter/grapheme-splitter.js';\nimport { bigNumber } from '../story-parts/big-number.js';\nimport { setByAttr, setByProp } from '../utils/index.js';\nimport { animationEvents } from '../story-parts/animation-events.js';\n\nexport { Basic, AnimationOptions, Styles, Emoji } from './index.stories.js';\n\nsetCustomElementsManifest(customElementsManifest);\n\nfunction equal(counter: TimeredCounter, a: any, b: any) {\n a = counter.getAttribute('aria-label')?.replaceAll(/\\s/g, ' ');\n return expect(a).toBe(b.toString());\n}\n\nconst meta: Meta = {\n title: 'TimeredCounterString/with grapheme-splitter',\n component: 'timered-counter-string',\n tags: ['autodocs', 'timered-counter-string'],\n parameters: {\n controls: { expanded: true },\n },\n beforeEach: () => {\n TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);\n TimeredCounterAdapter.registryAdapter(GraphemeSplitterStringAdapter);\n\n TimeredCounterAdapter.setNumberAdapter('decimal.js');\n TimeredCounterAdapter.setStringAdapter('grapheme-splitter');\n },\n};\nexport default meta;\n\nexport const Events: StoryObj<TimeredCounterString> = {\n args: {\n className: 'test-target',\n animationOptions: { duration: 100 },\n },\n async play(context) {\n const { canvasElement, step } = context;\n const counter = canvasElement.querySelector(\n '.test-target',\n ) as TimeredCounter;\n\n const list = range(0, 5).map(() =>\n faker.lorem.sentence({ min: 1, max: 2 }),\n );\n\n await step('Testing with attribute', () =>\n animationEvents(context, { counter, list, setBy: setByAttr, equal }),\n );\n\n await step('Testing with property', () =>\n animationEvents(context, { counter, list, setBy: setByProp, equal }),\n );\n },\n};\n\nexport const BigNumber: StoryObj<TimeredCounterString> = {\n args: {\n className: 'test-target',\n animationOptions: {\n duration: 100,\n },\n },\n async play(context) {\n const { canvasElement, step } = context;\n const counter = canvasElement.querySelector(\n '.test-target',\n ) as TimeredCounter;\n\n await step('Testing with attribute', async () =>\n bigNumber(context, { counter, setBy: setByAttr, equal }),\n );\n\n await step('Testing with property', async () =>\n bigNumber(context, { counter, setBy: setByProp, equal }),\n );\n },\n};\n"]}
|
@@ -3,7 +3,8 @@ import { expect } from '@storybook/test';
|
|
3
3
|
import { range } from 'remeda';
|
4
4
|
import { faker } from '@faker-js/faker';
|
5
5
|
import customElementsManifest from '../../custom-elements.json' with { type: 'json' };
|
6
|
-
import {
|
6
|
+
import { TimeredCounterAdapter, } from '../../src/index.js';
|
7
|
+
import DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';
|
7
8
|
import { bigNumber } from '../story-parts/big-number.js';
|
8
9
|
import { setByAttr, setByProp } from '../utils/index.js';
|
9
10
|
import { animationEvents } from '../story-parts/animation-events.js';
|
@@ -21,8 +22,9 @@ const meta = {
|
|
21
22
|
controls: { expanded: true },
|
22
23
|
},
|
23
24
|
beforeEach: () => {
|
24
|
-
|
25
|
-
|
25
|
+
TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);
|
26
|
+
TimeredCounterAdapter.setNumberAdapter('decimal.js');
|
27
|
+
TimeredCounterAdapter.setStringAdapter('intl-segmenter');
|
26
28
|
},
|
27
29
|
};
|
28
30
|
export default meta;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"intl-segmenter.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter-string/intl-segmenter.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,sBAAsB,MAAM,4BAA4B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EACL,
|
1
|
+
{"version":3,"file":"intl-segmenter.stories.js","sourceRoot":"","sources":["../../../stories/timered-counter-string/intl-segmenter.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Meta,\n setCustomElementsManifest,\n StoryObj,\n} from '@storybook/web-components';\nimport { expect } from '@storybook/test';\nimport { range } from 'remeda';\nimport { faker } from '@faker-js/faker';\nimport customElementsManifest from '../../custom-elements.json' with { type: 'json' };\nimport {\n TimeredCounterAdapter,\n type TimeredCounter,\n TimeredCounterString,\n} from '../../src/index.js';\nimport DecimalJsNumberAdapter from '../../src/number-adapter/decimal-js.js';\nimport { bigNumber } from '../story-parts/big-number.js';\nimport { setByAttr, setByProp } from '../utils/index.js';\nimport { animationEvents } from '../story-parts/animation-events.js';\n\nexport { Basic, AnimationOptions, Styles, Emoji } from './index.stories.js';\n\nsetCustomElementsManifest(customElementsManifest);\n\nfunction equal(counter: TimeredCounter, a: any, b: any) {\n a = counter.getAttribute('aria-label')?.replaceAll(/\\s/g, ' ');\n return expect(a).toBe(b.toString());\n}\n\nconst meta: Meta = {\n title: 'TimeredCounterString/with Intl Segmenter',\n component: 'timered-counter-string',\n tags: ['autodocs', 'timered-counter-string'],\n parameters: {\n controls: { expanded: true },\n },\n beforeEach: () => {\n TimeredCounterAdapter.registryAdapter(DecimalJsNumberAdapter);\n\n TimeredCounterAdapter.setNumberAdapter('decimal.js');\n TimeredCounterAdapter.setStringAdapter('intl-segmenter');\n },\n};\nexport default meta;\n\nexport const Events: StoryObj<TimeredCounterString> = {\n args: {\n className: 'test-target',\n animationOptions: { duration: 100 },\n },\n async play(context) {\n const { canvasElement, step } = context;\n const counter = canvasElement.querySelector(\n '.test-target',\n ) as TimeredCounter;\n\n const list = range(0, 5).map(() =>\n faker.lorem.sentence({ min: 1, max: 2 }),\n );\n\n await step('Testing with attribute', () =>\n animationEvents(context, { counter, list, setBy: setByAttr, equal }),\n );\n\n await step('Testing with property', () =>\n animationEvents(context, { counter, list, setBy: setByProp, equal }),\n );\n },\n};\n\nexport const BigNumber: StoryObj<TimeredCounterString> = {\n args: {\n className: 'test-target',\n animationOptions: {\n duration: 100,\n },\n },\n async play(context) {\n const { canvasElement, step } = context;\n const counter = canvasElement.querySelector(\n '.test-target',\n ) as TimeredCounter;\n\n await step('Testing with attribute', async () =>\n bigNumber(context, { counter, setBy: setByAttr, equal }),\n );\n\n await step('Testing with property', async () =>\n bigNumber(context, { counter, setBy: setByProp, equal }),\n );\n },\n};\n"]}
|