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.
Files changed (206) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +76 -0
  3. package/dist/custom-elements.json +8484 -0
  4. package/dist/src/counter-adapter.d.ts +38 -0
  5. package/dist/src/counter-adapter.js +69 -0
  6. package/dist/src/counter-adapter.js.map +1 -0
  7. package/dist/src/easing/cubic-bezier.d.ts +5 -0
  8. package/dist/src/easing/cubic-bezier.js +35 -0
  9. package/dist/src/easing/cubic-bezier.js.map +1 -0
  10. package/dist/src/easing/easing-functions.d.ts +1 -0
  11. package/dist/src/easing/easing-functions.js +10 -0
  12. package/dist/src/easing/easing-functions.js.map +1 -0
  13. package/dist/src/easing/index.d.ts +2 -0
  14. package/dist/src/easing/index.js +3 -0
  15. package/dist/src/easing/index.js.map +1 -0
  16. package/dist/src/easing/penner-easing-functions.d.ts +33 -0
  17. package/dist/src/easing/penner-easing-functions.js +82 -0
  18. package/dist/src/easing/penner-easing-functions.js.map +1 -0
  19. package/dist/src/index.d.ts +18 -0
  20. package/dist/src/index.js +13 -0
  21. package/dist/src/index.js.map +1 -0
  22. package/dist/src/mixins/counter-aira.d.ts +9 -0
  23. package/dist/src/mixins/counter-aira.js +41 -0
  24. package/dist/src/mixins/counter-aira.js.map +1 -0
  25. package/dist/src/mixins/counter-animation.d.ts +13 -0
  26. package/dist/src/mixins/counter-animation.js +55 -0
  27. package/dist/src/mixins/counter-animation.js.map +1 -0
  28. package/dist/src/mixins/counter-base.d.ts +21 -0
  29. package/dist/src/mixins/counter-base.js +152 -0
  30. package/dist/src/mixins/counter-base.js.map +1 -0
  31. package/dist/src/mixins/counter-parts.d.ts +42 -0
  32. package/dist/src/mixins/counter-parts.js +180 -0
  33. package/dist/src/mixins/counter-parts.js.map +1 -0
  34. package/dist/src/mixins/counter-styles.d.ts +17 -0
  35. package/dist/src/mixins/counter-styles.js +93 -0
  36. package/dist/src/mixins/counter-styles.js.map +1 -0
  37. package/dist/src/number-adapter/build-in-bigint.d.ts +6 -0
  38. package/dist/src/number-adapter/build-in-bigint.js +92 -0
  39. package/dist/src/number-adapter/build-in-bigint.js.map +1 -0
  40. package/dist/src/number-adapter/build-in-number.d.ts +3 -0
  41. package/dist/src/number-adapter/build-in-number.js +84 -0
  42. package/dist/src/number-adapter/build-in-number.js.map +1 -0
  43. package/dist/src/number-adapter/decimal-js.d.ts +4 -0
  44. package/dist/src/number-adapter/decimal-js.js +87 -0
  45. package/dist/src/number-adapter/decimal-js.js.map +1 -0
  46. package/dist/src/number-adapter/index.d.ts +4 -0
  47. package/dist/src/number-adapter/index.js +5 -0
  48. package/dist/src/number-adapter/index.js.map +1 -0
  49. package/dist/src/number-adapter/types.d.ts +34 -0
  50. package/dist/src/number-adapter/types.js +2 -0
  51. package/dist/src/number-adapter/types.js.map +1 -0
  52. package/dist/src/string-adapter/build-in-intl-segmenter.d.ts +10 -0
  53. package/dist/src/string-adapter/build-in-intl-segmenter.js +18 -0
  54. package/dist/src/string-adapter/build-in-intl-segmenter.js.map +1 -0
  55. package/dist/src/string-adapter/build-in-string.d.ts +12 -0
  56. package/dist/src/string-adapter/build-in-string.js +16 -0
  57. package/dist/src/string-adapter/build-in-string.js.map +1 -0
  58. package/dist/src/string-adapter/grapheme-splitter.d.ts +8 -0
  59. package/dist/src/string-adapter/grapheme-splitter.js +16 -0
  60. package/dist/src/string-adapter/grapheme-splitter.js.map +1 -0
  61. package/dist/src/string-adapter/index.d.ts +4 -0
  62. package/dist/src/string-adapter/index.js +5 -0
  63. package/dist/src/string-adapter/index.js.map +1 -0
  64. package/dist/src/string-adapter/types.d.ts +19 -0
  65. package/dist/src/string-adapter/types.js +2 -0
  66. package/dist/src/string-adapter/types.js.map +1 -0
  67. package/dist/src/styles/timered-counter-datetime-styles.d.ts +1 -0
  68. package/dist/src/styles/timered-counter-datetime-styles.js +8 -0
  69. package/dist/src/styles/timered-counter-datetime-styles.js.map +1 -0
  70. package/dist/src/styles/timered-counter-number-styles.d.ts +1 -0
  71. package/dist/src/styles/timered-counter-number-styles.js +3 -0
  72. package/dist/src/styles/timered-counter-number-styles.js.map +1 -0
  73. package/dist/src/styles/timered-counter-string-styles.d.ts +1 -0
  74. package/dist/src/styles/timered-counter-string-styles.js +3 -0
  75. package/dist/src/styles/timered-counter-string-styles.js.map +1 -0
  76. package/dist/src/styles/timered-counter-styles.d.ts +1 -0
  77. package/dist/src/styles/timered-counter-styles.js +25 -0
  78. package/dist/src/styles/timered-counter-styles.js.map +1 -0
  79. package/dist/src/timered-counter-datetime-duration.d.ts +37 -0
  80. package/dist/src/timered-counter-datetime-duration.js +186 -0
  81. package/dist/src/timered-counter-datetime-duration.js.map +1 -0
  82. package/dist/src/timered-counter-number.d.ts +23 -0
  83. package/dist/src/timered-counter-number.js +114 -0
  84. package/dist/src/timered-counter-number.js.map +1 -0
  85. package/dist/src/timered-counter-string.d.ts +30 -0
  86. package/dist/src/timered-counter-string.js +138 -0
  87. package/dist/src/timered-counter-string.js.map +1 -0
  88. package/dist/src/timered-counter.d.ts +15 -0
  89. package/dist/src/timered-counter.js +80 -0
  90. package/dist/src/timered-counter.js.map +1 -0
  91. package/dist/src/transitions/roller/index.d.ts +1 -0
  92. package/dist/src/transitions/roller/index.js +2 -0
  93. package/dist/src/transitions/roller/index.js.map +1 -0
  94. package/dist/src/transitions/roller/roller-digit.d.ts +28 -0
  95. package/dist/src/transitions/roller/roller-digit.js +259 -0
  96. package/dist/src/transitions/roller/roller-digit.js.map +1 -0
  97. package/dist/src/transitions/roller/roller.d.ts +42 -0
  98. package/dist/src/transitions/roller/roller.js +235 -0
  99. package/dist/src/transitions/roller/roller.js.map +1 -0
  100. package/dist/src/transitions/roller/styles.d.ts +2 -0
  101. package/dist/src/transitions/roller/styles.js +77 -0
  102. package/dist/src/transitions/roller/styles.js.map +1 -0
  103. package/dist/src/types/duration.d.ts +33 -0
  104. package/dist/src/types/duration.js +35 -0
  105. package/dist/src/types/duration.js.map +1 -0
  106. package/dist/src/types/group.d.ts +67 -0
  107. package/dist/src/types/group.js +2 -0
  108. package/dist/src/types/group.js.map +1 -0
  109. package/dist/src/utils/any-base.d.ts +6 -0
  110. package/dist/src/utils/any-base.js +56 -0
  111. package/dist/src/utils/any-base.js.map +1 -0
  112. package/dist/src/utils/duration.d.ts +15 -0
  113. package/dist/src/utils/duration.js +66 -0
  114. package/dist/src/utils/duration.js.map +1 -0
  115. package/dist/src/utils/extract-group-option.d.ts +9 -0
  116. package/dist/src/utils/extract-group-option.js +81 -0
  117. package/dist/src/utils/extract-group-option.js.map +1 -0
  118. package/dist/src/utils/iso8601-duration.d.ts +4 -0
  119. package/dist/src/utils/iso8601-duration.js +32 -0
  120. package/dist/src/utils/iso8601-duration.js.map +1 -0
  121. package/dist/src/utils/localized-date-time-fields.d.ts +2 -0
  122. package/dist/src/utils/localized-date-time-fields.js +24 -0
  123. package/dist/src/utils/localized-date-time-fields.js.map +1 -0
  124. package/dist/src/utils/parse-json-string.d.ts +1 -0
  125. package/dist/src/utils/parse-json-string.js +9 -0
  126. package/dist/src/utils/parse-json-string.js.map +1 -0
  127. package/dist/src/utils/polyfill-keyframes.d.ts +1 -0
  128. package/dist/src/utils/polyfill-keyframes.js +19 -0
  129. package/dist/src/utils/polyfill-keyframes.js.map +1 -0
  130. package/dist/src/utils/preprocess-part-data.d.ts +25 -0
  131. package/dist/src/utils/preprocess-part-data.js +59 -0
  132. package/dist/src/utils/preprocess-part-data.js.map +1 -0
  133. package/dist/src/utils/transition-digit.d.ts +2 -0
  134. package/dist/src/utils/transition-digit.js +51 -0
  135. package/dist/src/utils/transition-digit.js.map +1 -0
  136. package/dist/src/utils/uuid.d.ts +1 -0
  137. package/dist/src/utils/uuid.js +7 -0
  138. package/dist/src/utils/uuid.js.map +1 -0
  139. package/dist/stories/story-parts/animation-events.d.ts +9 -0
  140. package/dist/stories/story-parts/animation-events.js +35 -0
  141. package/dist/stories/story-parts/animation-events.js.map +1 -0
  142. package/dist/stories/story-parts/animation-options.d.ts +8 -0
  143. package/dist/stories/story-parts/animation-options.js +25 -0
  144. package/dist/stories/story-parts/animation-options.js.map +1 -0
  145. package/dist/stories/story-parts/big-number.d.ts +8 -0
  146. package/dist/stories/story-parts/big-number.js +25 -0
  147. package/dist/stories/story-parts/big-number.js.map +1 -0
  148. package/dist/stories/story-parts/datetime-locale.d.ts +8 -0
  149. package/dist/stories/story-parts/datetime-locale.js +30 -0
  150. package/dist/stories/story-parts/datetime-locale.js.map +1 -0
  151. package/dist/stories/story-parts/datetime-precision.d.ts +8 -0
  152. package/dist/stories/story-parts/datetime-precision.js +82 -0
  153. package/dist/stories/story-parts/datetime-precision.js.map +1 -0
  154. package/dist/stories/story-parts/edge-case.d.ts +8 -0
  155. package/dist/stories/story-parts/edge-case.js +12 -0
  156. package/dist/stories/story-parts/edge-case.js.map +1 -0
  157. package/dist/stories/story-parts/emoji.d.ts +9 -0
  158. package/dist/stories/story-parts/emoji.js +20 -0
  159. package/dist/stories/story-parts/emoji.js.map +1 -0
  160. package/dist/stories/story-parts/locale-number.d.ts +7 -0
  161. package/dist/stories/story-parts/locale-number.js +23 -0
  162. package/dist/stories/story-parts/locale-number.js.map +1 -0
  163. package/dist/stories/story-parts/slots.d.ts +10 -0
  164. package/dist/stories/story-parts/slots.js +29 -0
  165. package/dist/stories/story-parts/slots.js.map +1 -0
  166. package/dist/stories/story-parts/styles.d.ts +7 -0
  167. package/dist/stories/story-parts/styles.js +34 -0
  168. package/dist/stories/story-parts/styles.js.map +1 -0
  169. package/dist/stories/story-parts/value-change.d.ts +9 -0
  170. package/dist/stories/story-parts/value-change.js +20 -0
  171. package/dist/stories/story-parts/value-change.js.map +1 -0
  172. package/dist/stories/timered-counter/decimaljs.stories.d.ts +6 -0
  173. package/dist/stories/timered-counter/decimaljs.stories.js +34 -0
  174. package/dist/stories/timered-counter/decimaljs.stories.js.map +1 -0
  175. package/dist/stories/timered-counter/index.stories.d.ts +9 -0
  176. package/dist/stories/timered-counter/index.stories.js +180 -0
  177. package/dist/stories/timered-counter/index.stories.js.map +1 -0
  178. package/dist/stories/timered-counter-datetime-duration/index.stories.d.ts +7 -0
  179. package/dist/stories/timered-counter-datetime-duration/index.stories.js +95 -0
  180. package/dist/stories/timered-counter-datetime-duration/index.stories.js.map +1 -0
  181. package/dist/stories/timered-counter-number/decimaljs.stories.d.ts +6 -0
  182. package/dist/stories/timered-counter-number/decimaljs.stories.js +34 -0
  183. package/dist/stories/timered-counter-number/decimaljs.stories.js.map +1 -0
  184. package/dist/stories/timered-counter-number/index.stories.d.ts +9 -0
  185. package/dist/stories/timered-counter-number/index.stories.js +188 -0
  186. package/dist/stories/timered-counter-number/index.stories.js.map +1 -0
  187. package/dist/stories/timered-counter-string/decimaljs.stories.d.ts +7 -0
  188. package/dist/stories/timered-counter-string/decimaljs.stories.js +55 -0
  189. package/dist/stories/timered-counter-string/decimaljs.stories.js.map +1 -0
  190. package/dist/stories/timered-counter-string/grapheme-splitter.stories.d.ts +7 -0
  191. package/dist/stories/timered-counter-string/grapheme-splitter.stories.js +56 -0
  192. package/dist/stories/timered-counter-string/grapheme-splitter.stories.js.map +1 -0
  193. package/dist/stories/timered-counter-string/index.stories.d.ts +9 -0
  194. package/dist/stories/timered-counter-string/index.stories.js +126 -0
  195. package/dist/stories/timered-counter-string/index.stories.js.map +1 -0
  196. package/dist/stories/timered-counter-string/intl-segmenter.stories.d.ts +7 -0
  197. package/dist/stories/timered-counter-string/intl-segmenter.stories.js +56 -0
  198. package/dist/stories/timered-counter-string/intl-segmenter.stories.js.map +1 -0
  199. package/dist/stories/utils/index.d.ts +8 -0
  200. package/dist/stories/utils/index.js +20 -0
  201. package/dist/stories/utils/index.js.map +1 -0
  202. package/dist/test/td-counter.test.d.ts +1 -0
  203. package/dist/test/td-counter.test.js +25 -0
  204. package/dist/test/td-counter.test.js.map +1 -0
  205. package/dist/tsconfig.tsbuildinfo +1 -0
  206. package/package.json +128 -0
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @deprecated
3
+ */
4
+ const BuildInBigintAdapter = () => ({
5
+ create(value) {
6
+ return BigInt(value);
7
+ },
8
+ add(a, b) {
9
+ return a + b;
10
+ },
11
+ sub(a, b) {
12
+ return a - b;
13
+ },
14
+ mul(a, b) {
15
+ if (typeof b === "bigint")
16
+ return a * b;
17
+ // b 是 number 时
18
+ const decimalPlaces = b.toString().split(".")[1]?.length || 0;
19
+ const base = 10 ** decimalPlaces;
20
+ return (a * BigInt(b * base)) / BigInt(base);
21
+ },
22
+ div(a, b) {
23
+ return a / b;
24
+ },
25
+ compare(a, b) {
26
+ if (a > b)
27
+ return 1;
28
+ else if (a < b)
29
+ return -1;
30
+ else
31
+ return 0;
32
+ },
33
+ eq(a, b) {
34
+ return a === b;
35
+ },
36
+ gt(a, b) {
37
+ return a > b;
38
+ },
39
+ gte(a, b) {
40
+ return a >= b;
41
+ },
42
+ lt(a, b) {
43
+ return a < b;
44
+ },
45
+ lte(a, b) {
46
+ return a <= b;
47
+ },
48
+ isInteger() {
49
+ return true;
50
+ },
51
+ isNegative(a) {
52
+ return a < 0n;
53
+ },
54
+ isPositive(a) {
55
+ return a > 0n;
56
+ },
57
+ isZero(a) {
58
+ return a === 0n;
59
+ },
60
+ isNaN() {
61
+ return false;
62
+ },
63
+ isFinite() {
64
+ return true;
65
+ },
66
+ abs(a) {
67
+ return a < 0n ? -a : a;
68
+ },
69
+ ceil(a) {
70
+ return a;
71
+ },
72
+ floor(a) {
73
+ return a;
74
+ },
75
+ round(a) {
76
+ return a;
77
+ },
78
+ max(a, b) {
79
+ return a > b ? a : b;
80
+ },
81
+ min(a, b) {
82
+ return a < b ? a : b;
83
+ },
84
+ toNumber(a) {
85
+ return Number(a);
86
+ },
87
+ toString(a) {
88
+ return a.toString();
89
+ },
90
+ });
91
+ export { BuildInBigintAdapter };
92
+ //# sourceMappingURL=build-in-bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-in-bigint.js","sourceRoot":"","sources":["../../../src/number-adapter/build-in-bigint.ts"],"names":[],"mappings":"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","sourcesContent":["import { NumberAdapter } from \"./types.js\";\n\n/**\n * @deprecated\n */\nconst BuildInBigintAdapter: () => NumberAdapter<bigint> = () => ({\n create(value: string | number | bigint): bigint {\n return BigInt(value);\n },\n add(a, b) {\n return a + b;\n },\n sub(a, b) {\n return a - b;\n },\n mul(a, b) {\n if (typeof b === \"bigint\") return a * b;\n\n // b 是 number 时\n const decimalPlaces = b.toString().split(\".\")[1]?.length || 0;\n const base = 10 ** decimalPlaces;\n return (a * BigInt(b * base)) / BigInt(base);\n },\n div(a, b) {\n return a / b;\n },\n compare(a, b) {\n if (a > b) return 1;\n else if (a < b) return -1;\n else return 0;\n },\n eq(a, b) {\n return a === b;\n },\n gt(a, b) {\n return a > b;\n },\n gte(a, b) {\n return a >= b;\n },\n lt(a, b) {\n return a < b;\n },\n lte(a, b) {\n return a <= b;\n },\n isInteger() {\n return true;\n },\n isNegative(a) {\n return a < 0n;\n },\n isPositive(a) {\n return a > 0n;\n },\n isZero(a) {\n return a === 0n;\n },\n isNaN() {\n return false;\n },\n isFinite() {\n return true;\n },\n abs(a) {\n return a < 0n ? -a : a;\n },\n ceil(a) {\n return a;\n },\n floor(a) {\n return a;\n },\n round(a) {\n return a;\n },\n max(a, b) {\n return a > b ? a : b;\n },\n min(a, b) {\n return a < b ? a : b;\n },\n toNumber(a) {\n return Number(a);\n },\n toString(a) {\n return a.toString();\n },\n});\n\nexport { BuildInBigintAdapter };\n"]}
@@ -0,0 +1,3 @@
1
+ import { NumberAdapter } from './types.js';
2
+ declare const BuildInNumberAdapter: () => NumberAdapter<number>;
3
+ export { BuildInNumberAdapter };
@@ -0,0 +1,84 @@
1
+ const BuildInNumberAdapter = () => ({
2
+ create(value) {
3
+ const num = Number(value);
4
+ return Number.isFinite(num) ? num : 0;
5
+ },
6
+ add(a, b) {
7
+ return a + b;
8
+ },
9
+ sub(a, b) {
10
+ return a - b;
11
+ },
12
+ mul(a, b) {
13
+ return a * b;
14
+ },
15
+ div(a, b) {
16
+ return a / b;
17
+ },
18
+ compare(a, b) {
19
+ if (a > b)
20
+ return 1;
21
+ if (a < b)
22
+ return -1;
23
+ return 0;
24
+ },
25
+ eq(a, b) {
26
+ return a === b;
27
+ },
28
+ gt(a, b) {
29
+ return a > b;
30
+ },
31
+ gte(a, b) {
32
+ return a >= b;
33
+ },
34
+ lt(a, b) {
35
+ return a < b;
36
+ },
37
+ lte(a, b) {
38
+ return a <= b;
39
+ },
40
+ isInteger(a) {
41
+ return Number.isInteger(a);
42
+ },
43
+ isNegative(a) {
44
+ return a < 0;
45
+ },
46
+ isPositive(a) {
47
+ return a > 0;
48
+ },
49
+ isZero(a) {
50
+ return a === 0;
51
+ },
52
+ isNaN(a) {
53
+ return Number.isNaN(a);
54
+ },
55
+ isFinite(a) {
56
+ return Number.isFinite(a);
57
+ },
58
+ abs(a) {
59
+ return Math.abs(a);
60
+ },
61
+ ceil(a) {
62
+ return Math.ceil(a);
63
+ },
64
+ floor(a) {
65
+ return Math.floor(a);
66
+ },
67
+ round(a) {
68
+ return Math.round(a);
69
+ },
70
+ max(a, b) {
71
+ return Math.max(a, b);
72
+ },
73
+ min(a, b) {
74
+ return Math.min(a, b);
75
+ },
76
+ toNumber(a) {
77
+ return Number(a);
78
+ },
79
+ toString(a) {
80
+ return String(a);
81
+ },
82
+ });
83
+ export { BuildInNumberAdapter };
84
+ //# sourceMappingURL=build-in-number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-in-number.js","sourceRoot":"","sources":["../../../src/number-adapter/build-in-number.ts"],"names":[],"mappings":"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","sourcesContent":["import { NumberAdapter } from './types.js';\n\nconst BuildInNumberAdapter: () => NumberAdapter<number> = () => ({\n create(value: string | number): number {\n const num = Number(value);\n return Number.isFinite(num) ? num : 0;\n },\n add(a, b) {\n return a + b;\n },\n sub(a, b) {\n return a - b;\n },\n mul(a, b) {\n return a * b;\n },\n div(a, b) {\n return a / b;\n },\n compare(a, b) {\n if (a > b) return 1;\n if (a < b) return -1;\n return 0;\n },\n eq(a, b) {\n return a === b;\n },\n gt(a, b) {\n return a > b;\n },\n gte(a, b) {\n return a >= b;\n },\n lt(a, b) {\n return a < b;\n },\n lte(a, b) {\n return a <= b;\n },\n isInteger(a) {\n return Number.isInteger(a);\n },\n isNegative(a) {\n return a < 0;\n },\n isPositive(a) {\n return a > 0;\n },\n isZero(a) {\n return a === 0;\n },\n isNaN(a) {\n return Number.isNaN(a);\n },\n isFinite(a) {\n return Number.isFinite(a);\n },\n abs(a) {\n return Math.abs(a);\n },\n ceil(a) {\n return Math.ceil(a);\n },\n floor(a) {\n return Math.floor(a);\n },\n round(a) {\n return Math.round(a);\n },\n max(a, b) {\n return Math.max(a, b);\n },\n min(a, b) {\n return Math.min(a, b);\n },\n toNumber(a) {\n return Number(a);\n },\n toString(a) {\n return String(a);\n },\n});\n\nexport { BuildInNumberAdapter };\n"]}
@@ -0,0 +1,4 @@
1
+ import { Decimal } from 'decimal.js';
2
+ import { NumberAdapter } from './types.js';
3
+ declare const DecimalJsAdapter: (config?: Decimal.Config) => NumberAdapter<Decimal>;
4
+ export { DecimalJsAdapter };
@@ -0,0 +1,87 @@
1
+ import { Decimal } from 'decimal.js';
2
+ import { isString } from 'remeda';
3
+ const numberRegex = /^-?\d+(\.\d+)?$/;
4
+ const DecimalJsAdapter = (config = { precision: 1e3 }) => {
5
+ const InnerDecimal = Decimal.clone(config);
6
+ return {
7
+ create(value) {
8
+ if (isString(value) && !numberRegex.test(value))
9
+ value = 0;
10
+ return new InnerDecimal(value);
11
+ },
12
+ add(a, b) {
13
+ return a.plus(b);
14
+ },
15
+ sub(a, b) {
16
+ return a.minus(b);
17
+ },
18
+ mul(a, b) {
19
+ return a.times(b);
20
+ },
21
+ div(a, b) {
22
+ return a.div(b);
23
+ },
24
+ compare(a, b) {
25
+ return a.cmp(b);
26
+ },
27
+ eq(a, b) {
28
+ return a.eq(b);
29
+ },
30
+ gt(a, b) {
31
+ return a.gt(b);
32
+ },
33
+ gte(a, b) {
34
+ return a.gte(b);
35
+ },
36
+ lt(a, b) {
37
+ return a.lt(b);
38
+ },
39
+ lte(a, b) {
40
+ return a.lte(b);
41
+ },
42
+ isInteger(a) {
43
+ return a.isInteger();
44
+ },
45
+ isNegative(a) {
46
+ return a.isNegative();
47
+ },
48
+ isPositive(a) {
49
+ return a.isPositive();
50
+ },
51
+ isZero(a) {
52
+ return a.isZero();
53
+ },
54
+ isNaN(a) {
55
+ return a.isNaN();
56
+ },
57
+ isFinite(a) {
58
+ return a.isFinite();
59
+ },
60
+ abs(a) {
61
+ return a.abs();
62
+ },
63
+ ceil(a) {
64
+ return a.ceil();
65
+ },
66
+ floor(a) {
67
+ return a.floor();
68
+ },
69
+ round(a) {
70
+ return a.round();
71
+ },
72
+ max(a, b) {
73
+ return InnerDecimal.max(a, b);
74
+ },
75
+ min(a, b) {
76
+ return InnerDecimal.min(a, b);
77
+ },
78
+ toNumber(a) {
79
+ return a.toNumber();
80
+ },
81
+ toString(a) {
82
+ return a.toFixed();
83
+ },
84
+ };
85
+ };
86
+ export { DecimalJsAdapter };
87
+ //# sourceMappingURL=decimal-js.js.map
@@ -0,0 +1 @@
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 { NumberAdapter } from './types.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 { DecimalJsAdapter };\n"]}
@@ -0,0 +1,4 @@
1
+ export * from "./types.js";
2
+ export * from "./build-in-number.js";
3
+ export * from "./build-in-bigint.js";
4
+ export * from "./decimal-js.js";
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./build-in-number.js";
3
+ export * from "./build-in-bigint.js";
4
+ export * from "./decimal-js.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AACrC,cAAc,iBAAiB,CAAC","sourcesContent":["export * from \"./types.js\";\nexport * from \"./build-in-number.js\";\nexport * from \"./build-in-bigint.js\";\nexport * from \"./decimal-js.js\";\n"]}
@@ -0,0 +1,34 @@
1
+ import { BuildInNumberAdapter } from './build-in-number.js';
2
+ import { DecimalJsAdapter } from './decimal-js.js';
3
+ /**
4
+ * 可以使用不同数字类型, 如 int, ~~bigint~~, decimal.js 等
5
+ */
6
+ export interface NumberAdapter<T = any> {
7
+ create(value: any): T;
8
+ add(a: T, b: T): T;
9
+ sub(a: T, b: T): T;
10
+ mul(a: T, b: T | number): T;
11
+ div(a: T, b: T): T;
12
+ compare(a: T, b: T): 1 | 0 | -1;
13
+ eq(a: T, b: T): boolean;
14
+ gt(a: T, b: T): boolean;
15
+ gte(a: T, b: T): boolean;
16
+ lt(a: T, b: T): boolean;
17
+ lte(a: T, b: T): boolean;
18
+ isInteger(a: T): boolean;
19
+ isNegative(a: T): boolean;
20
+ isPositive(a: T): boolean;
21
+ isZero(a: T): boolean;
22
+ isNaN(a: T): boolean;
23
+ isFinite(a: T): boolean;
24
+ abs(a: T): T;
25
+ ceil(a: T): T;
26
+ floor(a: T): T;
27
+ round(a: T): T;
28
+ max(a: T, b: T): T;
29
+ min(a: T, b: T): T;
30
+ toNumber(a: T): number;
31
+ toString(a: T): string;
32
+ }
33
+ export type ExtractNumberAdapterType<T> = T extends NumberAdapter<infer U> ? U : never;
34
+ export type AvailableNumberAdapterValueType = ExtractNumberAdapterType<ReturnType<typeof BuildInNumberAdapter> | ReturnType<typeof DecimalJsAdapter>>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/number-adapter/types.ts"],"names":[],"mappings":"","sourcesContent":["import { BuildInNumberAdapter } from './build-in-number.js';\nimport { DecimalJsAdapter } from './decimal-js.js';\n\n/**\n * 可以使用不同数字类型, 如 int, ~~bigint~~, decimal.js 等\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface NumberAdapter<T = any> {\n create(value: any): T;\n add(a: T, b: T): T;\n sub(a: T, b: T): T;\n mul(a: T, b: T | number): T;\n div(a: T, b: T): T;\n compare(a: T, b: T): 1 | 0 | -1;\n eq(a: T, b: T): boolean;\n gt(a: T, b: T): boolean;\n gte(a: T, b: T): boolean;\n lt(a: T, b: T): boolean;\n lte(a: T, b: T): boolean;\n isInteger(a: T): boolean;\n isNegative(a: T): boolean;\n isPositive(a: T): boolean;\n isZero(a: T): boolean;\n isNaN(a: T): boolean;\n isFinite(a: T): boolean;\n abs(a: T): T;\n ceil(a: T): T;\n floor(a: T): T;\n round(a: T): T;\n max(a: T, b: T): T;\n min(a: T, b: T): T;\n toNumber(a: T): number;\n toString(a: T): string;\n}\n\nexport type ExtractNumberAdapterType<T> =\n T extends NumberAdapter<infer U> ? U : never;\n\nexport type AvailableNumberAdapterValueType = ExtractNumberAdapterType<\n ReturnType<typeof BuildInNumberAdapter> | ReturnType<typeof DecimalJsAdapter>\n>;\n"]}
@@ -0,0 +1,10 @@
1
+ import { StringAdapter } from "./types.js";
2
+ /**
3
+ * 使用内置的 `Intl.Segmenter` 将字符串转换为字符数组.
4
+ *
5
+ * 要使用 {@link BuildInIntlSegmenterAdapter} 需要浏览器支持 `Intl.Segmenter`, 查看 [caniuse](https://caniuse.com/?search=Segmenter).
6
+ *
7
+ * @param locales 本地化配置. 用于创建 {@link Intl.Segmenter} 实例.
8
+ */
9
+ declare const BuildInIntlSegmenterAdapter: (locales?: Intl.LocalesArgument) => StringAdapter;
10
+ export { BuildInIntlSegmenterAdapter };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 使用内置的 `Intl.Segmenter` 将字符串转换为字符数组.
3
+ *
4
+ * 要使用 {@link BuildInIntlSegmenterAdapter} 需要浏览器支持 `Intl.Segmenter`, 查看 [caniuse](https://caniuse.com/?search=Segmenter).
5
+ *
6
+ * @param locales 本地化配置. 用于创建 {@link Intl.Segmenter} 实例.
7
+ */
8
+ const BuildInIntlSegmenterAdapter = (locales) => {
9
+ const segmenter = new Intl.Segmenter(locales, { granularity: "grapheme" });
10
+ return {
11
+ stringToChars(value) {
12
+ const segments = Array.from(segmenter.segment(value));
13
+ return segments.map((s) => s.segment);
14
+ },
15
+ };
16
+ };
17
+ export { BuildInIntlSegmenterAdapter };
18
+ //# sourceMappingURL=build-in-intl-segmenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-in-intl-segmenter.js","sourceRoot":"","sources":["../../../src/string-adapter/build-in-intl-segmenter.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,2BAA2B,GAEZ,CAAC,OAAO,EAAE,EAAE;IAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IAE3E,OAAO;QACL,aAAa,CAAC,KAAa;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAC","sourcesContent":["import { StringAdapter } from \"./types.js\";\n\n/**\n * 使用内置的 `Intl.Segmenter` 将字符串转换为字符数组.\n *\n * 要使用 {@link BuildInIntlSegmenterAdapter} 需要浏览器支持 `Intl.Segmenter`, 查看 [caniuse](https://caniuse.com/?search=Segmenter).\n *\n * @param locales 本地化配置. 用于创建 {@link Intl.Segmenter} 实例.\n */\nconst BuildInIntlSegmenterAdapter: (\n locales?: Intl.LocalesArgument\n) => StringAdapter = (locales) => {\n const segmenter = new Intl.Segmenter(locales, { granularity: \"grapheme\" });\n\n return {\n stringToChars(value: string): string[] {\n const segments = Array.from(segmenter.segment(value));\n return segments.map((s) => s.segment);\n },\n };\n};\n\nexport { BuildInIntlSegmenterAdapter };\n"]}
@@ -0,0 +1,12 @@
1
+ import { StringAdapter } from "./types.js";
2
+ /**
3
+ * 默认的字符串适配器. 该适配器使用内置的 `Array.from` 方法将字符串转换为字符数组.
4
+ * 该方法可以正确处理包含单个的 emoji 字符的字符串[1]. 但对于由多个字符组合而成的 emoji 无能为力[2].
5
+ *
6
+ * 要支持组合的 emoji 查看 {@link BuildInIntlSegmenterAdapter}, {@link GraphemeSplitterAdapter}.
7
+ *
8
+ * [1]: https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a
9
+ * [2]: https://cestoliv.com/blog/how-to-count-emojis-with-javascript/
10
+ */
11
+ declare const BuildInStringAdapter: () => StringAdapter;
12
+ export { BuildInStringAdapter };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 默认的字符串适配器. 该适配器使用内置的 `Array.from` 方法将字符串转换为字符数组.
3
+ * 该方法可以正确处理包含单个的 emoji 字符的字符串[1]. 但对于由多个字符组合而成的 emoji 无能为力[2].
4
+ *
5
+ * 要支持组合的 emoji 查看 {@link BuildInIntlSegmenterAdapter}, {@link GraphemeSplitterAdapter}.
6
+ *
7
+ * [1]: https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a
8
+ * [2]: https://cestoliv.com/blog/how-to-count-emojis-with-javascript/
9
+ */
10
+ const BuildInStringAdapter = () => ({
11
+ stringToChars(value) {
12
+ return Array.from(value);
13
+ },
14
+ });
15
+ export { BuildInStringAdapter };
16
+ //# sourceMappingURL=build-in-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-in-string.js","sourceRoot":"","sources":["../../../src/string-adapter/build-in-string.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,oBAAoB,GAAwB,GAAG,EAAE,CAAC,CAAC;IACvD,aAAa,CAAC,KAAa;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC;AAEH,OAAO,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import { StringAdapter } from \"./types.js\";\n\n/**\n * 默认的字符串适配器. 该适配器使用内置的 `Array.from` 方法将字符串转换为字符数组.\n * 该方法可以正确处理包含单个的 emoji 字符的字符串[1]. 但对于由多个字符组合而成的 emoji 无能为力[2].\n *\n * 要支持组合的 emoji 查看 {@link BuildInIntlSegmenterAdapter}, {@link GraphemeSplitterAdapter}.\n *\n * [1]: https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a\n * [2]: https://cestoliv.com/blog/how-to-count-emojis-with-javascript/\n */\nconst BuildInStringAdapter: () => StringAdapter = () => ({\n stringToChars(value: string): string[] {\n return Array.from(value);\n },\n});\n\nexport { BuildInStringAdapter };\n"]}
@@ -0,0 +1,8 @@
1
+ import { StringAdapter } from './types.js';
2
+ /**
3
+ * 使用 `grapheme-splitter` 库的字符串适配器. 该适配器使用 `grapheme-splitter` 库将字符串转换为字符数组.
4
+ *
5
+ * 要使用 {@link GraphemeSplitterAdapter} 需要安装 `grapheme-splitter`.
6
+ */
7
+ declare const GraphemeSplitterAdapter: () => StringAdapter;
8
+ export { GraphemeSplitterAdapter };
@@ -0,0 +1,16 @@
1
+ import GraphemeSplitter from 'grapheme-splitter';
2
+ /**
3
+ * 使用 `grapheme-splitter` 库的字符串适配器. 该适配器使用 `grapheme-splitter` 库将字符串转换为字符数组.
4
+ *
5
+ * 要使用 {@link GraphemeSplitterAdapter} 需要安装 `grapheme-splitter`.
6
+ */
7
+ const GraphemeSplitterAdapter = () => {
8
+ const splitter = new GraphemeSplitter();
9
+ return {
10
+ stringToChars(value) {
11
+ return splitter.splitGraphemes(value);
12
+ },
13
+ };
14
+ };
15
+ export { GraphemeSplitterAdapter };
16
+ //# sourceMappingURL=grapheme-splitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grapheme-splitter.js","sourceRoot":"","sources":["../../../src/string-adapter/grapheme-splitter.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,mBAAmB,CAAC;AAGjD;;;;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,OAAO,EAAE,uBAAuB,EAAE,CAAC","sourcesContent":["import GraphemeSplitter from 'grapheme-splitter';\nimport { StringAdapter } from './types.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 { GraphemeSplitterAdapter };\n"]}
@@ -0,0 +1,4 @@
1
+ export * from "./types.js";
2
+ export * from "./build-in-string.js";
3
+ export * from "./build-in-intl-segmenter.js";
4
+ export * from "./grapheme-splitter.js";
@@ -0,0 +1,5 @@
1
+ export * from "./types.js";
2
+ export * from "./build-in-string.js";
3
+ export * from "./build-in-intl-segmenter.js";
4
+ export * from "./grapheme-splitter.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AAC7C,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./types.js\";\nexport * from \"./build-in-string.js\";\nexport * from \"./build-in-intl-segmenter.js\";\nexport * from \"./grapheme-splitter.js\";\n"]}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 对于包含 emoji 字符的字符串, 不能通过 `split("")`, 数组索引等方式截取字符.
3
+ *
4
+ * 可以使用第三方库 `grapheme-splitter` 或 {@link Intl.Segmenter} API. 但其都有自身的限制.
5
+ * 1. `grapheme-splitter` 要在项目中引入额外的文件大小.
6
+ * 2. {@link Intl.Segmenter} API 较新, 在部分浏览器不支持.
7
+ * 因此内部提供这两种方式的适配器, 根据需求选择.
8
+ *
9
+ *
10
+ * @example "Hello" => ["H", "e", "l", "l", "o"]
11
+ * @example "😀Hello" => ["😀", "H", "e", "l", "l", "o"]
12
+ *
13
+ * @see https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a
14
+ * @see https://mathiasbynens.be/notes/javascript-unicode
15
+ * @see https://cestoliv.com/blog/how-to-count-emojis-with-javascript/
16
+ * */
17
+ export interface StringAdapter {
18
+ stringToChars(value: string): string[];
19
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/string-adapter/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * 对于包含 emoji 字符的字符串, 不能通过 `split(\"\")`, 数组索引等方式截取字符.\n *\n * 可以使用第三方库 `grapheme-splitter` 或 {@link Intl.Segmenter} API. 但其都有自身的限制.\n * 1. `grapheme-splitter` 要在项目中引入额外的文件大小.\n * 2. {@link Intl.Segmenter} API 较新, 在部分浏览器不支持.\n * 因此内部提供这两种方式的适配器, 根据需求选择.\n *\n *\n * @example \"Hello\" => [\"H\", \"e\", \"l\", \"l\", \"o\"]\n * @example \"😀Hello\" => [\"😀\", \"H\", \"e\", \"l\", \"l\", \"o\"]\n *\n * @see https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a\n * @see https://mathiasbynens.be/notes/javascript-unicode\n * @see https://cestoliv.com/blog/how-to-count-emojis-with-javascript/\n * */\nexport interface StringAdapter {\n stringToChars(value: string): string[];\n\n /**\n * todo emoji 受到 color 样式的影响, 丢失原来的颜色, 看起来很不好.根据 isEmoji 决定是否应用 color 样式.\n * @param value\n */\n // isEmoji(value: string): boolean;\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const timeredCounterDatetimeStyles: import("lit").CSSResult;
@@ -0,0 +1,8 @@
1
+ import { css } from 'lit';
2
+ export const timeredCounterDatetimeStyles = css `
3
+ ::part(part-suffix) {
4
+ font-size: 0.4em;
5
+ line-height: 1;
6
+ }
7
+ `;
8
+ //# sourceMappingURL=timered-counter-datetime-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timered-counter-datetime-styles.js","sourceRoot":"","sources":["../../../src/styles/timered-counter-datetime-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAA;;;;;CAK9C,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const timeredCounterDatetimeStyles = css`\n ::part(part-suffix) {\n font-size: 0.4em;\n line-height: 1;\n }\n`;\n"]}
@@ -0,0 +1 @@
1
+ export declare const timeredCounterNumberStyles: import("lit").CSSResult;
@@ -0,0 +1,3 @@
1
+ import { css } from 'lit';
2
+ export const timeredCounterNumberStyles = css ``;
3
+ //# sourceMappingURL=timered-counter-number-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timered-counter-number-styles.js","sourceRoot":"","sources":["../../../src/styles/timered-counter-number-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAA,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const timeredCounterNumberStyles = css``;\n"]}
@@ -0,0 +1 @@
1
+ export declare const timeredCounterStringStyles: import("lit").CSSResult;
@@ -0,0 +1,3 @@
1
+ import { css } from 'lit';
2
+ export const timeredCounterStringStyles = css ``;
3
+ //# sourceMappingURL=timered-counter-string-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timered-counter-string-styles.js","sourceRoot":"","sources":["../../../src/styles/timered-counter-string-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAA,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const timeredCounterStringStyles = css``;\n"]}
@@ -0,0 +1 @@
1
+ export declare const timeredCounterStyles: import("lit").CSSResult;
@@ -0,0 +1,25 @@
1
+ import { css } from 'lit';
2
+ export const timeredCounterStyles = css `
3
+ .timered-counter {
4
+ position: relative;
5
+ display: inline-flex;
6
+ overflow: hidden;
7
+
8
+ /**
9
+ inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.
10
+ @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container
11
+ @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align
12
+ */
13
+ vertical-align: bottom;
14
+ }
15
+
16
+ .timered-counter.debug {
17
+ overflow: visible;
18
+ }
19
+
20
+ //.timered-counter-datetime-duration .duration-unit {
21
+ // font-size: 0.4em;
22
+ // line-height: 1;
23
+ //}
24
+ `;
25
+ //# sourceMappingURL=timered-counter-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timered-counter-styles.js","sourceRoot":"","sources":["../../../src/styles/timered-counter-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;CAsBtC,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const timeredCounterStyles = css`\n .timered-counter {\n position: relative;\n display: inline-flex;\n overflow: hidden;\n\n /**\n inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n */\n vertical-align: bottom;\n }\n\n .timered-counter.debug {\n overflow: visible;\n }\n\n //.timered-counter-datetime-duration .duration-unit {\n // font-size: 0.4em;\n // line-height: 1;\n //}\n`;\n"]}
@@ -0,0 +1,37 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { TimeredCounter } from './timered-counter.js';
3
+ import { AvailableNumberAdapterValueType } from './number-adapter/index.js';
4
+ export declare class TimeredCounterDatetimeDuration extends TimeredCounter {
5
+ static styles: import("lit").CSSResult[];
6
+ private __precision;
7
+ /**
8
+ * 计数器显示的精度.
9
+ * 1. 当为单个值时, 表示最小精度.
10
+ * 2. 当为数组时, 第一个值表示最小精度, 第二个值表示最大精度.
11
+ *
12
+ * @default [DurationPartType.Second, DurationPartType.Day]
13
+ *
14
+ * @example DurationPartType.Second 显示从年份到秒数的所有精度.
15
+ * @example [DurationPartType.Second, DurationPartType.Day] 显示从天数到秒数的所有精度.
16
+ * @example [DurationPartType.Millisecond, DurationPartType.Year] 显示从年份到毫秒的所有精度.
17
+ */
18
+ get precision(): any;
19
+ set precision(value: any);
20
+ get value(): any;
21
+ /**
22
+ * 通过 property 设置 value 时, 支持 Date 类型.
23
+ */
24
+ set value(value: any);
25
+ private __from;
26
+ private __to;
27
+ private __durationInMilliseconds;
28
+ private __minPrecision;
29
+ private __maxPrecision;
30
+ private __availableDurationParts;
31
+ private __dateTimeFieldLabels;
32
+ sampleSplit(samples: AvailableNumberAdapterValueType[]): AvailableNumberAdapterValueType[][];
33
+ generateAriaLabel(): string;
34
+ connectedCallback(): void;
35
+ render(): import("lit-html").TemplateResult<1>;
36
+ willUpdate(_changedProperties: PropertyValues): void;
37
+ }