time-runner 1.1.4 → 1.1.6
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/README.md +20 -0
- package/README.zh-CN.md +19 -0
- package/dist/TimeRunner.d.ts +4 -1
- package/dist/Tools.d.ts +25 -0
- package/dist/index.css +1 -1
- package/dist/time-runner.es.js +369 -281
- package/dist/time-runner.umd.js +26 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -69,6 +69,13 @@ import { TimeRunner } from "time-runner";
|
|
|
69
69
|
// Countdown + drift
|
|
70
70
|
<TimeRunner mode="drift" showType="2026-10-31" />
|
|
71
71
|
|
|
72
|
+
// Current time + cut
|
|
73
|
+
<TimeRunner mode="cut" />
|
|
74
|
+
// Timer + cut
|
|
75
|
+
<TimeRunner mode="cut" showType="count" />
|
|
76
|
+
// Countdown + drift
|
|
77
|
+
<TimeRunner mode="cut" showType="2026-10-31" />
|
|
78
|
+
|
|
72
79
|
|
|
73
80
|
```
|
|
74
81
|
|
|
@@ -89,6 +96,8 @@ showType?: string;
|
|
|
89
96
|
* cube-v: vertical flip
|
|
90
97
|
* cube-h: horizontal flip
|
|
91
98
|
* drift: floating
|
|
99
|
+
* cut: cut
|
|
100
|
+
* erase: erase the numeric
|
|
92
101
|
*/
|
|
93
102
|
mode?: TransMode;
|
|
94
103
|
/** Callback function executed when countdown finishes */
|
|
@@ -99,6 +108,8 @@ size?: number;
|
|
|
99
108
|
className?: string;
|
|
100
109
|
/** Background color */
|
|
101
110
|
bgColor?: string;
|
|
111
|
+
/** Numeric font color */
|
|
112
|
+
numColor?: string;
|
|
102
113
|
/** Border color */
|
|
103
114
|
borderColor?: string;
|
|
104
115
|
/** Text shadow color */
|
|
@@ -124,6 +135,15 @@ textShadowColor?: string;
|
|
|
124
135
|
|
|
125
136
|
# Changelog
|
|
126
137
|
|
|
138
|
+
## [1.1.6] - 2026-06-20
|
|
139
|
+
### Changes
|
|
140
|
+
- Added mode = "erase" animation
|
|
141
|
+
- Add property "numColor" for customizing numeric font color
|
|
142
|
+
|
|
143
|
+
## [1.1.5] - 2026-05-24
|
|
144
|
+
### Changes
|
|
145
|
+
- Added mode = "cut" animation
|
|
146
|
+
|
|
127
147
|
## [1.1.4] - 2026-03-07
|
|
128
148
|
### Changes
|
|
129
149
|
- Added English README
|
package/README.zh-CN.md
CHANGED
|
@@ -69,6 +69,13 @@ import { TimeRunner } from "time-runner";
|
|
|
69
69
|
// 倒计时 + 漂浮
|
|
70
70
|
<TimeRunner mode="drift" showType="2026-10-31" />
|
|
71
71
|
|
|
72
|
+
// 当前时间 + 切割
|
|
73
|
+
<TimeRunner mode="cut" />
|
|
74
|
+
// 计时器 + 切割
|
|
75
|
+
<TimeRunner mode="cut" showType="count" />
|
|
76
|
+
// 倒计时 + 切割
|
|
77
|
+
<TimeRunner mode="cut" showType="2026-10-31" />
|
|
78
|
+
|
|
72
79
|
|
|
73
80
|
```
|
|
74
81
|
|
|
@@ -87,6 +94,7 @@ showType?: string;
|
|
|
87
94
|
* cube-v:上下翻转
|
|
88
95
|
* cube-h:左右翻转
|
|
89
96
|
* drift: 漂浮
|
|
97
|
+
* cut: 切割
|
|
90
98
|
*/
|
|
91
99
|
mode?: TransMode;
|
|
92
100
|
/** 倒计时结束后执行的方法 */
|
|
@@ -97,6 +105,8 @@ size?: number;
|
|
|
97
105
|
className?: string;
|
|
98
106
|
/** 背景颜色 */
|
|
99
107
|
bgColor?: string;
|
|
108
|
+
/** 数字颜色 */
|
|
109
|
+
numColor?: string;
|
|
100
110
|
/** 边框颜色 */
|
|
101
111
|
borderColor?: string;
|
|
102
112
|
/** 文字阴影颜色值 */
|
|
@@ -122,6 +132,15 @@ textShadowColor?: string;
|
|
|
122
132
|
|
|
123
133
|
# 更新日志
|
|
124
134
|
|
|
135
|
+
## [1.1.6] - 2026-06-20
|
|
136
|
+
### Changes
|
|
137
|
+
- 新增 mode = "erase"
|
|
138
|
+
- 增加 numColor: 数字颜色
|
|
139
|
+
|
|
140
|
+
## [1.1.5] - 2026-05-24
|
|
141
|
+
### 更新内容
|
|
142
|
+
- 增加 mode = "cut" 效果
|
|
143
|
+
|
|
125
144
|
## [1.1.4] - 2026-03-07
|
|
126
145
|
### 更新内容
|
|
127
146
|
- 增加英文版Readme
|
package/dist/TimeRunner.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* drift: 漂浮
|
|
8
8
|
*
|
|
9
9
|
*/
|
|
10
|
-
type TransMode = "card" | "cube-v" | "cube-h" | "drift";
|
|
10
|
+
type TransMode = "card" | "cube-v" | "cube-h" | "drift" | "cut" | "erase";
|
|
11
11
|
interface PropsType {
|
|
12
12
|
/**
|
|
13
13
|
* 显示模式,默认:default
|
|
@@ -22,6 +22,7 @@ interface PropsType {
|
|
|
22
22
|
* cube-v:上下翻转
|
|
23
23
|
* cube-h:左右翻转
|
|
24
24
|
* drift: 漂浮
|
|
25
|
+
* cut: 切片
|
|
25
26
|
*/
|
|
26
27
|
mode?: TransMode;
|
|
27
28
|
/** 尺寸,默认40 */
|
|
@@ -30,6 +31,8 @@ interface PropsType {
|
|
|
30
31
|
className?: string;
|
|
31
32
|
/** 背景颜色 */
|
|
32
33
|
bgColor?: string;
|
|
34
|
+
/** 数字颜色 */
|
|
35
|
+
numColor?: string;
|
|
33
36
|
/** 边框颜色 */
|
|
34
37
|
borderColor?: string;
|
|
35
38
|
/** 文字阴影颜色值 */
|
package/dist/Tools.d.ts
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
1
|
export declare const getTimeDiff: (endTime: string) => string;
|
|
2
2
|
export declare const countTime: (t: number) => string;
|
|
3
3
|
export declare const isValidTime: (time: string) => boolean;
|
|
4
|
+
/**
|
|
5
|
+
* 分别给两个div设置clip-path属性,
|
|
6
|
+
* 并根据polygon的x、y坐标计算两条线段的长度、位置、角度。
|
|
7
|
+
*
|
|
8
|
+
* @param dom 外层dom
|
|
9
|
+
*/
|
|
10
|
+
export declare const getRandomClip: (dom: HTMLDivElement) => {
|
|
11
|
+
lPath: string;
|
|
12
|
+
rPath: string;
|
|
13
|
+
lTranslate: string;
|
|
14
|
+
rTranslate: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* 根据传入的颜色色值的深浅比例,返回一个较深或较浅的颜色色值。
|
|
18
|
+
* 在0-255之间,就以128为分界线,大于128为亮色系,返回较深的色值,小于128为深色系,返回较浅的色值。
|
|
19
|
+
* 因为传入的内容格式不固定,所以这里通过浏览器来获取最终的颜色色值,反正也都是在浏览器里运行,减少心智负担。
|
|
20
|
+
*
|
|
21
|
+
* @param color 颜色值,
|
|
22
|
+
* @param ratio 变化比例,越大,差别就越大。
|
|
23
|
+
*/
|
|
24
|
+
export declare const getMaskColor: (color: string, ratio?: number) => string;
|
|
25
|
+
/**
|
|
26
|
+
* 获取[0, 360]之间的随机角度
|
|
27
|
+
*/
|
|
28
|
+
export declare const getRandomDeg: () => number;
|
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@font-face{font-family:DIN-num-font;src:url(data:font/woff2;base64,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)}.font-num{font-family:DIN-num-font}.time-runner{width:max-content;display:flex;justify-content:space-between;align-items:center;margin:0 auto;-webkit-user-select:none;user-select:none;position:relative;font-variant-numeric:tabular-nums}.time-runner span{font-size:var(--card-size, 40px);margin:0 3px;padding-bottom:3px;display:inline-block}.time-runner>p{margin:0 3px}.time-runner>div{font-size:var(--card-size, 40px)}.time-runner>div>p{color
|
|
1
|
+
@font-face{font-family:DIN-num-font;src:url(data:font/woff2;base64,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)}.font-num{font-family:DIN-num-font}.time-runner{width:max-content;display:flex;justify-content:space-between;align-items:center;margin:0 auto;-webkit-user-select:none;user-select:none;position:relative;font-variant-numeric:tabular-nums}.time-runner span{font-size:var(--card-size, 40px);margin:0 3px;padding-bottom:3px;display:inline-block}.time-runner>p{margin:0 3px}.time-runner>div{font-size:var(--card-size, 40px)}.time-runner>div>p{color:var(--numColor, #333);text-shadow:var(--textShadow)}.clock-card{position:relative;height:var(--card-h, 80px);width:var(--card-w, 50px);box-shadow:0 1px 5px #333;border-radius:6px}.clock-card:before{content:"";position:absolute;top:50%;left:0;background-color:#999;width:100%;height:1.5px;z-index:3;overflow:hidden}.clock-card .clock-f,.clock-card .clock-b{width:100%;height:100%;position:absolute;top:0;left:0}.clock-card .clock-f p,.clock-card .clock-b p{position:absolute;left:0;height:50%;width:100%;margin-bottom:0;text-align:center;font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);color:var(--numColor, #fff);text-shadow:var(--textShadow);overflow:hidden;border-left:solid 1px var(--borderColor, #999);border-right:solid 1px var(--borderColor, #999)}.clock-card .clock-f p:nth-child(1),.clock-card .clock-b p:nth-child(1){top:0;border-top:solid 1px var(--borderColor, #999)}.clock-card .clock-f p:nth-child(2),.clock-card .clock-b p:nth-child(2){bottom:0;border-bottom:solid 1px var(--borderColor, #999)}.clock-card .clock-f p:nth-child(1){line-height:var(--card-h, 80px);transform-origin:bottom;backface-visibility:hidden;border-radius:6px 6px 0 0}.clock-card .clock-f p:nth-child(2){line-height:3px;border-radius:0 0 6px 6px}.clock-card .clock-f.run p:nth-child(1){transition:var(--delay) ease-in-out;transform:perspective(50px) rotateX(-180deg)}.clock-card .clock-b p:nth-child(1){line-height:var(--card-h, 80px);border-radius:6px 6px 0 0}.clock-card .clock-b p:nth-child(2){line-height:3px;transform-origin:top;transform:perspective(50px) rotateX(179.99deg);backface-visibility:hidden;border-radius:0 0 6px 6px}.clock-card .clock-b.run p:nth-child(2){transition:var(--delay) ease-in-out;transform:rotateX(0);z-index:2}.cube-v{width:var(--card-w, 50px);height:var(--card-h, 80px);position:relative;perspective:300px}.cube-v div{width:100%;height:100%;transform-style:preserve-3d;transform-origin:center center var(--transy)}.cube-v p{width:100%;height:100%;line-height:var(--card-h, 80px);text-align:center;font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);margin-bottom:0;box-shadow:0 1px 2px #333;border-radius:2px}.cube-v p:nth-child(1){position:absolute;transform-origin:0 100%;transform:translateY(-100%) rotateX(90deg)}.cube-v.run div{transform:rotateX(-90deg);transition:var(--delay)}.cube-h{width:var(--card-w, 50px);height:var(--card-h, 80px);position:relative;perspective:300px}.cube-h div{width:100%;height:100%;transform-style:preserve-3d;transform-origin:center center var(--transx)}.cube-h p{width:100%;height:100%;line-height:var(--card-h, 80px);text-align:center;font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);margin-bottom:0;box-shadow:0 1px 2px #333;border-radius:2px}.cube-h p:nth-child(1){position:absolute;transform-origin:100% 0;transform:translate(-100%) rotateY(-90deg)}.cube-h.run div{transform:rotateY(90deg);transition:var(--delay)}.drift{height:var(--card-h, 80px);width:var(--card-w, 50px);font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);line-height:var(--card-h, 80px);text-align:center;border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);box-shadow:0 1px 2px #333;border-radius:2px;position:relative}.drift:before{content:attr(data-digit);position:absolute;top:0;left:0;line-height:var(--card-h, 80px);width:100%;text-align:center;overflow:hidden;height:100%;background-color:var(--bgColor, #333);transform-origin:center}.drift.run:before{transform:translate(var(--driftX),var(--driftY)) rotate(var(--driftRZ)) rotateX(var(--driftRX));opacity:0;transition:var(--delay);border:solid 2px var(--borderColor, #999)}.cut{height:var(--card-h, 80px);width:var(--card-w, 50px);font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);line-height:var(--card-h, 80px);text-align:center;border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);box-shadow:0 1px 2px #333;border-radius:2px;position:relative;overflow:hidden}.cut>p{color:var(--numColor, #fff)!important;opacity:0}.cut>div{position:absolute;inset:0;line-height:var(--card-h, 80px);text-align:center;overflow:hidden}.cut>div:nth-child(1){clip-path:var(--lPolygon)}.cut>div:nth-child(2){clip-path:var(--rPolygon)}.cut>div>div{position:absolute;width:2px;background-color:transparent;z-index:10}.cut.run>div:nth-child(1){transition:var(--delay);transform:var(--cutLTranslate)}.cut.run>div:nth-child(2){transition:var(--delay);transform:var(--cutRTranslate)}.cut.run>p{transition:.6s;transition-delay:.15s;opacity:1}.cut.run .l-line,.cut.run .r-line{background-color:var(--numColor, #fff)}@property --deg{syntax: "<angle>"; inherits: false; initial-value: 0deg;}.erase{height:var(--card-h, 80px);width:var(--card-w, 50px);font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);line-height:var(--card-h, 80px);text-align:center;border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);box-shadow:0 1px 2px #333;border-radius:2px;position:relative;overflow:hidden}.erase>p{color:var(--numColor, #fff)!important;opacity:0;transform:scale(0)}.erase:before{content:attr(data-digit);position:absolute;inset:0;line-height:var(--card-h, 80px);text-align:center;z-index:1}.erase>div{position:absolute;inset:0;opacity:1;z-index:2;background:conic-gradient(from var(--start-deg, 0),var(--transColor) 0deg,var(--transColor) var(--deg),transparent var(--deg),transparent 360deg)}.erase.run:before{transition:.2s;transition-delay:.5s;opacity:0}.erase.run>div{opacity:0;transition-property:--deg,opacity;transition-duration:.6s,.1s;transition-delay:0s,.6s}.erase.run>p{transition:.4s;transition-delay:.5s;opacity:1;transform:scale(1)}
|
package/dist/time-runner.es.js
CHANGED
|
@@ -1,401 +1,489 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { memo as
|
|
3
|
-
import './index.css';function
|
|
4
|
-
return
|
|
1
|
+
import { jsx as d, Fragment as st, jsxs as j } from "react/jsx-runtime";
|
|
2
|
+
import { memo as mt, useState as ht, useRef as it, useMemo as rt, useEffect as nt } from "react";
|
|
3
|
+
import './index.css';function $t(f) {
|
|
4
|
+
return f && f.__esModule && Object.prototype.hasOwnProperty.call(f, "default") ? f.default : f;
|
|
5
5
|
}
|
|
6
|
-
var
|
|
7
|
-
function
|
|
8
|
-
return
|
|
9
|
-
(function(
|
|
10
|
-
|
|
11
|
-
})(
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
return "[" + s + (
|
|
15
|
-
} },
|
|
16
|
-
var
|
|
17
|
-
return !
|
|
18
|
-
},
|
|
19
|
-
var
|
|
20
|
-
return (
|
|
21
|
-
}, m: function s(
|
|
22
|
-
if (
|
|
23
|
-
var
|
|
24
|
-
return +(-(
|
|
6
|
+
var et = { exports: {} }, pt = et.exports, ct;
|
|
7
|
+
function Mt() {
|
|
8
|
+
return ct || (ct = 1, (function(f, u) {
|
|
9
|
+
(function(c, o) {
|
|
10
|
+
f.exports = o();
|
|
11
|
+
})(pt, (function() {
|
|
12
|
+
var c = 1e3, o = 6e4, y = 36e5, h = "millisecond", v = "second", Y = "minute", b = "hour", D = "day", m = "week", g = "month", _ = "quarter", l = "year", p = "date", S = "Invalid Date", N = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, Z = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, J = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(s) {
|
|
13
|
+
var n = ["th", "st", "nd", "rd"], t = s % 100;
|
|
14
|
+
return "[" + s + (n[(t - 20) % 10] || n[t] || n[0]) + "]";
|
|
15
|
+
} }, A = function(s, n, t) {
|
|
16
|
+
var r = String(s);
|
|
17
|
+
return !r || r.length >= n ? s : "" + Array(n + 1 - r.length).join(t) + s;
|
|
18
|
+
}, H = { s: A, z: function(s) {
|
|
19
|
+
var n = -s.utcOffset(), t = Math.abs(n), r = Math.floor(t / 60), e = t % 60;
|
|
20
|
+
return (n <= 0 ? "+" : "-") + A(r, 2, "0") + ":" + A(e, 2, "0");
|
|
21
|
+
}, m: function s(n, t) {
|
|
22
|
+
if (n.date() < t.date()) return -s(t, n);
|
|
23
|
+
var r = 12 * (t.year() - n.year()) + (t.month() - n.month()), e = n.clone().add(r, g), i = t - e < 0, a = n.clone().add(r + (i ? -1 : 1), g);
|
|
24
|
+
return +(-(r + (t - e) / (i ? e - a : a - e)) || 0);
|
|
25
25
|
}, a: function(s) {
|
|
26
26
|
return s < 0 ? Math.ceil(s) || 0 : Math.floor(s);
|
|
27
27
|
}, p: function(s) {
|
|
28
|
-
return { M:
|
|
28
|
+
return { M: g, y: l, w: m, d: D, D: p, h: b, m: Y, s: v, ms: h, Q: _ }[s] || String(s || "").toLowerCase().replace(/s$/, "");
|
|
29
29
|
}, u: function(s) {
|
|
30
30
|
return s === void 0;
|
|
31
|
-
} },
|
|
32
|
-
|
|
33
|
-
var
|
|
34
|
-
return s instanceof
|
|
35
|
-
},
|
|
31
|
+
} }, R = "en", L = {};
|
|
32
|
+
L[R] = J;
|
|
33
|
+
var B = "$isDayjsObject", q = function(s) {
|
|
34
|
+
return s instanceof G || !(!s || !s[B]);
|
|
35
|
+
}, Q = function s(n, t, r) {
|
|
36
36
|
var e;
|
|
37
|
-
if (!
|
|
38
|
-
if (typeof
|
|
39
|
-
var i =
|
|
40
|
-
|
|
41
|
-
var a =
|
|
37
|
+
if (!n) return R;
|
|
38
|
+
if (typeof n == "string") {
|
|
39
|
+
var i = n.toLowerCase();
|
|
40
|
+
L[i] && (e = i), t && (L[i] = t, e = i);
|
|
41
|
+
var a = n.split("-");
|
|
42
42
|
if (!e && a.length > 1) return s(a[0]);
|
|
43
43
|
} else {
|
|
44
|
-
var
|
|
45
|
-
|
|
44
|
+
var M = n.name;
|
|
45
|
+
L[M] = n, e = M;
|
|
46
46
|
}
|
|
47
|
-
return !
|
|
48
|
-
},
|
|
49
|
-
if (
|
|
50
|
-
var t = typeof
|
|
51
|
-
return t.date = s, t.args = arguments, new
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
return
|
|
47
|
+
return !r && e && (R = e), e || !r && R;
|
|
48
|
+
}, x = function(s, n) {
|
|
49
|
+
if (q(s)) return s.clone();
|
|
50
|
+
var t = typeof n == "object" ? n : {};
|
|
51
|
+
return t.date = s, t.args = arguments, new G(t);
|
|
52
|
+
}, $ = H;
|
|
53
|
+
$.l = Q, $.i = q, $.w = function(s, n) {
|
|
54
|
+
return x(s, { locale: n.$L, utc: n.$u, x: n.$x, $offset: n.$offset });
|
|
55
55
|
};
|
|
56
|
-
var
|
|
56
|
+
var G = (function() {
|
|
57
57
|
function s(t) {
|
|
58
|
-
this.$L =
|
|
58
|
+
this.$L = Q(t.locale, null, !0), this.parse(t), this.$x = this.$x || t.x || {}, this[B] = !0;
|
|
59
59
|
}
|
|
60
|
-
var
|
|
61
|
-
return
|
|
62
|
-
this.$d = (function(
|
|
63
|
-
var e =
|
|
60
|
+
var n = s.prototype;
|
|
61
|
+
return n.parse = function(t) {
|
|
62
|
+
this.$d = (function(r) {
|
|
63
|
+
var e = r.date, i = r.utc;
|
|
64
64
|
if (e === null) return /* @__PURE__ */ new Date(NaN);
|
|
65
|
-
if (u
|
|
65
|
+
if ($.u(e)) return /* @__PURE__ */ new Date();
|
|
66
66
|
if (e instanceof Date) return new Date(e);
|
|
67
67
|
if (typeof e == "string" && !/Z$/i.test(e)) {
|
|
68
|
-
var a = e.match(
|
|
68
|
+
var a = e.match(N);
|
|
69
69
|
if (a) {
|
|
70
|
-
var
|
|
71
|
-
return i ? new Date(Date.UTC(a[1],
|
|
70
|
+
var M = a[2] - 1 || 0, w = (a[7] || "0").substring(0, 3);
|
|
71
|
+
return i ? new Date(Date.UTC(a[1], M, a[3] || 1, a[4] || 0, a[5] || 0, a[6] || 0, w)) : new Date(a[1], M, a[3] || 1, a[4] || 0, a[5] || 0, a[6] || 0, w);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
return new Date(e);
|
|
75
75
|
})(t), this.init();
|
|
76
|
-
},
|
|
76
|
+
}, n.init = function() {
|
|
77
77
|
var t = this.$d;
|
|
78
78
|
this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds();
|
|
79
|
-
},
|
|
80
|
-
return
|
|
81
|
-
},
|
|
82
|
-
return this.$d.toString() !==
|
|
83
|
-
},
|
|
84
|
-
var e =
|
|
85
|
-
return this.startOf(
|
|
86
|
-
},
|
|
87
|
-
return
|
|
88
|
-
},
|
|
89
|
-
return this.endOf(
|
|
90
|
-
},
|
|
91
|
-
return u
|
|
92
|
-
},
|
|
79
|
+
}, n.$utils = function() {
|
|
80
|
+
return $;
|
|
81
|
+
}, n.isValid = function() {
|
|
82
|
+
return this.$d.toString() !== S;
|
|
83
|
+
}, n.isSame = function(t, r) {
|
|
84
|
+
var e = x(t);
|
|
85
|
+
return this.startOf(r) <= e && e <= this.endOf(r);
|
|
86
|
+
}, n.isAfter = function(t, r) {
|
|
87
|
+
return x(t) < this.startOf(r);
|
|
88
|
+
}, n.isBefore = function(t, r) {
|
|
89
|
+
return this.endOf(r) < x(t);
|
|
90
|
+
}, n.$g = function(t, r, e) {
|
|
91
|
+
return $.u(t) ? this[r] : this.set(e, t);
|
|
92
|
+
}, n.unix = function() {
|
|
93
93
|
return Math.floor(this.valueOf() / 1e3);
|
|
94
|
-
},
|
|
94
|
+
}, n.valueOf = function() {
|
|
95
95
|
return this.$d.getTime();
|
|
96
|
-
},
|
|
97
|
-
var e = this, i =
|
|
98
|
-
var
|
|
99
|
-
return i ?
|
|
100
|
-
},
|
|
101
|
-
return
|
|
102
|
-
},
|
|
96
|
+
}, n.startOf = function(t, r) {
|
|
97
|
+
var e = this, i = !!$.u(r) || r, a = $.p(t), M = function(P, O) {
|
|
98
|
+
var I = $.w(e.$u ? Date.UTC(e.$y, O, P) : new Date(e.$y, O, P), e);
|
|
99
|
+
return i ? I : I.endOf(D);
|
|
100
|
+
}, w = function(P, O) {
|
|
101
|
+
return $.w(e.toDate()[P].apply(e.toDate("s"), (i ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(O)), e);
|
|
102
|
+
}, T = this.$W, C = this.$M, k = this.$D, X = "set" + (this.$u ? "UTC" : "");
|
|
103
103
|
switch (a) {
|
|
104
|
-
case
|
|
105
|
-
return i ?
|
|
106
|
-
case
|
|
107
|
-
return i ?
|
|
104
|
+
case l:
|
|
105
|
+
return i ? M(1, 0) : M(31, 11);
|
|
106
|
+
case g:
|
|
107
|
+
return i ? M(1, C) : M(0, C + 1);
|
|
108
|
+
case m:
|
|
109
|
+
var W = this.$locale().weekStart || 0, z = (T < W ? T + 7 : T) - W;
|
|
110
|
+
return M(i ? k - z : k + (6 - z), C);
|
|
111
|
+
case D:
|
|
108
112
|
case p:
|
|
109
|
-
|
|
110
|
-
return c(i ? T - R : T + (6 - R), y);
|
|
113
|
+
return w(X + "Hours", 0);
|
|
111
114
|
case b:
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return m(F + "Seconds", 2);
|
|
118
|
-
case _:
|
|
119
|
-
return m(F + "Milliseconds", 3);
|
|
115
|
+
return w(X + "Minutes", 1);
|
|
116
|
+
case Y:
|
|
117
|
+
return w(X + "Seconds", 2);
|
|
118
|
+
case v:
|
|
119
|
+
return w(X + "Milliseconds", 3);
|
|
120
120
|
default:
|
|
121
121
|
return this.clone();
|
|
122
122
|
}
|
|
123
|
-
},
|
|
123
|
+
}, n.endOf = function(t) {
|
|
124
124
|
return this.startOf(t, !1);
|
|
125
|
-
},
|
|
126
|
-
var e, i =
|
|
127
|
-
if (i ===
|
|
128
|
-
var
|
|
129
|
-
|
|
130
|
-
} else
|
|
125
|
+
}, n.$set = function(t, r) {
|
|
126
|
+
var e, i = $.p(t), a = "set" + (this.$u ? "UTC" : ""), M = (e = {}, e[D] = a + "Date", e[p] = a + "Date", e[g] = a + "Month", e[l] = a + "FullYear", e[b] = a + "Hours", e[Y] = a + "Minutes", e[v] = a + "Seconds", e[h] = a + "Milliseconds", e)[i], w = i === D ? this.$D + (r - this.$W) : r;
|
|
127
|
+
if (i === g || i === l) {
|
|
128
|
+
var T = this.clone().set(p, 1);
|
|
129
|
+
T.$d[M](w), T.init(), this.$d = T.set(p, Math.min(this.$D, T.daysInMonth())).$d;
|
|
130
|
+
} else M && this.$d[M](w);
|
|
131
131
|
return this.init(), this;
|
|
132
|
-
},
|
|
133
|
-
return this.clone().$set(t,
|
|
134
|
-
},
|
|
135
|
-
return this[
|
|
136
|
-
},
|
|
132
|
+
}, n.set = function(t, r) {
|
|
133
|
+
return this.clone().$set(t, r);
|
|
134
|
+
}, n.get = function(t) {
|
|
135
|
+
return this[$.p(t)]();
|
|
136
|
+
}, n.add = function(t, r) {
|
|
137
137
|
var e, i = this;
|
|
138
138
|
t = Number(t);
|
|
139
|
-
var a =
|
|
140
|
-
var
|
|
141
|
-
return
|
|
139
|
+
var a = $.p(r), M = function(C) {
|
|
140
|
+
var k = x(i);
|
|
141
|
+
return $.w(k.date(k.date() + Math.round(C * t)), i);
|
|
142
142
|
};
|
|
143
|
-
if (a ===
|
|
144
|
-
if (a ===
|
|
145
|
-
if (a ===
|
|
146
|
-
if (a ===
|
|
147
|
-
var
|
|
148
|
-
return
|
|
149
|
-
},
|
|
150
|
-
return this.add(-1 * t,
|
|
151
|
-
},
|
|
152
|
-
var
|
|
153
|
-
if (!this.isValid()) return e.invalidDate ||
|
|
154
|
-
var i = t || "YYYY-MM-DDTHH:mm:ssZ", a =
|
|
155
|
-
return
|
|
156
|
-
},
|
|
157
|
-
return
|
|
158
|
-
},
|
|
159
|
-
var
|
|
160
|
-
return
|
|
143
|
+
if (a === g) return this.set(g, this.$M + t);
|
|
144
|
+
if (a === l) return this.set(l, this.$y + t);
|
|
145
|
+
if (a === D) return M(1);
|
|
146
|
+
if (a === m) return M(7);
|
|
147
|
+
var w = (e = {}, e[Y] = o, e[b] = y, e[v] = c, e)[a] || 1, T = this.$d.getTime() + t * w;
|
|
148
|
+
return $.w(T, this);
|
|
149
|
+
}, n.subtract = function(t, r) {
|
|
150
|
+
return this.add(-1 * t, r);
|
|
151
|
+
}, n.format = function(t) {
|
|
152
|
+
var r = this, e = this.$locale();
|
|
153
|
+
if (!this.isValid()) return e.invalidDate || S;
|
|
154
|
+
var i = t || "YYYY-MM-DDTHH:mm:ssZ", a = $.z(this), M = this.$H, w = this.$m, T = this.$M, C = e.weekdays, k = e.months, X = e.meridiem, W = function(O, I, U, K) {
|
|
155
|
+
return O && (O[I] || O(r, i)) || U[I].slice(0, K);
|
|
156
|
+
}, z = function(O) {
|
|
157
|
+
return $.s(M % 12 || 12, O, "0");
|
|
158
|
+
}, P = X || function(O, I, U) {
|
|
159
|
+
var K = O < 12 ? "AM" : "PM";
|
|
160
|
+
return U ? K.toLowerCase() : K;
|
|
161
161
|
};
|
|
162
|
-
return i.replace(
|
|
163
|
-
return
|
|
164
|
-
switch (
|
|
162
|
+
return i.replace(Z, (function(O, I) {
|
|
163
|
+
return I || (function(U) {
|
|
164
|
+
switch (U) {
|
|
165
165
|
case "YY":
|
|
166
|
-
return String(
|
|
166
|
+
return String(r.$y).slice(-2);
|
|
167
167
|
case "YYYY":
|
|
168
|
-
return
|
|
168
|
+
return $.s(r.$y, 4, "0");
|
|
169
169
|
case "M":
|
|
170
|
-
return
|
|
170
|
+
return T + 1;
|
|
171
171
|
case "MM":
|
|
172
|
-
return
|
|
172
|
+
return $.s(T + 1, 2, "0");
|
|
173
173
|
case "MMM":
|
|
174
|
-
return
|
|
174
|
+
return W(e.monthsShort, T, k, 3);
|
|
175
175
|
case "MMMM":
|
|
176
|
-
return
|
|
176
|
+
return W(k, T);
|
|
177
177
|
case "D":
|
|
178
|
-
return
|
|
178
|
+
return r.$D;
|
|
179
179
|
case "DD":
|
|
180
|
-
return
|
|
180
|
+
return $.s(r.$D, 2, "0");
|
|
181
181
|
case "d":
|
|
182
|
-
return String(
|
|
182
|
+
return String(r.$W);
|
|
183
183
|
case "dd":
|
|
184
|
-
return
|
|
184
|
+
return W(e.weekdaysMin, r.$W, C, 2);
|
|
185
185
|
case "ddd":
|
|
186
|
-
return
|
|
186
|
+
return W(e.weekdaysShort, r.$W, C, 3);
|
|
187
187
|
case "dddd":
|
|
188
|
-
return
|
|
188
|
+
return C[r.$W];
|
|
189
189
|
case "H":
|
|
190
|
-
return String(
|
|
190
|
+
return String(M);
|
|
191
191
|
case "HH":
|
|
192
|
-
return
|
|
192
|
+
return $.s(M, 2, "0");
|
|
193
193
|
case "h":
|
|
194
|
-
return
|
|
194
|
+
return z(1);
|
|
195
195
|
case "hh":
|
|
196
|
-
return
|
|
196
|
+
return z(2);
|
|
197
197
|
case "a":
|
|
198
|
-
return
|
|
198
|
+
return P(M, w, !0);
|
|
199
199
|
case "A":
|
|
200
|
-
return
|
|
200
|
+
return P(M, w, !1);
|
|
201
201
|
case "m":
|
|
202
|
-
return String(
|
|
202
|
+
return String(w);
|
|
203
203
|
case "mm":
|
|
204
|
-
return
|
|
204
|
+
return $.s(w, 2, "0");
|
|
205
205
|
case "s":
|
|
206
|
-
return String(
|
|
206
|
+
return String(r.$s);
|
|
207
207
|
case "ss":
|
|
208
|
-
return
|
|
208
|
+
return $.s(r.$s, 2, "0");
|
|
209
209
|
case "SSS":
|
|
210
|
-
return
|
|
210
|
+
return $.s(r.$ms, 3, "0");
|
|
211
211
|
case "Z":
|
|
212
212
|
return a;
|
|
213
213
|
}
|
|
214
214
|
return null;
|
|
215
|
-
})(
|
|
215
|
+
})(O) || a.replace(":", "");
|
|
216
216
|
}));
|
|
217
|
-
},
|
|
217
|
+
}, n.utcOffset = function() {
|
|
218
218
|
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
|
|
219
|
-
},
|
|
220
|
-
var i, a = this,
|
|
221
|
-
return
|
|
219
|
+
}, n.diff = function(t, r, e) {
|
|
220
|
+
var i, a = this, M = $.p(r), w = x(t), T = (w.utcOffset() - this.utcOffset()) * o, C = this - w, k = function() {
|
|
221
|
+
return $.m(a, w);
|
|
222
222
|
};
|
|
223
|
-
switch (
|
|
224
|
-
case
|
|
225
|
-
i =
|
|
223
|
+
switch (M) {
|
|
224
|
+
case l:
|
|
225
|
+
i = k() / 12;
|
|
226
226
|
break;
|
|
227
|
-
case
|
|
228
|
-
i =
|
|
227
|
+
case g:
|
|
228
|
+
i = k();
|
|
229
229
|
break;
|
|
230
|
-
case
|
|
231
|
-
i =
|
|
230
|
+
case _:
|
|
231
|
+
i = k() / 3;
|
|
232
232
|
break;
|
|
233
|
-
case
|
|
234
|
-
i = (
|
|
233
|
+
case m:
|
|
234
|
+
i = (C - T) / 6048e5;
|
|
235
235
|
break;
|
|
236
|
-
case
|
|
237
|
-
i = (
|
|
236
|
+
case D:
|
|
237
|
+
i = (C - T) / 864e5;
|
|
238
238
|
break;
|
|
239
|
-
case
|
|
240
|
-
i =
|
|
239
|
+
case b:
|
|
240
|
+
i = C / y;
|
|
241
241
|
break;
|
|
242
|
-
case
|
|
243
|
-
i =
|
|
242
|
+
case Y:
|
|
243
|
+
i = C / o;
|
|
244
244
|
break;
|
|
245
|
-
case
|
|
246
|
-
i =
|
|
245
|
+
case v:
|
|
246
|
+
i = C / c;
|
|
247
247
|
break;
|
|
248
248
|
default:
|
|
249
|
-
i =
|
|
249
|
+
i = C;
|
|
250
250
|
}
|
|
251
|
-
return e ? i :
|
|
252
|
-
},
|
|
253
|
-
return this.endOf(
|
|
254
|
-
},
|
|
255
|
-
return
|
|
256
|
-
},
|
|
251
|
+
return e ? i : $.a(i);
|
|
252
|
+
}, n.daysInMonth = function() {
|
|
253
|
+
return this.endOf(g).$D;
|
|
254
|
+
}, n.$locale = function() {
|
|
255
|
+
return L[this.$L];
|
|
256
|
+
}, n.locale = function(t, r) {
|
|
257
257
|
if (!t) return this.$L;
|
|
258
|
-
var e = this.clone(), i =
|
|
258
|
+
var e = this.clone(), i = Q(t, r, !0);
|
|
259
259
|
return i && (e.$L = i), e;
|
|
260
|
-
},
|
|
261
|
-
return
|
|
262
|
-
},
|
|
260
|
+
}, n.clone = function() {
|
|
261
|
+
return $.w(this.$d, this);
|
|
262
|
+
}, n.toDate = function() {
|
|
263
263
|
return new Date(this.valueOf());
|
|
264
|
-
},
|
|
264
|
+
}, n.toJSON = function() {
|
|
265
265
|
return this.isValid() ? this.toISOString() : null;
|
|
266
|
-
},
|
|
266
|
+
}, n.toISOString = function() {
|
|
267
267
|
return this.$d.toISOString();
|
|
268
|
-
},
|
|
268
|
+
}, n.toString = function() {
|
|
269
269
|
return this.$d.toUTCString();
|
|
270
270
|
}, s;
|
|
271
|
-
})(),
|
|
272
|
-
return
|
|
273
|
-
|
|
274
|
-
return this.$g(
|
|
271
|
+
})(), ot = G.prototype;
|
|
272
|
+
return x.prototype = ot, [["$ms", h], ["$s", v], ["$m", Y], ["$H", b], ["$W", D], ["$M", g], ["$y", l], ["$D", p]].forEach((function(s) {
|
|
273
|
+
ot[s[1]] = function(n) {
|
|
274
|
+
return this.$g(n, s[0], s[1]);
|
|
275
275
|
};
|
|
276
|
-
})),
|
|
277
|
-
return s.$i || (s(
|
|
278
|
-
},
|
|
279
|
-
return
|
|
280
|
-
},
|
|
276
|
+
})), x.extend = function(s, n) {
|
|
277
|
+
return s.$i || (s(n, G, x), s.$i = !0), x;
|
|
278
|
+
}, x.locale = Q, x.isDayjs = q, x.unix = function(s) {
|
|
279
|
+
return x(1e3 * s);
|
|
280
|
+
}, x.en = L[R], x.Ls = L, x.p = {}, x;
|
|
281
281
|
}));
|
|
282
|
-
})(
|
|
282
|
+
})(et)), et.exports;
|
|
283
283
|
}
|
|
284
|
-
var
|
|
285
|
-
const
|
|
284
|
+
var gt = Mt();
|
|
285
|
+
const E = /* @__PURE__ */ $t(gt), V = 60, yt = [
|
|
286
286
|
"YYYY-MM-DD",
|
|
287
287
|
"YYYY/MM/DD",
|
|
288
288
|
"YYYY-MM-DD HH:mm",
|
|
289
289
|
"YYYY/MM/DD HH:mm",
|
|
290
290
|
"YYYY-MM-DD HH:mm:ss",
|
|
291
291
|
"YYYY/MM/DD HH:mm:ss"
|
|
292
|
-
],
|
|
293
|
-
if (!
|
|
292
|
+
], ut = (f) => {
|
|
293
|
+
if (!at(f))
|
|
294
294
|
return "00:00:00";
|
|
295
|
-
const
|
|
296
|
-
if (
|
|
295
|
+
const u = E(f).diff(E());
|
|
296
|
+
if (u <= 0)
|
|
297
297
|
return "00:00:00";
|
|
298
|
-
const
|
|
299
|
-
return `${
|
|
300
|
-
},
|
|
301
|
-
const
|
|
302
|
-
return `${
|
|
303
|
-
},
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
298
|
+
const c = Math.floor(u / 1e3), o = Math.floor(c / 86400), y = Math.floor(c % 86400 / 3600), h = Math.floor(c % 3600 / 60), v = c % 60;
|
|
299
|
+
return `${o ? `${o}:` : ""}${`${y}`.padStart(2, "0")}:${`${h}`.padStart(2, "0")}:${`${v}`.padStart(2, "0")}`;
|
|
300
|
+
}, lt = (f) => {
|
|
301
|
+
const u = (c) => `${c}`.padStart(2, "0");
|
|
302
|
+
return `${u(Math.floor(f / V / V))}:${u(Math.floor(f / V) % V)}:${u(f % V)}`;
|
|
303
|
+
}, at = (f) => yt.some((u) => E(f, u, !0).isValid()), tt = (f, u, c, o, y) => {
|
|
304
|
+
const h = o - u, v = y - c, Y = Math.sqrt(h * h + v * v).toFixed(2), b = Math.atan2(v, h) * 180 / Math.PI, D = (u + o) / 2, m = (c + y) / 2;
|
|
305
|
+
f.style.left = `${D}px`, f.style.top = `${m}px`, f.style.height = `${Y}px`, f.style.transform = `translate(-50%, -50%) rotate(${b + 90}deg)`;
|
|
306
|
+
}, vt = (f) => {
|
|
307
|
+
const u = f.clientWidth, c = f.clientHeight, o = Math.floor(Math.random() * 2);
|
|
308
|
+
let y = "", h = "", v = 0, Y = 0;
|
|
309
|
+
const b = f.querySelector(".l-line"), D = f.querySelector(".r-line");
|
|
310
|
+
if (o === 0) {
|
|
311
|
+
const m = 5 + Math.random() * 90, g = 100 - m;
|
|
312
|
+
v = Math.max(m, g), y = `
|
|
313
|
+
polygon(
|
|
314
|
+
0% 0%,
|
|
315
|
+
${m}% 0%,
|
|
316
|
+
${g}% 100%,
|
|
317
|
+
0% 100%
|
|
318
|
+
)`, h = `
|
|
319
|
+
polygon(
|
|
320
|
+
${m}% 0%,
|
|
321
|
+
100% 0%,
|
|
322
|
+
100% 100%,
|
|
323
|
+
${g}% 100%
|
|
324
|
+
)`;
|
|
325
|
+
const _ = u * m / 100, l = 0, p = u * g / 100, S = c;
|
|
326
|
+
tt(b, _, l, p, S), tt(D, _, l, p, S);
|
|
327
|
+
} else {
|
|
328
|
+
const m = 5 + Math.random() * 90, g = 100 - m;
|
|
329
|
+
Y = Math.max(m, g), y = `
|
|
330
|
+
polygon(
|
|
331
|
+
0% 0%,
|
|
332
|
+
100% 0%,
|
|
333
|
+
100% ${g}%,
|
|
334
|
+
0% ${m}%
|
|
335
|
+
)`, h = `
|
|
336
|
+
polygon(
|
|
337
|
+
0% ${m}%,
|
|
338
|
+
100% ${g}%,
|
|
339
|
+
100% 100%,
|
|
340
|
+
0% 100%
|
|
341
|
+
)`;
|
|
342
|
+
const _ = 0, l = c * m / 100, p = u, S = c * g / 100;
|
|
343
|
+
tt(b, _, l, p, S), tt(D, _, l, p, S);
|
|
344
|
+
}
|
|
345
|
+
return {
|
|
346
|
+
lPath: y,
|
|
347
|
+
rPath: h,
|
|
348
|
+
lTranslate: o === 0 ? `translateX(-${v}%)` : `translateY(-${Y}%)`,
|
|
349
|
+
rTranslate: o === 0 ? `translateX(${v}%)` : `translateY(${Y}%)`
|
|
350
|
+
};
|
|
351
|
+
}, Dt = (f, u = 0.3) => {
|
|
352
|
+
const c = document.createElement("div");
|
|
353
|
+
c.style.color = f, document.body.appendChild(c);
|
|
354
|
+
const o = getComputedStyle(c).color;
|
|
355
|
+
document.body.removeChild(c);
|
|
356
|
+
const [y, h, v] = o.match(/\d+/g).slice(0, 3).map(Number), b = 0.299 * y + 0.587 * h + 0.114 * v > 128, D = (m) => Math.round(b ? m * (1 - u) : m + (255 - m) * u);
|
|
357
|
+
return "#" + [D(y), D(h), D(v)].map((m) => m.toString(16).padStart(2, "0")).join("").toUpperCase();
|
|
358
|
+
}, St = () => Math.floor(Math.random() * 361), dt = "HH:mm:ss", ft = 900, xt = (f) => {
|
|
359
|
+
const { mode: u, showType: c = "default", size: o = 40, className: y, bgColor: h, numColor: v, borderColor: Y, textShadowColor: b, finishCountFn: D } = f, [m, g] = ht(
|
|
360
|
+
c === "count" ? lt(0) : c === "default" ? E().format(dt) : ut(c)
|
|
361
|
+
), _ = it({
|
|
307
362
|
t: null
|
|
308
|
-
}),
|
|
309
|
-
"--card-size": `${
|
|
310
|
-
"--card-w": `${
|
|
311
|
-
"--card-h": `${
|
|
363
|
+
}), l = {
|
|
364
|
+
"--card-size": `${o}px`,
|
|
365
|
+
"--card-w": `${o * 1.25}px`,
|
|
366
|
+
"--card-h": `${o * 2}px`,
|
|
312
367
|
// 下面两个必须是一个确定的数字,不能是表达式
|
|
313
|
-
"--transx": `${-
|
|
314
|
-
"--transy": `${-
|
|
315
|
-
"--delay": `${
|
|
316
|
-
"--bgColor":
|
|
317
|
-
"--
|
|
318
|
-
"--
|
|
368
|
+
"--transx": `${-o * 1.25 / 2}px`,
|
|
369
|
+
"--transy": `${-o}px`,
|
|
370
|
+
"--delay": `${ft / 1e3}s`,
|
|
371
|
+
"--bgColor": h,
|
|
372
|
+
"--numColor": v,
|
|
373
|
+
"--borderColor": Y,
|
|
374
|
+
"--textShadow": b ? `1px 2px 3px ${b}` : "none",
|
|
375
|
+
"--transColor": Dt(h || "#333")
|
|
319
376
|
};
|
|
320
|
-
|
|
321
|
-
let
|
|
322
|
-
|
|
323
|
-
let
|
|
324
|
-
|
|
377
|
+
nt(() => {
|
|
378
|
+
let S = Date.now();
|
|
379
|
+
_.current.t && (clearInterval(_.current.t), _.current.t = null, S = Date.now()), _.current.t = setInterval(() => {
|
|
380
|
+
let N = () => "";
|
|
381
|
+
c === "count" ? N = () => lt(Math.floor((Date.now() - S) / 1e3)) : c === "default" ? N = () => E().format(dt) : N = () => ut(c), g(N());
|
|
325
382
|
}, 1e3);
|
|
326
|
-
}, [
|
|
327
|
-
|
|
328
|
-
|
|
383
|
+
}, [c]), nt(() => {
|
|
384
|
+
at(c) && m === "00:00:00" && D && setTimeout(() => {
|
|
385
|
+
D();
|
|
329
386
|
}, 1e3);
|
|
330
|
-
}, [
|
|
331
|
-
const
|
|
332
|
-
if (!
|
|
387
|
+
}, [m, c, D]);
|
|
388
|
+
const p = () => {
|
|
389
|
+
if (!m)
|
|
333
390
|
return null;
|
|
334
|
-
const
|
|
335
|
-
return /* @__PURE__ */
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
391
|
+
const S = m.split(":"), N = S[S.length - 3].split(""), Z = S[S.length - 2].split(""), J = S[S.length - 1].split(""), A = S.length === 4 ? S[0].split("") : [], H = at(c), R = A.map((B, q) => /* @__PURE__ */ d(F, { mode: u, time: +B, limit: H ? -9 : 9, size: o }, q)), L = /* @__PURE__ */ d("span", { children: ":" });
|
|
392
|
+
return /* @__PURE__ */ j(st, { children: [
|
|
393
|
+
R.length ? /* @__PURE__ */ j(st, { children: [
|
|
394
|
+
R,
|
|
395
|
+
H ? /* @__PURE__ */ d("p", { children: "天" }) : L
|
|
339
396
|
] }) : null,
|
|
340
|
-
/* @__PURE__ */
|
|
341
|
-
/* @__PURE__ */
|
|
342
|
-
|
|
343
|
-
/* @__PURE__ */
|
|
344
|
-
/* @__PURE__ */
|
|
345
|
-
|
|
346
|
-
/* @__PURE__ */
|
|
347
|
-
/* @__PURE__ */
|
|
348
|
-
|
|
397
|
+
/* @__PURE__ */ d(F, { mode: u, time: +N[0], limit: H ? -2 : 2, size: o }),
|
|
398
|
+
/* @__PURE__ */ d(F, { mode: u, time: +N[1], limit: H ? -9 : 9, size: o }),
|
|
399
|
+
H ? /* @__PURE__ */ d("p", { children: "小时" }) : L,
|
|
400
|
+
/* @__PURE__ */ d(F, { mode: u, time: +Z[0], limit: H ? -5 : 5, size: o }),
|
|
401
|
+
/* @__PURE__ */ d(F, { mode: u, time: +Z[1], limit: H ? -9 : 9, size: o }),
|
|
402
|
+
H ? /* @__PURE__ */ d("p", { children: "分" }) : L,
|
|
403
|
+
/* @__PURE__ */ d(F, { mode: u, time: +J[0], limit: H ? -5 : 5, size: o }),
|
|
404
|
+
/* @__PURE__ */ d(F, { mode: u, time: +J[1], limit: H ? -9 : 9, size: o }),
|
|
405
|
+
H && /* @__PURE__ */ d("p", { children: "秒" })
|
|
349
406
|
] });
|
|
350
407
|
};
|
|
351
|
-
return /* @__PURE__ */
|
|
352
|
-
},
|
|
353
|
-
const { time:
|
|
354
|
-
t:
|
|
355
|
-
}),
|
|
356
|
-
"--driftX": `${Math.floor(Math.random() * (-
|
|
357
|
-
"--driftY": `${Math.floor(Math.random() * (-
|
|
408
|
+
return /* @__PURE__ */ d("div", { className: `time-runner ${y || ""}`, style: l, children: p() });
|
|
409
|
+
}, Yt = (f) => {
|
|
410
|
+
const { time: u, limit: c, mode: o, size: y } = f, [h, v] = ht(!1), Y = it({
|
|
411
|
+
t: u
|
|
412
|
+
}), b = it(null), D = rt(() => u !== Y.current.t && o === "drift" ? {
|
|
413
|
+
"--driftX": `${Math.floor(Math.random() * (-y - y + 1)) + y}px`,
|
|
414
|
+
"--driftY": `${Math.floor(Math.random() * (-y * 2 - y * 2 + 1)) + y * 2}px`,
|
|
358
415
|
"--driftRZ": `${Math.floor(Math.random() * 151) + 50}deg`,
|
|
359
416
|
"--driftRX": `${Math.floor(Math.random() * 151) + 50}deg`
|
|
360
|
-
} : null, [
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
417
|
+
} : null, [u, y, o]), m = rt(() => {
|
|
418
|
+
if (h && o === "cut") {
|
|
419
|
+
const { lPath: l, rPath: p, lTranslate: S, rTranslate: N } = vt(b.current);
|
|
420
|
+
return {
|
|
421
|
+
"--lPolygon": l,
|
|
422
|
+
"--rPolygon": p,
|
|
423
|
+
"--cutLTranslate": S,
|
|
424
|
+
"--cutRTranslate": N
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
return null;
|
|
428
|
+
}, [h, o]), g = rt(() => h && o === "erase" ? {
|
|
429
|
+
"--start-deg": `${St()}deg`,
|
|
430
|
+
"--deg": "360deg"
|
|
431
|
+
} : null, [h, o]);
|
|
432
|
+
return nt(() => {
|
|
433
|
+
u !== Y.current.t && v(!0);
|
|
434
|
+
}, [u]), nt(() => {
|
|
435
|
+
h && setTimeout(() => {
|
|
436
|
+
Y.current.t = u, v(!1);
|
|
437
|
+
}, ft);
|
|
438
|
+
}, [h, u]), /* @__PURE__ */ d(st, { children: (() => {
|
|
439
|
+
const { t: l } = Y.current;
|
|
440
|
+
let p = l;
|
|
441
|
+
switch (c > 0 ? p = l >= c ? 0 : l + 1 : p = l <= 0 ? Math.abs(c) : l - 1, o) {
|
|
371
442
|
case "card":
|
|
372
|
-
return /* @__PURE__ */
|
|
373
|
-
/* @__PURE__ */
|
|
374
|
-
/* @__PURE__ */
|
|
375
|
-
/* @__PURE__ */
|
|
443
|
+
return /* @__PURE__ */ j("div", { className: "clock-card font-num", children: [
|
|
444
|
+
/* @__PURE__ */ j("div", { className: `clock-b ${h ? "run" : ""}`, children: [
|
|
445
|
+
/* @__PURE__ */ d("p", { children: p }),
|
|
446
|
+
/* @__PURE__ */ d("p", { children: p })
|
|
376
447
|
] }),
|
|
377
|
-
/* @__PURE__ */
|
|
378
|
-
/* @__PURE__ */
|
|
379
|
-
/* @__PURE__ */
|
|
448
|
+
/* @__PURE__ */ j("div", { className: `clock-f ${h ? "run" : ""}`, children: [
|
|
449
|
+
/* @__PURE__ */ d("p", { children: l }),
|
|
450
|
+
/* @__PURE__ */ d("p", { children: l })
|
|
380
451
|
] })
|
|
381
452
|
] });
|
|
382
453
|
case "cube-v":
|
|
383
|
-
return /* @__PURE__ */
|
|
384
|
-
/* @__PURE__ */
|
|
385
|
-
/* @__PURE__ */
|
|
454
|
+
return /* @__PURE__ */ d("div", { className: `cube-v font-num ${h ? "run" : ""}`, children: /* @__PURE__ */ j("div", { children: [
|
|
455
|
+
/* @__PURE__ */ d("p", { children: p }),
|
|
456
|
+
/* @__PURE__ */ d("p", { children: l })
|
|
386
457
|
] }) });
|
|
387
458
|
case "cube-h":
|
|
388
|
-
return /* @__PURE__ */
|
|
389
|
-
/* @__PURE__ */
|
|
390
|
-
/* @__PURE__ */
|
|
459
|
+
return /* @__PURE__ */ d("div", { className: `cube-h font-num ${h ? "run" : ""}`, children: /* @__PURE__ */ j("div", { children: [
|
|
460
|
+
/* @__PURE__ */ d("p", { children: p }),
|
|
461
|
+
/* @__PURE__ */ d("p", { children: l })
|
|
391
462
|
] }) });
|
|
392
463
|
case "drift":
|
|
393
|
-
return /* @__PURE__ */
|
|
464
|
+
return /* @__PURE__ */ d("div", { className: `drift font-num ${h ? "run" : ""}`, "data-digit": l, style: D, children: p });
|
|
465
|
+
case "cut":
|
|
466
|
+
return /* @__PURE__ */ j("div", { ref: b, className: `cut font-num ${h ? "run" : ""}`, style: m, children: [
|
|
467
|
+
/* @__PURE__ */ j("div", { children: [
|
|
468
|
+
/* @__PURE__ */ d("p", { children: l }),
|
|
469
|
+
/* @__PURE__ */ d("div", { className: "l-line" })
|
|
470
|
+
] }),
|
|
471
|
+
/* @__PURE__ */ j("div", { children: [
|
|
472
|
+
/* @__PURE__ */ d("p", { children: l }),
|
|
473
|
+
/* @__PURE__ */ d("div", { className: "r-line" })
|
|
474
|
+
] }),
|
|
475
|
+
/* @__PURE__ */ d("p", { children: p })
|
|
476
|
+
] });
|
|
477
|
+
case "erase":
|
|
478
|
+
return /* @__PURE__ */ j("div", { className: `erase font-num ${h ? "run" : ""}`, "data-digit": l, children: [
|
|
479
|
+
/* @__PURE__ */ d("p", { children: p }),
|
|
480
|
+
/* @__PURE__ */ d("div", { style: g })
|
|
481
|
+
] });
|
|
394
482
|
default:
|
|
395
|
-
return /* @__PURE__ */
|
|
483
|
+
return /* @__PURE__ */ d("div", { className: "font-num", children: /* @__PURE__ */ d("p", { children: l }) });
|
|
396
484
|
}
|
|
397
485
|
})() });
|
|
398
|
-
},
|
|
486
|
+
}, F = mt(Yt);
|
|
399
487
|
export {
|
|
400
|
-
|
|
488
|
+
xt as TimeRunner
|
|
401
489
|
};
|
package/dist/time-runner.umd.js
CHANGED
|
@@ -1,2 +1,26 @@
|
|
|
1
|
-
(function(
|
|
2
|
-
/*$vite$:1*/`,document.head.appendChild(nt);function lt(m){return m&&m.__esModule&&Object.prototype.hasOwnProperty.call(m,"default")?m.default:m}var Z={exports:{}},ut=Z.exports,it;function ht(){return it||(it=1,(function(m,l){(function(u,f){m.exports=f()})(ut,(function(){var u=1e3,f=6e4,k=36e5,$="millisecond",S="second",A="minute",C="hour",w="day",v="week",h="month",Q="quarter",O="year",g="date",j="Invalid Date",G=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,B=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,rt={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(i){var e=["th","st","nd","rd"],t=i%100;return"["+i+(e[(t-20)%10]||e[t]||e[0])+"]"}},y=function(i,e,t){var n=String(i);return!n||n.length>=e?i:""+Array(e+1-n.length).join(t)+i},_={s:y,z:function(i){var e=-i.utcOffset(),t=Math.abs(e),n=Math.floor(t/60),r=t%60;return(e<=0?"+":"-")+y(n,2,"0")+":"+y(r,2,"0")},m:function i(e,t){if(e.date()<t.date())return-i(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,h),a=t-r<0,s=e.clone().add(n+(a?-1:1),h);return+(-(n+(t-r)/(a?r-s:s-r))||0)},a:function(i){return i<0?Math.ceil(i)||0:Math.floor(i)},p:function(i){return{M:h,y:O,w:v,d:w,D:g,h:C,m:A,s:S,ms:$,Q}[i]||String(i||"").toLowerCase().replace(/s$/,"")},u:function(i){return i===void 0}},H="en",W={};W[H]=rt;var q="$isDayjsObject",et=function(i){return i instanceof P||!(!i||!i[q])},F=function i(e,t,n){var r;if(!e)return H;if(typeof e=="string"){var a=e.toLowerCase();W[a]&&(r=a),t&&(W[a]=t,r=a);var s=e.split("-");if(!r&&s.length>1)return i(s[0])}else{var d=e.name;W[d]=e,r=d}return!n&&r&&(H=r),r||!n&&H},b=function(i,e){if(et(i))return i.clone();var t=typeof e=="object"?e:{};return t.date=i,t.args=arguments,new P(t)},c=_;c.l=F,c.i=et,c.w=function(i,e){return b(i,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var P=(function(){function i(t){this.$L=F(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[q]=!0}var e=i.prototype;return e.parse=function(t){this.$d=(function(n){var r=n.date,a=n.utc;if(r===null)return new Date(NaN);if(c.u(r))return new Date;if(r instanceof Date)return new Date(r);if(typeof r=="string"&&!/Z$/i.test(r)){var s=r.match(G);if(s){var d=s[2]-1||0,p=(s[7]||"0").substring(0,3);return a?new Date(Date.UTC(s[1],d,s[3]||1,s[4]||0,s[5]||0,s[6]||0,p)):new Date(s[1],d,s[3]||1,s[4]||0,s[5]||0,s[6]||0,p)}}return new Date(r)})(t),this.init()},e.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},e.$utils=function(){return c},e.isValid=function(){return this.$d.toString()!==j},e.isSame=function(t,n){var r=b(t);return this.startOf(n)<=r&&r<=this.endOf(n)},e.isAfter=function(t,n){return b(t)<this.startOf(n)},e.isBefore=function(t,n){return this.endOf(n)<b(t)},e.$g=function(t,n,r){return c.u(t)?this[n]:this.set(r,t)},e.unix=function(){return Math.floor(this.valueOf()/1e3)},e.valueOf=function(){return this.$d.getTime()},e.startOf=function(t,n){var r=this,a=!!c.u(n)||n,s=c.p(t),d=function(K,D){var V=c.w(r.$u?Date.UTC(r.$y,D,K):new Date(r.$y,D,K),r);return a?V:V.endOf(w)},p=function(K,D){return c.w(r.toDate()[K].apply(r.toDate("s"),(a?[0,0,0,0]:[23,59,59,999]).slice(D)),r)},x=this.$W,M=this.$M,Y=this.$D,E="set"+(this.$u?"UTC":"");switch(s){case O:return a?d(1,0):d(31,11);case h:return a?d(1,M):d(0,M+1);case v:var X=this.$locale().weekStart||0,U=(x<X?x+7:x)-X;return d(a?Y-U:Y+(6-U),M);case w:case g:return p(E+"Hours",0);case C:return p(E+"Minutes",1);case A:return p(E+"Seconds",2);case S:return p(E+"Milliseconds",3);default:return this.clone()}},e.endOf=function(t){return this.startOf(t,!1)},e.$set=function(t,n){var r,a=c.p(t),s="set"+(this.$u?"UTC":""),d=(r={},r[w]=s+"Date",r[g]=s+"Date",r[h]=s+"Month",r[O]=s+"FullYear",r[C]=s+"Hours",r[A]=s+"Minutes",r[S]=s+"Seconds",r[$]=s+"Milliseconds",r)[a],p=a===w?this.$D+(n-this.$W):n;if(a===h||a===O){var x=this.clone().set(g,1);x.$d[d](p),x.init(),this.$d=x.set(g,Math.min(this.$D,x.daysInMonth())).$d}else d&&this.$d[d](p);return this.init(),this},e.set=function(t,n){return this.clone().$set(t,n)},e.get=function(t){return this[c.p(t)]()},e.add=function(t,n){var r,a=this;t=Number(t);var s=c.p(n),d=function(M){var Y=b(a);return c.w(Y.date(Y.date()+Math.round(M*t)),a)};if(s===h)return this.set(h,this.$M+t);if(s===O)return this.set(O,this.$y+t);if(s===w)return d(1);if(s===v)return d(7);var p=(r={},r[A]=f,r[C]=k,r[S]=u,r)[s]||1,x=this.$d.getTime()+t*p;return c.w(x,this)},e.subtract=function(t,n){return this.add(-1*t,n)},e.format=function(t){var n=this,r=this.$locale();if(!this.isValid())return r.invalidDate||j;var a=t||"YYYY-MM-DDTHH:mm:ssZ",s=c.z(this),d=this.$H,p=this.$m,x=this.$M,M=r.weekdays,Y=r.months,E=r.meridiem,X=function(D,V,J,R){return D&&(D[V]||D(n,a))||J[V].slice(0,R)},U=function(D){return c.s(d%12||12,D,"0")},K=E||function(D,V,J){var R=D<12?"AM":"PM";return J?R.toLowerCase():R};return a.replace(B,(function(D,V){return V||(function(J){switch(J){case"YY":return String(n.$y).slice(-2);case"YYYY":return c.s(n.$y,4,"0");case"M":return x+1;case"MM":return c.s(x+1,2,"0");case"MMM":return X(r.monthsShort,x,Y,3);case"MMMM":return X(Y,x);case"D":return n.$D;case"DD":return c.s(n.$D,2,"0");case"d":return String(n.$W);case"dd":return X(r.weekdaysMin,n.$W,M,2);case"ddd":return X(r.weekdaysShort,n.$W,M,3);case"dddd":return M[n.$W];case"H":return String(d);case"HH":return c.s(d,2,"0");case"h":return U(1);case"hh":return U(2);case"a":return K(d,p,!0);case"A":return K(d,p,!1);case"m":return String(p);case"mm":return c.s(p,2,"0");case"s":return String(n.$s);case"ss":return c.s(n.$s,2,"0");case"SSS":return c.s(n.$ms,3,"0");case"Z":return s}return null})(D)||s.replace(":","")}))},e.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},e.diff=function(t,n,r){var a,s=this,d=c.p(n),p=b(t),x=(p.utcOffset()-this.utcOffset())*f,M=this-p,Y=function(){return c.m(s,p)};switch(d){case O:a=Y()/12;break;case h:a=Y();break;case Q:a=Y()/3;break;case v:a=(M-x)/6048e5;break;case w:a=(M-x)/864e5;break;case C:a=M/k;break;case A:a=M/f;break;case S:a=M/u;break;default:a=M}return r?a:c.a(a)},e.daysInMonth=function(){return this.endOf(h).$D},e.$locale=function(){return W[this.$L]},e.locale=function(t,n){if(!t)return this.$L;var r=this.clone(),a=F(t,n,!0);return a&&(r.$L=a),r},e.clone=function(){return c.w(this.$d,this)},e.toDate=function(){return new Date(this.valueOf())},e.toJSON=function(){return this.isValid()?this.toISOString():null},e.toISOString=function(){return this.$d.toISOString()},e.toString=function(){return this.$d.toUTCString()},i})(),dt=P.prototype;return b.prototype=dt,[["$ms",$],["$s",S],["$m",A],["$H",C],["$W",w],["$M",h],["$y",O],["$D",g]].forEach((function(i){dt[i[1]]=function(e){return this.$g(e,i[0],i[1])}})),b.extend=function(i,e){return i.$i||(i(e,P,b),i.$i=!0),b},b.locale=F,b.isDayjs=et,b.unix=function(i){return b(1e3*i)},b.en=W[H],b.Ls=W,b.p={},b}))})(Z)),Z.exports}var ft=ht();const I=lt(ft),L=60,pt=["YYYY-MM-DD","YYYY/MM/DD","YYYY-MM-DD HH:mm","YYYY/MM/DD HH:mm","YYYY-MM-DD HH:mm:ss","YYYY/MM/DD HH:mm:ss"],ot=m=>{if(!tt(m))return"00:00:00";const l=I(m).diff(I());if(l<=0)return"00:00:00";const u=Math.floor(l/1e3),f=Math.floor(u/86400),k=Math.floor(u%86400/3600),$=Math.floor(u%3600/60),S=u%60;return`${f?`${f}:`:""}${`${k}`.padStart(2,"0")}:${`${$}`.padStart(2,"0")}:${`${S}`.padStart(2,"0")}`},at=m=>{const l=u=>`${u}`.padStart(2,"0");return`${l(Math.floor(m/L/L))}:${l(Math.floor(m/L)%L)}:${l(m%L)}`},tt=m=>pt.some(l=>I(m,l,!0).isValid()),st="HH:mm:ss",ct=900,mt=m=>{const{mode:l,showType:u="default",size:f=40,className:k,bgColor:$,borderColor:S,textShadowColor:A,finishCountFn:C}=m,[w,v]=T.useState(u==="count"?at(0):u==="default"?I().format(st):ot(u)),h=T.useRef({t:null}),Q={"--card-size":`${f}px`,"--card-w":`${f*1.25}px`,"--card-h":`${f*2}px`,"--transx":`${-f*1.25/2}px`,"--transy":`${-f}px`,"--delay":`${ct/1e3}s`,"--bgColor":$,"--borderColor":S,"--textShadow":A?`1px 2px 3px ${A}`:"none"};T.useEffect(()=>{let g=Date.now();h.current.t&&(clearInterval(h.current.t),h.current.t=null,g=Date.now()),h.current.t=setInterval(()=>{let j=()=>"";u==="count"?j=()=>at(Math.floor((Date.now()-g)/1e3)):u==="default"?j=()=>I().format(st):j=()=>ot(u),v(j())},1e3)},[u]),T.useEffect(()=>{tt(u)&&w==="00:00:00"&&C&&setTimeout(()=>{C()},1e3)},[w,u,C]);const O=()=>{if(!w)return null;const g=w.split(":"),j=g[g.length-3].split(""),G=g[g.length-2].split(""),B=g[g.length-1].split(""),rt=g.length===4?g[0].split(""):[],y=tt(u),_=rt.map((W,q)=>o.jsx(z,{mode:l,time:+W,limit:y?-9:9,size:f},q)),H=o.jsx("span",{children:":"});return o.jsxs(o.Fragment,{children:[_.length?o.jsxs(o.Fragment,{children:[_,y?o.jsx("p",{children:"天"}):H]}):null,o.jsx(z,{mode:l,time:+j[0],limit:y?-2:2,size:f}),o.jsx(z,{mode:l,time:+j[1],limit:y?-9:9,size:f}),y?o.jsx("p",{children:"小时"}):H,o.jsx(z,{mode:l,time:+G[0],limit:y?-5:5,size:f}),o.jsx(z,{mode:l,time:+G[1],limit:y?-9:9,size:f}),y?o.jsx("p",{children:"分"}):H,o.jsx(z,{mode:l,time:+B[0],limit:y?-5:5,size:f}),o.jsx(z,{mode:l,time:+B[1],limit:y?-9:9,size:f}),y&&o.jsx("p",{children:"秒"})]})};return o.jsx("div",{className:`time-runner ${k||""}`,style:Q,children:O()})},vt=m=>{const{time:l,limit:u,mode:f,size:k}=m,[$,S]=T.useState(!1),A=T.useRef({t:l}),C=T.useMemo(()=>l!==A.current.t?{"--driftX":`${Math.floor(Math.random()*(-k-k+1))+k}px`,"--driftY":`${Math.floor(Math.random()*(-k*2-k*2+1))+k*2}px`,"--driftRZ":`${Math.floor(Math.random()*151)+50}deg`,"--driftRX":`${Math.floor(Math.random()*151)+50}deg`}:null,[l,k]);T.useEffect(()=>{l!==A.current.t&&S(!0)},[l]),T.useEffect(()=>{$&&setTimeout(()=>{A.current.t=l,S(!1)},ct)},[$,l]);const w=()=>{const{t:v}=A.current;let h=v;switch(u>0?h=v>=u?0:v+1:h=v<=0?Math.abs(u):v-1,f){case"card":return o.jsxs("div",{className:"clock-card font-num",children:[o.jsxs("div",{className:`clock-b ${$?"run":""}`,children:[o.jsx("p",{children:h}),o.jsx("p",{children:h})]}),o.jsxs("div",{className:`clock-f ${$?"run":""}`,children:[o.jsx("p",{children:v}),o.jsx("p",{children:v})]})]});case"cube-v":return o.jsx("div",{className:`cube-v font-num ${$?"run":""}`,children:o.jsxs("div",{children:[o.jsx("p",{children:h}),o.jsx("p",{children:v})]})});case"cube-h":return o.jsx("div",{className:`cube-h font-num ${$?"run":""}`,children:o.jsxs("div",{children:[o.jsx("p",{children:h}),o.jsx("p",{children:v})]})});case"drift":return o.jsx("div",{className:`drift font-num ${$?"run":""}`,"data-digit":v,style:C,children:h});default:return o.jsx("div",{className:"font-num",children:o.jsx("p",{children:v})})}};return o.jsx(o.Fragment,{children:w()})},z=T.memo(vt);N.TimeRunner=mt,Object.defineProperty(N,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(z,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react"],o):(z=typeof globalThis<"u"?globalThis:z||self,o(z["time-runner"]={},z.jsxRuntime,z.React))})(this,(function(z,o,j){"use strict";var ot=document.createElement("style");ot.textContent=`@font-face{font-family:DIN-num-font;src:url(data:font/woff2;base64,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)}.font-num{font-family:DIN-num-font}.time-runner{width:max-content;display:flex;justify-content:space-between;align-items:center;margin:0 auto;-webkit-user-select:none;user-select:none;position:relative;font-variant-numeric:tabular-nums}.time-runner span{font-size:var(--card-size, 40px);margin:0 3px;padding-bottom:3px;display:inline-block}.time-runner>p{margin:0 3px}.time-runner>div{font-size:var(--card-size, 40px)}.time-runner>div>p{color:var(--numColor, #333);text-shadow:var(--textShadow)}.clock-card{position:relative;height:var(--card-h, 80px);width:var(--card-w, 50px);box-shadow:0 1px 5px #333;border-radius:6px}.clock-card:before{content:"";position:absolute;top:50%;left:0;background-color:#999;width:100%;height:1.5px;z-index:3;overflow:hidden}.clock-card .clock-f,.clock-card .clock-b{width:100%;height:100%;position:absolute;top:0;left:0}.clock-card .clock-f p,.clock-card .clock-b p{position:absolute;left:0;height:50%;width:100%;margin-bottom:0;text-align:center;font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);color:var(--numColor, #fff);text-shadow:var(--textShadow);overflow:hidden;border-left:solid 1px var(--borderColor, #999);border-right:solid 1px var(--borderColor, #999)}.clock-card .clock-f p:nth-child(1),.clock-card .clock-b p:nth-child(1){top:0;border-top:solid 1px var(--borderColor, #999)}.clock-card .clock-f p:nth-child(2),.clock-card .clock-b p:nth-child(2){bottom:0;border-bottom:solid 1px var(--borderColor, #999)}.clock-card .clock-f p:nth-child(1){line-height:var(--card-h, 80px);transform-origin:bottom;backface-visibility:hidden;border-radius:6px 6px 0 0}.clock-card .clock-f p:nth-child(2){line-height:3px;border-radius:0 0 6px 6px}.clock-card .clock-f.run p:nth-child(1){transition:var(--delay) ease-in-out;transform:perspective(50px) rotateX(-180deg)}.clock-card .clock-b p:nth-child(1){line-height:var(--card-h, 80px);border-radius:6px 6px 0 0}.clock-card .clock-b p:nth-child(2){line-height:3px;transform-origin:top;transform:perspective(50px) rotateX(179.99deg);backface-visibility:hidden;border-radius:0 0 6px 6px}.clock-card .clock-b.run p:nth-child(2){transition:var(--delay) ease-in-out;transform:rotateX(0);z-index:2}.cube-v{width:var(--card-w, 50px);height:var(--card-h, 80px);position:relative;perspective:300px}.cube-v div{width:100%;height:100%;transform-style:preserve-3d;transform-origin:center center var(--transy)}.cube-v p{width:100%;height:100%;line-height:var(--card-h, 80px);text-align:center;font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);margin-bottom:0;box-shadow:0 1px 2px #333;border-radius:2px}.cube-v p:nth-child(1){position:absolute;transform-origin:0 100%;transform:translateY(-100%) rotateX(90deg)}.cube-v.run div{transform:rotateX(-90deg);transition:var(--delay)}.cube-h{width:var(--card-w, 50px);height:var(--card-h, 80px);position:relative;perspective:300px}.cube-h div{width:100%;height:100%;transform-style:preserve-3d;transform-origin:center center var(--transx)}.cube-h p{width:100%;height:100%;line-height:var(--card-h, 80px);text-align:center;font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);margin-bottom:0;box-shadow:0 1px 2px #333;border-radius:2px}.cube-h p:nth-child(1){position:absolute;transform-origin:100% 0;transform:translate(-100%) rotateY(-90deg)}.cube-h.run div{transform:rotateY(90deg);transition:var(--delay)}.drift{height:var(--card-h, 80px);width:var(--card-w, 50px);font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);line-height:var(--card-h, 80px);text-align:center;border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);box-shadow:0 1px 2px #333;border-radius:2px;position:relative}.drift:before{content:attr(data-digit);position:absolute;top:0;left:0;line-height:var(--card-h, 80px);width:100%;text-align:center;overflow:hidden;height:100%;background-color:var(--bgColor, #333);transform-origin:center}.drift.run:before{transform:translate(var(--driftX),var(--driftY)) rotate(var(--driftRZ)) rotateX(var(--driftRX));opacity:0;transition:var(--delay);border:solid 2px var(--borderColor, #999)}.cut{height:var(--card-h, 80px);width:var(--card-w, 50px);font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);line-height:var(--card-h, 80px);text-align:center;border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);box-shadow:0 1px 2px #333;border-radius:2px;position:relative;overflow:hidden}.cut>p{color:var(--numColor, #fff)!important;opacity:0}.cut>div{position:absolute;inset:0;line-height:var(--card-h, 80px);text-align:center;overflow:hidden}.cut>div:nth-child(1){clip-path:var(--lPolygon)}.cut>div:nth-child(2){clip-path:var(--rPolygon)}.cut>div>div{position:absolute;width:2px;background-color:transparent;z-index:10}.cut.run>div:nth-child(1){transition:var(--delay);transform:var(--cutLTranslate)}.cut.run>div:nth-child(2){transition:var(--delay);transform:var(--cutRTranslate)}.cut.run>p{transition:.6s;transition-delay:.15s;opacity:1}.cut.run .l-line,.cut.run .r-line{background-color:var(--numColor, #fff)}@property --deg{syntax: "<angle>"; inherits: false; initial-value: 0deg;}.erase{height:var(--card-h, 80px);width:var(--card-w, 50px);font-size:var(--card-size, 40px);background-color:var(--bgColor, #333);line-height:var(--card-h, 80px);text-align:center;border:solid 1px var(--borderColor, #999);color:var(--numColor, #fff);text-shadow:var(--textShadow);box-shadow:0 1px 2px #333;border-radius:2px;position:relative;overflow:hidden}.erase>p{color:var(--numColor, #fff)!important;opacity:0;transform:scale(0)}.erase:before{content:attr(data-digit);position:absolute;inset:0;line-height:var(--card-h, 80px);text-align:center;z-index:1}.erase>div{position:absolute;inset:0;opacity:1;z-index:2;background:conic-gradient(from var(--start-deg, 0),var(--transColor) 0deg,var(--transColor) var(--deg),transparent var(--deg),transparent 360deg)}.erase.run:before{transition:.2s;transition-delay:.5s;opacity:0}.erase.run>div{opacity:0;transition-property:--deg,opacity;transition-duration:.6s,.1s;transition-delay:0s,.6s}.erase.run>p{transition:.4s;transition-delay:.5s;opacity:1;transform:scale(1)}
|
|
2
|
+
/*$vite$:1*/`,document.head.appendChild(ot);function ut(f){return f&&f.__esModule&&Object.prototype.hasOwnProperty.call(f,"default")?f.default:f}var P={exports:{}},ht=P.exports,at;function ft(){return at||(at=1,(function(f,d){(function(l,c){f.exports=c()})(ht,(function(){var l=1e3,c=6e4,b=36e5,h="millisecond",y="second",w="minute",k="hour",M="day",p="week",x="month",Y="quarter",u="year",g="date",$="Invalid Date",N=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,_=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,F={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(a){var e=["th","st","nd","rd"],t=a%100;return"["+a+(e[(t-20)%10]||e[t]||e[0])+"]"}},Z=function(a,e,t){var n=String(a);return!n||n.length>=e?a:""+Array(e+1-n.length).join(t)+a},O={s:Z,z:function(a){var e=-a.utcOffset(),t=Math.abs(e),n=Math.floor(t/60),r=t%60;return(e<=0?"+":"-")+Z(n,2,"0")+":"+Z(r,2,"0")},m:function a(e,t){if(e.date()<t.date())return-a(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,x),i=t-r<0,s=e.clone().add(n+(i?-1:1),x);return+(-(n+(t-r)/(i?r-s:s-r))||0)},a:function(a){return a<0?Math.ceil(a)||0:Math.floor(a)},p:function(a){return{M:x,y:u,w:p,d:M,D:g,h:k,m:w,s:y,ms:h,Q:Y}[a]||String(a||"").toLowerCase().replace(/s$/,"")},u:function(a){return a===void 0}},X="en",W={};W[X]=F;var R="$isDayjsObject",Q=function(a){return a instanceof rt||!(!a||!a[R])},tt=function a(e,t,n){var r;if(!e)return X;if(typeof e=="string"){var i=e.toLowerCase();W[i]&&(r=i),t&&(W[i]=t,r=i);var s=e.split("-");if(!r&&s.length>1)return a(s[0])}else{var m=e.name;W[m]=e,r=m}return!n&&r&&(X=r),r||!n&&X},C=function(a,e){if(Q(a))return a.clone();var t=typeof e=="object"?e:{};return t.date=a,t.args=arguments,new rt(t)},v=O;v.l=tt,v.i=Q,v.w=function(a,e){return C(a,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var rt=(function(){function a(t){this.$L=tt(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[R]=!0}var e=a.prototype;return e.parse=function(t){this.$d=(function(n){var r=n.date,i=n.utc;if(r===null)return new Date(NaN);if(v.u(r))return new Date;if(r instanceof Date)return new Date(r);if(typeof r=="string"&&!/Z$/i.test(r)){var s=r.match(N);if(s){var m=s[2]-1||0,A=(s[7]||"0").substring(0,3);return i?new Date(Date.UTC(s[1],m,s[3]||1,s[4]||0,s[5]||0,s[6]||0,A)):new Date(s[1],m,s[3]||1,s[4]||0,s[5]||0,s[6]||0,A)}}return new Date(r)})(t),this.init()},e.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},e.$utils=function(){return v},e.isValid=function(){return this.$d.toString()!==$},e.isSame=function(t,n){var r=C(t);return this.startOf(n)<=r&&r<=this.endOf(n)},e.isAfter=function(t,n){return C(t)<this.startOf(n)},e.isBefore=function(t,n){return this.endOf(n)<C(t)},e.$g=function(t,n,r){return v.u(t)?this[n]:this.set(r,t)},e.unix=function(){return Math.floor(this.valueOf()/1e3)},e.valueOf=function(){return this.$d.getTime()},e.startOf=function(t,n){var r=this,i=!!v.u(n)||n,s=v.p(t),m=function(E,T){var V=v.w(r.$u?Date.UTC(r.$y,T,E):new Date(r.$y,T,E),r);return i?V:V.endOf(M)},A=function(E,T){return v.w(r.toDate()[E].apply(r.toDate("s"),(i?[0,0,0,0]:[23,59,59,999]).slice(T)),r)},D=this.$W,S=this.$M,H=this.$D,I="set"+(this.$u?"UTC":"");switch(s){case u:return i?m(1,0):m(31,11);case x:return i?m(1,S):m(0,S+1);case p:var K=this.$locale().weekStart||0,G=(D<K?D+7:D)-K;return m(i?H-G:H+(6-G),S);case M:case g:return A(I+"Hours",0);case k:return A(I+"Minutes",1);case w:return A(I+"Seconds",2);case y:return A(I+"Milliseconds",3);default:return this.clone()}},e.endOf=function(t){return this.startOf(t,!1)},e.$set=function(t,n){var r,i=v.p(t),s="set"+(this.$u?"UTC":""),m=(r={},r[M]=s+"Date",r[g]=s+"Date",r[x]=s+"Month",r[u]=s+"FullYear",r[k]=s+"Hours",r[w]=s+"Minutes",r[y]=s+"Seconds",r[h]=s+"Milliseconds",r)[i],A=i===M?this.$D+(n-this.$W):n;if(i===x||i===u){var D=this.clone().set(g,1);D.$d[m](A),D.init(),this.$d=D.set(g,Math.min(this.$D,D.daysInMonth())).$d}else m&&this.$d[m](A);return this.init(),this},e.set=function(t,n){return this.clone().$set(t,n)},e.get=function(t){return this[v.p(t)]()},e.add=function(t,n){var r,i=this;t=Number(t);var s=v.p(n),m=function(S){var H=C(i);return v.w(H.date(H.date()+Math.round(S*t)),i)};if(s===x)return this.set(x,this.$M+t);if(s===u)return this.set(u,this.$y+t);if(s===M)return m(1);if(s===p)return m(7);var A=(r={},r[w]=c,r[k]=b,r[y]=l,r)[s]||1,D=this.$d.getTime()+t*A;return v.w(D,this)},e.subtract=function(t,n){return this.add(-1*t,n)},e.format=function(t){var n=this,r=this.$locale();if(!this.isValid())return r.invalidDate||$;var i=t||"YYYY-MM-DDTHH:mm:ssZ",s=v.z(this),m=this.$H,A=this.$m,D=this.$M,S=r.weekdays,H=r.months,I=r.meridiem,K=function(T,V,B,et){return T&&(T[V]||T(n,i))||B[V].slice(0,et)},G=function(T){return v.s(m%12||12,T,"0")},E=I||function(T,V,B){var et=T<12?"AM":"PM";return B?et.toLowerCase():et};return i.replace(_,(function(T,V){return V||(function(B){switch(B){case"YY":return String(n.$y).slice(-2);case"YYYY":return v.s(n.$y,4,"0");case"M":return D+1;case"MM":return v.s(D+1,2,"0");case"MMM":return K(r.monthsShort,D,H,3);case"MMMM":return K(H,D);case"D":return n.$D;case"DD":return v.s(n.$D,2,"0");case"d":return String(n.$W);case"dd":return K(r.weekdaysMin,n.$W,S,2);case"ddd":return K(r.weekdaysShort,n.$W,S,3);case"dddd":return S[n.$W];case"H":return String(m);case"HH":return v.s(m,2,"0");case"h":return G(1);case"hh":return G(2);case"a":return E(m,A,!0);case"A":return E(m,A,!1);case"m":return String(A);case"mm":return v.s(A,2,"0");case"s":return String(n.$s);case"ss":return v.s(n.$s,2,"0");case"SSS":return v.s(n.$ms,3,"0");case"Z":return s}return null})(T)||s.replace(":","")}))},e.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},e.diff=function(t,n,r){var i,s=this,m=v.p(n),A=C(t),D=(A.utcOffset()-this.utcOffset())*c,S=this-A,H=function(){return v.m(s,A)};switch(m){case u:i=H()/12;break;case x:i=H();break;case Y:i=H()/3;break;case p:i=(S-D)/6048e5;break;case M:i=(S-D)/864e5;break;case k:i=S/b;break;case w:i=S/c;break;case y:i=S/l;break;default:i=S}return r?i:v.a(i)},e.daysInMonth=function(){return this.endOf(x).$D},e.$locale=function(){return W[this.$L]},e.locale=function(t,n){if(!t)return this.$L;var r=this.clone(),i=tt(t,n,!0);return i&&(r.$L=i),r},e.clone=function(){return v.w(this.$d,this)},e.toDate=function(){return new Date(this.valueOf())},e.toJSON=function(){return this.isValid()?this.toISOString():null},e.toISOString=function(){return this.$d.toISOString()},e.toString=function(){return this.$d.toUTCString()},a})(),dt=rt.prototype;return C.prototype=dt,[["$ms",h],["$s",y],["$m",w],["$H",k],["$W",M],["$M",x],["$y",u],["$D",g]].forEach((function(a){dt[a[1]]=function(e){return this.$g(e,a[0],a[1])}})),C.extend=function(a,e){return a.$i||(a(e,rt,C),a.$i=!0),C},C.locale=tt,C.isDayjs=Q,C.unix=function(a){return C(1e3*a)},C.en=W[X],C.Ls=W,C.p={},C}))})(P)),P.exports}var pt=ft();const U=ut(pt),J=60,vt=["YYYY-MM-DD","YYYY/MM/DD","YYYY-MM-DD HH:mm","YYYY/MM/DD HH:mm","YYYY-MM-DD HH:mm:ss","YYYY/MM/DD HH:mm:ss"],it=f=>{if(!nt(f))return"00:00:00";const d=U(f).diff(U());if(d<=0)return"00:00:00";const l=Math.floor(d/1e3),c=Math.floor(l/86400),b=Math.floor(l%86400/3600),h=Math.floor(l%3600/60),y=l%60;return`${c?`${c}:`:""}${`${b}`.padStart(2,"0")}:${`${h}`.padStart(2,"0")}:${`${y}`.padStart(2,"0")}`},st=f=>{const d=l=>`${l}`.padStart(2,"0");return`${d(Math.floor(f/J/J))}:${d(Math.floor(f/J)%J)}:${d(f%J)}`},nt=f=>vt.some(d=>U(f,d,!0).isValid()),q=(f,d,l,c,b)=>{const h=c-d,y=b-l,w=Math.sqrt(h*h+y*y).toFixed(2),k=Math.atan2(y,h)*180/Math.PI,M=(d+c)/2,p=(l+b)/2;f.style.left=`${M}px`,f.style.top=`${p}px`,f.style.height=`${w}px`,f.style.transform=`translate(-50%, -50%) rotate(${k+90}deg)`},gt=f=>{const d=f.clientWidth,l=f.clientHeight,c=Math.floor(Math.random()*2);let b="",h="",y=0,w=0;const k=f.querySelector(".l-line"),M=f.querySelector(".r-line");if(c===0){const p=5+Math.random()*90,x=100-p;y=Math.max(p,x),b=`
|
|
3
|
+
polygon(
|
|
4
|
+
0% 0%,
|
|
5
|
+
${p}% 0%,
|
|
6
|
+
${x}% 100%,
|
|
7
|
+
0% 100%
|
|
8
|
+
)`,h=`
|
|
9
|
+
polygon(
|
|
10
|
+
${p}% 0%,
|
|
11
|
+
100% 0%,
|
|
12
|
+
100% 100%,
|
|
13
|
+
${x}% 100%
|
|
14
|
+
)`;const Y=d*p/100,u=0,g=d*x/100,$=l;q(k,Y,u,g,$),q(M,Y,u,g,$)}else{const p=5+Math.random()*90,x=100-p;w=Math.max(p,x),b=`
|
|
15
|
+
polygon(
|
|
16
|
+
0% 0%,
|
|
17
|
+
100% 0%,
|
|
18
|
+
100% ${x}%,
|
|
19
|
+
0% ${p}%
|
|
20
|
+
)`,h=`
|
|
21
|
+
polygon(
|
|
22
|
+
0% ${p}%,
|
|
23
|
+
100% ${x}%,
|
|
24
|
+
100% 100%,
|
|
25
|
+
0% 100%
|
|
26
|
+
)`;const Y=0,u=l*p/100,g=d,$=l*x/100;q(k,Y,u,g,$),q(M,Y,u,g,$)}return{lPath:b,rPath:h,lTranslate:c===0?`translateX(-${y}%)`:`translateY(-${w}%)`,rTranslate:c===0?`translateX(${y}%)`:`translateY(${w}%)`}},mt=(f,d=.3)=>{const l=document.createElement("div");l.style.color=f,document.body.appendChild(l);const c=getComputedStyle(l).color;document.body.removeChild(l);const[b,h,y]=c.match(/\d+/g).slice(0,3).map(Number),k=.299*b+.587*h+.114*y>128,M=p=>Math.round(k?p*(1-d):p+(255-p)*d);return"#"+[M(b),M(h),M(y)].map(p=>p.toString(16).padStart(2,"0")).join("").toUpperCase()},xt=()=>Math.floor(Math.random()*361),ct="HH:mm:ss",lt=900,bt=f=>{const{mode:d,showType:l="default",size:c=40,className:b,bgColor:h,numColor:y,borderColor:w,textShadowColor:k,finishCountFn:M}=f,[p,x]=j.useState(l==="count"?st(0):l==="default"?U().format(ct):it(l)),Y=j.useRef({t:null}),u={"--card-size":`${c}px`,"--card-w":`${c*1.25}px`,"--card-h":`${c*2}px`,"--transx":`${-c*1.25/2}px`,"--transy":`${-c}px`,"--delay":`${lt/1e3}s`,"--bgColor":h,"--numColor":y,"--borderColor":w,"--textShadow":k?`1px 2px 3px ${k}`:"none","--transColor":mt(h||"#333")};j.useEffect(()=>{let $=Date.now();Y.current.t&&(clearInterval(Y.current.t),Y.current.t=null,$=Date.now()),Y.current.t=setInterval(()=>{let N=()=>"";l==="count"?N=()=>st(Math.floor((Date.now()-$)/1e3)):l==="default"?N=()=>U().format(ct):N=()=>it(l),x(N())},1e3)},[l]),j.useEffect(()=>{nt(l)&&p==="00:00:00"&&M&&setTimeout(()=>{M()},1e3)},[p,l,M]);const g=()=>{if(!p)return null;const $=p.split(":"),N=$[$.length-3].split(""),_=$[$.length-2].split(""),F=$[$.length-1].split(""),Z=$.length===4?$[0].split(""):[],O=nt(l),X=Z.map((R,Q)=>o.jsx(L,{mode:d,time:+R,limit:O?-9:9,size:c},Q)),W=o.jsx("span",{children:":"});return o.jsxs(o.Fragment,{children:[X.length?o.jsxs(o.Fragment,{children:[X,O?o.jsx("p",{children:"天"}):W]}):null,o.jsx(L,{mode:d,time:+N[0],limit:O?-2:2,size:c}),o.jsx(L,{mode:d,time:+N[1],limit:O?-9:9,size:c}),O?o.jsx("p",{children:"小时"}):W,o.jsx(L,{mode:d,time:+_[0],limit:O?-5:5,size:c}),o.jsx(L,{mode:d,time:+_[1],limit:O?-9:9,size:c}),O?o.jsx("p",{children:"分"}):W,o.jsx(L,{mode:d,time:+F[0],limit:O?-5:5,size:c}),o.jsx(L,{mode:d,time:+F[1],limit:O?-9:9,size:c}),O&&o.jsx("p",{children:"秒"})]})};return o.jsx("div",{className:`time-runner ${b||""}`,style:u,children:g()})},yt=f=>{const{time:d,limit:l,mode:c,size:b}=f,[h,y]=j.useState(!1),w=j.useRef({t:d}),k=j.useRef(null),M=j.useMemo(()=>d!==w.current.t&&c==="drift"?{"--driftX":`${Math.floor(Math.random()*(-b-b+1))+b}px`,"--driftY":`${Math.floor(Math.random()*(-b*2-b*2+1))+b*2}px`,"--driftRZ":`${Math.floor(Math.random()*151)+50}deg`,"--driftRX":`${Math.floor(Math.random()*151)+50}deg`}:null,[d,b,c]),p=j.useMemo(()=>{if(h&&c==="cut"){const{lPath:u,rPath:g,lTranslate:$,rTranslate:N}=gt(k.current);return{"--lPolygon":u,"--rPolygon":g,"--cutLTranslate":$,"--cutRTranslate":N}}return null},[h,c]),x=j.useMemo(()=>h&&c==="erase"?{"--start-deg":`${xt()}deg`,"--deg":"360deg"}:null,[h,c]);j.useEffect(()=>{d!==w.current.t&&y(!0)},[d]),j.useEffect(()=>{h&&setTimeout(()=>{w.current.t=d,y(!1)},lt)},[h,d]);const Y=()=>{const{t:u}=w.current;let g=u;switch(l>0?g=u>=l?0:u+1:g=u<=0?Math.abs(l):u-1,c){case"card":return o.jsxs("div",{className:"clock-card font-num",children:[o.jsxs("div",{className:`clock-b ${h?"run":""}`,children:[o.jsx("p",{children:g}),o.jsx("p",{children:g})]}),o.jsxs("div",{className:`clock-f ${h?"run":""}`,children:[o.jsx("p",{children:u}),o.jsx("p",{children:u})]})]});case"cube-v":return o.jsx("div",{className:`cube-v font-num ${h?"run":""}`,children:o.jsxs("div",{children:[o.jsx("p",{children:g}),o.jsx("p",{children:u})]})});case"cube-h":return o.jsx("div",{className:`cube-h font-num ${h?"run":""}`,children:o.jsxs("div",{children:[o.jsx("p",{children:g}),o.jsx("p",{children:u})]})});case"drift":return o.jsx("div",{className:`drift font-num ${h?"run":""}`,"data-digit":u,style:M,children:g});case"cut":return o.jsxs("div",{ref:k,className:`cut font-num ${h?"run":""}`,style:p,children:[o.jsxs("div",{children:[o.jsx("p",{children:u}),o.jsx("div",{className:"l-line"})]}),o.jsxs("div",{children:[o.jsx("p",{children:u}),o.jsx("div",{className:"r-line"})]}),o.jsx("p",{children:g})]});case"erase":return o.jsxs("div",{className:`erase font-num ${h?"run":""}`,"data-digit":u,children:[o.jsx("p",{children:g}),o.jsx("div",{style:x})]});default:return o.jsx("div",{className:"font-num",children:o.jsx("p",{children:u})})}};return o.jsx(o.Fragment,{children:Y()})},L=j.memo(yt);z.TimeRunner=bt,Object.defineProperty(z,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "time-runner",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.6",
|
|
4
4
|
"description": "Displaying timer, current time, and countdown with light animation effects(React component)",
|
|
5
5
|
"keywords": ["react", "countdown", "timer", "hook", "card", "less", "animation", "vite"],
|
|
6
6
|
"main": "./dist/time-runner.umd.js",
|