@makeswift/runtime 0.1.4 → 0.1.7
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 +4 -3
- package/dist/Box.cjs.js.map +1 -1
- package/dist/Box.es.js +5 -4
- package/dist/Box.es.js.map +1 -1
- package/dist/Button.cjs.js +5 -3
- package/dist/Button.cjs.js.map +1 -1
- package/dist/Button.es.js +16 -14
- package/dist/Button.es.js.map +1 -1
- package/dist/Carousel.cjs.js +4 -3
- package/dist/Carousel.cjs.js.map +1 -1
- package/dist/Carousel.es.js +5 -4
- package/dist/Carousel.es.js.map +1 -1
- package/dist/Countdown.cjs.js +4 -3
- package/dist/Countdown.cjs.js.map +1 -1
- package/dist/Countdown.es.js +5 -4
- package/dist/Countdown.es.js.map +1 -1
- package/dist/Divider.cjs.js +4 -3
- package/dist/Divider.cjs.js.map +1 -1
- package/dist/Divider.es.js +5 -4
- package/dist/Divider.es.js.map +1 -1
- package/dist/Embed.cjs.js +4 -3
- package/dist/Embed.cjs.js.map +1 -1
- package/dist/Embed.es.js +5 -4
- package/dist/Embed.es.js.map +1 -1
- package/dist/Form.cjs.js +7 -3
- package/dist/Form.cjs.js.map +1 -1
- package/dist/Form.es.js +9 -5
- package/dist/Form.es.js.map +1 -1
- package/dist/Image.cjs2.js +6 -4
- package/dist/Image.cjs2.js.map +1 -1
- package/dist/Image.es2.js +10 -8
- package/dist/Image.es2.js.map +1 -1
- package/dist/Navigation.cjs.js +4 -3
- package/dist/Navigation.cjs.js.map +1 -1
- package/dist/Navigation.es.js +5 -4
- package/dist/Navigation.es.js.map +1 -1
- package/dist/SocialLinks.cjs.js +3 -2
- package/dist/SocialLinks.cjs.js.map +1 -1
- package/dist/SocialLinks.es.js +4 -3
- package/dist/SocialLinks.es.js.map +1 -1
- package/dist/Text.cjs.js +4 -3
- package/dist/Text.cjs.js.map +1 -1
- package/dist/Text.es.js +6 -5
- package/dist/Text.es.js.map +1 -1
- package/dist/Video.cjs.js +4 -3
- package/dist/Video.cjs.js.map +1 -1
- package/dist/Video.es.js +5 -4
- package/dist/Video.es.js.map +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +1 -1
- package/dist/cssMediaRules.es.js +1 -1
- package/dist/index.cjs.js +13 -32
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +14 -32
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +1 -1
- package/dist/index.es3.js +1 -1
- package/dist/next.es.js +1 -1
- package/dist/react-builder-preview.es.js +1 -1
- package/dist/types/api/react.d.ts.map +1 -1
- package/dist/types/components/builtin/Box/Box.d.ts +2 -2
- package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
- package/dist/types/components/builtin/Button/Button.d.ts +2 -1
- package/dist/types/components/builtin/Button/Button.d.ts.map +1 -1
- package/dist/types/components/builtin/Carousel/Carousel.d.ts +2 -2
- package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
- package/dist/types/components/builtin/Carousel/register.d.ts.map +1 -1
- package/dist/types/components/builtin/Countdown/Countdown.d.ts +2 -2
- package/dist/types/components/builtin/Countdown/Countdown.d.ts.map +1 -1
- package/dist/types/components/builtin/Countdown/register.d.ts.map +1 -1
- package/dist/types/components/builtin/Divider/Divider.d.ts +2 -2
- package/dist/types/components/builtin/Divider/Divider.d.ts.map +1 -1
- package/dist/types/components/builtin/Divider/register.d.ts.map +1 -1
- package/dist/types/components/builtin/Embed/Embed.d.ts +2 -2
- package/dist/types/components/builtin/Embed/Embed.d.ts.map +1 -1
- package/dist/types/components/builtin/Form/Form.d.ts +2 -2
- package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
- package/dist/types/components/builtin/Form/components/Placeholder/index.d.ts +2 -1
- package/dist/types/components/builtin/Form/components/Placeholder/index.d.ts.map +1 -1
- package/dist/types/components/builtin/Form/register.d.ts.map +1 -1
- package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
- package/dist/types/components/builtin/Navigation/Navigation.d.ts +2 -2
- package/dist/types/components/builtin/Navigation/Navigation.d.ts.map +1 -1
- package/dist/types/components/builtin/Navigation/register.d.ts.map +1 -1
- package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts +2 -2
- package/dist/types/components/builtin/SocialLinks/SocialLinks.d.ts.map +1 -1
- package/dist/types/components/builtin/SocialLinks/register.d.ts.map +1 -1
- package/dist/types/components/builtin/Text/Text.d.ts +2 -2
- package/dist/types/components/builtin/Text/Text.d.ts.map +1 -1
- package/dist/types/components/builtin/Text/register.d.ts.map +1 -1
- package/dist/types/components/builtin/Video/Video.d.ts +2 -2
- package/dist/types/components/builtin/Video/Video.d.ts.map +1 -1
- package/dist/types/components/builtin/Video/register.d.ts.map +1 -1
- package/dist/useBoxShadow.es.js +1 -1
- package/dist/useMediaQuery.es.js +1 -1
- package/package.json +1 -1
package/dist/Button.es.js
CHANGED
|
@@ -30,11 +30,10 @@ var __objRest = (source, exclude) => {
|
|
|
30
30
|
return target;
|
|
31
31
|
};
|
|
32
32
|
import { forwardRef } from "react";
|
|
33
|
-
import styled, { css
|
|
33
|
+
import styled, { css } from "styled-components";
|
|
34
34
|
import ColorHelper from "color";
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import { r as responsiveWidth, p as colorToString } from "./index.es.js";
|
|
35
|
+
import { a as cssWidth, b as cssMargin, c as cssMediaRules, i as cssTextStyle } from "./cssMediaRules.es.js";
|
|
36
|
+
import { p as colorToString } from "./index.es.js";
|
|
38
37
|
import { L as Link } from "./index.es3.js";
|
|
39
38
|
import { jsx } from "react/jsx-runtime";
|
|
40
39
|
import "use-sync-external-store/shim/with-selector";
|
|
@@ -50,6 +49,7 @@ import "next/dynamic";
|
|
|
50
49
|
import "next/document";
|
|
51
50
|
import "slate";
|
|
52
51
|
import "@emotion/server/create-instance";
|
|
52
|
+
import "@emotion/css";
|
|
53
53
|
import "@apollo/client";
|
|
54
54
|
import "@apollo/client/link/batch-http";
|
|
55
55
|
import "./graphql.es.js";
|
|
@@ -63,7 +63,7 @@ import "uuid/v4";
|
|
|
63
63
|
import "corporate-ipsum";
|
|
64
64
|
import "next/link";
|
|
65
65
|
const StyledButton = styled(Link).withConfig({
|
|
66
|
-
shouldForwardProp: (prop) => !["margin", "variant", "shape", "size", "textColor", "color", "textStyle"].includes(prop.toString())
|
|
66
|
+
shouldForwardProp: (prop) => !["width", "margin", "variant", "shape", "size", "textColor", "color", "textStyle"].includes(prop.toString())
|
|
67
67
|
})`
|
|
68
68
|
display: table;
|
|
69
69
|
border: 0;
|
|
@@ -73,6 +73,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
73
73
|
font-family: inherit;
|
|
74
74
|
text-decoration: none;
|
|
75
75
|
text-align: center;
|
|
76
|
+
${cssWidth("auto")}
|
|
76
77
|
${cssMargin()}
|
|
77
78
|
${(p) => cssMediaRules([p.variant, p.shape, p.size, p.textColor, p.color], ([variant = "flat", shape = "rounded", size = "medium", textColor = {
|
|
78
79
|
swatch: {
|
|
@@ -97,7 +98,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
97
98
|
}[size],
|
|
98
99
|
unit: "px"
|
|
99
100
|
};
|
|
100
|
-
return css
|
|
101
|
+
return css`
|
|
101
102
|
color: ${colorToString(textColor)};
|
|
102
103
|
border-radius: ${{
|
|
103
104
|
square: 0,
|
|
@@ -111,7 +112,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
111
112
|
}[size]};
|
|
112
113
|
font-size: ${`${fontSize.value}${fontSize.unit}`};
|
|
113
114
|
${{
|
|
114
|
-
flat: css
|
|
115
|
+
flat: css`
|
|
115
116
|
background: ${colorToString(color)};
|
|
116
117
|
border: none;
|
|
117
118
|
transition: ${["color", "background", "border", "box-shadow"].map((property) => `${property} 0.15s ease-in-out`).join(", ")};
|
|
@@ -124,7 +125,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
124
125
|
background: ${ColorHelper(colorToString(color)).darken(0.15).hex()};
|
|
125
126
|
}
|
|
126
127
|
`,
|
|
127
|
-
outline: css
|
|
128
|
+
outline: css`
|
|
128
129
|
background: transparent;
|
|
129
130
|
box-shadow: inset 0 0 0 2px ${colorToString(color)};
|
|
130
131
|
transition: ${["color", "background", "box-shadow"].map((property) => `${property} 0.15s ease-in-out`).join(", ")};
|
|
@@ -139,7 +140,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
139
140
|
color: ${ColorHelper(colorToString(color)).darken(0.15).hex()};
|
|
140
141
|
}
|
|
141
142
|
`,
|
|
142
|
-
shadow: css
|
|
143
|
+
shadow: css`
|
|
143
144
|
background: ${colorToString(color)};
|
|
144
145
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.2);
|
|
145
146
|
transition: ${["transform", "box-shadow"].map((property) => `${property} 0.18s`).join(", ")};
|
|
@@ -154,7 +155,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
154
155
|
transform: translateY(0px);
|
|
155
156
|
}
|
|
156
157
|
`,
|
|
157
|
-
clear: css
|
|
158
|
+
clear: css`
|
|
158
159
|
background: transparent;
|
|
159
160
|
border: none;
|
|
160
161
|
|
|
@@ -166,7 +167,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
166
167
|
color: ${ColorHelper(colorToString(textColor)).alpha(0.6).toString()};
|
|
167
168
|
}
|
|
168
169
|
`,
|
|
169
|
-
blocky: css
|
|
170
|
+
blocky: css`
|
|
170
171
|
background: ${colorToString(color)};
|
|
171
172
|
border-width: 1px;
|
|
172
173
|
border-style: solid;
|
|
@@ -184,7 +185,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
184
185
|
box-shadow: 0 0 ${ColorHelper(colorToString(color)).darken(0.25).hex()};
|
|
185
186
|
}
|
|
186
187
|
`,
|
|
187
|
-
bubbly: css
|
|
188
|
+
bubbly: css`
|
|
188
189
|
background: linear-gradient(
|
|
189
190
|
180deg,
|
|
190
191
|
${ColorHelper(colorToString(color)).lighten(0.05).hex()},
|
|
@@ -223,7 +224,7 @@ const StyledButton = styled(Link).withConfig({
|
|
|
223
224
|
}
|
|
224
225
|
}
|
|
225
226
|
`,
|
|
226
|
-
skewed: css
|
|
227
|
+
skewed: css`
|
|
227
228
|
position: relative;
|
|
228
229
|
z-index: 0;
|
|
229
230
|
|
|
@@ -285,9 +286,10 @@ const Button = forwardRef(function Button2(_a, ref) {
|
|
|
285
286
|
return /* @__PURE__ */ jsx(StyledButton, __spreadProps(__spreadValues({}, restOfProps), {
|
|
286
287
|
ref,
|
|
287
288
|
id,
|
|
288
|
-
className
|
|
289
|
+
className,
|
|
289
290
|
color,
|
|
290
291
|
link,
|
|
292
|
+
width,
|
|
291
293
|
margin,
|
|
292
294
|
shape,
|
|
293
295
|
size,
|
package/dist/Button.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.es.js","sources":["../src/components/builtin/Button/Button.tsx"],"sourcesContent":["import { ReactElement, ComponentPropsWithoutRef, forwardRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport ColorHelper from 'color'\nimport { cx, css as toClass } from '@emotion/css'\n\nimport { cssMediaRules, cssMargin, cssTextStyle } from '../../utils/cssMediaRules'\nimport {\n ResponsiveValue,\n ElementIDValue,\n MarginValue,\n TextInputValue,\n ResponsiveSelectValue,\n ResponsiveIconRadioGroupValue,\n TextStyleValue,\n LinkValue,\n WidthValue,\n} from '../../../prop-controllers/descriptors'\nimport { ColorValue as Color } from '../../utils/types'\nimport { colorToString } from '../../utils/colorToString'\nimport { Link } from '../../shared/Link'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\nimport { responsiveWidth } from '../../utils/responsive-style'\nimport { ButtonVariant } from './contants'\n\ntype ControllerProps = {\n id?: ElementIDValue\n children?: TextInputValue\n link?: LinkValue\n variant?: ResponsiveSelectValue<ButtonVariant>\n shape?: ResponsiveIconRadioGroupValue<'pill' | 'rounded' | 'square'>\n size?: ResponsiveIconRadioGroupValue<'small' | 'medium' | 'large'>\n color?: ResponsiveColor\n textColor?: ResponsiveColor\n textStyle?: TextStyleValue\n width?: WidthValue\n margin?: MarginValue\n}\n\nconst StyledButton = styled(Link).withConfig({\n shouldForwardProp: prop =>\n !['margin', 'variant', 'shape', 'size', 'textColor', 'color', 'textStyle'].includes(\n prop.toString(),\n ),\n})<{\n margin: ControllerProps['margin']\n variant: ControllerProps['variant']\n shape: ControllerProps['shape']\n size: ControllerProps['size']\n textColor: ResponsiveValue<Color> | null | undefined\n color: ResponsiveValue<Color> | null | undefined\n textStyle: ControllerProps['textStyle']\n}>`\n display: table;\n border: 0;\n outline: 0;\n user-select: none;\n cursor: pointer;\n font-family: inherit;\n text-decoration: none;\n text-align: center;\n ${cssMargin()}\n ${p =>\n cssMediaRules(\n [p.variant, p.shape, p.size, p.textColor, p.color] as const,\n ([\n variant = 'flat',\n shape = 'rounded',\n size = 'medium',\n textColor = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 },\n color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n ]) => {\n const fontSize = {\n value: { small: 12, medium: 14, large: 18 }[size],\n unit: 'px',\n }\n\n return css`\n color: ${colorToString(textColor)};\n border-radius: ${{ square: 0, rounded: 4, pill: 500 }[shape]}px;\n padding: ${{ small: '8px 12px', medium: '12px 16px', large: '16px 20px' }[size]};\n font-size: ${`${fontSize.value}${fontSize.unit}`};\n ${{\n flat: css`\n background: ${colorToString(color)};\n border: none;\n transition: ${['color', 'background', 'border', 'box-shadow']\n .map(property => `${property} 0.15s ease-in-out`)\n .join(', ')};\n\n :hover {\n background: ${ColorHelper(colorToString(color)).darken(0.1).hex()};\n }\n\n :active {\n background: ${ColorHelper(colorToString(color)).darken(0.15).hex()};\n }\n `,\n outline: css`\n background: transparent;\n box-shadow: inset 0 0 0 2px ${colorToString(color)};\n transition: ${['color', 'background', 'box-shadow']\n .map(property => `${property} 0.15s ease-in-out`)\n .join(', ')};\n\n :hover {\n box-shadow: inset 0 0 0 2px ${ColorHelper(colorToString(color)).darken(0.1).hex()};\n color: ${ColorHelper(colorToString(color)).darken(0.1).hex()};\n }\n\n :active {\n box-shadow: inset 0 0 0 2px ${ColorHelper(colorToString(color)).darken(0.15).hex()};\n color: ${ColorHelper(colorToString(color)).darken(0.15).hex()};\n }\n `,\n shadow: css`\n background: ${colorToString(color)};\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.2);\n transition: ${['transform', 'box-shadow']\n .map(property => `${property} 0.18s`)\n .join(', ')};\n\n :hover {\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15), 0 8px 10px -6px rgba(0, 0, 0, 0.3);\n transform: translateY(-1px);\n }\n\n :active {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 4px 6px -3px rgba(0, 0, 0, 0.3);\n transform: translateY(0px);\n }\n `,\n clear: css`\n background: transparent;\n border: none;\n\n :hover {\n color: ${ColorHelper(colorToString(textColor)).alpha(0.5).toString()};\n }\n\n :active {\n color: ${ColorHelper(colorToString(textColor)).alpha(0.6).toString()};\n }\n `,\n blocky: css`\n background: ${colorToString(color)};\n border-width: 1px;\n border-style: solid;\n border-color: ${ColorHelper(colorToString(color)).darken(0.25).hex()};\n box-shadow: 0 4px ${ColorHelper(colorToString(color)).darken(0.25).hex()};\n transition: ${['transform', 'box-shadow']\n .map(property => `${property} 0.1s`)\n .join(', ')};\n\n :hover {\n transform: translateY(2px);\n box-shadow: 0 2px ${ColorHelper(colorToString(color)).darken(0.25).hex()};\n }\n\n :active {\n transform: translateY(4px);\n box-shadow: 0 0 ${ColorHelper(colorToString(color)).darken(0.25).hex()};\n }\n `,\n bubbly: css`\n background: linear-gradient(\n 180deg,\n ${ColorHelper(colorToString(color)).lighten(0.05).hex()},\n ${ColorHelper(colorToString(color)).darken(0.3).saturate(0.05).hex()}\n );\n position: relative;\n z-index: 0;\n\n :before {\n position: absolute;\n content: '';\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n border-radius: inherit;\n background: linear-gradient(\n 180deg,\n ${ColorHelper(colorToString(color)).lighten(0.2).hex()},\n ${ColorHelper(colorToString(color)).darken(0.2).saturate(0.05).hex()}\n );\n opacity: 0;\n transition: opacity 0.15s;\n }\n\n :hover {\n :before {\n opacity: 1;\n }\n }\n\n :active {\n :before {\n opacity: 0.25;\n }\n }\n `,\n skewed: css`\n position: relative;\n z-index: 0;\n\n :before {\n position: absolute;\n content: '';\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n background: ${colorToString(color)};\n transform: skewX(-12deg);\n border-radius: inherit;\n transition: transform 0.2s cubic-bezier(0.25, 0, 0.25, 1.75);\n }\n\n :hover:before {\n transform: skew(0deg);\n }\n\n :active:before {\n transform: skew(-8deg);\n }\n `,\n }[variant]}\n `\n },\n )}\n ${cssTextStyle()}\n`\n\ntype BaseProps = {\n id?: ControllerProps['id']\n children?: ReactElement | string\n link?: ControllerProps['link']\n variant?: ControllerProps['variant']\n shape?: ControllerProps['shape']\n size?: ControllerProps['size']\n textColor?: ControllerProps['textColor']\n color?: ControllerProps['color']\n textStyle?: ControllerProps['textStyle']\n width?: WidthValue\n margin?: ControllerProps['margin']\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<typeof StyledButton>, keyof BaseProps>\n\nconst Button = forwardRef<HTMLAnchorElement, Props>(function Button(\n {\n id,\n children,\n link,\n variant,\n shape,\n size,\n textColor,\n color,\n textStyle,\n width,\n margin,\n className,\n ...restOfProps\n },\n ref,\n) {\n return (\n <StyledButton\n {...restOfProps}\n ref={ref}\n id={id}\n className={cx(toClass(responsiveWidth(width, 'auto')), className)}\n // @ts-expect-error: HTMLAnchorElement `color` attribute conflicts with prop\n color={color}\n link={link}\n margin={margin}\n shape={shape}\n size={size}\n textColor={textColor}\n textStyle={textStyle}\n variant={variant}\n >\n {children == null ? 'Button Text' : children}\n </StyledButton>\n )\n})\n\nexport default Button\n"],"names":["StyledButton","styled","Link","withConfig","shouldForwardProp","prop","includes","toString","cssMargin","p","cssMediaRules","variant","shape","size","textColor","color","swatch","hue","saturation","lightness","alpha","fontSize","value","small","medium","large","unit","css","colorToString","square","rounded","pill","flat","map","property","join","ColorHelper","darken","hex","outline","shadow","clear","blocky","bubbly","lighten","saturate","skewed","cssTextStyle","Button","forwardRef","ref","id","children","link","textStyle","width","margin","className","restOfProps","cx","toClass","responsiveWidth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Button.es.js","sources":["../src/components/builtin/Button/Button.tsx"],"sourcesContent":["import { ReactElement, ComponentPropsWithoutRef, forwardRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport ColorHelper from 'color'\n\nimport { cssMediaRules, cssMargin, cssTextStyle, cssWidth } from '../../utils/cssMediaRules'\nimport {\n ResponsiveValue,\n ElementIDValue,\n MarginValue,\n TextInputValue,\n ResponsiveSelectValue,\n ResponsiveIconRadioGroupValue,\n TextStyleValue,\n LinkValue,\n WidthValue,\n} from '../../../prop-controllers/descriptors'\nimport { ColorValue as Color } from '../../utils/types'\nimport { colorToString } from '../../utils/colorToString'\nimport { Link } from '../../shared/Link'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\nimport { ButtonVariant } from './contants'\n\ntype ControllerProps = {\n id?: ElementIDValue\n children?: TextInputValue\n link?: LinkValue\n variant?: ResponsiveSelectValue<ButtonVariant>\n shape?: ResponsiveIconRadioGroupValue<'pill' | 'rounded' | 'square'>\n size?: ResponsiveIconRadioGroupValue<'small' | 'medium' | 'large'>\n color?: ResponsiveColor\n textColor?: ResponsiveColor\n textStyle?: TextStyleValue\n width?: WidthValue\n margin?: MarginValue\n}\n\nconst StyledButton = styled(Link).withConfig({\n shouldForwardProp: prop =>\n !['width', 'margin', 'variant', 'shape', 'size', 'textColor', 'color', 'textStyle'].includes(\n prop.toString(),\n ),\n})<{\n width: ControllerProps['width']\n margin: ControllerProps['margin']\n variant: ControllerProps['variant']\n shape: ControllerProps['shape']\n size: ControllerProps['size']\n textColor: ResponsiveValue<Color> | null | undefined\n color: ResponsiveValue<Color> | null | undefined\n textStyle: ControllerProps['textStyle']\n}>`\n display: table;\n border: 0;\n outline: 0;\n user-select: none;\n cursor: pointer;\n font-family: inherit;\n text-decoration: none;\n text-align: center;\n ${cssWidth('auto')}\n ${cssMargin()}\n ${p =>\n cssMediaRules(\n [p.variant, p.shape, p.size, p.textColor, p.color] as const,\n ([\n variant = 'flat',\n shape = 'rounded',\n size = 'medium',\n textColor = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 },\n color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 },\n ]) => {\n const fontSize = {\n value: { small: 12, medium: 14, large: 18 }[size],\n unit: 'px',\n }\n\n return css`\n color: ${colorToString(textColor)};\n border-radius: ${{ square: 0, rounded: 4, pill: 500 }[shape]}px;\n padding: ${{ small: '8px 12px', medium: '12px 16px', large: '16px 20px' }[size]};\n font-size: ${`${fontSize.value}${fontSize.unit}`};\n ${{\n flat: css`\n background: ${colorToString(color)};\n border: none;\n transition: ${['color', 'background', 'border', 'box-shadow']\n .map(property => `${property} 0.15s ease-in-out`)\n .join(', ')};\n\n :hover {\n background: ${ColorHelper(colorToString(color)).darken(0.1).hex()};\n }\n\n :active {\n background: ${ColorHelper(colorToString(color)).darken(0.15).hex()};\n }\n `,\n outline: css`\n background: transparent;\n box-shadow: inset 0 0 0 2px ${colorToString(color)};\n transition: ${['color', 'background', 'box-shadow']\n .map(property => `${property} 0.15s ease-in-out`)\n .join(', ')};\n\n :hover {\n box-shadow: inset 0 0 0 2px ${ColorHelper(colorToString(color)).darken(0.1).hex()};\n color: ${ColorHelper(colorToString(color)).darken(0.1).hex()};\n }\n\n :active {\n box-shadow: inset 0 0 0 2px ${ColorHelper(colorToString(color)).darken(0.15).hex()};\n color: ${ColorHelper(colorToString(color)).darken(0.15).hex()};\n }\n `,\n shadow: css`\n background: ${colorToString(color)};\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.2);\n transition: ${['transform', 'box-shadow']\n .map(property => `${property} 0.18s`)\n .join(', ')};\n\n :hover {\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15), 0 8px 10px -6px rgba(0, 0, 0, 0.3);\n transform: translateY(-1px);\n }\n\n :active {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 4px 6px -3px rgba(0, 0, 0, 0.3);\n transform: translateY(0px);\n }\n `,\n clear: css`\n background: transparent;\n border: none;\n\n :hover {\n color: ${ColorHelper(colorToString(textColor)).alpha(0.5).toString()};\n }\n\n :active {\n color: ${ColorHelper(colorToString(textColor)).alpha(0.6).toString()};\n }\n `,\n blocky: css`\n background: ${colorToString(color)};\n border-width: 1px;\n border-style: solid;\n border-color: ${ColorHelper(colorToString(color)).darken(0.25).hex()};\n box-shadow: 0 4px ${ColorHelper(colorToString(color)).darken(0.25).hex()};\n transition: ${['transform', 'box-shadow']\n .map(property => `${property} 0.1s`)\n .join(', ')};\n\n :hover {\n transform: translateY(2px);\n box-shadow: 0 2px ${ColorHelper(colorToString(color)).darken(0.25).hex()};\n }\n\n :active {\n transform: translateY(4px);\n box-shadow: 0 0 ${ColorHelper(colorToString(color)).darken(0.25).hex()};\n }\n `,\n bubbly: css`\n background: linear-gradient(\n 180deg,\n ${ColorHelper(colorToString(color)).lighten(0.05).hex()},\n ${ColorHelper(colorToString(color)).darken(0.3).saturate(0.05).hex()}\n );\n position: relative;\n z-index: 0;\n\n :before {\n position: absolute;\n content: '';\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n border-radius: inherit;\n background: linear-gradient(\n 180deg,\n ${ColorHelper(colorToString(color)).lighten(0.2).hex()},\n ${ColorHelper(colorToString(color)).darken(0.2).saturate(0.05).hex()}\n );\n opacity: 0;\n transition: opacity 0.15s;\n }\n\n :hover {\n :before {\n opacity: 1;\n }\n }\n\n :active {\n :before {\n opacity: 0.25;\n }\n }\n `,\n skewed: css`\n position: relative;\n z-index: 0;\n\n :before {\n position: absolute;\n content: '';\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n background: ${colorToString(color)};\n transform: skewX(-12deg);\n border-radius: inherit;\n transition: transform 0.2s cubic-bezier(0.25, 0, 0.25, 1.75);\n }\n\n :hover:before {\n transform: skew(0deg);\n }\n\n :active:before {\n transform: skew(-8deg);\n }\n `,\n }[variant]}\n `\n },\n )}\n ${cssTextStyle()}\n`\n\ntype BaseProps = {\n id?: ControllerProps['id']\n children?: ReactElement | string\n link?: ControllerProps['link']\n variant?: ControllerProps['variant']\n shape?: ControllerProps['shape']\n size?: ControllerProps['size']\n textColor?: ControllerProps['textColor']\n color?: ControllerProps['color']\n textStyle?: ControllerProps['textStyle']\n width?: ControllerProps['width']\n margin?: ControllerProps['margin']\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<typeof StyledButton>, keyof BaseProps>\n\nconst Button = forwardRef<HTMLAnchorElement, Props>(function Button(\n {\n id,\n children,\n link,\n variant,\n shape,\n size,\n textColor,\n color,\n textStyle,\n width,\n margin,\n className,\n ...restOfProps\n },\n ref,\n) {\n return (\n <StyledButton\n {...restOfProps}\n ref={ref}\n id={id}\n className={className}\n // @ts-expect-error: HTMLAnchorElement `color` attribute conflicts with prop\n color={color}\n link={link}\n width={width}\n margin={margin}\n shape={shape}\n size={size}\n textColor={textColor}\n textStyle={textStyle}\n variant={variant}\n >\n {children == null ? 'Button Text' : children}\n </StyledButton>\n )\n})\n\nexport default Button\n"],"names":["StyledButton","styled","Link","withConfig","shouldForwardProp","prop","includes","toString","cssWidth","cssMargin","p","cssMediaRules","variant","shape","size","textColor","color","swatch","hue","saturation","lightness","alpha","fontSize","value","small","medium","large","unit","css","colorToString","square","rounded","pill","flat","map","property","join","ColorHelper","darken","hex","outline","shadow","clear","blocky","bubbly","lighten","saturate","skewed","cssTextStyle","Button","forwardRef","ref","id","children","link","textStyle","width","margin","className","restOfProps"],"mappings":"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"}
|
package/dist/Carousel.cjs.js
CHANGED
|
@@ -24,7 +24,6 @@ var styled = require("styled-components");
|
|
|
24
24
|
var framerMotion = require("framer-motion");
|
|
25
25
|
var reactUseGesture = require("react-use-gesture");
|
|
26
26
|
var popcorn = require("@popmotion/popcorn");
|
|
27
|
-
var css = require("@emotion/css");
|
|
28
27
|
var cssMediaRules = require("./cssMediaRules.cjs.js");
|
|
29
28
|
var next = require("./index.cjs.js");
|
|
30
29
|
var useMediaQuery = require("./useMediaQuery.cjs.js");
|
|
@@ -43,6 +42,7 @@ require("next/dynamic");
|
|
|
43
42
|
require("next/document");
|
|
44
43
|
require("slate");
|
|
45
44
|
require("@emotion/server/create-instance");
|
|
45
|
+
require("@emotion/css");
|
|
46
46
|
require("@apollo/client");
|
|
47
47
|
require("@apollo/client/link/batch-http");
|
|
48
48
|
require("./graphql.cjs.js");
|
|
@@ -95,11 +95,12 @@ const Container = styled__default["default"].div`
|
|
|
95
95
|
height: 100%;
|
|
96
96
|
`;
|
|
97
97
|
const Wrapper = styled__default["default"].div.withConfig({
|
|
98
|
-
shouldForwardProp: (prop) => !["margin"].includes(prop)
|
|
98
|
+
shouldForwardProp: (prop) => !["margin", "width"].includes(prop)
|
|
99
99
|
})`
|
|
100
100
|
position: relative;
|
|
101
101
|
display: flex;
|
|
102
102
|
flex-direction: column;
|
|
103
|
+
${cssMediaRules.cssWidth()}
|
|
103
104
|
${cssMediaRules.cssMargin()}
|
|
104
105
|
|
|
105
106
|
&:focus {
|
|
@@ -394,7 +395,7 @@ const Carousel = React.forwardRef(function Carousel2({
|
|
|
394
395
|
}, [autoplay, delay, paginate, isLastPage]);
|
|
395
396
|
return /* @__PURE__ */ jsxRuntime.jsxs(Wrapper, {
|
|
396
397
|
ref,
|
|
397
|
-
|
|
398
|
+
width,
|
|
398
399
|
margin,
|
|
399
400
|
tabIndex: -1,
|
|
400
401
|
onKeyDown: (e) => {
|
package/dist/Carousel.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.cjs.js","sources":["../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["import { useState, useRef, useEffect, useCallback, forwardRef, Ref } from 'react'\nimport styled, { css } from 'styled-components'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from 'react-use-gesture'\nimport { wrap } from '@popmotion/popcorn'\nimport { cx } from '@emotion/css'\n\nimport { cssMediaRules, cssMargin } from '../../utils/cssMediaRules'\nimport { colorToString } from '../../utils/colorToString'\nimport { ColorValue as Color } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport {\n ResponsiveValue,\n ElementIDValue,\n ImagesValue,\n MarginValue,\n ResponsiveNumberValue,\n ResponsiveIconRadioGroupValue,\n GapXValue,\n CheckboxValue,\n NumberValue,\n BorderValue,\n BorderRadiusValue,\n} from '../../../prop-controllers/descriptors'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\n// NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far\nconst Container = styled.div`\n position: relative;\n height: 100%;\n`\n\ntype Props = {\n id?: ElementIDValue\n images?: ImagesValue\n width?: string\n margin?: MarginValue\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: GapXValue\n autoplay?: CheckboxValue\n delay?: NumberValue\n showArrows?: CheckboxValue\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: CheckboxValue\n dotColor?: ResponsiveColor | null\n slideBorder?: BorderValue\n slideBorderRadius?: BorderRadiusValue\n}\n\nconst Wrapper = styled.div.withConfig({\n shouldForwardProp: prop => !['margin'].includes(prop),\n})<{ margin: Props['margin'] }>`\n position: relative;\n display: flex;\n flex-direction: column;\n ${cssMargin()}\n\n &:focus {\n outline: 0;\n }\n`\n\nconst Arrow = styled.div.withConfig({\n shouldForwardProp: prop => !['background'].includes(prop),\n})<{ background?: ResponsiveValue<Color> | null }>`\n padding: 10px;\n border-radius: 50%;\n outline: 0;\n border: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n ${p =>\n cssMediaRules(\n [p.background] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => css`\n background: ${colorToString(background)};\n `,\n )}\n\n svg {\n transition: transform 0.15s;\n stroke: currentColor;\n }\n`\n\nconst Slop = styled.div.withConfig({\n shouldForwardProp: prop => !['color'].includes(prop),\n})<{\n color?: ResponsiveValue<Color> | null\n}>`\n position: absolute;\n top: 0;\n bottom: 0;\n display: ${props => (props.hidden ? 'none' : 'flex')};\n align-items: center;\n cursor: pointer;\n z-index: 2;\n ${p =>\n cssMediaRules(\n [p.color] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => css`\n color: ${colorToString(color)};\n `,\n )}\n`\n\nconst Slide = styled(motion.div).withConfig({\n shouldForwardProp: prop => !['pageSize', 'alignItems'].includes(prop),\n})<{\n pageSize: Props['pageSize']\n alignItems: Props['slideAlignment']\n}>`\n display: flex;\n ${p =>\n cssMediaRules(\n [p.pageSize],\n ([pageSize = 1]) => css`\n flex-basis: ${100 / pageSize}%;\n max-width: ${100 / pageSize}%;\n min-width: ${100 / pageSize}%;\n `,\n )}\n\n ${p => cssMediaRules([p.alignItems], ([alignItems = 'center']) => ({ alignItems }))}\n`\n\nconst Reel = styled(motion.div).withConfig({\n shouldForwardProp: prop => !['gap'].includes(prop),\n})<{ gap: Props['gap'] }>`\n display: flex;\n position: relative;\n flex-wrap: nowrap;\n ${p =>\n cssMediaRules(\n [p.gap] as const,\n ([gap = { value: 0, unit: 'px' }]) => css`\n margin: 0 ${`${-gap.value / 2}${gap.unit}`};\n\n & > ${Slide} {\n padding: 0 ${`${gap.value / 2}${gap.unit}`};\n }\n `,\n )}\n`\n\nconst Page = styled(motion.div)`\n position: relative;\n width: 100%;\n`\n\nconst LeftSlop = styled(Slop).withConfig({\n shouldForwardProp: prop => !['position'].includes(prop),\n})<{ position: Props['arrowPosition'] }>`\n ${p =>\n cssMediaRules([p.position] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return css`\n transform: translateX(8px);\n `\n case 'outside':\n return css`\n transform: translateX(calc(-100% - 8px));\n `\n default:\n return css`\n transform: translateX(calc(-50%));\n `\n }\n })}\n left: 0;\n\n &:hover > ${Arrow} {\n & > svg {\n transform: translateX(-2px);\n }\n }\n`\n\nconst RightSlop = styled(Slop).withConfig({\n shouldForwardProp: prop => !['position'].includes(prop),\n})<{ position: Props['arrowPosition'] }>`\n ${p =>\n cssMediaRules([p.position] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return css`\n transform: translateX(-8px);\n `\n case 'outside':\n return css`\n transform: translateX(calc(100% + 8px));\n `\n default:\n return css`\n transform: translateX(calc(50%));\n `\n }\n })}\n right: 0;\n\n &:hover > ${Arrow} {\n & > svg {\n transform: translateX(2px);\n }\n }\n`\n\nconst ClipMask = styled.div`\n overflow: hidden;\n`\n\nconst Dots = styled.div.withConfig({\n shouldForwardProp: prop => !['color'].includes(prop),\n})<{ color?: ResponsiveValue<Color> | null }>`\n display: ${props => (props.hidden ? 'none' : 'flex')};\n justify-content: center;\n margin-top: 20px;\n ${p =>\n cssMediaRules(\n [p.color] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => css`\n color: ${colorToString(color)};\n `,\n )}\n`\n\nconst Dot = styled.div.withConfig({\n shouldForwardProp: prop => !['active'].includes(prop),\n})<{ active: boolean }>`\n position: relative;\n margin: 0 6px;\n border-radius: 50%;\n cursor: pointer;\n width: 16px;\n height: 16px;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n display: block;\n border-radius: 50%;\n transition: all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n }\n\n &::before {\n box-shadow: 0 0 0 2px currentColor;\n transform: translate3d(-50%, -50%, 0);\n width: ${props => (props.active ? 16 : 10)}px;\n height: ${props => (props.active ? 16 : 10)}px;\n }\n\n &::after {\n background: currentColor;\n transform: translate3d(-50%, -50%, 0) scale(${props => (props.active ? 1 : 0)});\n width: 10px;\n height: 10px;\n }\n\n &:hover::after {\n transform: translate3d(-50%, -50%, 0) scale(${props => (props.active ? 1 : 0.5)});\n }\n`\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n pageDistance => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, velocity)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n return (\n <Wrapper\n ref={ref}\n className={cx(width)}\n margin={margin}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n <Container>\n <ClipMask>\n <Page {...bindPage()} animate={animation}>\n <Reel\n gap={gap}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <Slide\n id={key}\n key={key}\n pageSize={responsivePageSize}\n alignItems={slideAlignment}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[{ deviceId: 'desktop', value: { value: 100, unit: '%' } }]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </Slide>\n ))}\n </Reel>\n </Page>\n </ClipMask>\n <LeftSlop\n onClick={() => paginate(-1)}\n position={arrowPosition}\n // @ts-expect-error: HTMLDivElement `color` attribute conflicts with prop\n color={arrowColor}\n hidden={!showArrows || isFirstPage}\n >\n <Arrow background={arrowBackground}>\n <LeftChevron />\n </Arrow>\n </LeftSlop>\n <RightSlop\n onClick={() => paginate(1)}\n position={arrowPosition}\n // @ts-expect-error: HTMLDivElement `color` attribute conflicts with prop\n color={arrowColor}\n hidden={!showArrows || isLastPage}\n >\n <Arrow background={arrowBackground}>\n <RightChevron />\n </Arrow>\n </RightSlop>\n </Container>\n {/* @ts-expect-error: HTMLDivElement attributes conflicts with `color` prop */}\n <Dots color={dotColor} hidden={!showDots}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </Dots>\n </Wrapper>\n )\n})\n\nexport default Carousel\n"],"names":["LeftChevron","_jsx","RightChevron","Container","styled","div","Wrapper","withConfig","shouldForwardProp","prop","includes","cssMargin","Arrow","p","cssMediaRules","background","swatch","hue","saturation","lightness","alpha","css","colorToString","Slop","props","hidden","color","Slide","motion","pageSize","alignItems","Reel","gap","value","unit","Page","LeftSlop","position","RightSlop","ClipMask","Dots","Dot","active","SWIPE_THRESHOLD","swipePower","dx","velocity","Carousel","forwardRef","images","width","margin","responsivePageSize","step","responsiveStep","slideAlignment","showDots","showArrows","arrowPosition","arrowColor","arrowBackground","dotColor","autoplay","delay","slideBorder","slideBorderRadius","ref","index","setIndex","useState","swipe","useRef","startIndex","wrap","length","useMediaQuery","endIndex","pageCount","Math","ceil","pageIndex","isFirstPage","isLastPage","paginate","useCallback","pageDistance","direction","abs","remaining","slice","distance","min","animation","useAnimation","x","transition","type","stiffness","bindPage","useGesture","onDrag","movement","mx","delta","start","current","onDragEnd","drag","axis","bounds","left","right","rubberband","useEffect","intervalId","setInterval","clearInterval","cx","e","key","_jsxs","ease","duration","map","imageProps","preventDefault","Image","deviceId","file","altText","link","Array","from","_","i"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Carousel.cjs.js","sources":["../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["import { useState, useRef, useEffect, useCallback, forwardRef, Ref } from 'react'\nimport styled, { css } from 'styled-components'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from 'react-use-gesture'\nimport { wrap } from '@popmotion/popcorn'\n\nimport { cssMediaRules, cssMargin, cssWidth } from '../../utils/cssMediaRules'\nimport { colorToString } from '../../utils/colorToString'\nimport { ColorValue as Color } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport {\n ResponsiveValue,\n ElementIDValue,\n ImagesValue,\n MarginValue,\n ResponsiveNumberValue,\n ResponsiveIconRadioGroupValue,\n GapXValue,\n CheckboxValue,\n NumberValue,\n BorderValue,\n BorderRadiusValue,\n WidthValue,\n} from '../../../prop-controllers/descriptors'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\n// NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far\nconst Container = styled.div`\n position: relative;\n height: 100%;\n`\n\ntype Props = {\n id?: ElementIDValue\n images?: ImagesValue\n width?: WidthValue\n margin?: MarginValue\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: GapXValue\n autoplay?: CheckboxValue\n delay?: NumberValue\n showArrows?: CheckboxValue\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: CheckboxValue\n dotColor?: ResponsiveColor | null\n slideBorder?: BorderValue\n slideBorderRadius?: BorderRadiusValue\n}\n\nconst Wrapper = styled.div.withConfig({\n shouldForwardProp: prop => !['margin', 'width'].includes(prop),\n})<{ width: Props['width']; margin: Props['margin'] }>`\n position: relative;\n display: flex;\n flex-direction: column;\n ${cssWidth()}\n ${cssMargin()}\n\n &:focus {\n outline: 0;\n }\n`\n\nconst Arrow = styled.div.withConfig({\n shouldForwardProp: prop => !['background'].includes(prop),\n})<{ background?: ResponsiveValue<Color> | null }>`\n padding: 10px;\n border-radius: 50%;\n outline: 0;\n border: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n ${p =>\n cssMediaRules(\n [p.background] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => css`\n background: ${colorToString(background)};\n `,\n )}\n\n svg {\n transition: transform 0.15s;\n stroke: currentColor;\n }\n`\n\nconst Slop = styled.div.withConfig({\n shouldForwardProp: prop => !['color'].includes(prop),\n})<{\n color?: ResponsiveValue<Color> | null\n}>`\n position: absolute;\n top: 0;\n bottom: 0;\n display: ${props => (props.hidden ? 'none' : 'flex')};\n align-items: center;\n cursor: pointer;\n z-index: 2;\n ${p =>\n cssMediaRules(\n [p.color] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => css`\n color: ${colorToString(color)};\n `,\n )}\n`\n\nconst Slide = styled(motion.div).withConfig({\n shouldForwardProp: prop => !['pageSize', 'alignItems'].includes(prop),\n})<{\n pageSize: Props['pageSize']\n alignItems: Props['slideAlignment']\n}>`\n display: flex;\n ${p =>\n cssMediaRules(\n [p.pageSize],\n ([pageSize = 1]) => css`\n flex-basis: ${100 / pageSize}%;\n max-width: ${100 / pageSize}%;\n min-width: ${100 / pageSize}%;\n `,\n )}\n\n ${p => cssMediaRules([p.alignItems], ([alignItems = 'center']) => ({ alignItems }))}\n`\n\nconst Reel = styled(motion.div).withConfig({\n shouldForwardProp: prop => !['gap'].includes(prop),\n})<{ gap: Props['gap'] }>`\n display: flex;\n position: relative;\n flex-wrap: nowrap;\n ${p =>\n cssMediaRules(\n [p.gap] as const,\n ([gap = { value: 0, unit: 'px' }]) => css`\n margin: 0 ${`${-gap.value / 2}${gap.unit}`};\n\n & > ${Slide} {\n padding: 0 ${`${gap.value / 2}${gap.unit}`};\n }\n `,\n )}\n`\n\nconst Page = styled(motion.div)`\n position: relative;\n width: 100%;\n`\n\nconst LeftSlop = styled(Slop).withConfig({\n shouldForwardProp: prop => !['position'].includes(prop),\n})<{ position: Props['arrowPosition'] }>`\n ${p =>\n cssMediaRules([p.position] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return css`\n transform: translateX(8px);\n `\n case 'outside':\n return css`\n transform: translateX(calc(-100% - 8px));\n `\n default:\n return css`\n transform: translateX(calc(-50%));\n `\n }\n })}\n left: 0;\n\n &:hover > ${Arrow} {\n & > svg {\n transform: translateX(-2px);\n }\n }\n`\n\nconst RightSlop = styled(Slop).withConfig({\n shouldForwardProp: prop => !['position'].includes(prop),\n})<{ position: Props['arrowPosition'] }>`\n ${p =>\n cssMediaRules([p.position] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return css`\n transform: translateX(-8px);\n `\n case 'outside':\n return css`\n transform: translateX(calc(100% + 8px));\n `\n default:\n return css`\n transform: translateX(calc(50%));\n `\n }\n })}\n right: 0;\n\n &:hover > ${Arrow} {\n & > svg {\n transform: translateX(2px);\n }\n }\n`\n\nconst ClipMask = styled.div`\n overflow: hidden;\n`\n\nconst Dots = styled.div.withConfig({\n shouldForwardProp: prop => !['color'].includes(prop),\n})<{ color?: ResponsiveValue<Color> | null }>`\n display: ${props => (props.hidden ? 'none' : 'flex')};\n justify-content: center;\n margin-top: 20px;\n ${p =>\n cssMediaRules(\n [p.color] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => css`\n color: ${colorToString(color)};\n `,\n )}\n`\n\nconst Dot = styled.div.withConfig({\n shouldForwardProp: prop => !['active'].includes(prop),\n})<{ active: boolean }>`\n position: relative;\n margin: 0 6px;\n border-radius: 50%;\n cursor: pointer;\n width: 16px;\n height: 16px;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n display: block;\n border-radius: 50%;\n transition: all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n }\n\n &::before {\n box-shadow: 0 0 0 2px currentColor;\n transform: translate3d(-50%, -50%, 0);\n width: ${props => (props.active ? 16 : 10)}px;\n height: ${props => (props.active ? 16 : 10)}px;\n }\n\n &::after {\n background: currentColor;\n transform: translate3d(-50%, -50%, 0) scale(${props => (props.active ? 1 : 0)});\n width: 10px;\n height: 10px;\n }\n\n &:hover::after {\n transform: translate3d(-50%, -50%, 0) scale(${props => (props.active ? 1 : 0.5)});\n }\n`\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n pageDistance => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, velocity)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n return (\n <Wrapper\n ref={ref}\n width={width}\n margin={margin}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n <Container>\n <ClipMask>\n <Page {...bindPage()} animate={animation}>\n <Reel\n gap={gap}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <Slide\n id={key}\n key={key}\n pageSize={responsivePageSize}\n alignItems={slideAlignment}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[{ deviceId: 'desktop', value: { value: 100, unit: '%' } }]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </Slide>\n ))}\n </Reel>\n </Page>\n </ClipMask>\n <LeftSlop\n onClick={() => paginate(-1)}\n position={arrowPosition}\n // @ts-expect-error: HTMLDivElement `color` attribute conflicts with prop\n color={arrowColor}\n hidden={!showArrows || isFirstPage}\n >\n <Arrow background={arrowBackground}>\n <LeftChevron />\n </Arrow>\n </LeftSlop>\n <RightSlop\n onClick={() => paginate(1)}\n position={arrowPosition}\n // @ts-expect-error: HTMLDivElement `color` attribute conflicts with prop\n color={arrowColor}\n hidden={!showArrows || isLastPage}\n >\n <Arrow background={arrowBackground}>\n <RightChevron />\n </Arrow>\n </RightSlop>\n </Container>\n {/* @ts-expect-error: HTMLDivElement attributes conflicts with `color` prop */}\n <Dots color={dotColor} hidden={!showDots}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </Dots>\n </Wrapper>\n )\n})\n\nexport default Carousel\n"],"names":["LeftChevron","_jsx","RightChevron","Container","styled","div","Wrapper","withConfig","shouldForwardProp","prop","includes","cssWidth","cssMargin","Arrow","p","cssMediaRules","background","swatch","hue","saturation","lightness","alpha","css","colorToString","Slop","props","hidden","color","Slide","motion","pageSize","alignItems","Reel","gap","value","unit","Page","LeftSlop","position","RightSlop","ClipMask","Dots","Dot","active","SWIPE_THRESHOLD","swipePower","dx","velocity","Carousel","forwardRef","images","width","margin","responsivePageSize","step","responsiveStep","slideAlignment","showDots","showArrows","arrowPosition","arrowColor","arrowBackground","dotColor","autoplay","delay","slideBorder","slideBorderRadius","ref","index","setIndex","useState","swipe","useRef","startIndex","wrap","length","useMediaQuery","endIndex","pageCount","Math","ceil","pageIndex","isFirstPage","isLastPage","paginate","useCallback","pageDistance","direction","abs","remaining","slice","distance","min","animation","useAnimation","x","transition","type","stiffness","bindPage","useGesture","onDrag","movement","mx","delta","start","current","onDragEnd","drag","axis","bounds","left","right","rubberband","useEffect","intervalId","setInterval","clearInterval","e","key","_jsxs","ease","duration","map","imageProps","preventDefault","Image","deviceId","file","altText","link","Array","from","_","i"],"mappings":"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"}
|
package/dist/Carousel.es.js
CHANGED
|
@@ -22,8 +22,7 @@ import styled, { css } from "styled-components";
|
|
|
22
22
|
import { motion, useAnimation } from "framer-motion";
|
|
23
23
|
import { useGesture } from "react-use-gesture";
|
|
24
24
|
import { wrap } from "@popmotion/popcorn";
|
|
25
|
-
import {
|
|
26
|
-
import { b as cssMargin, c as cssMediaRules } from "./cssMediaRules.es.js";
|
|
25
|
+
import { a as cssWidth, b as cssMargin, c as cssMediaRules } from "./cssMediaRules.es.js";
|
|
27
26
|
import { p as colorToString } from "./index.es.js";
|
|
28
27
|
import { u as useMediaQuery } from "./useMediaQuery.es.js";
|
|
29
28
|
import ImageComponent from "./Image.es2.js";
|
|
@@ -41,6 +40,7 @@ import "next/dynamic";
|
|
|
41
40
|
import "next/document";
|
|
42
41
|
import "slate";
|
|
43
42
|
import "@emotion/server/create-instance";
|
|
43
|
+
import "@emotion/css";
|
|
44
44
|
import "@apollo/client";
|
|
45
45
|
import "@apollo/client/link/batch-http";
|
|
46
46
|
import "./graphql.es.js";
|
|
@@ -89,11 +89,12 @@ const Container = styled.div`
|
|
|
89
89
|
height: 100%;
|
|
90
90
|
`;
|
|
91
91
|
const Wrapper = styled.div.withConfig({
|
|
92
|
-
shouldForwardProp: (prop) => !["margin"].includes(prop)
|
|
92
|
+
shouldForwardProp: (prop) => !["margin", "width"].includes(prop)
|
|
93
93
|
})`
|
|
94
94
|
position: relative;
|
|
95
95
|
display: flex;
|
|
96
96
|
flex-direction: column;
|
|
97
|
+
${cssWidth()}
|
|
97
98
|
${cssMargin()}
|
|
98
99
|
|
|
99
100
|
&:focus {
|
|
@@ -388,7 +389,7 @@ const Carousel = forwardRef(function Carousel2({
|
|
|
388
389
|
}, [autoplay, delay, paginate, isLastPage]);
|
|
389
390
|
return /* @__PURE__ */ jsxs(Wrapper, {
|
|
390
391
|
ref,
|
|
391
|
-
|
|
392
|
+
width,
|
|
392
393
|
margin,
|
|
393
394
|
tabIndex: -1,
|
|
394
395
|
onKeyDown: (e) => {
|
package/dist/Carousel.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.es.js","sources":["../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["import { useState, useRef, useEffect, useCallback, forwardRef, Ref } from 'react'\nimport styled, { css } from 'styled-components'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from 'react-use-gesture'\nimport { wrap } from '@popmotion/popcorn'\nimport { cx } from '@emotion/css'\n\nimport { cssMediaRules, cssMargin } from '../../utils/cssMediaRules'\nimport { colorToString } from '../../utils/colorToString'\nimport { ColorValue as Color } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport {\n ResponsiveValue,\n ElementIDValue,\n ImagesValue,\n MarginValue,\n ResponsiveNumberValue,\n ResponsiveIconRadioGroupValue,\n GapXValue,\n CheckboxValue,\n NumberValue,\n BorderValue,\n BorderRadiusValue,\n} from '../../../prop-controllers/descriptors'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\n// NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far\nconst Container = styled.div`\n position: relative;\n height: 100%;\n`\n\ntype Props = {\n id?: ElementIDValue\n images?: ImagesValue\n width?: string\n margin?: MarginValue\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: GapXValue\n autoplay?: CheckboxValue\n delay?: NumberValue\n showArrows?: CheckboxValue\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: CheckboxValue\n dotColor?: ResponsiveColor | null\n slideBorder?: BorderValue\n slideBorderRadius?: BorderRadiusValue\n}\n\nconst Wrapper = styled.div.withConfig({\n shouldForwardProp: prop => !['margin'].includes(prop),\n})<{ margin: Props['margin'] }>`\n position: relative;\n display: flex;\n flex-direction: column;\n ${cssMargin()}\n\n &:focus {\n outline: 0;\n }\n`\n\nconst Arrow = styled.div.withConfig({\n shouldForwardProp: prop => !['background'].includes(prop),\n})<{ background?: ResponsiveValue<Color> | null }>`\n padding: 10px;\n border-radius: 50%;\n outline: 0;\n border: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n ${p =>\n cssMediaRules(\n [p.background] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => css`\n background: ${colorToString(background)};\n `,\n )}\n\n svg {\n transition: transform 0.15s;\n stroke: currentColor;\n }\n`\n\nconst Slop = styled.div.withConfig({\n shouldForwardProp: prop => !['color'].includes(prop),\n})<{\n color?: ResponsiveValue<Color> | null\n}>`\n position: absolute;\n top: 0;\n bottom: 0;\n display: ${props => (props.hidden ? 'none' : 'flex')};\n align-items: center;\n cursor: pointer;\n z-index: 2;\n ${p =>\n cssMediaRules(\n [p.color] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => css`\n color: ${colorToString(color)};\n `,\n )}\n`\n\nconst Slide = styled(motion.div).withConfig({\n shouldForwardProp: prop => !['pageSize', 'alignItems'].includes(prop),\n})<{\n pageSize: Props['pageSize']\n alignItems: Props['slideAlignment']\n}>`\n display: flex;\n ${p =>\n cssMediaRules(\n [p.pageSize],\n ([pageSize = 1]) => css`\n flex-basis: ${100 / pageSize}%;\n max-width: ${100 / pageSize}%;\n min-width: ${100 / pageSize}%;\n `,\n )}\n\n ${p => cssMediaRules([p.alignItems], ([alignItems = 'center']) => ({ alignItems }))}\n`\n\nconst Reel = styled(motion.div).withConfig({\n shouldForwardProp: prop => !['gap'].includes(prop),\n})<{ gap: Props['gap'] }>`\n display: flex;\n position: relative;\n flex-wrap: nowrap;\n ${p =>\n cssMediaRules(\n [p.gap] as const,\n ([gap = { value: 0, unit: 'px' }]) => css`\n margin: 0 ${`${-gap.value / 2}${gap.unit}`};\n\n & > ${Slide} {\n padding: 0 ${`${gap.value / 2}${gap.unit}`};\n }\n `,\n )}\n`\n\nconst Page = styled(motion.div)`\n position: relative;\n width: 100%;\n`\n\nconst LeftSlop = styled(Slop).withConfig({\n shouldForwardProp: prop => !['position'].includes(prop),\n})<{ position: Props['arrowPosition'] }>`\n ${p =>\n cssMediaRules([p.position] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return css`\n transform: translateX(8px);\n `\n case 'outside':\n return css`\n transform: translateX(calc(-100% - 8px));\n `\n default:\n return css`\n transform: translateX(calc(-50%));\n `\n }\n })}\n left: 0;\n\n &:hover > ${Arrow} {\n & > svg {\n transform: translateX(-2px);\n }\n }\n`\n\nconst RightSlop = styled(Slop).withConfig({\n shouldForwardProp: prop => !['position'].includes(prop),\n})<{ position: Props['arrowPosition'] }>`\n ${p =>\n cssMediaRules([p.position] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return css`\n transform: translateX(-8px);\n `\n case 'outside':\n return css`\n transform: translateX(calc(100% + 8px));\n `\n default:\n return css`\n transform: translateX(calc(50%));\n `\n }\n })}\n right: 0;\n\n &:hover > ${Arrow} {\n & > svg {\n transform: translateX(2px);\n }\n }\n`\n\nconst ClipMask = styled.div`\n overflow: hidden;\n`\n\nconst Dots = styled.div.withConfig({\n shouldForwardProp: prop => !['color'].includes(prop),\n})<{ color?: ResponsiveValue<Color> | null }>`\n display: ${props => (props.hidden ? 'none' : 'flex')};\n justify-content: center;\n margin-top: 20px;\n ${p =>\n cssMediaRules(\n [p.color] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => css`\n color: ${colorToString(color)};\n `,\n )}\n`\n\nconst Dot = styled.div.withConfig({\n shouldForwardProp: prop => !['active'].includes(prop),\n})<{ active: boolean }>`\n position: relative;\n margin: 0 6px;\n border-radius: 50%;\n cursor: pointer;\n width: 16px;\n height: 16px;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n display: block;\n border-radius: 50%;\n transition: all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n }\n\n &::before {\n box-shadow: 0 0 0 2px currentColor;\n transform: translate3d(-50%, -50%, 0);\n width: ${props => (props.active ? 16 : 10)}px;\n height: ${props => (props.active ? 16 : 10)}px;\n }\n\n &::after {\n background: currentColor;\n transform: translate3d(-50%, -50%, 0) scale(${props => (props.active ? 1 : 0)});\n width: 10px;\n height: 10px;\n }\n\n &:hover::after {\n transform: translate3d(-50%, -50%, 0) scale(${props => (props.active ? 1 : 0.5)});\n }\n`\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n pageDistance => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, velocity)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n return (\n <Wrapper\n ref={ref}\n className={cx(width)}\n margin={margin}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n <Container>\n <ClipMask>\n <Page {...bindPage()} animate={animation}>\n <Reel\n gap={gap}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <Slide\n id={key}\n key={key}\n pageSize={responsivePageSize}\n alignItems={slideAlignment}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[{ deviceId: 'desktop', value: { value: 100, unit: '%' } }]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </Slide>\n ))}\n </Reel>\n </Page>\n </ClipMask>\n <LeftSlop\n onClick={() => paginate(-1)}\n position={arrowPosition}\n // @ts-expect-error: HTMLDivElement `color` attribute conflicts with prop\n color={arrowColor}\n hidden={!showArrows || isFirstPage}\n >\n <Arrow background={arrowBackground}>\n <LeftChevron />\n </Arrow>\n </LeftSlop>\n <RightSlop\n onClick={() => paginate(1)}\n position={arrowPosition}\n // @ts-expect-error: HTMLDivElement `color` attribute conflicts with prop\n color={arrowColor}\n hidden={!showArrows || isLastPage}\n >\n <Arrow background={arrowBackground}>\n <RightChevron />\n </Arrow>\n </RightSlop>\n </Container>\n {/* @ts-expect-error: HTMLDivElement attributes conflicts with `color` prop */}\n <Dots color={dotColor} hidden={!showDots}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </Dots>\n </Wrapper>\n )\n})\n\nexport default Carousel\n"],"names":["LeftChevron","_jsx","RightChevron","Container","styled","div","Wrapper","withConfig","shouldForwardProp","prop","includes","cssMargin","Arrow","p","cssMediaRules","background","swatch","hue","saturation","lightness","alpha","css","colorToString","Slop","props","hidden","color","Slide","motion","pageSize","alignItems","Reel","gap","value","unit","Page","LeftSlop","position","RightSlop","ClipMask","Dots","Dot","active","SWIPE_THRESHOLD","swipePower","dx","velocity","Carousel","forwardRef","images","width","margin","responsivePageSize","step","responsiveStep","slideAlignment","showDots","showArrows","arrowPosition","arrowColor","arrowBackground","dotColor","autoplay","delay","slideBorder","slideBorderRadius","ref","index","setIndex","useState","swipe","useRef","startIndex","wrap","length","useMediaQuery","endIndex","pageCount","Math","ceil","pageIndex","isFirstPage","isLastPage","paginate","useCallback","pageDistance","direction","abs","remaining","slice","distance","min","animation","useAnimation","x","transition","type","stiffness","bindPage","useGesture","onDrag","movement","mx","delta","start","current","onDragEnd","drag","axis","bounds","left","right","rubberband","useEffect","intervalId","setInterval","clearInterval","cx","e","key","_jsxs","ease","duration","map","imageProps","preventDefault","Image","deviceId","file","altText","link","Array","from","_","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,cAAc,MAClBC,oBAAA,OAAA;AAAA,EAAK,OAAM;AAAA,EAA6B,OAAM;AAAA,EAAK,QAAO;AAAA,EAAK,SAAQ;AAAA,EACrE,8BAAA,QAAA;AAAA,IACE,GAAE;AAAA,IACF,MAAK;AAAA,IACL,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,aAAY;AAAA,EAAA,CALd;AADF,CADF;AAYA,MAAMC,eAAe,MACnBD,oBAAA,OAAA;AAAA,EAAK,OAAM;AAAA,EAA6B,OAAM;AAAA,EAAK,QAAO;AAAA,EAAK,SAAQ;AAAA,EACrE,8BAAA,QAAA;AAAA,IACE,GAAE;AAAA,IACF,MAAK;AAAA,IACL,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,aAAY;AAAA,EAAA,CALd;AADF,CAAA;AAYF,MAAME,YAAYC,OAAOC;AAAAA;AAAAA;AAAAA;AA0BzB,MAAMC,UAAUF,OAAOC,IAAIE,WAAW;AAAA,EACpCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,QAAD,EAAWC,SAASD,IAApB;AADQ,CAAtB;AAAA;AAAA;AAAA;AAAA,IAMZE,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhB,MAAMC,QAAQR,OAAOC,IAAIE,WAAW;AAAA,EAClCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,YAAD,EAAeC,SAASD,IAAxB;AADM,CAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcVI,CAAAA,MACAC,cACE,CAACD,EAAEE,UAAH,GACA,CAAC,CAACA,aAAa;AAAA,EAAEC,QAAQ;AAAA,IAAEC,KAAK;AAAA,IAAGC,YAAY;AAAA,IAAGC,WAAW;AAAA,EAA9C;AAAA,EAAqDC,OAAO;AAA5D,OAAqEC;AAAAA,sBACpEC,cAAcP,UAAD;AAAA,OAHlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAajB,MAAMQ,OAAOnB,OAAOC,IAAIE,WAAW;AAAA,EACjCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,OAAD,EAAUC,SAASD,IAAnB;AADK,CAAtB;AAAA;AAAA;AAAA;AAAA,aAQAe,CAAAA,UAAUA,MAAMC,SAAS,SAAS;AAAA;AAAA;AAAA;AAAA,IAI3CZ,CAAAA,MACAC,cACE,CAACD,EAAEa,KAAH,GACA,CAAC,CAACA,QAAQ;AAAA,EAAEV,QAAQ;AAAA,IAAEC,KAAK;AAAA,IAAGC,YAAY;AAAA,IAAGC,WAAW;AAAA,EAA9C;AAAA,EAAmDC,OAAO;AAA1D,OAAmEC;AAAAA,iBAClEC,cAAcI,KAAD;AAAA,OAHb;AAAA;AAQjB,MAAMC,QAAQvB,OAAOwB,OAAOvB,GAAR,EAAaE,WAAW;AAAA,EAC1CC,mBAAmBC,UAAQ,CAAC,CAAC,YAAY,YAAb,EAA2BC,SAASD,IAApC;AADc,CAA9B;AAAA;AAAA,IAOVI,CAAAA,MACAC,cACE,CAACD,EAAEgB,QAAH,GACA,CAAC,CAACA,WAAW,OAAOR;AAAAA,sBACJ,MAAMQ;AAAAA,qBACP,MAAMA;AAAAA,qBACN,MAAMA;AAAAA,OALV;AAAA;AAAA,IASbhB,CAAAA,MAAKC,cAAc,CAACD,EAAEiB,UAAH,GAAgB,CAAC,CAACA,aAAa,cAAe;AAAA,EAAEA;AAAF,EAA/C;AAAA;AAGtB,MAAMC,OAAO3B,OAAOwB,OAAOvB,GAAR,EAAaE,WAAW;AAAA,EACzCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,KAAD,EAAQC,SAASD,IAAjB;AADa,CAA9B;AAAA;AAAA;AAAA;AAAA,IAMTI,CAAAA,MACAC,cACE,CAACD,EAAEmB,GAAH,GACA,CAAC,CAACA,MAAM;AAAA,EAAEC,OAAO;AAAA,EAAGC,MAAM;AAAlB,OAA8Bb;AAAAA,oBACvB,GAAE,CAACW,IAAIC,QAAQ,IAAID,IAAIE;AAAAA;AAAAA,cAE9BP;AAAAA,uBACU,GAAEK,IAAIC,QAAQ,IAAID,IAAIE;AAAAA;AAAAA,OAN7B;AAAA;AAYjB,MAAMC,OAAO/B,OAAOwB,OAAOvB,GAAR;AAAA;AAAA;AAAA;AAKnB,MAAM+B,WAAWhC,OAAOmB,IAAD,EAAOhB,WAAW;AAAA,EACvCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,UAAD,EAAaC,SAASD,IAAtB;AADW,CAAxB;AAAA,IAGbI,CAAAA,MACAC,cAAc,CAACD,EAAEwB,QAAH,GAAuB,CAAC,CAACA,WAAW,cAAc;AACtDA,UAAAA;AAAAA,SACD;AACIhB,aAAAA;AAAAA;AAAAA;AAAAA,SAGJ;AACIA,aAAAA;AAAAA;AAAAA;AAAAA;AAIAA,aAAAA;AAAAA;AAAAA;AAAAA;AAIZ,CAfY;AAAA;AAAA;AAAA,cAkBHT;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAOd,MAAM0B,YAAYlC,OAAOmB,IAAD,EAAOhB,WAAW;AAAA,EACxCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,UAAD,EAAaC,SAASD,IAAtB;AADY,CAAxB;AAAA,IAGdI,CAAAA,MACAC,cAAc,CAACD,EAAEwB,QAAH,GAAuB,CAAC,CAACA,WAAW,cAAc;AACtDA,UAAAA;AAAAA,SACD;AACIhB,aAAAA;AAAAA;AAAAA;AAAAA,SAGJ;AACIA,aAAAA;AAAAA;AAAAA;AAAAA;AAIAA,aAAAA;AAAAA;AAAAA;AAAAA;AAIZ,CAfY;AAAA;AAAA;AAAA,cAkBHT;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAOd,MAAM2B,WAAWnC,OAAOC;AAAAA;AAAAA;AAIxB,MAAMmC,OAAOpC,OAAOC,IAAIE,WAAW;AAAA,EACjCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,OAAD,EAAUC,SAASD,IAAnB;AADK,CAAtB;AAAA,aAGAe,CAAAA,UAAUA,MAAMC,SAAS,SAAS;AAAA;AAAA;AAAA,IAG3CZ,CAAAA,MACAC,cACE,CAACD,EAAEa,KAAH,GACA,CAAC,CAACA,QAAQ;AAAA,EAAEV,QAAQ;AAAA,IAAEC,KAAK;AAAA,IAAGC,YAAY;AAAA,IAAGC,WAAW;AAAA,EAA9C;AAAA,EAAmDC,OAAO;AAA1D,OAAmEC;AAAAA,iBAClEC,cAAcI,KAAD;AAAA,OAHb;AAAA;AAQjB,MAAMe,MAAMrC,OAAOC,IAAIE,WAAW;AAAA,EAChCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,QAAD,EAAWC,SAASD,IAApB;AADI,CAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAwBCe,CAAAA,UAAUA,MAAMkB,SAAS,KAAK;AAAA,cAC7BlB,CAAAA,UAAUA,MAAMkB,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,kDAKMlB,CAAAA,UAAUA,MAAMkB,SAAS,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAM7BlB,CAAAA,UAAUA,MAAMkB,SAAS,IAAI;AAAA;AAAA;AAI/E,MAAMC,kBAAkB;AACxB,MAAMC,aAAa,CAACC,IAAYC,aAAqBD,KAAUC,KAAAA;AAEzDC,MAAAA,WAAWC,WAAW,mBAC1B;AAAA,EACEC,SAAS,CADX;AAAA,EAEEC;AAAAA,EACAC;AAAAA,EACAtB,UAAUuB;AAAAA,EACVC,MAAMC;AAAAA,EACNtB;AAAAA,EACAuB;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,WAAW;AAAA,EACXC,QAAQ;AAAA,EACRC;AAAAA,EACAC;AAAAA,GAEFC,KACA;AACM,QAAA,CAACC,OAAOC,YAAYC,SAAS,CAAD;AAC5BC,QAAAA,QAAQC,OAAO,CAAD;AACdC,QAAAA,aAAaC,KAAK,GAAGxB,OAAOyB,QAAQP,KAAnB;AACjBtC,QAAAA,WAAW8C,cAAcvB,kBAAD,KAAwB;AAChDC,QAAAA,OAAOsB,cAAcrB,cAAD,KAAoB;AAC9C,QAAMsB,WAAWJ,aAAa3C;AAC9B,QAAMgD,YAAYC,KAAKC,aAAaL,SAAS7C,YAAYwB,OAAO,CAA9C;AACZ2B,QAAAA,YAAYF,KAAKC,KAAKP,aAAanB,IAAvB;AAClB,QAAM4B,cAAcD,cAAc;AAC5BE,QAAAA,aAAaF,cAAcH,YAAY;AACvCM,QAAAA,WAAWC,YACfC,CAAgB,iBAAA;AACVA,QAAAA,iBAAiB;AAAG;AAElBC,UAAAA,YAAYD,eAAeP,KAAKS,IAAIF,YAAT;AAC3BG,UAAAA,YAAYF,YAAY,IAAIrC,OAAOwC,MAAMb,QAAb,IAAyB3B,OAAOwC,MAAM,GAAGjB,UAAhB;AACrDkB,UAAAA,WAAWJ,YAAYR,KAAKa,IAAIH,UAAUd,QAAQrB,OAAOyB,KAAKS,IAAIF,YAAT,CAAlC;AAE7BjB,aAASD,QAAQuB,QAAT;AAAA,EAAA,GAEV,CAACzC,QAAQkB,OAAOK,YAAYI,UAAUvB,IAAtC,CAV0B;AAatBuC,QAAAA,YAAYC,aAAa;AAAA,IAAEC,GAAG;AAAA,IAAGC,YAAY;AAAA,MAAEC,MAAM;AAAA,MAAUC,WAAW;AAAA,IAA7B;AAAA,EAAA,CAArB;AACxBC,QAAAA,WAAWC,WACf;AAAA,IACEC,QAAQ,CAAC;AAAA,MAAEC,UAAU,CAACC;AAAAA,MAAKC,OAAO,CAAC1D;AAAAA,MAAKC;AAAAA,UAAe;AACrD8C,gBAAUY,MAAM;AAAA,QAAEV,GAAGQ;AAAAA,MAAAA,CAArB;AACMG,YAAAA,UAAU7D,WAAWC,IAAIC,QAAL;AAAA,IAH9B;AAAA,IAKE4D,WAAW,MAAM;AACfd,gBAAUY,MAAM;AAAA,QAAEV,GAAG;AAAA,MAAA,CAArB;AAEIxB,UAAAA,MAAMmC,UAAU9D;AAAiBwC,iBAAS,CAAD;AAAA,eACpCb,MAAMmC,UAAU,CAAC9D;AAAiBwC,iBAAS,EAAD;AAAA,IACpD;AAAA,EAAA,GAEH;AAAA,IACEwB,MAAM;AAAA,MACJC,MAAM;AAAA,MACNC,QAAQ;AAAA,QAAEC,MAAM;AAAA,QAAGC,OAAO;AAAA,MAFtB;AAAA,MAGJC,YAAY;AAAA,IAHR;AAAA,EAAA,CAdiB;AAsB3BC,YAAU,MAAM;AACV,QAAA,CAACnD,YAAYjC,aAAa;AAAGuC,eAAS,CAAD;AAAA,EAAA,GACxC,CAACN,UAAUjC,QAAX,CAFM;AAIToF,YAAU,MAAM;AACd,QAAI,CAACnD;AAAU,aAAO,MAAM;AAAA,MAAA;AAEtBoD,UAAAA,aAAaC,YAAY,MAAOjC,aAAad,SAAS,CAAD,IAAMe,SAAS,CAAD,GAAMpB,QAAQ,GAAzD;AAEvB,WAAA,MAAMqD,cAAcF,UAAD;AAAA,KACzB,CAACpD,UAAUC,OAAOoB,UAAUD,UAA5B,CANM;AAQT,8BACG,SAAD;AAAA,IACE;AAAA,IACA,WAAWmC,GAAGnE,KAAD;AAAA,IACb;AAAA,IACA,UAAU;AAAA,IACV,WAAWoE,CAAK,MAAA;AACNA,cAAAA,EAAEC;AAAAA,aACH;AACHpC,mBAAS,CAAD;AACR;AAAA,aACG;AACHA,mBAAS,EAAD;AACR;AAAA;AAAA,IAZR;AAAA,IAAA,UAAA,CAiBEqC,qBAAC,WAAD;AAAA,MAAA,UAAA,CACEvH,oBAAC,UAAD;AAAA,QAAA,8BACG,MAASiG,iCAAAA,SAAV,IAAUA;AAAAA,UAAY,SAASN;AAAAA,UAA/B,8BACG,MAAD;AAAA,YACE;AAAA,YACA,SAAS;AAAA,cAAEE,GAAI,GAAE,CAAE,OAAMjE,YAAY2C;AAAAA,YAFvC;AAAA,YAGE,YAAY;AAAA,cACVsB,GAAG;AAAA,gBACDE,MAAM;AAAA,gBACNyB,MAAM,CAAC,OAAO,MAAM,MAAM,CAApB;AAAA,gBACNC,UAAU;AAAA,cAHT;AAAA,YAJP;AAAA,YAAA,UAWGzE,OAAO0E,IAAI,CAAC;AAAA,cAAEnG,OAAOoG;AAAAA,cAAYL;AAAAA,sCAC/B,OAAD;AAAA,cACE,IAAIA;AAAAA,cAEJ,UAAUnE;AAAAA,cACV,YAAYG;AAAAA,cACZ,aAAa+D,CAAKA,MAAAA,EAAEO,eALtB;AAAA,cAME,SAASP,CAAK,MAAA;AACRhD,oBAAAA,MAAMmC,YAAY;AAAGa,oBAAEO,eAAF;AAAA,cAP7B;AAAA,cAAA,8BAUGC,gBAAD;AAAA,gBACE,OAAO,CAAC;AAAA,kBAAEC,UAAU;AAAA,kBAAW9F,OAAO;AAAA,oBAAEA,OAAO;AAAA,oBAAKC,MAAM;AAAA,kBAApB;AAAA,gBAAA,CAA/B;AAAA,gBACP,MAAM0F,WAAWI;AAAAA,gBACjB,SAASJ,WAAWK;AAAAA,gBACpB,MAAML,WAAWM;AAAAA,gBACjB,QAAQlE;AAAAA,gBACR,cAAcC;AAAAA,cAAAA,CANhB;AAAA,YAVF,GAEOsD,GAFP,CADD;AAAA,UAAA,CAXH;AAAA,QAAA,EADF;AAAA,MAAA,CAFJ,GAsCEtH,oBAAC,UAAD;AAAA,QACE,SAAS,MAAMkF,SAAS,EAAD;AAAA,QACvB,UAAUzB;AAAAA,QAEV,OAAOC;AAAAA,QACP,QAAQ,CAACF,cAAcwB;AAAAA,QALzB,8BAOG,OAAD;AAAA,UAAO,YAAYrB;AAAAA,UAAnB,UACE3D,oBAAC,aAAD,EAAA;AAAA,QAAA,CADF;AAAA,MAAA,CA7CJ,GAiDEA,oBAAC,WAAD;AAAA,QACE,SAAS,MAAMkF,SAAS,CAAD;AAAA,QACvB,UAAUzB;AAAAA,QAEV,OAAOC;AAAAA,QACP,QAAQ,CAACF,cAAcyB;AAAAA,QALzB,8BAOG,OAAD;AAAA,UAAO,YAAYtB;AAAAA,UAAnB,UACE3D,oBAAC,cAAD,EAAA;AAAA,QAAA,CADF;AAAA,MAAA,CAxDJ,CAAA;AAAA,IAAA,CAjBF,GA+EEA,oBAAC,MAAD;AAAA,MAAM,OAAO4D;AAAAA,MAAU,QAAQ,CAACL;AAAAA,MAC7B2E,UAAAA,MAAMC,KAAK;AAAA,QAAE1D,QAAQG;AAAAA,MAAAA,CAArB,EAAkC8C,IAAI,CAACU,GAAGC,0BACxC,KAAD;AAAA,QAAa,QAAQA,MAAMtD;AAAAA,QAAW,SAAS,MAAMG,SAASmD,IAAItD,SAAL;AAAA,MAA7D,GAAUsD,CAAV,CADD;AAAA,IAAA,CAhFL,CAAA;AAAA,EAAA,CADF;AAuFD,CAvK0B;;"}
|
|
1
|
+
{"version":3,"file":"Carousel.es.js","sources":["../src/components/builtin/Carousel/Carousel.tsx"],"sourcesContent":["import { useState, useRef, useEffect, useCallback, forwardRef, Ref } from 'react'\nimport styled, { css } from 'styled-components'\nimport { motion, useAnimation } from 'framer-motion'\nimport { useGesture } from 'react-use-gesture'\nimport { wrap } from '@popmotion/popcorn'\n\nimport { cssMediaRules, cssMargin, cssWidth } from '../../utils/cssMediaRules'\nimport { colorToString } from '../../utils/colorToString'\nimport { ColorValue as Color } from '../../utils/types'\nimport { useMediaQuery } from '../../hooks'\n\nimport Image from '../Image'\nimport {\n ResponsiveValue,\n ElementIDValue,\n ImagesValue,\n MarginValue,\n ResponsiveNumberValue,\n ResponsiveIconRadioGroupValue,\n GapXValue,\n CheckboxValue,\n NumberValue,\n BorderValue,\n BorderRadiusValue,\n WidthValue,\n} from '../../../prop-controllers/descriptors'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\n\nconst LeftChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M7,13,1,7,7,1\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\nconst RightChevron = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"14\" viewBox=\"0 0 10 14\">\n <path\n d=\"M3,1,9,7,3,13\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n />\n </svg>\n)\n\n// NOTE: We set height to 100% here to fix an issue on IE11 where the child height of a flex column extends too far\nconst Container = styled.div`\n position: relative;\n height: 100%;\n`\n\ntype Props = {\n id?: ElementIDValue\n images?: ImagesValue\n width?: WidthValue\n margin?: MarginValue\n pageSize?: ResponsiveNumberValue\n step?: ResponsiveNumberValue\n slideAlignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gap?: GapXValue\n autoplay?: CheckboxValue\n delay?: NumberValue\n showArrows?: CheckboxValue\n arrowPosition?: ResponsiveIconRadioGroupValue<'inside' | 'center' | 'outside'>\n arrowColor?: ResponsiveColor | null\n arrowBackground?: ResponsiveColor | null\n showDots?: CheckboxValue\n dotColor?: ResponsiveColor | null\n slideBorder?: BorderValue\n slideBorderRadius?: BorderRadiusValue\n}\n\nconst Wrapper = styled.div.withConfig({\n shouldForwardProp: prop => !['margin', 'width'].includes(prop),\n})<{ width: Props['width']; margin: Props['margin'] }>`\n position: relative;\n display: flex;\n flex-direction: column;\n ${cssWidth()}\n ${cssMargin()}\n\n &:focus {\n outline: 0;\n }\n`\n\nconst Arrow = styled.div.withConfig({\n shouldForwardProp: prop => !['background'].includes(prop),\n})<{ background?: ResponsiveValue<Color> | null }>`\n padding: 10px;\n border-radius: 50%;\n outline: 0;\n border: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n user-select: none;\n ${p =>\n cssMediaRules(\n [p.background] as const,\n ([background = { swatch: { hue: 0, saturation: 0, lightness: 100 }, alpha: 1 }]) => css`\n background: ${colorToString(background)};\n `,\n )}\n\n svg {\n transition: transform 0.15s;\n stroke: currentColor;\n }\n`\n\nconst Slop = styled.div.withConfig({\n shouldForwardProp: prop => !['color'].includes(prop),\n})<{\n color?: ResponsiveValue<Color> | null\n}>`\n position: absolute;\n top: 0;\n bottom: 0;\n display: ${props => (props.hidden ? 'none' : 'flex')};\n align-items: center;\n cursor: pointer;\n z-index: 2;\n ${p =>\n cssMediaRules(\n [p.color] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => css`\n color: ${colorToString(color)};\n `,\n )}\n`\n\nconst Slide = styled(motion.div).withConfig({\n shouldForwardProp: prop => !['pageSize', 'alignItems'].includes(prop),\n})<{\n pageSize: Props['pageSize']\n alignItems: Props['slideAlignment']\n}>`\n display: flex;\n ${p =>\n cssMediaRules(\n [p.pageSize],\n ([pageSize = 1]) => css`\n flex-basis: ${100 / pageSize}%;\n max-width: ${100 / pageSize}%;\n min-width: ${100 / pageSize}%;\n `,\n )}\n\n ${p => cssMediaRules([p.alignItems], ([alignItems = 'center']) => ({ alignItems }))}\n`\n\nconst Reel = styled(motion.div).withConfig({\n shouldForwardProp: prop => !['gap'].includes(prop),\n})<{ gap: Props['gap'] }>`\n display: flex;\n position: relative;\n flex-wrap: nowrap;\n ${p =>\n cssMediaRules(\n [p.gap] as const,\n ([gap = { value: 0, unit: 'px' }]) => css`\n margin: 0 ${`${-gap.value / 2}${gap.unit}`};\n\n & > ${Slide} {\n padding: 0 ${`${gap.value / 2}${gap.unit}`};\n }\n `,\n )}\n`\n\nconst Page = styled(motion.div)`\n position: relative;\n width: 100%;\n`\n\nconst LeftSlop = styled(Slop).withConfig({\n shouldForwardProp: prop => !['position'].includes(prop),\n})<{ position: Props['arrowPosition'] }>`\n ${p =>\n cssMediaRules([p.position] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return css`\n transform: translateX(8px);\n `\n case 'outside':\n return css`\n transform: translateX(calc(-100% - 8px));\n `\n default:\n return css`\n transform: translateX(calc(-50%));\n `\n }\n })}\n left: 0;\n\n &:hover > ${Arrow} {\n & > svg {\n transform: translateX(-2px);\n }\n }\n`\n\nconst RightSlop = styled(Slop).withConfig({\n shouldForwardProp: prop => !['position'].includes(prop),\n})<{ position: Props['arrowPosition'] }>`\n ${p =>\n cssMediaRules([p.position] as const, ([position = 'inside']) => {\n switch (position) {\n case 'inside':\n return css`\n transform: translateX(-8px);\n `\n case 'outside':\n return css`\n transform: translateX(calc(100% + 8px));\n `\n default:\n return css`\n transform: translateX(calc(50%));\n `\n }\n })}\n right: 0;\n\n &:hover > ${Arrow} {\n & > svg {\n transform: translateX(2px);\n }\n }\n`\n\nconst ClipMask = styled.div`\n overflow: hidden;\n`\n\nconst Dots = styled.div.withConfig({\n shouldForwardProp: prop => !['color'].includes(prop),\n})<{ color?: ResponsiveValue<Color> | null }>`\n display: ${props => (props.hidden ? 'none' : 'flex')};\n justify-content: center;\n margin-top: 20px;\n ${p =>\n cssMediaRules(\n [p.color] as const,\n ([color = { swatch: { hue: 0, saturation: 0, lightness: 0 }, alpha: 1 }]) => css`\n color: ${colorToString(color)};\n `,\n )}\n`\n\nconst Dot = styled.div.withConfig({\n shouldForwardProp: prop => !['active'].includes(prop),\n})<{ active: boolean }>`\n position: relative;\n margin: 0 6px;\n border-radius: 50%;\n cursor: pointer;\n width: 16px;\n height: 16px;\n\n &::before,\n &::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n display: block;\n border-radius: 50%;\n transition: all 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n }\n\n &::before {\n box-shadow: 0 0 0 2px currentColor;\n transform: translate3d(-50%, -50%, 0);\n width: ${props => (props.active ? 16 : 10)}px;\n height: ${props => (props.active ? 16 : 10)}px;\n }\n\n &::after {\n background: currentColor;\n transform: translate3d(-50%, -50%, 0) scale(${props => (props.active ? 1 : 0)});\n width: 10px;\n height: 10px;\n }\n\n &:hover::after {\n transform: translate3d(-50%, -50%, 0) scale(${props => (props.active ? 1 : 0.5)});\n }\n`\n\nconst SWIPE_THRESHOLD = 20\nconst swipePower = (dx: number, velocity: number) => dx * (1 + velocity)\n\nconst Carousel = forwardRef(function Carousel(\n {\n images = [],\n width,\n margin,\n pageSize: responsivePageSize,\n step: responsiveStep,\n gap,\n slideAlignment,\n showDots,\n showArrows,\n arrowPosition,\n arrowColor,\n arrowBackground,\n dotColor,\n autoplay = false,\n delay = 5,\n slideBorder,\n slideBorderRadius,\n }: Props,\n ref: Ref<HTMLDivElement>,\n) {\n const [index, setIndex] = useState(0)\n const swipe = useRef(0)\n const startIndex = wrap(0, images.length, index)\n const pageSize = useMediaQuery(responsivePageSize) || 1\n const step = useMediaQuery(responsiveStep) || 1\n const endIndex = startIndex + pageSize\n const pageCount = Math.ceil((images.length - pageSize) / step + 1)\n const pageIndex = Math.ceil(startIndex / step)\n const isFirstPage = pageIndex === 0\n const isLastPage = pageIndex === pageCount - 1\n const paginate = useCallback(\n pageDistance => {\n if (pageDistance === 0) return\n\n const direction = pageDistance / Math.abs(pageDistance)\n const remaining = direction > 0 ? images.slice(endIndex) : images.slice(0, startIndex)\n const distance = direction * Math.min(remaining.length, step * Math.abs(pageDistance))\n\n setIndex(index + distance)\n },\n [images, index, startIndex, endIndex, step],\n )\n // @ts-expect-error: `useAnimation` types expect no arguments.\n const animation = useAnimation({ x: 0, transition: { type: 'spring', stiffness: 100 } })\n const bindPage = useGesture(\n {\n onDrag: ({ movement: [mx], delta: [dx], velocity }) => {\n animation.start({ x: mx })\n swipe.current = swipePower(dx, velocity)\n },\n onDragEnd: () => {\n animation.start({ x: 0 })\n\n if (swipe.current > SWIPE_THRESHOLD) paginate(1)\n else if (swipe.current < -SWIPE_THRESHOLD) paginate(-1)\n },\n },\n {\n drag: {\n axis: 'x',\n bounds: { left: 0, right: 0 },\n rubberband: true,\n },\n },\n )\n\n useEffect(() => {\n if (!autoplay || pageSize !== 0) setIndex(0)\n }, [autoplay, pageSize])\n\n useEffect(() => {\n if (!autoplay) return () => {}\n\n const intervalId = setInterval(() => (isLastPage ? setIndex(0) : paginate(1)), delay * 1000)\n\n return () => clearInterval(intervalId)\n }, [autoplay, delay, paginate, isLastPage])\n\n return (\n <Wrapper\n ref={ref}\n width={width}\n margin={margin}\n tabIndex={-1}\n onKeyDown={e => {\n switch (e.key) {\n case 'ArrowRight':\n paginate(1)\n break\n case 'ArrowLeft':\n paginate(-1)\n break\n default:\n }\n }}\n >\n <Container>\n <ClipMask>\n <Page {...bindPage()} animate={animation}>\n <Reel\n gap={gap}\n animate={{ x: `${-(100 / pageSize) * startIndex}%` }}\n transition={{\n x: {\n type: 'tween',\n ease: [0.165, 0.84, 0.44, 1],\n duration: 0.5,\n },\n }}\n >\n {images.map(({ props: imageProps, key }) => (\n <Slide\n id={key}\n key={key}\n pageSize={responsivePageSize}\n alignItems={slideAlignment}\n onMouseDown={e => e.preventDefault()}\n onClick={e => {\n if (swipe.current !== 0) e.preventDefault()\n }}\n >\n <Image\n width={[{ deviceId: 'desktop', value: { value: 100, unit: '%' } }]}\n file={imageProps.file}\n altText={imageProps.altText}\n link={imageProps.link}\n border={slideBorder}\n borderRadius={slideBorderRadius}\n />\n </Slide>\n ))}\n </Reel>\n </Page>\n </ClipMask>\n <LeftSlop\n onClick={() => paginate(-1)}\n position={arrowPosition}\n // @ts-expect-error: HTMLDivElement `color` attribute conflicts with prop\n color={arrowColor}\n hidden={!showArrows || isFirstPage}\n >\n <Arrow background={arrowBackground}>\n <LeftChevron />\n </Arrow>\n </LeftSlop>\n <RightSlop\n onClick={() => paginate(1)}\n position={arrowPosition}\n // @ts-expect-error: HTMLDivElement `color` attribute conflicts with prop\n color={arrowColor}\n hidden={!showArrows || isLastPage}\n >\n <Arrow background={arrowBackground}>\n <RightChevron />\n </Arrow>\n </RightSlop>\n </Container>\n {/* @ts-expect-error: HTMLDivElement attributes conflicts with `color` prop */}\n <Dots color={dotColor} hidden={!showDots}>\n {Array.from({ length: pageCount }).map((_, i) => (\n <Dot key={i} active={i === pageIndex} onClick={() => paginate(i - pageIndex)} />\n ))}\n </Dots>\n </Wrapper>\n )\n})\n\nexport default Carousel\n"],"names":["LeftChevron","_jsx","RightChevron","Container","styled","div","Wrapper","withConfig","shouldForwardProp","prop","includes","cssWidth","cssMargin","Arrow","p","cssMediaRules","background","swatch","hue","saturation","lightness","alpha","css","colorToString","Slop","props","hidden","color","Slide","motion","pageSize","alignItems","Reel","gap","value","unit","Page","LeftSlop","position","RightSlop","ClipMask","Dots","Dot","active","SWIPE_THRESHOLD","swipePower","dx","velocity","Carousel","forwardRef","images","width","margin","responsivePageSize","step","responsiveStep","slideAlignment","showDots","showArrows","arrowPosition","arrowColor","arrowBackground","dotColor","autoplay","delay","slideBorder","slideBorderRadius","ref","index","setIndex","useState","swipe","useRef","startIndex","wrap","length","useMediaQuery","endIndex","pageCount","Math","ceil","pageIndex","isFirstPage","isLastPage","paginate","useCallback","pageDistance","direction","abs","remaining","slice","distance","min","animation","useAnimation","x","transition","type","stiffness","bindPage","useGesture","onDrag","movement","mx","delta","start","current","onDragEnd","drag","axis","bounds","left","right","rubberband","useEffect","intervalId","setInterval","clearInterval","e","key","_jsxs","ease","duration","map","imageProps","preventDefault","Image","deviceId","file","altText","link","Array","from","_","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,cAAc,MAClBC,oBAAA,OAAA;AAAA,EAAK,OAAM;AAAA,EAA6B,OAAM;AAAA,EAAK,QAAO;AAAA,EAAK,SAAQ;AAAA,EACrE,8BAAA,QAAA;AAAA,IACE,GAAE;AAAA,IACF,MAAK;AAAA,IACL,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,aAAY;AAAA,EAAA,CALd;AADF,CADF;AAYA,MAAMC,eAAe,MACnBD,oBAAA,OAAA;AAAA,EAAK,OAAM;AAAA,EAA6B,OAAM;AAAA,EAAK,QAAO;AAAA,EAAK,SAAQ;AAAA,EACrE,8BAAA,QAAA;AAAA,IACE,GAAE;AAAA,IACF,MAAK;AAAA,IACL,eAAc;AAAA,IACd,gBAAe;AAAA,IACf,aAAY;AAAA,EAAA,CALd;AADF,CAAA;AAYF,MAAME,YAAYC,OAAOC;AAAAA;AAAAA;AAAAA;AA0BzB,MAAMC,UAAUF,OAAOC,IAAIE,WAAW;AAAA,EACpCC,mBAAmBC,UAAQ,CAAC,CAAC,UAAU,OAAX,EAAoBC,SAASD,IAA7B;AADQ,CAAtB;AAAA;AAAA;AAAA;AAAA,IAMZE,SAAW;AAAA,IACXC,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhB,MAAMC,QAAQT,OAAOC,IAAIE,WAAW;AAAA,EAClCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,YAAD,EAAeC,SAASD,IAAxB;AADM,CAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcVK,CAAAA,MACAC,cACE,CAACD,EAAEE,UAAH,GACA,CAAC,CAACA,aAAa;AAAA,EAAEC,QAAQ;AAAA,IAAEC,KAAK;AAAA,IAAGC,YAAY;AAAA,IAAGC,WAAW;AAAA,EAA9C;AAAA,EAAqDC,OAAO;AAA5D,OAAqEC;AAAAA,sBACpEC,cAAcP,UAAD;AAAA,OAHlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAajB,MAAMQ,OAAOpB,OAAOC,IAAIE,WAAW;AAAA,EACjCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,OAAD,EAAUC,SAASD,IAAnB;AADK,CAAtB;AAAA;AAAA;AAAA;AAAA,aAQAgB,CAAAA,UAAUA,MAAMC,SAAS,SAAS;AAAA;AAAA;AAAA;AAAA,IAI3CZ,CAAAA,MACAC,cACE,CAACD,EAAEa,KAAH,GACA,CAAC,CAACA,QAAQ;AAAA,EAAEV,QAAQ;AAAA,IAAEC,KAAK;AAAA,IAAGC,YAAY;AAAA,IAAGC,WAAW;AAAA,EAA9C;AAAA,EAAmDC,OAAO;AAA1D,OAAmEC;AAAAA,iBAClEC,cAAcI,KAAD;AAAA,OAHb;AAAA;AAQjB,MAAMC,QAAQxB,OAAOyB,OAAOxB,GAAR,EAAaE,WAAW;AAAA,EAC1CC,mBAAmBC,UAAQ,CAAC,CAAC,YAAY,YAAb,EAA2BC,SAASD,IAApC;AADc,CAA9B;AAAA;AAAA,IAOVK,CAAAA,MACAC,cACE,CAACD,EAAEgB,QAAH,GACA,CAAC,CAACA,WAAW,OAAOR;AAAAA,sBACJ,MAAMQ;AAAAA,qBACP,MAAMA;AAAAA,qBACN,MAAMA;AAAAA,OALV;AAAA;AAAA,IASbhB,CAAAA,MAAKC,cAAc,CAACD,EAAEiB,UAAH,GAAgB,CAAC,CAACA,aAAa,cAAe;AAAA,EAAEA;AAAF,EAA/C;AAAA;AAGtB,MAAMC,OAAO5B,OAAOyB,OAAOxB,GAAR,EAAaE,WAAW;AAAA,EACzCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,KAAD,EAAQC,SAASD,IAAjB;AADa,CAA9B;AAAA;AAAA;AAAA;AAAA,IAMTK,CAAAA,MACAC,cACE,CAACD,EAAEmB,GAAH,GACA,CAAC,CAACA,MAAM;AAAA,EAAEC,OAAO;AAAA,EAAGC,MAAM;AAAlB,OAA8Bb;AAAAA,oBACvB,GAAE,CAACW,IAAIC,QAAQ,IAAID,IAAIE;AAAAA;AAAAA,cAE9BP;AAAAA,uBACU,GAAEK,IAAIC,QAAQ,IAAID,IAAIE;AAAAA;AAAAA,OAN7B;AAAA;AAYjB,MAAMC,OAAOhC,OAAOyB,OAAOxB,GAAR;AAAA;AAAA;AAAA;AAKnB,MAAMgC,WAAWjC,OAAOoB,IAAD,EAAOjB,WAAW;AAAA,EACvCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,UAAD,EAAaC,SAASD,IAAtB;AADW,CAAxB;AAAA,IAGbK,CAAAA,MACAC,cAAc,CAACD,EAAEwB,QAAH,GAAuB,CAAC,CAACA,WAAW,cAAc;AACtDA,UAAAA;AAAAA,SACD;AACIhB,aAAAA;AAAAA;AAAAA;AAAAA,SAGJ;AACIA,aAAAA;AAAAA;AAAAA;AAAAA;AAIAA,aAAAA;AAAAA;AAAAA;AAAAA;AAIZ,CAfY;AAAA;AAAA;AAAA,cAkBHT;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAOd,MAAM0B,YAAYnC,OAAOoB,IAAD,EAAOjB,WAAW;AAAA,EACxCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,UAAD,EAAaC,SAASD,IAAtB;AADY,CAAxB;AAAA,IAGdK,CAAAA,MACAC,cAAc,CAACD,EAAEwB,QAAH,GAAuB,CAAC,CAACA,WAAW,cAAc;AACtDA,UAAAA;AAAAA,SACD;AACIhB,aAAAA;AAAAA;AAAAA;AAAAA,SAGJ;AACIA,aAAAA;AAAAA;AAAAA;AAAAA;AAIAA,aAAAA;AAAAA;AAAAA;AAAAA;AAIZ,CAfY;AAAA;AAAA;AAAA,cAkBHT;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAOd,MAAM2B,WAAWpC,OAAOC;AAAAA;AAAAA;AAIxB,MAAMoC,OAAOrC,OAAOC,IAAIE,WAAW;AAAA,EACjCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,OAAD,EAAUC,SAASD,IAAnB;AADK,CAAtB;AAAA,aAGAgB,CAAAA,UAAUA,MAAMC,SAAS,SAAS;AAAA;AAAA;AAAA,IAG3CZ,CAAAA,MACAC,cACE,CAACD,EAAEa,KAAH,GACA,CAAC,CAACA,QAAQ;AAAA,EAAEV,QAAQ;AAAA,IAAEC,KAAK;AAAA,IAAGC,YAAY;AAAA,IAAGC,WAAW;AAAA,EAA9C;AAAA,EAAmDC,OAAO;AAA1D,OAAmEC;AAAAA,iBAClEC,cAAcI,KAAD;AAAA,OAHb;AAAA;AAQjB,MAAMe,MAAMtC,OAAOC,IAAIE,WAAW;AAAA,EAChCC,mBAAmBC,CAAQ,SAAA,CAAC,CAAC,QAAD,EAAWC,SAASD,IAApB;AADI,CAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAwBCgB,CAAAA,UAAUA,MAAMkB,SAAS,KAAK;AAAA,cAC7BlB,CAAAA,UAAUA,MAAMkB,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,kDAKMlB,CAAAA,UAAUA,MAAMkB,SAAS,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kDAM7BlB,CAAAA,UAAUA,MAAMkB,SAAS,IAAI;AAAA;AAAA;AAI/E,MAAMC,kBAAkB;AACxB,MAAMC,aAAa,CAACC,IAAYC,aAAqBD,KAAUC,KAAAA;AAEzDC,MAAAA,WAAWC,WAAW,mBAC1B;AAAA,EACEC,SAAS,CADX;AAAA,EAEEC;AAAAA,EACAC;AAAAA,EACAtB,UAAUuB;AAAAA,EACVC,MAAMC;AAAAA,EACNtB;AAAAA,EACAuB;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,WAAW;AAAA,EACXC,QAAQ;AAAA,EACRC;AAAAA,EACAC;AAAAA,GAEFC,KACA;AACM,QAAA,CAACC,OAAOC,YAAYC,SAAS,CAAD;AAC5BC,QAAAA,QAAQC,OAAO,CAAD;AACdC,QAAAA,aAAaC,KAAK,GAAGxB,OAAOyB,QAAQP,KAAnB;AACjBtC,QAAAA,WAAW8C,cAAcvB,kBAAD,KAAwB;AAChDC,QAAAA,OAAOsB,cAAcrB,cAAD,KAAoB;AAC9C,QAAMsB,WAAWJ,aAAa3C;AAC9B,QAAMgD,YAAYC,KAAKC,aAAaL,SAAS7C,YAAYwB,OAAO,CAA9C;AACZ2B,QAAAA,YAAYF,KAAKC,KAAKP,aAAanB,IAAvB;AAClB,QAAM4B,cAAcD,cAAc;AAC5BE,QAAAA,aAAaF,cAAcH,YAAY;AACvCM,QAAAA,WAAWC,YACfC,CAAgB,iBAAA;AACVA,QAAAA,iBAAiB;AAAG;AAElBC,UAAAA,YAAYD,eAAeP,KAAKS,IAAIF,YAAT;AAC3BG,UAAAA,YAAYF,YAAY,IAAIrC,OAAOwC,MAAMb,QAAb,IAAyB3B,OAAOwC,MAAM,GAAGjB,UAAhB;AACrDkB,UAAAA,WAAWJ,YAAYR,KAAKa,IAAIH,UAAUd,QAAQrB,OAAOyB,KAAKS,IAAIF,YAAT,CAAlC;AAE7BjB,aAASD,QAAQuB,QAAT;AAAA,EAAA,GAEV,CAACzC,QAAQkB,OAAOK,YAAYI,UAAUvB,IAAtC,CAV0B;AAatBuC,QAAAA,YAAYC,aAAa;AAAA,IAAEC,GAAG;AAAA,IAAGC,YAAY;AAAA,MAAEC,MAAM;AAAA,MAAUC,WAAW;AAAA,IAA7B;AAAA,EAAA,CAArB;AACxBC,QAAAA,WAAWC,WACf;AAAA,IACEC,QAAQ,CAAC;AAAA,MAAEC,UAAU,CAACC;AAAAA,MAAKC,OAAO,CAAC1D;AAAAA,MAAKC;AAAAA,UAAe;AACrD8C,gBAAUY,MAAM;AAAA,QAAEV,GAAGQ;AAAAA,MAAAA,CAArB;AACMG,YAAAA,UAAU7D,WAAWC,IAAIC,QAAL;AAAA,IAH9B;AAAA,IAKE4D,WAAW,MAAM;AACfd,gBAAUY,MAAM;AAAA,QAAEV,GAAG;AAAA,MAAA,CAArB;AAEIxB,UAAAA,MAAMmC,UAAU9D;AAAiBwC,iBAAS,CAAD;AAAA,eACpCb,MAAMmC,UAAU,CAAC9D;AAAiBwC,iBAAS,EAAD;AAAA,IACpD;AAAA,EAAA,GAEH;AAAA,IACEwB,MAAM;AAAA,MACJC,MAAM;AAAA,MACNC,QAAQ;AAAA,QAAEC,MAAM;AAAA,QAAGC,OAAO;AAAA,MAFtB;AAAA,MAGJC,YAAY;AAAA,IAHR;AAAA,EAAA,CAdiB;AAsB3BC,YAAU,MAAM;AACV,QAAA,CAACnD,YAAYjC,aAAa;AAAGuC,eAAS,CAAD;AAAA,EAAA,GACxC,CAACN,UAAUjC,QAAX,CAFM;AAIToF,YAAU,MAAM;AACd,QAAI,CAACnD;AAAU,aAAO,MAAM;AAAA,MAAA;AAEtBoD,UAAAA,aAAaC,YAAY,MAAOjC,aAAad,SAAS,CAAD,IAAMe,SAAS,CAAD,GAAMpB,QAAQ,GAAzD;AAEvB,WAAA,MAAMqD,cAAcF,UAAD;AAAA,KACzB,CAACpD,UAAUC,OAAOoB,UAAUD,UAA5B,CANM;AAQT,8BACG,SAAD;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,WAAWmC,CAAK,MAAA;AACNA,cAAAA,EAAEC;AAAAA,aACH;AACHnC,mBAAS,CAAD;AACR;AAAA,aACG;AACHA,mBAAS,EAAD;AACR;AAAA;AAAA,IAZR;AAAA,IAAA,UAAA,CAiBEoC,qBAAC,WAAD;AAAA,MAAA,UAAA,CACEvH,oBAAC,UAAD;AAAA,QAAA,8BACG,MAASkG,iCAAAA,SAAV,IAAUA;AAAAA,UAAY,SAASN;AAAAA,UAA/B,8BACG,MAAD;AAAA,YACE;AAAA,YACA,SAAS;AAAA,cAAEE,GAAI,GAAE,CAAE,OAAMjE,YAAY2C;AAAAA,YAFvC;AAAA,YAGE,YAAY;AAAA,cACVsB,GAAG;AAAA,gBACDE,MAAM;AAAA,gBACNwB,MAAM,CAAC,OAAO,MAAM,MAAM,CAApB;AAAA,gBACNC,UAAU;AAAA,cAHT;AAAA,YAJP;AAAA,YAAA,UAWGxE,OAAOyE,IAAI,CAAC;AAAA,cAAElG,OAAOmG;AAAAA,cAAYL;AAAAA,sCAC/B,OAAD;AAAA,cACE,IAAIA;AAAAA,cAEJ,UAAUlE;AAAAA,cACV,YAAYG;AAAAA,cACZ,aAAa8D,CAAKA,MAAAA,EAAEO,eALtB;AAAA,cAME,SAASP,CAAK,MAAA;AACR/C,oBAAAA,MAAMmC,YAAY;AAAGY,oBAAEO,eAAF;AAAA,cAP7B;AAAA,cAAA,8BAUGC,gBAAD;AAAA,gBACE,OAAO,CAAC;AAAA,kBAAEC,UAAU;AAAA,kBAAW7F,OAAO;AAAA,oBAAEA,OAAO;AAAA,oBAAKC,MAAM;AAAA,kBAApB;AAAA,gBAAA,CAA/B;AAAA,gBACP,MAAMyF,WAAWI;AAAAA,gBACjB,SAASJ,WAAWK;AAAAA,gBACpB,MAAML,WAAWM;AAAAA,gBACjB,QAAQjE;AAAAA,gBACR,cAAcC;AAAAA,cAAAA,CANhB;AAAA,YAVF,GAEOqD,GAFP,CADD;AAAA,UAAA,CAXH;AAAA,QAAA,EADF;AAAA,MAAA,CAFJ,GAsCEtH,oBAAC,UAAD;AAAA,QACE,SAAS,MAAMmF,SAAS,EAAD;AAAA,QACvB,UAAUzB;AAAAA,QAEV,OAAOC;AAAAA,QACP,QAAQ,CAACF,cAAcwB;AAAAA,QALzB,8BAOG,OAAD;AAAA,UAAO,YAAYrB;AAAAA,UAAnB,UACE5D,oBAAC,aAAD,EAAA;AAAA,QAAA,CADF;AAAA,MAAA,CA7CJ,GAiDEA,oBAAC,WAAD;AAAA,QACE,SAAS,MAAMmF,SAAS,CAAD;AAAA,QACvB,UAAUzB;AAAAA,QAEV,OAAOC;AAAAA,QACP,QAAQ,CAACF,cAAcyB;AAAAA,QALzB,8BAOG,OAAD;AAAA,UAAO,YAAYtB;AAAAA,UAAnB,UACE5D,oBAAC,cAAD,EAAA;AAAA,QAAA,CADF;AAAA,MAAA,CAxDJ,CAAA;AAAA,IAAA,CAjBF,GA+EEA,oBAAC,MAAD;AAAA,MAAM,OAAO6D;AAAAA,MAAU,QAAQ,CAACL;AAAAA,MAC7B0E,UAAAA,MAAMC,KAAK;AAAA,QAAEzD,QAAQG;AAAAA,MAAAA,CAArB,EAAkC6C,IAAI,CAACU,GAAGC,0BACxC,KAAD;AAAA,QAAa,QAAQA,MAAMrD;AAAAA,QAAW,SAAS,MAAMG,SAASkD,IAAIrD,SAAL;AAAA,MAA7D,GAAUqD,CAAV,CADD;AAAA,IAAA,CAhFL,CAAA;AAAA,EAAA,CADF;AAuFD,CAvK0B;;"}
|
package/dist/Countdown.cjs.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
var React = require("react");
|
|
4
4
|
var styled = require("styled-components");
|
|
5
|
-
var css = require("@emotion/css");
|
|
6
5
|
var next = require("./index.cjs.js");
|
|
7
6
|
var cssMediaRules = require("./cssMediaRules.cjs.js");
|
|
8
7
|
var jsxRuntime = require("react/jsx-runtime");
|
|
@@ -19,6 +18,7 @@ require("next/dynamic");
|
|
|
19
18
|
require("next/document");
|
|
20
19
|
require("slate");
|
|
21
20
|
require("@emotion/server/create-instance");
|
|
21
|
+
require("@emotion/css");
|
|
22
22
|
require("@apollo/client");
|
|
23
23
|
require("@apollo/client/link/batch-http");
|
|
24
24
|
require("./graphql.cjs.js");
|
|
@@ -48,9 +48,10 @@ const Segment = styled__default["default"].div`
|
|
|
48
48
|
text-align: center;
|
|
49
49
|
`;
|
|
50
50
|
const Container = styled__default["default"].div.withConfig({
|
|
51
|
-
shouldForwardProp: (prop) => !["margin", "variant", "size", "shape", "gap", "labelColor", "numberFont", "numberColor", "blockColor", "labelFont"].includes(prop)
|
|
51
|
+
shouldForwardProp: (prop) => !["width", "margin", "variant", "size", "shape", "gap", "labelColor", "numberFont", "numberColor", "blockColor", "labelFont"].includes(prop)
|
|
52
52
|
})`
|
|
53
53
|
display: flex;
|
|
54
|
+
${cssMediaRules.cssWidth()}
|
|
54
55
|
${cssMediaRules.cssMargin()}
|
|
55
56
|
${(p) => cssMediaRules.cssMediaRules([p.size], ([size = "medium"]) => {
|
|
56
57
|
switch (size) {
|
|
@@ -291,7 +292,7 @@ const Countdown = React.forwardRef(function Countdown2({
|
|
|
291
292
|
return /* @__PURE__ */ jsxRuntime.jsxs(Container, {
|
|
292
293
|
ref,
|
|
293
294
|
id,
|
|
294
|
-
|
|
295
|
+
width,
|
|
295
296
|
margin,
|
|
296
297
|
variant,
|
|
297
298
|
size,
|