@makeswift/runtime 0.11.2 → 0.11.4

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 (173) hide show
  1. package/dist/Box.cjs.js +4 -2
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +4 -2
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +4 -2
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +4 -2
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +5 -3
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +5 -3
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +3 -1
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +3 -1
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +4 -2
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +4 -2
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.cjs.js +3 -1
  22. package/dist/Embed.cjs.js.map +1 -1
  23. package/dist/Embed.es.js +3 -1
  24. package/dist/Embed.es.js.map +1 -1
  25. package/dist/Form.cjs.js +3 -1
  26. package/dist/Form.cjs.js.map +1 -1
  27. package/dist/Form.es.js +3 -1
  28. package/dist/Form.es.js.map +1 -1
  29. package/dist/Image.cjs.js +3 -1
  30. package/dist/Image.cjs.js.map +1 -1
  31. package/dist/Image.es.js +3 -1
  32. package/dist/Image.es.js.map +1 -1
  33. package/dist/LiveProvider.cjs.js +4 -2
  34. package/dist/LiveProvider.cjs.js.map +1 -1
  35. package/dist/LiveProvider.es.js +4 -2
  36. package/dist/LiveProvider.es.js.map +1 -1
  37. package/dist/Navigation.cjs.js +3 -1
  38. package/dist/Navigation.cjs.js.map +1 -1
  39. package/dist/Navigation.es.js +3 -1
  40. package/dist/Navigation.es.js.map +1 -1
  41. package/dist/PreviewProvider.cjs.js +3 -1
  42. package/dist/PreviewProvider.cjs.js.map +1 -1
  43. package/dist/PreviewProvider.es.js +4 -2
  44. package/dist/PreviewProvider.es.js.map +1 -1
  45. package/dist/ReadOnlyText.cjs.js +3 -1
  46. package/dist/ReadOnlyText.cjs.js.map +1 -1
  47. package/dist/ReadOnlyText.es.js +4 -2
  48. package/dist/ReadOnlyText.es.js.map +1 -1
  49. package/dist/ReadOnlyTextV2.cjs.js +3 -1
  50. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  51. package/dist/ReadOnlyTextV2.es.js +4 -2
  52. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  53. package/dist/Root.cjs.js +2 -0
  54. package/dist/Root.cjs.js.map +1 -1
  55. package/dist/Root.es.js +2 -0
  56. package/dist/Root.es.js.map +1 -1
  57. package/dist/SocialLinks.cjs.js +4 -2
  58. package/dist/SocialLinks.cjs.js.map +1 -1
  59. package/dist/SocialLinks.es.js +4 -2
  60. package/dist/SocialLinks.es.js.map +1 -1
  61. package/dist/Video.cjs.js +3 -1
  62. package/dist/Video.cjs.js.map +1 -1
  63. package/dist/Video.es.js +3 -1
  64. package/dist/Video.es.js.map +1 -1
  65. package/dist/builder.cjs.js +4 -2
  66. package/dist/builder.cjs.js.map +1 -1
  67. package/dist/builder.es.js +4 -2
  68. package/dist/builder.es.js.map +1 -1
  69. package/dist/components.cjs.js +4 -2
  70. package/dist/components.cjs.js.map +1 -1
  71. package/dist/components.es.js +4 -2
  72. package/dist/components.es.js.map +1 -1
  73. package/dist/control-serialization.cjs.js +5 -0
  74. package/dist/control-serialization.cjs.js.map +1 -1
  75. package/dist/control-serialization.es.js +5 -0
  76. package/dist/control-serialization.es.js.map +1 -1
  77. package/dist/controls.cjs.js +8 -2
  78. package/dist/controls.cjs.js.map +1 -1
  79. package/dist/controls.es.js +5 -3
  80. package/dist/controls.es.js.map +1 -1
  81. package/dist/index.cjs.js +32 -4
  82. package/dist/index.cjs.js.map +1 -1
  83. package/dist/index.cjs2.js +5 -2
  84. package/dist/index.cjs2.js.map +1 -1
  85. package/dist/index.cjs8.js +3 -1
  86. package/dist/index.cjs8.js.map +1 -1
  87. package/dist/index.cjs9.js +2 -0
  88. package/dist/index.cjs9.js.map +1 -1
  89. package/dist/index.es.js +33 -5
  90. package/dist/index.es.js.map +1 -1
  91. package/dist/index.es2.js +6 -3
  92. package/dist/index.es2.js.map +1 -1
  93. package/dist/index.es5.js +1 -1
  94. package/dist/index.es6.js +1 -1
  95. package/dist/index.es8.js +4 -2
  96. package/dist/index.es8.js.map +1 -1
  97. package/dist/index.es9.js +3 -1
  98. package/dist/index.es9.js.map +1 -1
  99. package/dist/main.cjs.js +4 -2
  100. package/dist/main.cjs.js.map +1 -1
  101. package/dist/main.es.js +4 -2
  102. package/dist/main.es.js.map +1 -1
  103. package/dist/next.cjs.js +3 -1
  104. package/dist/next.cjs.js.map +1 -1
  105. package/dist/next.es.js +3 -1
  106. package/dist/next.es.js.map +1 -1
  107. package/dist/prop-controllers.cjs.js +4 -2
  108. package/dist/prop-controllers.cjs.js.map +1 -1
  109. package/dist/prop-controllers.es.js +4 -2
  110. package/dist/prop-controllers.es.js.map +1 -1
  111. package/dist/react-page.cjs.js +207 -28
  112. package/dist/react-page.cjs.js.map +1 -1
  113. package/dist/react-page.es.js +203 -29
  114. package/dist/react-page.es.js.map +1 -1
  115. package/dist/react.cjs.js +4 -2
  116. package/dist/react.cjs.js.map +1 -1
  117. package/dist/react.es.js +4 -2
  118. package/dist/react.es.js.map +1 -1
  119. package/dist/slate.cjs.js +4 -2
  120. package/dist/slate.cjs.js.map +1 -1
  121. package/dist/slate.es.js +5 -3
  122. package/dist/slate.es.js.map +1 -1
  123. package/dist/toText.cjs.js +5 -0
  124. package/dist/toText.cjs.js.map +1 -1
  125. package/dist/toText.es.js +6 -1
  126. package/dist/toText.es.js.map +1 -1
  127. package/dist/types/src/controls/control.d.ts +2 -1
  128. package/dist/types/src/controls/control.d.ts.map +1 -1
  129. package/dist/types/src/controls/list.d.ts +7 -1
  130. package/dist/types/src/controls/list.d.ts.map +1 -1
  131. package/dist/types/src/controls/rich-text/__test__/dto.test.d.ts +2 -0
  132. package/dist/types/src/controls/rich-text/__test__/dto.test.d.ts.map +1 -0
  133. package/dist/types/src/controls/rich-text/{translation.d.ts → dto.d.ts} +1 -1
  134. package/dist/types/src/controls/rich-text/dto.d.ts.map +1 -0
  135. package/dist/types/src/controls/rich-text/index.d.ts +1 -1
  136. package/dist/types/src/controls/rich-text/index.d.ts.map +1 -1
  137. package/dist/types/src/controls/rich-text-v2/__test__/fixtures/rearranged.d.ts +10 -0
  138. package/dist/types/src/controls/rich-text-v2/__test__/fixtures/rearranged.d.ts.map +1 -0
  139. package/dist/types/src/controls/rich-text-v2/__test__/fixtures/simple.d.ts +20 -0
  140. package/dist/types/src/controls/rich-text-v2/__test__/fixtures/simple.d.ts.map +1 -0
  141. package/dist/types/src/controls/rich-text-v2/__test__/translation.test.d.ts.map +1 -0
  142. package/dist/types/src/controls/rich-text-v2/dto.d.ts +5 -0
  143. package/dist/types/src/controls/rich-text-v2/dto.d.ts.map +1 -0
  144. package/dist/types/src/controls/rich-text-v2/index.d.ts +1 -1
  145. package/dist/types/src/controls/rich-text-v2/index.d.ts.map +1 -1
  146. package/dist/types/src/controls/rich-text-v2/translation.d.ts +4 -4
  147. package/dist/types/src/controls/rich-text-v2/translation.d.ts.map +1 -1
  148. package/dist/types/src/controls/shape.d.ts +5 -1
  149. package/dist/types/src/controls/shape.d.ts.map +1 -1
  150. package/dist/types/src/controls/slot.d.ts +5 -1
  151. package/dist/types/src/controls/slot.d.ts.map +1 -1
  152. package/dist/types/src/next/api-handler/handlers/merge-translated-data.d.ts +13 -0
  153. package/dist/types/src/next/api-handler/handlers/merge-translated-data.d.ts.map +1 -0
  154. package/dist/types/src/next/api-handler/index.d.ts +5 -2
  155. package/dist/types/src/next/api-handler/index.d.ts.map +1 -1
  156. package/dist/types/src/next/client.d.ts +1 -0
  157. package/dist/types/src/next/client.d.ts.map +1 -1
  158. package/dist/types/src/prop-controllers/descriptors.d.ts +5 -1
  159. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  160. package/dist/types/src/runtimes/react/index.d.ts +2 -0
  161. package/dist/types/src/runtimes/react/index.d.ts.map +1 -1
  162. package/dist/types/src/slate/types.d.ts +5 -0
  163. package/dist/types/src/slate/types.d.ts.map +1 -1
  164. package/dist/types/src/slate/utils/element.d.ts +1 -1
  165. package/dist/types/src/slate/utils/element.d.ts.map +1 -1
  166. package/dist/types/src/state/react-page.d.ts +6 -0
  167. package/dist/types/src/state/react-page.d.ts.map +1 -1
  168. package/package.json +3 -1
  169. package/dist/types/src/controls/rich-text/__test__/translation.test.d.ts.map +0 -1
  170. package/dist/types/src/controls/rich-text/translation.d.ts.map +0 -1
  171. package/dist/types/src/controls/rich-text-v2/translatableData.d.ts +0 -3
  172. package/dist/types/src/controls/rich-text-v2/translatableData.d.ts.map +0 -1
  173. /package/dist/types/src/controls/{rich-text → rich-text-v2}/__test__/translation.test.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Navigation.es.js","sources":["../src/components/icons/mobile-menu-28.svg","../src/components/builtin/Navigation/components/LinksPlaceholder/index.tsx","../src/components/icons/caret-down-8.svg","../src/components/icons/plus-8.svg","../src/components/icons/arrow-down-8.svg","../src/components/icons/chevron-down-8.svg","../src/components/builtin/Navigation/components/DropDownButton/index.tsx","../src/components/icons/times-16.svg","../src/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.tsx","../src/components/builtin/Navigation/components/MobileMenu/index.tsx","../src/components/builtin/Navigation/Navigation.tsx"],"sourcesContent":["export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CiAgPHBhdGggZD0iTTI3IDE1SDFhMSAxIDAgMCAxLTEtMSAxIDEgMCAwIDEgMS0xaDI2YTEgMSAwIDAgMSAxIDEgMSAxIDAgMCAxLTEgMXptMC0xMEgxYTEgMSAwIDAgMC0xIDEgMSAxIDAgMCAwIDEgMWgyNmExIDEgMCAwIDAgMS0xIDEgMSAwIDAgMC0xLTF6bTAgMTZIMWExIDEgMCAwIDAtMSAxIDEgMSAwIDAgMCAxIDFoMjZhMSAxIDAgMCAwIDEtMSAxIDEgMCAwIDAtMS0xeiIvPgo8L3N2Zz4=\"","import { ResponsiveLengthValue } from '../../../../../prop-controllers/descriptors'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport GutterContainer from '../../../../shared/GutterContainer'\n\ntype PlaceholderLinkProps = {\n width: number\n button?: boolean\n}\n\nfunction PlaceholderLink({ width, button }: PlaceholderLinkProps) {\n return (\n <div\n className={useStyle({\n width,\n height: button === true ? 32 : 8,\n backgroundColor: '#a1a8c2',\n borderRadius: button === true ? 6 : 2,\n opacity: 0.4,\n })}\n />\n )\n}\n\ntype Props = { gutter?: ResponsiveLengthValue }\n\nconst links = [{ width: 50 }, { width: 70 }, { width: 60 }, { width: 80, button: true }]\n\nexport default function LinksPlaceholder({ gutter }: Props): JSX.Element {\n return (\n <>\n {links.map((link, i) => (\n <GutterContainer key={i} gutter={gutter} first={i === 0} last={i === links.length - 1}>\n <PlaceholderLink {...link} />\n </GutterContainer>\n ))}\n </>\n )\n}\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xIDJhMSAxIDAgMCAwLS43MDcgMS43MDdsMyAzYTEgMSAwIDAgMCAxLjQxNCAwbDMtM0ExIDEgMCAwIDAgNyAySDF6Ii8+PC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik00IDBhMSAxIDAgMCAwLTEgMXYySDFhMSAxIDAgMSAwIDAgMmgydjJhMSAxIDAgMCAwIDIgMFY1aDJhMSAxIDAgMCAwIDAtMkg1VjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4=\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik01IDFhMSAxIDAgMCAwLTIgMHYzLjU4NmwtLjI5My0uMjkzYTEgMSAwIDAgMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMCAwIDEuNDE0IDBsMi0yYTEgMSAwIDAgMC0xLjQxNC0xLjQxNEw1IDQuNTg2VjF6Ii8+PC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNLjI5MyAyLjI5M2ExIDEgMCAwIDEgMS40MTQgMEw0IDQuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAgMSAxLjQxNCAxLjQxNGwtMyAzYTEgMSAwIDAgMS0xLjQxNCAwbC0zLTNhMSAxIDAgMCAxIDAtMS40MTR6Ii8+PC9zdmc+\"","import { ComponentPropsWithoutRef, ForwardedRef, forwardRef, useRef, useState } from 'react'\n\nimport { ReactComponent as CaretDown8 } from '../../../../icons/caret-down-8.svg'\nimport { ReactComponent as Plus8 } from '../../../../icons/plus-8.svg'\nimport { ReactComponent as ArrowDown8 } from '../../../../icons/arrow-down-8.svg'\nimport { ReactComponent as ChevronDown8 } from '../../../../icons/chevron-down-8.svg'\nimport {\n ResponsiveColorValue,\n TextStyleValue,\n LinkValue,\n} from '../../../../../prop-controllers/descriptors'\nimport { colorToString } from '../../../../utils/colorToString'\nimport { useResponsiveColor } from '../../../../hooks'\n\nimport { Link } from '../../../../shared/Link'\nimport Button from '../../../Button'\nimport { useIsomorphicLayoutEffect } from '../../../../hooks/useIsomorphicLayoutEffect'\nimport { cx, keyframes } from '@emotion/css'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { useResponsiveStyle, useResponsiveTextStyle } from '../../../../utils/responsive-style'\n\nconst DROP_DOWN_MENU_WIDTH = 200\n\ntype Position = 'left' | 'right'\n\nconst DROP_DOWN_MENU_CLASS_NAME = 'drop-down-menu'\n\ntype DropDownMenuBaseProps = {\n position: Position\n}\n\ntype DropDownMenuProps = DropDownMenuBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof DropDownMenuBaseProps>\n\nfunction DropDownMenu({ className, position, ...restOfProps }: DropDownMenuProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n DROP_DOWN_MENU_CLASS_NAME,\n useStyle({\n position: 'absolute',\n top: '100%',\n left: position === 'left' ? 0 : 'auto',\n right: position === 'right' ? 0 : 'auto',\n background: '#fff',\n margin: 0,\n padding: '8px 0',\n borderRadius: 4,\n boxShadow: '0 3px 10px rgba(0, 0, 0, 0.15)',\n width: DROP_DOWN_MENU_WIDTH,\n zIndex: 99,\n listStyle: 'none',\n overflow: 'hidden',\n transformOrigin: '50% 0',\n willChange: 'transform, opacity',\n transformStyle: 'preserve-3d',\n display: 'none',\n }),\n className,\n )}\n />\n )\n}\n\nconst dropIn = keyframes`\n 0% {\n opacity: 0;\n transform: rotateX(-20deg);\n }\n 100% {\n opacity: 1;\n transform: none;\n }\n`\n\ntype DropDownContainerProps = ComponentPropsWithoutRef<'div'>\n\nconst DropDownContainer = forwardRef(function DropDownContainer(\n { className, ...restOfProps }: DropDownContainerProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({\n position: 'relative',\n [`&:hover .${DROP_DOWN_MENU_CLASS_NAME}`]: {\n display: 'block',\n animation: `${dropIn} 0.25s`,\n },\n }),\n className,\n )}\n />\n )\n})\n\ntype BaseDropDownItemProps = {\n className?: string\n color?: ResponsiveColorValue\n textStyle?: TextStyleValue\n}\n\ntype DropDownItemProps = BaseDropDownItemProps &\n Omit<ComponentPropsWithoutRef<typeof Link>, keyof BaseDropDownItemProps>\n\nfunction DropDownItem({ className, color, textStyle, ...restOfProps }: DropDownItemProps) {\n const colorData = useResponsiveColor(color)\n\n return (\n <Link\n {...restOfProps}\n className={cx(\n useStyle({\n display: 'block',\n textDecoration: 'none',\n lineHeight: 1.4,\n padding: '8px 16px',\n color: 'black',\n backgroundColor: 'transparent',\n transition: 'background-color 0.2s',\n }),\n useStyle(useResponsiveTextStyle(textStyle)),\n useStyle(\n useResponsiveStyle([colorData, textStyle] as const, ([color, textStyle = {}]) => {\n const fontSize = textStyle.fontSize || { value: 14, unit: 'px' }\n const fontWeight = textStyle.fontWeight == null ? 'normal' : textStyle.fontWeight\n const fontStyle = textStyle.fontStyle || []\n const letterSpacing = textStyle.letterSpacing == null ? null : textStyle.letterSpacing\n const textTransform = textStyle.textTransform || []\n\n return {\n color: color == null ? 'black' : colorToString(color),\n fontSize: `${fontSize.value}${fontSize.unit}`,\n fontWeight,\n fontStyle: fontStyle.includes('italic') ? 'italic' : 'normal',\n letterSpacing: letterSpacing == null ? 'normal' : `${letterSpacing}px`,\n textTransform: textTransform.includes('uppercase') ? 'uppercase' : 'none',\n }\n }),\n ),\n useStyle({\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n },\n }),\n className,\n )}\n />\n )\n}\n\ntype Props = Omit<ComponentPropsWithoutRef<typeof Button>, 'textColor' | 'color'> & {\n label: string\n caret?: 'caret' | 'plus' | 'arrow-down' | 'chevron-down'\n links?: Array<{\n id: string\n payload: ComponentPropsWithoutRef<typeof DropDownItem> & {\n link?: LinkValue\n label: string\n }\n }>\n textColor?: ResponsiveColorValue\n color?: ResponsiveColorValue\n}\n\nexport default function DropDownButton({\n label,\n caret = 'caret',\n links = [],\n textColor,\n color,\n ...restOfProps\n}: Props): JSX.Element {\n const container = useRef<HTMLDivElement>(null)\n const [position, setPosition] = useState<Position>('left')\n\n useIsomorphicLayoutEffect(() => {\n if (\n container.current &&\n container.current.ownerDocument.defaultView!.innerWidth <\n container.current.offsetLeft + DROP_DOWN_MENU_WIDTH\n ) {\n setPosition('right')\n } else {\n setPosition('left')\n }\n }, [setPosition])\n\n return (\n <DropDownContainer ref={container}>\n <Button\n {...restOfProps}\n textColor={useResponsiveColor(textColor)}\n color={useResponsiveColor(color)}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <span style={{ marginRight: 6 }}>{label}</span>\n <span style={{ display: 'inline-flex', fill: 'currentColor' }}>\n {caret === 'caret' && <CaretDown8 />}\n {caret === 'plus' && <Plus8 />}\n {caret === 'arrow-down' && <ArrowDown8 />}\n {caret === 'chevron-down' && <ChevronDown8 />}\n </span>\n </div>\n </Button>\n <DropDownMenu position={position}>\n {links.map(({ id, payload }) => (\n <DropDownItem {...payload} key={id}>\n {payload.label}\n </DropDownItem>\n ))}\n </DropDownMenu>\n </DropDownContainer>\n )\n}\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy43MDcgMy43MDdhMSAxIDAgMCAwLTEuNDE0LTEuNDE0TDggNi41ODYgMy43MDcgMi4yOTNhMSAxIDAgMCAwLTEuNDE0IDEuNDE0TDYuNTg2IDhsLTQuMjkzIDQuMjkzYTEgMSAwIDEgMCAxLjQxNCAxLjQxNEw4IDkuNDE0bDQuMjkzIDQuMjkzYTEgMSAwIDAgMCAxLjQxNC0xLjQxNEw5LjQxNCA4bDQuMjkzLTQuMjkzWiIvPgo8L3N2Zz4=\"","import { ComponentPropsWithoutRef, useState } from 'react'\n\nimport {\n ResponsiveColorValue,\n TextStyleValue,\n LinkValue,\n} from '../../../../../../../prop-controllers/descriptors'\nimport { colorToString } from '../../../../../../utils/colorToString'\nimport { useResponsiveColor } from '../../../../../../hooks'\n\nimport { ReactComponent as CaretDown8 } from '../../../../../../icons/caret-down-8.svg'\nimport { ReactComponent as Plus8 } from '../../../../../../icons/plus-8.svg'\nimport { ReactComponent as ArrowDown8 } from '../../../../../../icons/arrow-down-8.svg'\nimport { ReactComponent as ChevronDown8 } from '../../../../../../icons/chevron-down-8.svg'\n\nimport { Link } from '../../../../../../shared/Link'\nimport Button from '../../../../../Button'\nimport { cx } from '@emotion/css'\nimport { useStyle } from '../../../../../../../runtimes/react/use-style'\nimport {\n useResponsiveStyle,\n useResponsiveTextStyle,\n} from '../../../../../../utils/responsive-style'\n\ntype DropDownMenuBaseProps = {\n className?: string\n open: boolean\n}\n\ntype DropDownMenuProps = DropDownMenuBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof DropDownMenuBaseProps>\n\nfunction DropDownMenu({ className, open, ...restOfProps }: DropDownMenuProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({ display: open ? 'flex' : 'none', flexDirection: 'column', padding: 8 }),\n className,\n )}\n />\n )\n}\n\ntype ButtonLinkBaseProps = {\n className?: string\n}\n\ntype ButtonLinkProps = ButtonLinkBaseProps &\n Omit<ComponentPropsWithoutRef<typeof Button>, keyof ButtonLinkBaseProps>\n\nfunction ButtonLink({ className, ...restOfProps }: ButtonLinkProps) {\n return <Button {...restOfProps} className={cx(useStyle({ margin: '8px 0' }), className)} />\n}\n\ntype BaseDropDownItemProps = {\n className?: string\n color?: ResponsiveColorValue\n textStyle?: TextStyleValue\n}\n\ntype DropDownItemProps = BaseDropDownItemProps &\n Omit<ComponentPropsWithoutRef<typeof Link>, keyof BaseDropDownItemProps>\n\nfunction DropDownItem({ color, className, textStyle, ...restOfProps }: DropDownItemProps) {\n const colorData = useResponsiveColor(color)\n\n return (\n <Link\n {...restOfProps}\n className={cx(\n useStyle({\n textDecoration: 'none',\n lineHeight: 1.4,\n padding: '8px 16px',\n color: 'black',\n }),\n useStyle(useResponsiveTextStyle(textStyle)),\n useStyle(\n useResponsiveStyle([colorData] as const, ([color]) => ({\n color: color == null ? 'black' : colorToString(color),\n })),\n ),\n className,\n )}\n />\n )\n}\n\ntype Props = Omit<ComponentPropsWithoutRef<typeof Button>, 'textColor' | 'color'> & {\n label: string\n links?: Array<{\n id: string\n payload: ComponentPropsWithoutRef<typeof DropDownItem> & {\n link?: LinkValue\n label: string\n }\n }>\n onClose?: () => unknown\n caret?: string\n textColor?: ResponsiveColorValue\n color?: ResponsiveColorValue\n}\n\nexport default function MobileDropDownButton({\n label,\n caret,\n links = [],\n onClose = () => {},\n color,\n textColor,\n ...restOfProps\n}: Props): JSX.Element {\n const [isOpen, setIsOpen] = useState(false)\n return (\n <>\n <ButtonLink\n {...restOfProps}\n textColor={useResponsiveColor(textColor)}\n color={useResponsiveColor(color)}\n onPointerDown={() => setIsOpen(prev => !prev)}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <span style={{ marginRight: 6 }}>{label}</span>\n <span style={{ display: 'inline-flex', fill: 'currentColor' }}>\n <>\n {caret === 'caret' && <CaretDown8 />}\n {caret === 'plus' && <Plus8 />}\n {caret === 'arrow-down' && <ArrowDown8 />}\n {caret === 'chevron-down' && <ChevronDown8 />}\n </>\n </span>\n </div>\n </ButtonLink>\n <DropDownMenu open={isOpen}>\n {links.map(({ id, payload }) => (\n <DropDownItem {...payload} key={id} onClick={onClose}>\n {payload.label}\n </DropDownItem>\n ))}\n </DropDownMenu>\n </>\n )\n}\n","import { ComponentPropsWithoutRef, Fragment } from 'react'\n\nimport {\n ResponsiveValue,\n NavigationLinksValue,\n NavigationButton as NavigationButtonValue,\n} from '../../../../../prop-controllers/descriptors'\nimport { ColorValue as Color } from '../../../../utils/types'\nimport { colorToString } from '../../../../utils/colorToString'\nimport { ReactComponent as Times16 } from '../../../../icons/times-16.svg'\n\nimport Button from '../../../Button'\nimport DropDownButton from './components/MobileDropDownButton'\nimport { ResponsiveColor } from '../../../../../runtimes/react/controls'\nimport { useResponsiveColor } from '../../../../hooks'\nimport { cx } from '@emotion/css'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { useResponsiveStyle } from '../../../../utils/responsive-style'\n\ntype NavigationButtonProps = NavigationButtonValue['payload'] &\n Omit<ComponentPropsWithoutRef<typeof Button>, 'color' | 'textColor'>\n\nfunction ButtonLink({\n className,\n textColor,\n color,\n ...restOfProps\n}: NavigationButtonProps): JSX.Element {\n return (\n <Button\n {...restOfProps}\n className={cx(useStyle({ margin: '8px 0' }), className)}\n textColor={useResponsiveColor(textColor)}\n color={useResponsiveColor(color)}\n />\n )\n}\n\ntype ContainerBaseProps = {\n className?: string\n animation?: ResponsiveValue<'coverRight' | 'coverLeft'>\n backgroundColor?: ResponsiveValue<Color> | null\n open: boolean\n}\n\ntype ContainerProps = ContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof ContainerBaseProps>\n\nfunction Container({\n className,\n animation,\n backgroundColor,\n open,\n ...restOfProps\n}: ContainerProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'fixed',\n flexDirection: 'column',\n width: '100%',\n padding: '40px 15px',\n transition: 'transform 300ms ease-in-out',\n overflowY: 'auto',\n zIndex: 9999,\n maxWidth: 575,\n }),\n useStyle(\n useResponsiveStyle(\n [animation, backgroundColor] as const,\n ([animation, backgroundColor]) => {\n if (animation == null) return { display: 'none' }\n\n return {\n display: 'flex',\n backgroundColor: backgroundColor == null ? 'black' : colorToString(backgroundColor),\n transform: open\n ? `translate3d(0,0,0)`\n : `translate3d(${{ coverRight: '', coverLeft: '-' }[animation]}100%, 0, 0)`,\n ...{\n coverRight: { top: 0, bottom: 0, right: 0 },\n coverLeft: { top: 0, bottom: 0, left: 0 },\n }[animation],\n }\n },\n ),\n ),\n className,\n )}\n />\n )\n}\n\ntype CloseIconContainerBaseProps = {\n className?: string\n color?: ResponsiveColor | null\n}\n\ntype CloseIconContainerProps = CloseIconContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'button'>, keyof CloseIconContainerBaseProps>\n\nfunction CloseIconContainer({ className, color, ...restOfProps }: CloseIconContainerProps) {\n return (\n <button\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'absolute',\n top: 15,\n right: 15,\n padding: 0,\n border: 0,\n outline: 0,\n background: 'none',\n fill: 'currentcolor',\n }),\n useStyle(\n useResponsiveStyle([color] as const, ([color]) => ({\n color: color == null ? 'rgba(161, 168, 194, 0.5)' : colorToString(color),\n })),\n ),\n className,\n )}\n />\n )\n}\n\ntype Props = {\n animation?: ResponsiveValue<'coverRight' | 'coverLeft'>\n backgroundColor?: ResponsiveColor | null\n closeIconColor?: ResponsiveColor | null\n links?: NavigationLinksValue\n onClose?: () => unknown\n open?: boolean\n}\n\nexport default function MobileMenu({\n animation,\n backgroundColor,\n open = false,\n closeIconColor,\n links = [],\n onClose = () => {},\n}: Props): JSX.Element {\n return (\n <Container animation={animation} backgroundColor={backgroundColor} open={open}>\n <CloseIconContainer color={closeIconColor} onClick={onClose}>\n <Times16 />\n </CloseIconContainer>\n <div\n style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', flexShrink: 0 }}\n >\n {links.map(link => (\n <Fragment key={link.id}>\n {link.type === 'button' && (\n <ButtonLink {...link.payload} onClick={onClose}>\n {link.payload.label}\n </ButtonLink>\n )}\n {link.type === 'dropdown' && <DropDownButton {...link.payload} onClose={onClose} />}\n </Fragment>\n ))}\n </div>\n </Container>\n )\n}\n","import { ComponentPropsWithoutRef, ForwardedRef, forwardRef, useState } from 'react'\n\nimport { ReactComponent as MobileMenu28 } from '../../icons/mobile-menu-28.svg'\n\nimport GutterContainer from '../../shared/GutterContainer'\nimport Image from '../Image'\nimport Button from '../Button'\nimport LinksPlaceholder from './components/LinksPlaceholder'\nimport DropDownButton from './components/DropDownButton'\nimport MobileMenu from './components/MobileMenu'\nimport {\n ResponsiveValue,\n CheckboxValue,\n ElementIDValue,\n GapXValue,\n ImageValue,\n LinkValue,\n NavigationLinksValue,\n ResponsiveIconRadioGroupValue,\n ResponsiveLengthValue,\n ResponsiveSelectValue,\n TextInputValue,\n TextStyleValue,\n NavigationButton as NavigationButtonValue,\n} from '../../../prop-controllers/descriptors'\nimport { ColorValue as Color } from '../../utils/types'\nimport { colorToString } from '../../utils/colorToString'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\nimport { useResponsiveColor } from '../../hooks'\nimport { cx } from '@emotion/css'\nimport { useResponsiveStyle, useResponsiveTextStyle } from '../../utils/responsive-style'\nimport { useStyle } from '../../../runtimes/react/use-style'\n\ntype Props = {\n id?: ElementIDValue\n links?: NavigationLinksValue\n linkTextStyle?: TextStyleValue\n showLogo?: CheckboxValue\n logoFile?: ImageValue\n logoWidth?: ResponsiveLengthValue\n logoAltText?: TextInputValue\n logoLink?: LinkValue\n alignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gutter?: GapXValue\n mobileMenuAnimation?: ResponsiveSelectValue<'coverRight' | 'coverLeft'>\n mobileMenuOpenIconColor?: ResponsiveColor | null\n mobileMenuCloseIconColor?: ResponsiveColor | null\n mobileMenuBackgroundColor?: ResponsiveColor | null\n width?: string\n margin?: string\n}\n\ntype ContainerBaseProps = {\n width?: string\n margin?: string\n textStyle: Props['linkTextStyle']\n gutter: Props['gutter']\n}\n\ntype ContainerProps = ContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'nav'>, keyof ContainerBaseProps>\n\nconst Container = forwardRef(function Container(\n { className, width, margin, textStyle, gutter, ...restOfProps }: ContainerProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n return (\n <nav\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({ display: 'flex', alignItems: 'center' }),\n width,\n margin,\n useStyle(useResponsiveTextStyle(textStyle)),\n useStyle(\n useResponsiveStyle([gutter] as const, ([gutter = { value: 0, unit: 'px' }]) => ({\n gap: `${gutter.value}${gutter.unit}`,\n })),\n ),\n className,\n )}\n />\n )\n})\n\ntype LinksContainerBaseProps = {\n alignment: Props['alignment']\n mobileMenuAnimation: Props['mobileMenuAnimation']\n}\n\ntype LinksContainerProps = LinksContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof LinksContainerBaseProps>\n\nfunction LinksContainer({\n className,\n alignment,\n mobileMenuAnimation,\n ...restOfProps\n}: LinksContainerProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n display: 'flex',\n alignItems: 'center',\n flexGrow: 1,\n }),\n useStyle(\n useResponsiveStyle(\n [alignment, mobileMenuAnimation] as const,\n ([alignment = 'flex-end', mobileMenuAnimation]) => ({\n display: mobileMenuAnimation == null ? 'flex' : 'none',\n justifyContent: alignment,\n }),\n ),\n ),\n className,\n )}\n />\n )\n}\n\ntype OpenIconContainerBaseProps = {\n mobileMenuAnimation: Props['mobileMenuAnimation']\n alignment: Props['alignment']\n color: ResponsiveValue<Color> | null | undefined\n}\n\ntype OpenIconContainerProps = OpenIconContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'button'>, keyof OpenIconContainerBaseProps>\n\nfunction OpenIconContainer({\n className,\n mobileMenuAnimation,\n alignment,\n color,\n ...restOfProps\n}: OpenIconContainerProps) {\n return (\n <button\n {...restOfProps}\n className={cx(\n useStyle({\n display: 'none',\n flexGrow: 1,\n alignItems: 'center',\n background: 'none',\n outline: 0,\n border: 0,\n padding: 0,\n fill: 'currentcolor',\n }),\n useStyle(\n useResponsiveStyle(\n [mobileMenuAnimation, alignment, color] as const,\n ([mobileMenuAnimation, alignment = 'flex-end', color]) => ({\n display: mobileMenuAnimation == null ? 'none' : 'flex',\n justifyContent: alignment,\n color: color == null ? 'rgba(161, 168, 194, 0.5)' : colorToString(color),\n }),\n ),\n ),\n className,\n )}\n />\n )\n}\n\ntype NavigationButtonProps = NavigationButtonValue['payload'] &\n Omit<ComponentPropsWithoutRef<typeof Button>, 'color' | 'textColor'>\n\nfunction NavigationButton(props: NavigationButtonProps): JSX.Element {\n const { textColor, color, ...restOfProps } = props\n\n return (\n <Button\n {...restOfProps}\n textColor={useResponsiveColor(textColor)}\n color={useResponsiveColor(color)}\n />\n )\n}\n\nconst placeholder = {\n src: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='93.12' height='36' viewBox='0 0 93.12 36'%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Layer_1-2' data-name='Layer 1'%3E%3Cpath d='M18,0A18,18,0,1,1,0,18,18,18,0,0,1,18,0ZM49.36,21.94h6.36V24H46.8V10h2.56Zm9.06.72a4.88,4.88,0,0,1-1.64-3.72,5,5,0,0,1,1.64-3.74,5.57,5.57,0,0,1,7.7,0,5.09,5.09,0,0,1,.26,7.18l-.26.26a5.56,5.56,0,0,1-7.7,0Zm1.68-6a3.39,3.39,0,0,0,0,4.52,3,3,0,0,0,4.24.08l.08-.08a3.39,3.39,0,0,0,0-4.52,3,3,0,0,0-4.24-.08Zm10,10.68,1-1.92a5.28,5.28,0,0,0,3.3,1.22,3.6,3.6,0,0,0,2.32-.72,2.73,2.73,0,0,0,.9-2.26V22.5a3.61,3.61,0,0,1-1.45,1.26,4.35,4.35,0,0,1-2,.46,4.57,4.57,0,0,1-3.58-1.54A5.48,5.48,0,0,1,69.2,18.9a5.42,5.42,0,0,1,1.36-3.74,4.64,4.64,0,0,1,3.62-1.5,4,4,0,0,1,3.44,1.72v-1.5h2.46v9a6.13,6.13,0,0,1-1.43,4.46,5.27,5.27,0,0,1-4,1.44,7.09,7.09,0,0,1-4.53-1.42Zm1.54-8.44a3.4,3.4,0,0,0,.82,2.3,2.72,2.72,0,0,0,2.17.94,3.13,3.13,0,0,0,1.21-.22,2.89,2.89,0,0,0,1-.62,3.08,3.08,0,0,0,.63-1,3.62,3.62,0,0,0,.21-1.3,4,4,0,0,0-.23-1.33,3.3,3.3,0,0,0-.63-1.05,2.74,2.74,0,0,0-1-.68,3.35,3.35,0,0,0-1.25-.24,2.92,2.92,0,0,0-1.2.24,2.58,2.58,0,0,0-.93.67,3,3,0,0,0-.59,1,3.89,3.89,0,0,0-.19,1.31ZM83.8,22.66a4.88,4.88,0,0,1-1.64-3.72A5,5,0,0,1,83.8,15.2a5.57,5.57,0,0,1,7.7,0,5.09,5.09,0,0,1,.26,7.18,3.19,3.19,0,0,1-.26.26,5.56,5.56,0,0,1-7.7,0Zm1.68-6a3.39,3.39,0,0,0,0,4.52,3,3,0,0,0,4.24.08l.08-.08a3.39,3.39,0,0,0,0-4.52,3,3,0,0,0-4.24-.08Z' fill='%23a1a8c2' opacity='0.4' style='isolation: isolate'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\n dimensions: { width: 93, height: 36 },\n}\n\nconst Navigation = forwardRef<HTMLDivElement, Props>(function Navigation(\n {\n id,\n links = [],\n linkTextStyle,\n showLogo,\n logoFile,\n logoWidth,\n logoAltText,\n logoLink,\n alignment,\n gutter,\n mobileMenuAnimation,\n mobileMenuOpenIconColor,\n mobileMenuCloseIconColor,\n mobileMenuBackgroundColor,\n width,\n margin,\n },\n ref,\n) {\n const [isOpen, setIsOpen] = useState(false)\n\n return (\n <Container\n ref={ref}\n id={id}\n width={width}\n margin={margin}\n textStyle={linkTextStyle}\n gutter={gutter}\n >\n {showLogo === true && (\n <Image\n altText={logoAltText}\n file={logoFile}\n link={logoLink}\n placeholder={placeholder}\n width={logoWidth}\n />\n )}\n <div style={{ display: 'flex', flexGrow: 1, justifyContent: 'flex-end' }}>\n <LinksContainer alignment={alignment} mobileMenuAnimation={mobileMenuAnimation}>\n {links.length > 0 ? (\n links.map((link, i) => (\n <GutterContainer\n key={link.id}\n gutter={gutter}\n first={i === 0}\n last={i === links.length - 1}\n >\n {link.type === 'button' && (\n <NavigationButton {...link.payload}>{link.payload.label}</NavigationButton>\n )}\n {link.type === 'dropdown' && <DropDownButton {...link.payload} />}\n </GutterContainer>\n ))\n ) : (\n <LinksPlaceholder gutter={gutter} />\n )}\n </LinksContainer>\n <OpenIconContainer\n alignment={alignment}\n color={mobileMenuOpenIconColor}\n mobileMenuAnimation={mobileMenuAnimation}\n onClick={() => setIsOpen(true)}\n >\n <MobileMenu28 />\n </OpenIconContainer>\n <MobileMenu\n animation={mobileMenuAnimation}\n backgroundColor={mobileMenuBackgroundColor}\n closeIconColor={mobileMenuCloseIconColor}\n links={links}\n onClose={() => setIsOpen(false)}\n open={isOpen}\n />\n </div>\n </Container>\n )\n})\n\nexport default Navigation\n"],"names":["_path","_extends","width","button","useStyle","height","backgroundColor","borderRadius","opacity","links","gutter","_Fragment","map","link","i","length","DROP_DOWN_MENU_WIDTH","DROP_DOWN_MENU_CLASS_NAME","className","position","restOfProps","cx","top","left","right","background","margin","padding","boxShadow","zIndex","listStyle","overflow","transformOrigin","willChange","transformStyle","display","dropIn","keyframes","DropDownContainer","forwardRef","ref","animation","color","textStyle","colorData","useResponsiveColor","textDecoration","lineHeight","transition","useResponsiveTextStyle","useResponsiveStyle","fontSize","value","unit","fontWeight","fontStyle","letterSpacing","textTransform","colorToString","includes","label","caret","textColor","container","useRef","setPosition","useState","useIsomorphicLayoutEffect","current","ownerDocument","defaultView","innerWidth","offsetLeft","_jsx","alignItems","marginRight","_jsxs","fill","CaretDown8","Plus8","ArrowDown8","ChevronDown8","DropDownMenu","id","payload","DropDownItem","open","flexDirection","onClose","isOpen","setIsOpen","ButtonLink","prev","overflowY","maxWidth","transform","coverRight","coverLeft","bottom","border","outline","closeIconColor","Container","Times16","flexShrink","Fragment","type","DropDownButton","gap","alignment","mobileMenuAnimation","flexGrow","justifyContent","props","placeholder","src","dimensions","Navigation","linkTextStyle","showLogo","logoFile","logoWidth","logoAltText","logoLink","mobileMenuOpenIconColor","mobileMenuCloseIconColor","mobileMenuBackgroundColor","Image","MobileMenu28"],"mappings":"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"}
1
+ {"version":3,"file":"Navigation.es.js","sources":["../src/components/icons/mobile-menu-28.svg","../src/components/builtin/Navigation/components/LinksPlaceholder/index.tsx","../src/components/icons/caret-down-8.svg","../src/components/icons/plus-8.svg","../src/components/icons/arrow-down-8.svg","../src/components/icons/chevron-down-8.svg","../src/components/builtin/Navigation/components/DropDownButton/index.tsx","../src/components/icons/times-16.svg","../src/components/builtin/Navigation/components/MobileMenu/components/MobileDropDownButton/index.tsx","../src/components/builtin/Navigation/components/MobileMenu/index.tsx","../src/components/builtin/Navigation/Navigation.tsx"],"sourcesContent":["export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CiAgPHBhdGggZD0iTTI3IDE1SDFhMSAxIDAgMCAxLTEtMSAxIDEgMCAwIDEgMS0xaDI2YTEgMSAwIDAgMSAxIDEgMSAxIDAgMCAxLTEgMXptMC0xMEgxYTEgMSAwIDAgMC0xIDEgMSAxIDAgMCAwIDEgMWgyNmExIDEgMCAwIDAgMS0xIDEgMSAwIDAgMC0xLTF6bTAgMTZIMWExIDEgMCAwIDAtMSAxIDEgMSAwIDAgMCAxIDFoMjZhMSAxIDAgMCAwIDEtMSAxIDEgMCAwIDAtMS0xeiIvPgo8L3N2Zz4=\"","import { ResponsiveLengthValue } from '../../../../../prop-controllers/descriptors'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport GutterContainer from '../../../../shared/GutterContainer'\n\ntype PlaceholderLinkProps = {\n width: number\n button?: boolean\n}\n\nfunction PlaceholderLink({ width, button }: PlaceholderLinkProps) {\n return (\n <div\n className={useStyle({\n width,\n height: button === true ? 32 : 8,\n backgroundColor: '#a1a8c2',\n borderRadius: button === true ? 6 : 2,\n opacity: 0.4,\n })}\n />\n )\n}\n\ntype Props = { gutter?: ResponsiveLengthValue }\n\nconst links = [{ width: 50 }, { width: 70 }, { width: 60 }, { width: 80, button: true }]\n\nexport default function LinksPlaceholder({ gutter }: Props): JSX.Element {\n return (\n <>\n {links.map((link, i) => (\n <GutterContainer key={i} gutter={gutter} first={i === 0} last={i === links.length - 1}>\n <PlaceholderLink {...link} />\n </GutterContainer>\n ))}\n </>\n )\n}\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik0xIDJhMSAxIDAgMCAwLS43MDcgMS43MDdsMyAzYTEgMSAwIDAgMCAxLjQxNCAwbDMtM0ExIDEgMCAwIDAgNyAySDF6Ii8+PC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik00IDBhMSAxIDAgMCAwLTEgMXYySDFhMSAxIDAgMSAwIDAgMmgydjJhMSAxIDAgMCAwIDIgMFY1aDJhMSAxIDAgMCAwIDAtMkg1VjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4=\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Ik01IDFhMSAxIDAgMCAwLTIgMHYzLjU4NmwtLjI5My0uMjkzYTEgMSAwIDAgMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMCAwIDEuNDE0IDBsMi0yYTEgMSAwIDAgMC0xLjQxNC0xLjQxNEw1IDQuNTg2VjF6Ii8+PC9zdmc+\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNLjI5MyAyLjI5M2ExIDEgMCAwIDEgMS40MTQgMEw0IDQuNTg2bDIuMjkzLTIuMjkzYTEgMSAwIDAgMSAxLjQxNCAxLjQxNGwtMyAzYTEgMSAwIDAgMS0xLjQxNCAwbC0zLTNhMSAxIDAgMCAxIDAtMS40MTR6Ii8+PC9zdmc+\"","import { ComponentPropsWithoutRef, ForwardedRef, forwardRef, useRef, useState } from 'react'\n\nimport { ReactComponent as CaretDown8 } from '../../../../icons/caret-down-8.svg'\nimport { ReactComponent as Plus8 } from '../../../../icons/plus-8.svg'\nimport { ReactComponent as ArrowDown8 } from '../../../../icons/arrow-down-8.svg'\nimport { ReactComponent as ChevronDown8 } from '../../../../icons/chevron-down-8.svg'\nimport {\n ResponsiveColorValue,\n TextStyleValue,\n LinkValue,\n} from '../../../../../prop-controllers/descriptors'\nimport { colorToString } from '../../../../utils/colorToString'\nimport { useResponsiveColor } from '../../../../hooks'\n\nimport { Link } from '../../../../shared/Link'\nimport Button from '../../../Button'\nimport { useIsomorphicLayoutEffect } from '../../../../hooks/useIsomorphicLayoutEffect'\nimport { cx, keyframes } from '@emotion/css'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { useResponsiveStyle, useResponsiveTextStyle } from '../../../../utils/responsive-style'\n\nconst DROP_DOWN_MENU_WIDTH = 200\n\ntype Position = 'left' | 'right'\n\nconst DROP_DOWN_MENU_CLASS_NAME = 'drop-down-menu'\n\ntype DropDownMenuBaseProps = {\n position: Position\n}\n\ntype DropDownMenuProps = DropDownMenuBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof DropDownMenuBaseProps>\n\nfunction DropDownMenu({ className, position, ...restOfProps }: DropDownMenuProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n DROP_DOWN_MENU_CLASS_NAME,\n useStyle({\n position: 'absolute',\n top: '100%',\n left: position === 'left' ? 0 : 'auto',\n right: position === 'right' ? 0 : 'auto',\n background: '#fff',\n margin: 0,\n padding: '8px 0',\n borderRadius: 4,\n boxShadow: '0 3px 10px rgba(0, 0, 0, 0.15)',\n width: DROP_DOWN_MENU_WIDTH,\n zIndex: 99,\n listStyle: 'none',\n overflow: 'hidden',\n transformOrigin: '50% 0',\n willChange: 'transform, opacity',\n transformStyle: 'preserve-3d',\n display: 'none',\n }),\n className,\n )}\n />\n )\n}\n\nconst dropIn = keyframes`\n 0% {\n opacity: 0;\n transform: rotateX(-20deg);\n }\n 100% {\n opacity: 1;\n transform: none;\n }\n`\n\ntype DropDownContainerProps = ComponentPropsWithoutRef<'div'>\n\nconst DropDownContainer = forwardRef(function DropDownContainer(\n { className, ...restOfProps }: DropDownContainerProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <div\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({\n position: 'relative',\n [`&:hover .${DROP_DOWN_MENU_CLASS_NAME}`]: {\n display: 'block',\n animation: `${dropIn} 0.25s`,\n },\n }),\n className,\n )}\n />\n )\n})\n\ntype BaseDropDownItemProps = {\n className?: string\n color?: ResponsiveColorValue\n textStyle?: TextStyleValue\n}\n\ntype DropDownItemProps = BaseDropDownItemProps &\n Omit<ComponentPropsWithoutRef<typeof Link>, keyof BaseDropDownItemProps>\n\nfunction DropDownItem({ className, color, textStyle, ...restOfProps }: DropDownItemProps) {\n const colorData = useResponsiveColor(color)\n\n return (\n <Link\n {...restOfProps}\n className={cx(\n useStyle({\n display: 'block',\n textDecoration: 'none',\n lineHeight: 1.4,\n padding: '8px 16px',\n color: 'black',\n backgroundColor: 'transparent',\n transition: 'background-color 0.2s',\n }),\n useStyle(useResponsiveTextStyle(textStyle)),\n useStyle(\n useResponsiveStyle([colorData, textStyle] as const, ([color, textStyle = {}]) => {\n const fontSize = textStyle.fontSize || { value: 14, unit: 'px' }\n const fontWeight = textStyle.fontWeight == null ? 'normal' : textStyle.fontWeight\n const fontStyle = textStyle.fontStyle || []\n const letterSpacing = textStyle.letterSpacing == null ? null : textStyle.letterSpacing\n const textTransform = textStyle.textTransform || []\n\n return {\n color: color == null ? 'black' : colorToString(color),\n fontSize: `${fontSize.value}${fontSize.unit}`,\n fontWeight,\n fontStyle: fontStyle.includes('italic') ? 'italic' : 'normal',\n letterSpacing: letterSpacing == null ? 'normal' : `${letterSpacing}px`,\n textTransform: textTransform.includes('uppercase') ? 'uppercase' : 'none',\n }\n }),\n ),\n useStyle({\n '&:hover': {\n backgroundColor: 'rgba(0, 0, 0, 0.04)',\n },\n }),\n className,\n )}\n />\n )\n}\n\ntype Props = Omit<ComponentPropsWithoutRef<typeof Button>, 'textColor' | 'color'> & {\n label: string\n caret?: 'caret' | 'plus' | 'arrow-down' | 'chevron-down'\n links?: Array<{\n id: string\n payload: ComponentPropsWithoutRef<typeof DropDownItem> & {\n link?: LinkValue\n label: string\n }\n }>\n textColor?: ResponsiveColorValue\n color?: ResponsiveColorValue\n}\n\nexport default function DropDownButton({\n label,\n caret = 'caret',\n links = [],\n textColor,\n color,\n ...restOfProps\n}: Props): JSX.Element {\n const container = useRef<HTMLDivElement>(null)\n const [position, setPosition] = useState<Position>('left')\n\n useIsomorphicLayoutEffect(() => {\n if (\n container.current &&\n container.current.ownerDocument.defaultView!.innerWidth <\n container.current.offsetLeft + DROP_DOWN_MENU_WIDTH\n ) {\n setPosition('right')\n } else {\n setPosition('left')\n }\n }, [setPosition])\n\n return (\n <DropDownContainer ref={container}>\n <Button\n {...restOfProps}\n textColor={useResponsiveColor(textColor)}\n color={useResponsiveColor(color)}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <span style={{ marginRight: 6 }}>{label}</span>\n <span style={{ display: 'inline-flex', fill: 'currentColor' }}>\n {caret === 'caret' && <CaretDown8 />}\n {caret === 'plus' && <Plus8 />}\n {caret === 'arrow-down' && <ArrowDown8 />}\n {caret === 'chevron-down' && <ChevronDown8 />}\n </span>\n </div>\n </Button>\n <DropDownMenu position={position}>\n {links.map(({ id, payload }) => (\n <DropDownItem {...payload} key={id}>\n {payload.label}\n </DropDownItem>\n ))}\n </DropDownMenu>\n </DropDownContainer>\n )\n}\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy43MDcgMy43MDdhMSAxIDAgMCAwLTEuNDE0LTEuNDE0TDggNi41ODYgMy43MDcgMi4yOTNhMSAxIDAgMCAwLTEuNDE0IDEuNDE0TDYuNTg2IDhsLTQuMjkzIDQuMjkzYTEgMSAwIDEgMCAxLjQxNCAxLjQxNEw4IDkuNDE0bDQuMjkzIDQuMjkzYTEgMSAwIDAgMCAxLjQxNC0xLjQxNEw5LjQxNCA4bDQuMjkzLTQuMjkzWiIvPgo8L3N2Zz4=\"","import { ComponentPropsWithoutRef, useState } from 'react'\n\nimport {\n ResponsiveColorValue,\n TextStyleValue,\n LinkValue,\n} from '../../../../../../../prop-controllers/descriptors'\nimport { colorToString } from '../../../../../../utils/colorToString'\nimport { useResponsiveColor } from '../../../../../../hooks'\n\nimport { ReactComponent as CaretDown8 } from '../../../../../../icons/caret-down-8.svg'\nimport { ReactComponent as Plus8 } from '../../../../../../icons/plus-8.svg'\nimport { ReactComponent as ArrowDown8 } from '../../../../../../icons/arrow-down-8.svg'\nimport { ReactComponent as ChevronDown8 } from '../../../../../../icons/chevron-down-8.svg'\n\nimport { Link } from '../../../../../../shared/Link'\nimport Button from '../../../../../Button'\nimport { cx } from '@emotion/css'\nimport { useStyle } from '../../../../../../../runtimes/react/use-style'\nimport {\n useResponsiveStyle,\n useResponsiveTextStyle,\n} from '../../../../../../utils/responsive-style'\n\ntype DropDownMenuBaseProps = {\n className?: string\n open: boolean\n}\n\ntype DropDownMenuProps = DropDownMenuBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof DropDownMenuBaseProps>\n\nfunction DropDownMenu({ className, open, ...restOfProps }: DropDownMenuProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({ display: open ? 'flex' : 'none', flexDirection: 'column', padding: 8 }),\n className,\n )}\n />\n )\n}\n\ntype ButtonLinkBaseProps = {\n className?: string\n}\n\ntype ButtonLinkProps = ButtonLinkBaseProps &\n Omit<ComponentPropsWithoutRef<typeof Button>, keyof ButtonLinkBaseProps>\n\nfunction ButtonLink({ className, ...restOfProps }: ButtonLinkProps) {\n return <Button {...restOfProps} className={cx(useStyle({ margin: '8px 0' }), className)} />\n}\n\ntype BaseDropDownItemProps = {\n className?: string\n color?: ResponsiveColorValue\n textStyle?: TextStyleValue\n}\n\ntype DropDownItemProps = BaseDropDownItemProps &\n Omit<ComponentPropsWithoutRef<typeof Link>, keyof BaseDropDownItemProps>\n\nfunction DropDownItem({ color, className, textStyle, ...restOfProps }: DropDownItemProps) {\n const colorData = useResponsiveColor(color)\n\n return (\n <Link\n {...restOfProps}\n className={cx(\n useStyle({\n textDecoration: 'none',\n lineHeight: 1.4,\n padding: '8px 16px',\n color: 'black',\n }),\n useStyle(useResponsiveTextStyle(textStyle)),\n useStyle(\n useResponsiveStyle([colorData] as const, ([color]) => ({\n color: color == null ? 'black' : colorToString(color),\n })),\n ),\n className,\n )}\n />\n )\n}\n\ntype Props = Omit<ComponentPropsWithoutRef<typeof Button>, 'textColor' | 'color'> & {\n label: string\n links?: Array<{\n id: string\n payload: ComponentPropsWithoutRef<typeof DropDownItem> & {\n link?: LinkValue\n label: string\n }\n }>\n onClose?: () => unknown\n caret?: string\n textColor?: ResponsiveColorValue\n color?: ResponsiveColorValue\n}\n\nexport default function MobileDropDownButton({\n label,\n caret,\n links = [],\n onClose = () => {},\n color,\n textColor,\n ...restOfProps\n}: Props): JSX.Element {\n const [isOpen, setIsOpen] = useState(false)\n return (\n <>\n <ButtonLink\n {...restOfProps}\n textColor={useResponsiveColor(textColor)}\n color={useResponsiveColor(color)}\n onPointerDown={() => setIsOpen(prev => !prev)}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n <span style={{ marginRight: 6 }}>{label}</span>\n <span style={{ display: 'inline-flex', fill: 'currentColor' }}>\n <>\n {caret === 'caret' && <CaretDown8 />}\n {caret === 'plus' && <Plus8 />}\n {caret === 'arrow-down' && <ArrowDown8 />}\n {caret === 'chevron-down' && <ChevronDown8 />}\n </>\n </span>\n </div>\n </ButtonLink>\n <DropDownMenu open={isOpen}>\n {links.map(({ id, payload }) => (\n <DropDownItem {...payload} key={id} onClick={onClose}>\n {payload.label}\n </DropDownItem>\n ))}\n </DropDownMenu>\n </>\n )\n}\n","import { ComponentPropsWithoutRef, Fragment } from 'react'\n\nimport {\n ResponsiveValue,\n NavigationLinksValue,\n NavigationButton as NavigationButtonValue,\n} from '../../../../../prop-controllers/descriptors'\nimport { ColorValue as Color } from '../../../../utils/types'\nimport { colorToString } from '../../../../utils/colorToString'\nimport { ReactComponent as Times16 } from '../../../../icons/times-16.svg'\n\nimport Button from '../../../Button'\nimport DropDownButton from './components/MobileDropDownButton'\nimport { ResponsiveColor } from '../../../../../runtimes/react/controls'\nimport { useResponsiveColor } from '../../../../hooks'\nimport { cx } from '@emotion/css'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { useResponsiveStyle } from '../../../../utils/responsive-style'\n\ntype NavigationButtonProps = NavigationButtonValue['payload'] &\n Omit<ComponentPropsWithoutRef<typeof Button>, 'color' | 'textColor'>\n\nfunction ButtonLink({\n className,\n textColor,\n color,\n ...restOfProps\n}: NavigationButtonProps): JSX.Element {\n return (\n <Button\n {...restOfProps}\n className={cx(useStyle({ margin: '8px 0' }), className)}\n textColor={useResponsiveColor(textColor)}\n color={useResponsiveColor(color)}\n />\n )\n}\n\ntype ContainerBaseProps = {\n className?: string\n animation?: ResponsiveValue<'coverRight' | 'coverLeft'>\n backgroundColor?: ResponsiveValue<Color> | null\n open: boolean\n}\n\ntype ContainerProps = ContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof ContainerBaseProps>\n\nfunction Container({\n className,\n animation,\n backgroundColor,\n open,\n ...restOfProps\n}: ContainerProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'fixed',\n flexDirection: 'column',\n width: '100%',\n padding: '40px 15px',\n transition: 'transform 300ms ease-in-out',\n overflowY: 'auto',\n zIndex: 9999,\n maxWidth: 575,\n }),\n useStyle(\n useResponsiveStyle(\n [animation, backgroundColor] as const,\n ([animation, backgroundColor]) => {\n if (animation == null) return { display: 'none' }\n\n return {\n display: 'flex',\n backgroundColor: backgroundColor == null ? 'black' : colorToString(backgroundColor),\n transform: open\n ? `translate3d(0,0,0)`\n : `translate3d(${{ coverRight: '', coverLeft: '-' }[animation]}100%, 0, 0)`,\n ...{\n coverRight: { top: 0, bottom: 0, right: 0 },\n coverLeft: { top: 0, bottom: 0, left: 0 },\n }[animation],\n }\n },\n ),\n ),\n className,\n )}\n />\n )\n}\n\ntype CloseIconContainerBaseProps = {\n className?: string\n color?: ResponsiveColor | null\n}\n\ntype CloseIconContainerProps = CloseIconContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'button'>, keyof CloseIconContainerBaseProps>\n\nfunction CloseIconContainer({ className, color, ...restOfProps }: CloseIconContainerProps) {\n return (\n <button\n {...restOfProps}\n className={cx(\n useStyle({\n position: 'absolute',\n top: 15,\n right: 15,\n padding: 0,\n border: 0,\n outline: 0,\n background: 'none',\n fill: 'currentcolor',\n }),\n useStyle(\n useResponsiveStyle([color] as const, ([color]) => ({\n color: color == null ? 'rgba(161, 168, 194, 0.5)' : colorToString(color),\n })),\n ),\n className,\n )}\n />\n )\n}\n\ntype Props = {\n animation?: ResponsiveValue<'coverRight' | 'coverLeft'>\n backgroundColor?: ResponsiveColor | null\n closeIconColor?: ResponsiveColor | null\n links?: NavigationLinksValue\n onClose?: () => unknown\n open?: boolean\n}\n\nexport default function MobileMenu({\n animation,\n backgroundColor,\n open = false,\n closeIconColor,\n links = [],\n onClose = () => {},\n}: Props): JSX.Element {\n return (\n <Container animation={animation} backgroundColor={backgroundColor} open={open}>\n <CloseIconContainer color={closeIconColor} onClick={onClose}>\n <Times16 />\n </CloseIconContainer>\n <div\n style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', flexShrink: 0 }}\n >\n {links.map(link => (\n <Fragment key={link.id}>\n {link.type === 'button' && (\n <ButtonLink {...link.payload} onClick={onClose}>\n {link.payload.label}\n </ButtonLink>\n )}\n {link.type === 'dropdown' && <DropDownButton {...link.payload} onClose={onClose} />}\n </Fragment>\n ))}\n </div>\n </Container>\n )\n}\n","import { ComponentPropsWithoutRef, ForwardedRef, forwardRef, useState } from 'react'\n\nimport { ReactComponent as MobileMenu28 } from '../../icons/mobile-menu-28.svg'\n\nimport GutterContainer from '../../shared/GutterContainer'\nimport Image from '../Image'\nimport Button from '../Button'\nimport LinksPlaceholder from './components/LinksPlaceholder'\nimport DropDownButton from './components/DropDownButton'\nimport MobileMenu from './components/MobileMenu'\nimport {\n ResponsiveValue,\n CheckboxValue,\n ElementIDValue,\n GapXValue,\n ImageValue,\n LinkValue,\n NavigationLinksValue,\n ResponsiveIconRadioGroupValue,\n ResponsiveLengthValue,\n ResponsiveSelectValue,\n TextInputValue,\n TextStyleValue,\n NavigationButton as NavigationButtonValue,\n} from '../../../prop-controllers/descriptors'\nimport { ColorValue as Color } from '../../utils/types'\nimport { colorToString } from '../../utils/colorToString'\nimport { ResponsiveColor } from '../../../runtimes/react/controls'\nimport { useResponsiveColor } from '../../hooks'\nimport { cx } from '@emotion/css'\nimport { useResponsiveStyle, useResponsiveTextStyle } from '../../utils/responsive-style'\nimport { useStyle } from '../../../runtimes/react/use-style'\n\ntype Props = {\n id?: ElementIDValue\n links?: NavigationLinksValue\n linkTextStyle?: TextStyleValue\n showLogo?: CheckboxValue\n logoFile?: ImageValue\n logoWidth?: ResponsiveLengthValue\n logoAltText?: TextInputValue\n logoLink?: LinkValue\n alignment?: ResponsiveIconRadioGroupValue<'flex-start' | 'center' | 'flex-end'>\n gutter?: GapXValue\n mobileMenuAnimation?: ResponsiveSelectValue<'coverRight' | 'coverLeft'>\n mobileMenuOpenIconColor?: ResponsiveColor | null\n mobileMenuCloseIconColor?: ResponsiveColor | null\n mobileMenuBackgroundColor?: ResponsiveColor | null\n width?: string\n margin?: string\n}\n\ntype ContainerBaseProps = {\n width?: string\n margin?: string\n textStyle: Props['linkTextStyle']\n gutter: Props['gutter']\n}\n\ntype ContainerProps = ContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'nav'>, keyof ContainerBaseProps>\n\nconst Container = forwardRef(function Container(\n { className, width, margin, textStyle, gutter, ...restOfProps }: ContainerProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n return (\n <nav\n {...restOfProps}\n ref={ref}\n className={cx(\n useStyle({ display: 'flex', alignItems: 'center' }),\n width,\n margin,\n useStyle(useResponsiveTextStyle(textStyle)),\n useStyle(\n useResponsiveStyle([gutter] as const, ([gutter = { value: 0, unit: 'px' }]) => ({\n gap: `${gutter.value}${gutter.unit}`,\n })),\n ),\n className,\n )}\n />\n )\n})\n\ntype LinksContainerBaseProps = {\n alignment: Props['alignment']\n mobileMenuAnimation: Props['mobileMenuAnimation']\n}\n\ntype LinksContainerProps = LinksContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'div'>, keyof LinksContainerBaseProps>\n\nfunction LinksContainer({\n className,\n alignment,\n mobileMenuAnimation,\n ...restOfProps\n}: LinksContainerProps) {\n return (\n <div\n {...restOfProps}\n className={cx(\n useStyle({\n display: 'flex',\n alignItems: 'center',\n flexGrow: 1,\n }),\n useStyle(\n useResponsiveStyle(\n [alignment, mobileMenuAnimation] as const,\n ([alignment = 'flex-end', mobileMenuAnimation]) => ({\n display: mobileMenuAnimation == null ? 'flex' : 'none',\n justifyContent: alignment,\n }),\n ),\n ),\n className,\n )}\n />\n )\n}\n\ntype OpenIconContainerBaseProps = {\n mobileMenuAnimation: Props['mobileMenuAnimation']\n alignment: Props['alignment']\n color: ResponsiveValue<Color> | null | undefined\n}\n\ntype OpenIconContainerProps = OpenIconContainerBaseProps &\n Omit<ComponentPropsWithoutRef<'button'>, keyof OpenIconContainerBaseProps>\n\nfunction OpenIconContainer({\n className,\n mobileMenuAnimation,\n alignment,\n color,\n ...restOfProps\n}: OpenIconContainerProps) {\n return (\n <button\n {...restOfProps}\n className={cx(\n useStyle({\n display: 'none',\n flexGrow: 1,\n alignItems: 'center',\n background: 'none',\n outline: 0,\n border: 0,\n padding: 0,\n fill: 'currentcolor',\n }),\n useStyle(\n useResponsiveStyle(\n [mobileMenuAnimation, alignment, color] as const,\n ([mobileMenuAnimation, alignment = 'flex-end', color]) => ({\n display: mobileMenuAnimation == null ? 'none' : 'flex',\n justifyContent: alignment,\n color: color == null ? 'rgba(161, 168, 194, 0.5)' : colorToString(color),\n }),\n ),\n ),\n className,\n )}\n />\n )\n}\n\ntype NavigationButtonProps = NavigationButtonValue['payload'] &\n Omit<ComponentPropsWithoutRef<typeof Button>, 'color' | 'textColor'>\n\nfunction NavigationButton(props: NavigationButtonProps): JSX.Element {\n const { textColor, color, ...restOfProps } = props\n\n return (\n <Button\n {...restOfProps}\n textColor={useResponsiveColor(textColor)}\n color={useResponsiveColor(color)}\n />\n )\n}\n\nconst placeholder = {\n src: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='93.12' height='36' viewBox='0 0 93.12 36'%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Layer_1-2' data-name='Layer 1'%3E%3Cpath d='M18,0A18,18,0,1,1,0,18,18,18,0,0,1,18,0ZM49.36,21.94h6.36V24H46.8V10h2.56Zm9.06.72a4.88,4.88,0,0,1-1.64-3.72,5,5,0,0,1,1.64-3.74,5.57,5.57,0,0,1,7.7,0,5.09,5.09,0,0,1,.26,7.18l-.26.26a5.56,5.56,0,0,1-7.7,0Zm1.68-6a3.39,3.39,0,0,0,0,4.52,3,3,0,0,0,4.24.08l.08-.08a3.39,3.39,0,0,0,0-4.52,3,3,0,0,0-4.24-.08Zm10,10.68,1-1.92a5.28,5.28,0,0,0,3.3,1.22,3.6,3.6,0,0,0,2.32-.72,2.73,2.73,0,0,0,.9-2.26V22.5a3.61,3.61,0,0,1-1.45,1.26,4.35,4.35,0,0,1-2,.46,4.57,4.57,0,0,1-3.58-1.54A5.48,5.48,0,0,1,69.2,18.9a5.42,5.42,0,0,1,1.36-3.74,4.64,4.64,0,0,1,3.62-1.5,4,4,0,0,1,3.44,1.72v-1.5h2.46v9a6.13,6.13,0,0,1-1.43,4.46,5.27,5.27,0,0,1-4,1.44,7.09,7.09,0,0,1-4.53-1.42Zm1.54-8.44a3.4,3.4,0,0,0,.82,2.3,2.72,2.72,0,0,0,2.17.94,3.13,3.13,0,0,0,1.21-.22,2.89,2.89,0,0,0,1-.62,3.08,3.08,0,0,0,.63-1,3.62,3.62,0,0,0,.21-1.3,4,4,0,0,0-.23-1.33,3.3,3.3,0,0,0-.63-1.05,2.74,2.74,0,0,0-1-.68,3.35,3.35,0,0,0-1.25-.24,2.92,2.92,0,0,0-1.2.24,2.58,2.58,0,0,0-.93.67,3,3,0,0,0-.59,1,3.89,3.89,0,0,0-.19,1.31ZM83.8,22.66a4.88,4.88,0,0,1-1.64-3.72A5,5,0,0,1,83.8,15.2a5.57,5.57,0,0,1,7.7,0,5.09,5.09,0,0,1,.26,7.18,3.19,3.19,0,0,1-.26.26,5.56,5.56,0,0,1-7.7,0Zm1.68-6a3.39,3.39,0,0,0,0,4.52,3,3,0,0,0,4.24.08l.08-.08a3.39,3.39,0,0,0,0-4.52,3,3,0,0,0-4.24-.08Z' fill='%23a1a8c2' opacity='0.4' style='isolation: isolate'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\n dimensions: { width: 93, height: 36 },\n}\n\nconst Navigation = forwardRef<HTMLDivElement, Props>(function Navigation(\n {\n id,\n links = [],\n linkTextStyle,\n showLogo,\n logoFile,\n logoWidth,\n logoAltText,\n logoLink,\n alignment,\n gutter,\n mobileMenuAnimation,\n mobileMenuOpenIconColor,\n mobileMenuCloseIconColor,\n mobileMenuBackgroundColor,\n width,\n margin,\n },\n ref,\n) {\n const [isOpen, setIsOpen] = useState(false)\n\n return (\n <Container\n ref={ref}\n id={id}\n width={width}\n margin={margin}\n textStyle={linkTextStyle}\n gutter={gutter}\n >\n {showLogo === true && (\n <Image\n altText={logoAltText}\n file={logoFile}\n link={logoLink}\n placeholder={placeholder}\n width={logoWidth}\n />\n )}\n <div style={{ display: 'flex', flexGrow: 1, justifyContent: 'flex-end' }}>\n <LinksContainer alignment={alignment} mobileMenuAnimation={mobileMenuAnimation}>\n {links.length > 0 ? (\n links.map((link, i) => (\n <GutterContainer\n key={link.id}\n gutter={gutter}\n first={i === 0}\n last={i === links.length - 1}\n >\n {link.type === 'button' && (\n <NavigationButton {...link.payload}>{link.payload.label}</NavigationButton>\n )}\n {link.type === 'dropdown' && <DropDownButton {...link.payload} />}\n </GutterContainer>\n ))\n ) : (\n <LinksPlaceholder gutter={gutter} />\n )}\n </LinksContainer>\n <OpenIconContainer\n alignment={alignment}\n color={mobileMenuOpenIconColor}\n mobileMenuAnimation={mobileMenuAnimation}\n onClick={() => setIsOpen(true)}\n >\n <MobileMenu28 />\n </OpenIconContainer>\n <MobileMenu\n animation={mobileMenuAnimation}\n backgroundColor={mobileMenuBackgroundColor}\n closeIconColor={mobileMenuCloseIconColor}\n links={links}\n onClose={() => setIsOpen(false)}\n open={isOpen}\n />\n </div>\n </Container>\n )\n})\n\nexport default Navigation\n"],"names":["_path","_extends","width","button","useStyle","height","backgroundColor","borderRadius","opacity","links","gutter","_Fragment","map","link","i","length","DROP_DOWN_MENU_WIDTH","DROP_DOWN_MENU_CLASS_NAME","className","position","restOfProps","cx","top","left","right","background","margin","padding","boxShadow","zIndex","listStyle","overflow","transformOrigin","willChange","transformStyle","display","dropIn","keyframes","DropDownContainer","forwardRef","ref","animation","color","textStyle","colorData","useResponsiveColor","textDecoration","lineHeight","transition","useResponsiveTextStyle","useResponsiveStyle","fontSize","value","unit","fontWeight","fontStyle","letterSpacing","textTransform","colorToString","includes","label","caret","textColor","container","useRef","setPosition","useState","useIsomorphicLayoutEffect","current","ownerDocument","defaultView","innerWidth","offsetLeft","_jsx","alignItems","marginRight","_jsxs","fill","CaretDown8","Plus8","ArrowDown8","ChevronDown8","DropDownMenu","id","payload","DropDownItem","open","flexDirection","onClose","isOpen","setIsOpen","ButtonLink","prev","overflowY","maxWidth","transform","coverRight","coverLeft","bottom","border","outline","closeIconColor","Container","Times16","flexShrink","Fragment","type","DropDownButton","gap","alignment","mobileMenuAnimation","flexGrow","justifyContent","props","placeholder","src","dimensions","Navigation","linkTextStyle","showLogo","logoFile","logoWidth","logoAltText","logoLink","mobileMenuOpenIconColor","mobileMenuCloseIconColor","mobileMenuBackgroundColor","Image","MobileMenu28"],"mappings":"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"}
@@ -39,6 +39,9 @@ require("ts-pattern");
39
39
  require("uuid");
40
40
  require("slate");
41
41
  require("escape-html");
42
+ require("slate-hyperscript");
43
+ require("parse5");
44
+ require("is-hotkey");
42
45
  require("use-sync-external-store/shim");
43
46
  require("./types.cjs.js");
44
47
  require("color");
@@ -59,7 +62,6 @@ require("./constants.cjs.js");
59
62
  require("corporate-ipsum");
60
63
  require("@emotion/serialize");
61
64
  require("@emotion/utils");
62
- require("is-hotkey");
63
65
  require("css-box-model");
64
66
  function _interopDefaultLegacy(e) {
65
67
  return e && typeof e === "object" && "default" in e ? e : { "default": e };
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewProvider.cjs.js","sources":["../src/state/modules/read-write-documents.ts","../src/state/modules/pointer.ts","../src/state/modules/element-imperative-handles.ts","../src/state/react-builder-preview.ts","../src/runtimes/react/components/PreviewProvider.tsx"],"sourcesContent":["import { Operation } from 'ot-json0'\nimport { removeIn, setIn } from 'immutable'\n\nimport * as ReadOnlyDocuments from './read-only-documents'\nimport { Action, ActionTypes } from '../actions'\n\nexport type { Document, Element, ElementData, ElementReference } from './read-only-documents'\nexport { isElementReference } from './read-only-documents'\nexport type { Operation }\n\nfunction apply(data: ReadOnlyDocuments.Element, operation: Operation): ReadOnlyDocuments.Element {\n let applied = data\n\n operation.forEach(component => {\n // @ts-expect-error: `ld` isn't in all possible values of `component`\n if (component.ld != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `od` isn't in all possible values of `component`\n if (component.od != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `li` isn't in all possible values of `component`\n if (component.li != null) applied = setIn(applied, component.p, component.li)\n\n // @ts-expect-error: `oi` isn't in all possible values of `component`\n if (component.oi != null) applied = setIn(applied, component.p, component.oi)\n })\n\n return applied\n}\n\nexport type State = ReadOnlyDocuments.State\n\nexport function getInitialState({\n rootElements,\n}: {\n rootElements?: Map<string, ReadOnlyDocuments.Element>\n} = {}): State {\n return ReadOnlyDocuments.getInitialState({ rootElements })\n}\n\nfunction getReadOnlyDocumentsStateSlice(state: State): ReadOnlyDocuments.State {\n return state\n}\n\nexport function getDocument(state: State, documentKey: string): ReadOnlyDocuments.Document | null {\n return ReadOnlyDocuments.getDocument(getReadOnlyDocumentsStateSlice(state), documentKey)\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n const nextState = ReadOnlyDocuments.reducer(state, action)\n\n switch (action.type) {\n case ActionTypes.CHANGE_DOCUMENT: {\n const currentRootElement = getDocument(nextState, action.payload.documentKey)?.rootElement\n\n if (currentRootElement == null) return nextState\n\n const nextRootElement = apply(currentRootElement, action.payload.operation)\n\n return currentRootElement === nextRootElement\n ? nextState\n : new Map(nextState).set(\n action.payload.documentKey,\n ReadOnlyDocuments.createDocument(action.payload.documentKey, nextRootElement),\n )\n }\n\n default:\n return nextState\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type Point = { x: number; y: number }\n\ntype State = {\n pointer: Point | null\n}\n\nfunction getInitialState(): State {\n return { pointer: null }\n}\n\nexport function getPointer(state: State): Point | null {\n return state.pointer\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.BUILDER_POINTER_MOVE:\n return { ...state, pointer: action.payload.pointer }\n\n default:\n return state\n }\n}\n","import { ElementImperativeHandle } from '../../runtimes/react/element-imperative-handle'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<string, Map<string, ElementImperativeHandle>>\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return state\n}\n\nfunction getInitialState(): State {\n return new Map()\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE:\n return new Map(state).set(\n action.payload.documentKey,\n new Map(new Map(state.get(action.payload.documentKey) ?? [])).set(\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const byElementKey = new Map(state.get(action.payload.documentKey) ?? [])\n\n const deleted = byElementKey.delete(action.payload.elementKey)\n\n if (!deleted) return state\n\n return new Map(state).set(action.payload.documentKey, byElementKey)\n }\n\n default:\n return state\n }\n}\n","import {\n applyMiddleware,\n combineReducers,\n createStore,\n Dispatch as ReduxDispatch,\n Middleware,\n MiddlewareAPI,\n PreloadedState,\n Store as ReduxStore,\n} from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\nimport Router from 'next/router'\n\nimport deepEqual from '../utils/deepEqual'\n\nimport * as Documents from './modules/read-write-documents'\nimport * as ReactComponents from './modules/react-components'\nimport * as BoxModels from './modules/box-models'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Pointer from './modules/pointer'\nimport * as ElementImperativeHandles from './modules/element-imperative-handles'\nimport * as Breakpoints from './modules/breakpoints'\nimport * as ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n registerDocument,\n registerComponentHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n setIsInBuilder,\n handleWheel,\n handlePointerMove,\n changePathnameStart,\n changePathnameComplete,\n elementFromPointChange,\n setBreakpoints,\n setLocale,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { serializeControls } from '../builder'\nimport { MakeswiftClient } from '../api/react'\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\n\nexport type { Operation } from './modules/read-write-documents'\nexport type { BoxModelHandle } from './modules/box-models'\nexport { createBox, getBox, parse } from './modules/box-models'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n reactComponents: ReactComponents.reducer,\n boxModels: BoxModels.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n pointer: Pointer.reducer,\n elementImperativeHandles: ElementImperativeHandles.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nfunction getBoxModelsStateSlice(state: State): BoxModels.State {\n return state.boxModels\n}\n\nfunction getMeasurables(state: State): Map<string, Map<string, BoxModels.Measurable>> {\n return BoxModels.getMeasurables(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModels(state: State): Map<string, Map<string, BoxModels.BoxModel>> {\n return BoxModels.getBoxModels(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModels.BoxModel | null {\n return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey)\n}\n\nfunction getComponentsMetaStateSlice(state: State): ComponentsMeta.State {\n return state.componentsMeta\n}\n\nfunction getComponentsMeta(state: State): Map<string, ComponentsMeta.ComponentMeta> {\n return ComponentsMeta.getComponentsMeta(getComponentsMetaStateSlice(state))\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nfunction getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nfunction getPointer(state: State): Pointer.Point | null {\n return Pointer.getPointer(state.pointer)\n}\n\nfunction getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles)\n}\n\nfunction getElementImperativeHandlesContainingElement(\n state: State,\n element: Element,\n): Map<string, Map<string, ElementImperativeHandle>> {\n const elementImperativeHandles = getElementImperativeHandles(state)\n const filteredElementImperativeHandles = new Map<string, Map<string, ElementImperativeHandle>>()\n\n for (const [documentKey, byElementKey] of elementImperativeHandles) {\n const filteredByElementKey = new Map<string, ElementImperativeHandle>()\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n const handleElement = elementImperativeHandle.getDomNode()\n\n if (handleElement?.contains(element)) {\n filteredByElementKey.set(elementKey, elementImperativeHandle)\n }\n }\n\n if (filteredByElementKey.size > 0) {\n filteredElementImperativeHandles.set(documentKey, filteredByElementKey)\n }\n }\n\n return filteredElementImperativeHandles\n}\n\nfunction measureElements(): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\n const measurables = getMeasurables(getState())\n const currentBoxModels = getBoxModels(getState())\n const measuredBoxModels = new Map<string, Map<string, BoxModels.BoxModel>>()\n\n measurables.forEach((documentMeasurables, documentKey) => {\n const measuredDocumentBoxModels = new Map<string, BoxModels.BoxModel>()\n\n documentMeasurables.forEach((measurable, elementKey) => {\n const boxModel = BoxModels.measure(measurable)\n\n if (boxModel != null) measuredDocumentBoxModels.set(elementKey, boxModel)\n })\n\n if (measuredDocumentBoxModels.size > 0) {\n measuredBoxModels.set(documentKey, measuredDocumentBoxModels)\n }\n })\n\n const changedBoxModels = new Map<string, Map<string, BoxModels.BoxModel | null>>()\n\n currentBoxModels.forEach((currentDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n currentDocumentBoxModels.forEach((_boxModel, elementKey) => {\n if (!measuredBoxModels.get(documentKey)?.has(elementKey)) {\n changedDocumentBoxModels.set(elementKey, null)\n }\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n })\n\n measuredBoxModels.forEach((measuredDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n measuredDocumentBoxModels.forEach((measuredBoxModel, elementKey) => {\n const currentBoxModel = getBoxModel(getState(), documentKey, elementKey)\n\n if (currentBoxModel == null || !deepEqual(currentBoxModel, measuredBoxModel)) {\n changedDocumentBoxModels.set(elementKey, measuredBoxModel)\n }\n })\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n\n if (changedBoxModels.size > 0) dispatch(changeElementBoxModels(changedBoxModels))\n }\n}\n\nexport function startMeasuringElements(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n dispatch(measureElements())\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nexport type Size = {\n offsetWidth: number\n offsetHeight: number\n clientWidth: number\n clientHeight: number\n scrollWidth: number\n scrollHeight: number\n scrollTop: number\n scrollLeft: number\n}\n\nfunction getElementSize(element: HTMLElement): Size {\n return {\n offsetWidth: element.offsetWidth,\n offsetHeight: element.offsetHeight,\n clientWidth: element.clientWidth,\n clientHeight: element.clientHeight,\n scrollWidth: element.scrollWidth,\n scrollHeight: element.scrollHeight,\n scrollTop: element.scrollTop,\n scrollLeft: element.scrollLeft,\n }\n}\n\nfunction lockDocumentScroll(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const lastDocumentOverflow = window.document.documentElement.style.overflow\n window.document.documentElement.style.overflow = 'hidden'\n\n window.document.documentElement.addEventListener('wheel', handleWheelEvent)\n\n return () => {\n window.document.documentElement.style.overflow = lastDocumentOverflow\n window.document.documentElement.removeEventListener('wheel', handleWheelEvent)\n }\n\n function handleWheelEvent({ deltaX, deltaY }: WheelEvent) {\n dispatch(handleWheel({ deltaX, deltaY }))\n }\n }\n}\n\nfunction startHandlingPointerMoveEvent(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n window.document.documentElement.addEventListener('pointermove', handlePointerMoveEvent)\n\n return () => {\n window.document.documentElement.removeEventListener('pointermove', handlePointerMoveEvent)\n }\n\n function handlePointerMoveEvent({ clientX, clientY }: PointerEvent) {\n dispatch(handlePointerMove({ clientX, clientY }))\n }\n }\n}\n\nfunction startHandlingFocusEvents(): ThunkAction<() => void, State, unknown, Action> {\n return (_dispatch, getState) => {\n window.addEventListener('focusin', handleFocusIn)\n window.addEventListener('focusout', handleFocusOut)\n\n return () => {\n window.removeEventListener('focusin', handleFocusIn)\n window.removeEventListener('focusout', handleFocusOut)\n }\n\n function handleFocusIn(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (!(event.target instanceof window.HTMLElement) || !event.target.isContentEditable) {\n window.parent.focus()\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (\n !(event.relatedTarget instanceof window.HTMLElement) ||\n !event.relatedTarget.isContentEditable\n ) {\n window.parent.focus()\n }\n }\n }\n}\n\nfunction startMeasuringDocumentElement(): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n let lastSize: Size\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n const nextSize = getElementSize(window.document.documentElement)\n\n if (!deepEqual(lastSize, nextSize)) {\n lastSize = nextSize\n\n dispatch(changeDocumentElementSize(nextSize))\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction elementKeysFromElementFromPoint(\n elementFromPoint: Element | null,\n): ThunkAction<{ documentKey: string; elementKey: string } | null, State, unknown, Action> {\n return (_dispatch, getState) => {\n if (elementFromPoint == null) return null\n\n const elementImperativeHandles = getElementImperativeHandlesContainingElement(\n getState(),\n elementFromPoint,\n )\n const acendingDepthDocumentKeys = ReactPage.getDocumentKeysSortedByDepth(getState())\n const descendingDepthDocumentKeys = acendingDepthDocumentKeys.slice().reverse()\n\n let currentElement: Element | null = elementFromPoint\n let keys = null\n\n while (currentElement != null) {\n for (const documentKey of descendingDepthDocumentKeys) {\n const byElementKey = elementImperativeHandles.get(documentKey)\n\n if (byElementKey == null) continue\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n if (elementImperativeHandle.getDomNode() === currentElement) {\n return { documentKey, elementKey }\n }\n }\n }\n\n currentElement = currentElement.parentElement\n }\n\n return keys\n }\n}\n\nfunction startPollingElementFromPoint(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n let lastElementFromPoint: Element | null = null\n let animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameRequestId)\n }\n\n function handleAnimationFrameRequest() {\n const pointer = getPointer(getState())\n const elementFromPoint =\n pointer == null ? null : document.elementFromPoint(pointer.x, pointer.y)\n\n if (elementFromPoint !== lastElementFromPoint) {\n lastElementFromPoint = elementFromPoint\n\n const keys = dispatch(elementKeysFromElementFromPoint(elementFromPoint))\n\n dispatch(elementFromPointChange(keys))\n }\n\n animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nexport function initialize(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n const stopHandlingFocusEvent = dispatch(startHandlingFocusEvents())\n const unlockDocumentScroll = dispatch(lockDocumentScroll())\n const stopHandlingPointerMoveEvent = dispatch(startHandlingPointerMoveEvent())\n const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint())\n dispatch(setIsInBuilder(true))\n\n return () => {\n stopMeasuringElements()\n stopMeasuringDocumentElement()\n stopHandlingFocusEvent()\n unlockDocumentScroll()\n stopHandlingPointerMoveEvent()\n stopPollingElementFromPoint()\n dispatch(setIsInBuilder(false))\n }\n }\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction measureBoxModelsMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch }: MiddlewareAPI<Dispatch>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE: {\n if (BoxModels.isMeasurable(action.payload.componentHandle)) {\n dispatch(\n registerMeasurable(\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n }\n\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE:\n dispatch(unregisterMeasurable(action.payload.documentKey, action.payload.elementKey))\n break\n }\n\n return next(action)\n }\n }\n}\n\nexport function messageChannelMiddleware(\n client: MakeswiftClient,\n): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n let cleanUp = () => {}\n\n if (typeof window === 'undefined') return cleanUp\n\n const messageChannel = new window.MessageChannel()\n\n window.parent.postMessage(messageChannel.port2, '*', [messageChannel.port2])\n\n messageChannel.port1.onmessage = (event: MessageEvent<Action>) => dispatch(event.data)\n\n const state = getState()\n const registeredComponentsMeta = getComponentsMeta(state)\n\n registeredComponentsMeta.forEach((componentMeta, componentType) => {\n const propControllerDescriptors = getComponentPropControllerDescriptors(\n state,\n componentType,\n )\n\n if (propControllerDescriptors != null) {\n const [serializedControls, transferables] = serializeControls(propControllerDescriptors)\n\n messageChannel.port1.postMessage(\n registerBuilderComponent(componentType, componentMeta, serializedControls),\n transferables,\n )\n }\n })\n\n const breakpoints = ReactPage.getBreakpoints(state)\n messageChannel.port1.postMessage(setBreakpoints(breakpoints))\n\n const routerLocale = Router.locale\n if (routerLocale != null) {\n messageChannel.port1.postMessage(setLocale(new Intl.Locale(routerLocale)))\n }\n\n Router.events.on('routeChangeStart', () => {\n messageChannel.port1.postMessage(changePathnameStart())\n })\n\n Router.events.on('routeChangeComplete', () => {\n messageChannel.port1.postMessage(changePathnameComplete())\n })\n\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case ActionTypes.MOUNT_COMPONENT:\n case ActionTypes.UNMOUNT_COMPONENT:\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case ActionTypes.HANDLE_WHEEL:\n case ActionTypes.HANDLE_POINTER_MOVE:\n case ActionTypes.ELEMENT_FROM_POINT_CHANGE:\n messageChannel.port1.postMessage(action)\n break\n\n case ActionTypes.REGISTER_COMPONENT: {\n const { type, meta, propControllerDescriptors } = action.payload\n const [serializedControls, transferables] = serializeControls(propControllerDescriptors)\n\n messageChannel.port1.postMessage(\n registerBuilderComponent(type, meta, serializedControls),\n transferables,\n )\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT:\n messageChannel.port1.postMessage(unregisterBuilderComponent(action.payload.type))\n break\n\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case ActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case ActionTypes.SET_BUILDER_EDIT_MODE:\n messageChannel.port1.postMessage(action)\n window.getSelection()?.removeAllRanges()\n break\n\n case ActionTypes.SET_LOCALE: {\n const { pathname: currentPathname, query } = Router\n const pathname = (action.payload.pathname ?? currentPathname).replace(/^\\//, '/')\n\n Router.replace({ pathname, query }, undefined, { locale: action.payload.locale })\n break\n }\n\n case ActionTypes.CHANGE_PATHNAME: {\n const pathname = action.payload.pathname.replace(/^\\//, '/')\n const currentPathname = Router.asPath.replace(/^\\//, '/')\n\n if (pathname !== currentPathname) Router.push(pathname)\n break\n }\n\n case ActionTypes.SET_LOCALIZED_RESOURCE_ID: {\n client.setLocalizedResourceId(action.payload)\n break\n }\n\n case ActionTypes.INIT:\n cleanUp = dispatch(initialize())\n break\n\n case ActionTypes.CLEAN_UP:\n cleanUp()\n break\n }\n\n return next(action)\n }\n }\n}\n\nfunction createAndRegisterPropControllers(\n documentKey: string,\n elementKey: string,\n): ThunkAction<Record<string, PropController> | null, State, unknown, Action> {\n return (dispatch, getState) => {\n const descriptors = ReactPage.getElementPropControllerDescriptors(\n getState(),\n documentKey,\n elementKey,\n )\n\n if (descriptors == null) return null\n\n const propControllers = Object.entries(descriptors).reduce((acc, [propName, descriptor]) => {\n const propController = createPropController(descriptor, message =>\n dispatch(messageBuilderPropController(documentKey, elementKey, propName, message)),\n ) as PropController\n\n return { ...acc, [propName]: propController }\n }, {} as Record<string, PropController>)\n\n dispatch(registerPropControllers(documentKey, elementKey, propControllers))\n\n return propControllers\n }\n}\n\nfunction propControllerHandlesMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey, componentHandle } = action.payload\n const element = ReactPage.getElement(getState(), documentKey, elementKey)\n const propControllers = dispatch(\n createAndRegisterPropControllers(documentKey, elementKey),\n )\n\n if (\n element != null &&\n !ReactPage.isElementReference(element) &&\n PropControllerHandles.isPropControllersHandle(componentHandle)\n ) {\n dispatch(registerPropControllersHandle(documentKey, elementKey, componentHandle))\n componentHandle.setPropControllers(propControllers)\n }\n\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const handle = PropControllerHandles.getPropControllersHandle(\n getPropControllerHandlesStateSlice(getState()),\n documentKey,\n elementKey,\n )\n\n handle?.setPropControllers(null)\n\n dispatch(unregisterPropControllers(documentKey, elementKey))\n\n break\n }\n\n case ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n }\n}\n\nif (import.meta.vitest) {\n const { describe, it, fn, expect } = import.meta.vitest\n\n describe('propControllerHandlesMiddleware', () => {\n it('registers prop controllers for element data', () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { key: 'elementKey', type: 'type', props: {} }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).toHaveBeenCalled()\n })\n\n it(\"doesn't register prop controllers for element references\", () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { type: 'reference', key: 'elementKey', value: 'value' }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).not.toHaveBeenCalled()\n })\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftClient,\n): Middleware<Dispatch, State, Dispatch> {\n return () => (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n client.makeswiftApiClient.dispatch(action)\n\n return next(action)\n }\n }\n}\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n rootElements,\n preloadedState,\n client,\n}: {\n rootElements?: Map<string, Documents.Element>\n preloadedState?: PreloadedState<State>\n client: MakeswiftClient\n}): Store {\n const initialState: PreloadedState<State> = {\n ...preloadedState,\n documents: Documents.getInitialState({ rootElements }),\n isPreview: IsPreview.getInitialState(true),\n }\n\n return createStore(\n reducer,\n initialState,\n applyMiddleware(\n thunk,\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(client),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n )\n}\n","import { ReactNode, useEffect, useMemo } from 'react'\n\nimport { StoreContext, ReactRuntime } from '..'\nimport * as ReactBuilderPreview from '../../../state/react-builder-preview'\nimport * as ReactPage from '../../../state/react-page'\nimport { MakeswiftProvider, MakeswiftClient } from '../../../api/react'\nimport { registerDocumentEffect } from '../../../state/actions'\n\ntype Props = {\n client: MakeswiftClient\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n runtime?: ReactRuntime\n}\n\nexport default function PreviewProvider({\n client,\n children,\n rootElements,\n runtime,\n}: Props): JSX.Element {\n const store = useMemo(\n () =>\n ReactBuilderPreview.configureStore({\n preloadedState: runtime ? runtime.store.getState() : ReactRuntime.store.getState(),\n rootElements,\n client,\n }),\n [client, rootElements, runtime],\n )\n\n useEffect(() => {\n const unregisterDocuments = Array.from(rootElements?.entries() ?? []).map(\n ([documentKey, rootElement]) =>\n store.dispatch(registerDocumentEffect(ReactPage.createDocument(documentKey, rootElement))),\n )\n\n return () => {\n unregisterDocuments.forEach(unregisterDocument => {\n unregisterDocument()\n })\n }\n }, [store, rootElements])\n\n return (\n <StoreContext.Provider value={store}>\n <MakeswiftProvider client={client}>{children}</MakeswiftProvider>\n </StoreContext.Provider>\n )\n}\n"],"names":["removeIn","setIn","ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocument","getInitialState","ReadOnlyDocuments.reducer","ActionTypes","ReadOnlyDocuments.createDocument","combineReducers","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","IsInBuilder.reducer","IsPreview.reducer","BuilderEditMode.reducer","Pointer.reducer","ElementImperativeHandles.reducer","Breakpoints.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","Pointer.getPointer","ElementImperativeHandles.getElementImperativeHandles","BoxModels.measure","deepEqual","changeElementBoxModels","handleWheel","handlePointerMove","ReactPage.getBuilderEditMode","BuilderEditMode.BuilderEditMode","changeDocumentElementSize","ReactPage.getDocumentKeysSortedByDepth","elementFromPointChange","setIsInBuilder","BoxModels.isMeasurable","registerMeasurable","unregisterMeasurable","serializeControls","registerBuilderComponent","ReactPage.getBreakpoints","setBreakpoints","Router","setLocale","changePathnameStart","changePathnameComplete","unregisterBuilderComponent","ReactPage.getElementPropControllerDescriptors","createPropController","messageBuilderPropController","registerPropControllers","ReactPage.getElement","ReactPage.isElementReference","PropControllerHandles.isPropControllersHandle","registerPropControllersHandle","PropControllerHandles.getPropControllersHandle","unregisterPropControllers","PropControllerHandles.getPropController","createStore","applyMiddleware","thunk","ElementImperativeHandle","registerDocument","ReactPage.createDocument","registerComponentHandle","Documents.getInitialState","IsPreview.getInitialState","client","children","rootElements","runtime","store","useMemo","ReactBuilderPreview","preloadedState","getState","ReactRuntime","useEffect","unregisterDocuments","Array","from","entries","map","documentKey","rootElement","dispatch","registerDocumentEffect","ReactPage","forEach","unregisterDocument","_jsx","StoreContext","MakeswiftProvider"],"mappings":"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"}
1
+ {"version":3,"file":"PreviewProvider.cjs.js","sources":["../src/state/modules/read-write-documents.ts","../src/state/modules/pointer.ts","../src/state/modules/element-imperative-handles.ts","../src/state/react-builder-preview.ts","../src/runtimes/react/components/PreviewProvider.tsx"],"sourcesContent":["import { Operation } from 'ot-json0'\nimport { removeIn, setIn } from 'immutable'\n\nimport * as ReadOnlyDocuments from './read-only-documents'\nimport { Action, ActionTypes } from '../actions'\n\nexport type { Document, Element, ElementData, ElementReference } from './read-only-documents'\nexport { isElementReference } from './read-only-documents'\nexport type { Operation }\n\nfunction apply(data: ReadOnlyDocuments.Element, operation: Operation): ReadOnlyDocuments.Element {\n let applied = data\n\n operation.forEach(component => {\n // @ts-expect-error: `ld` isn't in all possible values of `component`\n if (component.ld != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `od` isn't in all possible values of `component`\n if (component.od != null) applied = removeIn(applied, component.p)\n\n // @ts-expect-error: `li` isn't in all possible values of `component`\n if (component.li != null) applied = setIn(applied, component.p, component.li)\n\n // @ts-expect-error: `oi` isn't in all possible values of `component`\n if (component.oi != null) applied = setIn(applied, component.p, component.oi)\n })\n\n return applied\n}\n\nexport type State = ReadOnlyDocuments.State\n\nexport function getInitialState({\n rootElements,\n}: {\n rootElements?: Map<string, ReadOnlyDocuments.Element>\n} = {}): State {\n return ReadOnlyDocuments.getInitialState({ rootElements })\n}\n\nfunction getReadOnlyDocumentsStateSlice(state: State): ReadOnlyDocuments.State {\n return state\n}\n\nexport function getDocument(state: State, documentKey: string): ReadOnlyDocuments.Document | null {\n return ReadOnlyDocuments.getDocument(getReadOnlyDocumentsStateSlice(state), documentKey)\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n const nextState = ReadOnlyDocuments.reducer(state, action)\n\n switch (action.type) {\n case ActionTypes.CHANGE_DOCUMENT: {\n const currentRootElement = getDocument(nextState, action.payload.documentKey)?.rootElement\n\n if (currentRootElement == null) return nextState\n\n const nextRootElement = apply(currentRootElement, action.payload.operation)\n\n return currentRootElement === nextRootElement\n ? nextState\n : new Map(nextState).set(\n action.payload.documentKey,\n ReadOnlyDocuments.createDocument(action.payload.documentKey, nextRootElement),\n )\n }\n\n default:\n return nextState\n }\n}\n","import { Action, ActionTypes } from '../actions'\n\nexport type Point = { x: number; y: number }\n\ntype State = {\n pointer: Point | null\n}\n\nfunction getInitialState(): State {\n return { pointer: null }\n}\n\nexport function getPointer(state: State): Point | null {\n return state.pointer\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.BUILDER_POINTER_MOVE:\n return { ...state, pointer: action.payload.pointer }\n\n default:\n return state\n }\n}\n","import { ElementImperativeHandle } from '../../runtimes/react/element-imperative-handle'\nimport { Action, ActionTypes } from '../actions'\n\ntype State = Map<string, Map<string, ElementImperativeHandle>>\n\nexport function getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return state\n}\n\nfunction getInitialState(): State {\n return new Map()\n}\n\nexport function reducer(state: State = getInitialState(), action: Action): State {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE:\n return new Map(state).set(\n action.payload.documentKey,\n new Map(new Map(state.get(action.payload.documentKey) ?? [])).set(\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const byElementKey = new Map(state.get(action.payload.documentKey) ?? [])\n\n const deleted = byElementKey.delete(action.payload.elementKey)\n\n if (!deleted) return state\n\n return new Map(state).set(action.payload.documentKey, byElementKey)\n }\n\n default:\n return state\n }\n}\n","import {\n applyMiddleware,\n combineReducers,\n createStore,\n Dispatch as ReduxDispatch,\n Middleware,\n MiddlewareAPI,\n PreloadedState,\n Store as ReduxStore,\n} from 'redux'\nimport thunk, { ThunkAction, ThunkDispatch } from 'redux-thunk'\nimport Router from 'next/router'\n\nimport deepEqual from '../utils/deepEqual'\n\nimport * as Documents from './modules/read-write-documents'\nimport * as ReactComponents from './modules/react-components'\nimport * as BoxModels from './modules/box-models'\nimport * as ComponentsMeta from './modules/components-meta'\nimport * as PropControllers from './modules/prop-controllers'\nimport * as PropControllerHandles from './modules/prop-controller-handles'\nimport * as IsInBuilder from './modules/is-in-builder'\nimport * as IsPreview from './modules/is-preview'\nimport * as BuilderEditMode from './modules/builder-edit-mode'\nimport * as Pointer from './modules/pointer'\nimport * as ElementImperativeHandles from './modules/element-imperative-handles'\nimport * as Breakpoints from './modules/breakpoints'\nimport * as ReactPage from './react-page'\nimport {\n Action,\n changeDocumentElementSize,\n changeElementBoxModels,\n messageBuilderPropController,\n registerBuilderComponent,\n registerMeasurable,\n registerPropControllers,\n registerPropControllersHandle,\n registerDocument,\n registerComponentHandle,\n unregisterBuilderComponent,\n unregisterMeasurable,\n unregisterPropControllers,\n setIsInBuilder,\n handleWheel,\n handlePointerMove,\n changePathnameStart,\n changePathnameComplete,\n elementFromPointChange,\n setBreakpoints,\n setLocale,\n} from './actions'\nimport { ActionTypes } from './actions'\nimport { createPropController } from '../prop-controllers/instances'\nimport { PropController } from '../prop-controllers/base'\nimport { serializeControls } from '../builder'\nimport { MakeswiftClient } from '../api/react'\nimport { ElementImperativeHandle } from '../runtimes/react/element-imperative-handle'\n\nexport type { Operation } from './modules/read-write-documents'\nexport type { BoxModelHandle } from './modules/box-models'\nexport { createBox, getBox, parse } from './modules/box-models'\n\nconst reducer = combineReducers({\n documents: Documents.reducer,\n reactComponents: ReactComponents.reducer,\n boxModels: BoxModels.reducer,\n componentsMeta: ComponentsMeta.reducer,\n propControllers: PropControllers.reducer,\n propControllerHandles: PropControllerHandles.reducer,\n isInBuilder: IsInBuilder.reducer,\n isPreview: IsPreview.reducer,\n builderEditMode: BuilderEditMode.reducer,\n pointer: Pointer.reducer,\n elementImperativeHandles: ElementImperativeHandles.reducer,\n breakpoints: Breakpoints.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\n\nfunction getBoxModelsStateSlice(state: State): BoxModels.State {\n return state.boxModels\n}\n\nfunction getMeasurables(state: State): Map<string, Map<string, BoxModels.Measurable>> {\n return BoxModels.getMeasurables(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModels(state: State): Map<string, Map<string, BoxModels.BoxModel>> {\n return BoxModels.getBoxModels(getBoxModelsStateSlice(state))\n}\n\nfunction getBoxModel(\n state: State,\n documentKey: string,\n elementKey: string,\n): BoxModels.BoxModel | null {\n return BoxModels.getBoxModel(getBoxModelsStateSlice(state), documentKey, elementKey)\n}\n\nfunction getComponentsMetaStateSlice(state: State): ComponentsMeta.State {\n return state.componentsMeta\n}\n\nfunction getComponentsMeta(state: State): Map<string, ComponentsMeta.ComponentMeta> {\n return ComponentsMeta.getComponentsMeta(getComponentsMetaStateSlice(state))\n}\n\nfunction getPropControllersStateSlice(state: State): PropControllers.State {\n return state.propControllers\n}\n\nfunction getComponentPropControllerDescriptors(\n state: State,\n componentType: string,\n): Record<string, PropControllers.PropControllerDescriptor> | null {\n return PropControllers.getComponentPropControllerDescriptors(\n getPropControllersStateSlice(state),\n componentType,\n )\n}\n\nfunction getPropControllerHandlesStateSlice(state: State): PropControllerHandles.State {\n return state.propControllerHandles\n}\n\nfunction getPointer(state: State): Pointer.Point | null {\n return Pointer.getPointer(state.pointer)\n}\n\nfunction getElementImperativeHandles(\n state: State,\n): Map<string, Map<string, ElementImperativeHandle>> {\n return ElementImperativeHandles.getElementImperativeHandles(state.elementImperativeHandles)\n}\n\nfunction getElementImperativeHandlesContainingElement(\n state: State,\n element: Element,\n): Map<string, Map<string, ElementImperativeHandle>> {\n const elementImperativeHandles = getElementImperativeHandles(state)\n const filteredElementImperativeHandles = new Map<string, Map<string, ElementImperativeHandle>>()\n\n for (const [documentKey, byElementKey] of elementImperativeHandles) {\n const filteredByElementKey = new Map<string, ElementImperativeHandle>()\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n const handleElement = elementImperativeHandle.getDomNode()\n\n if (handleElement?.contains(element)) {\n filteredByElementKey.set(elementKey, elementImperativeHandle)\n }\n }\n\n if (filteredByElementKey.size > 0) {\n filteredElementImperativeHandles.set(documentKey, filteredByElementKey)\n }\n }\n\n return filteredElementImperativeHandles\n}\n\nfunction measureElements(): ThunkAction<void, State, unknown, Action> {\n return (dispatch, getState) => {\n const measurables = getMeasurables(getState())\n const currentBoxModels = getBoxModels(getState())\n const measuredBoxModels = new Map<string, Map<string, BoxModels.BoxModel>>()\n\n measurables.forEach((documentMeasurables, documentKey) => {\n const measuredDocumentBoxModels = new Map<string, BoxModels.BoxModel>()\n\n documentMeasurables.forEach((measurable, elementKey) => {\n const boxModel = BoxModels.measure(measurable)\n\n if (boxModel != null) measuredDocumentBoxModels.set(elementKey, boxModel)\n })\n\n if (measuredDocumentBoxModels.size > 0) {\n measuredBoxModels.set(documentKey, measuredDocumentBoxModels)\n }\n })\n\n const changedBoxModels = new Map<string, Map<string, BoxModels.BoxModel | null>>()\n\n currentBoxModels.forEach((currentDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n currentDocumentBoxModels.forEach((_boxModel, elementKey) => {\n if (!measuredBoxModels.get(documentKey)?.has(elementKey)) {\n changedDocumentBoxModels.set(elementKey, null)\n }\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n })\n\n measuredBoxModels.forEach((measuredDocumentBoxModels, documentKey) => {\n const changedDocumentBoxModels = new Map<string, BoxModels.BoxModel | null>()\n\n measuredDocumentBoxModels.forEach((measuredBoxModel, elementKey) => {\n const currentBoxModel = getBoxModel(getState(), documentKey, elementKey)\n\n if (currentBoxModel == null || !deepEqual(currentBoxModel, measuredBoxModel)) {\n changedDocumentBoxModels.set(elementKey, measuredBoxModel)\n }\n })\n\n if (changedDocumentBoxModels.size > 0) {\n changedBoxModels.set(documentKey, changedDocumentBoxModels)\n }\n })\n\n if (changedBoxModels.size > 0) dispatch(changeElementBoxModels(changedBoxModels))\n }\n}\n\nexport function startMeasuringElements(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n dispatch(measureElements())\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nexport type Size = {\n offsetWidth: number\n offsetHeight: number\n clientWidth: number\n clientHeight: number\n scrollWidth: number\n scrollHeight: number\n scrollTop: number\n scrollLeft: number\n}\n\nfunction getElementSize(element: HTMLElement): Size {\n return {\n offsetWidth: element.offsetWidth,\n offsetHeight: element.offsetHeight,\n clientWidth: element.clientWidth,\n clientHeight: element.clientHeight,\n scrollWidth: element.scrollWidth,\n scrollHeight: element.scrollHeight,\n scrollTop: element.scrollTop,\n scrollLeft: element.scrollLeft,\n }\n}\n\nfunction lockDocumentScroll(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const lastDocumentOverflow = window.document.documentElement.style.overflow\n window.document.documentElement.style.overflow = 'hidden'\n\n window.document.documentElement.addEventListener('wheel', handleWheelEvent)\n\n return () => {\n window.document.documentElement.style.overflow = lastDocumentOverflow\n window.document.documentElement.removeEventListener('wheel', handleWheelEvent)\n }\n\n function handleWheelEvent({ deltaX, deltaY }: WheelEvent) {\n dispatch(handleWheel({ deltaX, deltaY }))\n }\n }\n}\n\nfunction startHandlingPointerMoveEvent(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n window.document.documentElement.addEventListener('pointermove', handlePointerMoveEvent)\n\n return () => {\n window.document.documentElement.removeEventListener('pointermove', handlePointerMoveEvent)\n }\n\n function handlePointerMoveEvent({ clientX, clientY }: PointerEvent) {\n dispatch(handlePointerMove({ clientX, clientY }))\n }\n }\n}\n\nfunction startHandlingFocusEvents(): ThunkAction<() => void, State, unknown, Action> {\n return (_dispatch, getState) => {\n window.addEventListener('focusin', handleFocusIn)\n window.addEventListener('focusout', handleFocusOut)\n\n return () => {\n window.removeEventListener('focusin', handleFocusIn)\n window.removeEventListener('focusout', handleFocusOut)\n }\n\n function handleFocusIn(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (!(event.target instanceof window.HTMLElement) || !event.target.isContentEditable) {\n window.parent.focus()\n }\n }\n\n function handleFocusOut(event: FocusEvent) {\n if (ReactPage.getBuilderEditMode(getState()) === BuilderEditMode.BuilderEditMode.INTERACT) {\n return\n }\n\n if (\n !(event.relatedTarget instanceof window.HTMLElement) ||\n !event.relatedTarget.isContentEditable\n ) {\n window.parent.focus()\n }\n }\n }\n}\n\nfunction startMeasuringDocumentElement(): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n let lastSize: Size\n\n return () => {\n cancelAnimationFrame(animationFrameHandle)\n }\n\n function handleAnimationFrameRequest() {\n const nextSize = getElementSize(window.document.documentElement)\n\n if (!deepEqual(lastSize, nextSize)) {\n lastSize = nextSize\n\n dispatch(changeDocumentElementSize(nextSize))\n }\n\n animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nfunction elementKeysFromElementFromPoint(\n elementFromPoint: Element | null,\n): ThunkAction<{ documentKey: string; elementKey: string } | null, State, unknown, Action> {\n return (_dispatch, getState) => {\n if (elementFromPoint == null) return null\n\n const elementImperativeHandles = getElementImperativeHandlesContainingElement(\n getState(),\n elementFromPoint,\n )\n const acendingDepthDocumentKeys = ReactPage.getDocumentKeysSortedByDepth(getState())\n const descendingDepthDocumentKeys = acendingDepthDocumentKeys.slice().reverse()\n\n let currentElement: Element | null = elementFromPoint\n let keys = null\n\n while (currentElement != null) {\n for (const documentKey of descendingDepthDocumentKeys) {\n const byElementKey = elementImperativeHandles.get(documentKey)\n\n if (byElementKey == null) continue\n\n for (const [elementKey, elementImperativeHandle] of byElementKey) {\n if (elementImperativeHandle.getDomNode() === currentElement) {\n return { documentKey, elementKey }\n }\n }\n }\n\n currentElement = currentElement.parentElement\n }\n\n return keys\n }\n}\n\nfunction startPollingElementFromPoint(): ThunkAction<() => void, State, unknown, Action> {\n return (dispatch, getState) => {\n let lastElementFromPoint: Element | null = null\n let animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n\n return () => {\n cancelAnimationFrame(animationFrameRequestId)\n }\n\n function handleAnimationFrameRequest() {\n const pointer = getPointer(getState())\n const elementFromPoint =\n pointer == null ? null : document.elementFromPoint(pointer.x, pointer.y)\n\n if (elementFromPoint !== lastElementFromPoint) {\n lastElementFromPoint = elementFromPoint\n\n const keys = dispatch(elementKeysFromElementFromPoint(elementFromPoint))\n\n dispatch(elementFromPointChange(keys))\n }\n\n animationFrameRequestId = requestAnimationFrame(handleAnimationFrameRequest)\n }\n }\n}\n\nexport function initialize(): ThunkAction<() => void, State, unknown, Action> {\n return dispatch => {\n const stopMeasuringElements = dispatch(startMeasuringElements())\n const stopMeasuringDocumentElement = dispatch(startMeasuringDocumentElement())\n const stopHandlingFocusEvent = dispatch(startHandlingFocusEvents())\n const unlockDocumentScroll = dispatch(lockDocumentScroll())\n const stopHandlingPointerMoveEvent = dispatch(startHandlingPointerMoveEvent())\n const stopPollingElementFromPoint = dispatch(startPollingElementFromPoint())\n dispatch(setIsInBuilder(true))\n\n return () => {\n stopMeasuringElements()\n stopMeasuringDocumentElement()\n stopHandlingFocusEvent()\n unlockDocumentScroll()\n stopHandlingPointerMoveEvent()\n stopPollingElementFromPoint()\n dispatch(setIsInBuilder(false))\n }\n }\n}\n\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nfunction measureBoxModelsMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch }: MiddlewareAPI<Dispatch>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE: {\n if (BoxModels.isMeasurable(action.payload.componentHandle)) {\n dispatch(\n registerMeasurable(\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.componentHandle,\n ),\n )\n }\n\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE:\n dispatch(unregisterMeasurable(action.payload.documentKey, action.payload.elementKey))\n break\n }\n\n return next(action)\n }\n }\n}\n\nexport function messageChannelMiddleware(\n client: MakeswiftClient,\n): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n let cleanUp = () => {}\n\n if (typeof window === 'undefined') return cleanUp\n\n const messageChannel = new window.MessageChannel()\n\n window.parent.postMessage(messageChannel.port2, '*', [messageChannel.port2])\n\n messageChannel.port1.onmessage = (event: MessageEvent<Action>) => dispatch(event.data)\n\n const state = getState()\n const registeredComponentsMeta = getComponentsMeta(state)\n\n registeredComponentsMeta.forEach((componentMeta, componentType) => {\n const propControllerDescriptors = getComponentPropControllerDescriptors(\n state,\n componentType,\n )\n\n if (propControllerDescriptors != null) {\n const [serializedControls, transferables] = serializeControls(propControllerDescriptors)\n\n messageChannel.port1.postMessage(\n registerBuilderComponent(componentType, componentMeta, serializedControls),\n transferables,\n )\n }\n })\n\n const breakpoints = ReactPage.getBreakpoints(state)\n messageChannel.port1.postMessage(setBreakpoints(breakpoints))\n\n const routerLocale = Router.locale\n if (routerLocale != null) {\n messageChannel.port1.postMessage(setLocale(new Intl.Locale(routerLocale)))\n }\n\n Router.events.on('routeChangeStart', () => {\n messageChannel.port1.postMessage(changePathnameStart())\n })\n\n Router.events.on('routeChangeComplete', () => {\n messageChannel.port1.postMessage(changePathnameComplete())\n })\n\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.CHANGE_ELEMENT_BOX_MODELS:\n case ActionTypes.MOUNT_COMPONENT:\n case ActionTypes.UNMOUNT_COMPONENT:\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE:\n case ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER:\n case ActionTypes.HANDLE_WHEEL:\n case ActionTypes.HANDLE_POINTER_MOVE:\n case ActionTypes.ELEMENT_FROM_POINT_CHANGE:\n messageChannel.port1.postMessage(action)\n break\n\n case ActionTypes.REGISTER_COMPONENT: {\n const { type, meta, propControllerDescriptors } = action.payload\n const [serializedControls, transferables] = serializeControls(propControllerDescriptors)\n\n messageChannel.port1.postMessage(\n registerBuilderComponent(type, meta, serializedControls),\n transferables,\n )\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT:\n messageChannel.port1.postMessage(unregisterBuilderComponent(action.payload.type))\n break\n\n case ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP:\n window.document.documentElement.scrollTop = action.payload.scrollTop\n break\n\n case ActionTypes.SCROLL_DOCUMENT_ELEMENT:\n window.document.documentElement.scrollTop += action.payload.scrollTopDelta\n break\n\n case ActionTypes.SET_BUILDER_EDIT_MODE:\n messageChannel.port1.postMessage(action)\n window.getSelection()?.removeAllRanges()\n break\n\n case ActionTypes.SET_LOCALE: {\n const { pathname: currentPathname, query } = Router\n const pathname = (action.payload.pathname ?? currentPathname).replace(/^\\//, '/')\n\n Router.replace({ pathname, query }, undefined, { locale: action.payload.locale })\n break\n }\n\n case ActionTypes.CHANGE_PATHNAME: {\n const pathname = action.payload.pathname.replace(/^\\//, '/')\n const currentPathname = Router.asPath.replace(/^\\//, '/')\n\n if (pathname !== currentPathname) Router.push(pathname)\n break\n }\n\n case ActionTypes.SET_LOCALIZED_RESOURCE_ID: {\n client.setLocalizedResourceId(action.payload)\n break\n }\n\n case ActionTypes.INIT:\n cleanUp = dispatch(initialize())\n break\n\n case ActionTypes.CLEAN_UP:\n cleanUp()\n break\n }\n\n return next(action)\n }\n }\n}\n\nfunction createAndRegisterPropControllers(\n documentKey: string,\n elementKey: string,\n): ThunkAction<Record<string, PropController> | null, State, unknown, Action> {\n return (dispatch, getState) => {\n const descriptors = ReactPage.getElementPropControllerDescriptors(\n getState(),\n documentKey,\n elementKey,\n )\n\n if (descriptors == null) return null\n\n const propControllers = Object.entries(descriptors).reduce((acc, [propName, descriptor]) => {\n const propController = createPropController(descriptor, message =>\n dispatch(messageBuilderPropController(documentKey, elementKey, propName, message)),\n ) as PropController\n\n return { ...acc, [propName]: propController }\n }, {} as Record<string, PropController>)\n\n dispatch(registerPropControllers(documentKey, elementKey, propControllers))\n\n return propControllers\n }\n}\n\nfunction propControllerHandlesMiddleware(): Middleware<Dispatch, State, Dispatch> {\n return ({ dispatch, getState }: MiddlewareAPI<Dispatch, State>) =>\n (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n switch (action.type) {\n case ActionTypes.REGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey, componentHandle } = action.payload\n const element = ReactPage.getElement(getState(), documentKey, elementKey)\n const propControllers = dispatch(\n createAndRegisterPropControllers(documentKey, elementKey),\n )\n\n if (\n element != null &&\n !ReactPage.isElementReference(element) &&\n PropControllerHandles.isPropControllersHandle(componentHandle)\n ) {\n dispatch(registerPropControllersHandle(documentKey, elementKey, componentHandle))\n componentHandle.setPropControllers(propControllers)\n }\n\n break\n }\n\n case ActionTypes.UNREGISTER_COMPONENT_HANDLE: {\n const { documentKey, elementKey } = action.payload\n const handle = PropControllerHandles.getPropControllersHandle(\n getPropControllerHandlesStateSlice(getState()),\n documentKey,\n elementKey,\n )\n\n handle?.setPropControllers(null)\n\n dispatch(unregisterPropControllers(documentKey, elementKey))\n\n break\n }\n\n case ActionTypes.MESSAGE_HOST_PROP_CONTROLLER: {\n const propController = PropControllerHandles.getPropController(\n getPropControllerHandlesStateSlice(getState()),\n action.payload.documentKey,\n action.payload.elementKey,\n action.payload.propName,\n )\n\n if (propController) propController.recv(action.payload.message)\n }\n }\n\n return next(action)\n }\n }\n}\n\nif (import.meta.vitest) {\n const { describe, it, fn, expect } = import.meta.vitest\n\n describe('propControllerHandlesMiddleware', () => {\n it('registers prop controllers for element data', () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { key: 'elementKey', type: 'type', props: {} }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).toHaveBeenCalled()\n })\n\n it(\"doesn't register prop controllers for element references\", () => {\n // Arrange\n const documentKey = 'documentKey'\n const element: ReactPage.Element = { type: 'reference', key: 'elementKey', value: 'value' }\n const store = createStore(reducer, applyMiddleware(thunk, propControllerHandlesMiddleware()))\n const setPropControllers = fn()\n const handle = new ElementImperativeHandle()\n\n handle.callback(() => ({ setPropControllers }))\n\n store.dispatch(registerDocument(ReactPage.createDocument(documentKey, element)))\n\n // Act\n store.dispatch(registerComponentHandle(documentKey, element.key, handle))\n\n // Assert\n expect(setPropControllers).not.toHaveBeenCalled()\n })\n })\n}\n\nfunction makeswiftApiClientSyncMiddleware(\n client: MakeswiftClient,\n): Middleware<Dispatch, State, Dispatch> {\n return () => (next: ReduxDispatch<Action>) => {\n return (action: Action): Action => {\n client.makeswiftApiClient.dispatch(action)\n\n return next(action)\n }\n }\n}\n\nexport type Store = ReduxStore<State, Action> & { dispatch: Dispatch }\n\nexport function configureStore({\n rootElements,\n preloadedState,\n client,\n}: {\n rootElements?: Map<string, Documents.Element>\n preloadedState?: PreloadedState<State>\n client: MakeswiftClient\n}): Store {\n const initialState: PreloadedState<State> = {\n ...preloadedState,\n documents: Documents.getInitialState({ rootElements }),\n isPreview: IsPreview.getInitialState(true),\n }\n\n return createStore(\n reducer,\n initialState,\n applyMiddleware(\n thunk,\n measureBoxModelsMiddleware(),\n messageChannelMiddleware(client),\n propControllerHandlesMiddleware(),\n makeswiftApiClientSyncMiddleware(client),\n ),\n )\n}\n","import { ReactNode, useEffect, useMemo } from 'react'\n\nimport { StoreContext, ReactRuntime } from '..'\nimport * as ReactBuilderPreview from '../../../state/react-builder-preview'\nimport * as ReactPage from '../../../state/react-page'\nimport { MakeswiftProvider, MakeswiftClient } from '../../../api/react'\nimport { registerDocumentEffect } from '../../../state/actions'\n\ntype Props = {\n client: MakeswiftClient\n rootElements?: Map<string, ReactPage.Element>\n children?: ReactNode\n runtime?: ReactRuntime\n}\n\nexport default function PreviewProvider({\n client,\n children,\n rootElements,\n runtime,\n}: Props): JSX.Element {\n const store = useMemo(\n () =>\n ReactBuilderPreview.configureStore({\n preloadedState: runtime ? runtime.store.getState() : ReactRuntime.store.getState(),\n rootElements,\n client,\n }),\n [client, rootElements, runtime],\n )\n\n useEffect(() => {\n const unregisterDocuments = Array.from(rootElements?.entries() ?? []).map(\n ([documentKey, rootElement]) =>\n store.dispatch(registerDocumentEffect(ReactPage.createDocument(documentKey, rootElement))),\n )\n\n return () => {\n unregisterDocuments.forEach(unregisterDocument => {\n unregisterDocument()\n })\n }\n }, [store, rootElements])\n\n return (\n <StoreContext.Provider value={store}>\n <MakeswiftProvider client={client}>{children}</MakeswiftProvider>\n </StoreContext.Provider>\n )\n}\n"],"names":["removeIn","setIn","ReadOnlyDocuments.getInitialState","ReadOnlyDocuments.getDocument","getInitialState","ReadOnlyDocuments.reducer","ActionTypes","ReadOnlyDocuments.createDocument","combineReducers","Documents.reducer","ReactComponents.reducer","BoxModels.reducer","ComponentsMeta.reducer","PropControllers.reducer","PropControllerHandles.reducer","IsInBuilder.reducer","IsPreview.reducer","BuilderEditMode.reducer","Pointer.reducer","ElementImperativeHandles.reducer","Breakpoints.reducer","BoxModels.getMeasurables","BoxModels.getBoxModels","BoxModels.getBoxModel","ComponentsMeta.getComponentsMeta","PropControllers.getComponentPropControllerDescriptors","Pointer.getPointer","ElementImperativeHandles.getElementImperativeHandles","BoxModels.measure","deepEqual","changeElementBoxModels","handleWheel","handlePointerMove","ReactPage.getBuilderEditMode","BuilderEditMode.BuilderEditMode","changeDocumentElementSize","ReactPage.getDocumentKeysSortedByDepth","elementFromPointChange","setIsInBuilder","BoxModels.isMeasurable","registerMeasurable","unregisterMeasurable","serializeControls","registerBuilderComponent","ReactPage.getBreakpoints","setBreakpoints","Router","setLocale","changePathnameStart","changePathnameComplete","unregisterBuilderComponent","ReactPage.getElementPropControllerDescriptors","createPropController","messageBuilderPropController","registerPropControllers","ReactPage.getElement","ReactPage.isElementReference","PropControllerHandles.isPropControllersHandle","registerPropControllersHandle","PropControllerHandles.getPropControllersHandle","unregisterPropControllers","PropControllerHandles.getPropController","createStore","applyMiddleware","thunk","ElementImperativeHandle","registerDocument","ReactPage.createDocument","registerComponentHandle","Documents.getInitialState","IsPreview.getInitialState","client","children","rootElements","runtime","store","useMemo","ReactBuilderPreview","preloadedState","getState","ReactRuntime","useEffect","unregisterDocuments","Array","from","entries","map","documentKey","rootElement","dispatch","registerDocumentEffect","ReactPage","forEach","unregisterDocument","_jsx","StoreContext","MakeswiftProvider"],"mappings":"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"}
@@ -23,7 +23,7 @@ import { J as ElementImperativeHandle, a as ReactRuntime, K as StoreContext, M a
23
23
  import { createStore, applyMiddleware, combineReducers } from "redux";
24
24
  import thunk from "redux-thunk";
25
25
  import Router from "next/router";
26
- import { c2 as getInitialState$3, c3 as reducer$4, c4 as getDocument$1, c as createDocument, c5 as getComponentsMeta$1, c6 as getComponentPropControllerDescriptors$1, ax as getBreakpoints, f as deepEqual, aD as getBuilderEditMode, c7 as BuilderEditMode, c8 as getDocumentKeysSortedByDepth, c9 as getPropController, ca as getPropControllersHandle, cb as getElement, cc as getElementPropControllerDescriptors, cd as createPropController, j as isElementReference, a4 as isPropControllersHandle, ce as reducer$5, cf as reducer$7, cg as reducer$8, ch as reducer$9, ci as reducer$a, cj as reducer$b, ck as reducer$c, cl as getInitialState$4 } from "./react-page.es.js";
26
+ import { c7 as getInitialState$3, c8 as reducer$4, c9 as getDocument$1, c as createDocument, ca as getComponentsMeta$1, cb as getComponentPropControllerDescriptors$1, ax as getBreakpoints, f as deepEqual, aE as getBuilderEditMode, cc as BuilderEditMode, cd as getDocumentKeysSortedByDepth, ce as getPropController, cf as getPropControllersHandle, cg as getElement, ch as getElementPropControllerDescriptors, ci as createPropController, j as isElementReference, a4 as isPropControllersHandle, cj as reducer$5, ck as reducer$7, cl as reducer$8, cm as reducer$9, cn as reducer$a, co as reducer$b, cp as reducer$c, cq as getInitialState$4 } from "./react-page.es.js";
27
27
  import { removeIn, setIn } from "immutable";
28
28
  import { A as ActionTypes, v as unregisterMeasurable, w as registerMeasurable, x as registerBuilderComponent, j as setBreakpoints, k as setLocale, y as changePathnameStart, z as changePathnameComplete, B as changeElementBoxModels, C as changeDocumentElementSize, D as handleWheel, E as handlePointerMove, F as elementFromPointChange, G as setIsInBuilder, H as unregisterBuilderComponent, I as unregisterPropControllers, J as registerPropControllers, K as registerPropControllersHandle, r as registerDocument, L as registerComponentHandle, M as messageBuilderPropController, N as registerDocumentEffect } from "./actions.es.js";
29
29
  import { i as isMeasurable, a as getMeasurables$1, b as getBoxModels$1, m as measure, d as getBoxModel$1, r as reducer$6 } from "./box-models.es.js";
@@ -38,6 +38,9 @@ import "ts-pattern";
38
38
  import "uuid";
39
39
  import "slate";
40
40
  import "escape-html";
41
+ import "slate-hyperscript";
42
+ import "parse5";
43
+ import "is-hotkey";
41
44
  import "use-sync-external-store/shim";
42
45
  import "./types.es.js";
43
46
  import "color";
@@ -58,7 +61,6 @@ import "./constants.es.js";
58
61
  import "corporate-ipsum";
59
62
  import "@emotion/serialize";
60
63
  import "@emotion/utils";
61
- import "is-hotkey";
62
64
  import "css-box-model";
63
65
  function apply(data, operation) {
64
66
  let applied = data;