@makeswift/runtime 0.0.22 → 0.1.1
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/dist/Box.cjs.js +502 -0
- package/dist/Box.cjs.js.map +1 -0
- package/dist/Box.es.js +496 -0
- package/dist/Box.es.js.map +1 -0
- package/dist/Button.cjs.js +308 -0
- package/dist/Button.cjs.js.map +1 -0
- package/dist/Button.es.js +301 -0
- package/dist/Button.es.js.map +1 -0
- package/dist/Carousel.cjs.js +487 -0
- package/dist/Carousel.cjs.js.map +1 -0
- package/dist/Carousel.es.js +481 -0
- package/dist/Carousel.es.js.map +1 -0
- package/dist/Countdown.cjs.js +340 -0
- package/dist/Countdown.cjs.js.map +1 -0
- package/dist/Countdown.es.js +334 -0
- package/dist/Countdown.es.js.map +1 -0
- package/dist/Divider.cjs.js +115 -0
- package/dist/Divider.cjs.js.map +1 -0
- package/dist/Divider.es.js +109 -0
- package/dist/Divider.es.js.map +1 -0
- package/dist/Embed.cjs.js +129 -0
- package/dist/Embed.cjs.js.map +1 -0
- package/dist/Embed.es.js +123 -0
- package/dist/Embed.es.js.map +1 -0
- package/dist/Form.cjs.js +1724 -0
- package/dist/Form.cjs.js.map +1 -0
- package/dist/Form.es.js +1697 -0
- package/dist/Form.es.js.map +1 -0
- package/dist/Image.cjs2.js +148 -0
- package/dist/Image.cjs2.js.map +1 -0
- package/dist/Image.es2.js +141 -0
- package/dist/Image.es2.js.map +1 -0
- package/dist/Navigation.cjs.js +736 -0
- package/dist/Navigation.cjs.js.map +1 -0
- package/dist/Navigation.es.js +710 -0
- package/dist/Navigation.es.js.map +1 -0
- package/dist/Root.cjs.js +143 -0
- package/dist/Root.cjs.js.map +1 -0
- package/dist/Root.es.js +137 -0
- package/dist/Root.es.js.map +1 -0
- package/dist/SocialLinks.cjs.js +900 -0
- package/dist/SocialLinks.cjs.js.map +1 -0
- package/dist/SocialLinks.es.js +874 -0
- package/dist/SocialLinks.es.js.map +1 -0
- package/dist/Text.cjs.js +475 -0
- package/dist/Text.cjs.js.map +1 -0
- package/dist/Text.es.js +467 -0
- package/dist/Text.es.js.map +1 -0
- package/dist/Video.cjs.js +121 -0
- package/dist/Video.cjs.js.map +1 -0
- package/dist/Video.es.js +114 -0
- package/dist/Video.es.js.map +1 -0
- package/dist/components.cjs.js +79 -58
- package/dist/components.cjs.js.map +1 -1
- package/dist/components.es.js +41 -18
- package/dist/components.es.js.map +1 -1
- package/dist/cssMediaRules.cjs.js +222 -0
- package/dist/cssMediaRules.cjs.js.map +1 -0
- package/dist/cssMediaRules.es.js +213 -0
- package/dist/cssMediaRules.es.js.map +1 -0
- package/dist/descriptors.es.js +1 -1
- package/dist/index.cjs.js +1408 -7741
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs2.js +522 -0
- package/dist/index.cjs2.js.map +1 -0
- package/dist/index.cjs3.js +141 -0
- package/dist/index.cjs3.js.map +1 -0
- package/dist/index.cjs4.js +18 -0
- package/dist/index.cjs4.js.map +1 -0
- package/dist/index.es.js +1339 -7697
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +514 -0
- package/dist/index.es2.js.map +1 -0
- package/dist/index.es3.js +134 -0
- package/dist/index.es3.js.map +1 -0
- package/dist/index.es4.js +13 -0
- package/dist/index.es4.js.map +1 -0
- package/dist/next.cjs.js +19 -201
- package/dist/next.cjs.js.map +1 -1
- package/dist/next.es.js +12 -192
- package/dist/next.es.js.map +1 -1
- package/dist/placeholders.cjs.js +13 -0
- package/dist/placeholders.cjs.js.map +1 -0
- package/dist/placeholders.es.js +12 -0
- package/dist/placeholders.es.js.map +1 -0
- package/dist/react-builder-preview.cjs.js +23 -33
- package/dist/react-builder-preview.cjs.js.map +1 -1
- package/dist/react-builder-preview.es.js +13 -23
- package/dist/react-builder-preview.es.js.map +1 -1
- package/dist/react-page.es.js +1 -1
- package/dist/react.cjs.js +16 -28
- package/dist/react.cjs.js.map +1 -1
- package/dist/react.es.js +8 -20
- package/dist/react.es.js.map +1 -1
- package/dist/types/components/builtin/Box/Box.d.ts +1 -4
- package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
- package/dist/types/components/builtin/Box/animations.d.ts +1 -8
- package/dist/types/components/builtin/Box/animations.d.ts.map +1 -1
- package/dist/types/components/builtin/Box/constants.d.ts +9 -0
- package/dist/types/components/builtin/Box/constants.d.ts.map +1 -0
- package/dist/types/components/builtin/Box/index.d.ts +2 -2
- package/dist/types/components/builtin/Box/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Box/register.d.ts +3 -0
- package/dist/types/components/builtin/Box/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Button/Button.d.ts +1 -4
- package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
- package/dist/types/components/builtin/Button/contants.d.ts +2 -0
- package/dist/types/components/builtin/Button/contants.d.ts.map +1 -0
- package/dist/types/components/builtin/Button/index.d.ts +1 -1
- package/dist/types/components/builtin/Button/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Button/register.d.ts +3 -0
- package/dist/types/components/builtin/Button/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Carousel/Carousel.d.ts +0 -3
- package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
- package/dist/types/components/builtin/Carousel/index.d.ts +1 -1
- package/dist/types/components/builtin/Carousel/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Carousel/register.d.ts +3 -0
- package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Countdown/Countdown.d.ts +0 -3
- package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
- package/dist/types/components/builtin/Countdown/index.d.ts +1 -1
- package/dist/types/components/builtin/Countdown/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Countdown/register.d.ts +3 -0
- package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Divider/Divider.d.ts +0 -3
- package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -1
- package/dist/types/components/builtin/Divider/index.d.ts +1 -1
- package/dist/types/components/builtin/Divider/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Divider/register.d.ts +3 -0
- package/dist/types/components/builtin/Divider/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Embed/Embed.d.ts +0 -3
- package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
- package/dist/types/components/builtin/Embed/index.d.ts +1 -1
- package/dist/types/components/builtin/Embed/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Embed/register.d.ts +3 -0
- package/dist/types/components/builtin/Embed/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Form/Form.d.ts +1 -10
- package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
- package/dist/types/components/builtin/Form/components/Field/index.d.ts +1 -1
- package/dist/types/components/builtin/Form/components/Field/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Form/context/FormContext.d.ts +6 -0
- package/dist/types/components/builtin/Form/context/FormContext.d.ts.map +1 -1
- package/dist/types/components/builtin/Form/index.d.ts +1 -1
- package/dist/types/components/builtin/Form/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Form/register.d.ts +3 -0
- package/dist/types/components/builtin/Form/register.d.ts.map +1 -0
- package/dist/types/components/{hooks/useTable.d.ts → builtin/Form/types.d.ts} +2 -6
- package/dist/types/components/builtin/Form/types.d.ts.map +1 -0
- package/dist/types/components/builtin/Image/Image.d.ts +0 -3
- package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
- package/dist/types/components/builtin/Image/index.d.ts +1 -1
- package/dist/types/components/builtin/Image/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Image/register.d.ts +3 -0
- package/dist/types/components/builtin/Image/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Navigation/Navigation.d.ts +0 -3
- package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
- package/dist/types/components/builtin/Navigation/index.d.ts +1 -1
- package/dist/types/components/builtin/Navigation/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Navigation/register.d.ts +3 -0
- package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Root/Root.d.ts +0 -2
- package/dist/types/components/builtin/Root/Root.d.ts.map +1 -1
- package/dist/types/components/builtin/Root/index.d.ts +1 -1
- package/dist/types/components/builtin/Root/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Root/register.d.ts +3 -0
- package/dist/types/components/builtin/Root/register.d.ts.map +1 -0
- package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +0 -3
- package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
- package/dist/types/components/builtin/SocialLinks/index.d.ts +1 -1
- package/dist/types/components/builtin/SocialLinks/index.d.ts.map +1 -1
- package/dist/types/components/builtin/SocialLinks/register.d.ts +3 -0
- package/dist/types/components/builtin/SocialLinks/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Text/Text.d.ts +0 -3
- package/dist/types/components/builtin/Text/Text.d.ts.map +1 -1
- package/dist/types/components/builtin/Text/index.d.ts +1 -1
- package/dist/types/components/builtin/Text/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Text/register.d.ts +3 -0
- package/dist/types/components/builtin/Text/register.d.ts.map +1 -0
- package/dist/types/components/builtin/Video/Video.d.ts +0 -3
- package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
- package/dist/types/components/builtin/Video/index.d.ts +1 -1
- package/dist/types/components/builtin/Video/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Video/register.d.ts +3 -0
- package/dist/types/components/builtin/Video/register.d.ts.map +1 -0
- package/dist/types/components/builtin/index.d.ts +1 -2
- package/dist/types/components/builtin/index.d.ts.map +1 -1
- package/dist/types/components/builtin/register.d.ts +3 -0
- package/dist/types/components/builtin/register.d.ts.map +1 -0
- package/dist/types/components/hooks/index.d.ts +0 -1
- package/dist/types/components/hooks/index.d.ts.map +1 -1
- package/dist/types/next.d.ts +12 -2
- package/dist/types/next.d.ts.map +1 -1
- package/dist/useBoxShadow.cjs.js +78 -0
- package/dist/useBoxShadow.cjs.js.map +1 -0
- package/dist/useBoxShadow.es.js +77 -0
- package/dist/useBoxShadow.es.js.map +1 -0
- package/dist/useMediaQuery.cjs.js +26 -0
- package/dist/useMediaQuery.cjs.js.map +1 -0
- package/dist/useMediaQuery.es.js +25 -0
- package/dist/useMediaQuery.es.js.map +1 -0
- package/next/plugin.js +1 -0
- package/package.json +4 -1
- package/dist/types/components/hooks/useTable.d.ts.map +0 -1
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
var React = require("react");
|
|
4
|
+
var styled = require("styled-components");
|
|
5
|
+
var css = require("@emotion/css");
|
|
6
|
+
var next = require("./index.cjs.js");
|
|
7
|
+
var cssMediaRules = require("./cssMediaRules.cjs.js");
|
|
8
|
+
var jsxRuntime = require("react/jsx-runtime");
|
|
9
|
+
require("use-sync-external-store/shim/with-selector");
|
|
10
|
+
require("./react-page.cjs.js");
|
|
11
|
+
require("redux");
|
|
12
|
+
require("redux-thunk");
|
|
13
|
+
require("./actions.cjs.js");
|
|
14
|
+
require("./descriptors.cjs.js");
|
|
15
|
+
require("./style.cjs.js");
|
|
16
|
+
require("./color.cjs.js");
|
|
17
|
+
require("./image.cjs.js");
|
|
18
|
+
require("next/dynamic");
|
|
19
|
+
require("next/document");
|
|
20
|
+
require("slate");
|
|
21
|
+
require("@emotion/server/create-instance");
|
|
22
|
+
require("@apollo/client");
|
|
23
|
+
require("@apollo/client/link/batch-http");
|
|
24
|
+
require("./graphql.cjs.js");
|
|
25
|
+
require("./text-input.cjs.js");
|
|
26
|
+
require("./shape.cjs.js");
|
|
27
|
+
require("color");
|
|
28
|
+
require("react-dom");
|
|
29
|
+
require("html-react-parser");
|
|
30
|
+
require("next/head");
|
|
31
|
+
require("uuid/v4");
|
|
32
|
+
require("corporate-ipsum");
|
|
33
|
+
function _interopDefaultLegacy(e) {
|
|
34
|
+
return e && typeof e === "object" && "default" in e ? e : { "default": e };
|
|
35
|
+
}
|
|
36
|
+
var styled__default = /* @__PURE__ */ _interopDefaultLegacy(styled);
|
|
37
|
+
const Block = styled__default["default"].div`
|
|
38
|
+
display: block;
|
|
39
|
+
padding: 0.5em;
|
|
40
|
+
font-size: 1em;
|
|
41
|
+
`;
|
|
42
|
+
const Label = styled__default["default"].div`
|
|
43
|
+
margin-top: 0.25em;
|
|
44
|
+
`;
|
|
45
|
+
const Segment = styled__default["default"].div`
|
|
46
|
+
flex: 1;
|
|
47
|
+
text-align: center;
|
|
48
|
+
`;
|
|
49
|
+
const Container = styled__default["default"].div.withConfig({
|
|
50
|
+
shouldForwardProp: (prop) => !["margin", "variant", "size", "shape", "gap", "labelColor", "numberFont", "numberColor", "blockColor", "labelFont"].includes(prop)
|
|
51
|
+
})`
|
|
52
|
+
display: flex;
|
|
53
|
+
${cssMediaRules.cssMargin()}
|
|
54
|
+
${(p) => cssMediaRules.cssMediaRules([p.size], ([size = "medium"]) => {
|
|
55
|
+
switch (size) {
|
|
56
|
+
case "small":
|
|
57
|
+
return styled.css`
|
|
58
|
+
font-size: 18px;
|
|
59
|
+
|
|
60
|
+
${Label} {
|
|
61
|
+
font-size: 14px;
|
|
62
|
+
}
|
|
63
|
+
`;
|
|
64
|
+
case "large":
|
|
65
|
+
return styled.css`
|
|
66
|
+
font-size: 32px;
|
|
67
|
+
|
|
68
|
+
${Label} {
|
|
69
|
+
font-size: 18px;
|
|
70
|
+
}
|
|
71
|
+
`;
|
|
72
|
+
default:
|
|
73
|
+
return styled.css`
|
|
74
|
+
font-size: 24px;
|
|
75
|
+
|
|
76
|
+
${Label} {
|
|
77
|
+
font-size: 16px;
|
|
78
|
+
}
|
|
79
|
+
`;
|
|
80
|
+
}
|
|
81
|
+
})}
|
|
82
|
+
|
|
83
|
+
${Segment} {
|
|
84
|
+
${(p) => cssMediaRules.cssMediaRules([p.gap], ([gap]) => styled.css`
|
|
85
|
+
margin: 0 ${gap == null ? 0 : `${gap.value / 2}${gap.unit}`};
|
|
86
|
+
|
|
87
|
+
&:first-child {
|
|
88
|
+
margin-left: 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&:last-child {
|
|
92
|
+
margin-right: 0;
|
|
93
|
+
}
|
|
94
|
+
`)}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
${Block} {
|
|
98
|
+
${(p) => cssMediaRules.cssMediaRules([p.shape], ([shape = "rounded"]) => {
|
|
99
|
+
switch (shape) {
|
|
100
|
+
case "pill":
|
|
101
|
+
return styled.css`
|
|
102
|
+
border-radius: 500px;
|
|
103
|
+
`;
|
|
104
|
+
case "rounded":
|
|
105
|
+
return styled.css`
|
|
106
|
+
border-radius: 6px;
|
|
107
|
+
`;
|
|
108
|
+
default:
|
|
109
|
+
return styled.css`
|
|
110
|
+
border-radius: 0;
|
|
111
|
+
`;
|
|
112
|
+
}
|
|
113
|
+
})}
|
|
114
|
+
${(p) => cssMediaRules.cssMediaRules([p.variant, p.blockColor, p.numberColor, p.numberFont], ([variant = "filled", blockColor = {
|
|
115
|
+
swatch: {
|
|
116
|
+
hue: 0,
|
|
117
|
+
saturation: 0,
|
|
118
|
+
lightness: 0
|
|
119
|
+
},
|
|
120
|
+
alpha: 1
|
|
121
|
+
}, numberColor = {
|
|
122
|
+
swatch: {
|
|
123
|
+
hue: 0,
|
|
124
|
+
saturation: 0,
|
|
125
|
+
lightness: 100
|
|
126
|
+
},
|
|
127
|
+
alpha: 1
|
|
128
|
+
}, numberFont = "sans-serif"]) => {
|
|
129
|
+
switch (variant) {
|
|
130
|
+
case "filled":
|
|
131
|
+
return styled.css`
|
|
132
|
+
font-family: '${numberFont}';
|
|
133
|
+
color: ${next.colorToString(numberColor)};
|
|
134
|
+
background: ${next.colorToString(blockColor)};
|
|
135
|
+
`;
|
|
136
|
+
case "filled-split":
|
|
137
|
+
return styled.css`
|
|
138
|
+
position: relative;
|
|
139
|
+
color: ${next.colorToString(numberColor)};
|
|
140
|
+
font-family: '${numberFont}';
|
|
141
|
+
|
|
142
|
+
> span {
|
|
143
|
+
position: relative;
|
|
144
|
+
z-index: 1;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
::before {
|
|
148
|
+
content: '';
|
|
149
|
+
position: absolute;
|
|
150
|
+
top: 0;
|
|
151
|
+
left: 0;
|
|
152
|
+
right: 0;
|
|
153
|
+
bottom: calc(50% + 1px);
|
|
154
|
+
border-top-left-radius: inherit;
|
|
155
|
+
border-top-right-radius: inherit;
|
|
156
|
+
background: ${next.colorToString(blockColor)};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
::after {
|
|
160
|
+
content: '';
|
|
161
|
+
position: absolute;
|
|
162
|
+
left: 0;
|
|
163
|
+
right: 0;
|
|
164
|
+
top: calc(50% + 1px);
|
|
165
|
+
bottom: 0;
|
|
166
|
+
border-bottom-left-radius: inherit;
|
|
167
|
+
border-bottom-right-radius: inherit;
|
|
168
|
+
background: ${next.colorToString(blockColor)};
|
|
169
|
+
}
|
|
170
|
+
`;
|
|
171
|
+
case "outline":
|
|
172
|
+
return styled.css`
|
|
173
|
+
font-family: '${numberFont}';
|
|
174
|
+
color: ${next.colorToString(numberColor)};
|
|
175
|
+
background: transparent;
|
|
176
|
+
border: 2px solid ${next.colorToString(blockColor)};
|
|
177
|
+
`;
|
|
178
|
+
case "outline-split":
|
|
179
|
+
return styled.css`
|
|
180
|
+
position: relative;
|
|
181
|
+
font-family: '${numberFont}';
|
|
182
|
+
color: ${next.colorToString(numberColor)};
|
|
183
|
+
border: 2px solid ${next.colorToString(blockColor)};
|
|
184
|
+
|
|
185
|
+
> span {
|
|
186
|
+
position: relative;
|
|
187
|
+
z-index: 1;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
::before {
|
|
191
|
+
content: '';
|
|
192
|
+
position: absolute;
|
|
193
|
+
top: 50%;
|
|
194
|
+
left: 0;
|
|
195
|
+
right: 0;
|
|
196
|
+
height: 2px;
|
|
197
|
+
margin-top: -1px;
|
|
198
|
+
background: ${next.colorToString(blockColor)};
|
|
199
|
+
}
|
|
200
|
+
`;
|
|
201
|
+
default:
|
|
202
|
+
return styled.css`
|
|
203
|
+
font-family: '${numberFont}';
|
|
204
|
+
background: transparent;
|
|
205
|
+
color: ${next.colorToString(numberColor)};
|
|
206
|
+
padding-top: 0;
|
|
207
|
+
padding-bottom: 0;
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
})}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
${Label} {
|
|
214
|
+
${(p) => cssMediaRules.cssMediaRules([p.labelColor, p.labelFont], ([labelColor = {
|
|
215
|
+
swatch: {
|
|
216
|
+
hue: 0,
|
|
217
|
+
saturation: 0,
|
|
218
|
+
lightness: 0
|
|
219
|
+
},
|
|
220
|
+
alpha: 1
|
|
221
|
+
}, labelFont = "sans-serif"]) => styled.css`
|
|
222
|
+
font-family: '${labelFont}';
|
|
223
|
+
color: ${next.colorToString(labelColor)};
|
|
224
|
+
`)}
|
|
225
|
+
}
|
|
226
|
+
`;
|
|
227
|
+
const getRemaining = (date) => {
|
|
228
|
+
if (date == null)
|
|
229
|
+
return {
|
|
230
|
+
days: 0,
|
|
231
|
+
hours: 0,
|
|
232
|
+
minutes: 0,
|
|
233
|
+
seconds: 0
|
|
234
|
+
};
|
|
235
|
+
const timeDiff = new Date(date).getTime() - Date.now();
|
|
236
|
+
if (timeDiff <= 0)
|
|
237
|
+
return {
|
|
238
|
+
days: 0,
|
|
239
|
+
hours: 0,
|
|
240
|
+
minutes: 0,
|
|
241
|
+
seconds: 0
|
|
242
|
+
};
|
|
243
|
+
let delta = Math.abs(timeDiff) / 1e3;
|
|
244
|
+
const days = Math.floor(delta / 86400);
|
|
245
|
+
delta -= days * 86400;
|
|
246
|
+
const hours = Math.floor(delta / 3600) % 24;
|
|
247
|
+
delta -= hours * 3600;
|
|
248
|
+
const minutes = Math.floor(delta / 60) % 60;
|
|
249
|
+
delta -= minutes * 60;
|
|
250
|
+
const seconds = parseInt(String(delta % 60), 10);
|
|
251
|
+
return {
|
|
252
|
+
days,
|
|
253
|
+
hours,
|
|
254
|
+
minutes,
|
|
255
|
+
seconds
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
const Countdown = React.forwardRef(function Countdown2({
|
|
259
|
+
id,
|
|
260
|
+
margin,
|
|
261
|
+
width,
|
|
262
|
+
date,
|
|
263
|
+
variant,
|
|
264
|
+
size,
|
|
265
|
+
shape,
|
|
266
|
+
gap,
|
|
267
|
+
labelColor,
|
|
268
|
+
labelFont,
|
|
269
|
+
numberColor,
|
|
270
|
+
numberFont,
|
|
271
|
+
blockColor,
|
|
272
|
+
daysLabel,
|
|
273
|
+
hoursLabel,
|
|
274
|
+
minutesLabel,
|
|
275
|
+
secondsLabel
|
|
276
|
+
}, ref) {
|
|
277
|
+
const [{
|
|
278
|
+
days,
|
|
279
|
+
hours,
|
|
280
|
+
minutes,
|
|
281
|
+
seconds
|
|
282
|
+
}, setRemaining] = React.useState(getRemaining(date));
|
|
283
|
+
React.useEffect(() => {
|
|
284
|
+
setRemaining(getRemaining(date));
|
|
285
|
+
const intervalId = setInterval(() => {
|
|
286
|
+
setRemaining(getRemaining(date));
|
|
287
|
+
}, 1e3);
|
|
288
|
+
return () => clearInterval(intervalId);
|
|
289
|
+
}, [date]);
|
|
290
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Container, {
|
|
291
|
+
ref,
|
|
292
|
+
id,
|
|
293
|
+
className: css.cx(width),
|
|
294
|
+
margin,
|
|
295
|
+
variant,
|
|
296
|
+
size,
|
|
297
|
+
shape,
|
|
298
|
+
labelColor,
|
|
299
|
+
labelFont,
|
|
300
|
+
numberColor,
|
|
301
|
+
numberFont,
|
|
302
|
+
blockColor,
|
|
303
|
+
gap,
|
|
304
|
+
children: [/* @__PURE__ */ jsxRuntime.jsxs(Segment, {
|
|
305
|
+
children: [/* @__PURE__ */ jsxRuntime.jsx(Block, {
|
|
306
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
307
|
+
children: days
|
|
308
|
+
})
|
|
309
|
+
}), /* @__PURE__ */ jsxRuntime.jsx(Label, {
|
|
310
|
+
children: daysLabel == null ? "Days" : daysLabel
|
|
311
|
+
})]
|
|
312
|
+
}), /* @__PURE__ */ jsxRuntime.jsxs(Segment, {
|
|
313
|
+
children: [/* @__PURE__ */ jsxRuntime.jsx(Block, {
|
|
314
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
315
|
+
children: hours
|
|
316
|
+
})
|
|
317
|
+
}), /* @__PURE__ */ jsxRuntime.jsx(Label, {
|
|
318
|
+
children: hoursLabel == null ? "Hours" : hoursLabel
|
|
319
|
+
})]
|
|
320
|
+
}), /* @__PURE__ */ jsxRuntime.jsxs(Segment, {
|
|
321
|
+
children: [/* @__PURE__ */ jsxRuntime.jsx(Block, {
|
|
322
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
323
|
+
children: minutes
|
|
324
|
+
})
|
|
325
|
+
}), /* @__PURE__ */ jsxRuntime.jsx(Label, {
|
|
326
|
+
children: minutesLabel == null ? "Minutes" : minutesLabel
|
|
327
|
+
})]
|
|
328
|
+
}), /* @__PURE__ */ jsxRuntime.jsxs(Segment, {
|
|
329
|
+
children: [/* @__PURE__ */ jsxRuntime.jsx(Block, {
|
|
330
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("span", {
|
|
331
|
+
children: seconds
|
|
332
|
+
})
|
|
333
|
+
}), /* @__PURE__ */ jsxRuntime.jsx(Label, {
|
|
334
|
+
children: secondsLabel == null ? "Seconds" : secondsLabel
|
|
335
|
+
})]
|
|
336
|
+
})]
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
exports["default"] = Countdown;
|
|
340
|
+
//# sourceMappingURL=Countdown.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Countdown.cjs.js","sources":["../src/components/builtin/Countdown/Countdown.tsx"],"sourcesContent":["import { useState, useEffect, Ref, forwardRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport { cx } from '@emotion/css'\n\nimport { colorToString } from '../../utils/colorToString'\nimport { ColorValue as Color } from '../../utils/types'\nimport { cssMediaRules, cssMargin } from '../../utils/cssMediaRules'\nimport {\n ResponsiveValue,\n DateValue,\n ElementIDValue,\n FontValue,\n GapXValue,\n MarginValue,\n ResponsiveIconRadioGroupValue,\n TextInputValue,\n} from '../../../prop-controllers/descriptors'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\n\ntype Props = {\n id?: ElementIDValue\n date?: DateValue\n variant?: ResponsiveIconRadioGroupValue<\n 'filled' | 'filled-split' | 'outline' | 'outline-split' | 'clear'\n >\n shape?: ResponsiveIconRadioGroupValue<'pill' | 'rounded' | 'square'>\n size?: ResponsiveIconRadioGroupValue<'small' | 'medium' | 'large'>\n gap?: GapXValue\n numberFont?: FontValue\n numberColor?: ResponsiveColor | null\n blockColor?: ResponsiveColor | null\n labelFont?: FontValue\n labelColor?: ResponsiveColor | null\n width?: string\n margin?: MarginValue\n daysLabel?: TextInputValue\n hoursLabel?: TextInputValue\n minutesLabel?: TextInputValue\n secondsLabel?: TextInputValue\n}\n\nconst Block = styled.div`\n display: block;\n padding: 0.5em;\n font-size: 1em;\n`\n\nconst Label = styled.div`\n margin-top: 0.25em;\n`\n\nconst Segment = styled.div`\n flex: 1;\n text-align: center;\n`\n\nconst Container = styled.div.withConfig({\n shouldForwardProp: prop =>\n ![\n 'margin',\n 'variant',\n 'size',\n 'shape',\n 'gap',\n 'labelColor',\n 'numberFont',\n 'numberColor',\n 'blockColor',\n 'labelFont',\n ].includes(prop),\n})<{\n margin: Props['margin']\n variant: Props['variant']\n size: Props['size']\n shape: Props['shape']\n gap: Props['gap']\n labelColor?: ResponsiveValue<Color> | null\n numberFont?: ResponsiveValue<string>\n numberColor?: ResponsiveValue<Color> | null\n blockColor?: ResponsiveValue<Color> | null\n labelFont?: ResponsiveValue<string>\n}>`\n display: flex;\n ${cssMargin()}\n ${p =>\n cssMediaRules([p.size] as const, ([size = 'medium']) => {\n switch (size) {\n case 'small':\n return css`\n font-size: 18px;\n\n ${Label} {\n font-size: 14px;\n }\n `\n case 'large':\n return css`\n font-size: 32px;\n\n ${Label} {\n font-size: 18px;\n }\n `\n default:\n return css`\n font-size: 24px;\n\n ${Label} {\n font-size: 16px;\n }\n `\n }\n })}\n\n ${Segment} {\n ${p =>\n cssMediaRules(\n [p.gap] as const,\n ([gap]) => css`\n margin: 0 ${gap == null ? 0 : `${gap.value / 2}${gap.unit}`};\n\n &:first-child {\n margin-left: 0;\n }\n\n &:last-child {\n margin-right: 0;\n }\n `,\n )}\n }\n\n ${Block} {\n ${p =>\n cssMediaRules([p.shape] as const, ([shape = 'rounded']) => {\n switch (shape) {\n case 'pill':\n return css`\n border-radius: 500px;\n `\n case 'rounded':\n return css`\n border-radius: 6px;\n `\n default:\n return css`\n border-radius: 0;\n `\n }\n })}\n ${p =>\n cssMediaRules(\n [p.variant, p.blockColor, p.numberColor, p.numberFont] as const,\n ([\n variant = 'filled',\n blockColor = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n numberColor = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 },\n numberFont = 'sans-serif',\n ]) => {\n switch (variant) {\n case 'filled':\n return css`\n font-family: '${numberFont}';\n color: ${colorToString(numberColor)};\n background: ${colorToString(blockColor)};\n `\n case 'filled-split':\n return css`\n position: relative;\n color: ${colorToString(numberColor)};\n font-family: '${numberFont}';\n\n > span {\n position: relative;\n z-index: 1;\n }\n\n ::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: calc(50% + 1px);\n border-top-left-radius: inherit;\n border-top-right-radius: inherit;\n background: ${colorToString(blockColor)};\n }\n\n ::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n top: calc(50% + 1px);\n bottom: 0;\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n background: ${colorToString(blockColor)};\n }\n `\n case 'outline':\n return css`\n font-family: '${numberFont}';\n color: ${colorToString(numberColor)};\n background: transparent;\n border: 2px solid ${colorToString(blockColor)};\n `\n case 'outline-split':\n return css`\n position: relative;\n font-family: '${numberFont}';\n color: ${colorToString(numberColor)};\n border: 2px solid ${colorToString(blockColor)};\n\n > span {\n position: relative;\n z-index: 1;\n }\n\n ::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 2px;\n margin-top: -1px;\n background: ${colorToString(blockColor)};\n }\n `\n default:\n return css`\n font-family: '${numberFont}';\n background: transparent;\n color: ${colorToString(numberColor)};\n padding-top: 0;\n padding-bottom: 0;\n `\n }\n },\n )}\n }\n\n ${Label} {\n ${p =>\n cssMediaRules(\n [p.labelColor, p.labelFont] as const,\n ([\n labelColor = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n labelFont = 'sans-serif',\n ]) => css`\n font-family: '${labelFont}';\n color: ${colorToString(labelColor)};\n `,\n )}\n }\n`\n\nconst getRemaining = (date: Props['date'] | undefined) => {\n if (date == null) return { days: 0, hours: 0, minutes: 0, seconds: 0 }\n\n const timeDiff = new Date(date).getTime() - Date.now()\n\n if (timeDiff <= 0) return { days: 0, hours: 0, minutes: 0, seconds: 0 }\n\n let delta = Math.abs(timeDiff) / 1000\n\n const days = Math.floor(delta / 86400)\n delta -= days * 86400\n\n const hours = Math.floor(delta / 3600) % 24\n delta -= hours * 3600\n\n const minutes = Math.floor(delta / 60) % 60\n delta -= minutes * 60\n\n const seconds = parseInt(String(delta % 60), 10)\n\n return { days, hours, minutes, seconds }\n}\n\nconst Countdown = forwardRef(function Countdown(\n {\n id,\n margin,\n width,\n date,\n variant,\n size,\n shape,\n gap,\n labelColor,\n labelFont,\n numberColor,\n numberFont,\n blockColor,\n daysLabel,\n hoursLabel,\n minutesLabel,\n secondsLabel,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const [{ days, hours, minutes, seconds }, setRemaining] = useState(getRemaining(date))\n\n useEffect(() => {\n setRemaining(getRemaining(date))\n\n const intervalId = setInterval(() => {\n setRemaining(getRemaining(date))\n }, 1000)\n\n return () => clearInterval(intervalId)\n }, [date])\n\n return (\n <Container\n ref={ref}\n id={id}\n className={cx(width)}\n margin={margin}\n variant={variant}\n size={size}\n shape={shape}\n labelColor={labelColor}\n labelFont={labelFont}\n numberColor={numberColor}\n numberFont={numberFont}\n blockColor={blockColor}\n gap={gap}\n >\n <Segment>\n <Block>\n <span>{days}</span>\n </Block>\n <Label>{daysLabel == null ? 'Days' : daysLabel}</Label>\n </Segment>\n <Segment>\n <Block>\n <span>{hours}</span>\n </Block>\n <Label>{hoursLabel == null ? 'Hours' : hoursLabel}</Label>\n </Segment>\n <Segment>\n <Block>\n <span>{minutes}</span>\n </Block>\n <Label>{minutesLabel == null ? 'Minutes' : minutesLabel}</Label>\n </Segment>\n <Segment>\n <Block>\n <span>{seconds}</span>\n </Block>\n <Label>{secondsLabel == null ? 'Seconds' : secondsLabel}</Label>\n </Segment>\n </Container>\n )\n})\n\nexport default Countdown\n"],"names":["Block","styled","div","Label","Segment","Container","withConfig","shouldForwardProp","prop","includes","cssMargin","p","cssMediaRules","size","css","gap","value","unit","shape","variant","blockColor","numberColor","numberFont","swatch","hue","saturation","lightness","alpha","colorToString","labelColor","labelFont","getRemaining","date","days","hours","minutes","seconds","timeDiff","Date","getTime","now","delta","Math","abs","floor","parseInt","String","Countdown","forwardRef","id","margin","width","daysLabel","hoursLabel","minutesLabel","secondsLabel","ref","setRemaining","useState","useEffect","intervalId","setInterval","clearInterval","cx","_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { forwardRef, useState, useEffect } from "react";
|
|
2
|
+
import styled, { css } from "styled-components";
|
|
3
|
+
import { cx } from "@emotion/css";
|
|
4
|
+
import { o as colorToString } from "./index.es.js";
|
|
5
|
+
import { b as cssMargin, c as cssMediaRules } from "./cssMediaRules.es.js";
|
|
6
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
7
|
+
import "use-sync-external-store/shim/with-selector";
|
|
8
|
+
import "./react-page.es.js";
|
|
9
|
+
import "redux";
|
|
10
|
+
import "redux-thunk";
|
|
11
|
+
import "./actions.es.js";
|
|
12
|
+
import "./descriptors.es.js";
|
|
13
|
+
import "./style.es.js";
|
|
14
|
+
import "./color.es.js";
|
|
15
|
+
import "./image.es.js";
|
|
16
|
+
import "next/dynamic";
|
|
17
|
+
import "next/document";
|
|
18
|
+
import "slate";
|
|
19
|
+
import "@emotion/server/create-instance";
|
|
20
|
+
import "@apollo/client";
|
|
21
|
+
import "@apollo/client/link/batch-http";
|
|
22
|
+
import "./graphql.es.js";
|
|
23
|
+
import "./text-input.es.js";
|
|
24
|
+
import "./shape.es.js";
|
|
25
|
+
import "color";
|
|
26
|
+
import "react-dom";
|
|
27
|
+
import "html-react-parser";
|
|
28
|
+
import "next/head";
|
|
29
|
+
import "uuid/v4";
|
|
30
|
+
import "corporate-ipsum";
|
|
31
|
+
const Block = styled.div`
|
|
32
|
+
display: block;
|
|
33
|
+
padding: 0.5em;
|
|
34
|
+
font-size: 1em;
|
|
35
|
+
`;
|
|
36
|
+
const Label = styled.div`
|
|
37
|
+
margin-top: 0.25em;
|
|
38
|
+
`;
|
|
39
|
+
const Segment = styled.div`
|
|
40
|
+
flex: 1;
|
|
41
|
+
text-align: center;
|
|
42
|
+
`;
|
|
43
|
+
const Container = styled.div.withConfig({
|
|
44
|
+
shouldForwardProp: (prop) => !["margin", "variant", "size", "shape", "gap", "labelColor", "numberFont", "numberColor", "blockColor", "labelFont"].includes(prop)
|
|
45
|
+
})`
|
|
46
|
+
display: flex;
|
|
47
|
+
${cssMargin()}
|
|
48
|
+
${(p) => cssMediaRules([p.size], ([size = "medium"]) => {
|
|
49
|
+
switch (size) {
|
|
50
|
+
case "small":
|
|
51
|
+
return css`
|
|
52
|
+
font-size: 18px;
|
|
53
|
+
|
|
54
|
+
${Label} {
|
|
55
|
+
font-size: 14px;
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
case "large":
|
|
59
|
+
return css`
|
|
60
|
+
font-size: 32px;
|
|
61
|
+
|
|
62
|
+
${Label} {
|
|
63
|
+
font-size: 18px;
|
|
64
|
+
}
|
|
65
|
+
`;
|
|
66
|
+
default:
|
|
67
|
+
return css`
|
|
68
|
+
font-size: 24px;
|
|
69
|
+
|
|
70
|
+
${Label} {
|
|
71
|
+
font-size: 16px;
|
|
72
|
+
}
|
|
73
|
+
`;
|
|
74
|
+
}
|
|
75
|
+
})}
|
|
76
|
+
|
|
77
|
+
${Segment} {
|
|
78
|
+
${(p) => cssMediaRules([p.gap], ([gap]) => css`
|
|
79
|
+
margin: 0 ${gap == null ? 0 : `${gap.value / 2}${gap.unit}`};
|
|
80
|
+
|
|
81
|
+
&:first-child {
|
|
82
|
+
margin-left: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&:last-child {
|
|
86
|
+
margin-right: 0;
|
|
87
|
+
}
|
|
88
|
+
`)}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
${Block} {
|
|
92
|
+
${(p) => cssMediaRules([p.shape], ([shape = "rounded"]) => {
|
|
93
|
+
switch (shape) {
|
|
94
|
+
case "pill":
|
|
95
|
+
return css`
|
|
96
|
+
border-radius: 500px;
|
|
97
|
+
`;
|
|
98
|
+
case "rounded":
|
|
99
|
+
return css`
|
|
100
|
+
border-radius: 6px;
|
|
101
|
+
`;
|
|
102
|
+
default:
|
|
103
|
+
return css`
|
|
104
|
+
border-radius: 0;
|
|
105
|
+
`;
|
|
106
|
+
}
|
|
107
|
+
})}
|
|
108
|
+
${(p) => cssMediaRules([p.variant, p.blockColor, p.numberColor, p.numberFont], ([variant = "filled", blockColor = {
|
|
109
|
+
swatch: {
|
|
110
|
+
hue: 0,
|
|
111
|
+
saturation: 0,
|
|
112
|
+
lightness: 0
|
|
113
|
+
},
|
|
114
|
+
alpha: 1
|
|
115
|
+
}, numberColor = {
|
|
116
|
+
swatch: {
|
|
117
|
+
hue: 0,
|
|
118
|
+
saturation: 0,
|
|
119
|
+
lightness: 100
|
|
120
|
+
},
|
|
121
|
+
alpha: 1
|
|
122
|
+
}, numberFont = "sans-serif"]) => {
|
|
123
|
+
switch (variant) {
|
|
124
|
+
case "filled":
|
|
125
|
+
return css`
|
|
126
|
+
font-family: '${numberFont}';
|
|
127
|
+
color: ${colorToString(numberColor)};
|
|
128
|
+
background: ${colorToString(blockColor)};
|
|
129
|
+
`;
|
|
130
|
+
case "filled-split":
|
|
131
|
+
return css`
|
|
132
|
+
position: relative;
|
|
133
|
+
color: ${colorToString(numberColor)};
|
|
134
|
+
font-family: '${numberFont}';
|
|
135
|
+
|
|
136
|
+
> span {
|
|
137
|
+
position: relative;
|
|
138
|
+
z-index: 1;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
::before {
|
|
142
|
+
content: '';
|
|
143
|
+
position: absolute;
|
|
144
|
+
top: 0;
|
|
145
|
+
left: 0;
|
|
146
|
+
right: 0;
|
|
147
|
+
bottom: calc(50% + 1px);
|
|
148
|
+
border-top-left-radius: inherit;
|
|
149
|
+
border-top-right-radius: inherit;
|
|
150
|
+
background: ${colorToString(blockColor)};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
::after {
|
|
154
|
+
content: '';
|
|
155
|
+
position: absolute;
|
|
156
|
+
left: 0;
|
|
157
|
+
right: 0;
|
|
158
|
+
top: calc(50% + 1px);
|
|
159
|
+
bottom: 0;
|
|
160
|
+
border-bottom-left-radius: inherit;
|
|
161
|
+
border-bottom-right-radius: inherit;
|
|
162
|
+
background: ${colorToString(blockColor)};
|
|
163
|
+
}
|
|
164
|
+
`;
|
|
165
|
+
case "outline":
|
|
166
|
+
return css`
|
|
167
|
+
font-family: '${numberFont}';
|
|
168
|
+
color: ${colorToString(numberColor)};
|
|
169
|
+
background: transparent;
|
|
170
|
+
border: 2px solid ${colorToString(blockColor)};
|
|
171
|
+
`;
|
|
172
|
+
case "outline-split":
|
|
173
|
+
return css`
|
|
174
|
+
position: relative;
|
|
175
|
+
font-family: '${numberFont}';
|
|
176
|
+
color: ${colorToString(numberColor)};
|
|
177
|
+
border: 2px solid ${colorToString(blockColor)};
|
|
178
|
+
|
|
179
|
+
> span {
|
|
180
|
+
position: relative;
|
|
181
|
+
z-index: 1;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
::before {
|
|
185
|
+
content: '';
|
|
186
|
+
position: absolute;
|
|
187
|
+
top: 50%;
|
|
188
|
+
left: 0;
|
|
189
|
+
right: 0;
|
|
190
|
+
height: 2px;
|
|
191
|
+
margin-top: -1px;
|
|
192
|
+
background: ${colorToString(blockColor)};
|
|
193
|
+
}
|
|
194
|
+
`;
|
|
195
|
+
default:
|
|
196
|
+
return css`
|
|
197
|
+
font-family: '${numberFont}';
|
|
198
|
+
background: transparent;
|
|
199
|
+
color: ${colorToString(numberColor)};
|
|
200
|
+
padding-top: 0;
|
|
201
|
+
padding-bottom: 0;
|
|
202
|
+
`;
|
|
203
|
+
}
|
|
204
|
+
})}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
${Label} {
|
|
208
|
+
${(p) => cssMediaRules([p.labelColor, p.labelFont], ([labelColor = {
|
|
209
|
+
swatch: {
|
|
210
|
+
hue: 0,
|
|
211
|
+
saturation: 0,
|
|
212
|
+
lightness: 0
|
|
213
|
+
},
|
|
214
|
+
alpha: 1
|
|
215
|
+
}, labelFont = "sans-serif"]) => css`
|
|
216
|
+
font-family: '${labelFont}';
|
|
217
|
+
color: ${colorToString(labelColor)};
|
|
218
|
+
`)}
|
|
219
|
+
}
|
|
220
|
+
`;
|
|
221
|
+
const getRemaining = (date) => {
|
|
222
|
+
if (date == null)
|
|
223
|
+
return {
|
|
224
|
+
days: 0,
|
|
225
|
+
hours: 0,
|
|
226
|
+
minutes: 0,
|
|
227
|
+
seconds: 0
|
|
228
|
+
};
|
|
229
|
+
const timeDiff = new Date(date).getTime() - Date.now();
|
|
230
|
+
if (timeDiff <= 0)
|
|
231
|
+
return {
|
|
232
|
+
days: 0,
|
|
233
|
+
hours: 0,
|
|
234
|
+
minutes: 0,
|
|
235
|
+
seconds: 0
|
|
236
|
+
};
|
|
237
|
+
let delta = Math.abs(timeDiff) / 1e3;
|
|
238
|
+
const days = Math.floor(delta / 86400);
|
|
239
|
+
delta -= days * 86400;
|
|
240
|
+
const hours = Math.floor(delta / 3600) % 24;
|
|
241
|
+
delta -= hours * 3600;
|
|
242
|
+
const minutes = Math.floor(delta / 60) % 60;
|
|
243
|
+
delta -= minutes * 60;
|
|
244
|
+
const seconds = parseInt(String(delta % 60), 10);
|
|
245
|
+
return {
|
|
246
|
+
days,
|
|
247
|
+
hours,
|
|
248
|
+
minutes,
|
|
249
|
+
seconds
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
const Countdown = forwardRef(function Countdown2({
|
|
253
|
+
id,
|
|
254
|
+
margin,
|
|
255
|
+
width,
|
|
256
|
+
date,
|
|
257
|
+
variant,
|
|
258
|
+
size,
|
|
259
|
+
shape,
|
|
260
|
+
gap,
|
|
261
|
+
labelColor,
|
|
262
|
+
labelFont,
|
|
263
|
+
numberColor,
|
|
264
|
+
numberFont,
|
|
265
|
+
blockColor,
|
|
266
|
+
daysLabel,
|
|
267
|
+
hoursLabel,
|
|
268
|
+
minutesLabel,
|
|
269
|
+
secondsLabel
|
|
270
|
+
}, ref) {
|
|
271
|
+
const [{
|
|
272
|
+
days,
|
|
273
|
+
hours,
|
|
274
|
+
minutes,
|
|
275
|
+
seconds
|
|
276
|
+
}, setRemaining] = useState(getRemaining(date));
|
|
277
|
+
useEffect(() => {
|
|
278
|
+
setRemaining(getRemaining(date));
|
|
279
|
+
const intervalId = setInterval(() => {
|
|
280
|
+
setRemaining(getRemaining(date));
|
|
281
|
+
}, 1e3);
|
|
282
|
+
return () => clearInterval(intervalId);
|
|
283
|
+
}, [date]);
|
|
284
|
+
return /* @__PURE__ */ jsxs(Container, {
|
|
285
|
+
ref,
|
|
286
|
+
id,
|
|
287
|
+
className: cx(width),
|
|
288
|
+
margin,
|
|
289
|
+
variant,
|
|
290
|
+
size,
|
|
291
|
+
shape,
|
|
292
|
+
labelColor,
|
|
293
|
+
labelFont,
|
|
294
|
+
numberColor,
|
|
295
|
+
numberFont,
|
|
296
|
+
blockColor,
|
|
297
|
+
gap,
|
|
298
|
+
children: [/* @__PURE__ */ jsxs(Segment, {
|
|
299
|
+
children: [/* @__PURE__ */ jsx(Block, {
|
|
300
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
301
|
+
children: days
|
|
302
|
+
})
|
|
303
|
+
}), /* @__PURE__ */ jsx(Label, {
|
|
304
|
+
children: daysLabel == null ? "Days" : daysLabel
|
|
305
|
+
})]
|
|
306
|
+
}), /* @__PURE__ */ jsxs(Segment, {
|
|
307
|
+
children: [/* @__PURE__ */ jsx(Block, {
|
|
308
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
309
|
+
children: hours
|
|
310
|
+
})
|
|
311
|
+
}), /* @__PURE__ */ jsx(Label, {
|
|
312
|
+
children: hoursLabel == null ? "Hours" : hoursLabel
|
|
313
|
+
})]
|
|
314
|
+
}), /* @__PURE__ */ jsxs(Segment, {
|
|
315
|
+
children: [/* @__PURE__ */ jsx(Block, {
|
|
316
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
317
|
+
children: minutes
|
|
318
|
+
})
|
|
319
|
+
}), /* @__PURE__ */ jsx(Label, {
|
|
320
|
+
children: minutesLabel == null ? "Minutes" : minutesLabel
|
|
321
|
+
})]
|
|
322
|
+
}), /* @__PURE__ */ jsxs(Segment, {
|
|
323
|
+
children: [/* @__PURE__ */ jsx(Block, {
|
|
324
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
325
|
+
children: seconds
|
|
326
|
+
})
|
|
327
|
+
}), /* @__PURE__ */ jsx(Label, {
|
|
328
|
+
children: secondsLabel == null ? "Seconds" : secondsLabel
|
|
329
|
+
})]
|
|
330
|
+
})]
|
|
331
|
+
});
|
|
332
|
+
});
|
|
333
|
+
export { Countdown as default };
|
|
334
|
+
//# sourceMappingURL=Countdown.es.js.map
|