@makeswift/runtime 0.1.9 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/Box.cjs.js +2 -3
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +2 -3
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +4 -3
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +4 -3
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +4 -3
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +4 -3
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +4 -3
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +4 -3
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +4 -3
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +4 -3
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.cjs.js +4 -3
  22. package/dist/Embed.cjs.js.map +1 -1
  23. package/dist/Embed.es.js +4 -3
  24. package/dist/Embed.es.js.map +1 -1
  25. package/dist/Form.cjs.js +3 -4
  26. package/dist/Form.cjs.js.map +1 -1
  27. package/dist/Form.es.js +3 -4
  28. package/dist/Form.es.js.map +1 -1
  29. package/dist/Image.cjs2.js +4 -3
  30. package/dist/Image.cjs2.js.map +1 -1
  31. package/dist/Image.es2.js +4 -3
  32. package/dist/Image.es2.js.map +1 -1
  33. package/dist/Navigation.cjs.js +4 -3
  34. package/dist/Navigation.cjs.js.map +1 -1
  35. package/dist/Navigation.es.js +4 -3
  36. package/dist/Navigation.es.js.map +1 -1
  37. package/dist/Root.cjs.js +4 -3
  38. package/dist/Root.cjs.js.map +1 -1
  39. package/dist/Root.es.js +4 -3
  40. package/dist/Root.es.js.map +1 -1
  41. package/dist/SocialLinks.cjs.js +4 -3
  42. package/dist/SocialLinks.cjs.js.map +1 -1
  43. package/dist/SocialLinks.es.js +4 -3
  44. package/dist/SocialLinks.es.js.map +1 -1
  45. package/dist/Text.cjs.js +2 -3
  46. package/dist/Text.cjs.js.map +1 -1
  47. package/dist/Text.es.js +2 -3
  48. package/dist/Text.es.js.map +1 -1
  49. package/dist/Video.cjs.js +4 -3
  50. package/dist/Video.cjs.js.map +1 -1
  51. package/dist/Video.es.js +4 -3
  52. package/dist/Video.es.js.map +1 -1
  53. package/dist/actions.es.js +1 -1
  54. package/dist/builder.cjs.js +0 -2
  55. package/dist/builder.cjs.js.map +1 -1
  56. package/dist/builder.es.js +0 -2
  57. package/dist/builder.es.js.map +1 -1
  58. package/dist/components.cjs.js +2 -3
  59. package/dist/components.cjs.js.map +1 -1
  60. package/dist/components.es.js +2 -3
  61. package/dist/components.es.js.map +1 -1
  62. package/dist/control-serialization.cjs.js +37 -39
  63. package/dist/control-serialization.cjs.js.map +1 -1
  64. package/dist/control-serialization.es.js +1 -3
  65. package/dist/control-serialization.es.js.map +1 -1
  66. package/dist/controls.cjs.js +9 -5
  67. package/dist/controls.cjs.js.map +1 -1
  68. package/dist/controls.es.js +2 -2
  69. package/dist/cssMediaRules.cjs.js +1 -13
  70. package/dist/cssMediaRules.cjs.js.map +1 -1
  71. package/dist/cssMediaRules.es.js +1 -13
  72. package/dist/cssMediaRules.es.js.map +1 -1
  73. package/dist/image.cjs.js +269 -1
  74. package/dist/image.cjs.js.map +1 -1
  75. package/dist/image.es.js +230 -1
  76. package/dist/image.es.js.map +1 -1
  77. package/dist/index.cjs.js +382 -187
  78. package/dist/index.cjs.js.map +1 -1
  79. package/dist/index.es.js +212 -18
  80. package/dist/index.es.js.map +1 -1
  81. package/dist/index.es2.js +1 -1
  82. package/dist/index.es3.js +1 -1
  83. package/dist/main.cjs.js +2 -3
  84. package/dist/main.cjs.js.map +1 -1
  85. package/dist/main.es.js +2 -3
  86. package/dist/main.es.js.map +1 -1
  87. package/dist/next.cjs.js +4 -3
  88. package/dist/next.cjs.js.map +1 -1
  89. package/dist/next.es.js +5 -4
  90. package/dist/next.es.js.map +1 -1
  91. package/dist/prop-controllers.cjs.js +5 -6
  92. package/dist/prop-controllers.cjs.js.map +1 -1
  93. package/dist/prop-controllers.es.js +2 -3
  94. package/dist/prop-controllers.es.js.map +1 -1
  95. package/dist/react-builder-preview.cjs.js +21 -78
  96. package/dist/react-builder-preview.cjs.js.map +1 -1
  97. package/dist/react-builder-preview.es.js +28 -85
  98. package/dist/react-builder-preview.es.js.map +1 -1
  99. package/dist/react-page.cjs.js +110 -45
  100. package/dist/react-page.cjs.js.map +1 -1
  101. package/dist/react-page.es.js +77 -17
  102. package/dist/react-page.es.js.map +1 -1
  103. package/dist/react.cjs.js +4 -3
  104. package/dist/react.cjs.js.map +1 -1
  105. package/dist/react.es.js +4 -3
  106. package/dist/react.es.js.map +1 -1
  107. package/dist/{instances.cjs.js → slot.cjs.js} +28 -4
  108. package/dist/slot.cjs.js.map +1 -0
  109. package/dist/{instances.es.js → slot.es.js} +23 -3
  110. package/dist/slot.es.js.map +1 -0
  111. package/dist/types/box-model.d.ts +1 -1
  112. package/dist/types/box-model.d.ts.map +1 -1
  113. package/dist/types/controls/index.d.ts +1 -0
  114. package/dist/types/controls/index.d.ts.map +1 -1
  115. package/dist/types/controls/slot.d.ts +42 -0
  116. package/dist/types/controls/slot.d.ts.map +1 -0
  117. package/dist/types/prop-controllers/descriptors.d.ts +2 -2
  118. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  119. package/dist/types/prop-controllers/instances.d.ts +3 -2
  120. package/dist/types/prop-controllers/instances.d.ts.map +1 -1
  121. package/dist/types/prop-controllers/introspection.d.ts.map +1 -1
  122. package/dist/types/runtimes/react/controls/slot.d.ts +30 -0
  123. package/dist/types/runtimes/react/controls/slot.d.ts.map +1 -0
  124. package/dist/types/runtimes/react/controls/style.d.ts.map +1 -1
  125. package/dist/types/runtimes/react/controls.d.ts.map +1 -1
  126. package/dist/types/runtimes/react/index.d.ts +4 -0
  127. package/dist/types/runtimes/react/index.d.ts.map +1 -1
  128. package/dist/types/runtimes/react/use-style.d.ts +3 -0
  129. package/dist/types/runtimes/react/use-style.d.ts.map +1 -0
  130. package/dist/types/state/modules/prop-controller-handles.d.ts +1 -0
  131. package/dist/types/state/modules/prop-controller-handles.d.ts.map +1 -1
  132. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  133. package/dist/types/state/react-page.d.ts +3 -0
  134. package/dist/types/state/react-page.d.ts.map +1 -1
  135. package/dist/useBoxShadow.es.js +1 -1
  136. package/package.json +2 -2
  137. package/dist/descriptors.cjs.js +0 -232
  138. package/dist/descriptors.cjs.js.map +0 -1
  139. package/dist/descriptors.es.js +0 -196
  140. package/dist/descriptors.es.js.map +0 -1
  141. package/dist/instances.cjs.js.map +0 -1
  142. package/dist/instances.es.js.map +0 -1
  143. package/dist/style.cjs.js +0 -41
  144. package/dist/style.cjs.js.map +0 -1
  145. package/dist/style.es.js +0 -38
  146. package/dist/style.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"controls.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"controls.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  export { b as Checkbox, C as CheckboxControlType, c as Link, L as LinkControlType, d as Number, N as NumberControlType, e as Select, S as SelectControlType, f as TextArea, T as TextAreaControlType, g as TextInput, a as TextInputControlType } from "./text-input.es.js";
2
2
  export { a as Color, C as ColorControlType } from "./color.es.js";
3
3
  export { a as Combobox, C as ComboboxControlType, b as List, L as ListControlType, c as Shape, S as ShapeControlType } from "./shape.es.js";
4
- export { b as Image, I as ImageControlType, a as ImageControlValueFormat } from "./image.es.js";
5
- export { b as Style, a as StyleControlProperty, S as StyleControlType } from "./style.es.js";
4
+ export { y as Image, I as ImageControlType, v as ImageControlValueFormat, z as Style, u as StyleControlProperty, w as StyleControlType } from "./image.es.js";
5
+ export { a as Slot, c as SlotControl, b as SlotControlMessageType, S as SlotControlType } from "./slot.es.js";
6
6
  //# sourceMappingURL=controls.es.js.map
@@ -1,18 +1,6 @@
1
1
  "use strict";
2
2
  var styled = require("styled-components");
3
3
  var next = require("./index.cjs.js");
4
- const getIndexes = (spans, index) => {
5
- const flattened = spans.reduce((a, s) => a.concat(s), []);
6
- if (index < 0 || index > flattened.length)
7
- throw new RangeError();
8
- let remainder = index;
9
- let rowIndex = 0;
10
- while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {
11
- remainder -= spans[rowIndex].length;
12
- rowIndex += 1;
13
- }
14
- return [rowIndex, remainder];
15
- };
16
4
  function cssMediaRules(responsiveValues, join, strategy) {
17
5
  return (props) => next.join(typeof responsiveValues === "function" ? responsiveValues(props) : responsiveValues, join, strategy).reduce((acc, { deviceId, value }) => {
18
6
  const device = next.getDevice(deviceId);
@@ -146,7 +134,7 @@ function cssGridItem() {
146
134
  columnGap = { value: 0, unit: "px" },
147
135
  rowGap = { value: 0, unit: "px" }
148
136
  ]) => {
149
- const [rowIndex, columnIndex] = getIndexes(spans, props.index);
137
+ const [rowIndex, columnIndex] = next.getIndexes(spans, props.index);
150
138
  const firstCol = columnIndex === 0;
151
139
  const lastCol = columnIndex === spans[rowIndex].length - 1;
152
140
  const span = spans[rowIndex][columnIndex];
@@ -1 +1 @@
1
- {"version":3,"file":"cssMediaRules.cjs.js","sources":["../src/components/utils/columns.ts","../src/components/utils/cssMediaRules.ts"],"sourcesContent":["export const getIndexes = (spans: Array<Array<number>>, index: number): [number, number] => {\n const flattened = spans.reduce((a, s) => a.concat(s), [])\n\n if (index < 0 || index > flattened.length) throw new RangeError()\n\n let remainder = index\n let rowIndex = 0\n\n while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {\n remainder -= spans[rowIndex].length\n rowIndex += 1\n }\n\n return [rowIndex, remainder]\n}\n","import { css, CSSObject } from 'styled-components'\nimport {\n WidthProperty,\n MarginProperty,\n MarginTopProperty,\n MarginRightProperty,\n MarginBottomProperty,\n MarginLeftProperty,\n PaddingProperty,\n PaddingTopProperty,\n PaddingRightProperty,\n PaddingBottomProperty,\n PaddingLeftProperty,\n BorderRadiusProperty,\n BorderTopLeftRadiusProperty,\n BorderTopRightRadiusProperty,\n BorderBottomLeftRadiusProperty,\n BorderBottomRightRadiusProperty,\n} from 'csstype'\n\nimport {\n ResponsiveValue,\n ResponsiveValueType as ExtractResponsiveValue,\n Length as LengthValue,\n} from '../../prop-controllers'\nimport {\n FallbackStrategy,\n getDevice,\n getDeviceMediaQuery,\n join as joinResponsiveValues,\n} from './devices'\nimport { getIndexes } from './columns'\nimport {\n BorderRadiusValue,\n MarginValue,\n PaddingValue,\n TextStyleValue,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport { colorToString } from './colorToString'\nimport {\n BorderSide,\n BorderPropControllerData,\n BoxShadowData,\n BoxShadowPropControllerData,\n} from '../hooks'\n\ntype CSSRules = ReturnType<typeof css>\n\nexport function cssMediaRules<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>, P>(\n responsiveValues: A | ((props: P) => A),\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) =>\n | CSSRules\n | CSSObject,\n strategy?: FallbackStrategy<V>,\n): (props: P) => CSSRules {\n return props =>\n joinResponsiveValues(\n typeof responsiveValues === 'function' ? responsiveValues(props) : responsiveValues,\n join,\n strategy,\n ).reduce((acc, { deviceId, value }) => {\n const device = getDevice(deviceId)\n const mediaQuery = getDeviceMediaQuery(device)\n\n return css`\n ${acc}${mediaQuery} {\n ${value}\n }\n `\n }, css`` as CSSRules)\n}\n\nexport function cssWidth(\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): (props: { width?: WidthValue }) => CSSRules {\n return props => css`\n max-width: 100%;\n ${cssMediaRules(\n [props.width] as const,\n ([width = defaultValue]) => css`\n width: ${typeof width === 'object' ? `${width.value}${width.unit}` : width};\n `,\n )}\n `\n}\n\nfunction getMarginSide(marginSide: LengthValue | MarginProperty<string | number>) {\n return typeof marginSide === 'object' ? `${marginSide.value}${marginSide.unit}` : marginSide\n}\n\nexport function cssMargin(\n defaultValue: {\n marginTop?: LengthValue | MarginTopProperty<string | number>\n marginRight?: LengthValue | MarginRightProperty<string | number>\n marginBottom?: LengthValue | MarginBottomProperty<string | number>\n marginLeft?: LengthValue | MarginLeftProperty<string | number>\n } = {},\n): (props: { margin?: MarginValue }) => CSSRules {\n const defaultMarginTop = defaultValue.marginTop === undefined ? 0 : defaultValue.marginTop\n const defaultMarginRight =\n defaultValue.marginRight === undefined ? 'auto' : defaultValue.marginRight\n const defaultMarginBottom =\n defaultValue.marginBottom === undefined ? 0 : defaultValue.marginBottom\n const defaultMarginLeft = defaultValue.marginLeft === undefined ? 'auto' : defaultValue.marginLeft\n\n return props => css`\n ${cssMediaRules(\n [props.margin] as const,\n ([\n {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n } = {} as ExtractResponsiveValue<MarginValue>,\n ]) => css`\n margin-top: ${getMarginSide(marginTop || defaultMarginTop)};\n margin-right: ${getMarginSide(marginRight || defaultMarginRight)};\n margin-bottom: ${getMarginSide(marginBottom || defaultMarginBottom)};\n margin-left: ${getMarginSide(marginLeft || defaultMarginLeft)};\n `,\n )}\n `\n}\n\nfunction getPaddingSide(paddingSide: LengthValue | PaddingProperty<string | number>) {\n return typeof paddingSide === 'object' ? `${paddingSide.value}${paddingSide.unit}` : paddingSide\n}\n\nexport function cssPadding(\n defaultValue: {\n paddingTop?: LengthValue | PaddingTopProperty<string | number>\n paddingRight?: LengthValue | PaddingRightProperty<string | number>\n paddingBottom?: LengthValue | PaddingBottomProperty<string | number>\n paddingLeft?: LengthValue | PaddingLeftProperty<string | number>\n } = {},\n): (props: { padding?: PaddingValue }) => CSSRules {\n const defaultPaddingTop = defaultValue.paddingTop === undefined ? 0 : defaultValue.paddingTop\n const defaultPaddingRight =\n defaultValue.paddingRight === undefined ? 0 : defaultValue.paddingRight\n const defaultPaddingBottom =\n defaultValue.paddingBottom === undefined ? 0 : defaultValue.paddingBottom\n const defaultPaddingLeft = defaultValue.paddingLeft === undefined ? 0 : defaultValue.paddingLeft\n\n return props => css`\n ${cssMediaRules(\n [props.padding] as const,\n ([\n {\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = {} as ExtractResponsiveValue<PaddingValue>,\n ]) => css`\n padding-top: ${getPaddingSide(paddingTop || defaultPaddingTop)};\n padding-right: ${getPaddingSide(paddingRight || defaultPaddingRight)};\n padding-bottom: ${getPaddingSide(paddingBottom || defaultPaddingBottom)};\n padding-left: ${getPaddingSide(paddingLeft || defaultPaddingLeft)};\n `,\n )}\n `\n}\n\nconst defaultBorderSide = { width: 0, style: 'solid', color: null }\n\nconst getBorderSide = ({ width, style, color }: BorderSide) =>\n `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : 'black'}`\n\nexport function cssBorder(\n defaultValue: {\n borderTop?: BorderSide\n borderRight?: BorderSide\n borderBottom?: BorderSide\n borderLeft?: BorderSide\n } = {},\n): (props: { border?: BorderPropControllerData | null | undefined }) => CSSRules {\n const defaultBorderTop =\n defaultValue.borderTop === undefined ? defaultBorderSide : defaultValue.borderTop\n const defaultBorderRight =\n defaultValue.borderRight === undefined ? defaultBorderSide : defaultValue.borderRight\n const defaultBorderBottom =\n defaultValue.borderBottom === undefined ? defaultBorderSide : defaultValue.borderBottom\n const defaultBorderLeft =\n defaultValue.borderLeft === undefined ? defaultBorderSide : defaultValue.borderLeft\n\n return props => css`\n ${cssMediaRules(\n [props.border] as const,\n ([\n {\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n } = {} as ExtractResponsiveValue<BorderPropControllerData>,\n ]) => css`\n border-top: ${getBorderSide(borderTop || defaultBorderTop)};\n border-right: ${getBorderSide(borderRight || defaultBorderRight)};\n border-bottom: ${getBorderSide(borderBottom || defaultBorderBottom)};\n border-left: ${getBorderSide(borderLeft || defaultBorderLeft)};\n `,\n )}\n `\n}\n\nfunction getBorderRadiusCorner(\n borderRadiusCorner: LengthValue | BorderRadiusProperty<string | number>,\n) {\n return typeof borderRadiusCorner === 'object'\n ? `${borderRadiusCorner.value}${borderRadiusCorner.unit}`\n : borderRadiusCorner\n}\n\nexport function cssBorderRadius(\n defaultValue: {\n borderTopLeftRadius?: LengthValue | BorderTopLeftRadiusProperty<string | number>\n borderTopRightRadius?: LengthValue | BorderTopRightRadiusProperty<string | number>\n borderBottomLeftRadius?: LengthValue | BorderBottomLeftRadiusProperty<string | number>\n borderBottomRightRadius?: LengthValue | BorderBottomRightRadiusProperty<string | number>\n } = {},\n): (props: { borderRadius?: BorderRadiusValue }) => CSSRules {\n const defaultBorderTopLeftRadius =\n defaultValue.borderTopLeftRadius === undefined ? 0 : defaultValue.borderTopLeftRadius\n const defaultBorderTopRightRadius =\n defaultValue.borderTopRightRadius === undefined ? 0 : defaultValue.borderTopRightRadius\n const defaultPaddingBottom =\n defaultValue.borderBottomLeftRadius === undefined ? 0 : defaultValue.borderBottomLeftRadius\n const defaultPaddingLeft =\n defaultValue.borderBottomRightRadius === undefined ? 0 : defaultValue.borderBottomRightRadius\n\n return props => css`\n ${cssMediaRules(\n [props.borderRadius] as const,\n ([\n {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n } = {} as ExtractResponsiveValue<BorderRadiusValue>,\n ]) => css`\n border-top-left-radius: ${getBorderRadiusCorner(\n borderTopLeftRadius || defaultBorderTopLeftRadius,\n )};\n border-top-right-radius: ${getBorderRadiusCorner(\n borderTopRightRadius || defaultBorderTopRightRadius,\n )};\n border-bottom-left-radius: ${getBorderRadiusCorner(\n borderBottomLeftRadius || defaultPaddingBottom,\n )};\n border-bottom-right-radius: ${getBorderRadiusCorner(\n borderBottomRightRadius || defaultPaddingLeft,\n )};\n `,\n )}\n `\n}\n\nconst getBoxShadow = (shadows: BoxShadowData) =>\n shadows\n .map(\n ({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) =>\n `${inset ? 'inset ' : ''}${offsetX.toFixed(1)}px ${offsetY.toFixed(\n 1,\n )}px ${blurRadius}px ${spreadRadius}px ${\n color != null ? colorToString(color) : 'rgba(0,0,0,0.2)'\n }`,\n )\n .filter(Boolean)\n .join()\n\nexport function cssBoxShadow(\n defaultValue: BoxShadowData = [],\n): (props: { boxShadow?: BoxShadowPropControllerData | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules(\n [props.boxShadow] as const,\n ([boxShadow = defaultValue]) => css`\n box-shadow: ${getBoxShadow(boxShadow)};\n `,\n )}\n `\n}\n\nconst floor =\n (d: number) =>\n (v: number): number =>\n Math.floor(10 ** d * v) / 10 ** d\n\nexport function cssGridItem(): (props: {\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n}) => CSSRules {\n return props => css`\n display: flex;\n\n /* TODO: A default span of 12 won't work once the column count is modifiable. */\n ${cssMediaRules(\n [props.grid, props.columnGap, props.rowGap] as const,\n ([\n { spans, count } = { spans: [[12]], count: 12 },\n columnGap = { value: 0, unit: 'px' },\n rowGap = { value: 0, unit: 'px' },\n ]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, props.index)\n const firstCol = columnIndex === 0\n const lastCol = columnIndex === spans[rowIndex].length - 1\n const span = spans[rowIndex][columnIndex]\n const fraction = floor(5)(span / count)\n const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`\n const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${\n columnGap.unit\n } / 2`\n const iePrecisionError = '0.01px'\n const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`\n const firstRow = rowIndex === 0\n const lastRow = rowIndex === spans.length - 1\n\n return span === 0\n ? { display: 'none' }\n : {\n flexBasis,\n minWidth: flexBasis,\n // NOTE: IE11 width breaks without max width\n // https://github.com/philipwalton/flexbugs/issues/3\n maxWidth: flexBasis,\n paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n }\n },\n )}\n `\n}\n\nexport function cssTextStyle(\n defaultValue: {\n fontFamily?: string | null | undefined\n letterSpacing: number | null | undefined\n fontSize: LengthValue | null | undefined\n fontWeight: number | null | undefined\n textTransform: Array<'uppercase'>\n fontStyle: Array<'italic'>\n } = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n): (arg0: { textStyle?: TextStyleValue | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules([props.textStyle], ([textStyle = defaultValue]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return css`\n ${fontFamily != null\n ? css`\n font-family: '${fontFamily}';\n `\n : ''};\n ${fontWeight != null\n ? css`\n font-weight: ${fontWeight};\n `\n : ''};\n ${letterSpacing != null\n ? css`\n letter-spacing: ${letterSpacing}px;\n `\n : ''};\n ${fontSize != null\n ? css`\n font-size: ${`${fontSize.value}${fontSize.unit}`};\n `\n : ''};\n ${textTransform.includes('uppercase')\n ? css`\n text-transform: uppercase;\n `\n : ''};\n ${fontStyle.includes('italic')\n ? css`\n font-style: italic;\n `\n : ''};\n `\n })}\n `\n}\n"],"names":["joinResponsiveValues","getDevice","getDeviceMediaQuery","css","colorToString"],"mappings":"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"}
1
+ {"version":3,"file":"cssMediaRules.cjs.js","sources":["../src/components/utils/cssMediaRules.ts"],"sourcesContent":["import { css, CSSObject } from 'styled-components'\nimport {\n WidthProperty,\n MarginProperty,\n MarginTopProperty,\n MarginRightProperty,\n MarginBottomProperty,\n MarginLeftProperty,\n PaddingProperty,\n PaddingTopProperty,\n PaddingRightProperty,\n PaddingBottomProperty,\n PaddingLeftProperty,\n BorderRadiusProperty,\n BorderTopLeftRadiusProperty,\n BorderTopRightRadiusProperty,\n BorderBottomLeftRadiusProperty,\n BorderBottomRightRadiusProperty,\n} from 'csstype'\n\nimport {\n ResponsiveValue,\n ResponsiveValueType as ExtractResponsiveValue,\n Length as LengthValue,\n} from '../../prop-controllers'\nimport {\n FallbackStrategy,\n getDevice,\n getDeviceMediaQuery,\n join as joinResponsiveValues,\n} from './devices'\nimport { getIndexes } from './columns'\nimport {\n BorderRadiusValue,\n MarginValue,\n PaddingValue,\n TextStyleValue,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport { colorToString } from './colorToString'\nimport {\n BorderSide,\n BorderPropControllerData,\n BoxShadowData,\n BoxShadowPropControllerData,\n} from '../hooks'\n\ntype CSSRules = ReturnType<typeof css>\n\nexport function cssMediaRules<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>, P>(\n responsiveValues: A | ((props: P) => A),\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) =>\n | CSSRules\n | CSSObject,\n strategy?: FallbackStrategy<V>,\n): (props: P) => CSSRules {\n return props =>\n joinResponsiveValues(\n typeof responsiveValues === 'function' ? responsiveValues(props) : responsiveValues,\n join,\n strategy,\n ).reduce((acc, { deviceId, value }) => {\n const device = getDevice(deviceId)\n const mediaQuery = getDeviceMediaQuery(device)\n\n return css`\n ${acc}${mediaQuery} {\n ${value}\n }\n `\n }, css`` as CSSRules)\n}\n\nexport function cssWidth(\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): (props: { width?: WidthValue }) => CSSRules {\n return props => css`\n max-width: 100%;\n ${cssMediaRules(\n [props.width] as const,\n ([width = defaultValue]) => css`\n width: ${typeof width === 'object' ? `${width.value}${width.unit}` : width};\n `,\n )}\n `\n}\n\nfunction getMarginSide(marginSide: LengthValue | MarginProperty<string | number>) {\n return typeof marginSide === 'object' ? `${marginSide.value}${marginSide.unit}` : marginSide\n}\n\nexport function cssMargin(\n defaultValue: {\n marginTop?: LengthValue | MarginTopProperty<string | number>\n marginRight?: LengthValue | MarginRightProperty<string | number>\n marginBottom?: LengthValue | MarginBottomProperty<string | number>\n marginLeft?: LengthValue | MarginLeftProperty<string | number>\n } = {},\n): (props: { margin?: MarginValue }) => CSSRules {\n const defaultMarginTop = defaultValue.marginTop === undefined ? 0 : defaultValue.marginTop\n const defaultMarginRight =\n defaultValue.marginRight === undefined ? 'auto' : defaultValue.marginRight\n const defaultMarginBottom =\n defaultValue.marginBottom === undefined ? 0 : defaultValue.marginBottom\n const defaultMarginLeft = defaultValue.marginLeft === undefined ? 'auto' : defaultValue.marginLeft\n\n return props => css`\n ${cssMediaRules(\n [props.margin] as const,\n ([\n {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n } = {} as ExtractResponsiveValue<MarginValue>,\n ]) => css`\n margin-top: ${getMarginSide(marginTop || defaultMarginTop)};\n margin-right: ${getMarginSide(marginRight || defaultMarginRight)};\n margin-bottom: ${getMarginSide(marginBottom || defaultMarginBottom)};\n margin-left: ${getMarginSide(marginLeft || defaultMarginLeft)};\n `,\n )}\n `\n}\n\nfunction getPaddingSide(paddingSide: LengthValue | PaddingProperty<string | number>) {\n return typeof paddingSide === 'object' ? `${paddingSide.value}${paddingSide.unit}` : paddingSide\n}\n\nexport function cssPadding(\n defaultValue: {\n paddingTop?: LengthValue | PaddingTopProperty<string | number>\n paddingRight?: LengthValue | PaddingRightProperty<string | number>\n paddingBottom?: LengthValue | PaddingBottomProperty<string | number>\n paddingLeft?: LengthValue | PaddingLeftProperty<string | number>\n } = {},\n): (props: { padding?: PaddingValue }) => CSSRules {\n const defaultPaddingTop = defaultValue.paddingTop === undefined ? 0 : defaultValue.paddingTop\n const defaultPaddingRight =\n defaultValue.paddingRight === undefined ? 0 : defaultValue.paddingRight\n const defaultPaddingBottom =\n defaultValue.paddingBottom === undefined ? 0 : defaultValue.paddingBottom\n const defaultPaddingLeft = defaultValue.paddingLeft === undefined ? 0 : defaultValue.paddingLeft\n\n return props => css`\n ${cssMediaRules(\n [props.padding] as const,\n ([\n {\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = {} as ExtractResponsiveValue<PaddingValue>,\n ]) => css`\n padding-top: ${getPaddingSide(paddingTop || defaultPaddingTop)};\n padding-right: ${getPaddingSide(paddingRight || defaultPaddingRight)};\n padding-bottom: ${getPaddingSide(paddingBottom || defaultPaddingBottom)};\n padding-left: ${getPaddingSide(paddingLeft || defaultPaddingLeft)};\n `,\n )}\n `\n}\n\nconst defaultBorderSide = { width: 0, style: 'solid', color: null }\n\nconst getBorderSide = ({ width, style, color }: BorderSide) =>\n `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : 'black'}`\n\nexport function cssBorder(\n defaultValue: {\n borderTop?: BorderSide\n borderRight?: BorderSide\n borderBottom?: BorderSide\n borderLeft?: BorderSide\n } = {},\n): (props: { border?: BorderPropControllerData | null | undefined }) => CSSRules {\n const defaultBorderTop =\n defaultValue.borderTop === undefined ? defaultBorderSide : defaultValue.borderTop\n const defaultBorderRight =\n defaultValue.borderRight === undefined ? defaultBorderSide : defaultValue.borderRight\n const defaultBorderBottom =\n defaultValue.borderBottom === undefined ? defaultBorderSide : defaultValue.borderBottom\n const defaultBorderLeft =\n defaultValue.borderLeft === undefined ? defaultBorderSide : defaultValue.borderLeft\n\n return props => css`\n ${cssMediaRules(\n [props.border] as const,\n ([\n {\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n } = {} as ExtractResponsiveValue<BorderPropControllerData>,\n ]) => css`\n border-top: ${getBorderSide(borderTop || defaultBorderTop)};\n border-right: ${getBorderSide(borderRight || defaultBorderRight)};\n border-bottom: ${getBorderSide(borderBottom || defaultBorderBottom)};\n border-left: ${getBorderSide(borderLeft || defaultBorderLeft)};\n `,\n )}\n `\n}\n\nfunction getBorderRadiusCorner(\n borderRadiusCorner: LengthValue | BorderRadiusProperty<string | number>,\n) {\n return typeof borderRadiusCorner === 'object'\n ? `${borderRadiusCorner.value}${borderRadiusCorner.unit}`\n : borderRadiusCorner\n}\n\nexport function cssBorderRadius(\n defaultValue: {\n borderTopLeftRadius?: LengthValue | BorderTopLeftRadiusProperty<string | number>\n borderTopRightRadius?: LengthValue | BorderTopRightRadiusProperty<string | number>\n borderBottomLeftRadius?: LengthValue | BorderBottomLeftRadiusProperty<string | number>\n borderBottomRightRadius?: LengthValue | BorderBottomRightRadiusProperty<string | number>\n } = {},\n): (props: { borderRadius?: BorderRadiusValue }) => CSSRules {\n const defaultBorderTopLeftRadius =\n defaultValue.borderTopLeftRadius === undefined ? 0 : defaultValue.borderTopLeftRadius\n const defaultBorderTopRightRadius =\n defaultValue.borderTopRightRadius === undefined ? 0 : defaultValue.borderTopRightRadius\n const defaultPaddingBottom =\n defaultValue.borderBottomLeftRadius === undefined ? 0 : defaultValue.borderBottomLeftRadius\n const defaultPaddingLeft =\n defaultValue.borderBottomRightRadius === undefined ? 0 : defaultValue.borderBottomRightRadius\n\n return props => css`\n ${cssMediaRules(\n [props.borderRadius] as const,\n ([\n {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n } = {} as ExtractResponsiveValue<BorderRadiusValue>,\n ]) => css`\n border-top-left-radius: ${getBorderRadiusCorner(\n borderTopLeftRadius || defaultBorderTopLeftRadius,\n )};\n border-top-right-radius: ${getBorderRadiusCorner(\n borderTopRightRadius || defaultBorderTopRightRadius,\n )};\n border-bottom-left-radius: ${getBorderRadiusCorner(\n borderBottomLeftRadius || defaultPaddingBottom,\n )};\n border-bottom-right-radius: ${getBorderRadiusCorner(\n borderBottomRightRadius || defaultPaddingLeft,\n )};\n `,\n )}\n `\n}\n\nconst getBoxShadow = (shadows: BoxShadowData) =>\n shadows\n .map(\n ({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) =>\n `${inset ? 'inset ' : ''}${offsetX.toFixed(1)}px ${offsetY.toFixed(\n 1,\n )}px ${blurRadius}px ${spreadRadius}px ${\n color != null ? colorToString(color) : 'rgba(0,0,0,0.2)'\n }`,\n )\n .filter(Boolean)\n .join()\n\nexport function cssBoxShadow(\n defaultValue: BoxShadowData = [],\n): (props: { boxShadow?: BoxShadowPropControllerData | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules(\n [props.boxShadow] as const,\n ([boxShadow = defaultValue]) => css`\n box-shadow: ${getBoxShadow(boxShadow)};\n `,\n )}\n `\n}\n\nconst floor =\n (d: number) =>\n (v: number): number =>\n Math.floor(10 ** d * v) / 10 ** d\n\nexport function cssGridItem(): (props: {\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n}) => CSSRules {\n return props => css`\n display: flex;\n\n /* TODO: A default span of 12 won't work once the column count is modifiable. */\n ${cssMediaRules(\n [props.grid, props.columnGap, props.rowGap] as const,\n ([\n { spans, count } = { spans: [[12]], count: 12 },\n columnGap = { value: 0, unit: 'px' },\n rowGap = { value: 0, unit: 'px' },\n ]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, props.index)\n const firstCol = columnIndex === 0\n const lastCol = columnIndex === spans[rowIndex].length - 1\n const span = spans[rowIndex][columnIndex]\n const fraction = floor(5)(span / count)\n const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`\n const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${\n columnGap.unit\n } / 2`\n const iePrecisionError = '0.01px'\n const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`\n const firstRow = rowIndex === 0\n const lastRow = rowIndex === spans.length - 1\n\n return span === 0\n ? { display: 'none' }\n : {\n flexBasis,\n minWidth: flexBasis,\n // NOTE: IE11 width breaks without max width\n // https://github.com/philipwalton/flexbugs/issues/3\n maxWidth: flexBasis,\n paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n }\n },\n )}\n `\n}\n\nexport function cssTextStyle(\n defaultValue: {\n fontFamily?: string | null | undefined\n letterSpacing: number | null | undefined\n fontSize: LengthValue | null | undefined\n fontWeight: number | null | undefined\n textTransform: Array<'uppercase'>\n fontStyle: Array<'italic'>\n } = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n): (arg0: { textStyle?: TextStyleValue | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules([props.textStyle], ([textStyle = defaultValue]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return css`\n ${fontFamily != null\n ? css`\n font-family: '${fontFamily}';\n `\n : ''};\n ${fontWeight != null\n ? css`\n font-weight: ${fontWeight};\n `\n : ''};\n ${letterSpacing != null\n ? css`\n letter-spacing: ${letterSpacing}px;\n `\n : ''};\n ${fontSize != null\n ? css`\n font-size: ${`${fontSize.value}${fontSize.unit}`};\n `\n : ''};\n ${textTransform.includes('uppercase')\n ? css`\n text-transform: uppercase;\n `\n : ''};\n ${fontStyle.includes('italic')\n ? css`\n font-style: italic;\n `\n : ''};\n `\n })}\n `\n}\n"],"names":["joinResponsiveValues","getDevice","getDeviceMediaQuery","css","colorToString","getIndexes"],"mappings":"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"}
@@ -1,17 +1,5 @@
1
1
  import { css } from "styled-components";
2
- import { H as join, I as getDevice, J as getDeviceMediaQuery, p as colorToString } from "./index.es.js";
3
- const getIndexes = (spans, index) => {
4
- const flattened = spans.reduce((a, s) => a.concat(s), []);
5
- if (index < 0 || index > flattened.length)
6
- throw new RangeError();
7
- let remainder = index;
8
- let rowIndex = 0;
9
- while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {
10
- remainder -= spans[rowIndex].length;
11
- rowIndex += 1;
12
- }
13
- return [rowIndex, remainder];
14
- };
2
+ import { H as join, I as getDevice, J as getDeviceMediaQuery, p as colorToString, K as getIndexes } from "./index.es.js";
15
3
  function cssMediaRules(responsiveValues, join$1, strategy) {
16
4
  return (props) => join(typeof responsiveValues === "function" ? responsiveValues(props) : responsiveValues, join$1, strategy).reduce((acc, { deviceId, value }) => {
17
5
  const device = getDevice(deviceId);
@@ -1 +1 @@
1
- {"version":3,"file":"cssMediaRules.es.js","sources":["../src/components/utils/columns.ts","../src/components/utils/cssMediaRules.ts"],"sourcesContent":["export const getIndexes = (spans: Array<Array<number>>, index: number): [number, number] => {\n const flattened = spans.reduce((a, s) => a.concat(s), [])\n\n if (index < 0 || index > flattened.length) throw new RangeError()\n\n let remainder = index\n let rowIndex = 0\n\n while (rowIndex < spans.length - 1 && remainder >= spans[rowIndex].length) {\n remainder -= spans[rowIndex].length\n rowIndex += 1\n }\n\n return [rowIndex, remainder]\n}\n","import { css, CSSObject } from 'styled-components'\nimport {\n WidthProperty,\n MarginProperty,\n MarginTopProperty,\n MarginRightProperty,\n MarginBottomProperty,\n MarginLeftProperty,\n PaddingProperty,\n PaddingTopProperty,\n PaddingRightProperty,\n PaddingBottomProperty,\n PaddingLeftProperty,\n BorderRadiusProperty,\n BorderTopLeftRadiusProperty,\n BorderTopRightRadiusProperty,\n BorderBottomLeftRadiusProperty,\n BorderBottomRightRadiusProperty,\n} from 'csstype'\n\nimport {\n ResponsiveValue,\n ResponsiveValueType as ExtractResponsiveValue,\n Length as LengthValue,\n} from '../../prop-controllers'\nimport {\n FallbackStrategy,\n getDevice,\n getDeviceMediaQuery,\n join as joinResponsiveValues,\n} from './devices'\nimport { getIndexes } from './columns'\nimport {\n BorderRadiusValue,\n MarginValue,\n PaddingValue,\n TextStyleValue,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport { colorToString } from './colorToString'\nimport {\n BorderSide,\n BorderPropControllerData,\n BoxShadowData,\n BoxShadowPropControllerData,\n} from '../hooks'\n\ntype CSSRules = ReturnType<typeof css>\n\nexport function cssMediaRules<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>, P>(\n responsiveValues: A | ((props: P) => A),\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) =>\n | CSSRules\n | CSSObject,\n strategy?: FallbackStrategy<V>,\n): (props: P) => CSSRules {\n return props =>\n joinResponsiveValues(\n typeof responsiveValues === 'function' ? responsiveValues(props) : responsiveValues,\n join,\n strategy,\n ).reduce((acc, { deviceId, value }) => {\n const device = getDevice(deviceId)\n const mediaQuery = getDeviceMediaQuery(device)\n\n return css`\n ${acc}${mediaQuery} {\n ${value}\n }\n `\n }, css`` as CSSRules)\n}\n\nexport function cssWidth(\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): (props: { width?: WidthValue }) => CSSRules {\n return props => css`\n max-width: 100%;\n ${cssMediaRules(\n [props.width] as const,\n ([width = defaultValue]) => css`\n width: ${typeof width === 'object' ? `${width.value}${width.unit}` : width};\n `,\n )}\n `\n}\n\nfunction getMarginSide(marginSide: LengthValue | MarginProperty<string | number>) {\n return typeof marginSide === 'object' ? `${marginSide.value}${marginSide.unit}` : marginSide\n}\n\nexport function cssMargin(\n defaultValue: {\n marginTop?: LengthValue | MarginTopProperty<string | number>\n marginRight?: LengthValue | MarginRightProperty<string | number>\n marginBottom?: LengthValue | MarginBottomProperty<string | number>\n marginLeft?: LengthValue | MarginLeftProperty<string | number>\n } = {},\n): (props: { margin?: MarginValue }) => CSSRules {\n const defaultMarginTop = defaultValue.marginTop === undefined ? 0 : defaultValue.marginTop\n const defaultMarginRight =\n defaultValue.marginRight === undefined ? 'auto' : defaultValue.marginRight\n const defaultMarginBottom =\n defaultValue.marginBottom === undefined ? 0 : defaultValue.marginBottom\n const defaultMarginLeft = defaultValue.marginLeft === undefined ? 'auto' : defaultValue.marginLeft\n\n return props => css`\n ${cssMediaRules(\n [props.margin] as const,\n ([\n {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n } = {} as ExtractResponsiveValue<MarginValue>,\n ]) => css`\n margin-top: ${getMarginSide(marginTop || defaultMarginTop)};\n margin-right: ${getMarginSide(marginRight || defaultMarginRight)};\n margin-bottom: ${getMarginSide(marginBottom || defaultMarginBottom)};\n margin-left: ${getMarginSide(marginLeft || defaultMarginLeft)};\n `,\n )}\n `\n}\n\nfunction getPaddingSide(paddingSide: LengthValue | PaddingProperty<string | number>) {\n return typeof paddingSide === 'object' ? `${paddingSide.value}${paddingSide.unit}` : paddingSide\n}\n\nexport function cssPadding(\n defaultValue: {\n paddingTop?: LengthValue | PaddingTopProperty<string | number>\n paddingRight?: LengthValue | PaddingRightProperty<string | number>\n paddingBottom?: LengthValue | PaddingBottomProperty<string | number>\n paddingLeft?: LengthValue | PaddingLeftProperty<string | number>\n } = {},\n): (props: { padding?: PaddingValue }) => CSSRules {\n const defaultPaddingTop = defaultValue.paddingTop === undefined ? 0 : defaultValue.paddingTop\n const defaultPaddingRight =\n defaultValue.paddingRight === undefined ? 0 : defaultValue.paddingRight\n const defaultPaddingBottom =\n defaultValue.paddingBottom === undefined ? 0 : defaultValue.paddingBottom\n const defaultPaddingLeft = defaultValue.paddingLeft === undefined ? 0 : defaultValue.paddingLeft\n\n return props => css`\n ${cssMediaRules(\n [props.padding] as const,\n ([\n {\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = {} as ExtractResponsiveValue<PaddingValue>,\n ]) => css`\n padding-top: ${getPaddingSide(paddingTop || defaultPaddingTop)};\n padding-right: ${getPaddingSide(paddingRight || defaultPaddingRight)};\n padding-bottom: ${getPaddingSide(paddingBottom || defaultPaddingBottom)};\n padding-left: ${getPaddingSide(paddingLeft || defaultPaddingLeft)};\n `,\n )}\n `\n}\n\nconst defaultBorderSide = { width: 0, style: 'solid', color: null }\n\nconst getBorderSide = ({ width, style, color }: BorderSide) =>\n `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : 'black'}`\n\nexport function cssBorder(\n defaultValue: {\n borderTop?: BorderSide\n borderRight?: BorderSide\n borderBottom?: BorderSide\n borderLeft?: BorderSide\n } = {},\n): (props: { border?: BorderPropControllerData | null | undefined }) => CSSRules {\n const defaultBorderTop =\n defaultValue.borderTop === undefined ? defaultBorderSide : defaultValue.borderTop\n const defaultBorderRight =\n defaultValue.borderRight === undefined ? defaultBorderSide : defaultValue.borderRight\n const defaultBorderBottom =\n defaultValue.borderBottom === undefined ? defaultBorderSide : defaultValue.borderBottom\n const defaultBorderLeft =\n defaultValue.borderLeft === undefined ? defaultBorderSide : defaultValue.borderLeft\n\n return props => css`\n ${cssMediaRules(\n [props.border] as const,\n ([\n {\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n } = {} as ExtractResponsiveValue<BorderPropControllerData>,\n ]) => css`\n border-top: ${getBorderSide(borderTop || defaultBorderTop)};\n border-right: ${getBorderSide(borderRight || defaultBorderRight)};\n border-bottom: ${getBorderSide(borderBottom || defaultBorderBottom)};\n border-left: ${getBorderSide(borderLeft || defaultBorderLeft)};\n `,\n )}\n `\n}\n\nfunction getBorderRadiusCorner(\n borderRadiusCorner: LengthValue | BorderRadiusProperty<string | number>,\n) {\n return typeof borderRadiusCorner === 'object'\n ? `${borderRadiusCorner.value}${borderRadiusCorner.unit}`\n : borderRadiusCorner\n}\n\nexport function cssBorderRadius(\n defaultValue: {\n borderTopLeftRadius?: LengthValue | BorderTopLeftRadiusProperty<string | number>\n borderTopRightRadius?: LengthValue | BorderTopRightRadiusProperty<string | number>\n borderBottomLeftRadius?: LengthValue | BorderBottomLeftRadiusProperty<string | number>\n borderBottomRightRadius?: LengthValue | BorderBottomRightRadiusProperty<string | number>\n } = {},\n): (props: { borderRadius?: BorderRadiusValue }) => CSSRules {\n const defaultBorderTopLeftRadius =\n defaultValue.borderTopLeftRadius === undefined ? 0 : defaultValue.borderTopLeftRadius\n const defaultBorderTopRightRadius =\n defaultValue.borderTopRightRadius === undefined ? 0 : defaultValue.borderTopRightRadius\n const defaultPaddingBottom =\n defaultValue.borderBottomLeftRadius === undefined ? 0 : defaultValue.borderBottomLeftRadius\n const defaultPaddingLeft =\n defaultValue.borderBottomRightRadius === undefined ? 0 : defaultValue.borderBottomRightRadius\n\n return props => css`\n ${cssMediaRules(\n [props.borderRadius] as const,\n ([\n {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n } = {} as ExtractResponsiveValue<BorderRadiusValue>,\n ]) => css`\n border-top-left-radius: ${getBorderRadiusCorner(\n borderTopLeftRadius || defaultBorderTopLeftRadius,\n )};\n border-top-right-radius: ${getBorderRadiusCorner(\n borderTopRightRadius || defaultBorderTopRightRadius,\n )};\n border-bottom-left-radius: ${getBorderRadiusCorner(\n borderBottomLeftRadius || defaultPaddingBottom,\n )};\n border-bottom-right-radius: ${getBorderRadiusCorner(\n borderBottomRightRadius || defaultPaddingLeft,\n )};\n `,\n )}\n `\n}\n\nconst getBoxShadow = (shadows: BoxShadowData) =>\n shadows\n .map(\n ({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) =>\n `${inset ? 'inset ' : ''}${offsetX.toFixed(1)}px ${offsetY.toFixed(\n 1,\n )}px ${blurRadius}px ${spreadRadius}px ${\n color != null ? colorToString(color) : 'rgba(0,0,0,0.2)'\n }`,\n )\n .filter(Boolean)\n .join()\n\nexport function cssBoxShadow(\n defaultValue: BoxShadowData = [],\n): (props: { boxShadow?: BoxShadowPropControllerData | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules(\n [props.boxShadow] as const,\n ([boxShadow = defaultValue]) => css`\n box-shadow: ${getBoxShadow(boxShadow)};\n `,\n )}\n `\n}\n\nconst floor =\n (d: number) =>\n (v: number): number =>\n Math.floor(10 ** d * v) / 10 ** d\n\nexport function cssGridItem(): (props: {\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n}) => CSSRules {\n return props => css`\n display: flex;\n\n /* TODO: A default span of 12 won't work once the column count is modifiable. */\n ${cssMediaRules(\n [props.grid, props.columnGap, props.rowGap] as const,\n ([\n { spans, count } = { spans: [[12]], count: 12 },\n columnGap = { value: 0, unit: 'px' },\n rowGap = { value: 0, unit: 'px' },\n ]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, props.index)\n const firstCol = columnIndex === 0\n const lastCol = columnIndex === spans[rowIndex].length - 1\n const span = spans[rowIndex][columnIndex]\n const fraction = floor(5)(span / count)\n const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`\n const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${\n columnGap.unit\n } / 2`\n const iePrecisionError = '0.01px'\n const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`\n const firstRow = rowIndex === 0\n const lastRow = rowIndex === spans.length - 1\n\n return span === 0\n ? { display: 'none' }\n : {\n flexBasis,\n minWidth: flexBasis,\n // NOTE: IE11 width breaks without max width\n // https://github.com/philipwalton/flexbugs/issues/3\n maxWidth: flexBasis,\n paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n }\n },\n )}\n `\n}\n\nexport function cssTextStyle(\n defaultValue: {\n fontFamily?: string | null | undefined\n letterSpacing: number | null | undefined\n fontSize: LengthValue | null | undefined\n fontWeight: number | null | undefined\n textTransform: Array<'uppercase'>\n fontStyle: Array<'italic'>\n } = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n): (arg0: { textStyle?: TextStyleValue | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules([props.textStyle], ([textStyle = defaultValue]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return css`\n ${fontFamily != null\n ? css`\n font-family: '${fontFamily}';\n `\n : ''};\n ${fontWeight != null\n ? css`\n font-weight: ${fontWeight};\n `\n : ''};\n ${letterSpacing != null\n ? css`\n letter-spacing: ${letterSpacing}px;\n `\n : ''};\n ${fontSize != null\n ? css`\n font-size: ${`${fontSize.value}${fontSize.unit}`};\n `\n : ''};\n ${textTransform.includes('uppercase')\n ? css`\n text-transform: uppercase;\n `\n : ''};\n ${fontStyle.includes('italic')\n ? css`\n font-style: italic;\n `\n : ''};\n `\n })}\n `\n}\n"],"names":["join","joinResponsiveValues"],"mappings":"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"}
1
+ {"version":3,"file":"cssMediaRules.es.js","sources":["../src/components/utils/cssMediaRules.ts"],"sourcesContent":["import { css, CSSObject } from 'styled-components'\nimport {\n WidthProperty,\n MarginProperty,\n MarginTopProperty,\n MarginRightProperty,\n MarginBottomProperty,\n MarginLeftProperty,\n PaddingProperty,\n PaddingTopProperty,\n PaddingRightProperty,\n PaddingBottomProperty,\n PaddingLeftProperty,\n BorderRadiusProperty,\n BorderTopLeftRadiusProperty,\n BorderTopRightRadiusProperty,\n BorderBottomLeftRadiusProperty,\n BorderBottomRightRadiusProperty,\n} from 'csstype'\n\nimport {\n ResponsiveValue,\n ResponsiveValueType as ExtractResponsiveValue,\n Length as LengthValue,\n} from '../../prop-controllers'\nimport {\n FallbackStrategy,\n getDevice,\n getDeviceMediaQuery,\n join as joinResponsiveValues,\n} from './devices'\nimport { getIndexes } from './columns'\nimport {\n BorderRadiusValue,\n MarginValue,\n PaddingValue,\n TextStyleValue,\n WidthValue,\n} from '../../prop-controllers/descriptors'\nimport { colorToString } from './colorToString'\nimport {\n BorderSide,\n BorderPropControllerData,\n BoxShadowData,\n BoxShadowPropControllerData,\n} from '../hooks'\n\ntype CSSRules = ReturnType<typeof css>\n\nexport function cssMediaRules<V, A extends ReadonlyArray<ResponsiveValue<V> | null | undefined>, P>(\n responsiveValues: A | ((props: P) => A),\n join: (values: { [K in keyof A]: ExtractResponsiveValue<A[K]> | undefined }) =>\n | CSSRules\n | CSSObject,\n strategy?: FallbackStrategy<V>,\n): (props: P) => CSSRules {\n return props =>\n joinResponsiveValues(\n typeof responsiveValues === 'function' ? responsiveValues(props) : responsiveValues,\n join,\n strategy,\n ).reduce((acc, { deviceId, value }) => {\n const device = getDevice(deviceId)\n const mediaQuery = getDeviceMediaQuery(device)\n\n return css`\n ${acc}${mediaQuery} {\n ${value}\n }\n `\n }, css`` as CSSRules)\n}\n\nexport function cssWidth(\n defaultValue: LengthValue | WidthProperty<string | number> = '100%',\n): (props: { width?: WidthValue }) => CSSRules {\n return props => css`\n max-width: 100%;\n ${cssMediaRules(\n [props.width] as const,\n ([width = defaultValue]) => css`\n width: ${typeof width === 'object' ? `${width.value}${width.unit}` : width};\n `,\n )}\n `\n}\n\nfunction getMarginSide(marginSide: LengthValue | MarginProperty<string | number>) {\n return typeof marginSide === 'object' ? `${marginSide.value}${marginSide.unit}` : marginSide\n}\n\nexport function cssMargin(\n defaultValue: {\n marginTop?: LengthValue | MarginTopProperty<string | number>\n marginRight?: LengthValue | MarginRightProperty<string | number>\n marginBottom?: LengthValue | MarginBottomProperty<string | number>\n marginLeft?: LengthValue | MarginLeftProperty<string | number>\n } = {},\n): (props: { margin?: MarginValue }) => CSSRules {\n const defaultMarginTop = defaultValue.marginTop === undefined ? 0 : defaultValue.marginTop\n const defaultMarginRight =\n defaultValue.marginRight === undefined ? 'auto' : defaultValue.marginRight\n const defaultMarginBottom =\n defaultValue.marginBottom === undefined ? 0 : defaultValue.marginBottom\n const defaultMarginLeft = defaultValue.marginLeft === undefined ? 'auto' : defaultValue.marginLeft\n\n return props => css`\n ${cssMediaRules(\n [props.margin] as const,\n ([\n {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n } = {} as ExtractResponsiveValue<MarginValue>,\n ]) => css`\n margin-top: ${getMarginSide(marginTop || defaultMarginTop)};\n margin-right: ${getMarginSide(marginRight || defaultMarginRight)};\n margin-bottom: ${getMarginSide(marginBottom || defaultMarginBottom)};\n margin-left: ${getMarginSide(marginLeft || defaultMarginLeft)};\n `,\n )}\n `\n}\n\nfunction getPaddingSide(paddingSide: LengthValue | PaddingProperty<string | number>) {\n return typeof paddingSide === 'object' ? `${paddingSide.value}${paddingSide.unit}` : paddingSide\n}\n\nexport function cssPadding(\n defaultValue: {\n paddingTop?: LengthValue | PaddingTopProperty<string | number>\n paddingRight?: LengthValue | PaddingRightProperty<string | number>\n paddingBottom?: LengthValue | PaddingBottomProperty<string | number>\n paddingLeft?: LengthValue | PaddingLeftProperty<string | number>\n } = {},\n): (props: { padding?: PaddingValue }) => CSSRules {\n const defaultPaddingTop = defaultValue.paddingTop === undefined ? 0 : defaultValue.paddingTop\n const defaultPaddingRight =\n defaultValue.paddingRight === undefined ? 0 : defaultValue.paddingRight\n const defaultPaddingBottom =\n defaultValue.paddingBottom === undefined ? 0 : defaultValue.paddingBottom\n const defaultPaddingLeft = defaultValue.paddingLeft === undefined ? 0 : defaultValue.paddingLeft\n\n return props => css`\n ${cssMediaRules(\n [props.padding] as const,\n ([\n {\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n } = {} as ExtractResponsiveValue<PaddingValue>,\n ]) => css`\n padding-top: ${getPaddingSide(paddingTop || defaultPaddingTop)};\n padding-right: ${getPaddingSide(paddingRight || defaultPaddingRight)};\n padding-bottom: ${getPaddingSide(paddingBottom || defaultPaddingBottom)};\n padding-left: ${getPaddingSide(paddingLeft || defaultPaddingLeft)};\n `,\n )}\n `\n}\n\nconst defaultBorderSide = { width: 0, style: 'solid', color: null }\n\nconst getBorderSide = ({ width, style, color }: BorderSide) =>\n `${width != null ? width : 0}px ${style} ${color != null ? colorToString(color) : 'black'}`\n\nexport function cssBorder(\n defaultValue: {\n borderTop?: BorderSide\n borderRight?: BorderSide\n borderBottom?: BorderSide\n borderLeft?: BorderSide\n } = {},\n): (props: { border?: BorderPropControllerData | null | undefined }) => CSSRules {\n const defaultBorderTop =\n defaultValue.borderTop === undefined ? defaultBorderSide : defaultValue.borderTop\n const defaultBorderRight =\n defaultValue.borderRight === undefined ? defaultBorderSide : defaultValue.borderRight\n const defaultBorderBottom =\n defaultValue.borderBottom === undefined ? defaultBorderSide : defaultValue.borderBottom\n const defaultBorderLeft =\n defaultValue.borderLeft === undefined ? defaultBorderSide : defaultValue.borderLeft\n\n return props => css`\n ${cssMediaRules(\n [props.border] as const,\n ([\n {\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n } = {} as ExtractResponsiveValue<BorderPropControllerData>,\n ]) => css`\n border-top: ${getBorderSide(borderTop || defaultBorderTop)};\n border-right: ${getBorderSide(borderRight || defaultBorderRight)};\n border-bottom: ${getBorderSide(borderBottom || defaultBorderBottom)};\n border-left: ${getBorderSide(borderLeft || defaultBorderLeft)};\n `,\n )}\n `\n}\n\nfunction getBorderRadiusCorner(\n borderRadiusCorner: LengthValue | BorderRadiusProperty<string | number>,\n) {\n return typeof borderRadiusCorner === 'object'\n ? `${borderRadiusCorner.value}${borderRadiusCorner.unit}`\n : borderRadiusCorner\n}\n\nexport function cssBorderRadius(\n defaultValue: {\n borderTopLeftRadius?: LengthValue | BorderTopLeftRadiusProperty<string | number>\n borderTopRightRadius?: LengthValue | BorderTopRightRadiusProperty<string | number>\n borderBottomLeftRadius?: LengthValue | BorderBottomLeftRadiusProperty<string | number>\n borderBottomRightRadius?: LengthValue | BorderBottomRightRadiusProperty<string | number>\n } = {},\n): (props: { borderRadius?: BorderRadiusValue }) => CSSRules {\n const defaultBorderTopLeftRadius =\n defaultValue.borderTopLeftRadius === undefined ? 0 : defaultValue.borderTopLeftRadius\n const defaultBorderTopRightRadius =\n defaultValue.borderTopRightRadius === undefined ? 0 : defaultValue.borderTopRightRadius\n const defaultPaddingBottom =\n defaultValue.borderBottomLeftRadius === undefined ? 0 : defaultValue.borderBottomLeftRadius\n const defaultPaddingLeft =\n defaultValue.borderBottomRightRadius === undefined ? 0 : defaultValue.borderBottomRightRadius\n\n return props => css`\n ${cssMediaRules(\n [props.borderRadius] as const,\n ([\n {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n } = {} as ExtractResponsiveValue<BorderRadiusValue>,\n ]) => css`\n border-top-left-radius: ${getBorderRadiusCorner(\n borderTopLeftRadius || defaultBorderTopLeftRadius,\n )};\n border-top-right-radius: ${getBorderRadiusCorner(\n borderTopRightRadius || defaultBorderTopRightRadius,\n )};\n border-bottom-left-radius: ${getBorderRadiusCorner(\n borderBottomLeftRadius || defaultPaddingBottom,\n )};\n border-bottom-right-radius: ${getBorderRadiusCorner(\n borderBottomRightRadius || defaultPaddingLeft,\n )};\n `,\n )}\n `\n}\n\nconst getBoxShadow = (shadows: BoxShadowData) =>\n shadows\n .map(\n ({ payload: { inset, offsetX, offsetY, blurRadius, spreadRadius, color } }) =>\n `${inset ? 'inset ' : ''}${offsetX.toFixed(1)}px ${offsetY.toFixed(\n 1,\n )}px ${blurRadius}px ${spreadRadius}px ${\n color != null ? colorToString(color) : 'rgba(0,0,0,0.2)'\n }`,\n )\n .filter(Boolean)\n .join()\n\nexport function cssBoxShadow(\n defaultValue: BoxShadowData = [],\n): (props: { boxShadow?: BoxShadowPropControllerData | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules(\n [props.boxShadow] as const,\n ([boxShadow = defaultValue]) => css`\n box-shadow: ${getBoxShadow(boxShadow)};\n `,\n )}\n `\n}\n\nconst floor =\n (d: number) =>\n (v: number): number =>\n Math.floor(10 ** d * v) / 10 ** d\n\nexport function cssGridItem(): (props: {\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthValue>\n rowGap?: ResponsiveValue<LengthValue>\n}) => CSSRules {\n return props => css`\n display: flex;\n\n /* TODO: A default span of 12 won't work once the column count is modifiable. */\n ${cssMediaRules(\n [props.grid, props.columnGap, props.rowGap] as const,\n ([\n { spans, count } = { spans: [[12]], count: 12 },\n columnGap = { value: 0, unit: 'px' },\n rowGap = { value: 0, unit: 'px' },\n ]) => {\n const [rowIndex, columnIndex] = getIndexes(spans, props.index)\n const firstCol = columnIndex === 0\n const lastCol = columnIndex === spans[rowIndex].length - 1\n const span = spans[rowIndex][columnIndex]\n const fraction = floor(5)(span / count)\n const width = `${fraction} * (100% + ${columnGap.value}${columnGap.unit})`\n const excessWidth = `${Number(firstCol) + Number(lastCol)} * ${columnGap.value}${\n columnGap.unit\n } / 2`\n const iePrecisionError = '0.01px'\n const flexBasis = `calc(${width} - ${excessWidth} - ${iePrecisionError})`\n const firstRow = rowIndex === 0\n const lastRow = rowIndex === spans.length - 1\n\n return span === 0\n ? { display: 'none' }\n : {\n flexBasis,\n minWidth: flexBasis,\n // NOTE: IE11 width breaks without max width\n // https://github.com/philipwalton/flexbugs/issues/3\n maxWidth: flexBasis,\n paddingLeft: firstCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingRight: lastCol ? 0 : `${columnGap.value / 2}${columnGap.unit}`,\n paddingTop: firstRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n paddingBottom: lastRow ? 0 : `${rowGap.value / 2}${rowGap.unit}`,\n }\n },\n )}\n `\n}\n\nexport function cssTextStyle(\n defaultValue: {\n fontFamily?: string | null | undefined\n letterSpacing: number | null | undefined\n fontSize: LengthValue | null | undefined\n fontWeight: number | null | undefined\n textTransform: Array<'uppercase'>\n fontStyle: Array<'italic'>\n } = {\n fontFamily: null,\n letterSpacing: null,\n fontSize: null,\n fontWeight: null,\n textTransform: [],\n fontStyle: [],\n },\n): (arg0: { textStyle?: TextStyleValue | null | undefined }) => CSSRules {\n return props => css`\n ${cssMediaRules([props.textStyle], ([textStyle = defaultValue]) => {\n const {\n fontSize,\n fontWeight,\n fontStyle = [],\n textTransform = [],\n letterSpacing,\n fontFamily,\n } = textStyle\n\n return css`\n ${fontFamily != null\n ? css`\n font-family: '${fontFamily}';\n `\n : ''};\n ${fontWeight != null\n ? css`\n font-weight: ${fontWeight};\n `\n : ''};\n ${letterSpacing != null\n ? css`\n letter-spacing: ${letterSpacing}px;\n `\n : ''};\n ${fontSize != null\n ? css`\n font-size: ${`${fontSize.value}${fontSize.unit}`};\n `\n : ''};\n ${textTransform.includes('uppercase')\n ? css`\n text-transform: uppercase;\n `\n : ''};\n ${fontStyle.includes('italic')\n ? css`\n font-style: italic;\n `\n : ''};\n `\n })}\n `\n}\n"],"names":["join","joinResponsiveValues"],"mappings":"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"}
package/dist/image.cjs.js CHANGED
@@ -1,4 +1,233 @@
1
1
  "use strict";
2
+ const StyleControlType = "makeswift::controls::style";
3
+ const StyleControlProperty = {
4
+ Width: "makeswift::controls::style::property::width",
5
+ Margin: "makeswift::controls::style::property::margin",
6
+ Padding: "makeswift::controls::style::property::padding",
7
+ Border: "makeswift::controls::style::property::border",
8
+ BorderRadius: "makeswift::controls::style::property::border-radius",
9
+ TextStyle: "makeswift::controls::style::property::text-style"
10
+ };
11
+ const StyleControlDefaultProperties = [
12
+ StyleControlProperty.Width,
13
+ StyleControlProperty.Margin
14
+ ];
15
+ const AllStyleControlProperties = [
16
+ StyleControlProperty.Width,
17
+ StyleControlProperty.Margin,
18
+ StyleControlProperty.Padding,
19
+ StyleControlProperty.Border,
20
+ StyleControlProperty.BorderRadius,
21
+ StyleControlProperty.TextStyle
22
+ ];
23
+ function Style(params) {
24
+ var _a;
25
+ return {
26
+ type: StyleControlType,
27
+ config: { properties: (_a = params == null ? void 0 : params.properties) != null ? _a : StyleControlDefaultProperties }
28
+ };
29
+ }
30
+ Style.Default = StyleControlDefaultProperties;
31
+ Style.All = AllStyleControlProperties;
32
+ Style.Width = StyleControlProperty.Width;
33
+ Style.Margin = StyleControlProperty.Margin;
34
+ Style.Padding = StyleControlProperty.Padding;
35
+ Style.Border = StyleControlProperty.Border;
36
+ Style.BorderRadius = StyleControlProperty.BorderRadius;
37
+ Style.TextStyle = StyleControlProperty.TextStyle;
38
+ const Types = {
39
+ Backgrounds: "Backgrounds",
40
+ Border: "Border",
41
+ BorderRadius: "BorderRadius",
42
+ Checkbox: "Checkbox",
43
+ Date: "Date",
44
+ ElementID: "ElementID",
45
+ Font: "Font",
46
+ GapX: "GapX",
47
+ GapY: "GapY",
48
+ Grid: "Grid",
49
+ Image: "Image",
50
+ Images: "Images",
51
+ Link: "Link",
52
+ List: "List",
53
+ Margin: "Margin",
54
+ NavigationLinks: "NavigationLinks",
55
+ Number: "Number",
56
+ Padding: "Padding",
57
+ ResponsiveColor: "ResponsiveColor",
58
+ ResponsiveIconRadioGroup: "ResponsiveIconRadioGroup",
59
+ ResponsiveLength: "ResponsiveLength",
60
+ ResponsiveNumber: "ResponsiveNumber",
61
+ ResponsiveOpacity: "ResponsiveOpacity",
62
+ ResponsiveSelect: "ResponsiveSelect",
63
+ RichText: "RichText",
64
+ Shadows: "Shadows",
65
+ Shape: "Shape",
66
+ SocialLinks: "SocialLinks",
67
+ Table: "Table",
68
+ TableFormFields: "TableFormFields",
69
+ Typeahead: "Typeahead",
70
+ TextArea: "TextArea",
71
+ TextInput: "TextInput",
72
+ TextStyle: "TextStyle",
73
+ Video: "Video",
74
+ Width: "Width",
75
+ Style: StyleControlType
76
+ };
77
+ function Backgrounds(options = {}) {
78
+ return { type: Types.Backgrounds, options };
79
+ }
80
+ function Border(options = {}) {
81
+ return { type: Types.Border, options };
82
+ }
83
+ function BorderRadius(options = {}) {
84
+ return { type: Types.BorderRadius, options };
85
+ }
86
+ function Checkbox(options) {
87
+ return { type: Types.Checkbox, options };
88
+ }
89
+ function Date(options = {}) {
90
+ return { type: Types.Date, options };
91
+ }
92
+ function ElementID(options = {}) {
93
+ return { type: Types.ElementID, options };
94
+ }
95
+ function Font(options = {}) {
96
+ return { type: Types.Font, options };
97
+ }
98
+ function GapX(options = {}) {
99
+ return { type: Types.GapX, options };
100
+ }
101
+ function GapY(options = {}) {
102
+ return { type: Types.GapY, options };
103
+ }
104
+ function Grid(options = {}) {
105
+ return { type: Types.Grid, options };
106
+ }
107
+ function Image$1(options = {}) {
108
+ return { type: Types.Image, options };
109
+ }
110
+ function Images(options = {}) {
111
+ return { type: Types.Images, options };
112
+ }
113
+ function Link(options = {}) {
114
+ return { type: Types.Link, options };
115
+ }
116
+ function List(options) {
117
+ return { type: Types.List, options };
118
+ }
119
+ function Margin(options = {}) {
120
+ return { type: Types.Margin, options };
121
+ }
122
+ function NavigationLinks(options = {}) {
123
+ return { type: Types.NavigationLinks, options };
124
+ }
125
+ function Number(options = {}) {
126
+ return { type: Types.Number, options };
127
+ }
128
+ function Padding(options = {}) {
129
+ return { type: Types.Padding, options };
130
+ }
131
+ function ResponsiveColor(options = {}) {
132
+ return { type: Types.ResponsiveColor, options };
133
+ }
134
+ function ResponsiveIconRadioGroup(options) {
135
+ return { type: Types.ResponsiveIconRadioGroup, options };
136
+ }
137
+ function ResponsiveLength(options = {}) {
138
+ return { type: Types.ResponsiveLength, options };
139
+ }
140
+ function ResponsiveNumber(options = {}) {
141
+ return { type: Types.ResponsiveNumber, options };
142
+ }
143
+ function ResponsiveOpacity(options = {}) {
144
+ return { type: Types.ResponsiveOpacity, options };
145
+ }
146
+ function ResponsiveSelect(options) {
147
+ return { type: Types.ResponsiveSelect, options };
148
+ }
149
+ function RichText(options = {}) {
150
+ return { type: Types.RichText, options };
151
+ }
152
+ function Shadows(options = {}) {
153
+ return { type: Types.Shadows, options };
154
+ }
155
+ function Shape(options) {
156
+ return { type: Types.Shape, options };
157
+ }
158
+ function SocialLinks(options = {}) {
159
+ return { type: Types.SocialLinks, options };
160
+ }
161
+ function Table(options = {}) {
162
+ return { type: Types.Table, options };
163
+ }
164
+ function TableFormFields(options = {}) {
165
+ return { type: Types.TableFormFields, options };
166
+ }
167
+ function Typeahead(options) {
168
+ return { type: Types.Typeahead, options };
169
+ }
170
+ function TextArea(options = {}) {
171
+ return { type: Types.TextArea, options };
172
+ }
173
+ function TextInput(options = {}) {
174
+ return { type: Types.TextInput, options };
175
+ }
176
+ function TextStyle(options = {}) {
177
+ return { type: Types.TextStyle, options };
178
+ }
179
+ function Video(options = {}) {
180
+ return { type: Types.Video, options };
181
+ }
182
+ const WidthControlValueFormats = {
183
+ ClassName: "ClassName",
184
+ ResponsiveValue: "ResponsiveValue"
185
+ };
186
+ function Width(options = {}) {
187
+ return { type: Types.Width, options };
188
+ }
189
+ Width.Formats = WidthControlValueFormats;
190
+ var descriptors = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
191
+ __proto__: null,
192
+ Types,
193
+ Backgrounds,
194
+ Border,
195
+ BorderRadius,
196
+ Checkbox,
197
+ Date,
198
+ ElementID,
199
+ Font,
200
+ GapX,
201
+ GapY,
202
+ Grid,
203
+ Image: Image$1,
204
+ Images,
205
+ Link,
206
+ List,
207
+ Margin,
208
+ NavigationLinks,
209
+ Number,
210
+ Padding,
211
+ ResponsiveColor,
212
+ ResponsiveIconRadioGroup,
213
+ ResponsiveLength,
214
+ ResponsiveNumber,
215
+ ResponsiveOpacity,
216
+ ResponsiveSelect,
217
+ RichText,
218
+ Shadows,
219
+ Shape,
220
+ SocialLinks,
221
+ Table,
222
+ TableFormFields,
223
+ Typeahead,
224
+ TextArea,
225
+ TextInput,
226
+ TextStyle,
227
+ Video,
228
+ WidthControlValueFormats,
229
+ Width
230
+ }, Symbol.toStringTag, { value: "Module" }));
2
231
  const ImageControlType = "makeswift::controls::image";
3
232
  const ImageControlValueFormat = {
4
233
  URL: "makeswift::controls::image::format::url",
@@ -8,7 +237,46 @@ function Image(config = {}) {
8
237
  return { type: ImageControlType, config };
9
238
  }
10
239
  Image.Format = ImageControlValueFormat;
11
- exports.Image = Image;
240
+ exports.Backgrounds = Backgrounds;
241
+ exports.Border = Border;
242
+ exports.BorderRadius = BorderRadius;
243
+ exports.Checkbox = Checkbox;
244
+ exports.Date = Date;
245
+ exports.ElementID = ElementID;
246
+ exports.Font = Font;
247
+ exports.GapX = GapX;
248
+ exports.GapY = GapY;
249
+ exports.Grid = Grid;
250
+ exports.Image = Image$1;
251
+ exports.Image$1 = Image;
12
252
  exports.ImageControlType = ImageControlType;
13
253
  exports.ImageControlValueFormat = ImageControlValueFormat;
254
+ exports.Images = Images;
255
+ exports.Link = Link;
256
+ exports.Margin = Margin;
257
+ exports.NavigationLinks = NavigationLinks;
258
+ exports.Number = Number;
259
+ exports.Padding = Padding;
260
+ exports.ResponsiveColor = ResponsiveColor;
261
+ exports.ResponsiveIconRadioGroup = ResponsiveIconRadioGroup;
262
+ exports.ResponsiveLength = ResponsiveLength;
263
+ exports.ResponsiveNumber = ResponsiveNumber;
264
+ exports.ResponsiveOpacity = ResponsiveOpacity;
265
+ exports.ResponsiveSelect = ResponsiveSelect;
266
+ exports.RichText = RichText;
267
+ exports.Shadows = Shadows;
268
+ exports.SocialLinks = SocialLinks;
269
+ exports.Style = Style;
270
+ exports.StyleControlProperty = StyleControlProperty;
271
+ exports.StyleControlType = StyleControlType;
272
+ exports.Table = Table;
273
+ exports.TableFormFields = TableFormFields;
274
+ exports.TextArea = TextArea;
275
+ exports.TextInput = TextInput;
276
+ exports.TextStyle = TextStyle;
277
+ exports.Types = Types;
278
+ exports.Video = Video;
279
+ exports.Width = Width;
280
+ exports.WidthControlValueFormats = WidthControlValueFormats;
281
+ exports.descriptors = descriptors;
14
282
  //# sourceMappingURL=image.cjs.js.map