timered-counter 0.0.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/LICENSE +21 -0
- package/README.md +76 -0
- package/dist/custom-elements.json +8484 -0
- package/dist/src/counter-adapter.d.ts +38 -0
- package/dist/src/counter-adapter.js +69 -0
- package/dist/src/counter-adapter.js.map +1 -0
- package/dist/src/easing/cubic-bezier.d.ts +5 -0
- package/dist/src/easing/cubic-bezier.js +35 -0
- package/dist/src/easing/cubic-bezier.js.map +1 -0
- package/dist/src/easing/easing-functions.d.ts +1 -0
- package/dist/src/easing/easing-functions.js +10 -0
- package/dist/src/easing/easing-functions.js.map +1 -0
- package/dist/src/easing/index.d.ts +2 -0
- package/dist/src/easing/index.js +3 -0
- package/dist/src/easing/index.js.map +1 -0
- package/dist/src/easing/penner-easing-functions.d.ts +33 -0
- package/dist/src/easing/penner-easing-functions.js +82 -0
- package/dist/src/easing/penner-easing-functions.js.map +1 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.js +13 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mixins/counter-aira.d.ts +9 -0
- package/dist/src/mixins/counter-aira.js +41 -0
- package/dist/src/mixins/counter-aira.js.map +1 -0
- package/dist/src/mixins/counter-animation.d.ts +13 -0
- package/dist/src/mixins/counter-animation.js +55 -0
- package/dist/src/mixins/counter-animation.js.map +1 -0
- package/dist/src/mixins/counter-base.d.ts +21 -0
- package/dist/src/mixins/counter-base.js +152 -0
- package/dist/src/mixins/counter-base.js.map +1 -0
- package/dist/src/mixins/counter-parts.d.ts +42 -0
- package/dist/src/mixins/counter-parts.js +180 -0
- package/dist/src/mixins/counter-parts.js.map +1 -0
- package/dist/src/mixins/counter-styles.d.ts +17 -0
- package/dist/src/mixins/counter-styles.js +93 -0
- package/dist/src/mixins/counter-styles.js.map +1 -0
- package/dist/src/number-adapter/build-in-bigint.d.ts +6 -0
- package/dist/src/number-adapter/build-in-bigint.js +92 -0
- package/dist/src/number-adapter/build-in-bigint.js.map +1 -0
- package/dist/src/number-adapter/build-in-number.d.ts +3 -0
- package/dist/src/number-adapter/build-in-number.js +84 -0
- package/dist/src/number-adapter/build-in-number.js.map +1 -0
- package/dist/src/number-adapter/decimal-js.d.ts +4 -0
- package/dist/src/number-adapter/decimal-js.js +87 -0
- package/dist/src/number-adapter/decimal-js.js.map +1 -0
- package/dist/src/number-adapter/index.d.ts +4 -0
- package/dist/src/number-adapter/index.js +5 -0
- package/dist/src/number-adapter/index.js.map +1 -0
- package/dist/src/number-adapter/types.d.ts +34 -0
- package/dist/src/number-adapter/types.js +2 -0
- package/dist/src/number-adapter/types.js.map +1 -0
- package/dist/src/string-adapter/build-in-intl-segmenter.d.ts +10 -0
- package/dist/src/string-adapter/build-in-intl-segmenter.js +18 -0
- package/dist/src/string-adapter/build-in-intl-segmenter.js.map +1 -0
- package/dist/src/string-adapter/build-in-string.d.ts +12 -0
- package/dist/src/string-adapter/build-in-string.js +16 -0
- package/dist/src/string-adapter/build-in-string.js.map +1 -0
- package/dist/src/string-adapter/grapheme-splitter.d.ts +8 -0
- package/dist/src/string-adapter/grapheme-splitter.js +16 -0
- package/dist/src/string-adapter/grapheme-splitter.js.map +1 -0
- package/dist/src/string-adapter/index.d.ts +4 -0
- package/dist/src/string-adapter/index.js +5 -0
- package/dist/src/string-adapter/index.js.map +1 -0
- package/dist/src/string-adapter/types.d.ts +19 -0
- package/dist/src/string-adapter/types.js +2 -0
- package/dist/src/string-adapter/types.js.map +1 -0
- package/dist/src/styles/timered-counter-datetime-styles.d.ts +1 -0
- package/dist/src/styles/timered-counter-datetime-styles.js +8 -0
- package/dist/src/styles/timered-counter-datetime-styles.js.map +1 -0
- package/dist/src/styles/timered-counter-number-styles.d.ts +1 -0
- package/dist/src/styles/timered-counter-number-styles.js +3 -0
- package/dist/src/styles/timered-counter-number-styles.js.map +1 -0
- package/dist/src/styles/timered-counter-string-styles.d.ts +1 -0
- package/dist/src/styles/timered-counter-string-styles.js +3 -0
- package/dist/src/styles/timered-counter-string-styles.js.map +1 -0
- package/dist/src/styles/timered-counter-styles.d.ts +1 -0
- package/dist/src/styles/timered-counter-styles.js +25 -0
- package/dist/src/styles/timered-counter-styles.js.map +1 -0
- package/dist/src/timered-counter-datetime-duration.d.ts +37 -0
- package/dist/src/timered-counter-datetime-duration.js +186 -0
- package/dist/src/timered-counter-datetime-duration.js.map +1 -0
- package/dist/src/timered-counter-number.d.ts +23 -0
- package/dist/src/timered-counter-number.js +114 -0
- package/dist/src/timered-counter-number.js.map +1 -0
- package/dist/src/timered-counter-string.d.ts +30 -0
- package/dist/src/timered-counter-string.js +138 -0
- package/dist/src/timered-counter-string.js.map +1 -0
- package/dist/src/timered-counter.d.ts +15 -0
- package/dist/src/timered-counter.js +80 -0
- package/dist/src/timered-counter.js.map +1 -0
- package/dist/src/transitions/roller/index.d.ts +1 -0
- package/dist/src/transitions/roller/index.js +2 -0
- package/dist/src/transitions/roller/index.js.map +1 -0
- package/dist/src/transitions/roller/roller-digit.d.ts +28 -0
- package/dist/src/transitions/roller/roller-digit.js +259 -0
- package/dist/src/transitions/roller/roller-digit.js.map +1 -0
- package/dist/src/transitions/roller/roller.d.ts +42 -0
- package/dist/src/transitions/roller/roller.js +235 -0
- package/dist/src/transitions/roller/roller.js.map +1 -0
- package/dist/src/transitions/roller/styles.d.ts +2 -0
- package/dist/src/transitions/roller/styles.js +77 -0
- package/dist/src/transitions/roller/styles.js.map +1 -0
- package/dist/src/types/duration.d.ts +33 -0
- package/dist/src/types/duration.js +35 -0
- package/dist/src/types/duration.js.map +1 -0
- package/dist/src/types/group.d.ts +67 -0
- package/dist/src/types/group.js +2 -0
- package/dist/src/types/group.js.map +1 -0
- package/dist/src/utils/any-base.d.ts +6 -0
- package/dist/src/utils/any-base.js +56 -0
- package/dist/src/utils/any-base.js.map +1 -0
- package/dist/src/utils/duration.d.ts +15 -0
- package/dist/src/utils/duration.js +66 -0
- package/dist/src/utils/duration.js.map +1 -0
- package/dist/src/utils/extract-group-option.d.ts +9 -0
- package/dist/src/utils/extract-group-option.js +81 -0
- package/dist/src/utils/extract-group-option.js.map +1 -0
- package/dist/src/utils/iso8601-duration.d.ts +4 -0
- package/dist/src/utils/iso8601-duration.js +32 -0
- package/dist/src/utils/iso8601-duration.js.map +1 -0
- package/dist/src/utils/localized-date-time-fields.d.ts +2 -0
- package/dist/src/utils/localized-date-time-fields.js +24 -0
- package/dist/src/utils/localized-date-time-fields.js.map +1 -0
- package/dist/src/utils/parse-json-string.d.ts +1 -0
- package/dist/src/utils/parse-json-string.js +9 -0
- package/dist/src/utils/parse-json-string.js.map +1 -0
- package/dist/src/utils/polyfill-keyframes.d.ts +1 -0
- package/dist/src/utils/polyfill-keyframes.js +19 -0
- package/dist/src/utils/polyfill-keyframes.js.map +1 -0
- package/dist/src/utils/preprocess-part-data.d.ts +25 -0
- package/dist/src/utils/preprocess-part-data.js +59 -0
- package/dist/src/utils/preprocess-part-data.js.map +1 -0
- package/dist/src/utils/transition-digit.d.ts +2 -0
- package/dist/src/utils/transition-digit.js +51 -0
- package/dist/src/utils/transition-digit.js.map +1 -0
- package/dist/src/utils/uuid.d.ts +1 -0
- package/dist/src/utils/uuid.js +7 -0
- package/dist/src/utils/uuid.js.map +1 -0
- package/dist/stories/story-parts/animation-events.d.ts +9 -0
- package/dist/stories/story-parts/animation-events.js +35 -0
- package/dist/stories/story-parts/animation-events.js.map +1 -0
- package/dist/stories/story-parts/animation-options.d.ts +8 -0
- package/dist/stories/story-parts/animation-options.js +25 -0
- package/dist/stories/story-parts/animation-options.js.map +1 -0
- package/dist/stories/story-parts/big-number.d.ts +8 -0
- package/dist/stories/story-parts/big-number.js +25 -0
- package/dist/stories/story-parts/big-number.js.map +1 -0
- package/dist/stories/story-parts/datetime-locale.d.ts +8 -0
- package/dist/stories/story-parts/datetime-locale.js +30 -0
- package/dist/stories/story-parts/datetime-locale.js.map +1 -0
- package/dist/stories/story-parts/datetime-precision.d.ts +8 -0
- package/dist/stories/story-parts/datetime-precision.js +82 -0
- package/dist/stories/story-parts/datetime-precision.js.map +1 -0
- package/dist/stories/story-parts/edge-case.d.ts +8 -0
- package/dist/stories/story-parts/edge-case.js +12 -0
- package/dist/stories/story-parts/edge-case.js.map +1 -0
- package/dist/stories/story-parts/emoji.d.ts +9 -0
- package/dist/stories/story-parts/emoji.js +20 -0
- package/dist/stories/story-parts/emoji.js.map +1 -0
- package/dist/stories/story-parts/locale-number.d.ts +7 -0
- package/dist/stories/story-parts/locale-number.js +23 -0
- package/dist/stories/story-parts/locale-number.js.map +1 -0
- package/dist/stories/story-parts/slots.d.ts +10 -0
- package/dist/stories/story-parts/slots.js +29 -0
- package/dist/stories/story-parts/slots.js.map +1 -0
- package/dist/stories/story-parts/styles.d.ts +7 -0
- package/dist/stories/story-parts/styles.js +34 -0
- package/dist/stories/story-parts/styles.js.map +1 -0
- package/dist/stories/story-parts/value-change.d.ts +9 -0
- package/dist/stories/story-parts/value-change.js +20 -0
- package/dist/stories/story-parts/value-change.js.map +1 -0
- package/dist/stories/timered-counter/decimaljs.stories.d.ts +6 -0
- package/dist/stories/timered-counter/decimaljs.stories.js +34 -0
- package/dist/stories/timered-counter/decimaljs.stories.js.map +1 -0
- package/dist/stories/timered-counter/index.stories.d.ts +9 -0
- package/dist/stories/timered-counter/index.stories.js +180 -0
- package/dist/stories/timered-counter/index.stories.js.map +1 -0
- package/dist/stories/timered-counter-datetime-duration/index.stories.d.ts +7 -0
- package/dist/stories/timered-counter-datetime-duration/index.stories.js +95 -0
- package/dist/stories/timered-counter-datetime-duration/index.stories.js.map +1 -0
- package/dist/stories/timered-counter-number/decimaljs.stories.d.ts +6 -0
- package/dist/stories/timered-counter-number/decimaljs.stories.js +34 -0
- package/dist/stories/timered-counter-number/decimaljs.stories.js.map +1 -0
- package/dist/stories/timered-counter-number/index.stories.d.ts +9 -0
- package/dist/stories/timered-counter-number/index.stories.js +188 -0
- package/dist/stories/timered-counter-number/index.stories.js.map +1 -0
- package/dist/stories/timered-counter-string/decimaljs.stories.d.ts +7 -0
- package/dist/stories/timered-counter-string/decimaljs.stories.js +55 -0
- package/dist/stories/timered-counter-string/decimaljs.stories.js.map +1 -0
- package/dist/stories/timered-counter-string/grapheme-splitter.stories.d.ts +7 -0
- package/dist/stories/timered-counter-string/grapheme-splitter.stories.js +56 -0
- package/dist/stories/timered-counter-string/grapheme-splitter.stories.js.map +1 -0
- package/dist/stories/timered-counter-string/index.stories.d.ts +9 -0
- package/dist/stories/timered-counter-string/index.stories.js +126 -0
- package/dist/stories/timered-counter-string/index.stories.js.map +1 -0
- package/dist/stories/timered-counter-string/intl-segmenter.stories.d.ts +7 -0
- package/dist/stories/timered-counter-string/intl-segmenter.stories.js +56 -0
- package/dist/stories/timered-counter-string/intl-segmenter.stories.js.map +1 -0
- package/dist/stories/utils/index.d.ts +8 -0
- package/dist/stories/utils/index.js +20 -0
- package/dist/stories/utils/index.js.map +1 -0
- package/dist/test/td-counter.test.d.ts +1 -0
- package/dist/test/td-counter.test.js +25 -0
- package/dist/test/td-counter.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +128 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
import { Decimal } from 'decimal.js';
|
2
|
+
import { NumberAdapter } from './number-adapter/index.js';
|
3
|
+
import { StringAdapter } from './string-adapter/index.js';
|
4
|
+
export declare class CounterAdapter {
|
5
|
+
/**
|
6
|
+
* 数字适配器, 有以下两种:
|
7
|
+
* 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.
|
8
|
+
* 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.
|
9
|
+
*
|
10
|
+
* 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.
|
11
|
+
*
|
12
|
+
* @default BuildInNumberAdapter
|
13
|
+
*/
|
14
|
+
static NUMBER_ADAPTER: NumberAdapter;
|
15
|
+
/**
|
16
|
+
* 字符串适配器, 有以下两种:
|
17
|
+
* 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.
|
18
|
+
* 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.
|
19
|
+
* 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.
|
20
|
+
*
|
21
|
+
* 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.
|
22
|
+
*
|
23
|
+
* @default BuildInStringAdapter
|
24
|
+
*/
|
25
|
+
static STRING_ADAPTER: StringAdapter;
|
26
|
+
/**
|
27
|
+
* 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.
|
28
|
+
*
|
29
|
+
* @see https://lit.dev/docs/components/properties/#attributes
|
30
|
+
* @protected
|
31
|
+
*/
|
32
|
+
static VALUE_CONVERTER: {
|
33
|
+
fromAttribute(value: string | null): any;
|
34
|
+
toAttribute(value: unknown): string;
|
35
|
+
};
|
36
|
+
static setNumberAdapter(adapterOrType: NumberAdapter | 'number' | 'decimal.js', config?: Decimal.Config): void;
|
37
|
+
static setStringAdapter(adapterOrType: StringAdapter | 'string' | 'intl-segmenter' | 'grapheme-splitter'): void;
|
38
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import { isNullish, isString } from 'remeda';
|
2
|
+
import { BuildInNumberAdapter, DecimalJsAdapter, } from './number-adapter/index.js';
|
3
|
+
import { BuildInIntlSegmenterAdapter, BuildInStringAdapter, GraphemeSplitterAdapter, } from './string-adapter/index.js';
|
4
|
+
export class CounterAdapter {
|
5
|
+
static setNumberAdapter(adapterOrType, config) {
|
6
|
+
let adapter = BuildInNumberAdapter();
|
7
|
+
if (isString(adapterOrType)) {
|
8
|
+
if (adapterOrType === 'number')
|
9
|
+
adapter = BuildInNumberAdapter();
|
10
|
+
else if (['decimal.js', 'decimaljs'].includes(adapterOrType))
|
11
|
+
adapter = DecimalJsAdapter(config);
|
12
|
+
}
|
13
|
+
else {
|
14
|
+
adapter = adapterOrType;
|
15
|
+
}
|
16
|
+
CounterAdapter.NUMBER_ADAPTER = adapter;
|
17
|
+
}
|
18
|
+
static setStringAdapter(adapterOrType) {
|
19
|
+
let adapter = BuildInStringAdapter();
|
20
|
+
if (isString(adapterOrType)) {
|
21
|
+
if (adapterOrType === 'string')
|
22
|
+
adapter = BuildInStringAdapter();
|
23
|
+
else if (adapterOrType === 'intl-segmenter')
|
24
|
+
adapter = BuildInIntlSegmenterAdapter();
|
25
|
+
else if (adapterOrType === 'grapheme-splitter')
|
26
|
+
adapter = GraphemeSplitterAdapter();
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
adapter = adapterOrType;
|
30
|
+
}
|
31
|
+
CounterAdapter.STRING_ADAPTER = adapter;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
/**
|
35
|
+
* 数字适配器, 有以下两种:
|
36
|
+
* 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.
|
37
|
+
* 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.
|
38
|
+
*
|
39
|
+
* 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.
|
40
|
+
*
|
41
|
+
* @default BuildInNumberAdapter
|
42
|
+
*/
|
43
|
+
CounterAdapter.NUMBER_ADAPTER = BuildInNumberAdapter();
|
44
|
+
/**
|
45
|
+
* 字符串适配器, 有以下两种:
|
46
|
+
* 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.
|
47
|
+
* 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.
|
48
|
+
* 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.
|
49
|
+
*
|
50
|
+
* 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.
|
51
|
+
*
|
52
|
+
* @default BuildInStringAdapter
|
53
|
+
*/
|
54
|
+
CounterAdapter.STRING_ADAPTER = BuildInStringAdapter();
|
55
|
+
/**
|
56
|
+
* 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.
|
57
|
+
*
|
58
|
+
* @see https://lit.dev/docs/components/properties/#attributes
|
59
|
+
* @protected
|
60
|
+
*/
|
61
|
+
CounterAdapter.VALUE_CONVERTER = {
|
62
|
+
fromAttribute(value) {
|
63
|
+
return CounterAdapter.NUMBER_ADAPTER.create(isNullish(value) ? 0 : value);
|
64
|
+
},
|
65
|
+
toAttribute(value) {
|
66
|
+
return CounterAdapter.NUMBER_ADAPTER.toString(value);
|
67
|
+
},
|
68
|
+
};
|
69
|
+
//# sourceMappingURL=counter-adapter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"counter-adapter.js","sourceRoot":"","sources":["../../src/counter-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7C,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,OAAO,cAAc;IAuCzB,MAAM,CAAC,gBAAgB,CACrB,aAAsD,EACtD,MAAuB;QAEvB,IAAI,OAAO,GAAkB,oBAAoB,EAAE,CAAC;QAEpD,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5B,IAAI,aAAa,KAAK,QAAQ;gBAAE,OAAO,GAAG,oBAAoB,EAAE,CAAC;iBAC5D,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1D,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,aAAa,CAAC;QAC1B,CAAC;QAED,cAAc,CAAC,cAAc,GAAG,OAAO,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,gBAAgB,CACrB,aAIuB;QAEvB,IAAI,OAAO,GAAkB,oBAAoB,EAAE,CAAC;QAEpD,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5B,IAAI,aAAa,KAAK,QAAQ;gBAAE,OAAO,GAAG,oBAAoB,EAAE,CAAC;iBAC5D,IAAI,aAAa,KAAK,gBAAgB;gBACzC,OAAO,GAAG,2BAA2B,EAAE,CAAC;iBACrC,IAAI,aAAa,KAAK,mBAAmB;gBAC5C,OAAO,GAAG,uBAAuB,EAAE,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,aAAa,CAAC;QAC1B,CAAC;QAED,cAAc,CAAC,cAAc,GAAG,OAAO,CAAC;IAC1C,CAAC;;AA3ED;;;;;;;;GAQG;AACI,6BAAc,GAAkB,oBAAoB,EAAE,CAAC;AAE9D;;;;;;;;;GASG;AACI,6BAAc,GAAkB,oBAAoB,EAAE,CAAC;AAE9D;;;;;GAKG;AACI,8BAAe,GAAG;IACvB,aAAa,CAAC,KAAoB;QAChC,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IACD,WAAW,CAAC,KAAc;QACxB,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;CACF,CAAC","sourcesContent":["import { isNullish, isString } from 'remeda';\nimport { Decimal } from 'decimal.js';\nimport {\n BuildInNumberAdapter,\n DecimalJsAdapter,\n NumberAdapter,\n} from './number-adapter/index.js';\nimport {\n BuildInIntlSegmenterAdapter,\n BuildInStringAdapter,\n GraphemeSplitterAdapter,\n StringAdapter,\n} from './string-adapter/index.js';\n\nexport class CounterAdapter {\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 CounterAdapter.NUMBER_ADAPTER.create(isNullish(value) ? 0 : value);\n },\n toAttribute(value: unknown) {\n return CounterAdapter.NUMBER_ADAPTER.toString(value);\n },\n };\n\n static setNumberAdapter(\n adapterOrType: NumberAdapter | 'number' | 'decimal.js',\n config?: Decimal.Config,\n ) {\n let adapter: NumberAdapter = BuildInNumberAdapter();\n\n if (isString(adapterOrType)) {\n if (adapterOrType === 'number') adapter = BuildInNumberAdapter();\n else if (['decimal.js', 'decimaljs'].includes(adapterOrType))\n adapter = DecimalJsAdapter(config);\n } else {\n adapter = adapterOrType;\n }\n\n CounterAdapter.NUMBER_ADAPTER = adapter;\n }\n\n static setStringAdapter(\n adapterOrType:\n | StringAdapter\n | 'string'\n | 'intl-segmenter'\n | 'grapheme-splitter',\n ) {\n let adapter: StringAdapter = BuildInStringAdapter();\n\n if (isString(adapterOrType)) {\n if (adapterOrType === 'string') adapter = BuildInStringAdapter();\n else if (adapterOrType === 'intl-segmenter')\n adapter = BuildInIntlSegmenterAdapter();\n else if (adapterOrType === 'grapheme-splitter')\n adapter = GraphemeSplitterAdapter();\n } else {\n adapter = adapterOrType;\n }\n\n CounterAdapter.STRING_ADAPTER = adapter;\n }\n}\n"]}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
/**
|
2
|
+
* @see https://github.com/motiondivision/motion/blob/main/packages/framer-motion/src/easing/cubic-bezier.ts
|
3
|
+
*/
|
4
|
+
export declare const noop: <T>(any: T) => T;
|
5
|
+
export declare function cubicBezier(mX1: number, mY1: number, mX2: number, mY2: number): (t: number) => number;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
/**
|
2
|
+
* @see https://github.com/motiondivision/motion/blob/main/packages/framer-motion/src/easing/cubic-bezier.ts
|
3
|
+
*/
|
4
|
+
export const noop = (any) => any;
|
5
|
+
// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
|
6
|
+
const calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *
|
7
|
+
t;
|
8
|
+
const subdivisionPrecision = 0.0000001;
|
9
|
+
const subdivisionMaxIterations = 12;
|
10
|
+
function binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {
|
11
|
+
let currentX;
|
12
|
+
let currentT;
|
13
|
+
let i = 0;
|
14
|
+
do {
|
15
|
+
currentT = lowerBound + (upperBound - lowerBound) / 2.0;
|
16
|
+
currentX = calcBezier(currentT, mX1, mX2) - x;
|
17
|
+
if (currentX > 0.0) {
|
18
|
+
upperBound = currentT;
|
19
|
+
}
|
20
|
+
else {
|
21
|
+
lowerBound = currentT;
|
22
|
+
}
|
23
|
+
} while (Math.abs(currentX) > subdivisionPrecision &&
|
24
|
+
++i < subdivisionMaxIterations);
|
25
|
+
return currentT;
|
26
|
+
}
|
27
|
+
export function cubicBezier(mX1, mY1, mX2, mY2) {
|
28
|
+
// If this is a linear gradient, return linear easing
|
29
|
+
if (mX1 === mY1 && mX2 === mY2)
|
30
|
+
return noop;
|
31
|
+
const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);
|
32
|
+
// If animation is at start/end, return t without easing
|
33
|
+
return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);
|
34
|
+
}
|
35
|
+
//# sourceMappingURL=cubic-bezier.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"cubic-bezier.js","sourceRoot":"","sources":["../../../src/easing/cubic-bezier.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAI,GAAM,EAAK,EAAE,CAAC,GAAG,CAAC;AAE1C,iEAAiE;AACjE,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAU,EAAE,EAAU,EAAE,EAAE,CACvD,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;IAC1E,CAAC,CAAC;AAEJ,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,SAAS,eAAe,CACtB,CAAS,EACT,UAAkB,EAClB,UAAkB,EAClB,GAAW,EACX,GAAW;IAEX,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC,GAAW,CAAC,CAAC;IAElB,GAAG,CAAC;QACF,QAAQ,GAAG,UAAU,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC;QACxD,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;IACH,CAAC,QACC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,oBAAoB;QACzC,EAAE,CAAC,GAAG,wBAAwB,EAC9B;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,GAAW,EACX,GAAW,EACX,GAAW,EACX,GAAW;IAEX,qDAAqD;IACrD,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAE5C,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAErE,wDAAwD;IACxD,OAAO,CAAC,CAAS,EAAE,EAAE,CACnB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["/**\n * @see https://github.com/motiondivision/motion/blob/main/packages/framer-motion/src/easing/cubic-bezier.ts\n */\n\nexport const noop = <T>(any: T): T => any;\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t: number, a1: number, a2: number) =>\n (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\n\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\n\nfunction binarySubdivide(\n x: number,\n lowerBound: number,\n upperBound: number,\n mX1: number,\n mX2: number,\n) {\n let currentX: number;\n let currentT: number;\n let i: number = 0;\n\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n } else {\n lowerBound = currentT;\n }\n } while (\n Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations\n );\n\n return currentT;\n}\n\nexport function cubicBezier(\n mX1: number,\n mY1: number,\n mX2: number,\n mY2: number,\n) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2) return noop;\n\n const getTForX = (aX: number) => binarySubdivide(aX, 0, 1, mX1, mX2);\n\n // If animation is at start/end, return t without easing\n return (t: number) =>\n t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const linear: (x: number) => number;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"easing-functions.js","sourceRoot":"","sources":["../../../src/easing/easing-functions.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,YAAY;AACZ,aAAa;AACb,eAAe;AACf,gBAAgB;AAChB,WAAW;AACX,iBAAiB;AACjB,mBAAmB;AAEnB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC","sourcesContent":["// export {\n// easeIn,\n// easeOut,\n// easeInOut,\n// anticipate,\n// steps,\n// cubicBezier,\n// } from \"motion\";\n\nexport const linear = (x: number) => x;\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/easing/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC","sourcesContent":["export * from './easing-functions.js';\nexport * from './penner-easing-functions.js';\n"]}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/**
|
2
|
+
* @see https://easings.net
|
3
|
+
*/
|
4
|
+
export declare const easeInSine: (t: number) => number;
|
5
|
+
export declare const easeOutSine: (t: number) => number;
|
6
|
+
export declare const easeInOutSine: (t: number) => number;
|
7
|
+
export declare const easeInQuad: (t: number) => number;
|
8
|
+
export declare const easeOutQuad: (t: number) => number;
|
9
|
+
export declare const easeInOutQuad: (t: number) => number;
|
10
|
+
export declare const easeInCubic: (t: number) => number;
|
11
|
+
export declare const easeOutCubic: (t: number) => number;
|
12
|
+
export declare const easeInOutCubic: (t: number) => number;
|
13
|
+
export declare const easeInQuart: (t: number) => number;
|
14
|
+
export declare const easeOutQuart: (t: number) => number;
|
15
|
+
export declare const easeInOutQuart: (t: number) => number;
|
16
|
+
export declare const easeInQuint: (t: number) => number;
|
17
|
+
export declare const easeOutQuint: (t: number) => number;
|
18
|
+
export declare const easeInOutQuint: (t: number) => number;
|
19
|
+
export declare const easeInExpo: (t: number) => number;
|
20
|
+
export declare const easeOutExpo: (t: number) => number;
|
21
|
+
export declare const easeInOutExpo: (t: number) => number;
|
22
|
+
export declare const easeInCirc: (t: number) => number;
|
23
|
+
export declare const easeOutCirc: (t: number) => number;
|
24
|
+
export declare const easeInOutCirc: (t: number) => number;
|
25
|
+
export declare const easeInBack: (t: number) => number;
|
26
|
+
export declare const easeOutBack: (t: number) => number;
|
27
|
+
export declare const easeInOutBack: (t: number) => number;
|
28
|
+
export declare function easeInElastic(x: number): number;
|
29
|
+
export declare function easeOutElastic(x: number): number;
|
30
|
+
export declare function easeInOutElastic(x: number): number;
|
31
|
+
export declare function easeOutBounce(x: number): number;
|
32
|
+
export declare function easeInBounce(x: number): number;
|
33
|
+
export declare function easeInOutBounce(x: number): number;
|
@@ -0,0 +1,82 @@
|
|
1
|
+
import { cubicBezier } from './cubic-bezier.js';
|
2
|
+
/**
|
3
|
+
* @see https://easings.net
|
4
|
+
*/
|
5
|
+
export const easeInSine = cubicBezier(0.12, 0, 0.39, 0);
|
6
|
+
export const easeOutSine = cubicBezier(0.61, 1, 0.88, 1);
|
7
|
+
export const easeInOutSine = cubicBezier(0.37, 0, 0.63, 1);
|
8
|
+
export const easeInQuad = cubicBezier(0.11, 0, 0.5, 0);
|
9
|
+
export const easeOutQuad = cubicBezier(0.5, 1, 0.89, 1);
|
10
|
+
export const easeInOutQuad = cubicBezier(0.45, 0, 0.55, 1);
|
11
|
+
export const easeInCubic = cubicBezier(0.32, 0, 0.67, 0);
|
12
|
+
export const easeOutCubic = cubicBezier(0.33, 1, 0.68, 1);
|
13
|
+
export const easeInOutCubic = cubicBezier(0.65, 0, 0.35, 1);
|
14
|
+
export const easeInQuart = cubicBezier(0.5, 0, 0.75, 0);
|
15
|
+
export const easeOutQuart = cubicBezier(0.25, 1, 0.5, 1);
|
16
|
+
export const easeInOutQuart = cubicBezier(0.76, 0, 0.24, 1);
|
17
|
+
export const easeInQuint = cubicBezier(0.64, 0, 0.78, 0);
|
18
|
+
export const easeOutQuint = cubicBezier(0.22, 1, 0.36, 1);
|
19
|
+
export const easeInOutQuint = cubicBezier(0.83, 0, 0.17, 1);
|
20
|
+
export const easeInExpo = cubicBezier(0.7, 0, 0.84, 0);
|
21
|
+
export const easeOutExpo = cubicBezier(0.16, 1, 0.3, 1);
|
22
|
+
export const easeInOutExpo = cubicBezier(0.87, 0, 0.13, 1);
|
23
|
+
export const easeInCirc = cubicBezier(0.55, 0, 1, 0.45);
|
24
|
+
export const easeOutCirc = cubicBezier(0, 0.55, 0.45, 1);
|
25
|
+
export const easeInOutCirc = cubicBezier(0.85, 0, 0.15, 1);
|
26
|
+
export const easeInBack = cubicBezier(0.36, 0, 0.66, -0.56);
|
27
|
+
export const easeOutBack = cubicBezier(0.34, 1.56, 0.64, 1);
|
28
|
+
export const easeInOutBack = cubicBezier(0.68, -0.6, 0.32, 1.6);
|
29
|
+
export function easeInElastic(x) {
|
30
|
+
const c4 = (2 * Math.PI) / 3;
|
31
|
+
if (x === 0)
|
32
|
+
return 0;
|
33
|
+
if (x === 1)
|
34
|
+
return 1;
|
35
|
+
return -(2 ** (10 * x - 10)) * Math.sin((x * 10 - 10.75) * c4);
|
36
|
+
}
|
37
|
+
export function easeOutElastic(x) {
|
38
|
+
const c4 = (2 * Math.PI) / 3;
|
39
|
+
if (x === 0)
|
40
|
+
return 0;
|
41
|
+
if (x === 1)
|
42
|
+
return 1;
|
43
|
+
return 2 ** (-10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;
|
44
|
+
}
|
45
|
+
export function easeInOutElastic(x) {
|
46
|
+
const c5 = (2 * Math.PI) / 4.5;
|
47
|
+
if (x === 0)
|
48
|
+
return 0;
|
49
|
+
if (x === 1)
|
50
|
+
return 1;
|
51
|
+
if (x < 0.5) {
|
52
|
+
return (-(2 ** (20 * x - 10)) * Math.sin((20 * x - 11.125) * c5)) / 2;
|
53
|
+
}
|
54
|
+
return (2 ** (-20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;
|
55
|
+
}
|
56
|
+
export function easeOutBounce(x) {
|
57
|
+
const n1 = 7.5625;
|
58
|
+
const d1 = 2.75;
|
59
|
+
if (x < 1 / d1) {
|
60
|
+
return n1 * x * x;
|
61
|
+
}
|
62
|
+
if (x < 2 / d1) {
|
63
|
+
x -= 1.5 / d1;
|
64
|
+
return n1 * x * x + 0.75;
|
65
|
+
}
|
66
|
+
if (x < 2.5 / d1) {
|
67
|
+
x -= 2.25 / d1;
|
68
|
+
return n1 * x * x + 0.9375;
|
69
|
+
}
|
70
|
+
x -= 2.625 / d1;
|
71
|
+
return n1 * x * x + 0.984375;
|
72
|
+
}
|
73
|
+
export function easeInBounce(x) {
|
74
|
+
return 1 - easeOutBounce(1 - x);
|
75
|
+
}
|
76
|
+
export function easeInOutBounce(x) {
|
77
|
+
if (x < 0.5) {
|
78
|
+
return (1 - easeOutBounce(1 - 2 * x)) / 2;
|
79
|
+
}
|
80
|
+
return (1 + easeOutBounce(2 * x - 1)) / 2;
|
81
|
+
}
|
82
|
+
//# sourceMappingURL=penner-easing-functions.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"penner-easing-functions.js","sourceRoot":"","sources":["../../../src/easing/penner-easing-functions.ts"],"names":[],"mappings":"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","sourcesContent":["import { cubicBezier } from './cubic-bezier.js';\n\n/**\n * @see https://easings.net\n */\n\nexport const easeInSine = cubicBezier(0.12, 0, 0.39, 0);\nexport const easeOutSine = cubicBezier(0.61, 1, 0.88, 1);\nexport const easeInOutSine = cubicBezier(0.37, 0, 0.63, 1);\n\nexport const easeInQuad = cubicBezier(0.11, 0, 0.5, 0);\nexport const easeOutQuad = cubicBezier(0.5, 1, 0.89, 1);\nexport const easeInOutQuad = cubicBezier(0.45, 0, 0.55, 1);\n\nexport const easeInCubic = cubicBezier(0.32, 0, 0.67, 0);\nexport const easeOutCubic = cubicBezier(0.33, 1, 0.68, 1);\nexport const easeInOutCubic = cubicBezier(0.65, 0, 0.35, 1);\n\nexport const easeInQuart = cubicBezier(0.5, 0, 0.75, 0);\nexport const easeOutQuart = cubicBezier(0.25, 1, 0.5, 1);\nexport const easeInOutQuart = cubicBezier(0.76, 0, 0.24, 1);\n\nexport const easeInQuint = cubicBezier(0.64, 0, 0.78, 0);\nexport const easeOutQuint = cubicBezier(0.22, 1, 0.36, 1);\nexport const easeInOutQuint = cubicBezier(0.83, 0, 0.17, 1);\n\nexport const easeInExpo = cubicBezier(0.7, 0, 0.84, 0);\nexport const easeOutExpo = cubicBezier(0.16, 1, 0.3, 1);\nexport const easeInOutExpo = cubicBezier(0.87, 0, 0.13, 1);\n\nexport const easeInCirc = cubicBezier(0.55, 0, 1, 0.45);\nexport const easeOutCirc = cubicBezier(0, 0.55, 0.45, 1);\nexport const easeInOutCirc = cubicBezier(0.85, 0, 0.15, 1);\n\nexport const easeInBack = cubicBezier(0.36, 0, 0.66, -0.56);\nexport const easeOutBack = cubicBezier(0.34, 1.56, 0.64, 1);\nexport const easeInOutBack = cubicBezier(0.68, -0.6, 0.32, 1.6);\n\nexport function easeInElastic(x: number): number {\n const c4 = (2 * Math.PI) / 3;\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return -(2 ** (10 * x - 10)) * Math.sin((x * 10 - 10.75) * c4);\n}\n\nexport function easeOutElastic(x: number): number {\n const c4 = (2 * Math.PI) / 3;\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return 2 ** (-10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n}\n\nexport function easeInOutElastic(x: number): number {\n const c5 = (2 * Math.PI) / 4.5;\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n if (x < 0.5) {\n return (-(2 ** (20 * x - 10)) * Math.sin((20 * x - 11.125) * c5)) / 2;\n }\n return (2 ** (-20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n}\n\nexport function easeOutBounce(x: number): number {\n const n1 = 7.5625;\n const d1 = 2.75;\n\n if (x < 1 / d1) {\n return n1 * x * x;\n }\n if (x < 2 / d1) {\n x -= 1.5 / d1;\n return n1 * x * x + 0.75;\n }\n if (x < 2.5 / d1) {\n x -= 2.25 / d1;\n return n1 * x * x + 0.9375;\n }\n\n x -= 2.625 / d1;\n return n1 * x * x + 0.984375;\n}\n\nexport function easeInBounce(x: number): number {\n return 1 - easeOutBounce(1 - x);\n}\n\nexport function easeInOutBounce(x: number): number {\n if (x < 0.5) {\n return (1 - easeOutBounce(1 - 2 * x)) / 2;\n }\n return (1 + easeOutBounce(2 * x - 1)) / 2;\n}\n"]}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { Decimal } from 'decimal.js';
|
2
|
+
import { NumberAdapter } from './number-adapter/index.js';
|
3
|
+
import { TimeredCounter } from './timered-counter.js';
|
4
|
+
import { TimeredCounterNumber } from './timered-counter-number.js';
|
5
|
+
import { TimeredCounterString } from './timered-counter-string.js';
|
6
|
+
import { TimeredCounterDatetimeDuration } from './timered-counter-datetime-duration.js';
|
7
|
+
import { StringAdapter } from './string-adapter/index.js';
|
8
|
+
export declare function setNumberAdapter(adapterOrType: NumberAdapter | 'number' | 'decimal.js', config?: Decimal.Config): void;
|
9
|
+
export declare function setStringAdapter(adapterOrType: StringAdapter | 'string' | 'intl-segmenter' | 'grapheme-splitter'): void;
|
10
|
+
export { TimeredCounter, TimeredCounterDatetimeDuration, TimeredCounterNumber, TimeredCounterString, };
|
11
|
+
declare global {
|
12
|
+
interface HTMLElementTagNameMap {
|
13
|
+
'timered-counter': TimeredCounter;
|
14
|
+
'timered-counter-datetime-duration': TimeredCounterDatetimeDuration;
|
15
|
+
'timered-counter-number': TimeredCounterNumber;
|
16
|
+
'timered-counter-string': TimeredCounterString;
|
17
|
+
}
|
18
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { TimeredCounter } from './timered-counter.js';
|
2
|
+
import { TimeredCounterNumber } from './timered-counter-number.js';
|
3
|
+
import { TimeredCounterString } from './timered-counter-string.js';
|
4
|
+
import { TimeredCounterDatetimeDuration } from './timered-counter-datetime-duration.js';
|
5
|
+
import { CounterAdapter } from './counter-adapter.js';
|
6
|
+
export function setNumberAdapter(adapterOrType, config) {
|
7
|
+
CounterAdapter.setNumberAdapter(adapterOrType, config);
|
8
|
+
}
|
9
|
+
export function setStringAdapter(adapterOrType) {
|
10
|
+
CounterAdapter.setStringAdapter(adapterOrType);
|
11
|
+
}
|
12
|
+
export { TimeredCounter, TimeredCounterDatetimeDuration, TimeredCounterNumber, TimeredCounterString, };
|
13
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAExF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAC9B,aAAsD,EACtD,MAAuB;IAEvB,cAAc,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,aAIuB;IAEvB,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,OAAO,EACL,cAAc,EACd,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACrB,CAAC","sourcesContent":["import { Decimal } from 'decimal.js';\nimport { NumberAdapter } from './number-adapter/index.js';\nimport { TimeredCounter } from './timered-counter.js';\nimport { TimeredCounterNumber } from './timered-counter-number.js';\nimport { TimeredCounterString } from './timered-counter-string.js';\nimport { TimeredCounterDatetimeDuration } from './timered-counter-datetime-duration.js';\nimport { StringAdapter } from './string-adapter/index.js';\nimport { CounterAdapter } from './counter-adapter.js';\n\nexport function setNumberAdapter(\n adapterOrType: NumberAdapter | 'number' | 'decimal.js',\n config?: Decimal.Config,\n) {\n CounterAdapter.setNumberAdapter(adapterOrType, config);\n}\n\nexport function setStringAdapter(\n adapterOrType:\n | StringAdapter\n | 'string'\n | 'intl-segmenter'\n | 'grapheme-splitter',\n) {\n CounterAdapter.setStringAdapter(adapterOrType);\n}\n\nexport {\n TimeredCounter,\n TimeredCounterDatetimeDuration,\n TimeredCounterNumber,\n TimeredCounterString,\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'timered-counter': TimeredCounter;\n 'timered-counter-datetime-duration': TimeredCounterDatetimeDuration;\n 'timered-counter-number': TimeredCounterNumber;\n 'timered-counter-string': TimeredCounterString;\n }\n}\n"]}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { Constructor } from 'type-fest';
|
2
|
+
import { CounterPartsMixin } from './counter-parts.js';
|
3
|
+
import { AvailableNumberAdapterValueType } from '../number-adapter/index.js';
|
4
|
+
export declare class CounterAiraMixinInterface {
|
5
|
+
ariaLabel: string;
|
6
|
+
ariaLive: 'off' | 'polite' | 'assertive';
|
7
|
+
generateAriaLabel(): string;
|
8
|
+
}
|
9
|
+
export declare const CounterAiraMixin: <V extends AvailableNumberAdapterValueType, T extends ReturnType<typeof CounterPartsMixin<V>> = Constructor<import("./counter-parts.js").CounterPartsMixinInterface<V>> & Constructor<import("./counter-base.js").CounterBaseMixinInterface<V>> & Constructor<import("lit").LitElement>>(superClass: T) => Constructor<CounterAiraMixinInterface> & T;
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import { __decorate } from "tslib";
|
2
|
+
import { property } from 'lit/decorators.js';
|
3
|
+
export const CounterAiraMixin = (superClass) => {
|
4
|
+
class CounterAiraMixinClass extends superClass {
|
5
|
+
constructor() {
|
6
|
+
super(...arguments);
|
7
|
+
this.ariaLabel = '';
|
8
|
+
this.ariaLive = 'polite';
|
9
|
+
// updated(changedProperties: PropertyValues<this>) {
|
10
|
+
// if (changedProperties.has('value')) {
|
11
|
+
// this.ariaLabel = this.generateAriaLabel();
|
12
|
+
// }
|
13
|
+
// }
|
14
|
+
}
|
15
|
+
/**
|
16
|
+
* 生成 aria-label 属性值. 在每次更新完成后调用.
|
17
|
+
*/
|
18
|
+
generateAriaLabel() {
|
19
|
+
let label = '';
|
20
|
+
const { direction } = this;
|
21
|
+
for (const part of this.parts) {
|
22
|
+
for (const digit of part.digits) {
|
23
|
+
label += `${digit.data[direction === 'up' ? digit.data.length - 1 : 0]}`;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
return label;
|
27
|
+
}
|
28
|
+
willUpdate(changedProperties) {
|
29
|
+
super.willUpdate(changedProperties);
|
30
|
+
this.ariaLabel = this.generateAriaLabel();
|
31
|
+
}
|
32
|
+
}
|
33
|
+
__decorate([
|
34
|
+
property({ attribute: 'aria-label', reflect: true })
|
35
|
+
], CounterAiraMixinClass.prototype, "ariaLabel", void 0);
|
36
|
+
__decorate([
|
37
|
+
property({ attribute: 'aira-live', reflect: true })
|
38
|
+
], CounterAiraMixinClass.prototype, "ariaLive", void 0);
|
39
|
+
return CounterAiraMixinClass;
|
40
|
+
};
|
41
|
+
//# sourceMappingURL=counter-aira.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"counter-aira.js","sourceRoot":"","sources":["../../../src/mixins/counter-aira.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAa7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAM9B,UAAa,EACb,EAAE;IACF,MAAM,qBAAsB,SAAQ,UAAU;QAA9C;;YAEE,cAAS,GAAW,EAAE,CAAC;YAGvB,aAAQ,GAAmC,QAAQ,CAAC;YAwBpD,qDAAqD;YACrD,0CAA0C;YAC1C,iDAAiD;YACjD,MAAM;YACN,IAAI;QACN,CAAC;QA3BC;;WAEG;QACH,iBAAiB;YACf,IAAI,KAAK,GAAG,EAAE,CAAC;YAEf,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChC,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAEQ,UAAU,CAAC,iBAAuC;YACzD,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;YAEpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5C,CAAC;KAOF;IAhCC;QADC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4DAC9B;IAGvB;QADC,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2DACA;IA+BtD,OAAO,qBAAmE,CAAC;AAC7E,CAAC,CAAC","sourcesContent":["import { Constructor } from 'type-fest';\nimport { property } from 'lit/decorators.js';\nimport { PropertyValues } from 'lit';\nimport { CounterPartsMixin } from './counter-parts.js';\nimport { AvailableNumberAdapterValueType } from '../number-adapter/index.js';\n\nexport declare class CounterAiraMixinInterface {\n ariaLabel: string;\n\n ariaLive: 'off' | 'polite' | 'assertive';\n\n generateAriaLabel(): string;\n}\n\nexport const CounterAiraMixin = <\n V extends AvailableNumberAdapterValueType,\n T extends ReturnType<typeof CounterPartsMixin<V>> = ReturnType<\n typeof CounterPartsMixin<V>\n >,\n>(\n superClass: T,\n) => {\n class CounterAiraMixinClass extends superClass {\n @property({ attribute: 'aria-label', reflect: true })\n ariaLabel: string = '';\n\n @property({ attribute: 'aira-live', reflect: true })\n ariaLive: 'off' | 'polite' | 'assertive' = 'polite';\n\n /**\n * 生成 aria-label 属性值. 在每次更新完成后调用.\n */\n generateAriaLabel(): string {\n let label = '';\n\n const { direction } = this;\n for (const part of this.parts) {\n for (const digit of part.digits) {\n label += `${digit.data[direction === 'up' ? digit.data.length - 1 : 0]}`;\n }\n }\n\n return label;\n }\n\n override willUpdate(changedProperties: PropertyValues<this>) {\n super.willUpdate(changedProperties);\n\n this.ariaLabel = this.generateAriaLabel();\n }\n\n // updated(changedProperties: PropertyValues<this>) {\n // if (changedProperties.has('value')) {\n // this.ariaLabel = this.generateAriaLabel();\n // }\n // }\n }\n\n return CounterAiraMixinClass as Constructor<CounterAiraMixinInterface> & T;\n};\n"]}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { Constructor } from 'type-fest';
|
2
|
+
import { PartDigitGetter, PartDigitValue } from '../types/group.js';
|
3
|
+
import { CounterPartsMixin } from './counter-parts.js';
|
4
|
+
import { AvailableNumberAdapterValueType } from '../number-adapter/index.js';
|
5
|
+
export declare class CounterAnimationMixinInterface {
|
6
|
+
animationOptions: PartDigitValue<KeyframeAnimationOptions>;
|
7
|
+
animationOptionsDynamic?: PartDigitGetter<KeyframeAnimationOptions>;
|
8
|
+
extractAnimationOptions(): KeyframeAnimationOptions[][];
|
9
|
+
keyframes: PartDigitValue<PropertyIndexedKeyframes>;
|
10
|
+
keyframesDynamic?: PartDigitGetter<PropertyIndexedKeyframes>;
|
11
|
+
extractKeyframes(): PropertyIndexedKeyframes[][];
|
12
|
+
}
|
13
|
+
export declare const CounterAnimationMixin: <V extends AvailableNumberAdapterValueType, T extends ReturnType<typeof CounterPartsMixin<V>> = Constructor<import("./counter-parts.js").CounterPartsMixinInterface<V>> & Constructor<import("./counter-base.js").CounterBaseMixinInterface<V>> & Constructor<import("lit").LitElement>>(superClass: T) => Constructor<CounterAnimationMixinInterface> & T;
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import { __decorate } from "tslib";
|
2
|
+
import { property } from 'lit/decorators.js';
|
3
|
+
import { isDeepEqual } from 'remeda';
|
4
|
+
import { extractPartDigitOption, mergePartDigitOption, } from '../utils/extract-group-option.js';
|
5
|
+
export const CounterAnimationMixin = (superClass) => {
|
6
|
+
class CounterAnimationMixinClass extends superClass {
|
7
|
+
constructor() {
|
8
|
+
super(...arguments);
|
9
|
+
/**
|
10
|
+
* 传递给 Web Animations API 的选项.
|
11
|
+
*/
|
12
|
+
this.animationOptions = {};
|
13
|
+
this.cachedAnimationOptions = [];
|
14
|
+
/**
|
15
|
+
* 传递给 Web Animations API 的关键帧配置.
|
16
|
+
*/
|
17
|
+
this.keyframes = {};
|
18
|
+
this.cachedKeyframes = [];
|
19
|
+
}
|
20
|
+
extractAnimationOptions() {
|
21
|
+
const getterOptions = {
|
22
|
+
preprocessData: this.partPreprocessDataList,
|
23
|
+
data: this.parts,
|
24
|
+
direction: this.direction,
|
25
|
+
value: [this.value, this.oldValue],
|
26
|
+
};
|
27
|
+
const result = mergePartDigitOption(extractPartDigitOption(this.animationOptions ?? {}, getterOptions), extractPartDigitOption(this.animationOptionsDynamic ?? {}, getterOptions));
|
28
|
+
if (!isDeepEqual(this.cachedAnimationOptions, result)) {
|
29
|
+
this.cachedAnimationOptions = result;
|
30
|
+
}
|
31
|
+
return this.cachedAnimationOptions;
|
32
|
+
}
|
33
|
+
extractKeyframes() {
|
34
|
+
const getterOptions = {
|
35
|
+
preprocessData: this.partPreprocessDataList,
|
36
|
+
data: this.parts,
|
37
|
+
direction: this.direction,
|
38
|
+
value: [this.value, this.oldValue],
|
39
|
+
};
|
40
|
+
const result = mergePartDigitOption(extractPartDigitOption(this.keyframes ?? {}, getterOptions), extractPartDigitOption(this.keyframesDynamic ?? {}, getterOptions));
|
41
|
+
if (!isDeepEqual(this.cachedKeyframes, result)) {
|
42
|
+
this.cachedKeyframes = result;
|
43
|
+
}
|
44
|
+
return this.cachedKeyframes;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
__decorate([
|
48
|
+
property({ type: Object, attribute: 'animation-options', reflect: true })
|
49
|
+
], CounterAnimationMixinClass.prototype, "animationOptions", void 0);
|
50
|
+
__decorate([
|
51
|
+
property({ type: Object, attribute: 'keyframes', reflect: true })
|
52
|
+
], CounterAnimationMixinClass.prototype, "keyframes", void 0);
|
53
|
+
return CounterAnimationMixinClass;
|
54
|
+
};
|
55
|
+
//# sourceMappingURL=counter-animation.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"counter-animation.js","sourceRoot":"","sources":["../../../src/mixins/counter-animation.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAMrC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAkB1C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAMnC,UAAa,EACb,EAAE;IACF,MAAM,0BAA2B,SAAQ,UAAU;QAAnD;;YACE;;eAEG;YAEH,qBAAgB,GAA6C,EAAE,CAAC;YAIxD,2BAAsB,GAC5B,EAAE,CAAC;YAwBL;;eAEG;YAEH,cAAS,GAA6C,EAAE,CAAC;YAIjD,oBAAe,GAA+C,EAAE,CAAC;QAuB3E,CAAC;QArDC,uBAAuB;YACrB,MAAM,aAAa,GAAuB;gBACxC,cAAc,EAAE,IAAI,CAAC,sBAAsB;gBAC3C,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;aACnC,CAAC;YACF,MAAM,MAAM,GAAG,oBAAoB,CACjC,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,EAAE,aAAa,CAAC,EAClE,sBAAsB,CACpB,IAAI,CAAC,uBAAuB,IAAI,EAAE,EAClC,aAAa,CACd,CACF,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC;YACvC,CAAC;YAED,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACrC,CAAC;QAYD,gBAAgB;YACd,MAAM,aAAa,GAAuB;gBACxC,cAAc,EAAE,IAAI,CAAC,sBAAsB;gBAC3C,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;aACnC,CAAC;YACF,MAAM,MAAM,GAAG,oBAAoB,CACjC,sBAAsB,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,CAAC,EAC3D,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,EAAE,aAAa,CAAC,CACnE,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,eAAe,GAAG,MAGlB,CAAC;YACR,CAAC;YAED,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;KACF;IA5DC;QADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;wEACV;IAiChE;QADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iEACT;IA6B3D,OAAO,0BACJ,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { Constructor } from 'type-fest';\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport {\n GroupGetterOptions,\n PartDigitGetter,\n PartDigitValue,\n} from '../types/group.js';\nimport {\n extractPartDigitOption,\n mergePartDigitOption,\n} from '../utils/extract-group-option.js';\nimport { CounterPartsMixin } from './counter-parts.js';\nimport { AvailableNumberAdapterValueType } from '../number-adapter/index.js';\n\nexport declare class CounterAnimationMixinInterface {\n animationOptions: PartDigitValue<KeyframeAnimationOptions>;\n\n animationOptionsDynamic?: PartDigitGetter<KeyframeAnimationOptions>;\n\n extractAnimationOptions(): KeyframeAnimationOptions[][];\n\n keyframes: PartDigitValue<PropertyIndexedKeyframes>;\n\n keyframesDynamic?: PartDigitGetter<PropertyIndexedKeyframes>;\n\n extractKeyframes(): PropertyIndexedKeyframes[][];\n}\n\nexport const CounterAnimationMixin = <\n V extends AvailableNumberAdapterValueType,\n T extends ReturnType<typeof CounterPartsMixin<V>> = ReturnType<\n typeof CounterPartsMixin<V>\n >,\n>(\n superClass: T,\n) => {\n class CounterAnimationMixinClass extends superClass {\n /**\n * 传递给 Web Animations API 的选项.\n */\n @property({ type: Object, attribute: 'animation-options', reflect: true })\n animationOptions: PartDigitValue<KeyframeAnimationOptions> = {};\n\n animationOptionsDynamic?: PartDigitGetter<KeyframeAnimationOptions>;\n\n private cachedAnimationOptions: (KeyframeAnimationOptions | undefined)[][] =\n [];\n\n extractAnimationOptions() {\n const getterOptions: GroupGetterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(\n extractPartDigitOption(this.animationOptions ?? {}, getterOptions),\n extractPartDigitOption(\n this.animationOptionsDynamic ?? {},\n getterOptions,\n ),\n );\n\n if (!isDeepEqual(this.cachedAnimationOptions, result)) {\n this.cachedAnimationOptions = result;\n }\n\n return this.cachedAnimationOptions;\n }\n\n /**\n * 传递给 Web Animations API 的关键帧配置.\n */\n @property({ type: Object, attribute: 'keyframes', reflect: true })\n keyframes: PartDigitValue<PropertyIndexedKeyframes> = {};\n\n keyframesDynamic?: PartDigitGetter<PropertyIndexedKeyframes>;\n\n private cachedKeyframes: (PropertyIndexedKeyframes | undefined)[][] = [];\n\n extractKeyframes() {\n const getterOptions: GroupGetterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(\n extractPartDigitOption(this.keyframes ?? {}, getterOptions),\n extractPartDigitOption(this.keyframesDynamic ?? {}, getterOptions),\n );\n\n if (!isDeepEqual(this.cachedKeyframes, result)) {\n this.cachedKeyframes = result as (\n | PropertyIndexedKeyframes\n | undefined\n )[][];\n }\n\n return this.cachedKeyframes;\n }\n }\n\n return CounterAnimationMixinClass as Constructor<CounterAnimationMixinInterface> &\n T;\n};\n"]}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { LitElement } from 'lit';
|
2
|
+
import { Constructor } from 'type-fest';
|
3
|
+
import { NumberAdapter, AvailableNumberAdapterValueType } from '../number-adapter/index.js';
|
4
|
+
import { StringAdapter } from '../string-adapter/index.js';
|
5
|
+
export declare class CounterBaseMixinInterface<V extends AvailableNumberAdapterValueType> {
|
6
|
+
static NUMBER_ADAPTER: NumberAdapter;
|
7
|
+
static STRING_ADAPTER: StringAdapter;
|
8
|
+
get value(): V;
|
9
|
+
set value(value: V);
|
10
|
+
get oldValue(): V;
|
11
|
+
set oldValue(value: V);
|
12
|
+
get initialValue(): V;
|
13
|
+
set initialValue(value: V);
|
14
|
+
direction: 'up' | 'down';
|
15
|
+
oldDirection: 'up' | 'down';
|
16
|
+
locale: Intl.UnicodeBCP47LocaleIdentifier | [Intl.UnicodeBCP47LocaleIdentifier, Intl.LocaleOptions];
|
17
|
+
localeInstance: Intl.Locale;
|
18
|
+
numberAdapter: NumberAdapter;
|
19
|
+
stringAdapter: StringAdapter;
|
20
|
+
}
|
21
|
+
export declare const CounterBaseMixin: <V extends AvailableNumberAdapterValueType, T extends Constructor<LitElement> = Constructor<LitElement>>(superClass: T) => Constructor<CounterBaseMixinInterface<V>> & T;
|