@makeswift/runtime 0.11.9 → 0.11.11

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 (198) hide show
  1. package/LICENSE +21 -0
  2. package/dist/Box.cjs.js +1 -1
  3. package/dist/Box.cjs.js.map +1 -1
  4. package/dist/Box.es.js +1 -1
  5. package/dist/Box.es.js.map +1 -1
  6. package/dist/Button.cjs.js +1 -1
  7. package/dist/Button.cjs.js.map +1 -1
  8. package/dist/Button.es.js +1 -1
  9. package/dist/Button.es.js.map +1 -1
  10. package/dist/Carousel.cjs.js +1 -1
  11. package/dist/Carousel.cjs.js.map +1 -1
  12. package/dist/Carousel.es.js +1 -1
  13. package/dist/Carousel.es.js.map +1 -1
  14. package/dist/Countdown.cjs.js +1 -1
  15. package/dist/Countdown.cjs.js.map +1 -1
  16. package/dist/Countdown.es.js +1 -1
  17. package/dist/Countdown.es.js.map +1 -1
  18. package/dist/Divider.cjs.js +1 -1
  19. package/dist/Divider.cjs.js.map +1 -1
  20. package/dist/Divider.es.js +1 -1
  21. package/dist/Divider.es.js.map +1 -1
  22. package/dist/Embed.cjs.js +1 -1
  23. package/dist/Embed.cjs.js.map +1 -1
  24. package/dist/Embed.es.js +1 -1
  25. package/dist/Embed.es.js.map +1 -1
  26. package/dist/Form.cjs.js +3 -3
  27. package/dist/Form.cjs.js.map +1 -1
  28. package/dist/Form.es.js +3 -3
  29. package/dist/Form.es.js.map +1 -1
  30. package/dist/Image.cjs.js +1 -1
  31. package/dist/Image.cjs.js.map +1 -1
  32. package/dist/Image.es.js +1 -1
  33. package/dist/Image.es.js.map +1 -1
  34. package/dist/LiveProvider.cjs.js +1 -1
  35. package/dist/LiveProvider.cjs.js.map +1 -1
  36. package/dist/LiveProvider.es.js +1 -1
  37. package/dist/LiveProvider.es.js.map +1 -1
  38. package/dist/Navigation.cjs.js +7 -7
  39. package/dist/Navigation.cjs.js.map +1 -1
  40. package/dist/Navigation.es.js +7 -7
  41. package/dist/Navigation.es.js.map +1 -1
  42. package/dist/PreviewProvider.cjs.js +1 -1
  43. package/dist/PreviewProvider.cjs.js.map +1 -1
  44. package/dist/PreviewProvider.es.js +1 -1
  45. package/dist/PreviewProvider.es.js.map +1 -1
  46. package/dist/ReadOnlyText.cjs.js +1 -1
  47. package/dist/ReadOnlyText.cjs.js.map +1 -1
  48. package/dist/ReadOnlyText.es.js +1 -1
  49. package/dist/ReadOnlyText.es.js.map +1 -1
  50. package/dist/ReadOnlyTextV2.cjs.js +2 -2
  51. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  52. package/dist/ReadOnlyTextV2.es.js +2 -2
  53. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  54. package/dist/Root.cjs.js +1 -1
  55. package/dist/Root.cjs.js.map +1 -1
  56. package/dist/Root.es.js +1 -1
  57. package/dist/Root.es.js.map +1 -1
  58. package/dist/SocialLinks.cjs.js +132 -74
  59. package/dist/SocialLinks.cjs.js.map +1 -1
  60. package/dist/SocialLinks.es.js +132 -74
  61. package/dist/SocialLinks.es.js.map +1 -1
  62. package/dist/Text.cjs.js.map +1 -1
  63. package/dist/Text.es.js.map +1 -1
  64. package/dist/Video.cjs.js +1 -1
  65. package/dist/Video.cjs.js.map +1 -1
  66. package/dist/Video.es.js +1 -1
  67. package/dist/Video.es.js.map +1 -1
  68. package/dist/breakpoints.cjs.js +223 -0
  69. package/dist/breakpoints.cjs.js.map +1 -0
  70. package/dist/breakpoints.es.js +206 -0
  71. package/dist/breakpoints.es.js.map +1 -0
  72. package/dist/builder.cjs.js +1 -1
  73. package/dist/builder.es.js +1 -1
  74. package/dist/components.cjs.js +1 -1
  75. package/dist/components.es.js +1 -1
  76. package/dist/control-serialization.cjs.js +1 -1
  77. package/dist/control-serialization.es.js +1 -1
  78. package/dist/controls.cjs.js +1 -1
  79. package/dist/controls.es.js +1 -1
  80. package/dist/index.cjs.js +15 -5
  81. package/dist/index.cjs.js.map +1 -1
  82. package/dist/index.cjs2.js +1 -1
  83. package/dist/index.cjs2.js.map +1 -1
  84. package/dist/index.cjs3.js.map +1 -1
  85. package/dist/index.cjs6.js.map +1 -1
  86. package/dist/index.cjs7.js.map +1 -1
  87. package/dist/index.cjs8.js +1 -1
  88. package/dist/index.cjs8.js.map +1 -1
  89. package/dist/index.cjs9.js +1 -1
  90. package/dist/index.cjs9.js.map +1 -1
  91. package/dist/index.es.js +15 -5
  92. package/dist/index.es.js.map +1 -1
  93. package/dist/index.es2.js +1 -1
  94. package/dist/index.es2.js.map +1 -1
  95. package/dist/index.es3.js.map +1 -1
  96. package/dist/index.es6.js.map +1 -1
  97. package/dist/index.es7.js.map +1 -1
  98. package/dist/index.es8.js +1 -1
  99. package/dist/index.es8.js.map +1 -1
  100. package/dist/index.es9.js +1 -1
  101. package/dist/index.es9.js.map +1 -1
  102. package/dist/main.cjs.js +1 -1
  103. package/dist/main.es.js +1 -1
  104. package/dist/next.cjs.js +1 -1
  105. package/dist/next.es.js +1 -1
  106. package/dist/prop-controllers.cjs.js +1 -1
  107. package/dist/prop-controllers.es.js +1 -1
  108. package/dist/react-page.cjs.js +192 -6
  109. package/dist/react-page.cjs.js.map +1 -1
  110. package/dist/react-page.es.js +198 -12
  111. package/dist/react-page.es.js.map +1 -1
  112. package/dist/react.cjs.js +1 -1
  113. package/dist/react.es.js +1 -1
  114. package/dist/slate.cjs.js +1 -1
  115. package/dist/slate.es.js +1 -1
  116. package/dist/state/breakpoints.cjs.js +17 -219
  117. package/dist/state/breakpoints.cjs.js.map +1 -1
  118. package/dist/state/breakpoints.es.js +2 -205
  119. package/dist/state/breakpoints.es.js.map +1 -1
  120. package/dist/toText.cjs.js +1 -1
  121. package/dist/toText.es.js +1 -1
  122. package/dist/types/src/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts +1 -0
  123. package/dist/types/src/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts.map +1 -1
  124. package/dist/types/src/components/builtin/Form/components/Field/index.d.ts +1 -0
  125. package/dist/types/src/components/builtin/Form/components/Field/index.d.ts.map +1 -1
  126. package/dist/types/src/components/builtin/Form/components/Spinner/index.d.ts +1 -0
  127. package/dist/types/src/components/builtin/Form/components/Spinner/index.d.ts.map +1 -1
  128. package/dist/types/src/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts +1 -0
  129. package/dist/types/src/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts.map +1 -1
  130. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/index.d.ts +1 -0
  131. package/dist/types/src/components/builtin/Navigation/components/MobileMenu/index.d.ts.map +1 -1
  132. package/dist/types/src/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts +1 -0
  133. package/dist/types/src/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts.map +1 -1
  134. package/dist/types/src/components/builtin/SocialLinks/options.d.ts +10 -0
  135. package/dist/types/src/components/builtin/SocialLinks/options.d.ts.map +1 -1
  136. package/dist/types/src/components/page/Page.d.ts +1 -0
  137. package/dist/types/src/components/page/Page.d.ts.map +1 -1
  138. package/dist/types/src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts +1 -0
  139. package/dist/types/src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
  140. package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts +1 -0
  141. package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts.map +1 -1
  142. package/dist/types/src/controls/control.d.ts.map +1 -1
  143. package/dist/types/src/controls/rich-text/__tests__/copy.test.d.ts.map +1 -0
  144. package/dist/types/src/controls/rich-text/__tests__/dto.test.d.ts.map +1 -0
  145. package/dist/types/src/controls/rich-text/__tests__/introspection.test.d.ts.map +1 -0
  146. package/dist/types/src/controls/rich-text-v2/__tests__/copy.test.d.ts.map +1 -0
  147. package/dist/types/src/controls/rich-text-v2/__tests__/fixtures/rearranged.d.ts.map +1 -0
  148. package/dist/types/src/controls/rich-text-v2/__tests__/fixtures/simple.d.ts.map +1 -0
  149. package/dist/types/src/controls/rich-text-v2/__tests__/introspection.test.d.ts.map +1 -0
  150. package/dist/types/src/controls/rich-text-v2/__tests__/translation.test.d.ts.map +1 -0
  151. package/dist/types/src/controls/rich-text-v2/translation.d.ts +1 -1
  152. package/dist/types/src/controls/rich-text-v2/translation.d.ts.map +1 -1
  153. package/dist/types/src/next/client.d.ts.map +1 -1
  154. package/dist/types/src/prop-controllers/descriptors.d.ts +1 -1
  155. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  156. package/dist/types/src/runtimes/react/components/render-hook.d.ts +1 -0
  157. package/dist/types/src/runtimes/react/components/render-hook.d.ts.map +1 -1
  158. package/dist/types/src/runtimes/react/controls/control.d.ts +1 -0
  159. package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
  160. package/dist/types/src/runtimes/react/controls/list.d.ts +1 -0
  161. package/dist/types/src/runtimes/react/controls/list.d.ts.map +1 -1
  162. package/dist/types/src/runtimes/react/controls/shape.d.ts +1 -0
  163. package/dist/types/src/runtimes/react/controls/shape.d.ts.map +1 -1
  164. package/dist/types/src/runtimes/react/controls/style-v2.d.ts +1 -0
  165. package/dist/types/src/runtimes/react/controls/style-v2.d.ts.map +1 -1
  166. package/dist/types/src/runtimes/react/controls.d.ts +1 -0
  167. package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
  168. package/dist/types/src/runtimes/react/find-dom-node.d.ts.map +1 -1
  169. package/dist/types/src/slate/TypographyPlugin/index.d.ts +4 -1
  170. package/dist/types/src/slate/TypographyPlugin/index.d.ts.map +1 -1
  171. package/dist/types/src/slate/TypographyPlugin/normalizeSimilarText.d.ts +10 -0
  172. package/dist/types/src/slate/TypographyPlugin/normalizeSimilarText.d.ts.map +1 -0
  173. package/dist/types/src/slate/TypographyPlugin/normalizeTypographyDown.d.ts +29 -0
  174. package/dist/types/src/slate/TypographyPlugin/normalizeTypographyDown.d.ts.map +1 -0
  175. package/dist/types/src/slate/TypographyPlugin/normalizeTypographyUp.d.ts +4 -0
  176. package/dist/types/src/slate/TypographyPlugin/normalizeTypographyUp.d.ts.map +1 -0
  177. package/dist/types/src/slate/types.d.ts +19 -2
  178. package/dist/types/src/slate/types.d.ts.map +1 -1
  179. package/dist/types/src/state/makeswift-api-client.d.ts.map +1 -1
  180. package/dist/useMediaQuery.cjs.js +1 -1
  181. package/dist/useMediaQuery.es.js +1 -1
  182. package/package.json +12 -13
  183. package/dist/types/src/controls/rich-text/__test__/copy.test.d.ts.map +0 -1
  184. package/dist/types/src/controls/rich-text/__test__/dto.test.d.ts.map +0 -1
  185. package/dist/types/src/controls/rich-text/__test__/introspection.test.d.ts.map +0 -1
  186. package/dist/types/src/controls/rich-text-v2/__test__/copy.test.d.ts.map +0 -1
  187. package/dist/types/src/controls/rich-text-v2/__test__/fixtures/rearranged.d.ts.map +0 -1
  188. package/dist/types/src/controls/rich-text-v2/__test__/fixtures/simple.d.ts.map +0 -1
  189. package/dist/types/src/controls/rich-text-v2/__test__/introspection.test.d.ts.map +0 -1
  190. package/dist/types/src/controls/rich-text-v2/__test__/translation.test.d.ts.map +0 -1
  191. /package/dist/types/src/controls/rich-text/{__test__ → __tests__}/copy.test.d.ts +0 -0
  192. /package/dist/types/src/controls/rich-text/{__test__ → __tests__}/dto.test.d.ts +0 -0
  193. /package/dist/types/src/controls/rich-text/{__test__ → __tests__}/introspection.test.d.ts +0 -0
  194. /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/copy.test.d.ts +0 -0
  195. /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/fixtures/rearranged.d.ts +0 -0
  196. /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/fixtures/simple.d.ts +0 -0
  197. /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/introspection.test.d.ts +0 -0
  198. /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/translation.test.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs9.js","sources":["../src/runtimes/react/controls/rich-text-v2/EditableTextV2/useSyncDOMSelection.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.tsx"],"sourcesContent":["import { Editor, Range as SlateRange } from 'slate'\nimport { useIsomorphicLayoutEffect } from '../../../../../components/hooks/useIsomorphicLayoutEffect'\nimport { MutableRefObject } from 'react'\nimport { ReactEditor } from 'slate-react'\n\n/**\n * Clicking outside of the host blurs our `<Editable />`.\n * `<Editable />` only updates the DOM's selection to match slate when it is focused.\n * In the case of a panel being clicked this hook updates the DOM selection to match slate.\n */\nexport function useSyncDOMSelection(editor: Editor, isEnabled: MutableRefObject<boolean>) {\n useIsomorphicLayoutEffect(() => {\n if (!isEnabled.current || editor.selection == null || ReactEditor.isFocused(editor)) return\n try {\n const root = ReactEditor.findDocumentOrShadowRoot(editor) as Document\n const domSelection = root.getSelection()\n const newDomRange: Range | null = ReactEditor.toDOMRange(editor, editor.selection)\n\n if (newDomRange) {\n if (SlateRange.isBackward(editor.selection!)) {\n domSelection?.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset,\n )\n } else {\n domSelection?.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset,\n )\n }\n } else {\n domSelection?.removeAllRanges()\n }\n } catch (e) {\n console.error(e)\n }\n })\n}\n","import { RenderElementProps } from 'slate-react'\nimport { RichTextV2ControlDefinition } from '../../../../../controls'\nimport { ControlValue } from '../../control'\nimport { RichTextV2Plugin } from '../../../../../controls/rich-text-v2/plugin'\n\ntype RichTextV2ElementProps = RenderElementProps & {\n definition: RichTextV2ControlDefinition\n plugins: RichTextV2Plugin[]\n}\n\nexport function RichTextV2Element({ definition, plugins, ...props }: RichTextV2ElementProps) {\n function initialRenderElement(props: RenderElementProps) {\n return props.children\n }\n\n const renderElement = plugins.reduce(\n (renderFn, plugin) => (props: RenderElementProps) => {\n const { control, renderElement } = plugin\n\n if (renderElement == null) return renderFn(props)\n\n if (control == null || control.getElementValue == null)\n return renderElement(renderFn, undefined)(props)\n\n return (\n <ControlValue definition={control.definition} data={control.getElementValue(props.element)}>\n {value => renderElement(renderFn, value)(props)}\n </ControlValue>\n )\n },\n initialRenderElement,\n )\n\n return renderElement(props)\n}\n","import { RenderLeafProps } from 'slate-react'\nimport { RichTextV2ControlDefinition } from '../../../../../controls'\nimport { ControlValue } from '../../control'\nimport { RichTextV2Plugin } from '../../../../../controls/rich-text-v2/plugin'\n\ntype RichTextV2LeafProps = RenderLeafProps & {\n definition: RichTextV2ControlDefinition\n plugins: RichTextV2Plugin[]\n}\n\nexport function RichTextV2Leaf({ definition, plugins, ...props }: RichTextV2LeafProps) {\n function initialRenderLeaf({ attributes, children, leaf }: RenderLeafProps) {\n return (\n <span className={leaf.className} {...attributes}>\n {children}\n </span>\n )\n }\n\n const renderLeaf = plugins.reduce(\n (renderFn, plugin) => (props: RenderLeafProps) => {\n const { control, renderLeaf } = plugin\n\n if (control?.definition == null || renderLeaf == null) return renderFn(props)\n\n if (control.getLeafValue == null) return renderLeaf(renderFn, undefined)(props)\n\n return (\n <ControlValue definition={control.definition} data={control.getLeafValue(props.leaf)}>\n {value => renderLeaf(renderFn, value)(props)}\n </ControlValue>\n )\n },\n initialRenderLeaf,\n )\n\n return renderLeaf(props)\n}\n","import { useEffect } from 'react'\nimport { Editor } from 'slate'\nimport { RichTextV2ControlData, richTextV2DataToDescendents } from '../../../../../controls'\nimport { LocalChange } from '../../../../../slate'\nimport { useIsInBuilder } from '../../..'\n\n// From the component point of view we can't know if the change came from an action or a undo/redo\n// So we diff the time and force updates on actions that occured over a second ago.\nfunction isChangeWithinPreviousSec(change?: LocalChange) {\n return performance.now() - (change?.time ?? 0) < 1000\n}\n\nexport function useSyncRemoteChanges(editor: Editor, data?: RichTextV2ControlData) {\n const isInBuilder = useIsInBuilder()\n\n useEffect(() => {\n if (\n !isChangeWithinPreviousSec(editor.localChanges.get(data?.key ?? '')) &&\n data &&\n isInBuilder\n ) {\n editor.children = richTextV2DataToDescendents(data)\n editor.selection = editor?.localChanges.get(data.key)?.selection ?? null\n editor.onChange()\n }\n }, [editor, data])\n}\n","import { Descendant } from 'slate'\nimport { BlockType } from '../../../../../slate'\nimport { getBaseBreakpoint, DefaultBreakpointID } from '../../../../../state/modules/breakpoints'\nimport { useBreakpoints } from '../../..'\nimport { useMemo } from 'react'\nimport { RichTextV2ControlDefinition, RichTextV2Mode } from '../../../../../controls'\n\nexport function usePresetValue(definition: RichTextV2ControlDefinition): Descendant[] {\n const breakpoints = useBreakpoints()\n return useMemo(\n () => [\n {\n type: BlockType.Default,\n children: [\n {\n text: definition.config.defaultValue ?? '',\n ...(definition.config.mode === RichTextV2Mode.Inline\n ? {}\n : {\n typography: {\n style: [\n {\n deviceId: getBaseBreakpoint(breakpoints).id,\n value: {\n fontWeight: 400,\n fontSize: { value: 18, unit: 'px' },\n lineHeight: 1.5,\n },\n },\n ...(breakpoints.some(({ id }) => id === DefaultBreakpointID.Mobile)\n ? [\n {\n deviceId: DefaultBreakpointID.Mobile,\n value: { fontSize: { value: 16, unit: 'px' } },\n },\n ]\n : []),\n ],\n },\n }),\n },\n ],\n },\n ],\n [definition.config.mode, definition.config.defaultValue, breakpoints],\n )\n}\n\nexport const defaultValue = [\n {\n type: BlockType.Default,\n children: [\n {\n text: '',\n },\n ],\n },\n]\n","import {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { createEditor } from 'slate'\nimport isHotkey from 'is-hotkey'\nimport {\n withReact,\n ReactEditor,\n RenderElementProps,\n RenderLeafProps,\n Slate,\n Editable,\n} from 'slate-react'\n\nimport {\n RichTextV2Control,\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n RichTextV2Mode,\n} from '../../../../../controls'\nimport { useBuilderEditMode } from '../../..'\nimport { BuilderEditMode } from '../../../../../state/modules/builder-edit-mode'\nimport { pollBoxModel } from '../../../poll-box-model'\nimport {\n BlockPlugin,\n InlineModePlugin,\n InlinePlugin,\n LinkPlugin,\n TextAlignPlugin,\n TypographyPlugin,\n withBuilder,\n withLocalChanges,\n} from '../../../../../slate'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\nimport { RichTextV2Element } from './render-element'\nimport { RichTextV2Leaf } from './render-leaf'\nimport { richTextV2DataToDescendents } from '../../../../../controls/rich-text-v2/dto'\nimport { useSyncRemoteChanges } from './useRemoteChanges'\nimport { defaultValue, usePresetValue } from './usePresetValue'\n\nexport type RichTextV2ControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV2ControlDefinition }\n\ntype Props = {\n text?: RichTextV2ControlData\n definition: RichTextV2ControlDefinition\n control: RichTextV2Control | null\n}\n\nexport function EditableTextV2({ text, definition, control }: Props) {\n const plugins = useMemo(() => {\n const plugins = [\n /**\n * TODO: we are manually referencing our default plugins for each mode here because\n * Referencing the real LinkPlugin causes a circular dependency.\n * When circular dependencies calm down we should update the plugin definition to use real plugins,\n * and just use the plugins that are defined by our config.\n */\n // ...(definition?.config?.plugins ?? []),\n ...(definition?.config?.mode === RichTextV2Mode.Inline\n ? [InlineModePlugin()]\n : [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin(), LinkPlugin()]),\n ]\n return plugins\n }, [definition])\n\n const [editor] = useState(() =>\n plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n withLocalChanges(withBuilder(withReact(createEditor()))),\n ),\n )\n\n useEffect(() => {\n if (control == null) return\n\n const element = ReactEditor.toDOMNode(editor, editor)\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeBoxModel(boxModel),\n })\n }, [editor, control])\n\n // ------ Preserving selection ------\n\n const isPreservingFocus = useRef(false)\n useSyncDOMSelection(editor, isPreservingFocus)\n const editMode = useBuilderEditMode()\n\n useEffect(() => {\n /**\n * This is required because clicking on the overlay has `relatedTarget` null just like the sidebar, but\n * - in the case of the overlay we switch to BUILD mode\n * - in the case of the sidebar we preserve the selection\n */\n if (editMode !== BuilderEditMode.CONTENT) {\n isPreservingFocus.current = false\n ReactEditor.deselect(editor)\n }\n }, [editMode])\n\n // ------ Syncing remote changes ------\n\n useSyncRemoteChanges(editor, text)\n\n // ------ Default value ------\n\n const presetValue = usePresetValue(definition)\n\n const initialValue = useMemo(\n () => (text && richTextV2DataToDescendents(text)) ?? presetValue,\n [text, presetValue],\n )\n\n useEffect(() => {\n control?.setEditor(editor)\n control?.setDefaultValue(defaultValue)\n }, [control, editor])\n\n /**\n * When initialValue is set to the default value we need to trigger an local change so that the sidebar updates and so the data is saved\n */\n useEffect(() => {\n if (initialValue === presetValue) {\n control?.onLocalUserChange()\n }\n }, [control, initialValue, presetValue])\n\n // ------ Rendering ------\n\n const renderElement = useCallback(\n (props: RenderElementProps) => {\n return <RichTextV2Element {...props} definition={definition} plugins={plugins} />\n },\n [plugins, definition],\n )\n\n const renderLeaf = useCallback(\n (props: RenderLeafProps) => {\n return <RichTextV2Leaf {...props} definition={definition} plugins={plugins} />\n },\n [plugins, definition],\n )\n\n // ------ Event handlers ------\n\n const handleFocus = useCallback(() => {\n isPreservingFocus.current = true\n control?.select()\n }, [control])\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey('mod+shift+z', e)) return control?.redo()\n if (isHotkey('mod+z', e)) return control?.undo()\n if (isHotkey('escape')(e)) {\n isPreservingFocus.current = false\n ReactEditor.blur(editor)\n control?.switchToBuildMode()\n }\n\n if (editMode === BuilderEditMode.CONTENT) {\n e.stopPropagation()\n }\n\n plugins.forEach(plugin => plugin?.onKeyDown?.(e, editor))\n },\n [control, plugins, editor, editMode],\n )\n\n const handleKeyUp = useCallback(\n (e: KeyboardEvent) => {\n if (editMode === BuilderEditMode.CONTENT) {\n e.stopPropagation()\n e.preventDefault()\n }\n },\n [control, editor, editMode],\n )\n\n const handleClick = useCallback(\n (e: MouseEvent) => {\n if (editMode === BuilderEditMode.CONTENT) e.stopPropagation()\n },\n [editMode],\n )\n\n const handleBlur = useCallback((e: FocusEvent) => {\n // outside of iframe (overlay, sidebar, etc)\n if (e.relatedTarget == null) return\n // another text\n if (e.relatedTarget?.getAttribute('contenteditable') === 'true')\n isPreservingFocus.current = false\n }, [])\n\n return (\n <Slate editor={editor} value={initialValue}>\n <Editable\n renderLeaf={renderLeaf}\n renderElement={renderElement}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onClick={handleClick}\n onBlur={handleBlur}\n readOnly={editMode !== BuilderEditMode.CONTENT}\n placeholder=\"Write some text...\"\n />\n </Slate>\n )\n}\n\nexport default EditableTextV2\n"],"names":["editor","isEnabled","useIsomorphicLayoutEffect","current","selection","ReactEditor","isFocused","root","findDocumentOrShadowRoot","domSelection","getSelection","newDomRange","toDOMRange","SlateRange","isBackward","setBaseAndExtent","endContainer","endOffset","startContainer","startOffset","removeAllRanges","e","console","error","definition","plugins","props","children","renderElement","reduce","renderFn","plugin","control","getElementValue","undefined","ControlValue","element","value","initialRenderElement","attributes","leaf","className","renderLeaf","getLeafValue","initialRenderLeaf","change","performance","now","time","data","isInBuilder","useIsInBuilder","useEffect","isChangeWithinPreviousSec","localChanges","get","key","richTextV2DataToDescendents","onChange","breakpoints","useBreakpoints","useMemo","type","BlockType","Default","text","config","defaultValue","mode","RichTextV2Mode","Inline","typography","style","deviceId","getBaseBreakpoint","id","fontWeight","fontSize","unit","lineHeight","some","DefaultBreakpointID","Mobile","InlineModePlugin","BlockPlugin","TypographyPlugin","TextAlignPlugin","InlinePlugin","LinkPlugin","useState","reduceRight","withPlugin","withLocalChanges","withBuilder","withReact","createEditor","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","isPreservingFocus","useRef","useSyncDOMSelection","editMode","useBuilderEditMode","BuilderEditMode","CONTENT","deselect","useSyncRemoteChanges","presetValue","usePresetValue","initialValue","setEditor","setDefaultValue","onLocalUserChange","useCallback","handleFocus","select","handleKeyDown","isHotkey","redo","undo","blur","switchToBuildMode","stopPropagation","forEach","onKeyDown","handleKeyUp","preventDefault","handleClick","handleBlur","relatedTarget","getAttribute","Slate","Editable"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs9.js","sources":["../src/runtimes/react/controls/rich-text-v2/EditableTextV2/useSyncDOMSelection.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-element.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/render-leaf.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/useRemoteChanges.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/usePresetValue.tsx","../src/runtimes/react/controls/rich-text-v2/EditableTextV2/editable-text-v2.tsx"],"sourcesContent":["import { Editor, Range as SlateRange } from 'slate'\nimport { useIsomorphicLayoutEffect } from '../../../../../components/hooks/useIsomorphicLayoutEffect'\nimport { MutableRefObject } from 'react'\nimport { ReactEditor } from 'slate-react'\n\n/**\n * Clicking outside of the host blurs our `<Editable />`.\n * `<Editable />` only updates the DOM's selection to match slate when it is focused.\n * In the case of a panel being clicked this hook updates the DOM selection to match slate.\n */\nexport function useSyncDOMSelection(editor: Editor, isEnabled: MutableRefObject<boolean>) {\n useIsomorphicLayoutEffect(() => {\n if (!isEnabled.current || editor.selection == null || ReactEditor.isFocused(editor)) return\n try {\n const root = ReactEditor.findDocumentOrShadowRoot(editor) as Document\n const domSelection = root.getSelection()\n const newDomRange: Range | null = ReactEditor.toDOMRange(editor, editor.selection)\n\n if (newDomRange) {\n if (SlateRange.isBackward(editor.selection!)) {\n domSelection?.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset,\n )\n } else {\n domSelection?.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset,\n )\n }\n } else {\n domSelection?.removeAllRanges()\n }\n } catch (e) {\n console.error(e)\n }\n })\n}\n","import { RenderElementProps } from 'slate-react'\nimport { RichTextV2ControlDefinition } from '../../../../../controls'\nimport { ControlValue } from '../../control'\nimport { RichTextV2Plugin } from '../../../../../controls/rich-text-v2/plugin'\n\ntype RichTextV2ElementProps = RenderElementProps & {\n definition: RichTextV2ControlDefinition\n plugins: RichTextV2Plugin[]\n}\n\nexport function RichTextV2Element({ definition, plugins, ...props }: RichTextV2ElementProps) {\n function initialRenderElement(props: RenderElementProps) {\n return props.children\n }\n\n const renderElement = plugins.reduce(\n (renderFn, plugin) => (props: RenderElementProps) => {\n const { control, renderElement } = plugin\n\n if (renderElement == null) return renderFn(props)\n\n if (control == null || control.getElementValue == null)\n return renderElement(renderFn, undefined)(props)\n\n return (\n <ControlValue definition={control.definition} data={control.getElementValue(props.element)}>\n {value => renderElement(renderFn, value)(props)}\n </ControlValue>\n )\n },\n initialRenderElement,\n )\n\n return renderElement(props)\n}\n","import { RenderLeafProps } from 'slate-react'\nimport { RichTextV2ControlDefinition } from '../../../../../controls'\nimport { ControlValue } from '../../control'\nimport { RichTextV2Plugin } from '../../../../../controls/rich-text-v2/plugin'\n\ntype RichTextV2LeafProps = RenderLeafProps & {\n definition: RichTextV2ControlDefinition\n plugins: RichTextV2Plugin[]\n}\n\nexport function RichTextV2Leaf({ definition, plugins, ...props }: RichTextV2LeafProps) {\n function initialRenderLeaf({ attributes, children, leaf }: RenderLeafProps) {\n return (\n <span className={leaf.className} {...attributes}>\n {children}\n </span>\n )\n }\n\n const renderLeaf = plugins.reduce(\n (renderFn, plugin) => (props: RenderLeafProps) => {\n const { control, renderLeaf } = plugin\n\n if (control?.definition == null || renderLeaf == null) return renderFn(props)\n\n if (control.getLeafValue == null) return renderLeaf(renderFn, undefined)(props)\n\n return (\n <ControlValue definition={control.definition} data={control.getLeafValue(props.leaf)}>\n {value => renderLeaf(renderFn, value)(props)}\n </ControlValue>\n )\n },\n initialRenderLeaf,\n )\n\n return renderLeaf(props)\n}\n","import { useEffect } from 'react'\nimport { Editor } from 'slate'\nimport { RichTextV2ControlData, richTextV2DataToDescendents } from '../../../../../controls'\nimport { LocalChange } from '../../../../../slate'\nimport { useIsInBuilder } from '../../..'\n\n// From the component point of view we can't know if the change came from an action or a undo/redo\n// So we diff the time and force updates on actions that occured over a second ago.\nfunction isChangeWithinPreviousSec(change?: LocalChange) {\n return performance.now() - (change?.time ?? 0) < 1000\n}\n\nexport function useSyncRemoteChanges(editor: Editor, data?: RichTextV2ControlData) {\n const isInBuilder = useIsInBuilder()\n\n useEffect(() => {\n if (\n !isChangeWithinPreviousSec(editor.localChanges.get(data?.key ?? '')) &&\n data &&\n isInBuilder\n ) {\n editor.children = richTextV2DataToDescendents(data)\n editor.selection = editor?.localChanges.get(data.key)?.selection ?? null\n editor.onChange()\n }\n }, [editor, data])\n}\n","import { Descendant } from 'slate'\nimport { BlockType } from '../../../../../slate'\nimport { getBaseBreakpoint, DefaultBreakpointID } from '../../../../../state/modules/breakpoints'\nimport { useBreakpoints } from '../../..'\nimport { useMemo } from 'react'\nimport { RichTextV2ControlDefinition, RichTextV2Mode } from '../../../../../controls'\n\nexport function usePresetValue(definition: RichTextV2ControlDefinition): Descendant[] {\n const breakpoints = useBreakpoints()\n return useMemo(\n () => [\n {\n type: BlockType.Default,\n children: [\n {\n text: definition.config.defaultValue ?? '',\n ...(definition.config.mode === RichTextV2Mode.Inline\n ? {}\n : {\n typography: {\n style: [\n {\n deviceId: getBaseBreakpoint(breakpoints).id,\n value: {\n fontWeight: 400,\n fontSize: { value: 18, unit: 'px' },\n lineHeight: 1.5,\n },\n },\n ...(breakpoints.some(({ id }) => id === DefaultBreakpointID.Mobile)\n ? [\n {\n deviceId: DefaultBreakpointID.Mobile,\n value: { fontSize: { value: 16, unit: 'px' } },\n },\n ]\n : []),\n ],\n },\n }),\n },\n ],\n },\n ],\n [definition.config.mode, definition.config.defaultValue, breakpoints],\n )\n}\n\nexport const defaultValue = [\n {\n type: BlockType.Default,\n children: [\n {\n text: '',\n },\n ],\n },\n]\n","import {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { createEditor } from 'slate'\nimport isHotkey from 'is-hotkey'\nimport {\n withReact,\n ReactEditor,\n RenderElementProps,\n RenderLeafProps,\n Slate,\n Editable,\n} from 'slate-react'\n\nimport {\n RichTextV2Control,\n RichTextV2ControlData,\n RichTextV2ControlDefinition,\n RichTextV2Mode,\n} from '../../../../../controls'\nimport { useBuilderEditMode } from '../../..'\nimport { BuilderEditMode } from '../../../../../state/modules/builder-edit-mode'\nimport { pollBoxModel } from '../../../poll-box-model'\nimport {\n BlockPlugin,\n InlineModePlugin,\n InlinePlugin,\n LinkPlugin,\n TextAlignPlugin,\n TypographyPlugin,\n withBuilder,\n withLocalChanges,\n} from '../../../../../slate'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\nimport { RichTextV2Element } from './render-element'\nimport { RichTextV2Leaf } from './render-leaf'\nimport { richTextV2DataToDescendents } from '../../../../../controls/rich-text-v2/dto'\nimport { useSyncRemoteChanges } from './useRemoteChanges'\nimport { defaultValue, usePresetValue } from './usePresetValue'\n\nexport type RichTextV2ControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV2ControlDefinition }\n\ntype Props = {\n text?: RichTextV2ControlData\n definition: RichTextV2ControlDefinition\n control: RichTextV2Control | null\n}\n\nexport function EditableTextV2({ text, definition, control }: Props) {\n const plugins = useMemo(() => {\n const plugins = [\n /**\n * TODO: we are manually referencing our default plugins for each mode here because\n * Referencing the real LinkPlugin causes a circular dependency.\n * When circular dependencies calm down we should update the plugin definition to use real plugins,\n * and just use the plugins that are defined by our config.\n */\n // ...(definition?.config?.plugins ?? []),\n ...(definition?.config?.mode === RichTextV2Mode.Inline\n ? [InlineModePlugin()]\n : [BlockPlugin(), TypographyPlugin(), TextAlignPlugin(), InlinePlugin(), LinkPlugin()]),\n ]\n return plugins\n }, [definition])\n\n const [editor] = useState(() =>\n plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n withLocalChanges(withBuilder(withReact(createEditor()))),\n ),\n )\n\n useEffect(() => {\n if (control == null) return\n\n const element = ReactEditor.toDOMNode(editor, editor)\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => control.changeBoxModel(boxModel),\n })\n }, [editor, control])\n\n // ------ Preserving selection ------\n\n const isPreservingFocus = useRef(false)\n useSyncDOMSelection(editor, isPreservingFocus)\n const editMode = useBuilderEditMode()\n\n useEffect(() => {\n /**\n * This is required because clicking on the overlay has `relatedTarget` null just like the sidebar, but\n * - in the case of the overlay we switch to BUILD mode\n * - in the case of the sidebar we preserve the selection\n */\n if (editMode !== BuilderEditMode.CONTENT) {\n isPreservingFocus.current = false\n ReactEditor.deselect(editor)\n }\n }, [editMode])\n\n // ------ Syncing remote changes ------\n\n useSyncRemoteChanges(editor, text)\n\n // ------ Default value ------\n\n const presetValue = usePresetValue(definition)\n\n const initialValue = useMemo(\n () => (text && richTextV2DataToDescendents(text)) ?? presetValue,\n [text, presetValue],\n )\n\n useEffect(() => {\n control?.setEditor(editor)\n control?.setDefaultValue(defaultValue)\n }, [control, editor])\n\n /**\n * When initialValue is set to the default value we need to trigger an local change so that the sidebar updates and so the data is saved\n */\n useEffect(() => {\n if (initialValue === presetValue) {\n control?.onLocalUserChange()\n }\n }, [control, initialValue, presetValue])\n\n // ------ Rendering ------\n\n const renderElement = useCallback(\n (props: RenderElementProps) => {\n return <RichTextV2Element {...props} definition={definition} plugins={plugins} />\n },\n [plugins, definition],\n )\n\n const renderLeaf = useCallback(\n (props: RenderLeafProps) => {\n return <RichTextV2Leaf {...props} definition={definition} plugins={plugins} />\n },\n [plugins, definition],\n )\n\n // ------ Event handlers ------\n\n const handleFocus = useCallback(() => {\n isPreservingFocus.current = true\n control?.select()\n }, [control])\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey('mod+shift+z', e)) return control?.redo()\n if (isHotkey('mod+z', e)) return control?.undo()\n if (isHotkey('escape')(e)) {\n isPreservingFocus.current = false\n ReactEditor.blur(editor)\n control?.switchToBuildMode()\n }\n\n if (editMode === BuilderEditMode.CONTENT) {\n e.stopPropagation()\n }\n\n plugins.forEach(plugin => plugin?.onKeyDown?.(e, editor))\n },\n [control, plugins, editor, editMode],\n )\n\n const handleKeyUp = useCallback(\n (e: KeyboardEvent) => {\n if (editMode === BuilderEditMode.CONTENT) {\n e.stopPropagation()\n e.preventDefault()\n }\n },\n [control, editor, editMode],\n )\n\n const handleClick = useCallback(\n (e: MouseEvent) => {\n if (editMode === BuilderEditMode.CONTENT) e.stopPropagation()\n },\n [editMode],\n )\n\n const handleBlur = useCallback((e: FocusEvent) => {\n // outside of iframe (overlay, sidebar, etc)\n if (e.relatedTarget == null) return\n // another text\n if (e.relatedTarget?.getAttribute('contenteditable') === 'true')\n isPreservingFocus.current = false\n }, [])\n\n return (\n <Slate editor={editor} value={initialValue}>\n <Editable\n renderLeaf={renderLeaf}\n renderElement={renderElement}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onClick={handleClick}\n onBlur={handleBlur}\n readOnly={editMode !== BuilderEditMode.CONTENT}\n placeholder=\"Write some text...\"\n />\n </Slate>\n )\n}\n\nexport default EditableTextV2\n"],"names":["editor","isEnabled","useIsomorphicLayoutEffect","current","selection","ReactEditor","isFocused","root","findDocumentOrShadowRoot","domSelection","getSelection","newDomRange","toDOMRange","SlateRange","isBackward","setBaseAndExtent","endContainer","endOffset","startContainer","startOffset","removeAllRanges","e","console","error","definition","plugins","props","children","renderElement","reduce","renderFn","plugin","control","getElementValue","undefined","ControlValue","element","value","initialRenderElement","attributes","leaf","className","renderLeaf","getLeafValue","initialRenderLeaf","change","performance","now","time","data","isInBuilder","useIsInBuilder","useEffect","isChangeWithinPreviousSec","localChanges","get","key","richTextV2DataToDescendents","onChange","breakpoints","useBreakpoints","useMemo","type","BlockType","Default","text","config","defaultValue","mode","RichTextV2Mode","Inline","typography","style","deviceId","getBaseBreakpoint","id","fontWeight","fontSize","unit","lineHeight","some","DefaultBreakpointID","Mobile","InlineModePlugin","BlockPlugin","TypographyPlugin","TextAlignPlugin","InlinePlugin","LinkPlugin","useState","reduceRight","withPlugin","withLocalChanges","withBuilder","withReact","createEditor","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","isPreservingFocus","useRef","useSyncDOMSelection","editMode","useBuilderEditMode","BuilderEditMode","CONTENT","deselect","useSyncRemoteChanges","presetValue","usePresetValue","initialValue","setEditor","setDefaultValue","onLocalUserChange","useCallback","handleFocus","select","handleKeyDown","isHotkey","redo","undo","blur","switchToBuildMode","stopPropagation","forEach","onKeyDown","handleKeyUp","preventDefault","handleClick","handleBlur","relatedTarget","getAttribute","Slate","Editable"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -50,7 +50,7 @@ import "escape-html";
50
50
  import "slate-hyperscript";
51
51
  import "parse5";
52
52
  import "is-hotkey";
53
- import { getBaseBreakpoint, findBreakpointOverride, join, getBreakpoint, getBreakpointMediaQuery, mergeOrCoalesceFallbacks, shallowMergeFallbacks, parseBreakpointsInput } from "./state/breakpoints.es.js";
53
+ import { a as getBaseBreakpoint, f as findBreakpointOverride, j as join, b as getBreakpoint, c as getBreakpointMediaQuery, m as mergeOrCoalesceFallbacks, d as shallowMergeFallbacks, p as parseBreakpointsInput } from "./breakpoints.es.js";
54
54
  import { useSyncExternalStore } from "use-sync-external-store/shim";
55
55
  import { createStore, applyMiddleware } from "redux";
56
56
  import thunk from "redux-thunk";
@@ -212,9 +212,13 @@ function fetchAPIResource(resourceType, resourceId, locale) {
212
212
  resource = await fetchJson(`/api/makeswift/localized-global-elements/${resourceId}/${locale}`);
213
213
  break;
214
214
  }
215
- case APIResourceType.PagePathnameSlice:
216
- resource = await fetchJson(`/api/makeswift/page-pathname-slices/${resourceId}?locale=${locale}`);
215
+ case APIResourceType.PagePathnameSlice: {
216
+ const url = new URL(`/api/makeswift/page-pathname-slices/${resourceId}`, "http://n");
217
+ if (locale != null)
218
+ url.searchParams.set("locale", locale.toString());
219
+ resource = await fetchJson(url.pathname + url.search);
217
220
  break;
221
+ }
218
222
  case APIResourceType.Table:
219
223
  resource = await fetchJson(`/api/makeswift/tables/${resourceId}`);
220
224
  break;
@@ -846,6 +850,8 @@ Received "${apiKey}" instead.`);
846
850
  }
847
851
  async getTypographies(typographyIds, preview) {
848
852
  var _a;
853
+ if (typographyIds.length === 0)
854
+ return [];
849
855
  const url = new URL(`${this.siteVersion == null ? "v1" : "v2"}/typographies/bulk`, this.apiOrigin);
850
856
  typographyIds.forEach((id) => {
851
857
  url.searchParams.append("ids", id);
@@ -864,6 +870,8 @@ Received "${apiKey}" instead.`);
864
870
  }
865
871
  async getSwatches(ids, preview) {
866
872
  var _a;
873
+ if (ids.length === 0)
874
+ return [];
867
875
  const url = new URL(`${this.siteVersion == null ? "v1" : "v2"}/swatches/bulk`, this.apiOrigin);
868
876
  ids.forEach((id) => {
869
877
  url.searchParams.append("ids", id);
@@ -1089,6 +1097,8 @@ Received "${apiKey}" instead.`);
1089
1097
  }
1090
1098
  async getPagePathnameSlices(pageIds, { preview: previewOverride = false, locale } = {}) {
1091
1099
  var _a;
1100
+ if (pageIds.length === 0)
1101
+ return [];
1092
1102
  const url = new URL(`${this.siteVersion == null ? "v1" : "v2"}/page-pathname-slices/bulk`, this.apiOrigin);
1093
1103
  pageIds.forEach((id) => url.searchParams.append("ids", id));
1094
1104
  if (locale != null)
@@ -1206,7 +1216,7 @@ async function fonts(_req, res, { getFonts } = {}) {
1206
1216
  const fonts2 = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1207
1217
  return res.json(fonts2);
1208
1218
  }
1209
- const version = "0.11.9";
1219
+ const version = "0.11.11";
1210
1220
  async function handler(req, res, { apiKey, siteVersions }) {
1211
1221
  if (req.query.secret !== apiKey) {
1212
1222
  return res.status(401).json({ message: "Unauthorized" });
@@ -2490,7 +2500,7 @@ function registerBuiltinComponents(runtime) {
2490
2500
  }
2491
2501
  var _path;
2492
2502
  function _extends() {
2493
- _extends = Object.assign || function(target) {
2503
+ _extends = Object.assign ? Object.assign.bind() : function(target) {
2494
2504
  for (var i = 1; i < arguments.length; i++) {
2495
2505
  var source = arguments[i];
2496
2506
  for (var key in source) {