@makeswift/runtime 0.7.17 → 0.7.18

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 (98) hide show
  1. package/dist/Box.cjs.js +1 -1
  2. package/dist/Box.es.js +1 -1
  3. package/dist/Button.cjs.js +2 -2
  4. package/dist/Button.es.js +2 -2
  5. package/dist/Carousel.cjs.js +3 -3
  6. package/dist/Carousel.es.js +3 -3
  7. package/dist/Countdown.cjs.js +3 -3
  8. package/dist/Countdown.es.js +3 -3
  9. package/dist/Divider.cjs.js +3 -3
  10. package/dist/Divider.es.js +3 -3
  11. package/dist/Embed.cjs.js +3 -3
  12. package/dist/Embed.es.js +3 -3
  13. package/dist/Form.cjs.js +1 -1
  14. package/dist/Form.es.js +1 -1
  15. package/dist/Image.cjs.js +3 -3
  16. package/dist/Image.es.js +3 -3
  17. package/dist/LiveProvider.cjs.js +3 -3
  18. package/dist/LiveProvider.es.js +3 -3
  19. package/dist/Navigation.cjs.js +3 -3
  20. package/dist/Navigation.es.js +3 -3
  21. package/dist/PreviewProvider.cjs.js +8 -8
  22. package/dist/PreviewProvider.cjs.js.map +1 -1
  23. package/dist/PreviewProvider.es.js +1 -1
  24. package/dist/ReadOnlyText.cjs.js +55 -55
  25. package/dist/ReadOnlyText.cjs.js.map +1 -1
  26. package/dist/ReadOnlyText.es.js +3 -3
  27. package/dist/Root.cjs.js +3 -3
  28. package/dist/Root.es.js +3 -3
  29. package/dist/SocialLinks.cjs.js +2 -2
  30. package/dist/SocialLinks.es.js +2 -2
  31. package/dist/Text.cjs.js +3 -3
  32. package/dist/Text.es.js +3 -3
  33. package/dist/Video.cjs.js +3 -3
  34. package/dist/Video.es.js +3 -3
  35. package/dist/builder.cjs.js +2 -2
  36. package/dist/builder.es.js +2 -2
  37. package/dist/components.cjs.js +1 -1
  38. package/dist/components.es.js +1 -1
  39. package/dist/constants.cjs.js +14 -14
  40. package/dist/constants.cjs.js.map +1 -1
  41. package/dist/constants.es.js +1 -1
  42. package/dist/control-serialization.cjs.js +41 -41
  43. package/dist/control-serialization.cjs.js.map +1 -1
  44. package/dist/control-serialization.es.js +1 -1
  45. package/dist/controls.cjs.js +46 -44
  46. package/dist/controls.cjs.js.map +1 -1
  47. package/dist/controls.es.js +2 -2
  48. package/dist/{rich-text.cjs.js → descriptors.cjs.js} +476 -459
  49. package/dist/descriptors.cjs.js.map +1 -0
  50. package/dist/{rich-text.es.js → descriptors.es.js} +467 -452
  51. package/dist/descriptors.es.js.map +1 -0
  52. package/dist/index.cjs.js +241 -210
  53. package/dist/index.cjs.js.map +1 -1
  54. package/dist/index.cjs2.js +1 -1
  55. package/dist/index.cjs5.js +16 -16
  56. package/dist/index.cjs5.js.map +1 -1
  57. package/dist/index.cjs6.js +3 -3
  58. package/dist/index.cjs7.js +35 -35
  59. package/dist/index.cjs7.js.map +1 -1
  60. package/dist/index.es.js +44 -13
  61. package/dist/index.es.js.map +1 -1
  62. package/dist/index.es2.js +1 -1
  63. package/dist/index.es5.js +1 -1
  64. package/dist/index.es6.js +3 -3
  65. package/dist/index.es7.js +1 -1
  66. package/dist/introspection.cjs.js +22 -22
  67. package/dist/introspection.cjs.js.map +1 -1
  68. package/dist/introspection.es.js +1 -1
  69. package/dist/main.cjs.js +1 -1
  70. package/dist/main.es.js +1 -1
  71. package/dist/next.cjs.js +3 -3
  72. package/dist/next.es.js +3 -3
  73. package/dist/prop-controllers.cjs.js +5 -5
  74. package/dist/prop-controllers.es.js +2 -2
  75. package/dist/react.cjs.js +3 -3
  76. package/dist/react.es.js +3 -3
  77. package/dist/slate.cjs.js +4 -4
  78. package/dist/slate.es.js +4 -4
  79. package/dist/types/src/components/builtin/Button/Button.d.ts +1 -1
  80. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  81. package/dist/types/src/controls/control.d.ts +3 -2
  82. package/dist/types/src/controls/control.d.ts.map +1 -1
  83. package/dist/types/src/controls/shape.d.ts +1 -1
  84. package/dist/types/src/controls/shape.d.ts.map +1 -1
  85. package/dist/types/src/controls/style.d.ts +17 -0
  86. package/dist/types/src/controls/style.d.ts.map +1 -1
  87. package/dist/types/src/prop-controllers/descriptors.d.ts +1 -2
  88. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  89. package/dist/types/src/prop-controllers/instances.d.ts +3 -3
  90. package/dist/types/src/prop-controllers/instances.d.ts.map +1 -1
  91. package/dist/types/src/runtimes/react/controls/control.d.ts +3 -2
  92. package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
  93. package/dist/types/src/runtimes/react/controls/style.d.ts +2 -2
  94. package/dist/types/src/runtimes/react/controls/style.d.ts.map +1 -1
  95. package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
  96. package/package.json +1 -1
  97. package/dist/rich-text.cjs.js.map +0 -1
  98. package/dist/rich-text.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs7.js","sources":["../src/components/builtin/Text/components/Element/block.tsx","../src/components/builtin/Text/components/Element/inline.tsx","../src/components/builtin/Text/components/Element/element.tsx","../src/components/builtin/Text/EditableText/useSyncWithBuilder.tsx","../src/components/builtin/Text/EditableText/editable-text.tsx"],"sourcesContent":["import { cx } from '@emotion/css'\nimport { RenderElementProps } from 'slate-react'\nimport { Block, BlockType } from '../../../../../controls'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { responsiveStyle } from '../../../../utils/responsive-style'\n\nexport interface InlineRenderElementProps extends RenderElementProps {\n element: Block\n}\n\nexport function BlockElement({ element, attributes, children }: InlineRenderElementProps) {\n const blockStyles = [\n useStyle({ margin: 0 }),\n useStyle(responsiveStyle([element.textAlign], ([textAlign = 'left']) => ({ textAlign }))),\n ]\n\n switch (element.type) {\n case BlockType.Paragraph:\n return (\n <p {...attributes} className={cx(...blockStyles)}>\n {children}\n </p>\n )\n case BlockType.Heading1:\n return (\n <h1 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h1>\n )\n case BlockType.Heading2:\n return (\n <h2 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h2>\n )\n case BlockType.Heading3:\n return (\n <h3 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h3>\n )\n case BlockType.Heading4:\n return (\n <h4 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h4>\n )\n case BlockType.Heading5:\n return (\n <h5 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h5>\n )\n case BlockType.Heading6:\n return (\n <h6 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h6>\n )\n case BlockType.BlockQuote:\n return (\n <blockquote\n {...attributes}\n className={cx(\n ...blockStyles,\n useStyle({\n padding: '0.5em 10px',\n fontSize: '1.25em',\n fontWeight: '300',\n borderLeft: '5px solid rgba(0, 0, 0, 0.1)',\n }),\n )}\n >\n {children}\n </blockquote>\n )\n case BlockType.OrderedList:\n return (\n <ol {...attributes} className={cx(...blockStyles)} style={{ listStylePosition: 'inside' }}>\n {children}\n </ol>\n )\n case BlockType.UnorderedList:\n return (\n <ul {...attributes} className={cx(...blockStyles)} style={{ listStylePosition: 'inside' }}>\n {children}\n </ul>\n )\n case BlockType.ListItem:\n return (\n <li {...attributes} className={cx(...blockStyles)}>\n {children}\n </li>\n )\n case BlockType.ListItemChild:\n return (\n <span {...attributes} className={cx(...blockStyles)}>\n {children}\n </span>\n )\n }\n}\n","import { cx } from '@emotion/css'\nimport { ComponentPropsWithoutRef } from 'react'\nimport { RenderElementProps } from 'slate-react'\nimport { Inline, InlineType } from '../../../../../controls'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { Link } from '../../../../shared/Link'\n\nfunction StyledLink({ className, ...restOfProps }: ComponentPropsWithoutRef<typeof Link>) {\n return <Link {...restOfProps} className={cx(useStyle({ textDecoration: 'none' }), className)} />\n}\n\nexport interface InlineRenderElementProps extends RenderElementProps {\n element: Inline\n}\n\nexport function InlineElement({ element, attributes, children }: InlineRenderElementProps) {\n switch (element.type) {\n case InlineType.Code:\n return <code {...attributes}>{children}</code>\n case InlineType.SuperScript:\n return <sup {...attributes}>{children}</sup>\n case InlineType.SubScript:\n return <sub {...attributes}>{children}</sub>\n case InlineType.Link:\n return (\n <StyledLink {...attributes} link={element.link}>\n {children}\n </StyledLink>\n )\n }\n}\n","import { RenderElementProps } from 'slate-react'\nimport { BlockType, InlineType } from '../../../../../controls'\nimport { BlockElement } from './block'\nimport { InlineElement } from './inline'\n\nexport function Element({ element, ...props }: RenderElementProps) {\n switch (element.type) {\n case InlineType.Code:\n case InlineType.SuperScript:\n case InlineType.SubScript:\n case InlineType.Link:\n return <InlineElement element={element} {...props} />\n case BlockType.Paragraph:\n case BlockType.Heading1:\n case BlockType.Heading2:\n case BlockType.Heading3:\n case BlockType.BlockQuote:\n case BlockType.OrderedList:\n case BlockType.UnorderedList:\n case BlockType.ListItem:\n case BlockType.ListItemChild:\n return <BlockElement element={element} {...props} />\n default:\n return <span {...props.attributes}>{props.children}</span>\n }\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport { Editor } from 'slate'\nimport { richTextDTOtoDAO, richTextDTOtoSelection } from '../../../../controls'\nimport { RichTextValue } from '../../../../prop-controllers'\nimport deepEqual from '../../../../utils/deepEqual'\n\nconst COMMIT_DEBOUNCE_DELAY = 500\n\n/**\n * Compare new prop value with current editor and update editor\n * if the values are not equal.\n */\nexport function useSyncWithBuilder(editor: Editor, text?: RichTextValue) {\n const [shouldCommit, setShouldCommit] = useState(true)\n\n useEffect(() => {\n if (shouldCommit && text) {\n const nextValue = richTextDTOtoDAO(text)\n const nextSelection = richTextDTOtoSelection(text)\n if (!deepEqual(editor.children, nextValue) || !deepEqual(editor.selection, nextSelection)) {\n editor.children = nextValue\n editor.selection = nextSelection\n editor.onChange()\n }\n }\n }, [editor, shouldCommit, text])\n\n useEffect(() => {\n if (shouldCommit) return\n\n const timeoutId = window.setTimeout(() => {\n setShouldCommit(true)\n }, COMMIT_DEBOUNCE_DELAY)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [shouldCommit])\n\n return useCallback(() => setShouldCommit(false), [])\n}\n","import {\n forwardRef,\n KeyboardEvent,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\n\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact, ReactEditor } from 'slate-react'\n\nimport { ElementIDValue, RichTextValue } from '../../../../prop-controllers/descriptors'\nimport { cx } from '@emotion/css'\nimport { DescriptorsPropControllers } from '../../../../prop-controllers/instances'\nimport { Descriptors } from '../../../../runtimes/react/controls/rich-text'\nimport { getBox } from '../../../../box-model'\nimport { PropControllersHandle } from '../../../../state/modules/prop-controller-handles'\nimport { BlockType, RichTextDAO, richTextDTOtoDAO } from '../../../../controls'\nimport { Leaf } from '../components/Leaf'\nimport { Element } from '../components/Element'\nimport { useSyncWithBuilder } from './useSyncWithBuilder'\nimport isHotkey from 'is-hotkey'\nimport { useBuilderEditMode } from '../../../../runtimes/react'\nimport { BuilderEditMode } from '../../../../state/modules/builder-edit-mode'\nimport { onKeyDown, withBlock, withList, withTypography } from '../../../../slate'\nimport { pollBoxModel } from '../../../../runtimes/react/poll-box-model'\n\ntype Props = {\n id?: ElementIDValue\n text?: RichTextValue\n width?: string\n margin?: string\n}\n\nconst defaultText: RichTextDAO = [{ type: BlockType.Paragraph, children: [{ text: '' }] }]\n\nexport const EditableText = forwardRef(function EditableText(\n { id, text, width, margin }: Props,\n ref: Ref<PropControllersHandle<Descriptors>>,\n) {\n const [editor] = useState(() => withBlock(withTypography(withList(withReact(createEditor())))))\n const delaySync = useSyncWithBuilder(editor, text)\n const editMode = useBuilderEditMode()\n\n const [propControllers, setPropControllers] =\n useState<DescriptorsPropControllers<Descriptors> | null>(null)\n const controller = propControllers?.text\n\n useEffect(() => {\n if (controller == null) return\n\n const element = ReactEditor.toDOMNode(editor, editor)\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => controller.changeBoxModel(boxModel),\n })\n }, [editor, controller])\n\n useImperativeHandle(\n ref,\n () => ({\n getDomNode() {\n return ReactEditor.toDOMNode(editor, editor)\n },\n getBoxModel() {\n return getBox(ReactEditor.toDOMNode(editor, editor))\n },\n setPropControllers,\n }),\n [editor, setPropControllers],\n )\n\n const initialValue = useMemo(() => (text ? richTextDTOtoDAO(text) : defaultText), [text])\n\n useEffect(() => {\n controller?.setSlateEditor(editor)\n }, [controller, editor])\n\n const handleFocus = useCallback(() => {\n controller?.focus()\n }, [controller])\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey('mod+shift+z', e)) return controller?.redo()\n if (isHotkey('mod+z', e)) return controller?.undo()\n if (isHotkey('escape')(e)) return controller?.blur()\n onKeyDown(e, editor)\n },\n [controller, editor],\n )\n\n return (\n <Slate editor={editor} value={initialValue} onChange={delaySync}>\n <Editable\n id={id}\n renderLeaf={Leaf}\n renderElement={Element}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n className={cx(width, margin)}\n readOnly={editMode === BuilderEditMode.INTERACT}\n placeholder=\"Write some text...\"\n />\n </Slate>\n )\n})\n\nexport default EditableText\n"],"names":["element","attributes","children","blockStyles","useStyle","margin","responsiveStyle","textAlign","type","BlockType","Paragraph","cx","Heading1","Heading2","Heading3","Heading4","Heading5","Heading6","BlockQuote","padding","fontSize","fontWeight","borderLeft","OrderedList","listStylePosition","UnorderedList","ListItem","ListItemChild","className","restOfProps","Link","textDecoration","InlineType","Code","SuperScript","SubScript","link","props","COMMIT_DEBOUNCE_DELAY","editor","text","shouldCommit","setShouldCommit","useState","useEffect","nextValue","richTextDTOtoDAO","nextSelection","richTextDTOtoSelection","deepEqual","selection","onChange","timeoutId","window","setTimeout","clearTimeout","useCallback","defaultText","EditableText","forwardRef","id","width","ref","withBlock","withTypography","withList","withReact","createEditor","delaySync","useSyncWithBuilder","editMode","useBuilderEditMode","propControllers","setPropControllers","controller","ReactEditor","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","useImperativeHandle","getDomNode","getBoxModel","getBox","initialValue","useMemo","setSlateEditor","handleFocus","focus","handleKeyDown","e","isHotkey","redo","undo","blur","onKeyDown","Slate","Editable","Leaf","Element","BuilderEditMode","INTERACT"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs7.js","sources":["../src/components/builtin/Text/components/Element/block.tsx","../src/components/builtin/Text/components/Element/inline.tsx","../src/components/builtin/Text/components/Element/element.tsx","../src/components/builtin/Text/EditableText/useSyncWithBuilder.tsx","../src/components/builtin/Text/EditableText/editable-text.tsx"],"sourcesContent":["import { cx } from '@emotion/css'\nimport { RenderElementProps } from 'slate-react'\nimport { Block, BlockType } from '../../../../../controls'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { responsiveStyle } from '../../../../utils/responsive-style'\n\nexport interface InlineRenderElementProps extends RenderElementProps {\n element: Block\n}\n\nexport function BlockElement({ element, attributes, children }: InlineRenderElementProps) {\n const blockStyles = [\n useStyle({ margin: 0 }),\n useStyle(responsiveStyle([element.textAlign], ([textAlign = 'left']) => ({ textAlign }))),\n ]\n\n switch (element.type) {\n case BlockType.Paragraph:\n return (\n <p {...attributes} className={cx(...blockStyles)}>\n {children}\n </p>\n )\n case BlockType.Heading1:\n return (\n <h1 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h1>\n )\n case BlockType.Heading2:\n return (\n <h2 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h2>\n )\n case BlockType.Heading3:\n return (\n <h3 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h3>\n )\n case BlockType.Heading4:\n return (\n <h4 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h4>\n )\n case BlockType.Heading5:\n return (\n <h5 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h5>\n )\n case BlockType.Heading6:\n return (\n <h6 {...attributes} className={cx(...blockStyles)}>\n {children}\n </h6>\n )\n case BlockType.BlockQuote:\n return (\n <blockquote\n {...attributes}\n className={cx(\n ...blockStyles,\n useStyle({\n padding: '0.5em 10px',\n fontSize: '1.25em',\n fontWeight: '300',\n borderLeft: '5px solid rgba(0, 0, 0, 0.1)',\n }),\n )}\n >\n {children}\n </blockquote>\n )\n case BlockType.OrderedList:\n return (\n <ol {...attributes} className={cx(...blockStyles)} style={{ listStylePosition: 'inside' }}>\n {children}\n </ol>\n )\n case BlockType.UnorderedList:\n return (\n <ul {...attributes} className={cx(...blockStyles)} style={{ listStylePosition: 'inside' }}>\n {children}\n </ul>\n )\n case BlockType.ListItem:\n return (\n <li {...attributes} className={cx(...blockStyles)}>\n {children}\n </li>\n )\n case BlockType.ListItemChild:\n return (\n <span {...attributes} className={cx(...blockStyles)}>\n {children}\n </span>\n )\n }\n}\n","import { cx } from '@emotion/css'\nimport { ComponentPropsWithoutRef } from 'react'\nimport { RenderElementProps } from 'slate-react'\nimport { Inline, InlineType } from '../../../../../controls'\nimport { useStyle } from '../../../../../runtimes/react/use-style'\nimport { Link } from '../../../../shared/Link'\n\nfunction StyledLink({ className, ...restOfProps }: ComponentPropsWithoutRef<typeof Link>) {\n return <Link {...restOfProps} className={cx(useStyle({ textDecoration: 'none' }), className)} />\n}\n\nexport interface InlineRenderElementProps extends RenderElementProps {\n element: Inline\n}\n\nexport function InlineElement({ element, attributes, children }: InlineRenderElementProps) {\n switch (element.type) {\n case InlineType.Code:\n return <code {...attributes}>{children}</code>\n case InlineType.SuperScript:\n return <sup {...attributes}>{children}</sup>\n case InlineType.SubScript:\n return <sub {...attributes}>{children}</sub>\n case InlineType.Link:\n return (\n <StyledLink {...attributes} link={element.link}>\n {children}\n </StyledLink>\n )\n }\n}\n","import { RenderElementProps } from 'slate-react'\nimport { BlockType, InlineType } from '../../../../../controls'\nimport { BlockElement } from './block'\nimport { InlineElement } from './inline'\n\nexport function Element({ element, ...props }: RenderElementProps) {\n switch (element.type) {\n case InlineType.Code:\n case InlineType.SuperScript:\n case InlineType.SubScript:\n case InlineType.Link:\n return <InlineElement element={element} {...props} />\n case BlockType.Paragraph:\n case BlockType.Heading1:\n case BlockType.Heading2:\n case BlockType.Heading3:\n case BlockType.BlockQuote:\n case BlockType.OrderedList:\n case BlockType.UnorderedList:\n case BlockType.ListItem:\n case BlockType.ListItemChild:\n return <BlockElement element={element} {...props} />\n default:\n return <span {...props.attributes}>{props.children}</span>\n }\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport { Editor } from 'slate'\nimport { richTextDTOtoDAO, richTextDTOtoSelection } from '../../../../controls'\nimport { RichTextValue } from '../../../../prop-controllers'\nimport deepEqual from '../../../../utils/deepEqual'\n\nconst COMMIT_DEBOUNCE_DELAY = 500\n\n/**\n * Compare new prop value with current editor and update editor\n * if the values are not equal.\n */\nexport function useSyncWithBuilder(editor: Editor, text?: RichTextValue) {\n const [shouldCommit, setShouldCommit] = useState(true)\n\n useEffect(() => {\n if (shouldCommit && text) {\n const nextValue = richTextDTOtoDAO(text)\n const nextSelection = richTextDTOtoSelection(text)\n if (!deepEqual(editor.children, nextValue) || !deepEqual(editor.selection, nextSelection)) {\n editor.children = nextValue\n editor.selection = nextSelection\n editor.onChange()\n }\n }\n }, [editor, shouldCommit, text])\n\n useEffect(() => {\n if (shouldCommit) return\n\n const timeoutId = window.setTimeout(() => {\n setShouldCommit(true)\n }, COMMIT_DEBOUNCE_DELAY)\n\n return () => {\n window.clearTimeout(timeoutId)\n }\n }, [shouldCommit])\n\n return useCallback(() => setShouldCommit(false), [])\n}\n","import {\n forwardRef,\n KeyboardEvent,\n Ref,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\n\nimport { createEditor } from 'slate'\nimport { Slate, Editable, withReact, ReactEditor } from 'slate-react'\n\nimport { ElementIDValue, RichTextValue } from '../../../../prop-controllers/descriptors'\nimport { cx } from '@emotion/css'\nimport { DescriptorsPropControllers } from '../../../../prop-controllers/instances'\nimport { Descriptors } from '../../../../runtimes/react/controls/rich-text'\nimport { getBox } from '../../../../box-model'\nimport { PropControllersHandle } from '../../../../state/modules/prop-controller-handles'\nimport { BlockType, RichTextDAO, richTextDTOtoDAO } from '../../../../controls'\nimport { Leaf } from '../components/Leaf'\nimport { Element } from '../components/Element'\nimport { useSyncWithBuilder } from './useSyncWithBuilder'\nimport isHotkey from 'is-hotkey'\nimport { useBuilderEditMode } from '../../../../runtimes/react'\nimport { BuilderEditMode } from '../../../../state/modules/builder-edit-mode'\nimport { onKeyDown, withBlock, withList, withTypography } from '../../../../slate'\nimport { pollBoxModel } from '../../../../runtimes/react/poll-box-model'\n\ntype Props = {\n id?: ElementIDValue\n text?: RichTextValue\n width?: string\n margin?: string\n}\n\nconst defaultText: RichTextDAO = [{ type: BlockType.Paragraph, children: [{ text: '' }] }]\n\nexport const EditableText = forwardRef(function EditableText(\n { id, text, width, margin }: Props,\n ref: Ref<PropControllersHandle<Descriptors>>,\n) {\n const [editor] = useState(() => withBlock(withTypography(withList(withReact(createEditor())))))\n const delaySync = useSyncWithBuilder(editor, text)\n const editMode = useBuilderEditMode()\n\n const [propControllers, setPropControllers] =\n useState<DescriptorsPropControllers<Descriptors> | null>(null)\n const controller = propControllers?.text\n\n useEffect(() => {\n if (controller == null) return\n\n const element = ReactEditor.toDOMNode(editor, editor)\n\n return pollBoxModel({\n element,\n onBoxModelChange: boxModel => controller.changeBoxModel(boxModel),\n })\n }, [editor, controller])\n\n useImperativeHandle(\n ref,\n () => ({\n getDomNode() {\n return ReactEditor.toDOMNode(editor, editor)\n },\n getBoxModel() {\n return getBox(ReactEditor.toDOMNode(editor, editor))\n },\n setPropControllers,\n }),\n [editor, setPropControllers],\n )\n\n const initialValue = useMemo(() => (text ? richTextDTOtoDAO(text) : defaultText), [text])\n\n useEffect(() => {\n controller?.setSlateEditor(editor)\n }, [controller, editor])\n\n const handleFocus = useCallback(() => {\n controller?.focus()\n }, [controller])\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isHotkey('mod+shift+z', e)) return controller?.redo()\n if (isHotkey('mod+z', e)) return controller?.undo()\n if (isHotkey('escape')(e)) return controller?.blur()\n onKeyDown(e, editor)\n },\n [controller, editor],\n )\n\n return (\n <Slate editor={editor} value={initialValue} onChange={delaySync}>\n <Editable\n id={id}\n renderLeaf={Leaf}\n renderElement={Element}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n className={cx(width, margin)}\n readOnly={editMode === BuilderEditMode.INTERACT}\n placeholder=\"Write some text...\"\n />\n </Slate>\n )\n})\n\nexport default EditableText\n"],"names":["element","attributes","children","blockStyles","useStyle","margin","responsiveStyle","textAlign","type","BlockType","Paragraph","cx","Heading1","Heading2","Heading3","Heading4","Heading5","Heading6","BlockQuote","padding","fontSize","fontWeight","borderLeft","OrderedList","listStylePosition","UnorderedList","ListItem","ListItemChild","className","restOfProps","Link","textDecoration","InlineType","Code","SuperScript","SubScript","link","props","COMMIT_DEBOUNCE_DELAY","editor","text","shouldCommit","setShouldCommit","useState","useEffect","nextValue","richTextDTOtoDAO","nextSelection","richTextDTOtoSelection","deepEqual","selection","onChange","timeoutId","window","setTimeout","clearTimeout","useCallback","defaultText","EditableText","forwardRef","id","width","ref","withBlock","withTypography","withList","withReact","createEditor","delaySync","useSyncWithBuilder","editMode","useBuilderEditMode","propControllers","setPropControllers","controller","ReactEditor","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","useImperativeHandle","getDomNode","getBoxModel","getBox","initialValue","useMemo","setSlateEditor","handleFocus","focus","handleKeyDown","e","isHotkey","redo","undo","blur","onKeyDown","Slate","Editable","Leaf","Element","BuilderEditMode","INTERACT"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -36,7 +36,7 @@ var __publicField = (obj, key, value) => {
36
36
  };
37
37
  var _c;
38
38
  import * as React from "react";
39
- import { useEffect, createContext, useContext, useState, useMemo, useRef, Children, createElement, forwardRef, memo, useCallback, useImperativeHandle, Component, Suspense } from "react";
39
+ import { useEffect, createContext, useContext, useState, useMemo, useRef, Children, createElement, forwardRef, memo, useId, useCallback, useImperativeHandle, Component, Suspense } from "react";
40
40
  import { useSyncExternalStoreWithSelector } from "use-sync-external-store/shim/with-selector";
41
41
  import dynamic from "next/dynamic";
42
42
  import { g as getPropControllerDescriptors, i as isElementReference, a as createDocumentReference, M as MakeswiftComponentType, b as isPropControllersHandle, d as getComponentPropControllerDescriptors, e as getPropControllers, f as configureStore$1, h as getDocument, j as getElementId, k as getIsPreview, l as getIsInBuilder, m as copyElementTree, n as getReactComponent, o as getBuilderEditMode } from "./constants.es.js";
@@ -45,7 +45,7 @@ import { cache, cx } from "@emotion/css";
45
45
  import { serializeStyles } from "@emotion/serialize";
46
46
  import { registerStyles, insertStyles } from "@emotion/utils";
47
47
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
48
- import { S as ShapeControlType, L as ListControlType, T as Types, E as ElementID, B as Backgrounds, W as Width, f as ResponsiveIconRadioGroup, M as Margin, P as Padding, g as Border, h as BorderRadius, i as Shadows, G as GapY, j as GapX, k as ResponsiveSelect, l as ResponsiveNumber, m as Checkbox, n as Grid, o as TextInput, p as Link, q as ResponsiveColor, s as TextStyle, t as Images, N as Number$1, D as Date$1, F as Font, u as ResponsiveLength, v as TextArea, w as Table, x as TableFormFields, y as Image, z as ResponsiveOpacity, A as NavigationLinks, H as SocialLinks, J as RichText, V as Video, K as StyleControlProperty, O as ImageControlValueFormat, Q as RichTextControlType, b as SlotControlType, U as LinkControlType, I as ImageControlType, C as ColorControlType, X as BorderPropControllerFormat, Y as ShadowsPropControllerFormat, Z as BorderRadiusPropControllerFormat, _ as MarginPropControllerFormat, $ as PaddingPropControllerFormat, a0 as WidthPropControllerFormat, a1 as StyleControlType } from "./rich-text.es.js";
48
+ import { S as ShapeControlType, L as ListControlType, T as Types, E as ElementID, B as Backgrounds, W as Width, f as ResponsiveIconRadioGroup, M as Margin, P as Padding, g as Border, h as BorderRadius, i as Shadows, G as GapY, j as GapX, k as ResponsiveSelect, l as ResponsiveNumber, m as Checkbox, n as Grid, o as TextInput, p as Link, q as ResponsiveColor, s as TextStyle, t as Images, N as Number$1, D as Date$1, F as Font, u as ResponsiveLength, v as TextArea, w as Table, x as TableFormFields, y as Image, z as ResponsiveOpacity, A as NavigationLinks, H as SocialLinks, J as RichText, V as Video, K as StyleControlProperty, O as ImageControlValueFormat, Q as StyleControlType, U as RichTextControlType, b as SlotControlType, X as LinkControlType, I as ImageControlType, C as ColorControlType, Y as BorderPropControllerFormat, Z as ShadowsPropControllerFormat, _ as BorderRadiusPropControllerFormat, $ as MarginPropControllerFormat, a0 as PaddingPropControllerFormat, a1 as WidthPropControllerFormat } from "./descriptors.es.js";
49
49
  import "slate";
50
50
  import { S as SelectControlType, T as TextAreaControlType, a as TextInputControlType, N as NumberControlType, C as CheckboxControlType } from "./text-input.es.js";
51
51
  import { C as ComboboxControlType } from "./combobox.es.js";
@@ -55,9 +55,9 @@ import { b as getElementSwatchIds, c as getFileIds, d as getTypographyIds, e as
55
55
  import { createStore, applyMiddleware } from "redux";
56
56
  import thunk from "redux-thunk";
57
57
  import { A as APIResourceType } from "./types.es.js";
58
+ import { g as getBox, i as isMeasurable, m as measure } from "./box-models.es.js";
58
59
  import ColorHelper from "color";
59
60
  import scrollIntoView from "scroll-into-view-if-needed";
60
- import { g as getBox, i as isMeasurable, m as measure } from "./box-models.es.js";
61
61
  import { findDOMNode } from "react-dom";
62
62
  import parse from "html-react-parser";
63
63
  import Head from "next/head";
@@ -968,7 +968,7 @@ function useCachedSite(siteId) {
968
968
  const site = useSyncExternalStore(client.subscribe, getSnapshot, getSnapshot);
969
969
  return site;
970
970
  }
971
- const version = "0.7.17";
971
+ const version = "0.7.18";
972
972
  class Makeswift {
973
973
  constructor(apiKey, { apiOrigin = "https://api.makeswift.com" } = {}) {
974
974
  __publicField(this, "apiKey");
@@ -3238,9 +3238,31 @@ function useStyleControlCssObject(style, controlDefinition) {
3238
3238
  return `${fontSize.value}${fontSize.unit}`;
3239
3239
  }
3240
3240
  }
3241
- function useFormattedStyle(styleControlData, controlDefinition) {
3241
+ function useFormattedStyle(styleControlData, controlDefinition, control) {
3242
3242
  const style = useStyleControlCssObject(styleControlData, controlDefinition);
3243
- return useStyle(style);
3243
+ const guid = useId().replaceAll(":", "");
3244
+ const styleClassName = useStyle(style);
3245
+ const classNames = `${styleClassName} ${guid}`;
3246
+ useEffect(() => {
3247
+ let currentBoxModel = null;
3248
+ const handleAnimationFrameRequest = () => {
3249
+ if (control == null)
3250
+ return;
3251
+ const element = document.querySelector(`.${guid}`);
3252
+ const measuredBoxModel = element == null ? null : getBox(element);
3253
+ if (!deepEqual(currentBoxModel, measuredBoxModel)) {
3254
+ currentBoxModel = measuredBoxModel;
3255
+ control.changeBoxModel(currentBoxModel);
3256
+ }
3257
+ animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
3258
+ };
3259
+ let animationFrameHandle = requestAnimationFrame(handleAnimationFrameRequest);
3260
+ return () => {
3261
+ cancelAnimationFrame(animationFrameHandle);
3262
+ control == null ? void 0 : control.changeBoxModel(null);
3263
+ };
3264
+ }, [guid, control]);
3265
+ return classNames;
3244
3266
  }
3245
3267
  function RenderHook({
3246
3268
  hook: useHook,
@@ -3664,6 +3686,12 @@ function ControlValue({
3664
3686
  parameters: [data, control],
3665
3687
  children: (value) => children(value)
3666
3688
  }, definition.type);
3689
+ case StyleControlType:
3690
+ return /* @__PURE__ */ jsx(RenderHook, {
3691
+ hook: useFormattedStyle,
3692
+ parameters: [data, definition, control],
3693
+ children: (value) => children(value)
3694
+ }, definition.type);
3667
3695
  default:
3668
3696
  return children(data);
3669
3697
  }
@@ -3703,7 +3731,7 @@ function PropsValue({
3703
3731
  return getPropControllers(state, documentKey, element.key);
3704
3732
  });
3705
3733
  return Object.entries(propControllerDescriptorsRef.current).reduceRight((renderFn, [propName, descriptor]) => (propsValue) => {
3706
- var _a2, _b;
3734
+ var _a2, _b, _c2;
3707
3735
  switch (descriptor.type) {
3708
3736
  case CheckboxControlType:
3709
3737
  case NumberControlType:
@@ -3724,16 +3752,18 @@ function PropsValue({
3724
3752
  [propName]: value
3725
3753
  }))
3726
3754
  });
3727
- case StyleControlType:
3755
+ case StyleControlType: {
3756
+ const control = (_a2 = propControllers == null ? void 0 : propControllers[propName]) != null ? _a2 : null;
3728
3757
  return /* @__PURE__ */ jsx(RenderHook, {
3729
3758
  hook: useFormattedStyle,
3730
- parameters: [props[propName], descriptor],
3759
+ parameters: [props[propName], descriptor, control],
3731
3760
  children: (value) => renderFn(__spreadProps(__spreadValues({}, propsValue), {
3732
3761
  [propName]: value
3733
3762
  }))
3734
3763
  }, descriptor.type);
3735
- case RichTextControlType:
3736
- const control = (_a2 = propControllers == null ? void 0 : propControllers[propName]) != null ? _a2 : null;
3764
+ }
3765
+ case RichTextControlType: {
3766
+ const control = (_b = propControllers == null ? void 0 : propControllers[propName]) != null ? _b : null;
3737
3767
  return /* @__PURE__ */ jsx(RenderHook, {
3738
3768
  hook: useRichText,
3739
3769
  parameters: [props[propName], control],
@@ -3741,11 +3771,12 @@ function PropsValue({
3741
3771
  [propName]: value
3742
3772
  }))
3743
3773
  }, descriptor.type);
3774
+ }
3744
3775
  case SlotControlType: {
3745
- const control2 = (_b = propControllers == null ? void 0 : propControllers[propName]) != null ? _b : null;
3776
+ const control = (_c2 = propControllers == null ? void 0 : propControllers[propName]) != null ? _c2 : null;
3746
3777
  return /* @__PURE__ */ jsx(RenderHook, {
3747
3778
  hook: useSlot,
3748
- parameters: [props[propName], control2],
3779
+ parameters: [props[propName], control],
3749
3780
  children: (value) => renderFn(__spreadProps(__spreadValues({}, propsValue), {
3750
3781
  [propName]: value
3751
3782
  }))