@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.
- package/LICENSE +21 -0
- package/dist/Box.cjs.js +1 -1
- package/dist/Box.cjs.js.map +1 -1
- package/dist/Box.es.js +1 -1
- package/dist/Box.es.js.map +1 -1
- package/dist/Button.cjs.js +1 -1
- package/dist/Button.cjs.js.map +1 -1
- package/dist/Button.es.js +1 -1
- package/dist/Button.es.js.map +1 -1
- package/dist/Carousel.cjs.js +1 -1
- package/dist/Carousel.cjs.js.map +1 -1
- package/dist/Carousel.es.js +1 -1
- package/dist/Carousel.es.js.map +1 -1
- package/dist/Countdown.cjs.js +1 -1
- package/dist/Countdown.cjs.js.map +1 -1
- package/dist/Countdown.es.js +1 -1
- package/dist/Countdown.es.js.map +1 -1
- package/dist/Divider.cjs.js +1 -1
- package/dist/Divider.cjs.js.map +1 -1
- package/dist/Divider.es.js +1 -1
- package/dist/Divider.es.js.map +1 -1
- package/dist/Embed.cjs.js +1 -1
- package/dist/Embed.cjs.js.map +1 -1
- package/dist/Embed.es.js +1 -1
- package/dist/Embed.es.js.map +1 -1
- package/dist/Form.cjs.js +3 -3
- package/dist/Form.cjs.js.map +1 -1
- package/dist/Form.es.js +3 -3
- package/dist/Form.es.js.map +1 -1
- package/dist/Image.cjs.js +1 -1
- package/dist/Image.cjs.js.map +1 -1
- package/dist/Image.es.js +1 -1
- package/dist/Image.es.js.map +1 -1
- package/dist/LiveProvider.cjs.js +1 -1
- package/dist/LiveProvider.cjs.js.map +1 -1
- package/dist/LiveProvider.es.js +1 -1
- package/dist/LiveProvider.es.js.map +1 -1
- package/dist/Navigation.cjs.js +7 -7
- package/dist/Navigation.cjs.js.map +1 -1
- package/dist/Navigation.es.js +7 -7
- package/dist/Navigation.es.js.map +1 -1
- package/dist/PreviewProvider.cjs.js +1 -1
- package/dist/PreviewProvider.cjs.js.map +1 -1
- package/dist/PreviewProvider.es.js +1 -1
- package/dist/PreviewProvider.es.js.map +1 -1
- package/dist/ReadOnlyText.cjs.js +1 -1
- package/dist/ReadOnlyText.cjs.js.map +1 -1
- package/dist/ReadOnlyText.es.js +1 -1
- package/dist/ReadOnlyText.es.js.map +1 -1
- package/dist/ReadOnlyTextV2.cjs.js +2 -2
- package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
- package/dist/ReadOnlyTextV2.es.js +2 -2
- package/dist/ReadOnlyTextV2.es.js.map +1 -1
- package/dist/Root.cjs.js +1 -1
- package/dist/Root.cjs.js.map +1 -1
- package/dist/Root.es.js +1 -1
- package/dist/Root.es.js.map +1 -1
- package/dist/SocialLinks.cjs.js +132 -74
- package/dist/SocialLinks.cjs.js.map +1 -1
- package/dist/SocialLinks.es.js +132 -74
- package/dist/SocialLinks.es.js.map +1 -1
- package/dist/Text.cjs.js.map +1 -1
- package/dist/Text.es.js.map +1 -1
- package/dist/Video.cjs.js +1 -1
- package/dist/Video.cjs.js.map +1 -1
- package/dist/Video.es.js +1 -1
- package/dist/Video.es.js.map +1 -1
- package/dist/breakpoints.cjs.js +223 -0
- package/dist/breakpoints.cjs.js.map +1 -0
- package/dist/breakpoints.es.js +206 -0
- package/dist/breakpoints.es.js.map +1 -0
- package/dist/builder.cjs.js +1 -1
- package/dist/builder.es.js +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +1 -1
- package/dist/control-serialization.cjs.js +1 -1
- package/dist/control-serialization.es.js +1 -1
- package/dist/controls.cjs.js +1 -1
- package/dist/controls.es.js +1 -1
- package/dist/index.cjs.js +15 -5
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs2.js +1 -1
- package/dist/index.cjs2.js.map +1 -1
- package/dist/index.cjs3.js.map +1 -1
- package/dist/index.cjs6.js.map +1 -1
- package/dist/index.cjs7.js.map +1 -1
- package/dist/index.cjs8.js +1 -1
- package/dist/index.cjs8.js.map +1 -1
- package/dist/index.cjs9.js +1 -1
- package/dist/index.cjs9.js.map +1 -1
- package/dist/index.es.js +15 -5
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +1 -1
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es3.js.map +1 -1
- package/dist/index.es6.js.map +1 -1
- package/dist/index.es7.js.map +1 -1
- package/dist/index.es8.js +1 -1
- package/dist/index.es8.js.map +1 -1
- package/dist/index.es9.js +1 -1
- package/dist/index.es9.js.map +1 -1
- package/dist/main.cjs.js +1 -1
- package/dist/main.es.js +1 -1
- package/dist/next.cjs.js +1 -1
- package/dist/next.es.js +1 -1
- package/dist/prop-controllers.cjs.js +1 -1
- package/dist/prop-controllers.es.js +1 -1
- package/dist/react-page.cjs.js +192 -6
- package/dist/react-page.cjs.js.map +1 -1
- package/dist/react-page.es.js +198 -12
- package/dist/react-page.es.js.map +1 -1
- package/dist/react.cjs.js +1 -1
- package/dist/react.es.js +1 -1
- package/dist/slate.cjs.js +1 -1
- package/dist/slate.es.js +1 -1
- package/dist/state/breakpoints.cjs.js +17 -219
- package/dist/state/breakpoints.cjs.js.map +1 -1
- package/dist/state/breakpoints.es.js +2 -205
- package/dist/state/breakpoints.es.js.map +1 -1
- package/dist/toText.cjs.js +1 -1
- package/dist/toText.es.js +1 -1
- package/dist/types/src/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts +1 -0
- package/dist/types/src/components/builtin/Form/components/Field/components/PlaceholderTableField/index.d.ts.map +1 -1
- package/dist/types/src/components/builtin/Form/components/Field/index.d.ts +1 -0
- package/dist/types/src/components/builtin/Form/components/Field/index.d.ts.map +1 -1
- package/dist/types/src/components/builtin/Form/components/Spinner/index.d.ts +1 -0
- package/dist/types/src/components/builtin/Form/components/Spinner/index.d.ts.map +1 -1
- package/dist/types/src/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts +1 -0
- package/dist/types/src/components/builtin/Navigation/components/LinksPlaceholder/index.d.ts.map +1 -1
- package/dist/types/src/components/builtin/Navigation/components/MobileMenu/index.d.ts +1 -0
- package/dist/types/src/components/builtin/Navigation/components/MobileMenu/index.d.ts.map +1 -1
- package/dist/types/src/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts +1 -0
- package/dist/types/src/components/builtin/SocialLinks/components/SocialLinksPlaceholder/index.d.ts.map +1 -1
- package/dist/types/src/components/builtin/SocialLinks/options.d.ts +10 -0
- package/dist/types/src/components/builtin/SocialLinks/options.d.ts.map +1 -1
- package/dist/types/src/components/page/Page.d.ts +1 -0
- package/dist/types/src/components/page/Page.d.ts.map +1 -1
- package/dist/types/src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts +1 -0
- package/dist/types/src/components/shared/BackgroundsContainer/components/BackgroundVideo/index.d.ts.map +1 -1
- package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts +1 -0
- package/dist/types/src/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts.map +1 -1
- package/dist/types/src/controls/control.d.ts.map +1 -1
- package/dist/types/src/controls/rich-text/__tests__/copy.test.d.ts.map +1 -0
- package/dist/types/src/controls/rich-text/__tests__/dto.test.d.ts.map +1 -0
- package/dist/types/src/controls/rich-text/__tests__/introspection.test.d.ts.map +1 -0
- package/dist/types/src/controls/rich-text-v2/__tests__/copy.test.d.ts.map +1 -0
- package/dist/types/src/controls/rich-text-v2/__tests__/fixtures/rearranged.d.ts.map +1 -0
- package/dist/types/src/controls/rich-text-v2/__tests__/fixtures/simple.d.ts.map +1 -0
- package/dist/types/src/controls/rich-text-v2/__tests__/introspection.test.d.ts.map +1 -0
- package/dist/types/src/controls/rich-text-v2/__tests__/translation.test.d.ts.map +1 -0
- package/dist/types/src/controls/rich-text-v2/translation.d.ts +1 -1
- package/dist/types/src/controls/rich-text-v2/translation.d.ts.map +1 -1
- package/dist/types/src/next/client.d.ts.map +1 -1
- package/dist/types/src/prop-controllers/descriptors.d.ts +1 -1
- package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/components/render-hook.d.ts +1 -0
- package/dist/types/src/runtimes/react/components/render-hook.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls/control.d.ts +1 -0
- package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls/list.d.ts +1 -0
- package/dist/types/src/runtimes/react/controls/list.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls/shape.d.ts +1 -0
- package/dist/types/src/runtimes/react/controls/shape.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls/style-v2.d.ts +1 -0
- package/dist/types/src/runtimes/react/controls/style-v2.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/controls.d.ts +1 -0
- package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
- package/dist/types/src/runtimes/react/find-dom-node.d.ts.map +1 -1
- package/dist/types/src/slate/TypographyPlugin/index.d.ts +4 -1
- package/dist/types/src/slate/TypographyPlugin/index.d.ts.map +1 -1
- package/dist/types/src/slate/TypographyPlugin/normalizeSimilarText.d.ts +10 -0
- package/dist/types/src/slate/TypographyPlugin/normalizeSimilarText.d.ts.map +1 -0
- package/dist/types/src/slate/TypographyPlugin/normalizeTypographyDown.d.ts +29 -0
- package/dist/types/src/slate/TypographyPlugin/normalizeTypographyDown.d.ts.map +1 -0
- package/dist/types/src/slate/TypographyPlugin/normalizeTypographyUp.d.ts +4 -0
- package/dist/types/src/slate/TypographyPlugin/normalizeTypographyUp.d.ts.map +1 -0
- package/dist/types/src/slate/types.d.ts +19 -2
- package/dist/types/src/slate/types.d.ts.map +1 -1
- package/dist/types/src/state/makeswift-api-client.d.ts.map +1 -1
- package/dist/useMediaQuery.cjs.js +1 -1
- package/dist/useMediaQuery.es.js +1 -1
- package/package.json +12 -13
- package/dist/types/src/controls/rich-text/__test__/copy.test.d.ts.map +0 -1
- package/dist/types/src/controls/rich-text/__test__/dto.test.d.ts.map +0 -1
- package/dist/types/src/controls/rich-text/__test__/introspection.test.d.ts.map +0 -1
- package/dist/types/src/controls/rich-text-v2/__test__/copy.test.d.ts.map +0 -1
- package/dist/types/src/controls/rich-text-v2/__test__/fixtures/rearranged.d.ts.map +0 -1
- package/dist/types/src/controls/rich-text-v2/__test__/fixtures/simple.d.ts.map +0 -1
- package/dist/types/src/controls/rich-text-v2/__test__/introspection.test.d.ts.map +0 -1
- package/dist/types/src/controls/rich-text-v2/__test__/translation.test.d.ts.map +0 -1
- /package/dist/types/src/controls/rich-text/{__test__ → __tests__}/copy.test.d.ts +0 -0
- /package/dist/types/src/controls/rich-text/{__test__ → __tests__}/dto.test.d.ts +0 -0
- /package/dist/types/src/controls/rich-text/{__test__ → __tests__}/introspection.test.d.ts +0 -0
- /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/copy.test.d.ts +0 -0
- /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/fixtures/rearranged.d.ts +0 -0
- /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/fixtures/simple.d.ts +0 -0
- /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/introspection.test.d.ts +0 -0
- /package/dist/types/src/controls/rich-text-v2/{__test__ → __tests__}/translation.test.d.ts +0 -0
package/dist/index.cjs9.js.map
CHANGED
|
@@ -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 "./
|
|
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
|
-
|
|
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.
|
|
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
|
|
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) {
|