@makeswift/runtime 0.26.0-canary.9 → 0.26.1-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/README.md +2 -2
  2. package/builder/breakpoints/package.json +5 -0
  3. package/builder/core/package.json +5 -0
  4. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  5. package/dist/cjs/{box-model.js → builder/breakpoints/index.js} +11 -11
  6. package/dist/cjs/builder/breakpoints/index.js.map +1 -0
  7. package/dist/cjs/builder/core/index.js.map +1 -0
  8. package/dist/cjs/builder/index.js +44 -18
  9. package/dist/cjs/builder/index.js.map +1 -1
  10. package/dist/cjs/builder/serialization/control-serialization.js +38 -34
  11. package/dist/cjs/builder/serialization/control-serialization.js.map +1 -1
  12. package/dist/cjs/components/builtin/Box/Box.js +14 -14
  13. package/dist/cjs/components/builtin/Box/Box.js.map +1 -1
  14. package/dist/cjs/components/builtin/Box/animations.js.map +1 -1
  15. package/dist/cjs/components/builtin/Form/Form.js +2 -2
  16. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  17. package/dist/cjs/components/hooks/useBackgrounds.js +4 -4
  18. package/dist/cjs/components/hooks/useBackgrounds.js.map +1 -1
  19. package/dist/cjs/components/hooks/useBorder.js +2 -2
  20. package/dist/cjs/components/hooks/useBorder.js.map +1 -1
  21. package/dist/cjs/components/hooks/useBoxShadow.js.map +1 -1
  22. package/dist/cjs/components/hooks/useTableFormFieldRefs.js +3 -3
  23. package/dist/cjs/components/hooks/useTableFormFieldRefs.js.map +1 -1
  24. package/dist/cjs/components/shared/BackgroundsContainer/components/Backgrounds/index.js.map +1 -1
  25. package/dist/cjs/components/shared/grid-item.js.map +1 -1
  26. package/dist/cjs/controls/control.js +2 -2
  27. package/dist/cjs/controls/control.js.map +1 -1
  28. package/dist/cjs/controls/rich-text-v2/control.js.map +1 -1
  29. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +0 -21
  30. package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  31. package/dist/cjs/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js +72 -0
  32. package/dist/cjs/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js.map +1 -0
  33. package/dist/cjs/controls/visitors/message-port-serializer/function-serialization.js +79 -0
  34. package/dist/cjs/controls/visitors/message-port-serializer/function-serialization.js.map +1 -0
  35. package/dist/cjs/controls/visitors/message-port-serializer/index.js +36 -0
  36. package/dist/cjs/controls/visitors/message-port-serializer/index.js.map +1 -0
  37. package/dist/cjs/next/hooks/use-router-locale-sync.js +2 -2
  38. package/dist/cjs/next/hooks/use-router-locale-sync.js.map +1 -1
  39. package/dist/cjs/react/index.js +5 -2
  40. package/dist/cjs/react/index.js.map +1 -1
  41. package/dist/cjs/runtimes/react/components/ElementRegistration.js +4 -3
  42. package/dist/cjs/runtimes/react/components/ElementRegistration.js.map +1 -1
  43. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js +5 -10
  44. package/dist/cjs/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -1
  45. package/dist/cjs/runtimes/react/element-imperative-handle.js +2 -2
  46. package/dist/cjs/runtimes/react/element-imperative-handle.js.map +1 -1
  47. package/dist/cjs/runtimes/react/hooks/use-cache-data.js +2 -2
  48. package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
  49. package/dist/cjs/runtimes/react/hooks/use-register-document.js +5 -4
  50. package/dist/cjs/runtimes/react/hooks/use-register-document.js.map +1 -1
  51. package/dist/cjs/runtimes/react/react-runtime-core.js +4 -3
  52. package/dist/cjs/runtimes/react/react-runtime-core.js.map +1 -1
  53. package/dist/cjs/state/actions/index.js +42 -0
  54. package/dist/cjs/state/actions/index.js.map +1 -0
  55. package/dist/cjs/state/actions/internal.js +174 -0
  56. package/dist/cjs/state/actions/internal.js.map +1 -0
  57. package/dist/cjs/state/builder-api.js +150 -0
  58. package/dist/cjs/state/builder-api.js.map +1 -0
  59. package/dist/cjs/state/host-api.js +103 -0
  60. package/dist/cjs/state/host-api.js.map +1 -0
  61. package/dist/cjs/state/makeswift-api-client.js +4 -2
  62. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  63. package/dist/cjs/state/modules/element-trees.js +14 -4
  64. package/dist/cjs/state/modules/element-trees.js.map +1 -1
  65. package/dist/cjs/state/modules/prop-controllers.js.map +1 -1
  66. package/dist/cjs/state/react-builder-preview.js +21 -18
  67. package/dist/cjs/state/react-builder-preview.js.map +1 -1
  68. package/dist/cjs/state/react-page.js +5 -4
  69. package/dist/cjs/state/react-page.js.map +1 -1
  70. package/dist/cjs/state/shared-api.js +117 -0
  71. package/dist/cjs/state/shared-api.js.map +1 -0
  72. package/dist/cjs/state/translations/merge.js.map +1 -1
  73. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  74. package/dist/esm/builder/breakpoints/index.js +11 -0
  75. package/dist/esm/builder/breakpoints/index.js.map +1 -0
  76. package/dist/esm/builder/core/index.js.map +1 -0
  77. package/dist/esm/builder/index.js +21 -9
  78. package/dist/esm/builder/index.js.map +1 -1
  79. package/dist/esm/builder/serialization/control-serialization.js +10 -3
  80. package/dist/esm/builder/serialization/control-serialization.js.map +1 -1
  81. package/dist/esm/components/builtin/Box/Box.js +1 -1
  82. package/dist/esm/components/builtin/Box/Box.js.map +1 -1
  83. package/dist/esm/components/builtin/Box/animations.js.map +1 -1
  84. package/dist/esm/components/builtin/Form/Form.js +1 -1
  85. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  86. package/dist/esm/components/hooks/useBackgrounds.js.map +1 -1
  87. package/dist/esm/components/hooks/useBorder.js.map +1 -1
  88. package/dist/esm/components/hooks/useBoxShadow.js.map +1 -1
  89. package/dist/esm/components/hooks/useTableFormFieldRefs.js +1 -1
  90. package/dist/esm/components/hooks/useTableFormFieldRefs.js.map +1 -1
  91. package/dist/esm/components/shared/BackgroundsContainer/components/Backgrounds/index.js.map +1 -1
  92. package/dist/esm/components/shared/grid-item.js.map +1 -1
  93. package/dist/esm/controls/control.js +1 -1
  94. package/dist/esm/controls/control.js.map +1 -1
  95. package/dist/esm/controls/rich-text-v2/control.js.map +1 -1
  96. package/dist/esm/controls/rich-text-v2/rich-text-v2.js +0 -22
  97. package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
  98. package/dist/esm/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js +53 -0
  99. package/dist/esm/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.js.map +1 -0
  100. package/dist/esm/controls/visitors/message-port-serializer/function-serialization.js +52 -0
  101. package/dist/esm/controls/visitors/message-port-serializer/function-serialization.js.map +1 -0
  102. package/dist/esm/controls/visitors/message-port-serializer/index.js +13 -0
  103. package/dist/esm/controls/visitors/message-port-serializer/index.js.map +1 -0
  104. package/dist/esm/next/hooks/use-router-locale-sync.js +1 -1
  105. package/dist/esm/next/hooks/use-router-locale-sync.js.map +1 -1
  106. package/dist/esm/react/index.js +3 -1
  107. package/dist/esm/react/index.js.map +1 -1
  108. package/dist/esm/runtimes/react/components/ElementRegistration.js +2 -1
  109. package/dist/esm/runtimes/react/components/ElementRegistration.js.map +1 -1
  110. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js +5 -10
  111. package/dist/esm/runtimes/react/components/hooks/use-builder-connection-ping.js.map +1 -1
  112. package/dist/esm/runtimes/react/element-imperative-handle.js.map +1 -1
  113. package/dist/esm/runtimes/react/hooks/use-cache-data.js +1 -1
  114. package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
  115. package/dist/esm/runtimes/react/hooks/use-register-document.js +2 -5
  116. package/dist/esm/runtimes/react/hooks/use-register-document.js.map +1 -1
  117. package/dist/esm/runtimes/react/react-runtime-core.js +2 -1
  118. package/dist/esm/runtimes/react/react-runtime-core.js.map +1 -1
  119. package/dist/esm/state/actions/index.js +17 -0
  120. package/dist/esm/state/actions/index.js.map +1 -0
  121. package/dist/esm/state/actions/internal.js +135 -0
  122. package/dist/esm/state/actions/internal.js.map +1 -0
  123. package/dist/esm/state/builder-api.js +110 -0
  124. package/dist/esm/state/builder-api.js.map +1 -0
  125. package/dist/esm/state/host-api.js +68 -0
  126. package/dist/esm/state/host-api.js.map +1 -0
  127. package/dist/esm/state/makeswift-api-client.js +3 -1
  128. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  129. package/dist/esm/state/modules/element-trees.js +1 -1
  130. package/dist/esm/state/modules/element-trees.js.map +1 -1
  131. package/dist/esm/state/modules/prop-controllers.js.map +1 -1
  132. package/dist/esm/state/react-builder-preview.js +10 -8
  133. package/dist/esm/state/react-builder-preview.js.map +1 -1
  134. package/dist/esm/state/react-page.js +3 -7
  135. package/dist/esm/state/react-page.js.map +1 -1
  136. package/dist/esm/state/shared-api.js +83 -0
  137. package/dist/esm/state/shared-api.js.map +1 -0
  138. package/dist/esm/state/translations/merge.js.map +1 -1
  139. package/dist/types/builder/breakpoints/index.d.ts +2 -0
  140. package/dist/types/builder/breakpoints/index.d.ts.map +1 -0
  141. package/dist/types/builder/core/index.d.ts +2 -0
  142. package/dist/types/builder/core/index.d.ts.map +1 -0
  143. package/dist/types/builder/index.d.ts +10 -2
  144. package/dist/types/builder/index.d.ts.map +1 -1
  145. package/dist/types/builder/serialization/control-serialization.d.ts +2 -2
  146. package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
  147. package/dist/types/client/index.d.ts +27 -27
  148. package/dist/types/components/builtin/Box/Box.d.ts +1 -1
  149. package/dist/types/components/builtin/Box/Box.d.ts.map +1 -1
  150. package/dist/types/components/builtin/Box/animations.d.ts +1 -1
  151. package/dist/types/components/builtin/Box/animations.d.ts.map +1 -1
  152. package/dist/types/components/builtin/Form/Form.d.ts +1 -1
  153. package/dist/types/components/builtin/Form/Form.d.ts.map +1 -1
  154. package/dist/types/components/hooks/useBackgrounds.d.ts +1 -1
  155. package/dist/types/components/hooks/useBackgrounds.d.ts.map +1 -1
  156. package/dist/types/components/hooks/useBorder.d.ts +1 -1
  157. package/dist/types/components/hooks/useBorder.d.ts.map +1 -1
  158. package/dist/types/components/hooks/useBoxShadow.d.ts +1 -1
  159. package/dist/types/components/hooks/useBoxShadow.d.ts.map +1 -1
  160. package/dist/types/components/shared/grid-item.d.ts +1 -1
  161. package/dist/types/components/shared/grid-item.d.ts.map +1 -1
  162. package/dist/types/controls/control.d.ts +1 -2
  163. package/dist/types/controls/control.d.ts.map +1 -1
  164. package/dist/types/controls/rich-text-v2/control.d.ts +1 -2
  165. package/dist/types/controls/rich-text-v2/control.d.ts.map +1 -1
  166. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +1 -2
  167. package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
  168. package/dist/types/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.d.ts +9 -0
  169. package/dist/types/controls/visitors/message-port-serializer/client-message-port-serialization-visitor.d.ts.map +1 -0
  170. package/dist/types/controls/visitors/message-port-serializer/function-serialization.d.ts +16 -0
  171. package/dist/types/controls/visitors/message-port-serializer/function-serialization.d.ts.map +1 -0
  172. package/dist/types/controls/visitors/message-port-serializer/function-serialization.test.d.ts +2 -0
  173. package/dist/types/controls/visitors/message-port-serializer/function-serialization.test.d.ts.map +1 -0
  174. package/dist/types/controls/visitors/message-port-serializer/index.d.ts +3 -0
  175. package/dist/types/controls/visitors/message-port-serializer/index.d.ts.map +1 -0
  176. package/dist/types/locale.d.ts +1 -1
  177. package/dist/types/react/index.d.ts +1 -0
  178. package/dist/types/react/index.d.ts.map +1 -1
  179. package/dist/types/runtimes/react/components/Document.d.ts +1 -1
  180. package/dist/types/runtimes/react/components/Document.d.ts.map +1 -1
  181. package/dist/types/runtimes/react/components/DocumentRoot.d.ts +1 -1
  182. package/dist/types/runtimes/react/components/DocumentRoot.d.ts.map +1 -1
  183. package/dist/types/runtimes/react/components/Element.d.ts +1 -1
  184. package/dist/types/runtimes/react/components/Element.d.ts.map +1 -1
  185. package/dist/types/runtimes/react/components/ElementReference.d.ts +1 -1
  186. package/dist/types/runtimes/react/components/ElementReference.d.ts.map +1 -1
  187. package/dist/types/runtimes/react/components/ElementRegistration.d.ts.map +1 -1
  188. package/dist/types/runtimes/react/components/hooks/use-builder-connection-ping.d.ts.map +1 -1
  189. package/dist/types/runtimes/react/element-imperative-handle.d.ts +2 -1
  190. package/dist/types/runtimes/react/element-imperative-handle.d.ts.map +1 -1
  191. package/dist/types/runtimes/react/hooks/use-register-document.d.ts.map +1 -1
  192. package/dist/types/runtimes/react/hooks/use-store.d.ts +1 -1
  193. package/dist/types/runtimes/react/react-runtime-core.d.ts.map +1 -1
  194. package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
  195. package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
  196. package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
  197. package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
  198. package/dist/types/state/actions/index.d.ts +58 -0
  199. package/dist/types/state/actions/index.d.ts.map +1 -0
  200. package/dist/types/state/actions/internal.d.ts +154 -0
  201. package/dist/types/state/actions/internal.d.ts.map +1 -0
  202. package/dist/types/state/builder-api.d.ts +163 -0
  203. package/dist/types/state/builder-api.d.ts.map +1 -0
  204. package/dist/types/state/host-api.d.ts +109 -0
  205. package/dist/types/state/host-api.d.ts.map +1 -0
  206. package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
  207. package/dist/types/state/modules/prop-controllers.d.ts +1 -1
  208. package/dist/types/state/modules/prop-controllers.d.ts.map +1 -1
  209. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  210. package/dist/types/state/react-page.d.ts.map +1 -1
  211. package/dist/types/state/shared-api.d.ts +104 -0
  212. package/dist/types/state/shared-api.d.ts.map +1 -0
  213. package/dist/types/state/translations/merge.d.ts +1 -1
  214. package/dist/types/state/translations/merge.d.ts.map +1 -1
  215. package/package.json +70 -85
  216. package/box-model/package.json +0 -5
  217. package/core/package.json +0 -5
  218. package/dist/cjs/box-model.js.map +0 -1
  219. package/dist/cjs/core/index.js.map +0 -1
  220. package/dist/cjs/prop-controllers/index.js +0 -48
  221. package/dist/cjs/prop-controllers/index.js.map +0 -1
  222. package/dist/cjs/state/actions.js +0 -423
  223. package/dist/cjs/state/actions.js.map +0 -1
  224. package/dist/esm/box-model.js +0 -7
  225. package/dist/esm/box-model.js.map +0 -1
  226. package/dist/esm/core/index.js.map +0 -1
  227. package/dist/esm/prop-controllers/index.js +0 -11
  228. package/dist/esm/prop-controllers/index.js.map +0 -1
  229. package/dist/esm/state/actions.js +0 -349
  230. package/dist/esm/state/actions.js.map +0 -1
  231. package/dist/types/box-model.d.ts +0 -3
  232. package/dist/types/box-model.d.ts.map +0 -1
  233. package/dist/types/core/index.d.ts +0 -2
  234. package/dist/types/core/index.d.ts.map +0 -1
  235. package/dist/types/prop-controllers/index.d.ts +0 -8
  236. package/dist/types/prop-controllers/index.d.ts.map +0 -1
  237. package/dist/types/state/actions.d.ts +0 -461
  238. package/dist/types/state/actions.d.ts.map +0 -1
  239. package/prop-controllers/package.json +0 -5
  240. package/slate/package.json +0 -5
  241. package/state/breakpoints/package.json +0 -5
  242. /package/dist/cjs/{core → builder/core}/index.js +0 -0
  243. /package/dist/esm/{core → builder/core}/index.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/builtin/Box/Box.tsx"],"sourcesContent":["'use client'\n\nimport {\n forwardRef,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { cx } from '@emotion/css'\nimport { v4 as uuid } from 'uuid'\n\nimport { Element } from '../../../runtimes/react'\nimport Placeholder from './components/Placeholder'\nimport { areBoxAnimationPropsEqual, BoxAnimationProps, useBoxAnimation } from './animations'\nimport { BoxModelHandle, parse, createBox } from '../../../box-model'\nimport BackgroundsContainer from '../../shared/BackgroundsContainer'\nimport { useResponsiveStyle } from '../../utils/responsive-style'\nimport { GridItem } from '../../shared/grid-item'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport {\n type GridData,\n type ResponsiveBackgroundsData,\n type ResponsiveGapData,\n type ResponsiveIconRadioGroupValue,\n} from '@makeswift/prop-controllers'\n\ntype Props = {\n id?: string\n backgrounds?: ResponsiveBackgroundsData\n width?: string\n height?: ResponsiveIconRadioGroupValue<'auto' | 'stretch'>\n verticalAlign?: ResponsiveIconRadioGroupValue<\n 'flex-start' | 'center' | 'flex-end' | 'space-between'\n >\n margin?: string\n padding?: string\n border?: string\n borderRadius?: string\n boxShadow?: string\n rowGap?: ResponsiveGapData\n columnGap?: ResponsiveGapData\n hidePlaceholder?: boolean\n children?: GridData\n} & BoxAnimationProps\n\nconst Box = forwardRef(function Box(\n {\n id,\n backgrounds,\n width,\n height,\n margin,\n padding,\n border,\n children,\n borderRadius,\n boxShadow,\n rowGap,\n columnGap,\n hidePlaceholder,\n verticalAlign,\n boxAnimateType,\n boxAnimateDuration,\n boxAnimateDelay,\n itemAnimateDelay,\n itemAnimateType,\n itemAnimateDuration,\n itemStaggerDuration,\n }: Props,\n ref: Ref<BoxModelHandle>,\n) {\n const innerRef = useRef<HTMLDivElement | null>(null)\n const boxElementObjectRef = useRef<HTMLElement | null>(null)\n const [animationClassName, replayAnimation, setElement] = useBoxAnimation(\n boxAnimateType,\n boxAnimateDuration,\n boxAnimateDelay,\n itemAnimateType,\n )\n const boxElementCallbackRef = useCallback((current: HTMLElement | null) => {\n boxElementObjectRef.current = current\n\n setElement(current)\n }, [])\n\n useImperativeHandle(\n ref,\n () => ({\n getDomNode() {\n return boxElementObjectRef.current\n },\n getBoxModel() {\n const paddingBoxElement = innerRef.current\n const borderBoxElement = innerRef.current\n const marginBoxElement = boxElementObjectRef.current\n const borderBox = innerRef.current?.getBoundingClientRect()\n const paddingBoxComputedStyle =\n paddingBoxElement?.ownerDocument.defaultView?.getComputedStyle(paddingBoxElement)\n const borderBoxComputedStyle =\n borderBoxElement?.ownerDocument.defaultView?.getComputedStyle(borderBoxElement)\n const marginBoxComputedStyle =\n marginBoxElement?.ownerDocument.defaultView?.getComputedStyle(marginBoxElement)\n const padding = paddingBoxComputedStyle && {\n top: parse(paddingBoxComputedStyle.paddingTop),\n right: parse(paddingBoxComputedStyle.paddingRight),\n bottom: parse(paddingBoxComputedStyle.paddingBottom),\n left: parse(paddingBoxComputedStyle.paddingLeft),\n }\n const border = borderBoxComputedStyle && {\n top: parse(borderBoxComputedStyle.borderTopWidth),\n right: parse(borderBoxComputedStyle.borderRightWidth),\n bottom: parse(borderBoxComputedStyle.borderBottomWidth),\n left: parse(borderBoxComputedStyle.borderLeftWidth),\n }\n const margin = marginBoxComputedStyle && {\n top: parse(marginBoxComputedStyle.marginTop),\n right: parse(marginBoxComputedStyle.marginRight),\n bottom: parse(marginBoxComputedStyle.marginBottom),\n left: parse(marginBoxComputedStyle.marginLeft),\n }\n\n return borderBox ? createBox({ borderBox, padding, border, margin }) : null\n },\n }),\n [],\n )\n\n const gridItemClassName = useStyle(\n useResponsiveStyle([verticalAlign], ([alignItems = 'flex-start']) => ({ alignItems })),\n )\n\n const [key, setKey] = useState(() => uuid())\n\n const animationProps = {\n boxAnimateType,\n boxAnimateDuration,\n boxAnimateDelay,\n itemAnimateType,\n itemAnimateDuration,\n itemAnimateDelay,\n itemStaggerDuration,\n }\n\n const prevAnimationProps = useRef(animationProps)\n useEffect(() => {\n if (!areBoxAnimationPropsEqual(prevAnimationProps.current, animationProps)) {\n replayAnimation()\n setKey(uuid())\n prevAnimationProps.current = animationProps\n }\n }, [replayAnimation, animationProps])\n\n return (\n <BackgroundsContainer\n ref={boxElementCallbackRef}\n id={id}\n className={cx(\n width,\n margin,\n borderRadius,\n useStyle({ display: 'flex' }),\n useStyle(useResponsiveStyle([height], ([alignSelf = 'auto']) => ({ alignSelf }))),\n animationClassName,\n )}\n backgrounds={backgrounds}\n >\n <div\n ref={innerRef}\n key={key}\n className={cx(\n padding,\n boxShadow,\n border,\n useStyle({ display: 'flex', flexWrap: 'wrap', width: '100%' }),\n useStyle(\n useResponsiveStyle([verticalAlign], ([alignContent = 'flex-start']) => ({\n alignContent,\n })),\n ),\n )}\n >\n {children && children.elements.length > 0 ? (\n children.elements.map((child, index) => (\n <GridItem\n key={child.key}\n className={gridItemClassName}\n grid={children.columns}\n index={index}\n itemAnimateDuration={itemAnimateDuration}\n itemAnimateDelay={itemAnimateDelay}\n itemStaggerDuration={itemStaggerDuration}\n columnGap={columnGap}\n rowGap={rowGap}\n >\n <Element element={child} />\n </GridItem>\n ))\n ) : (\n <Placeholder hide={hidePlaceholder} />\n )}\n </div>\n </BackgroundsContainer>\n )\n})\n\nexport default Box\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqMc;AAnMd,mBAQO;AACP,iBAAmB;AACnB,kBAA2B;AAE3B,IAAAA,gBAAwB;AACxB,yBAAwB;AACxB,wBAA8E;AAC9E,uBAAiD;AACjD,kCAAiC;AACjC,8BAAmC;AACnC,uBAAyB;AACzB,uBAAyB;AA2BzB,MAAM,UAAM,yBAAW,SAASC,KAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACA,KACA;AACA,QAAM,eAAW,qBAA8B,IAAI;AACnD,QAAM,0BAAsB,qBAA2B,IAAI;AAC3D,QAAM,CAAC,oBAAoB,iBAAiB,UAAU,QAAI;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,4BAAwB,0BAAY,CAAC,YAAgC;AACzE,wBAAoB,UAAU;AAE9B,eAAW,OAAO;AAAA,EACpB,GAAG,CAAC,CAAC;AAEL;AAAA,IACE;AAAA,IACA,OAAO;AAAA,MACL,aAAa;AACX,eAAO,oBAAoB;AAAA,MAC7B;AAAA,MACA,cAAc;AACZ,cAAM,oBAAoB,SAAS;AACnC,cAAM,mBAAmB,SAAS;AAClC,cAAM,mBAAmB,oBAAoB;AAC7C,cAAM,YAAY,SAAS,SAAS,sBAAsB;AAC1D,cAAM,0BACJ,mBAAmB,cAAc,aAAa,iBAAiB,iBAAiB;AAClF,cAAM,yBACJ,kBAAkB,cAAc,aAAa,iBAAiB,gBAAgB;AAChF,cAAM,yBACJ,kBAAkB,cAAc,aAAa,iBAAiB,gBAAgB;AAChF,cAAMC,WAAU,2BAA2B;AAAA,UACzC,SAAK,wBAAM,wBAAwB,UAAU;AAAA,UAC7C,WAAO,wBAAM,wBAAwB,YAAY;AAAA,UACjD,YAAQ,wBAAM,wBAAwB,aAAa;AAAA,UACnD,UAAM,wBAAM,wBAAwB,WAAW;AAAA,QACjD;AACA,cAAMC,UAAS,0BAA0B;AAAA,UACvC,SAAK,wBAAM,uBAAuB,cAAc;AAAA,UAChD,WAAO,wBAAM,uBAAuB,gBAAgB;AAAA,UACpD,YAAQ,wBAAM,uBAAuB,iBAAiB;AAAA,UACtD,UAAM,wBAAM,uBAAuB,eAAe;AAAA,QACpD;AACA,cAAMC,UAAS,0BAA0B;AAAA,UACvC,SAAK,wBAAM,uBAAuB,SAAS;AAAA,UAC3C,WAAO,wBAAM,uBAAuB,WAAW;AAAA,UAC/C,YAAQ,wBAAM,uBAAuB,YAAY;AAAA,UACjD,UAAM,wBAAM,uBAAuB,UAAU;AAAA,QAC/C;AAEA,eAAO,gBAAY,4BAAU,EAAE,WAAW,SAAAF,UAAS,QAAAC,SAAQ,QAAAC,QAAO,CAAC,IAAI;AAAA,MACzE;AAAA,IACF;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,wBAAoB;AAAA,QACxB,4CAAmB,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,YAAY,OAAO,EAAE,WAAW,EAAE;AAAA,EACvF;AAEA,QAAM,CAAC,KAAK,MAAM,QAAI,uBAAS,UAAM,YAAAC,IAAK,CAAC;AAE3C,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,yBAAqB,qBAAO,cAAc;AAChD,8BAAU,MAAM;AACd,QAAI,KAAC,6CAA0B,mBAAmB,SAAS,cAAc,GAAG;AAC1E,sBAAgB;AAChB,iBAAO,YAAAA,IAAK,CAAC;AACb,yBAAmB,UAAU;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,iBAAiB,cAAc,CAAC;AAEpC,SACE;AAAA,IAAC,4BAAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL;AAAA,MACA,eAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,YACA,2BAAS,EAAE,SAAS,OAAO,CAAC;AAAA,YAC5B,+BAAS,4CAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,MAAM,OAAO,EAAE,UAAU,EAAE,CAAC;AAAA,QAChF;AAAA,MACF;AAAA,MACA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UAEL,eAAW;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,gBACA,2BAAS,EAAE,SAAS,QAAQ,UAAU,QAAQ,OAAO,OAAO,CAAC;AAAA,gBAC7D;AAAA,kBACE,4CAAmB,CAAC,aAAa,GAAG,CAAC,CAAC,eAAe,YAAY,OAAO;AAAA,gBACtE;AAAA,cACF,EAAE;AAAA,YACJ;AAAA,UACF;AAAA,UAEC,sBAAY,SAAS,SAAS,SAAS,IACtC,SAAS,SAAS,IAAI,CAAC,OAAO,UAC5B;AAAA,YAAC;AAAA;AAAA,cAEC,WAAW;AAAA,cACX,MAAM,SAAS;AAAA,cACf;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cAEA,sDAAC,yBAAQ,SAAS,OAAO;AAAA;AAAA,YAVpB,MAAM;AAAA,UAWb,CACD,IAED,4CAAC,mBAAAC,SAAA,EAAY,MAAM,iBAAiB;AAAA;AAAA,QA9BjC;AAAA,MAgCP;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,IAAO,cAAQ;","names":["import_react","Box","padding","border","margin","uuid","BackgroundsContainer","Placeholder"]}
1
+ {"version":3,"sources":["../../../../../src/components/builtin/Box/Box.tsx"],"sourcesContent":["'use client'\n\nimport {\n forwardRef,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react'\nimport { cx } from '@emotion/css'\nimport { v4 as uuid } from 'uuid'\n\nimport { Element } from '../../../runtimes/react'\nimport Placeholder from './components/Placeholder'\nimport { areBoxAnimationPropsEqual, BoxAnimationProps, useBoxAnimation } from './animations'\nimport { parse, createBox, type BoxModelHandle } from '../../../state/modules/box-models'\nimport BackgroundsContainer from '../../shared/BackgroundsContainer'\nimport { useResponsiveStyle } from '../../utils/responsive-style'\nimport { GridItem } from '../../shared/grid-item'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport {\n type GridData,\n type ResponsiveBackgroundsData,\n type ResponsiveGapData,\n type ResponsiveIconRadioGroupValue,\n} from '@makeswift/prop-controllers'\n\ntype Props = {\n id?: string\n backgrounds?: ResponsiveBackgroundsData\n width?: string\n height?: ResponsiveIconRadioGroupValue<'auto' | 'stretch'>\n verticalAlign?: ResponsiveIconRadioGroupValue<\n 'flex-start' | 'center' | 'flex-end' | 'space-between'\n >\n margin?: string\n padding?: string\n border?: string\n borderRadius?: string\n boxShadow?: string\n rowGap?: ResponsiveGapData\n columnGap?: ResponsiveGapData\n hidePlaceholder?: boolean\n children?: GridData\n} & BoxAnimationProps\n\nconst Box = forwardRef(function Box(\n {\n id,\n backgrounds,\n width,\n height,\n margin,\n padding,\n border,\n children,\n borderRadius,\n boxShadow,\n rowGap,\n columnGap,\n hidePlaceholder,\n verticalAlign,\n boxAnimateType,\n boxAnimateDuration,\n boxAnimateDelay,\n itemAnimateDelay,\n itemAnimateType,\n itemAnimateDuration,\n itemStaggerDuration,\n }: Props,\n ref: Ref<BoxModelHandle>,\n) {\n const innerRef = useRef<HTMLDivElement | null>(null)\n const boxElementObjectRef = useRef<HTMLElement | null>(null)\n const [animationClassName, replayAnimation, setElement] = useBoxAnimation(\n boxAnimateType,\n boxAnimateDuration,\n boxAnimateDelay,\n itemAnimateType,\n )\n const boxElementCallbackRef = useCallback((current: HTMLElement | null) => {\n boxElementObjectRef.current = current\n\n setElement(current)\n }, [])\n\n useImperativeHandle(\n ref,\n () => ({\n getDomNode() {\n return boxElementObjectRef.current\n },\n getBoxModel() {\n const paddingBoxElement = innerRef.current\n const borderBoxElement = innerRef.current\n const marginBoxElement = boxElementObjectRef.current\n const borderBox = innerRef.current?.getBoundingClientRect()\n const paddingBoxComputedStyle =\n paddingBoxElement?.ownerDocument.defaultView?.getComputedStyle(paddingBoxElement)\n const borderBoxComputedStyle =\n borderBoxElement?.ownerDocument.defaultView?.getComputedStyle(borderBoxElement)\n const marginBoxComputedStyle =\n marginBoxElement?.ownerDocument.defaultView?.getComputedStyle(marginBoxElement)\n const padding = paddingBoxComputedStyle && {\n top: parse(paddingBoxComputedStyle.paddingTop),\n right: parse(paddingBoxComputedStyle.paddingRight),\n bottom: parse(paddingBoxComputedStyle.paddingBottom),\n left: parse(paddingBoxComputedStyle.paddingLeft),\n }\n const border = borderBoxComputedStyle && {\n top: parse(borderBoxComputedStyle.borderTopWidth),\n right: parse(borderBoxComputedStyle.borderRightWidth),\n bottom: parse(borderBoxComputedStyle.borderBottomWidth),\n left: parse(borderBoxComputedStyle.borderLeftWidth),\n }\n const margin = marginBoxComputedStyle && {\n top: parse(marginBoxComputedStyle.marginTop),\n right: parse(marginBoxComputedStyle.marginRight),\n bottom: parse(marginBoxComputedStyle.marginBottom),\n left: parse(marginBoxComputedStyle.marginLeft),\n }\n\n return borderBox ? createBox({ borderBox, padding, border, margin }) : null\n },\n }),\n [],\n )\n\n const gridItemClassName = useStyle(\n useResponsiveStyle([verticalAlign], ([alignItems = 'flex-start']) => ({ alignItems })),\n )\n\n const [key, setKey] = useState(() => uuid())\n\n const animationProps = {\n boxAnimateType,\n boxAnimateDuration,\n boxAnimateDelay,\n itemAnimateType,\n itemAnimateDuration,\n itemAnimateDelay,\n itemStaggerDuration,\n }\n\n const prevAnimationProps = useRef(animationProps)\n useEffect(() => {\n if (!areBoxAnimationPropsEqual(prevAnimationProps.current, animationProps)) {\n replayAnimation()\n setKey(uuid())\n prevAnimationProps.current = animationProps\n }\n }, [replayAnimation, animationProps])\n\n return (\n <BackgroundsContainer\n ref={boxElementCallbackRef}\n id={id}\n className={cx(\n width,\n margin,\n borderRadius,\n useStyle({ display: 'flex' }),\n useStyle(useResponsiveStyle([height], ([alignSelf = 'auto']) => ({ alignSelf }))),\n animationClassName,\n )}\n backgrounds={backgrounds}\n >\n <div\n ref={innerRef}\n key={key}\n className={cx(\n padding,\n boxShadow,\n border,\n useStyle({ display: 'flex', flexWrap: 'wrap', width: '100%' }),\n useStyle(\n useResponsiveStyle([verticalAlign], ([alignContent = 'flex-start']) => ({\n alignContent,\n })),\n ),\n )}\n >\n {children && children.elements.length > 0 ? (\n children.elements.map((child, index) => (\n <GridItem\n key={child.key}\n className={gridItemClassName}\n grid={children.columns}\n index={index}\n itemAnimateDuration={itemAnimateDuration}\n itemAnimateDelay={itemAnimateDelay}\n itemStaggerDuration={itemStaggerDuration}\n columnGap={columnGap}\n rowGap={rowGap}\n >\n <Element element={child} />\n </GridItem>\n ))\n ) : (\n <Placeholder hide={hidePlaceholder} />\n )}\n </div>\n </BackgroundsContainer>\n )\n})\n\nexport default Box\n"],"mappings":"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","names":["import_react","Box","padding","border","margin","uuid","BackgroundsContainer","Placeholder"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/builtin/Box/animations.tsx"],"sourcesContent":["'use client'\n\nimport { type CSSObject } from '@emotion/serialize'\nimport { useState, useEffect, useCallback, useRef } from 'react'\nimport { ResponsiveValue } from '../../../prop-controllers'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useMediaQuery } from '../../hooks'\nimport { gridItemIdentifierClassName } from '../../shared/grid-item'\nimport {\n BoxAnimateIn,\n DEFAULT_BOX_ANIMATE_DELAY,\n DEFAULT_BOX_ANIMATE_DURATION,\n DEFAULT_BOX_ANIMATE_TYPE,\n DEFAULT_ITEM_ANIMATE_TYPE,\n DEFAULT_ITEM_STAGGER_DURATION,\n} from './constants'\nimport { type ResponsiveNumberValue, type ResponsiveSelectValue } from '@makeswift/prop-controllers'\n\nfunction useElementOnScreen(\n options: IntersectionObserverInit,\n): [boolean, (element: HTMLElement | null) => void] {\n const [isVisible, setIsVisible] = useState(false)\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null)\n\n const setElement = useCallback((element: HTMLElement | null) => {\n if (element != null) {\n const observer = new IntersectionObserver(([entry]) => {\n if (entry?.isIntersecting) setIsVisible(true)\n }, options)\n\n observer.observe(element)\n\n intersectionObserverRef.current = observer\n } else {\n intersectionObserverRef.current?.disconnect()\n\n intersectionObserverRef.current = null\n }\n }, [])\n\n return [isVisible, setElement]\n}\n\nexport type BoxAnimationProps = {\n boxAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n boxAnimateDuration?: ResponsiveNumberValue\n boxAnimateDelay?: ResponsiveNumberValue\n itemAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n itemAnimateDuration?: ResponsiveNumberValue\n itemAnimateDelay?: ResponsiveNumberValue\n itemStaggerDuration?: ResponsiveNumberValue\n}\n\nfunction compareResponsiveValues<T>(a?: ResponsiveValue<T>, b?: ResponsiveValue<T>) {\n if (a == null && b == null) {\n return true\n }\n if (a != null && b != null) {\n let isEqual = true\n a.forEach((currentA, index) => {\n const currentB = b.at(index)\n if (currentB == null) {\n isEqual = false\n return\n }\n\n if (currentA.deviceId != currentB?.deviceId || currentA.value != currentB.value) {\n isEqual = false\n }\n })\n return isEqual\n }\n\n return false\n}\n\nexport function areBoxAnimationPropsEqual(prevProps: BoxAnimationProps, props: BoxAnimationProps) {\n return (\n compareResponsiveValues(prevProps.boxAnimateType, props.boxAnimateType) &&\n compareResponsiveValues(prevProps.boxAnimateDuration, props.boxAnimateDuration) &&\n compareResponsiveValues(prevProps.boxAnimateDelay, props.boxAnimateDelay) &&\n compareResponsiveValues(prevProps.itemAnimateType, props.itemAnimateType) &&\n compareResponsiveValues(prevProps.itemAnimateDuration, props.itemAnimateDuration) &&\n compareResponsiveValues(prevProps.itemAnimateDelay, props.itemAnimateDelay) &&\n compareResponsiveValues(prevProps.itemStaggerDuration, props.itemStaggerDuration)\n )\n}\n\nconst exitedBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 0 },\n fadeLeft: { transform: 'translate3d(60px,0,0)', opacity: 0 },\n fadeRight: { transform: 'translate3d(-60px,0,0)', opacity: 0 },\n fadeDown: { transform: 'translate3d(0,-80px,0)', opacity: 0 },\n fadeUp: { transform: 'translate3d(0,80px,0)', opacity: 0 },\n blurIn: { filter: 'blur(20px)', opacity: 0 },\n scaleDown: {\n transform: 'scale(1.2)',\n opacity: 0,\n },\n scaleUp: {\n transform: 'scale(.75)',\n opacity: 0,\n },\n}\n\nconst enteredBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 1 },\n fadeLeft: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeRight: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeDown: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n fadeUp: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n blurIn: { filter: 'blur(0px)', opacity: 1 },\n scaleDown: {\n transform: 'scale(1)',\n opacity: 1,\n },\n scaleUp: {\n transform: 'scale(1)',\n opacity: 1,\n },\n}\n\nexport function useBoxAnimation(\n responsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n itemResponsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n): [string, () => void, (element: HTMLElement | null) => void] {\n const [isVisible, setElement] = useElementOnScreen({\n root: null,\n rootMargin: `0px 0px -10% 0px`,\n threshold: 0.2,\n })\n const animationType = useMediaQuery(responsiveAnimationType) || DEFAULT_BOX_ANIMATE_TYPE\n const itemAnimationType = useMediaQuery(itemResponsiveAnimationType) || DEFAULT_ITEM_ANIMATE_TYPE\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const actualDelay = delay * 1000\n const actualDuration = duration * 1000\n\n const entered = {\n ...enteredBoxAnimationProperties[animationType],\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...enteredBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const exited = {\n ...exitedBoxAnimationProperties[animationType],\n transition: `all 0ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...exitedBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const [isEntered, setEntered] = useState(false)\n\n useEffect(() => {\n if (isVisible && !isEntered) setEntered(true)\n }, [isVisible, entered])\n\n const replayAnimation = useCallback(() => {\n setEntered(false)\n }, [])\n\n return [\n useStyle({\n '@media (prefers-reduced-motion: no-preference)': isEntered ? entered : exited,\n }),\n replayAnimation,\n setElement,\n ]\n}\n\nexport function useItemAnimation(\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n responsiveStagger: ResponsiveValue<number> | undefined,\n index: number,\n) {\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const stagger = useMediaQuery(responsiveStagger) || DEFAULT_ITEM_STAGGER_DURATION\n const delayFromStagger = responsiveStagger == null || index == null ? 0 : stagger * index\n const actualDelay = (delay + delayFromStagger) * 1000\n const actualDuration = duration * 1000\n\n return useStyle({\n '@media (prefers-reduced-motion: no-preference)': {\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n },\n })\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../src/components/builtin/Box/animations.tsx"],"sourcesContent":["'use client'\n\nimport { type CSSObject } from '@emotion/serialize'\nimport { useState, useEffect, useCallback, useRef } from 'react'\nimport { type ResponsiveValue } from '@makeswift/controls'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useMediaQuery } from '../../hooks'\nimport { gridItemIdentifierClassName } from '../../shared/grid-item'\nimport {\n BoxAnimateIn,\n DEFAULT_BOX_ANIMATE_DELAY,\n DEFAULT_BOX_ANIMATE_DURATION,\n DEFAULT_BOX_ANIMATE_TYPE,\n DEFAULT_ITEM_ANIMATE_TYPE,\n DEFAULT_ITEM_STAGGER_DURATION,\n} from './constants'\nimport { type ResponsiveNumberValue, type ResponsiveSelectValue } from '@makeswift/prop-controllers'\n\nfunction useElementOnScreen(\n options: IntersectionObserverInit,\n): [boolean, (element: HTMLElement | null) => void] {\n const [isVisible, setIsVisible] = useState(false)\n const intersectionObserverRef = useRef<IntersectionObserver | null>(null)\n\n const setElement = useCallback((element: HTMLElement | null) => {\n if (element != null) {\n const observer = new IntersectionObserver(([entry]) => {\n if (entry?.isIntersecting) setIsVisible(true)\n }, options)\n\n observer.observe(element)\n\n intersectionObserverRef.current = observer\n } else {\n intersectionObserverRef.current?.disconnect()\n\n intersectionObserverRef.current = null\n }\n }, [])\n\n return [isVisible, setElement]\n}\n\nexport type BoxAnimationProps = {\n boxAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n boxAnimateDuration?: ResponsiveNumberValue\n boxAnimateDelay?: ResponsiveNumberValue\n itemAnimateType?: ResponsiveSelectValue<BoxAnimateIn>\n itemAnimateDuration?: ResponsiveNumberValue\n itemAnimateDelay?: ResponsiveNumberValue\n itemStaggerDuration?: ResponsiveNumberValue\n}\n\nfunction compareResponsiveValues<T>(a?: ResponsiveValue<T>, b?: ResponsiveValue<T>) {\n if (a == null && b == null) {\n return true\n }\n if (a != null && b != null) {\n let isEqual = true\n a.forEach((currentA, index) => {\n const currentB = b.at(index)\n if (currentB == null) {\n isEqual = false\n return\n }\n\n if (currentA.deviceId != currentB?.deviceId || currentA.value != currentB.value) {\n isEqual = false\n }\n })\n return isEqual\n }\n\n return false\n}\n\nexport function areBoxAnimationPropsEqual(prevProps: BoxAnimationProps, props: BoxAnimationProps) {\n return (\n compareResponsiveValues(prevProps.boxAnimateType, props.boxAnimateType) &&\n compareResponsiveValues(prevProps.boxAnimateDuration, props.boxAnimateDuration) &&\n compareResponsiveValues(prevProps.boxAnimateDelay, props.boxAnimateDelay) &&\n compareResponsiveValues(prevProps.itemAnimateType, props.itemAnimateType) &&\n compareResponsiveValues(prevProps.itemAnimateDuration, props.itemAnimateDuration) &&\n compareResponsiveValues(prevProps.itemAnimateDelay, props.itemAnimateDelay) &&\n compareResponsiveValues(prevProps.itemStaggerDuration, props.itemStaggerDuration)\n )\n}\n\nconst exitedBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 0 },\n fadeLeft: { transform: 'translate3d(60px,0,0)', opacity: 0 },\n fadeRight: { transform: 'translate3d(-60px,0,0)', opacity: 0 },\n fadeDown: { transform: 'translate3d(0,-80px,0)', opacity: 0 },\n fadeUp: { transform: 'translate3d(0,80px,0)', opacity: 0 },\n blurIn: { filter: 'blur(20px)', opacity: 0 },\n scaleDown: {\n transform: 'scale(1.2)',\n opacity: 0,\n },\n scaleUp: {\n transform: 'scale(.75)',\n opacity: 0,\n },\n}\n\nconst enteredBoxAnimationProperties: { [key in BoxAnimateIn]: CSSObject } = {\n none: { opacity: 1 },\n fadeIn: { opacity: 1 },\n fadeLeft: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeRight: { transform: 'translate3d(0px,0,0)', opacity: 1 },\n fadeDown: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n fadeUp: { transform: 'translate3d(0,0px,0)', opacity: 1 },\n blurIn: { filter: 'blur(0px)', opacity: 1 },\n scaleDown: {\n transform: 'scale(1)',\n opacity: 1,\n },\n scaleUp: {\n transform: 'scale(1)',\n opacity: 1,\n },\n}\n\nexport function useBoxAnimation(\n responsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n itemResponsiveAnimationType: ResponsiveValue<BoxAnimateIn> | undefined,\n): [string, () => void, (element: HTMLElement | null) => void] {\n const [isVisible, setElement] = useElementOnScreen({\n root: null,\n rootMargin: `0px 0px -10% 0px`,\n threshold: 0.2,\n })\n const animationType = useMediaQuery(responsiveAnimationType) || DEFAULT_BOX_ANIMATE_TYPE\n const itemAnimationType = useMediaQuery(itemResponsiveAnimationType) || DEFAULT_ITEM_ANIMATE_TYPE\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const actualDelay = delay * 1000\n const actualDuration = duration * 1000\n\n const entered = {\n ...enteredBoxAnimationProperties[animationType],\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...enteredBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const exited = {\n ...exitedBoxAnimationProperties[animationType],\n transition: `all 0ms`,\n [`& > div > .${gridItemIdentifierClassName}`]: {\n ...exitedBoxAnimationProperties[itemAnimationType],\n },\n }\n\n const [isEntered, setEntered] = useState(false)\n\n useEffect(() => {\n if (isVisible && !isEntered) setEntered(true)\n }, [isVisible, entered])\n\n const replayAnimation = useCallback(() => {\n setEntered(false)\n }, [])\n\n return [\n useStyle({\n '@media (prefers-reduced-motion: no-preference)': isEntered ? entered : exited,\n }),\n replayAnimation,\n setElement,\n ]\n}\n\nexport function useItemAnimation(\n responsiveDuration: ResponsiveValue<number> | undefined,\n responisveDelay: ResponsiveValue<number> | undefined,\n responsiveStagger: ResponsiveValue<number> | undefined,\n index: number,\n) {\n const duration = useMediaQuery(responsiveDuration) || DEFAULT_BOX_ANIMATE_DURATION\n const delay = useMediaQuery(responisveDelay) || DEFAULT_BOX_ANIMATE_DELAY\n const stagger = useMediaQuery(responsiveStagger) || DEFAULT_ITEM_STAGGER_DURATION\n const delayFromStagger = responsiveStagger == null || index == null ? 0 : stagger * index\n const actualDelay = (delay + delayFromStagger) * 1000\n const actualDuration = duration * 1000\n\n return useStyle({\n '@media (prefers-reduced-motion: no-preference)': {\n transition: `transform ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms,filter ${actualDuration}ms cubic-bezier(0.16, 0.84, 0.44, 1) ${actualDelay}ms, opacity ${actualDuration}ms ease ${actualDelay}ms`,\n },\n })\n}\n"],"mappings":"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","names":[]}
@@ -43,7 +43,7 @@ var import_Field = __toESM(require("./components/Field"));
43
43
  var import_Spinner = __toESM(require("./components/Spinner"));
44
44
  var import_Button = __toESM(require("../Button"));
45
45
  var import_Link = require("../../shared/Link");
46
- var import_box_model = require("../../../box-model");
46
+ var import_box_models = require("../../../state/modules/box-models");
47
47
  var import_useTableFormFieldRefs = require("../../hooks/useTableFormFieldRefs");
48
48
  var import_css = require("@emotion/css");
49
49
  var import_responsive_style = require("../../utils/responsive-style");
@@ -227,7 +227,7 @@ const Form = (0, import_react.forwardRef)(function Form2({
227
227
  return refEl instanceof Element ? refEl : null;
228
228
  },
229
229
  getBoxModel() {
230
- return refEl instanceof Element ? (0, import_box_model.getBox)(refEl) : null;
230
+ return refEl instanceof Element ? (0, import_box_models.getBox)(refEl) : null;
231
231
  },
232
232
  setPropControllers
233
233
  }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/builtin/Form/Form.tsx"],"sourcesContent":["'use client'\n\nimport {\n useState,\n useEffect,\n useRef,\n useMemo,\n forwardRef,\n ComponentPropsWithoutRef,\n Ref,\n useImperativeHandle,\n ForwardedRef,\n} from 'react'\nimport { Formik, getIn } from 'formik'\n\nimport { Check12 } from '../../icons/Check12'\n\nimport { getSizeHeight as getInputSizeHeight } from './components/Field/components/Input'\n\nimport {\n Size,\n Sizes,\n Provider as FormContextProvider,\n Shape,\n Contrast,\n Alignment,\n Alignments,\n} from './context/FormContext'\nimport Placeholder from './components/Placeholder'\nimport Field from './components/Field'\nimport Spinner from './components/Spinner'\nimport Button from '../Button'\nimport type { TableColumn } from './types'\nimport { Link } from '../../shared/Link'\nimport { BoxModelHandle, getBox } from '../../../box-model'\nimport { PropControllersHandle } from '../../../state/modules/prop-controller-handles'\nimport { DescriptorsPropControllers } from '../../../prop-controllers/instances'\nimport { useTableFormFieldRefs } from '../../hooks/useTableFormFieldRefs'\nimport { cx } from '@emotion/css'\nimport { useResponsiveGridItem, useResponsiveStyle } from '../../utils/responsive-style'\nimport { type ResponsiveColor } from '../../utils/types'\n\nimport { useMakeswiftHostApiClient } from '../../../runtimes/react/host-api-client'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useTable } from '../../../runtimes/react/hooks/makeswift-api'\nimport {\n type LinkData,\n type ResponsiveGapData,\n type ResponsiveLengthData,\n type ResponsiveIconRadioGroupValue,\n type ResponsiveTextStyleData,\n type ResponsiveSelectValue,\n type ResponsiveValue,\n type TableFormFieldsData,\n type TableFormFieldsDescriptor,\n} from '@makeswift/prop-controllers'\n\nconst LOCAL_STORAGE_NAMESPACE = '@@makeswift/components/form'\n\nfunction getSizeFontSize(size: Size): number {\n switch (size) {\n case Sizes.SMALL:\n return 12\n\n case Sizes.MEDIUM:\n return 14\n\n case Sizes.LARGE:\n return 18\n\n default:\n throw new Error(`Invalid form size \"${size}\"`)\n }\n}\n\ntype Props = {\n id?: string\n tableId?: string\n fields?: TableFormFieldsData\n submitLink?: LinkData\n gap?: ResponsiveGapData\n shape?: ResponsiveIconRadioGroupValue<Shape>\n size?: ResponsiveIconRadioGroupValue<Size>\n contrast?: ResponsiveIconRadioGroupValue<Contrast>\n labelTextStyle?: ResponsiveTextStyleData\n labelTextColor?: ResponsiveColor | null\n submitTextStyle?: ResponsiveTextStyleData\n brandColor?: ResponsiveColor | null\n submitTextColor?: ResponsiveColor | null\n submitLabel?: string\n submitVariant?: ResponsiveSelectValue<\n 'flat' | 'outline' | 'shadow' | 'clear' | 'blocky' | 'bubbly' | 'skewed'\n >\n submitWidth?: ResponsiveLengthData\n submitAlignment?: ResponsiveIconRadioGroupValue<Alignment>\n width?: string\n margin?: string\n}\n\ntype GridFormBaseProps = { size?: Props['size'] }\n\ntype GridFormProps = GridFormBaseProps &\n Omit<ComponentPropsWithoutRef<'form'>, keyof GridFormBaseProps>\n\nconst GridForm = forwardRef(function GridFrom(\n { className, size, ...restOfProps }: GridFormProps,\n ref: ForwardedRef<HTMLFormElement>,\n) {\n return (\n <form\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({ display: 'flex', flexWrap: 'wrap', width: '100%' }),\n useStyle(\n useResponsiveStyle([size] as const, ([size = Sizes.MEDIUM]) => ({\n fontSize: getSizeFontSize(size),\n })),\n ),\n className,\n )}\n />\n )\n})\n\ntype GridItemBaseProps = {\n grid: ResponsiveValue<{ spans: number[][]; count: number }>\n index: number\n rowGap: Props['gap']\n columnGap: Props['gap']\n}\n\ntype GridItemProps = GridItemBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof GridItemBaseProps>\n\nconst GridItem = forwardRef(function GridItem(\n { className, grid, index, rowGap, columnGap, ...restOfProps }: GridItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({ alignSelf: 'flex-end', flexDirection: 'column' }),\n useStyle(useResponsiveGridItem({ grid, index, rowGap, columnGap })),\n className,\n )}\n />\n )\n})\n\nfunction getAlignmentMargin(alignment: Alignment): string {\n switch (alignment) {\n case Alignments.LEFT:\n return '0 auto 0 0'\n case Alignments.RIGHT:\n return '0 0 0 auto'\n default:\n return '0 auto'\n }\n}\n\ntype StyledButtonBaseProps = { size?: Props['size']; alignment?: Props['submitAlignment'] }\n\ntype StyledButtonProps = StyledButtonBaseProps &\n Omit<ComponentPropsWithoutRef<typeof Button>, keyof StyledButtonBaseProps>\n\nfunction StyledButton({ className, size, alignment, ...restOfProps }: StyledButtonProps) {\n return (\n <Button\n {...restOfProps}\n as=\"button\"\n className={cx(\n useStyle({ display: 'flex', alignItems: 'center', justifyContent: 'center' }),\n useStyle(\n useResponsiveStyle(\n [size, alignment] as const,\n ([size = Sizes.MEDIUM, alignment = Alignments.CENTER]) => ({\n minHeight: getInputSizeHeight(size),\n maxHeight: getInputSizeHeight(size),\n margin: getAlignmentMargin(alignment),\n paddingTop: 0,\n paddingBottom: 0,\n }),\n ),\n ),\n className,\n )}\n />\n )\n}\n\nfunction ErrorContainer({ className, ...restOfProps }: ComponentPropsWithoutRef<'div'>) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n padding: '8px 16px',\n backgroundColor: '#f19eb9',\n borderRadius: 4,\n marginTop: 16,\n }),\n className,\n )}\n />\n )\n}\n\nfunction IconContainer({ className, ...restOfProps }: ComponentPropsWithoutRef<'div'>) {\n return <div {...restOfProps} className={cx(useStyle({ fill: 'currentColor' }), className)} />\n}\n\nfunction ErrorMessage({ className, ...restOfProps }: ComponentPropsWithoutRef<'p'>) {\n return (\n <p\n {...restOfProps}\n className={cx(\n useStyle({ fontSize: 12, margin: '8px 0', color: 'rgba(127, 0, 0, 0.95)' }),\n className,\n )}\n />\n )\n}\n\nfunction getTableColumnDefaultValue(tableColumn: TableColumn) {\n switch (tableColumn.__typename) {\n case 'CheckboxTableColumn':\n return false\n\n case 'MultipleSelectTableColumn':\n return []\n\n case 'SingleLineTextTableColumn':\n case 'LongTextTableColumn':\n case 'SingleSelectTableColumn':\n case 'PhoneNumberTableColumn':\n case 'EmailTableColumn':\n case 'URLTableColumn':\n case 'NumberTableColumn':\n default:\n return ''\n }\n}\n\ntype Column = { columnId: string; data: Record<string, any> }\ntype Fields = Record<string, string | string[] | boolean>\n\ntype Descriptors = { fields?: TableFormFieldsDescriptor }\n\nconst Form = forwardRef(function Form(\n {\n id,\n tableId,\n fields: fieldsProp,\n submitLabel = 'Submit',\n submitLink,\n shape,\n size,\n contrast,\n brandColor,\n gap,\n width,\n margin,\n submitTextStyle,\n submitVariant,\n submitTextColor,\n submitWidth,\n submitAlignment,\n labelTextStyle,\n labelTextColor,\n }: Props,\n ref: Ref<BoxModelHandle & PropControllersHandle<Descriptors>>,\n) {\n const fields = useMemo(() => fieldsProp?.fields ?? [], [fieldsProp])\n const grid = useMemo(() => fieldsProp?.grid ?? [], [fieldsProp])\n const table = useTable(tableId ?? null)\n const client = useMakeswiftHostApiClient()\n const [refEl, setRefEl] = useState<HTMLElement | null>(null)\n const [propControllers, setPropControllers] =\n useState<DescriptorsPropControllers<Descriptors> | null>(null)\n const [initialValues, setInitialValues] = useState<Fields>(() =>\n fields.reduce((acc, formField) => {\n const tableColumn = table && table.columns.find(field => field.id === formField.tableColumnId)\n const defaultValue = formField ? formField.defaultValue : null\n\n if (tableColumn) {\n acc[tableColumn.name] =\n defaultValue == null ? getTableColumnDefaultValue(tableColumn) : defaultValue\n }\n\n return acc\n }, {} as Fields),\n )\n const controller = propControllers?.fields\n const { container, items } = useTableFormFieldRefs(controller, { fieldsCount: fields.length })\n const [isDone, setIsDone] = useState(false)\n const linkRef = useRef<HTMLAnchorElement>(null)\n\n useImperativeHandle(\n ref,\n () => ({\n getDomNode() {\n return refEl instanceof Element ? refEl : null\n },\n getBoxModel() {\n return refEl instanceof Element ? getBox(refEl) : null\n },\n setPropControllers,\n }),\n [refEl, setPropControllers],\n )\n\n useEffect(() => {\n container(refEl)\n }, [container, refEl])\n\n useEffect(() => {\n if (!isDone) return\n\n let timeoutId = setTimeout(() => setIsDone(false), 2500)\n\n return () => clearTimeout(timeoutId)\n }, [isDone])\n\n function getTableColumn({ tableColumnId }: any) {\n return table && table.columns.find(field => tableColumnId === field.id)\n }\n\n async function handleSubmit(values: any, { setSubmitting, resetForm, setStatus }: any) {\n if (table) {\n const columns: Column[] = []\n\n fields.forEach(field => {\n const tableColumn = getTableColumn(field)\n\n if (tableColumn) {\n const data = values[tableColumn.name]\n\n if (data) {\n columns.push({ columnId: field.tableColumnId, data })\n\n if (field.autofill) {\n localStorage.setItem(\n `${LOCAL_STORAGE_NAMESPACE}/${tableColumn.name}`,\n JSON.stringify(data),\n )\n }\n }\n }\n })\n\n try {\n await client.createTableRecord(table.id, columns)\n setIsDone(true)\n setInitialValues(prev =>\n fields.reduce(\n (acc, field) => {\n const tableColumn = getTableColumn(field)\n\n if (tableColumn) {\n const data = values[tableColumn.name]\n\n if (data && field.autofill) return { ...acc, [tableColumn.name]: data }\n }\n\n return acc\n },\n { ...prev },\n ),\n )\n resetForm()\n\n if (linkRef.current != null) linkRef.current.click()\n } catch (error) {\n setStatus({ error: 'An unexpected error has occurred, please try again later' })\n } finally {\n setSubmitting(false)\n }\n }\n }\n\n useEffect(() => {\n setInitialValues(prev =>\n fields.reduce(\n (acc, formField) => {\n const tableColumn =\n table && table.columns.find(field => field.id === formField.tableColumnId)\n\n if (tableColumn && formField.autofill) {\n const storedValue = localStorage.getItem(\n `${LOCAL_STORAGE_NAMESPACE}/${tableColumn.name}`,\n )\n\n if (storedValue) {\n try {\n acc[tableColumn.name] = JSON.parse(storedValue)\n } catch (e) {\n // Ignore\n }\n }\n }\n\n return acc\n },\n { ...prev },\n ),\n )\n }, [fields, table])\n\n return (\n <FormContextProvider\n value={{ shape, size, contrast, brandColor, labelTextStyle, labelTextColor }}\n >\n {tableId == null ? (\n <Placeholder ref={setRefEl} width={width} margin={margin} />\n ) : (\n <>\n <Formik\n onSubmit={handleSubmit}\n initialValues={initialValues}\n initialStatus={{ error: null }}\n enableReinitialize\n >\n {formik => {\n const error = formik.status && formik.status.error\n const errors = fields\n .map(field => {\n const tableColumn = getTableColumn(field)\n\n return (\n tableColumn &&\n getIn(formik.touched, tableColumn.name) &&\n getIn(formik.errors, tableColumn.name)\n )\n })\n .filter(message => typeof message === 'string')\n\n return (\n <>\n <GridForm\n ref={setRefEl}\n id={id}\n className={cx(width, margin)}\n size={size}\n onSubmit={formik.handleSubmit}\n onReset={formik.handleReset}\n noValidate\n >\n {fields.map((field, index) => {\n const tableColumn = getTableColumn(field)\n\n return (\n <GridItem\n key={field.id}\n ref={items[index]}\n grid={grid}\n index={index}\n rowGap={gap}\n columnGap={gap}\n >\n <Field tableColumn={tableColumn} tableFormField={field} />\n </GridItem>\n )\n })}\n <GridItem\n ref={items[fields.length]}\n grid={grid}\n index={fields.length}\n rowGap={gap}\n columnGap={gap}\n >\n <StyledButton\n type=\"submit\"\n // @ts-ignore: `disabled` is in `'button'` but not in `T`.\n disabled={formik.isSubmitting || isDone}\n shape={shape}\n size={size}\n color={brandColor}\n variant={submitVariant}\n textColor={submitTextColor}\n width={submitWidth}\n alignment={submitAlignment}\n textStyle={submitTextStyle}\n >\n {formik.isSubmitting ? (\n <Spinner />\n ) : isDone ? (\n <IconContainer>\n <Check12 />\n </IconContainer>\n ) : (\n submitLabel\n )}\n </StyledButton>\n {(errors.length > 0 || error) && (\n <ErrorContainer>\n {errors.map(message => (\n <ErrorMessage key={message}>{message}</ErrorMessage>\n ))}\n {error != null && <ErrorMessage>{error}</ErrorMessage>}\n </ErrorContainer>\n )}\n </GridItem>\n </GridForm>\n {submitLink != null && <Link ref={linkRef} hidden link={submitLink} />}\n </>\n )\n }}\n </Formik>\n </>\n )}\n </FormContextProvider>\n )\n})\n\nexport default Form\n"],"mappings":"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","names":["size","GridItem","Button","alignment","getInputSizeHeight","Form","FormContextProvider","Placeholder","Field","Spinner"]}
1
+ {"version":3,"sources":["../../../../../src/components/builtin/Form/Form.tsx"],"sourcesContent":["'use client'\n\nimport {\n useState,\n useEffect,\n useRef,\n useMemo,\n forwardRef,\n ComponentPropsWithoutRef,\n Ref,\n useImperativeHandle,\n ForwardedRef,\n} from 'react'\nimport { Formik, getIn } from 'formik'\n\nimport { Check12 } from '../../icons/Check12'\n\nimport { getSizeHeight as getInputSizeHeight } from './components/Field/components/Input'\n\nimport {\n Size,\n Sizes,\n Provider as FormContextProvider,\n Shape,\n Contrast,\n Alignment,\n Alignments,\n} from './context/FormContext'\nimport Placeholder from './components/Placeholder'\nimport Field from './components/Field'\nimport Spinner from './components/Spinner'\nimport Button from '../Button'\nimport type { TableColumn } from './types'\nimport { Link } from '../../shared/Link'\nimport { getBox, type BoxModelHandle } from '../../../state/modules/box-models'\nimport { PropControllersHandle } from '../../../state/modules/prop-controller-handles'\nimport { DescriptorsPropControllers } from '../../../prop-controllers/instances'\nimport { useTableFormFieldRefs } from '../../hooks/useTableFormFieldRefs'\nimport { cx } from '@emotion/css'\nimport { useResponsiveGridItem, useResponsiveStyle } from '../../utils/responsive-style'\nimport { type ResponsiveColor } from '../../utils/types'\n\nimport { useMakeswiftHostApiClient } from '../../../runtimes/react/host-api-client'\nimport { useStyle } from '../../../runtimes/react/use-style'\nimport { useTable } from '../../../runtimes/react/hooks/makeswift-api'\nimport {\n type LinkData,\n type ResponsiveGapData,\n type ResponsiveLengthData,\n type ResponsiveIconRadioGroupValue,\n type ResponsiveTextStyleData,\n type ResponsiveSelectValue,\n type ResponsiveValue,\n type TableFormFieldsData,\n type TableFormFieldsDescriptor,\n} from '@makeswift/prop-controllers'\n\nconst LOCAL_STORAGE_NAMESPACE = '@@makeswift/components/form'\n\nfunction getSizeFontSize(size: Size): number {\n switch (size) {\n case Sizes.SMALL:\n return 12\n\n case Sizes.MEDIUM:\n return 14\n\n case Sizes.LARGE:\n return 18\n\n default:\n throw new Error(`Invalid form size \"${size}\"`)\n }\n}\n\ntype Props = {\n id?: string\n tableId?: string\n fields?: TableFormFieldsData\n submitLink?: LinkData\n gap?: ResponsiveGapData\n shape?: ResponsiveIconRadioGroupValue<Shape>\n size?: ResponsiveIconRadioGroupValue<Size>\n contrast?: ResponsiveIconRadioGroupValue<Contrast>\n labelTextStyle?: ResponsiveTextStyleData\n labelTextColor?: ResponsiveColor | null\n submitTextStyle?: ResponsiveTextStyleData\n brandColor?: ResponsiveColor | null\n submitTextColor?: ResponsiveColor | null\n submitLabel?: string\n submitVariant?: ResponsiveSelectValue<\n 'flat' | 'outline' | 'shadow' | 'clear' | 'blocky' | 'bubbly' | 'skewed'\n >\n submitWidth?: ResponsiveLengthData\n submitAlignment?: ResponsiveIconRadioGroupValue<Alignment>\n width?: string\n margin?: string\n}\n\ntype GridFormBaseProps = { size?: Props['size'] }\n\ntype GridFormProps = GridFormBaseProps &\n Omit<ComponentPropsWithoutRef<'form'>, keyof GridFormBaseProps>\n\nconst GridForm = forwardRef(function GridFrom(\n { className, size, ...restOfProps }: GridFormProps,\n ref: ForwardedRef<HTMLFormElement>,\n) {\n return (\n <form\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({ display: 'flex', flexWrap: 'wrap', width: '100%' }),\n useStyle(\n useResponsiveStyle([size] as const, ([size = Sizes.MEDIUM]) => ({\n fontSize: getSizeFontSize(size),\n })),\n ),\n className,\n )}\n />\n )\n})\n\ntype GridItemBaseProps = {\n grid: ResponsiveValue<{ spans: number[][]; count: number }>\n index: number\n rowGap: Props['gap']\n columnGap: Props['gap']\n}\n\ntype GridItemProps = GridItemBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof GridItemBaseProps>\n\nconst GridItem = forwardRef(function GridItem(\n { className, grid, index, rowGap, columnGap, ...restOfProps }: GridItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({ alignSelf: 'flex-end', flexDirection: 'column' }),\n useStyle(useResponsiveGridItem({ grid, index, rowGap, columnGap })),\n className,\n )}\n />\n )\n})\n\nfunction getAlignmentMargin(alignment: Alignment): string {\n switch (alignment) {\n case Alignments.LEFT:\n return '0 auto 0 0'\n case Alignments.RIGHT:\n return '0 0 0 auto'\n default:\n return '0 auto'\n }\n}\n\ntype StyledButtonBaseProps = { size?: Props['size']; alignment?: Props['submitAlignment'] }\n\ntype StyledButtonProps = StyledButtonBaseProps &\n Omit<ComponentPropsWithoutRef<typeof Button>, keyof StyledButtonBaseProps>\n\nfunction StyledButton({ className, size, alignment, ...restOfProps }: StyledButtonProps) {\n return (\n <Button\n {...restOfProps}\n as=\"button\"\n className={cx(\n useStyle({ display: 'flex', alignItems: 'center', justifyContent: 'center' }),\n useStyle(\n useResponsiveStyle(\n [size, alignment] as const,\n ([size = Sizes.MEDIUM, alignment = Alignments.CENTER]) => ({\n minHeight: getInputSizeHeight(size),\n maxHeight: getInputSizeHeight(size),\n margin: getAlignmentMargin(alignment),\n paddingTop: 0,\n paddingBottom: 0,\n }),\n ),\n ),\n className,\n )}\n />\n )\n}\n\nfunction ErrorContainer({ className, ...restOfProps }: ComponentPropsWithoutRef<'div'>) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n padding: '8px 16px',\n backgroundColor: '#f19eb9',\n borderRadius: 4,\n marginTop: 16,\n }),\n className,\n )}\n />\n )\n}\n\nfunction IconContainer({ className, ...restOfProps }: ComponentPropsWithoutRef<'div'>) {\n return <div {...restOfProps} className={cx(useStyle({ fill: 'currentColor' }), className)} />\n}\n\nfunction ErrorMessage({ className, ...restOfProps }: ComponentPropsWithoutRef<'p'>) {\n return (\n <p\n {...restOfProps}\n className={cx(\n useStyle({ fontSize: 12, margin: '8px 0', color: 'rgba(127, 0, 0, 0.95)' }),\n className,\n )}\n />\n )\n}\n\nfunction getTableColumnDefaultValue(tableColumn: TableColumn) {\n switch (tableColumn.__typename) {\n case 'CheckboxTableColumn':\n return false\n\n case 'MultipleSelectTableColumn':\n return []\n\n case 'SingleLineTextTableColumn':\n case 'LongTextTableColumn':\n case 'SingleSelectTableColumn':\n case 'PhoneNumberTableColumn':\n case 'EmailTableColumn':\n case 'URLTableColumn':\n case 'NumberTableColumn':\n default:\n return ''\n }\n}\n\ntype Column = { columnId: string; data: Record<string, any> }\ntype Fields = Record<string, string | string[] | boolean>\n\ntype Descriptors = { fields?: TableFormFieldsDescriptor }\n\nconst Form = forwardRef(function Form(\n {\n id,\n tableId,\n fields: fieldsProp,\n submitLabel = 'Submit',\n submitLink,\n shape,\n size,\n contrast,\n brandColor,\n gap,\n width,\n margin,\n submitTextStyle,\n submitVariant,\n submitTextColor,\n submitWidth,\n submitAlignment,\n labelTextStyle,\n labelTextColor,\n }: Props,\n ref: Ref<BoxModelHandle & PropControllersHandle<Descriptors>>,\n) {\n const fields = useMemo(() => fieldsProp?.fields ?? [], [fieldsProp])\n const grid = useMemo(() => fieldsProp?.grid ?? [], [fieldsProp])\n const table = useTable(tableId ?? null)\n const client = useMakeswiftHostApiClient()\n const [refEl, setRefEl] = useState<HTMLElement | null>(null)\n const [propControllers, setPropControllers] =\n useState<DescriptorsPropControllers<Descriptors> | null>(null)\n const [initialValues, setInitialValues] = useState<Fields>(() =>\n fields.reduce((acc, formField) => {\n const tableColumn = table && table.columns.find(field => field.id === formField.tableColumnId)\n const defaultValue = formField ? formField.defaultValue : null\n\n if (tableColumn) {\n acc[tableColumn.name] =\n defaultValue == null ? getTableColumnDefaultValue(tableColumn) : defaultValue\n }\n\n return acc\n }, {} as Fields),\n )\n const controller = propControllers?.fields\n const { container, items } = useTableFormFieldRefs(controller, { fieldsCount: fields.length })\n const [isDone, setIsDone] = useState(false)\n const linkRef = useRef<HTMLAnchorElement>(null)\n\n useImperativeHandle(\n ref,\n () => ({\n getDomNode() {\n return refEl instanceof Element ? refEl : null\n },\n getBoxModel() {\n return refEl instanceof Element ? getBox(refEl) : null\n },\n setPropControllers,\n }),\n [refEl, setPropControllers],\n )\n\n useEffect(() => {\n container(refEl)\n }, [container, refEl])\n\n useEffect(() => {\n if (!isDone) return\n\n let timeoutId = setTimeout(() => setIsDone(false), 2500)\n\n return () => clearTimeout(timeoutId)\n }, [isDone])\n\n function getTableColumn({ tableColumnId }: any) {\n return table && table.columns.find(field => tableColumnId === field.id)\n }\n\n async function handleSubmit(values: any, { setSubmitting, resetForm, setStatus }: any) {\n if (table) {\n const columns: Column[] = []\n\n fields.forEach(field => {\n const tableColumn = getTableColumn(field)\n\n if (tableColumn) {\n const data = values[tableColumn.name]\n\n if (data) {\n columns.push({ columnId: field.tableColumnId, data })\n\n if (field.autofill) {\n localStorage.setItem(\n `${LOCAL_STORAGE_NAMESPACE}/${tableColumn.name}`,\n JSON.stringify(data),\n )\n }\n }\n }\n })\n\n try {\n await client.createTableRecord(table.id, columns)\n setIsDone(true)\n setInitialValues(prev =>\n fields.reduce(\n (acc, field) => {\n const tableColumn = getTableColumn(field)\n\n if (tableColumn) {\n const data = values[tableColumn.name]\n\n if (data && field.autofill) return { ...acc, [tableColumn.name]: data }\n }\n\n return acc\n },\n { ...prev },\n ),\n )\n resetForm()\n\n if (linkRef.current != null) linkRef.current.click()\n } catch (error) {\n setStatus({ error: 'An unexpected error has occurred, please try again later' })\n } finally {\n setSubmitting(false)\n }\n }\n }\n\n useEffect(() => {\n setInitialValues(prev =>\n fields.reduce(\n (acc, formField) => {\n const tableColumn =\n table && table.columns.find(field => field.id === formField.tableColumnId)\n\n if (tableColumn && formField.autofill) {\n const storedValue = localStorage.getItem(\n `${LOCAL_STORAGE_NAMESPACE}/${tableColumn.name}`,\n )\n\n if (storedValue) {\n try {\n acc[tableColumn.name] = JSON.parse(storedValue)\n } catch (e) {\n // Ignore\n }\n }\n }\n\n return acc\n },\n { ...prev },\n ),\n )\n }, [fields, table])\n\n return (\n <FormContextProvider\n value={{ shape, size, contrast, brandColor, labelTextStyle, labelTextColor }}\n >\n {tableId == null ? (\n <Placeholder ref={setRefEl} width={width} margin={margin} />\n ) : (\n <>\n <Formik\n onSubmit={handleSubmit}\n initialValues={initialValues}\n initialStatus={{ error: null }}\n enableReinitialize\n >\n {formik => {\n const error = formik.status && formik.status.error\n const errors = fields\n .map(field => {\n const tableColumn = getTableColumn(field)\n\n return (\n tableColumn &&\n getIn(formik.touched, tableColumn.name) &&\n getIn(formik.errors, tableColumn.name)\n )\n })\n .filter(message => typeof message === 'string')\n\n return (\n <>\n <GridForm\n ref={setRefEl}\n id={id}\n className={cx(width, margin)}\n size={size}\n onSubmit={formik.handleSubmit}\n onReset={formik.handleReset}\n noValidate\n >\n {fields.map((field, index) => {\n const tableColumn = getTableColumn(field)\n\n return (\n <GridItem\n key={field.id}\n ref={items[index]}\n grid={grid}\n index={index}\n rowGap={gap}\n columnGap={gap}\n >\n <Field tableColumn={tableColumn} tableFormField={field} />\n </GridItem>\n )\n })}\n <GridItem\n ref={items[fields.length]}\n grid={grid}\n index={fields.length}\n rowGap={gap}\n columnGap={gap}\n >\n <StyledButton\n type=\"submit\"\n // @ts-ignore: `disabled` is in `'button'` but not in `T`.\n disabled={formik.isSubmitting || isDone}\n shape={shape}\n size={size}\n color={brandColor}\n variant={submitVariant}\n textColor={submitTextColor}\n width={submitWidth}\n alignment={submitAlignment}\n textStyle={submitTextStyle}\n >\n {formik.isSubmitting ? (\n <Spinner />\n ) : isDone ? (\n <IconContainer>\n <Check12 />\n </IconContainer>\n ) : (\n submitLabel\n )}\n </StyledButton>\n {(errors.length > 0 || error) && (\n <ErrorContainer>\n {errors.map(message => (\n <ErrorMessage key={message}>{message}</ErrorMessage>\n ))}\n {error != null && <ErrorMessage>{error}</ErrorMessage>}\n </ErrorContainer>\n )}\n </GridItem>\n </GridForm>\n {submitLink != null && <Link ref={linkRef} hidden link={submitLink} />}\n </>\n )\n }}\n </Formik>\n </>\n )}\n </FormContextProvider>\n )\n})\n\nexport default Form\n"],"mappings":"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","names":["size","GridItem","Button","alignment","getInputSizeHeight","Form","FormContextProvider","Placeholder","Field","Spinner"]}
@@ -25,12 +25,12 @@ var import_react = require("react");
25
25
  var import_isNonNullable = require("../utils/isNonNullable");
26
26
  var import_makeswift_api = require("../../runtimes/react/hooks/makeswift-api");
27
27
  var import_ts_pattern = require("ts-pattern");
28
- var import_prop_controllers2 = require("@makeswift/prop-controllers");
28
+ var import_prop_controllers = require("@makeswift/prop-controllers");
29
29
  function useBackgrounds(data) {
30
- const value = (0, import_prop_controllers2.getBackgroundsPropControllerDataResponsiveBackgroundsData)(data);
31
- const fileIds = (0, import_prop_controllers2.getBackgroundsPropControllerFileIds)(data);
30
+ const value = (0, import_prop_controllers.getBackgroundsPropControllerDataResponsiveBackgroundsData)(data);
31
+ const fileIds = (0, import_prop_controllers.getBackgroundsPropControllerFileIds)(data);
32
32
  const files = (0, import_makeswift_api.useFiles)(fileIds);
33
- const swatchIds = (0, import_prop_controllers2.getBackgroundsPropControllerSwatchIds)(data);
33
+ const swatchIds = (0, import_prop_controllers.getBackgroundsPropControllerSwatchIds)(data);
34
34
  const swatches = (0, import_makeswift_api.useSwatches)(swatchIds);
35
35
  return (0, import_react.useMemo)(() => {
36
36
  if (value == null)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/hooks/useBackgrounds.ts"],"sourcesContent":["import { useMemo } from 'react'\n\nimport { ColorValue as Color } from '../utils/types'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport { isNonNullable } from '../utils/isNonNullable'\nimport { useFiles, useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport { match, P } from 'ts-pattern'\nimport {\n ResponsiveBackgroundsData,\n getBackgroundsPropControllerDataResponsiveBackgroundsData,\n getBackgroundsPropControllerFileIds,\n getBackgroundsPropControllerSwatchIds,\n} from '@makeswift/prop-controllers'\n\ntype BackgroundColorData = Color\n\ntype BackgroundGradientStopData = {\n id: string\n location: number\n color: Color | null | undefined\n}\n\ntype BackgroundGradientData = {\n angle?: number\n isRadial?: boolean\n stops: Array<BackgroundGradientStopData>\n}\n\ntype BackgroundImageData = {\n publicUrl?: string\n dimensions?: { width: number; height: number } | null\n position: {\n x: number\n y: number\n }\n size?: 'cover' | 'contain' | 'auto'\n repeat?: 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat'\n opacity?: number\n parallax?: number\n}\n\ntype BackgroundVideoData = {\n url?: string\n maskColor: Color | null | undefined\n aspectRatio?: 'wide' | 'standard'\n opacity?: number\n zoom?: number\n parallax?: number\n}\n\ntype BackgroundData =\n | { id: string; type: 'color'; payload: BackgroundColorData | null | undefined }\n | { id: string; type: 'image'; payload: BackgroundImageData | null | undefined }\n | { id: string; type: 'gradient'; payload: BackgroundGradientData | null | undefined }\n | { id: string; type: 'video'; payload: BackgroundVideoData | null | undefined }\n\nexport type BackgroundsData = Array<BackgroundData>\n\nexport type BackgroundsPropControllerValue = ResponsiveValue<BackgroundsData>\n\nexport function useBackgrounds(\n data: ResponsiveBackgroundsData | undefined,\n): BackgroundsPropControllerValue | undefined {\n const value = getBackgroundsPropControllerDataResponsiveBackgroundsData(data)\n const fileIds = getBackgroundsPropControllerFileIds(data)\n const files = useFiles(fileIds)\n const swatchIds = getBackgroundsPropControllerSwatchIds(data)\n const swatches = useSwatches(swatchIds)\n\n return useMemo(() => {\n if (value == null) return undefined\n\n return value.map(({ value: backgrounds, ...restOfValue }) => ({\n ...restOfValue,\n value: backgrounds\n .map((bg): BackgroundData | null | undefined => {\n if (bg.type === 'image' && bg.payload != null) {\n const { imageId, ...restOfPayload } = bg.payload\n const file = files.find(f => f && f.id === imageId)\n return (\n file && {\n ...bg,\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n }\n\n if (bg.type === 'image-v1' && bg.payload != null) {\n return match(bg)\n .with(\n {\n payload: { image: { type: 'external-file', width: P.number, height: P.number } },\n },\n val => {\n const { image, version, ...restOfPayload } = val.payload\n return {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: image.url,\n dimensions: { width: image.width, height: image.height },\n },\n }\n },\n )\n .with({ payload: { image: { type: 'external-file' } } }, val => {\n const { image, version, ...restOfPayload } = val.payload\n return {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: image.url,\n dimensions: null,\n },\n }\n })\n .with({ payload: { image: { type: 'makeswift-file' } } }, val => {\n const { image, version, ...restOfPayload } = val.payload\n const file = files.find(f => f && f.id === image.id)\n return (\n file && {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n })\n .otherwise(() => null)\n }\n\n if (bg.type === 'color' && bg.payload != null) {\n const { swatchId, alpha } = bg.payload\n const swatch = swatches.filter(isNonNullable).find(s => s && s.id === swatchId)\n\n return { id: bg.id, type: 'color', payload: { swatch, alpha } }\n }\n\n if (bg.type === 'gradient' && bg.payload != null && bg.payload.stops.length > 0) {\n return {\n id: bg.id,\n type: 'gradient',\n payload: {\n angle: bg.payload.angle,\n isRadial: bg.payload.isRadial,\n stops: bg.payload.stops.map(({ color, ...restOfStop }) => ({\n ...restOfStop,\n color: color && {\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n alpha: color.alpha,\n },\n })),\n },\n }\n }\n\n if (bg.type === 'video' && bg.payload != null) {\n const { maskColor, ...restOfPayload } = bg.payload\n const swatch = maskColor && swatches.find(s => s && s.id === maskColor.swatchId)\n\n return {\n id: bg.id,\n type: 'video',\n payload: {\n ...restOfPayload,\n maskColor: swatch && maskColor && { swatch, alpha: maskColor.alpha },\n },\n }\n }\n\n return null\n })\n .filter(isNonNullable),\n }))\n }, [files, swatches, value])\n}\n"],"mappings":"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","names":["import_prop_controllers"]}
1
+ {"version":3,"sources":["../../../../src/components/hooks/useBackgrounds.ts"],"sourcesContent":["import { useMemo } from 'react'\n\nimport { ColorValue as Color } from '../utils/types'\nimport { type ResponsiveValue } from '@makeswift/controls'\nimport { isNonNullable } from '../utils/isNonNullable'\nimport { useFiles, useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport { match, P } from 'ts-pattern'\nimport {\n ResponsiveBackgroundsData,\n getBackgroundsPropControllerDataResponsiveBackgroundsData,\n getBackgroundsPropControllerFileIds,\n getBackgroundsPropControllerSwatchIds,\n} from '@makeswift/prop-controllers'\n\ntype BackgroundColorData = Color\n\ntype BackgroundGradientStopData = {\n id: string\n location: number\n color: Color | null | undefined\n}\n\ntype BackgroundGradientData = {\n angle?: number\n isRadial?: boolean\n stops: Array<BackgroundGradientStopData>\n}\n\ntype BackgroundImageData = {\n publicUrl?: string\n dimensions?: { width: number; height: number } | null\n position: {\n x: number\n y: number\n }\n size?: 'cover' | 'contain' | 'auto'\n repeat?: 'no-repeat' | 'repeat-x' | 'repeat-y' | 'repeat'\n opacity?: number\n parallax?: number\n}\n\ntype BackgroundVideoData = {\n url?: string\n maskColor: Color | null | undefined\n aspectRatio?: 'wide' | 'standard'\n opacity?: number\n zoom?: number\n parallax?: number\n}\n\ntype BackgroundData =\n | { id: string; type: 'color'; payload: BackgroundColorData | null | undefined }\n | { id: string; type: 'image'; payload: BackgroundImageData | null | undefined }\n | { id: string; type: 'gradient'; payload: BackgroundGradientData | null | undefined }\n | { id: string; type: 'video'; payload: BackgroundVideoData | null | undefined }\n\nexport type BackgroundsData = Array<BackgroundData>\n\nexport type BackgroundsPropControllerValue = ResponsiveValue<BackgroundsData>\n\nexport function useBackgrounds(\n data: ResponsiveBackgroundsData | undefined,\n): BackgroundsPropControllerValue | undefined {\n const value = getBackgroundsPropControllerDataResponsiveBackgroundsData(data)\n const fileIds = getBackgroundsPropControllerFileIds(data)\n const files = useFiles(fileIds)\n const swatchIds = getBackgroundsPropControllerSwatchIds(data)\n const swatches = useSwatches(swatchIds)\n\n return useMemo(() => {\n if (value == null) return undefined\n\n return value.map(({ value: backgrounds, ...restOfValue }) => ({\n ...restOfValue,\n value: backgrounds\n .map((bg): BackgroundData | null | undefined => {\n if (bg.type === 'image' && bg.payload != null) {\n const { imageId, ...restOfPayload } = bg.payload\n const file = files.find(f => f && f.id === imageId)\n return (\n file && {\n ...bg,\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n }\n\n if (bg.type === 'image-v1' && bg.payload != null) {\n return match(bg)\n .with(\n {\n payload: { image: { type: 'external-file', width: P.number, height: P.number } },\n },\n val => {\n const { image, version, ...restOfPayload } = val.payload\n return {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: image.url,\n dimensions: { width: image.width, height: image.height },\n },\n }\n },\n )\n .with({ payload: { image: { type: 'external-file' } } }, val => {\n const { image, version, ...restOfPayload } = val.payload\n return {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: image.url,\n dimensions: null,\n },\n }\n })\n .with({ payload: { image: { type: 'makeswift-file' } } }, val => {\n const { image, version, ...restOfPayload } = val.payload\n const file = files.find(f => f && f.id === image.id)\n return (\n file && {\n ...val,\n type: 'image' as const,\n payload: {\n ...restOfPayload,\n publicUrl: file.publicUrl,\n dimensions: file.dimensions,\n },\n }\n )\n })\n .otherwise(() => null)\n }\n\n if (bg.type === 'color' && bg.payload != null) {\n const { swatchId, alpha } = bg.payload\n const swatch = swatches.filter(isNonNullable).find(s => s && s.id === swatchId)\n\n return { id: bg.id, type: 'color', payload: { swatch, alpha } }\n }\n\n if (bg.type === 'gradient' && bg.payload != null && bg.payload.stops.length > 0) {\n return {\n id: bg.id,\n type: 'gradient',\n payload: {\n angle: bg.payload.angle,\n isRadial: bg.payload.isRadial,\n stops: bg.payload.stops.map(({ color, ...restOfStop }) => ({\n ...restOfStop,\n color: color && {\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n alpha: color.alpha,\n },\n })),\n },\n }\n }\n\n if (bg.type === 'video' && bg.payload != null) {\n const { maskColor, ...restOfPayload } = bg.payload\n const swatch = maskColor && swatches.find(s => s && s.id === maskColor.swatchId)\n\n return {\n id: bg.id,\n type: 'video',\n payload: {\n ...restOfPayload,\n maskColor: swatch && maskColor && { swatch, alpha: maskColor.alpha },\n },\n }\n }\n\n return null\n })\n .filter(isNonNullable),\n }))\n }, [files, swatches, value])\n}\n"],"mappings":"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","names":[]}
@@ -21,7 +21,7 @@ __export(useBorder_exports, {
21
21
  useBorder: () => useBorder
22
22
  });
23
23
  module.exports = __toCommonJS(useBorder_exports);
24
- var import_prop_controllers2 = require("@makeswift/prop-controllers");
24
+ var import_prop_controllers = require("@makeswift/prop-controllers");
25
25
  var import_makeswift_api = require("../../runtimes/react/hooks/makeswift-api");
26
26
  var import_isNonNullable = require("../utils/isNonNullable");
27
27
  function mapSideColor(swatches, { color, ...restOfSide }) {
@@ -34,7 +34,7 @@ function mapSideColor(swatches, { color, ...restOfSide }) {
34
34
  };
35
35
  }
36
36
  function useBorder(value) {
37
- const swatchIds = (0, import_prop_controllers2.getBorderPropControllerDataSwatchIds)(value);
37
+ const swatchIds = (0, import_prop_controllers.getBorderPropControllerDataSwatchIds)(value);
38
38
  const swatches = (0, import_makeswift_api.useSwatches)(swatchIds);
39
39
  if (value == null)
40
40
  return void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/hooks/useBorder.ts"],"sourcesContent":["import { BorderStyleProperty } from 'csstype'\n\nimport type { ColorValue as Color } from '../utils/types'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport {\n ResponsiveBorderData,\n BorderSideData,\n getBorderPropControllerDataSwatchIds,\n} from '@makeswift/prop-controllers'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport { Swatch } from '../../api'\nimport { isNonNullable } from '../utils/isNonNullable'\n\nfunction mapSideColor(swatches: (Swatch | null)[], { color, ...restOfSide }: BorderSideData) {\n return {\n ...restOfSide,\n color: color && {\n alpha: color.alpha,\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n },\n }\n}\n\nexport type BorderSide = {\n width: number | null | undefined\n style: BorderStyleProperty\n color: Color | null | undefined\n}\n\ntype BorderData = {\n borderTop: BorderSide | null | undefined\n borderRight: BorderSide | null | undefined\n borderBottom: BorderSide | null | undefined\n borderLeft: BorderSide | null | undefined\n}\n\nexport type BorderPropControllerData = ResponsiveValue<BorderData>\n\nexport function useBorder(\n value: ResponsiveBorderData | undefined,\n): BorderPropControllerData | undefined {\n const swatchIds = getBorderPropControllerDataSwatchIds(value)\n const swatches = useSwatches(swatchIds)\n\n if (value == null) return undefined\n\n return value.map(({ value: { borderTop, borderBottom, borderLeft, borderRight }, ...rest }) => ({\n ...rest,\n value: {\n borderTop: borderTop && mapSideColor(swatches, borderTop),\n borderBottom: borderBottom && mapSideColor(swatches, borderBottom),\n borderLeft: borderLeft && mapSideColor(swatches, borderLeft),\n borderRight: borderRight && mapSideColor(swatches, borderRight),\n },\n }))\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAAA,2BAIO;AACP,2BAA4B;AAE5B,2BAA8B;AAE9B,SAAS,aAAa,UAA6B,EAAE,OAAO,GAAG,WAAW,GAAmB;AAC3F,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,SAAS;AAAA,MACd,OAAO,MAAM;AAAA,MACb,QAAQ,SAAS,OAAO,kCAAa,EAAE,KAAK,OAAK,KAAK,EAAE,OAAO,MAAM,QAAQ;AAAA,IAC/E;AAAA,EACF;AACF;AAiBO,SAAS,UACd,OACsC;AACtC,QAAM,gBAAY,+DAAqC,KAAK;AAC5D,QAAM,eAAW,kCAAY,SAAS;AAEtC,MAAI,SAAS;AAAM,WAAO;AAE1B,SAAO,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,cAAc,YAAY,YAAY,GAAG,GAAG,KAAK,OAAO;AAAA,IAC9F,GAAG;AAAA,IACH,OAAO;AAAA,MACL,WAAW,aAAa,aAAa,UAAU,SAAS;AAAA,MACxD,cAAc,gBAAgB,aAAa,UAAU,YAAY;AAAA,MACjE,YAAY,cAAc,aAAa,UAAU,UAAU;AAAA,MAC3D,aAAa,eAAe,aAAa,UAAU,WAAW;AAAA,IAChE;AAAA,EACF,EAAE;AACJ;","names":["import_prop_controllers"]}
1
+ {"version":3,"sources":["../../../../src/components/hooks/useBorder.ts"],"sourcesContent":["import { BorderStyleProperty } from 'csstype'\n\nimport type { ColorValue as Color } from '../utils/types'\nimport { type ResponsiveValue } from '@makeswift/controls'\nimport {\n ResponsiveBorderData,\n BorderSideData,\n getBorderPropControllerDataSwatchIds,\n} from '@makeswift/prop-controllers'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport { Swatch } from '../../api'\nimport { isNonNullable } from '../utils/isNonNullable'\n\nfunction mapSideColor(swatches: (Swatch | null)[], { color, ...restOfSide }: BorderSideData) {\n return {\n ...restOfSide,\n color: color && {\n alpha: color.alpha,\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n },\n }\n}\n\nexport type BorderSide = {\n width: number | null | undefined\n style: BorderStyleProperty\n color: Color | null | undefined\n}\n\ntype BorderData = {\n borderTop: BorderSide | null | undefined\n borderRight: BorderSide | null | undefined\n borderBottom: BorderSide | null | undefined\n borderLeft: BorderSide | null | undefined\n}\n\nexport type BorderPropControllerData = ResponsiveValue<BorderData>\n\nexport function useBorder(\n value: ResponsiveBorderData | undefined,\n): BorderPropControllerData | undefined {\n const swatchIds = getBorderPropControllerDataSwatchIds(value)\n const swatches = useSwatches(swatchIds)\n\n if (value == null) return undefined\n\n return value.map(({ value: { borderTop, borderBottom, borderLeft, borderRight }, ...rest }) => ({\n ...rest,\n value: {\n borderTop: borderTop && mapSideColor(swatches, borderTop),\n borderBottom: borderBottom && mapSideColor(swatches, borderBottom),\n borderLeft: borderLeft && mapSideColor(swatches, borderLeft),\n borderRight: borderRight && mapSideColor(swatches, borderRight),\n },\n }))\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,8BAIO;AACP,2BAA4B;AAE5B,2BAA8B;AAE9B,SAAS,aAAa,UAA6B,EAAE,OAAO,GAAG,WAAW,GAAmB;AAC3F,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,SAAS;AAAA,MACd,OAAO,MAAM;AAAA,MACb,QAAQ,SAAS,OAAO,kCAAa,EAAE,KAAK,OAAK,KAAK,EAAE,OAAO,MAAM,QAAQ;AAAA,IAC/E;AAAA,EACF;AACF;AAiBO,SAAS,UACd,OACsC;AACtC,QAAM,gBAAY,8DAAqC,KAAK;AAC5D,QAAM,eAAW,kCAAY,SAAS;AAEtC,MAAI,SAAS;AAAM,WAAO;AAE1B,SAAO,MAAM,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,cAAc,YAAY,YAAY,GAAG,GAAG,KAAK,OAAO;AAAA,IAC9F,GAAG;AAAA,IACH,OAAO;AAAA,MACL,WAAW,aAAa,aAAa,UAAU,SAAS;AAAA,MACxD,cAAc,gBAAgB,aAAa,UAAU,YAAY;AAAA,MACjE,YAAY,cAAc,aAAa,UAAU,UAAU;AAAA,MAC3D,aAAa,eAAe,aAAa,UAAU,WAAW;AAAA,IAChE;AAAA,EACF,EAAE;AACJ;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/hooks/useBoxShadow.ts"],"sourcesContent":["import { isNonNullable } from '../utils/isNonNullable'\nimport type { ColorValue as Color } from '../utils/types'\nimport type { ResponsiveValue } from '../../prop-controllers'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport {\n ShadowsPropControllerData,\n getShadowsPropControllerDataResponsiveShadowsData,\n getShadowsPropControllerDataSwatchIds,\n} from '@makeswift/prop-controllers'\n\ntype ShadowValue = {\n inset: boolean\n offsetX: number\n offsetY: number\n blurRadius: number\n spreadRadius: number\n color: Color | null | undefined\n}\n\nconst ShadowDefaultValue: ShadowValue = {\n inset: false,\n offsetX: 0,\n offsetY: 2,\n blurRadius: 4,\n spreadRadius: 0,\n color: null,\n} as const\n\nexport type BoxShadow = { id: string; payload: ShadowValue }[]\n\nexport type ResponsiveBoxShadow = ResponsiveValue<BoxShadow>\n\nexport function useBoxShadow(\n data: ShadowsPropControllerData | null | undefined,\n): ResponsiveBoxShadow | null | undefined {\n const swatchIds = getShadowsPropControllerDataSwatchIds(data)\n const swatches = useSwatches(swatchIds)\n const responsiveShadowsData = getShadowsPropControllerDataResponsiveShadowsData(data)\n\n if (responsiveShadowsData == null) return null\n\n return responsiveShadowsData.map(({ value: shadows, ...restOfValue }) => ({\n ...restOfValue,\n value: shadows.map(\n ({\n payload: { color, inset, offsetX, offsetY, blurRadius, spreadRadius },\n ...restOfShadow\n }) => ({\n ...restOfShadow,\n payload: {\n color:\n color != null\n ? {\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n alpha: color.alpha,\n }\n : null,\n inset: inset ?? ShadowDefaultValue.inset,\n offsetX: offsetX ?? ShadowDefaultValue.offsetX,\n offsetY: offsetY ?? ShadowDefaultValue.offsetY,\n blurRadius: blurRadius ?? ShadowDefaultValue.blurRadius,\n spreadRadius: spreadRadius ?? ShadowDefaultValue.spreadRadius,\n },\n }),\n ),\n }))\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA8B;AAG9B,2BAA4B;AAC5B,8BAIO;AAWP,MAAM,qBAAkC;AAAA,EACtC,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AACT;AAMO,SAAS,aACd,MACwC;AACxC,QAAM,gBAAY,+DAAsC,IAAI;AAC5D,QAAM,eAAW,kCAAY,SAAS;AACtC,QAAM,4BAAwB,2EAAkD,IAAI;AAEpF,MAAI,yBAAyB;AAAM,WAAO;AAE1C,SAAO,sBAAsB,IAAI,CAAC,EAAE,OAAO,SAAS,GAAG,YAAY,OAAO;AAAA,IACxE,GAAG;AAAA,IACH,OAAO,QAAQ;AAAA,MACb,CAAC;AAAA,QACC,SAAS,EAAE,OAAO,OAAO,SAAS,SAAS,YAAY,aAAa;AAAA,QACpE,GAAG;AAAA,MACL,OAAO;AAAA,QACL,GAAG;AAAA,QACH,SAAS;AAAA,UACP,OACE,SAAS,OACL;AAAA,YACE,QAAQ,SAAS,OAAO,kCAAa,EAAE,KAAK,OAAK,KAAK,EAAE,OAAO,MAAM,QAAQ;AAAA,YAC7E,OAAO,MAAM;AAAA,UACf,IACA;AAAA,UACN,OAAO,SAAS,mBAAmB;AAAA,UACnC,SAAS,WAAW,mBAAmB;AAAA,UACvC,SAAS,WAAW,mBAAmB;AAAA,UACvC,YAAY,cAAc,mBAAmB;AAAA,UAC7C,cAAc,gBAAgB,mBAAmB;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAE;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/hooks/useBoxShadow.ts"],"sourcesContent":["import { isNonNullable } from '../utils/isNonNullable'\nimport type { ColorValue as Color } from '../utils/types'\nimport { type ResponsiveValue } from '@makeswift/controls'\nimport { useSwatches } from '../../runtimes/react/hooks/makeswift-api'\nimport {\n ShadowsPropControllerData,\n getShadowsPropControllerDataResponsiveShadowsData,\n getShadowsPropControllerDataSwatchIds,\n} from '@makeswift/prop-controllers'\n\ntype ShadowValue = {\n inset: boolean\n offsetX: number\n offsetY: number\n blurRadius: number\n spreadRadius: number\n color: Color | null | undefined\n}\n\nconst ShadowDefaultValue: ShadowValue = {\n inset: false,\n offsetX: 0,\n offsetY: 2,\n blurRadius: 4,\n spreadRadius: 0,\n color: null,\n} as const\n\nexport type BoxShadow = { id: string; payload: ShadowValue }[]\n\nexport type ResponsiveBoxShadow = ResponsiveValue<BoxShadow>\n\nexport function useBoxShadow(\n data: ShadowsPropControllerData | null | undefined,\n): ResponsiveBoxShadow | null | undefined {\n const swatchIds = getShadowsPropControllerDataSwatchIds(data)\n const swatches = useSwatches(swatchIds)\n const responsiveShadowsData = getShadowsPropControllerDataResponsiveShadowsData(data)\n\n if (responsiveShadowsData == null) return null\n\n return responsiveShadowsData.map(({ value: shadows, ...restOfValue }) => ({\n ...restOfValue,\n value: shadows.map(\n ({\n payload: { color, inset, offsetX, offsetY, blurRadius, spreadRadius },\n ...restOfShadow\n }) => ({\n ...restOfShadow,\n payload: {\n color:\n color != null\n ? {\n swatch: swatches.filter(isNonNullable).find(s => s && s.id === color.swatchId),\n alpha: color.alpha,\n }\n : null,\n inset: inset ?? ShadowDefaultValue.inset,\n offsetX: offsetX ?? ShadowDefaultValue.offsetX,\n offsetY: offsetY ?? ShadowDefaultValue.offsetY,\n blurRadius: blurRadius ?? ShadowDefaultValue.blurRadius,\n spreadRadius: spreadRadius ?? ShadowDefaultValue.spreadRadius,\n },\n }),\n ),\n }))\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA8B;AAG9B,2BAA4B;AAC5B,8BAIO;AAWP,MAAM,qBAAkC;AAAA,EACtC,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,OAAO;AACT;AAMO,SAAS,aACd,MACwC;AACxC,QAAM,gBAAY,+DAAsC,IAAI;AAC5D,QAAM,eAAW,kCAAY,SAAS;AACtC,QAAM,4BAAwB,2EAAkD,IAAI;AAEpF,MAAI,yBAAyB;AAAM,WAAO;AAE1C,SAAO,sBAAsB,IAAI,CAAC,EAAE,OAAO,SAAS,GAAG,YAAY,OAAO;AAAA,IACxE,GAAG;AAAA,IACH,OAAO,QAAQ;AAAA,MACb,CAAC;AAAA,QACC,SAAS,EAAE,OAAO,OAAO,SAAS,SAAS,YAAY,aAAa;AAAA,QACpE,GAAG;AAAA,MACL,OAAO;AAAA,QACL,GAAG;AAAA,QACH,SAAS;AAAA,UACP,OACE,SAAS,OACL;AAAA,YACE,QAAQ,SAAS,OAAO,kCAAa,EAAE,KAAK,OAAK,KAAK,EAAE,OAAO,MAAM,QAAQ;AAAA,YAC7E,OAAO,MAAM;AAAA,UACf,IACA;AAAA,UACN,OAAO,SAAS,mBAAmB;AAAA,UACnC,SAAS,WAAW,mBAAmB;AAAA,UACvC,SAAS,WAAW,mBAAmB;AAAA,UACvC,YAAY,cAAc,mBAAmB;AAAA,UAC7C,cAAc,gBAAgB,mBAAmB;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF,EAAE;AACJ;","names":[]}
@@ -22,7 +22,7 @@ __export(useTableFormFieldRefs_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(useTableFormFieldRefs_exports);
24
24
  var import_react = require("react");
25
- var import_box_model = require("../../box-model");
25
+ var import_box_models = require("../../state/modules/box-models");
26
26
  var import_react2 = require("../../runtimes/react");
27
27
  function useTableFormFieldRefs(propController, { fieldsCount }) {
28
28
  const [container, setContainer] = (0, import_react.useState)(null);
@@ -41,11 +41,11 @@ function useTableFormFieldRefs(propController, { fieldsCount }) {
41
41
  if (propController == null)
42
42
  return;
43
43
  if (container != null)
44
- propController.tableFormLayoutChange({ layout: (0, import_box_model.getBox)(container) });
44
+ propController.tableFormLayoutChange({ layout: (0, import_box_models.getBox)(container) });
45
45
  items.map((item, index) => {
46
46
  if (item == null)
47
47
  return;
48
- propController.tableFormFieldLayoutChange({ index, layout: (0, import_box_model.getBox)(item) });
48
+ propController.tableFormFieldLayoutChange({ index, layout: (0, import_box_models.getBox)(item) });
49
49
  });
50
50
  animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/hooks/useTableFormFieldRefs.ts"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react'\nimport { getBox } from '../../box-model'\nimport { TableFormFieldsPropController } from '../../prop-controllers/instances'\nimport { useIsInBuilder } from '../../runtimes/react'\n\nexport function useTableFormFieldRefs(\n propController: TableFormFieldsPropController | null | undefined,\n { fieldsCount }: { fieldsCount: number },\n): {\n container: (arg0: HTMLElement | null | undefined) => void\n items: Array<(arg0: HTMLElement | null | undefined) => void>\n} {\n const [container, setContainer] = useState<HTMLElement | null | undefined>(null)\n const [items, setItems] = useState<Array<HTMLElement | null | undefined>>(\n Array(fieldsCount + 1).fill(null),\n )\n\n const isInBuilder = useIsInBuilder()\n\n useEffect(() => {\n if (!isInBuilder) return\n\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n if (propController == null) return\n\n if (container != null) propController.tableFormLayoutChange({ layout: getBox(container) })\n\n items.map((item, index) => {\n if (item == null) return\n\n propController.tableFormFieldLayoutChange({ index, layout: getBox(item) })\n })\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }, [propController, container, items, isInBuilder])\n\n const itemRefs = useMemo(\n () =>\n Array.from({ length: fieldsCount + 1 }).map(\n (_, index) => (item: HTMLElement | null | undefined) => {\n setItems(is => [...is.slice(0, index), item, ...is.slice(index + 1)])\n },\n ),\n [fieldsCount, setItems],\n )\n\n return { container: setContainer, items: itemRefs }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA6C;AAC7C,uBAAuB;AAEvB,IAAAA,gBAA+B;AAExB,SAAS,sBACd,gBACA,EAAE,YAAY,GAId;AACA,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAyC,IAAI;AAC/E,QAAM,CAAC,OAAO,QAAQ,QAAI;AAAA,IACxB,MAAM,cAAc,CAAC,EAAE,KAAK,IAAI;AAAA,EAClC;AAEA,QAAM,kBAAc,8BAAe;AAEnC,8BAAU,MAAM;AACd,QAAI,CAAC;AAAa;AAElB,QAAI,uBAAuB,sBAAsB,2BAA2B;AAE5E,WAAO,MAAM;AACX,2BAAqB,oBAAoB;AAAA,IAC3C;AAEA,aAAS,8BAA8B;AACrC,UAAI,kBAAkB;AAAM;AAE5B,UAAI,aAAa;AAAM,uBAAe,sBAAsB,EAAE,YAAQ,yBAAO,SAAS,EAAE,CAAC;AAEzF,YAAM,IAAI,CAAC,MAAM,UAAU;AACzB,YAAI,QAAQ;AAAM;AAElB,uBAAe,2BAA2B,EAAE,OAAO,YAAQ,yBAAO,IAAI,EAAE,CAAC;AAAA,MAC3E,CAAC;AAED,6BAAuB,sBAAsB,2BAA2B;AAAA,IAC1E;AAAA,EACF,GAAG,CAAC,gBAAgB,WAAW,OAAO,WAAW,CAAC;AAElD,QAAM,eAAW;AAAA,IACf,MACE,MAAM,KAAK,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE;AAAA,MACtC,CAAC,GAAG,UAAU,CAAC,SAAyC;AACtD,iBAAS,QAAM,CAAC,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC;AAAA,MACtE;AAAA,IACF;AAAA,IACF,CAAC,aAAa,QAAQ;AAAA,EACxB;AAEA,SAAO,EAAE,WAAW,cAAc,OAAO,SAAS;AACpD;","names":["import_react"]}
1
+ {"version":3,"sources":["../../../../src/components/hooks/useTableFormFieldRefs.ts"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react'\nimport { getBox } from '../../state/modules/box-models'\nimport { TableFormFieldsPropController } from '../../prop-controllers/instances'\nimport { useIsInBuilder } from '../../runtimes/react'\n\nexport function useTableFormFieldRefs(\n propController: TableFormFieldsPropController | null | undefined,\n { fieldsCount }: { fieldsCount: number },\n): {\n container: (arg0: HTMLElement | null | undefined) => void\n items: Array<(arg0: HTMLElement | null | undefined) => void>\n} {\n const [container, setContainer] = useState<HTMLElement | null | undefined>(null)\n const [items, setItems] = useState<Array<HTMLElement | null | undefined>>(\n Array(fieldsCount + 1).fill(null),\n )\n\n const isInBuilder = useIsInBuilder()\n\n useEffect(() => {\n if (!isInBuilder) return\n\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n if (propController == null) return\n\n if (container != null) propController.tableFormLayoutChange({ layout: getBox(container) })\n\n items.map((item, index) => {\n if (item == null) return\n\n propController.tableFormFieldLayoutChange({ index, layout: getBox(item) })\n })\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }, [propController, container, items, isInBuilder])\n\n const itemRefs = useMemo(\n () =>\n Array.from({ length: fieldsCount + 1 }).map(\n (_, index) => (item: HTMLElement | null | undefined) => {\n setItems(is => [...is.slice(0, index), item, ...is.slice(index + 1)])\n },\n ),\n [fieldsCount, setItems],\n )\n\n return { container: setContainer, items: itemRefs }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA6C;AAC7C,wBAAuB;AAEvB,IAAAA,gBAA+B;AAExB,SAAS,sBACd,gBACA,EAAE,YAAY,GAId;AACA,QAAM,CAAC,WAAW,YAAY,QAAI,uBAAyC,IAAI;AAC/E,QAAM,CAAC,OAAO,QAAQ,QAAI;AAAA,IACxB,MAAM,cAAc,CAAC,EAAE,KAAK,IAAI;AAAA,EAClC;AAEA,QAAM,kBAAc,8BAAe;AAEnC,8BAAU,MAAM;AACd,QAAI,CAAC;AAAa;AAElB,QAAI,uBAAuB,sBAAsB,2BAA2B;AAE5E,WAAO,MAAM;AACX,2BAAqB,oBAAoB;AAAA,IAC3C;AAEA,aAAS,8BAA8B;AACrC,UAAI,kBAAkB;AAAM;AAE5B,UAAI,aAAa;AAAM,uBAAe,sBAAsB,EAAE,YAAQ,0BAAO,SAAS,EAAE,CAAC;AAEzF,YAAM,IAAI,CAAC,MAAM,UAAU;AACzB,YAAI,QAAQ;AAAM;AAElB,uBAAe,2BAA2B,EAAE,OAAO,YAAQ,0BAAO,IAAI,EAAE,CAAC;AAAA,MAC3E,CAAC;AAED,6BAAuB,sBAAsB,2BAA2B;AAAA,IAC1E;AAAA,EACF,GAAG,CAAC,gBAAgB,WAAW,OAAO,WAAW,CAAC;AAElD,QAAM,eAAW;AAAA,IACf,MACE,MAAM,KAAK,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE;AAAA,MACtC,CAAC,GAAG,UAAU,CAAC,SAAyC;AACtD,iBAAS,QAAM,CAAC,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC;AAAA,MACtE;AAAA,IACF;AAAA,IACF,CAAC,aAAa,QAAQ;AAAA,EACxB;AAEA,SAAO,EAAE,WAAW,cAAc,OAAO,SAAS;AACpD;","names":["import_react"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/components/shared/BackgroundsContainer/components/Backgrounds/index.tsx"],"sourcesContent":["import { BackgroundsPropControllerValue, BackgroundsData } from '../../../../hooks'\nimport { ResponsiveValue } from '../../../../../prop-controllers'\nimport { ColorValue as Color } from '../../../../utils/types'\nimport { colorToString } from '../../../../utils/colorToString'\nimport Parallax from '../Parallax'\nimport BackgroundVideo from '../BackgroundVideo'\nimport { type CSSObject } from '@emotion/serialize'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { useResponsiveStyle } from '../../../../utils/responsive-style'\nimport { useFrameworkContext } from '../../../../../runtimes/react/components/hooks/use-framework-context'\n\nfunction getColor(color: Color | null | undefined) {\n if (color == null) return 'black'\n\n if (color.swatch == null) {\n return colorToString({ ...color, swatch: { hue: 0, saturation: 0, lightness: 0 } })\n }\n\n return colorToString(color)\n}\n\ntype GradientStop = { color: Color | null | undefined; location: number }\n\nconst getStopsStyle = (stops: GradientStop[]) =>\n stops.map(({ color, location }) => `${getColor(color)} ${location}%`).join(',')\n\nconst absoluteFillStyle: CSSObject = {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n}\n\nconst containerStyle: CSSObject = {\n ...absoluteFillStyle,\n borderRadius: 'inherit',\n}\n\ntype Props = { backgrounds: BackgroundsPropControllerValue | null | undefined }\n\nexport default function Backgrounds({ backgrounds }: Props): JSX.Element {\n if (backgrounds == null) return <></>\n\n return (\n <>\n {backgrounds.map(({ value, deviceId }) => {\n const visibility = backgrounds.map(v => ({\n deviceId: v.deviceId,\n value: v.deviceId === deviceId,\n }))\n\n return <BackgroundDeviceLayer key={deviceId} layer={value} visibility={visibility} />\n })}\n </>\n )\n}\n\ntype BackgroundLayerProps = {\n layer: BackgroundsData\n visibility: ResponsiveValue<boolean>\n}\n\nfunction BackgroundDeviceLayer({ layer, visibility }: BackgroundLayerProps) {\n const visibilityStyle = useResponsiveStyle([visibility], ([v]) => ({\n display: v === true ? 'block' : 'none',\n }))\n\n return (\n <div className={useStyle({ ...containerStyle, ...visibilityStyle, overflow: 'hidden' })}>\n {[...layer].reverse().map(bg => {\n if (bg.type === 'color') {\n return <ColorBackground key={bg.id} color={getColor(bg.payload)} />\n }\n\n if (bg.type === 'image' && bg.payload) {\n return <ImageBackground {...bg.payload} key={bg.id} />\n }\n\n if (bg.type === 'gradient' && bg.payload) {\n return (\n <GradientBackground\n {...bg.payload}\n key={bg.id}\n gradient={getStopsStyle(bg.payload.stops)}\n />\n )\n }\n\n if (bg.type === 'video' && bg.payload) {\n return (\n <VideoBackground\n {...bg.payload}\n key={bg.id}\n maskColor={getColor(bg.payload.maskColor)}\n />\n )\n }\n\n return null\n })}\n </div>\n )\n}\n\ntype ColorBackgroundProps = { color: string }\n\nfunction ColorBackground({ color }: ColorBackgroundProps) {\n return <div className={useStyle({ ...containerStyle, backgroundColor: color })} />\n}\n\nconst ImageBackgroundRepeat = {\n NoRepeat: 'no-repeat',\n RepeatX: 'repeat-x',\n RepeatY: 'repeat-y',\n Repeat: 'repeat',\n} as const\n\ntype ImageBackgroundRepeat = (typeof ImageBackgroundRepeat)[keyof typeof ImageBackgroundRepeat]\n\nconst ImageBackgroundSize = {\n Cover: 'cover',\n Contain: 'contain',\n Auto: 'auto',\n} as const\n\ntype ImageBackgroundSize = (typeof ImageBackgroundSize)[keyof typeof ImageBackgroundSize]\n\ntype ImageBackgroundProps = {\n publicUrl?: string\n position: { x: number; y: number }\n repeat?: ImageBackgroundRepeat\n size?: ImageBackgroundSize\n opacity?: number\n parallax?: number\n priority?: boolean\n}\n\nfunction ImageBackground({\n publicUrl,\n position,\n repeat = ImageBackgroundRepeat.NoRepeat,\n size = ImageBackgroundSize.Cover,\n opacity,\n parallax,\n priority,\n}: ImageBackgroundProps) {\n const backgroundPosition = `${position.x}% ${position.y}%`\n const containerClassName = useStyle(containerStyle)\n const { Image } = useFrameworkContext()\n\n if (repeat === 'no-repeat' && size !== 'auto' && publicUrl != null) {\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div {...getParallaxProps({ style: { opacity, overflow: 'hidden' } })}>\n <Image\n src={publicUrl}\n alt={''}\n fill\n sizes=\"100vw\"\n style={{\n objectPosition: backgroundPosition,\n objectFit: size,\n }}\n priority={priority}\n />\n </div>\n )}\n </Parallax>\n )\n }\n\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div\n className={containerClassName}\n {...getParallaxProps({\n style: {\n backgroundImage: publicUrl != null ? `url('${publicUrl}')` : undefined,\n backgroundPosition,\n backgroundRepeat: repeat,\n backgroundSize: size,\n opacity,\n },\n })}\n />\n )}\n </Parallax>\n )\n}\n\ntype GradientBackgroundProps = {\n gradient: string\n angle?: number\n isRadial?: boolean\n}\n\nfunction GradientBackground({\n gradient,\n isRadial = false,\n angle = Math.PI,\n}: GradientBackgroundProps) {\n return (\n <div\n className={useStyle({\n ...containerStyle,\n background: isRadial\n ? `radial-gradient(${gradient})`\n : `linear-gradient(${angle}rad, ${gradient})`,\n })}\n />\n )\n}\n\nconst BackgroundVideoAspectRatio = {\n Wide: 'wide',\n Standard: 'standard',\n} as const\n\ntype BackgroundVideoAspectRatio =\n (typeof BackgroundVideoAspectRatio)[keyof typeof BackgroundVideoAspectRatio]\n\nfunction getAspectRatio(aspectRatio: BackgroundVideoAspectRatio | null | undefined): number {\n switch (aspectRatio) {\n case 'wide':\n return 16 / 9\n\n case 'standard':\n return 4 / 3\n\n default:\n return 16 / 9\n }\n}\n\ntype VideoBackgroundProps = {\n url?: string\n aspectRatio?: BackgroundVideoAspectRatio\n maskColor: string\n zoom?: number\n opacity?: number\n parallax?: number\n}\n\nfunction VideoBackground({\n url,\n aspectRatio,\n maskColor,\n zoom,\n opacity,\n parallax,\n}: VideoBackgroundProps) {\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div {...getParallaxProps({ className: useStyle(containerStyle) })}>\n <BackgroundVideo\n url={url}\n zoom={zoom}\n opacity={opacity}\n aspectRatio={getAspectRatio(aspectRatio)}\n maskColor={maskColor}\n />\n </div>\n )}\n </Parallax>\n )\n}\n"],"mappings":"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","names":["Parallax","BackgroundVideo"]}
1
+ {"version":3,"sources":["../../../../../../../src/components/shared/BackgroundsContainer/components/Backgrounds/index.tsx"],"sourcesContent":["import { BackgroundsPropControllerValue, BackgroundsData } from '../../../../hooks'\nimport { type ResponsiveValue } from '@makeswift/controls'\nimport { ColorValue as Color } from '../../../../utils/types'\nimport { colorToString } from '../../../../utils/colorToString'\nimport Parallax from '../Parallax'\nimport BackgroundVideo from '../BackgroundVideo'\nimport { type CSSObject } from '@emotion/serialize'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { useResponsiveStyle } from '../../../../utils/responsive-style'\nimport { useFrameworkContext } from '../../../../../runtimes/react/components/hooks/use-framework-context'\n\nfunction getColor(color: Color | null | undefined) {\n if (color == null) return 'black'\n\n if (color.swatch == null) {\n return colorToString({ ...color, swatch: { hue: 0, saturation: 0, lightness: 0 } })\n }\n\n return colorToString(color)\n}\n\ntype GradientStop = { color: Color | null | undefined; location: number }\n\nconst getStopsStyle = (stops: GradientStop[]) =>\n stops.map(({ color, location }) => `${getColor(color)} ${location}%`).join(',')\n\nconst absoluteFillStyle: CSSObject = {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n}\n\nconst containerStyle: CSSObject = {\n ...absoluteFillStyle,\n borderRadius: 'inherit',\n}\n\ntype Props = { backgrounds: BackgroundsPropControllerValue | null | undefined }\n\nexport default function Backgrounds({ backgrounds }: Props): JSX.Element {\n if (backgrounds == null) return <></>\n\n return (\n <>\n {backgrounds.map(({ value, deviceId }) => {\n const visibility = backgrounds.map(v => ({\n deviceId: v.deviceId,\n value: v.deviceId === deviceId,\n }))\n\n return <BackgroundDeviceLayer key={deviceId} layer={value} visibility={visibility} />\n })}\n </>\n )\n}\n\ntype BackgroundLayerProps = {\n layer: BackgroundsData\n visibility: ResponsiveValue<boolean>\n}\n\nfunction BackgroundDeviceLayer({ layer, visibility }: BackgroundLayerProps) {\n const visibilityStyle = useResponsiveStyle([visibility], ([v]) => ({\n display: v === true ? 'block' : 'none',\n }))\n\n return (\n <div className={useStyle({ ...containerStyle, ...visibilityStyle, overflow: 'hidden' })}>\n {[...layer].reverse().map(bg => {\n if (bg.type === 'color') {\n return <ColorBackground key={bg.id} color={getColor(bg.payload)} />\n }\n\n if (bg.type === 'image' && bg.payload) {\n return <ImageBackground {...bg.payload} key={bg.id} />\n }\n\n if (bg.type === 'gradient' && bg.payload) {\n return (\n <GradientBackground\n {...bg.payload}\n key={bg.id}\n gradient={getStopsStyle(bg.payload.stops)}\n />\n )\n }\n\n if (bg.type === 'video' && bg.payload) {\n return (\n <VideoBackground\n {...bg.payload}\n key={bg.id}\n maskColor={getColor(bg.payload.maskColor)}\n />\n )\n }\n\n return null\n })}\n </div>\n )\n}\n\ntype ColorBackgroundProps = { color: string }\n\nfunction ColorBackground({ color }: ColorBackgroundProps) {\n return <div className={useStyle({ ...containerStyle, backgroundColor: color })} />\n}\n\nconst ImageBackgroundRepeat = {\n NoRepeat: 'no-repeat',\n RepeatX: 'repeat-x',\n RepeatY: 'repeat-y',\n Repeat: 'repeat',\n} as const\n\ntype ImageBackgroundRepeat = (typeof ImageBackgroundRepeat)[keyof typeof ImageBackgroundRepeat]\n\nconst ImageBackgroundSize = {\n Cover: 'cover',\n Contain: 'contain',\n Auto: 'auto',\n} as const\n\ntype ImageBackgroundSize = (typeof ImageBackgroundSize)[keyof typeof ImageBackgroundSize]\n\ntype ImageBackgroundProps = {\n publicUrl?: string\n position: { x: number; y: number }\n repeat?: ImageBackgroundRepeat\n size?: ImageBackgroundSize\n opacity?: number\n parallax?: number\n priority?: boolean\n}\n\nfunction ImageBackground({\n publicUrl,\n position,\n repeat = ImageBackgroundRepeat.NoRepeat,\n size = ImageBackgroundSize.Cover,\n opacity,\n parallax,\n priority,\n}: ImageBackgroundProps) {\n const backgroundPosition = `${position.x}% ${position.y}%`\n const containerClassName = useStyle(containerStyle)\n const { Image } = useFrameworkContext()\n\n if (repeat === 'no-repeat' && size !== 'auto' && publicUrl != null) {\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div {...getParallaxProps({ style: { opacity, overflow: 'hidden' } })}>\n <Image\n src={publicUrl}\n alt={''}\n fill\n sizes=\"100vw\"\n style={{\n objectPosition: backgroundPosition,\n objectFit: size,\n }}\n priority={priority}\n />\n </div>\n )}\n </Parallax>\n )\n }\n\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div\n className={containerClassName}\n {...getParallaxProps({\n style: {\n backgroundImage: publicUrl != null ? `url('${publicUrl}')` : undefined,\n backgroundPosition,\n backgroundRepeat: repeat,\n backgroundSize: size,\n opacity,\n },\n })}\n />\n )}\n </Parallax>\n )\n}\n\ntype GradientBackgroundProps = {\n gradient: string\n angle?: number\n isRadial?: boolean\n}\n\nfunction GradientBackground({\n gradient,\n isRadial = false,\n angle = Math.PI,\n}: GradientBackgroundProps) {\n return (\n <div\n className={useStyle({\n ...containerStyle,\n background: isRadial\n ? `radial-gradient(${gradient})`\n : `linear-gradient(${angle}rad, ${gradient})`,\n })}\n />\n )\n}\n\nconst BackgroundVideoAspectRatio = {\n Wide: 'wide',\n Standard: 'standard',\n} as const\n\ntype BackgroundVideoAspectRatio =\n (typeof BackgroundVideoAspectRatio)[keyof typeof BackgroundVideoAspectRatio]\n\nfunction getAspectRatio(aspectRatio: BackgroundVideoAspectRatio | null | undefined): number {\n switch (aspectRatio) {\n case 'wide':\n return 16 / 9\n\n case 'standard':\n return 4 / 3\n\n default:\n return 16 / 9\n }\n}\n\ntype VideoBackgroundProps = {\n url?: string\n aspectRatio?: BackgroundVideoAspectRatio\n maskColor: string\n zoom?: number\n opacity?: number\n parallax?: number\n}\n\nfunction VideoBackground({\n url,\n aspectRatio,\n maskColor,\n zoom,\n opacity,\n parallax,\n}: VideoBackgroundProps) {\n return (\n <Parallax strength={parallax}>\n {getParallaxProps => (\n <div {...getParallaxProps({ className: useStyle(containerStyle) })}>\n <BackgroundVideo\n url={url}\n zoom={zoom}\n opacity={opacity}\n aspectRatio={getAspectRatio(aspectRatio)}\n maskColor={maskColor}\n />\n </div>\n )}\n </Parallax>\n )\n}\n"],"mappings":"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","names":["Parallax","BackgroundVideo"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/shared/grid-item.tsx"],"sourcesContent":["import { cx } from '@emotion/css'\nimport { ComponentPropsWithoutRef } from 'react'\nimport { ResponsiveValue } from '../../prop-controllers'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { useItemAnimation } from '../builtin/Box/animations'\nimport { useResponsiveGridItem } from '../utils/responsive-style'\nimport { type LengthData, type ResponsiveNumberValue } from '@makeswift/prop-controllers'\n\ntype BaseProps = {\n className?: string\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthData>\n rowGap?: ResponsiveValue<LengthData>\n itemAnimateDuration?: ResponsiveNumberValue\n itemAnimateDelay?: ResponsiveNumberValue\n itemStaggerDuration?: ResponsiveNumberValue\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof BaseProps>\n\nexport const gridItemIdentifierClassName = 'grid-item'\n\nexport function GridItem({\n grid,\n index,\n columnGap,\n rowGap,\n className,\n itemAnimateDuration,\n itemAnimateDelay,\n itemStaggerDuration,\n ...restOfProps\n}: Props) {\n const gridItemClassName = useStyle(useResponsiveGridItem({ grid, index, columnGap, rowGap }))\n const animationClassName = useItemAnimation(\n itemAnimateDuration,\n itemAnimateDelay,\n itemStaggerDuration,\n index,\n )\n\n return (\n <div\n {...restOfProps}\n className={cx(gridItemClassName, className, animationClassName, gridItemIdentifierClassName)}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CI;AA3CJ,iBAAmB;AAGnB,uBAAyB;AACzB,wBAAiC;AACjC,8BAAsC;AAgB/B,MAAM,8BAA8B;AAEpC,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAU;AACR,QAAM,wBAAoB,+BAAS,+CAAsB,EAAE,MAAM,OAAO,WAAW,OAAO,CAAC,CAAC;AAC5F,QAAM,yBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,eAAW,eAAG,mBAAmB,WAAW,oBAAoB,2BAA2B;AAAA;AAAA,EAC7F;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/shared/grid-item.tsx"],"sourcesContent":["import { cx } from '@emotion/css'\nimport { ComponentPropsWithoutRef } from 'react'\nimport { type ResponsiveValue } from '@makeswift/controls'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { useItemAnimation } from '../builtin/Box/animations'\nimport { useResponsiveGridItem } from '../utils/responsive-style'\nimport { type LengthData, type ResponsiveNumberValue } from '@makeswift/prop-controllers'\n\ntype BaseProps = {\n className?: string\n grid: ResponsiveValue<{ spans: Array<Array<number>>; count: number }>\n index: number\n columnGap?: ResponsiveValue<LengthData>\n rowGap?: ResponsiveValue<LengthData>\n itemAnimateDuration?: ResponsiveNumberValue\n itemAnimateDelay?: ResponsiveNumberValue\n itemStaggerDuration?: ResponsiveNumberValue\n}\n\ntype Props = BaseProps & Omit<ComponentPropsWithoutRef<'div'>, keyof BaseProps>\n\nexport const gridItemIdentifierClassName = 'grid-item'\n\nexport function GridItem({\n grid,\n index,\n columnGap,\n rowGap,\n className,\n itemAnimateDuration,\n itemAnimateDelay,\n itemStaggerDuration,\n ...restOfProps\n}: Props) {\n const gridItemClassName = useStyle(useResponsiveGridItem({ grid, index, columnGap, rowGap }))\n const animationClassName = useItemAnimation(\n itemAnimateDuration,\n itemAnimateDelay,\n itemStaggerDuration,\n index,\n )\n\n return (\n <div\n {...restOfProps}\n className={cx(gridItemClassName, className, animationClassName, gridItemIdentifierClassName)}\n />\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2CI;AA3CJ,iBAAmB;AAGnB,uBAAyB;AACzB,wBAAiC;AACjC,8BAAsC;AAgB/B,MAAM,8BAA8B;AAEpC,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAU;AACR,QAAM,wBAAoB,+BAAS,+CAAsB,EAAE,MAAM,OAAO,WAAW,OAAO,CAAC,CAAC;AAC5F,QAAM,yBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,eAAW,eAAG,mBAAmB,WAAW,oBAAoB,2BAA2B;AAAA;AAAA,EAC7F;AAEJ;","names":[]}
@@ -27,7 +27,7 @@ var import_controls = require("@makeswift/controls");
27
27
  var import_prop_controllers = require("@makeswift/prop-controllers");
28
28
  var import_descriptors = require("../prop-controllers/descriptors");
29
29
  var import_copy = require("../prop-controllers/copy");
30
- var import_prop_controllers2 = require("../prop-controllers");
30
+ var import_deleted = require("../prop-controllers/deleted");
31
31
  function copy(definition, value, context) {
32
32
  if (!(0, import_descriptors.isLegacyDescriptor)(definition)) {
33
33
  return definition.copyData(value, context);
@@ -46,7 +46,7 @@ function copy(definition, value, context) {
46
46
  case import_prop_controllers.Types.Border:
47
47
  case import_prop_controllers.Types.ElementID:
48
48
  return (0, import_copy.copy)(definition, value, context);
49
- case import_prop_controllers2.DELETED_PROP_CONTROLLER_TYPES.RichText:
49
+ case import_deleted.DELETED_PROP_CONTROLLER_TYPES.RichText:
50
50
  return (0, import_controls.copyRichTextData)(value, context);
51
51
  default:
52
52
  return value;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/controls/control.ts"],"sourcesContent":["import {\n copyRichTextData,\n type CopyContext,\n type Data,\n type MergeContext,\n} from '@makeswift/controls'\n\nimport { Types as PropControllerTypes } from '@makeswift/prop-controllers'\n\nimport { Descriptor, isLegacyDescriptor } from '../prop-controllers/descriptors'\nimport { copy as propControllerCopy } from '../prop-controllers/copy'\nimport { DELETED_PROP_CONTROLLER_TYPES, PropControllerDescriptor } from '../prop-controllers'\n\nexport function copy(definition: Descriptor, value: any, context: CopyContext) {\n if (!isLegacyDescriptor(definition)) {\n return definition.copyData(value, context)\n }\n\n switch (definition.type) {\n case PropControllerTypes.Backgrounds:\n case PropControllerTypes.Grid:\n case PropControllerTypes.NavigationLinks:\n case PropControllerTypes.Link:\n case PropControllerTypes.Shadows:\n case PropControllerTypes.Image:\n case PropControllerTypes.Images:\n case PropControllerTypes.ResponsiveColor:\n case PropControllerTypes.TableFormFields:\n case PropControllerTypes.Table:\n case PropControllerTypes.Border:\n case PropControllerTypes.ElementID:\n return propControllerCopy(definition, value, context)\n\n case DELETED_PROP_CONTROLLER_TYPES.RichText:\n return copyRichTextData(value, context)\n\n default:\n return value\n }\n}\n\nexport function merge(\n definition: PropControllerDescriptor,\n a: Data,\n b: Data = a,\n context: MergeContext,\n): Data {\n if (!isLegacyDescriptor(definition)) {\n return definition.mergeData(a, b, context)\n }\n\n switch (definition.type) {\n default:\n return b\n }\n}\n\nexport function getTranslatableData(definition: Descriptor, data: Data): Data {\n if (!isLegacyDescriptor(definition)) {\n return definition.getTranslatableData(data)\n }\n\n switch (definition.type) {\n case PropControllerTypes.TextInput:\n case PropControllerTypes.TextArea:\n return data\n\n default:\n return null\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKO;AAEP,8BAA6C;AAE7C,yBAA+C;AAC/C,kBAA2C;AAC3C,IAAAA,2BAAwE;AAEjE,SAAS,KAAK,YAAwB,OAAY,SAAsB;AAC7E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,SAAS,OAAO,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAC,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,YAAAC,MAAmB,YAAY,OAAO,OAAO;AAAA,IAEtD,KAAK,uDAA8B;AACjC,iBAAO,kCAAiB,OAAO,OAAO;AAAA,IAExC;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,MACd,YACA,GACA,IAAU,GACV,SACM;AACN,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,UAAU,GAAG,GAAG,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,oBAAoB,YAAwB,MAAkB;AAC5E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,oBAAoB,IAAI;AAAA,EAC5C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAD,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;","names":["import_prop_controllers","PropControllerTypes","propControllerCopy"]}
1
+ {"version":3,"sources":["../../../src/controls/control.ts"],"sourcesContent":["import {\n copyRichTextData,\n type CopyContext,\n type Data,\n type MergeContext,\n} from '@makeswift/controls'\n\nimport { Types as PropControllerTypes } from '@makeswift/prop-controllers'\n\nimport { Descriptor, isLegacyDescriptor } from '../prop-controllers/descriptors'\nimport { copy as propControllerCopy } from '../prop-controllers/copy'\nimport { DELETED_PROP_CONTROLLER_TYPES } from '../prop-controllers/deleted'\n\nexport function copy(definition: Descriptor, value: any, context: CopyContext) {\n if (!isLegacyDescriptor(definition)) {\n return definition.copyData(value, context)\n }\n\n switch (definition.type) {\n case PropControllerTypes.Backgrounds:\n case PropControllerTypes.Grid:\n case PropControllerTypes.NavigationLinks:\n case PropControllerTypes.Link:\n case PropControllerTypes.Shadows:\n case PropControllerTypes.Image:\n case PropControllerTypes.Images:\n case PropControllerTypes.ResponsiveColor:\n case PropControllerTypes.TableFormFields:\n case PropControllerTypes.Table:\n case PropControllerTypes.Border:\n case PropControllerTypes.ElementID:\n return propControllerCopy(definition, value, context)\n\n case DELETED_PROP_CONTROLLER_TYPES.RichText:\n return copyRichTextData(value, context)\n\n default:\n return value\n }\n}\n\nexport function merge(definition: Descriptor, a: Data, b: Data = a, context: MergeContext): Data {\n if (!isLegacyDescriptor(definition)) {\n return definition.mergeData(a, b, context)\n }\n\n switch (definition.type) {\n default:\n return b\n }\n}\n\nexport function getTranslatableData(definition: Descriptor, data: Data): Data {\n if (!isLegacyDescriptor(definition)) {\n return definition.getTranslatableData(data)\n }\n\n switch (definition.type) {\n case PropControllerTypes.TextInput:\n case PropControllerTypes.TextArea:\n return data\n\n default:\n return null\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKO;AAEP,8BAA6C;AAE7C,yBAA+C;AAC/C,kBAA2C;AAC3C,qBAA8C;AAEvC,SAAS,KAAK,YAAwB,OAAY,SAAsB;AAC7E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,SAAS,OAAO,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,iBAAO,YAAAC,MAAmB,YAAY,OAAO,OAAO;AAAA,IAEtD,KAAK,6CAA8B;AACjC,iBAAO,kCAAiB,OAAO,OAAO;AAAA,IAExC;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,MAAM,YAAwB,GAAS,IAAU,GAAG,SAA6B;AAC/F,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,UAAU,GAAG,GAAG,OAAO;AAAA,EAC3C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,oBAAoB,YAAwB,MAAkB;AAC5E,MAAI,KAAC,uCAAmB,UAAU,GAAG;AACnC,WAAO,WAAW,oBAAoB,IAAI;AAAA,EAC5C;AAEA,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,wBAAAD,MAAoB;AAAA,IACzB,KAAK,wBAAAA,MAAoB;AACvB,aAAO;AAAA,IAET;AACE,aAAO;AAAA,EACX;AACF;","names":["PropControllerTypes","propControllerCopy"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/controls/rich-text-v2/control.ts"],"sourcesContent":["import { Editor } from 'slate'\n// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport {\n RichTextDefinition,\n ControlInstance,\n Slate,\n type DataType,\n type SendMessage,\n type Data,\n} from '@makeswift/controls'\n\nimport { BoxModel } from '../../box-model'\n\nimport { RichTextV2Definition } from './rich-text-v2'\n\n// COSMOS -> HOST\ntype ResetValueMessage = { type: typeof RichTextV2Control.RESET_VALUE }\ntype FocusMessage = { type: typeof RichTextV2Control.FOCUS }\ntype RunPluginControlActionMessage = {\n type: typeof RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION\n pluginIndex: number\n value: Data\n}\n\n// HOST -> COSMOS\ntype SetDefaultValueMessage = {\n type: typeof RichTextV2Control.SET_DEFAULT_VALUE\n value: Slate.Descendant[]\n}\n\ntype SetPluginControlValueMessage = {\n type: typeof RichTextV2Control.SET_PLUGIN_CONTROL_VALUE\n value: Data[]\n}\n\ntype OnChangeMessage = {\n type: typeof RichTextV2Control.ON_CHANGE\n value: DataType<RichTextV2Definition>\n}\n\ntype SelectMessage = { type: typeof RichTextV2Control.SELECT }\n\ntype SwitchToBuildModeMessage = {\n type: typeof RichTextV2Control.SWITCH_TO_BUILD_MODE\n}\n\ntype ChangeBoxModelMessage = {\n type: typeof RichTextV2Control.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\ntype UndoMessage = { type: typeof RichTextV2Control.UNDO }\ntype RedoMessage = { type: typeof RichTextV2Control.REDO }\n\ntype Message =\n | ResetValueMessage\n | FocusMessage\n | RunPluginControlActionMessage\n | SetDefaultValueMessage\n | SetPluginControlValueMessage\n | OnChangeMessage\n | SelectMessage\n | SwitchToBuildModeMessage\n | ChangeBoxModelMessage\n | UndoMessage\n | RedoMessage\n\nexport class RichTextV2Control extends ControlInstance<Message> {\n private static readonly messagePrefix = `${RichTextDefinition.type}::control-message` as const\n\n // COSMOS -> HOST\n static readonly RESET_VALUE = `${this.messagePrefix}::reset-value` as const\n static readonly FOCUS = `${this.messagePrefix}::focus` as const\n static readonly RUN_PLUGIN_CONTROL_ACTION =\n `${this.messagePrefix}::run-plugin-control-action` as const\n\n // HOST -> COSMOS\n static readonly SET_DEFAULT_VALUE = `${this.messagePrefix}::set-default-value` as const\n static readonly SET_PLUGIN_CONTROL_VALUE =\n `${this.messagePrefix}::set-plugin-control-value` as const\n static readonly ON_CHANGE = `${this.messagePrefix}::on-change` as const\n static readonly SELECT = `${this.messagePrefix}::select` as const\n static readonly SWITCH_TO_BUILD_MODE = `${this.messagePrefix}::switch-to-build-mode` as const\n static readonly CHANGE_BOX_MODEL = `${this.messagePrefix}::change-box-model` as const\n\n static readonly REDO = `${this.messagePrefix}::redo` as const\n static readonly UNDO = `${this.messagePrefix}::undo` as const\n\n private editor: Editor | null = null\n private defaultValue: Slate.Descendant[] | null = null\n\n constructor(\n send: SendMessage<Message>,\n private readonly descriptor: RichTextV2Definition,\n ) {\n super(send)\n }\n\n recv = (message: Message): void => {\n if (!this.editor) return\n\n switch (message.type) {\n case RichTextV2Control.FOCUS: {\n this.editor.focusAndSelectAll()\n break\n }\n\n case RichTextV2Control.RESET_VALUE: {\n if (this.defaultValue) {\n this.editor.resetValue(this.defaultValue)\n setTimeout(() => {\n this.onLocalUserChange()\n })\n }\n break\n }\n\n case RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION: {\n this.descriptor.pluginControlAt(message.pluginIndex)?.onChange?.(this.editor, message.value)\n break\n }\n }\n }\n\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n setEditor(editor: Editor) {\n this.editor = editor\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n\n const _onChange = editor.onChange\n this.editor.onChange = options => {\n _onChange(options)\n this.updatePluginValues()\n if (this.editor == null || options?.operation == null) return\n this.onLocalUserChange()\n }\n }\n\n setDefaultValue(defaultValue: Slate.Descendant[]) {\n this.defaultValue = defaultValue\n this.sendMessage({\n type: RichTextV2Control.SET_DEFAULT_VALUE,\n value: defaultValue,\n })\n }\n\n onLocalUserChange() {\n if (this.editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.ON_CHANGE,\n value: RichTextV2Definition.nodesToDataV2(this.editor.children, this.editor.currentKey),\n })\n }\n\n updatePluginValues() {\n const editor = this.editor\n if (editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n }\n\n getValue(editor: Editor) {\n return this.descriptor.pluginControls.map(control => control.getValue?.(editor)) ?? []\n }\n\n select() {\n this.sendMessage({ type: RichTextV2Control.SELECT })\n }\n\n switchToBuildMode() {\n this.sendMessage({ type: RichTextV2Control.SWITCH_TO_BUILD_MODE })\n }\n\n undo() {\n this.sendMessage({ type: RichTextV2Control.UNDO })\n }\n\n redo() {\n this.sendMessage({ type: RichTextV2Control.REDO })\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.sendMessage({\n type: RichTextV2Control.CHANGE_BOX_MODEL,\n payload: { boxModel },\n })\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/controls/rich-text-v2/control.ts"],"sourcesContent":["import { Editor } from 'slate'\n// @ts-expect-error: there are no types for 'corporate-ipsum'\nimport ipsum from 'corporate-ipsum'\n\nimport {\n RichTextDefinition,\n ControlInstance,\n Slate,\n type BoxModel,\n type DataType,\n type SendMessage,\n type Data,\n} from '@makeswift/controls'\n\nimport { RichTextV2Definition } from './rich-text-v2'\n\n// COSMOS -> HOST\ntype ResetValueMessage = { type: typeof RichTextV2Control.RESET_VALUE }\ntype FocusMessage = { type: typeof RichTextV2Control.FOCUS }\ntype RunPluginControlActionMessage = {\n type: typeof RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION\n pluginIndex: number\n value: Data\n}\n\n// HOST -> COSMOS\ntype SetDefaultValueMessage = {\n type: typeof RichTextV2Control.SET_DEFAULT_VALUE\n value: Slate.Descendant[]\n}\n\ntype SetPluginControlValueMessage = {\n type: typeof RichTextV2Control.SET_PLUGIN_CONTROL_VALUE\n value: Data[]\n}\n\ntype OnChangeMessage = {\n type: typeof RichTextV2Control.ON_CHANGE\n value: DataType<RichTextV2Definition>\n}\n\ntype SelectMessage = { type: typeof RichTextV2Control.SELECT }\n\ntype SwitchToBuildModeMessage = {\n type: typeof RichTextV2Control.SWITCH_TO_BUILD_MODE\n}\n\ntype ChangeBoxModelMessage = {\n type: typeof RichTextV2Control.CHANGE_BOX_MODEL\n payload: { boxModel: BoxModel | null }\n}\n\ntype UndoMessage = { type: typeof RichTextV2Control.UNDO }\ntype RedoMessage = { type: typeof RichTextV2Control.REDO }\n\ntype Message =\n | ResetValueMessage\n | FocusMessage\n | RunPluginControlActionMessage\n | SetDefaultValueMessage\n | SetPluginControlValueMessage\n | OnChangeMessage\n | SelectMessage\n | SwitchToBuildModeMessage\n | ChangeBoxModelMessage\n | UndoMessage\n | RedoMessage\n\nexport class RichTextV2Control extends ControlInstance<Message> {\n private static readonly messagePrefix = `${RichTextDefinition.type}::control-message` as const\n\n // COSMOS -> HOST\n static readonly RESET_VALUE = `${this.messagePrefix}::reset-value` as const\n static readonly FOCUS = `${this.messagePrefix}::focus` as const\n static readonly RUN_PLUGIN_CONTROL_ACTION =\n `${this.messagePrefix}::run-plugin-control-action` as const\n\n // HOST -> COSMOS\n static readonly SET_DEFAULT_VALUE = `${this.messagePrefix}::set-default-value` as const\n static readonly SET_PLUGIN_CONTROL_VALUE =\n `${this.messagePrefix}::set-plugin-control-value` as const\n static readonly ON_CHANGE = `${this.messagePrefix}::on-change` as const\n static readonly SELECT = `${this.messagePrefix}::select` as const\n static readonly SWITCH_TO_BUILD_MODE = `${this.messagePrefix}::switch-to-build-mode` as const\n static readonly CHANGE_BOX_MODEL = `${this.messagePrefix}::change-box-model` as const\n\n static readonly REDO = `${this.messagePrefix}::redo` as const\n static readonly UNDO = `${this.messagePrefix}::undo` as const\n\n private editor: Editor | null = null\n private defaultValue: Slate.Descendant[] | null = null\n\n constructor(\n send: SendMessage<Message>,\n private readonly descriptor: RichTextV2Definition,\n ) {\n super(send)\n }\n\n recv = (message: Message): void => {\n if (!this.editor) return\n\n switch (message.type) {\n case RichTextV2Control.FOCUS: {\n this.editor.focusAndSelectAll()\n break\n }\n\n case RichTextV2Control.RESET_VALUE: {\n if (this.defaultValue) {\n this.editor.resetValue(this.defaultValue)\n setTimeout(() => {\n this.onLocalUserChange()\n })\n }\n break\n }\n\n case RichTextV2Control.RUN_PLUGIN_CONTROL_ACTION: {\n this.descriptor.pluginControlAt(message.pluginIndex)?.onChange?.(this.editor, message.value)\n break\n }\n }\n }\n\n child(_key: string): ControlInstance | undefined {\n return undefined\n }\n\n setEditor(editor: Editor) {\n this.editor = editor\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n\n const _onChange = editor.onChange\n this.editor.onChange = options => {\n _onChange(options)\n this.updatePluginValues()\n if (this.editor == null || options?.operation == null) return\n this.onLocalUserChange()\n }\n }\n\n setDefaultValue(defaultValue: Slate.Descendant[]) {\n this.defaultValue = defaultValue\n this.sendMessage({\n type: RichTextV2Control.SET_DEFAULT_VALUE,\n value: defaultValue,\n })\n }\n\n onLocalUserChange() {\n if (this.editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.ON_CHANGE,\n value: RichTextV2Definition.nodesToDataV2(this.editor.children, this.editor.currentKey),\n })\n }\n\n updatePluginValues() {\n const editor = this.editor\n if (editor == null) return\n\n this.sendMessage({\n type: RichTextV2Control.SET_PLUGIN_CONTROL_VALUE,\n value: this.getValue(editor),\n })\n }\n\n getValue(editor: Editor) {\n return this.descriptor.pluginControls.map(control => control.getValue?.(editor)) ?? []\n }\n\n select() {\n this.sendMessage({ type: RichTextV2Control.SELECT })\n }\n\n switchToBuildMode() {\n this.sendMessage({ type: RichTextV2Control.SWITCH_TO_BUILD_MODE })\n }\n\n undo() {\n this.sendMessage({ type: RichTextV2Control.UNDO })\n }\n\n redo() {\n this.sendMessage({ type: RichTextV2Control.REDO })\n }\n\n changeBoxModel(boxModel: BoxModel | null): void {\n this.sendMessage({\n type: RichTextV2Control.CHANGE_BOX_MODEL,\n payload: { boxModel },\n })\n }\n}\n"],"mappings":"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","names":[]}
@@ -115,27 +115,6 @@ class Definition extends import_controls.RichTextDefinition {
115
115
  return null;
116
116
  return (0, import_get_translations.getTranslatableData)(Definition.dataToNodes(data), this.config.plugins);
117
117
  }
118
- serialize() {
119
- const { plugins, ...config } = this.config;
120
- const pluginDefs = plugins.map(
121
- ({ control }) => control ? {
122
- control: {
123
- definition: control.definition,
124
- // FIXME: remove getValue/onChange stubs once we released a version of the builder
125
- // built against the runtime where these can be optional
126
- getValue: () => void 0,
127
- onChange: () => {
128
- }
129
- }
130
- } : {}
131
- );
132
- return (0, import_controls.serialize)(
133
- { ...config, plugins: pluginDefs },
134
- {
135
- type: Definition.type
136
- }
137
- );
138
- }
139
118
  get pluginControls() {
140
119
  return this.config.plugins.map((plugin) => plugin.control).filter(import_controls.isNotNil);
141
120
  }