@makeswift/runtime 0.9.2 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/dist/Box.cjs.js +1 -3
  2. package/dist/Box.cjs.js.map +1 -1
  3. package/dist/Box.es.js +2 -4
  4. package/dist/Box.es.js.map +1 -1
  5. package/dist/Button.cjs.js +1 -3
  6. package/dist/Button.cjs.js.map +1 -1
  7. package/dist/Button.es.js +2 -4
  8. package/dist/Button.es.js.map +1 -1
  9. package/dist/Carousel.cjs.js +1 -3
  10. package/dist/Carousel.cjs.js.map +1 -1
  11. package/dist/Carousel.es.js +2 -4
  12. package/dist/Carousel.es.js.map +1 -1
  13. package/dist/Countdown.cjs.js +1 -3
  14. package/dist/Countdown.cjs.js.map +1 -1
  15. package/dist/Countdown.es.js +2 -4
  16. package/dist/Countdown.es.js.map +1 -1
  17. package/dist/Divider.cjs.js +1 -3
  18. package/dist/Divider.cjs.js.map +1 -1
  19. package/dist/Divider.es.js +2 -4
  20. package/dist/Divider.es.js.map +1 -1
  21. package/dist/Embed.es.js +1 -1
  22. package/dist/Form.cjs.js +1 -3
  23. package/dist/Form.cjs.js.map +1 -1
  24. package/dist/Form.es.js +2 -4
  25. package/dist/Form.es.js.map +1 -1
  26. package/dist/Image.cjs.js +1 -3
  27. package/dist/Image.cjs.js.map +1 -1
  28. package/dist/Image.es.js +2 -4
  29. package/dist/Image.es.js.map +1 -1
  30. package/dist/LiveProvider.cjs.js +1 -3
  31. package/dist/LiveProvider.cjs.js.map +1 -1
  32. package/dist/LiveProvider.es.js +2 -4
  33. package/dist/LiveProvider.es.js.map +1 -1
  34. package/dist/Navigation.cjs.js +1 -3
  35. package/dist/Navigation.cjs.js.map +1 -1
  36. package/dist/Navigation.es.js +2 -4
  37. package/dist/Navigation.es.js.map +1 -1
  38. package/dist/PreviewProvider.cjs.js +3 -5
  39. package/dist/PreviewProvider.cjs.js.map +1 -1
  40. package/dist/PreviewProvider.es.js +3 -5
  41. package/dist/PreviewProvider.es.js.map +1 -1
  42. package/dist/ReadOnlyText.cjs.js +4 -7
  43. package/dist/ReadOnlyText.cjs.js.map +1 -1
  44. package/dist/ReadOnlyText.es.js +4 -7
  45. package/dist/ReadOnlyText.es.js.map +1 -1
  46. package/dist/ReadOnlyTextV2.cjs.js +11 -14
  47. package/dist/ReadOnlyTextV2.cjs.js.map +1 -1
  48. package/dist/ReadOnlyTextV2.es.js +10 -13
  49. package/dist/ReadOnlyTextV2.es.js.map +1 -1
  50. package/dist/Root.cjs.js +1 -3
  51. package/dist/Root.cjs.js.map +1 -1
  52. package/dist/Root.es.js +2 -4
  53. package/dist/Root.es.js.map +1 -1
  54. package/dist/SocialLinks.cjs.js +1 -3
  55. package/dist/SocialLinks.cjs.js.map +1 -1
  56. package/dist/SocialLinks.es.js +2 -4
  57. package/dist/SocialLinks.es.js.map +1 -1
  58. package/dist/Text.cjs.js +2 -4
  59. package/dist/Text.cjs.js.map +1 -1
  60. package/dist/Text.es.js +2 -4
  61. package/dist/Text.es.js.map +1 -1
  62. package/dist/Video.es.js +1 -1
  63. package/dist/components.cjs.js +1 -3
  64. package/dist/components.cjs.js.map +1 -1
  65. package/dist/components.es.js +1 -3
  66. package/dist/components.es.js.map +1 -1
  67. package/dist/control-serialization.es.js +1 -1
  68. package/dist/controls.cjs.js +18 -15
  69. package/dist/controls.cjs.js.map +1 -1
  70. package/dist/controls.es.js +2 -3
  71. package/dist/controls.es.js.map +1 -1
  72. package/dist/index.cjs.js +205 -57
  73. package/dist/index.cjs.js.map +1 -1
  74. package/dist/index.cjs10.js +261 -172
  75. package/dist/index.cjs10.js.map +1 -1
  76. package/dist/index.cjs5.js +99 -5
  77. package/dist/index.cjs5.js.map +1 -1
  78. package/dist/index.cjs6.js +23 -700
  79. package/dist/index.cjs6.js.map +1 -1
  80. package/dist/index.cjs7.js +13 -37
  81. package/dist/index.cjs7.js.map +1 -1
  82. package/dist/index.cjs8.js +39 -17
  83. package/dist/index.cjs8.js.map +1 -1
  84. package/dist/index.cjs9.js +269 -16
  85. package/dist/index.cjs9.js.map +1 -1
  86. package/dist/index.es.js +187 -41
  87. package/dist/index.es.js.map +1 -1
  88. package/dist/index.es10.js +262 -173
  89. package/dist/index.es10.js.map +1 -1
  90. package/dist/index.es2.js +1 -1
  91. package/dist/index.es4.js +1 -1
  92. package/dist/index.es5.js +91 -2
  93. package/dist/index.es5.js.map +1 -1
  94. package/dist/index.es6.js +23 -695
  95. package/dist/index.es6.js.map +1 -1
  96. package/dist/index.es7.js +14 -33
  97. package/dist/index.es7.js.map +1 -1
  98. package/dist/index.es8.js +37 -17
  99. package/dist/index.es8.js.map +1 -1
  100. package/dist/index.es9.js +264 -15
  101. package/dist/index.es9.js.map +1 -1
  102. package/dist/next.cjs.js +1 -3
  103. package/dist/next.cjs.js.map +1 -1
  104. package/dist/next.es.js +2 -4
  105. package/dist/next.es.js.map +1 -1
  106. package/dist/react-page.cjs.js +97 -9
  107. package/dist/react-page.cjs.js.map +1 -1
  108. package/dist/react-page.es.js +95 -9
  109. package/dist/react-page.es.js.map +1 -1
  110. package/dist/react.cjs.js +1 -3
  111. package/dist/react.cjs.js.map +1 -1
  112. package/dist/react.es.js +1 -3
  113. package/dist/react.es.js.map +1 -1
  114. package/dist/slate.cjs.js +260 -97
  115. package/dist/slate.cjs.js.map +1 -1
  116. package/dist/slate.es.js +249 -92
  117. package/dist/slate.es.js.map +1 -1
  118. package/dist/types/src/components/builtin/Button/Button.d.ts +1 -1
  119. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  120. package/dist/types/src/components/builtin/Text/ReadOnlyText.d.ts.map +1 -1
  121. package/dist/types/src/components/builtin/Text/components/Leaf/leaf.d.ts +0 -17
  122. package/dist/types/src/components/builtin/Text/components/Leaf/leaf.d.ts.map +1 -1
  123. package/dist/types/src/controls/control.d.ts +3 -2
  124. package/dist/types/src/controls/control.d.ts.map +1 -1
  125. package/dist/types/src/controls/icon-radio-group.d.ts +5 -2
  126. package/dist/types/src/controls/icon-radio-group.d.ts.map +1 -1
  127. package/dist/types/src/controls/index.d.ts +1 -0
  128. package/dist/types/src/controls/index.d.ts.map +1 -1
  129. package/dist/types/src/controls/list.d.ts +2 -0
  130. package/dist/types/src/controls/list.d.ts.map +1 -1
  131. package/dist/types/src/controls/shape.d.ts +2 -0
  132. package/dist/types/src/controls/shape.d.ts.map +1 -1
  133. package/dist/types/src/controls/style-v2.d.ts.map +1 -1
  134. package/dist/types/src/controls/typography.d.ts +31 -0
  135. package/dist/types/src/controls/typography.d.ts.map +1 -0
  136. package/dist/types/src/next/client.d.ts.map +1 -1
  137. package/dist/types/src/prop-controllers/descriptors.d.ts +6 -3
  138. package/dist/types/src/prop-controllers/descriptors.d.ts.map +1 -1
  139. package/dist/types/src/prop-controllers/introspection.d.ts +1 -1
  140. package/dist/types/src/prop-controllers/introspection.d.ts.map +1 -1
  141. package/dist/types/src/runtimes/react/controls/control.d.ts +3 -2
  142. package/dist/types/src/runtimes/react/controls/control.d.ts.map +1 -1
  143. package/dist/types/src/runtimes/react/controls/rich-text-v2/ReadOnlyTextV2.d.ts.map +1 -1
  144. package/dist/types/src/runtimes/react/controls/typography.d.ts +21 -0
  145. package/dist/types/src/runtimes/react/controls/typography.d.ts.map +1 -0
  146. package/dist/types/src/runtimes/react/controls.d.ts.map +1 -1
  147. package/dist/types/src/slate/InlinePlugin/getValue.d.ts +5 -0
  148. package/dist/types/src/slate/InlinePlugin/getValue.d.ts.map +1 -0
  149. package/dist/types/src/slate/InlinePlugin/index.d.ts +16 -0
  150. package/dist/types/src/slate/InlinePlugin/index.d.ts.map +1 -0
  151. package/dist/types/src/slate/InlinePlugin/onChange.d.ts +4 -0
  152. package/dist/types/src/slate/InlinePlugin/onChange.d.ts.map +1 -0
  153. package/dist/types/src/slate/InlinePlugin/types.d.ts +9 -0
  154. package/dist/types/src/slate/InlinePlugin/types.d.ts.map +1 -0
  155. package/dist/types/src/slate/LinkPlugin/getValue.d.ts +5 -0
  156. package/dist/types/src/slate/LinkPlugin/getValue.d.ts.map +1 -0
  157. package/dist/types/src/slate/LinkPlugin/index.d.ts +15 -0
  158. package/dist/types/src/slate/LinkPlugin/index.d.ts.map +1 -0
  159. package/dist/types/src/slate/LinkPlugin/onChange.d.ts +4 -0
  160. package/dist/types/src/slate/LinkPlugin/onChange.d.ts.map +1 -0
  161. package/dist/types/src/slate/LinkPlugin/types.d.ts +5 -0
  162. package/dist/types/src/slate/LinkPlugin/types.d.ts.map +1 -0
  163. package/dist/types/src/slate/TextAlignPlugin/index.d.ts +2 -0
  164. package/dist/types/src/slate/TextAlignPlugin/index.d.ts.map +1 -1
  165. package/dist/types/src/slate/TypographyPlugin/index.d.ts +9 -0
  166. package/dist/types/src/slate/TypographyPlugin/index.d.ts.map +1 -1
  167. package/dist/types/src/slate/index.d.ts +2 -0
  168. package/dist/types/src/slate/index.d.ts.map +1 -1
  169. package/dist/types.cjs2.js +753 -0
  170. package/dist/types.cjs2.js.map +1 -0
  171. package/dist/types.es2.js +736 -0
  172. package/dist/types.es2.js.map +1 -0
  173. package/dist/typography.cjs.js +56 -0
  174. package/dist/typography.cjs.js.map +1 -0
  175. package/dist/typography.es.js +41 -0
  176. package/dist/typography.es.js.map +1 -0
  177. package/package.json +1 -1
  178. package/dist/deepEqual.cjs.js +0 -40
  179. package/dist/deepEqual.cjs.js.map +0 -1
  180. package/dist/deepEqual.es.js +0 -39
  181. package/dist/deepEqual.es.js.map +0 -1
  182. package/dist/index.cjs11.js +0 -375
  183. package/dist/index.cjs11.js.map +0 -1
  184. package/dist/index.es11.js +0 -368
  185. package/dist/index.es11.js.map +0 -1
  186. package/dist/leaf.cjs.js +0 -182
  187. package/dist/leaf.cjs.js.map +0 -1
  188. package/dist/leaf.es.js +0 -179
  189. package/dist/leaf.es.js.map +0 -1
  190. package/dist/select.cjs.js +0 -21
  191. package/dist/select.cjs.js.map +0 -1
  192. package/dist/select.es.js +0 -16
  193. package/dist/select.es.js.map +0 -1
  194. package/dist/text-input.cjs.js +0 -26
  195. package/dist/text-input.cjs.js.map +0 -1
  196. package/dist/text-input.es.js +0 -18
  197. package/dist/text-input.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs6.js","sources":["../src/slate/utils/element.ts","../src/slate/utils/unhangRange.ts","../src/slate/selectors.ts","../src/slate/BlockPlugin/setBlockKeyForDevice.ts","../src/slate/BlockPlugin/clearBlockKeyForDevice.ts","../src/slate/BlockPlugin/wrapInline.ts","../src/slate/BlockPlugin/unwrapInline.ts","../src/slate/utils/editor.ts","../src/slate/BlockPlugin/constants.ts","../src/slate/BlockPlugin/utils/filterForSubtreeRoots.ts","../src/slate/BlockPlugin/unwrapList.ts","../src/slate/BlockPlugin/wrapList.ts","../src/slate/BlockPlugin/utils/location.ts","../src/slate/BlockPlugin/utils/getSelectedListItems.ts","../src/slate/BlockPlugin/indent.ts","../src/slate/BlockPlugin/dedent.ts","../src/slate/BlockPlugin/toggleList.ts","../src/slate/BlockPlugin/index.tsx"],"sourcesContent":["import { Node, Element } from 'slate'\nimport {\n RootBlock,\n BlockType,\n Block,\n Inline,\n InlineType,\n OrderedListElement,\n UnorderedListElement,\n ListItemElement,\n ListItemChildElement,\n} from '../types'\n\nexport const ElementUtils = {\n isRootBlock(node: Node): node is RootBlock {\n return (\n Element.isElement(node) &&\n (Element.isElementType(node, BlockType.Paragraph) ||\n Element.isElementType(node, BlockType.Heading1) ||\n Element.isElementType(node, BlockType.Heading2) ||\n Element.isElementType(node, BlockType.Heading3) ||\n Element.isElementType(node, BlockType.Heading3) ||\n Element.isElementType(node, BlockType.Heading4) ||\n Element.isElementType(node, BlockType.Heading5) ||\n Element.isElementType(node, BlockType.Heading6) ||\n Element.isElementType(node, BlockType.BlockQuote) ||\n Element.isElementType(node, BlockType.UnorderedList) ||\n Element.isElementType(node, BlockType.OrderedList) ||\n Element.isElementType(node, BlockType.Text) ||\n Element.isElementType(node, BlockType.Default))\n )\n },\n isBlock(node: Node): node is Block {\n return (\n Element.isElement(node) &&\n (this.isRootBlock(node) ||\n Element.isElementType(node, BlockType.ListItem) ||\n Element.isElementType(node, BlockType.ListItemChild))\n )\n },\n isInline(node: Node): node is Inline {\n return (\n Element.isElementType(node, InlineType.Code) ||\n Element.isElementType(node, InlineType.Link) ||\n Element.isElementType(node, InlineType.SubScript) ||\n Element.isElementType(node, InlineType.SuperScript)\n )\n },\n isConvertibleToListTextNode(node: Node) {\n return !this.isList(node) && !this.isListItem(node) && !this.isListItemChild(node)\n },\n isList(node: Node): node is OrderedListElement | UnorderedListElement {\n return (\n Element.isElementType(node, BlockType.OrderedList) ||\n Element.isElementType(node, BlockType.UnorderedList)\n )\n },\n isListItem(node: Node): node is ListItemElement {\n return Element.isElementType(node, BlockType.ListItem)\n },\n isListItemChild(node: Node): node is ListItemChildElement {\n return Element.isElementType(node, BlockType.ListItemChild)\n },\n createText() {\n return { text: '' }\n },\n createParagraph() {\n return {\n children: [this.createText()],\n type: BlockType.Paragraph,\n }\n },\n createList(type: BlockType = BlockType.UnorderedList): Block {\n return { children: [this.createText()], type }\n },\n createListItem(): Block {\n return {\n children: [this.createListItemChild()],\n type: BlockType.ListItem,\n }\n },\n createListItemChild(): Block {\n return {\n children: [this.createText()],\n type: BlockType.ListItemChild,\n }\n },\n}\n","import { Editor, Range, Element, Text, Path } from 'slate'\n\n/**\n * The `Editor.unhangeRange` within Slate early exits if `Path.hasPrevious(end.path)` ie if this isn't a root block.\n * Unfortunately when you `setNode(..., {split:true})` or `wrapNodes()` you also have a hanging selection, but not in the root position.\n *\n * This c/p removes the `Path.hasPrevious(end.path)` from the early exit but it the same otherwise\n */\nfunction unhangRange(editor: Editor, range: Range): Range {\n // eslint-disable-next-line prefer-const\n let [start, end] = Range.edges(range)\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) {\n return range\n }\n\n const endBlock = Editor.above(editor, {\n at: end,\n match: n => Element.isElement(n) && Editor.isBlock(editor, n),\n })\n const blockPath = endBlock ? endBlock[1] : []\n const first = Editor.start(editor, start)\n const before = { anchor: first, focus: end }\n let skip = true\n\n for (const [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n })) {\n if (skip) {\n skip = false\n continue\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = { path, offset: node.text.length }\n break\n }\n }\n\n return { anchor: start, focus: end }\n}\n\nexport default unhangRange\n","import { Editor, NodeEntry, Range, Text } from 'slate'\nimport { EditableBlockKey } from './BlockPlugin/types'\nimport { ElementUtils } from './utils/element'\n\nimport unhangRange from './utils/unhangRange'\nimport shallowEqual from '../utils/shallowEqual'\nimport { isNonNullable } from '../utils/isNonNullable'\n\nimport { Breakpoints, BreakpointId, findBreakpointOverride } from '../state/modules/breakpoints'\nimport deepEqual from '../utils/deepEqual'\nimport keys from '../utils/keys'\nimport {\n RootBlock,\n Inline,\n RootBlockType,\n ResponsiveBlockTextAlignment,\n BlockTextAlignment,\n RichTextTypography,\n} from './types'\n\nexport function getSelection(editor: Editor): Range {\n if (editor.selection) return unhangRange(editor, editor.selection)\n return {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n }\n}\n\nexport function getBlocksInSelection(editor: Editor): NodeEntry<RootBlock>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => ElementUtils.isRootBlock(node),\n }),\n ).filter((entry): entry is NodeEntry<RootBlock> => ElementUtils.isRootBlock(entry[0]))\n}\n\nexport function getInlinesInSelection(editor: Editor): NodeEntry<Inline>[] {\n return Array.from(\n Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => ElementUtils.isInline(node),\n }),\n ).filter((entry): entry is NodeEntry<Inline> => ElementUtils.isInline(entry[0]))\n}\n\nexport function getActiveBlockType(editor: Editor): RootBlockType | null {\n const rootBlocks = getBlocksInSelection(editor).map(([node]) => node.type)\n\n return rootBlocks.reduce<RootBlockType | null>(\n (a, b) => (a === b ? b : null),\n rootBlocks.at(0) ?? null,\n )\n}\n\nexport function getActiveBlockValue(editor: Editor, key: EditableBlockKey) {\n const blocks = getBlocksInSelection(editor)\n\n const active = blocks.map(\n ([block]) => block[key] ?? null,\n ) as (ResponsiveBlockTextAlignment | null)[]\n\n return active.length === 0 ? null : active.reduce((a, b) => (shallowEqual(a, b) ? b : null))\n}\n\nexport function getActiveBlockDeviceOverrideValue(\n editor: Editor,\n key: EditableBlockKey,\n breakpoints: Breakpoints,\n deviceId: BreakpointId,\n) {\n const active: (BlockTextAlignment | null)[] = []\n const blocks = getBlocksInSelection(editor)\n\n blocks.forEach(([block]) => {\n const deviceOverride =\n findBreakpointOverride<BlockTextAlignment>(breakpoints, block[key], deviceId) || null\n active.push(deviceOverride?.value ?? null)\n })\n\n return active.length === 0 ? null : active.reduce((a, b) => (shallowEqual(a, b) ? b : null))\n}\n\n// Typography\n\nconst concat = (a: unknown[], b: unknown[]) => a.concat(b)\n\n// TODO: This is more cruft from trying to remove null from the typography type. This optimization is not worth it.\n/**\n * This is a c/p of the intersection of the utils from the root utils folder.\n * The only change is defaulting to undefined instead of to null.\n */\nexport default function intersection<A extends Record<string, unknown>, B extends A>(\n a: A,\n b: B,\n isEqual: (a: unknown, b: unknown) => boolean = deepEqual,\n): { [K in keyof A]: A[K] | undefined } {\n const allKeys = [...new Set([...keys(a), ...keys(b)])] as (keyof A)[]\n\n return allKeys.reduce((acc, k) => {\n if (isEqual(a[k], b[k])) acc[k] = a[k]\n else acc[k] = undefined\n\n return acc\n }, {} as { [K in keyof A]: A[K] | undefined })\n}\n\nconst fuseTypographyMarks = (\n values: Array<RichTextTypography | null | undefined>,\n breakpoints: Breakpoints,\n): RichTextTypography => {\n const devices = [\n ...new Set(\n values\n .filter(isNonNullable)\n .map(({ style }) => style.map(({ deviceId }) => deviceId))\n .reduce(concat, []),\n ),\n ] as BreakpointId[]\n\n return {\n id: values.map(v => v && v.id).reduce((a, b) => (a === b ? a : undefined)) ?? undefined,\n style: devices.map(deviceId =>\n values\n .map(\n v =>\n (v && findBreakpointOverride(breakpoints, v.style, deviceId)) || {\n deviceId,\n value: {},\n },\n )\n .reduce((acc, { value }) => {\n const a = intersection(acc.value, value)\n return {\n deviceId,\n value: a,\n }\n }),\n ),\n }\n}\n\nexport function getActiveTypographyMark(\n editor: Editor,\n breakpoints: Breakpoints,\n): RichTextTypography {\n const active: RichTextTypography[] = []\n\n const textNodes = Editor.nodes(editor, {\n at: getSelection(editor),\n match: node => Text.isText(node),\n })\n\n for (const [node] of textNodes) {\n if (Text.isText(node) && 'typography' in node && node.typography != undefined) {\n active.push(node.typography)\n }\n }\n return active.length === 0 ? { style: [] } : fuseTypographyMarks(active, breakpoints)\n}\n","import { Editor, Transforms, Location } from 'slate'\nimport { getBlocksInSelection } from '../selectors'\nimport { ElementUtils } from '../utils/element'\nimport { EditableBlockKey, EditableBlockValue } from './types'\nimport { Breakpoints, BreakpointId, findBreakpointOverride } from '../../state/modules/breakpoints'\n\ntype SetBlockKeyForDeviceOptions = {\n at?: Location\n}\n\nexport function setBlockKeyForDevice(\n editor: Editor,\n breakpoints: Breakpoints,\n deviceId: BreakpointId,\n key: EditableBlockKey,\n value: EditableBlockValue[number]['value'],\n options?: SetBlockKeyForDeviceOptions,\n) {\n const at = options?.at ?? editor.selection\n if (!at) return\n\n const rootElements = getBlocksInSelection(editor)\n\n for (const [node, path] of rootElements) {\n if (ElementUtils.isBlock(node)) {\n const deviceValues = node[key] ?? []\n const currentDeviceValue = findBreakpointOverride(breakpoints, deviceValues, deviceId, v => v)\n const nextDeviceValue = {\n ...currentDeviceValue,\n deviceId,\n value,\n }\n Transforms.setNodes(\n editor,\n {\n [key]: [...deviceValues.filter(v => v.deviceId !== deviceId), nextDeviceValue],\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { EditableBlockKey } from './types'\nimport { getBlocksInSelection } from '../selectors'\nimport { BreakpointId } from '../../state/modules/breakpoints'\n\nexport function clearBlockKeyForDevice(\n editor: Editor,\n deviceId: BreakpointId,\n key: EditableBlockKey,\n) {\n const rootElements = getBlocksInSelection(editor)\n\n for (const [node, path] of rootElements) {\n if (ElementUtils.isBlock(node)) {\n const deviceOverrides = node[key] ?? []\n Transforms.setNodes(\n editor,\n {\n [key]: deviceOverrides.filter(v => v.deviceId !== deviceId),\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Transforms } from 'slate'\nimport { getSelection } from '../selectors'\nimport { Inline } from '../types'\n\nexport function wrapInline(editor: Editor, inline: Inline) {\n Transforms.wrapNodes(editor, inline, {\n at: getSelection(editor),\n split: true,\n })\n}\n","import { Editor, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { getSelection } from '../selectors'\nimport { InlineType } from '../types'\n\nexport function unwrapInline(editor: Editor, type: InlineType) {\n Transforms.unwrapNodes(editor, {\n match: node => ElementUtils.isInline(node) && node.type === type,\n at: getSelection(editor),\n })\n}\n","import { Path, Editor, NodeEntry } from 'slate'\n\nimport { ElementUtils } from './element'\nimport { ListElement, ListItemElement } from '../types'\n\nexport const EditorUtils = {\n getFirstAncestorList(editor: Editor, path: Path): NodeEntry<ListElement> | null {\n try {\n const parentList = Editor.above(editor, {\n at: path,\n match: (node): node is ListElement => ElementUtils.isList(node),\n })\n return parentList ?? null\n } catch (e) {\n return null\n }\n },\n getFirstAncestorListItem(editor: Editor, path: Path): NodeEntry<ListItemElement> | null {\n try {\n const parentListItem = Editor.above(editor, {\n at: path,\n match: (node): node is ListItemElement => ElementUtils.isListItem(node),\n })\n\n return parentListItem ?? null\n } catch (e) {\n return null\n }\n },\n}\n","export const LIST_ITEM_CHILD_POSITION = 0\nexport const LIST_ITEM_LIST_POSITION = 1\n","import type { Node, NodeEntry } from 'slate'\nimport { Path } from 'slate'\n\nexport function filterForSubtreeRoots(entries: NodeEntry<Node>[]): NodeEntry<Node>[] {\n return entries.filter(\n ([, nodePath]) =>\n !Path.ancestors(nodePath).some(ancestor => {\n return entries.some(([, path]) => Path.equals(path, ancestor))\n }),\n )\n}\n","import { Editor, Element, Transforms, Path, Node, Location, Span } from 'slate'\nimport { EditorUtils } from '../utils/editor'\nimport { LIST_ITEM_CHILD_POSITION, LIST_ITEM_LIST_POSITION } from './constants'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { ElementUtils } from '../utils/element'\nimport { BlockType } from '../types'\n\nexport function unwrapPath(editor: Editor, listItemPath: Path) {\n const parentList = EditorUtils.getFirstAncestorList(editor, listItemPath)\n const listItemContainingParentList = EditorUtils.getFirstAncestorListItem(editor, listItemPath)\n //if this is a nested item we don't want to unwrap it\n if (!parentList || listItemContainingParentList) return\n\n Editor.withoutNormalizing(editor, () => {\n const listItemTextPath = [...listItemPath, LIST_ITEM_CHILD_POSITION]\n const listItemNestedListPath = [...listItemPath, LIST_ITEM_LIST_POSITION]\n\n if (Node.has(editor, listItemNestedListPath)) {\n Transforms.setNodes(editor, { type: parentList[0].type }, { at: listItemNestedListPath })\n Transforms.liftNodes(editor, { at: listItemNestedListPath })\n Transforms.liftNodes(editor, { at: Path.next(listItemPath) })\n }\n\n if (Node.has(editor, listItemTextPath)) {\n Transforms.setNodes(\n editor,\n { type: BlockType.Paragraph },\n {\n at: listItemTextPath,\n },\n )\n Transforms.liftNodes(editor, { at: listItemTextPath })\n Transforms.liftNodes(editor, { at: listItemPath })\n }\n })\n}\n\ntype UnwrapListOptions = {\n at?: Location | Span\n}\n\nexport function unwrapList(editor: Editor, options?: UnwrapListOptions) {\n const at = options?.at ?? editor.selection\n if (!at) return\n\n const listItems = Array.from(\n Editor.nodes(editor, {\n at,\n match: node => {\n return Element.isElement(node) && ElementUtils.isListItem(node)\n },\n }),\n )\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n unwrapPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Element, Location, Span, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { BlockType } from '../types'\n\ntype WrapListOptions = {\n type: typeof BlockType.UnorderedList | typeof BlockType.OrderedList\n at?: Location | Span\n}\n\nexport function wrapList(\n editor: Editor,\n options: WrapListOptions = { type: BlockType.UnorderedList },\n) {\n const at = options.at ?? editor.selection\n if (!at) return\n\n const nonListEntries = Array.from(\n Editor.nodes(editor, {\n at,\n match: node => {\n return Element.isElement(node) && ElementUtils.isConvertibleToListTextNode(node)\n },\n }),\n )\n\n const refs = nonListEntries.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n const path = ref.current\n if (path) {\n Editor.withoutNormalizing(editor, () => {\n Transforms.setNodes(\n editor,\n { type: BlockType.ListItemChild },\n {\n at: path,\n },\n )\n Transforms.wrapNodes(editor, ElementUtils.createListItem(), {\n match: node => ElementUtils.isListItemChild(node),\n at: path,\n })\n Transforms.wrapNodes(editor, ElementUtils.createList(options.type), {\n at: path,\n })\n })\n }\n ref.unref()\n })\n}\n","import { Range, Point, Path, Location } from 'slate'\n\nexport const LocationUtils = {\n getStartPath(location: Location): Path {\n if (Range.isRange(location)) return Range.start(location).path\n if (Point.isPoint(location)) return location.path\n return location\n },\n}\n","import type { Element, NodeEntry } from 'slate'\nimport { Editor, Path } from 'slate'\nimport { EditorUtils } from '../../utils/editor'\nimport { ElementUtils } from '../../utils/element'\nimport { LocationUtils } from './location'\n\nexport function getSelectedListItems(editor: Editor): NodeEntry<Element>[] {\n if (!editor.selection) return []\n\n const start = LocationUtils.getStartPath(editor.selection)\n const listItems = Editor.nodes(editor, {\n at: editor.selection,\n match: node => ElementUtils.isListItem(node),\n })\n const firstAncestorPath = EditorUtils.getFirstAncestorListItem(editor, start)?.[1] ?? []\n\n return Array.from(listItems).filter((node): node is NodeEntry<Element> =>\n Path.isDescendant(start, node[1])\n ? Path.equals(node[1], firstAncestorPath)\n : !Path.isAfter(start, node[1]),\n )\n}\n","import { Editor, Node, Path, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { LIST_ITEM_LIST_POSITION } from './constants'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { getSelectedListItems } from './utils/getSelectedListItems'\n\nexport function indentPath(editor: Editor, path: Path) {\n const parent = Node.parent(editor, path)\n if (!path || !Path.hasPrevious(path) || !ElementUtils.isList(parent)) return\n\n const previosPath = Path.previous(path)\n\n const previousChildListPath = [...previosPath, LIST_ITEM_LIST_POSITION]\n const previousHasChildList = Node.has(editor, previousChildListPath)\n\n Editor.withoutNormalizing(editor, () => {\n if (!previousHasChildList) {\n Transforms.insertNodes(editor, ElementUtils.createList(parent.type), {\n at: previousChildListPath,\n })\n }\n\n const previousChildList = Node.get(editor, previousChildListPath)\n\n if (ElementUtils.isList(previousChildList)) {\n const index = previousHasChildList ? previousChildList.children.length : 0\n Transforms.moveNodes(editor, {\n at: path,\n to: [...previousChildListPath, index],\n })\n }\n })\n}\n\nexport function indent(editor: Editor) {\n if (!editor.selection) return\n\n const listItems = getSelectedListItems(editor)\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n indentPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Path, Transforms } from 'slate'\nimport { indentPath } from './indent'\nimport { getSelectedListItems } from './utils/getSelectedListItems'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { EditorUtils } from '../utils/editor'\n\nfunction dedentPath(editor: Editor, listItemPath: Path) {\n const parentList = EditorUtils.getFirstAncestorList(editor, listItemPath)\n const listItemContainingParentList = EditorUtils.getFirstAncestorListItem(editor, listItemPath)\n if (!parentList || !listItemContainingParentList) return\n\n const [parentListNode, parentListPath] = parentList\n const [_, listItemContainingParentListPath] = listItemContainingParentList\n\n const listItemPosition = listItemPath[listItemPath.length - 1]\n const previousSiblings = parentListNode.children.slice(0, listItemPosition)\n const nextSiblings = parentListNode.children.slice(listItemPosition + 1)\n\n Editor.withoutNormalizing(editor, () => {\n // put next siblings into list item\n nextSiblings.forEach(() => {\n const nextSiblingPath = [...parentListPath, listItemPosition + 1]\n indentPath(editor, nextSiblingPath)\n })\n // move list item to parent list\n Transforms.moveNodes(editor, {\n at: listItemPath,\n to: Path.next(listItemContainingParentListPath),\n })\n // delete old parent list if there are no other list items\n if (previousSiblings.length === 0) {\n Transforms.removeNodes(editor, { at: parentListPath })\n }\n })\n}\n\nexport function dedent(editor: Editor) {\n if (!editor.selection) return\n\n const listItems = getSelectedListItems(editor)\n const subRoots = filterForSubtreeRoots(listItems)\n const refs = subRoots.map(([_, path]) => Editor.pathRef(editor, path))\n\n refs.forEach(ref => {\n if (ref.current) {\n dedentPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Location, Node, Path, Transforms } from 'slate'\nimport { ElementUtils } from '../utils/element'\nimport { unwrapList } from './unwrapList'\nimport { LocationUtils } from './utils/location'\nimport { wrapList } from './wrapList'\nimport { BlockType } from '../types'\n\ntype ToggleListOptions = {\n type: typeof BlockType.UnorderedList | typeof BlockType.OrderedList\n at?: Location\n}\n\nexport function toggleList(\n editor: Editor,\n options: ToggleListOptions = { type: BlockType.UnorderedList },\n) {\n const at = options.at ?? editor.selection\n if (at == null) return\n const start = LocationUtils.getStartPath(at)\n const ancestorPath = Path.ancestors(start).at(1)\n if (!ancestorPath || !Node.has(editor, ancestorPath)) return\n const ancestor = Node.get(editor, ancestorPath)\n\n if (!ElementUtils.isList(ancestor)) {\n return wrapList(editor, { type: options.type, at })\n }\n\n if (ancestor.type === options.type) {\n unwrapList(editor, { at })\n } else {\n Transforms.setNodes(editor, { type: options.type }, { at: ancestorPath })\n }\n}\n","import type { KeyboardEvent } from 'react'\nimport { Editor, Transforms, Range, Node, PathRef, Text } from 'slate'\nimport { setBlockKeyForDevice } from './setBlockKeyForDevice'\nimport { clearBlockKeyForDevice } from './clearBlockKeyForDevice'\nimport { wrapInline } from './wrapInline'\nimport { unwrapInline } from './unwrapInline'\nimport { getSelection } from '../selectors'\nimport { ElementUtils } from '../utils/element'\nimport { RenderElement, Select, createRichTextV2Plugin } from '../../controls'\nimport { getActiveBlockType } from '../selectors'\nimport { BlockType, RootBlockType } from '../types'\nimport { unwrapList } from './unwrapList'\nimport { wrapList } from './wrapList'\nimport { indent } from './indent'\nimport { dedent } from './dedent'\nimport { toggleList } from './toggleList'\nimport { EditorUtils } from '../utils/editor'\nimport isHotkey from 'is-hotkey'\nimport { LIST_ITEM_CHILD_POSITION } from './constants'\nimport { useStyle } from '../../runtimes/react/use-style'\nimport { cx } from '@emotion/css'\nimport { RenderElementProps } from 'slate-react'\n\nexport const BlockActions = {\n setBlockKeyForDevice,\n clearBlockKeyForDevice,\n wrapInline,\n unwrapInline,\n}\n\n// TODO: This API is still litered with artifacts from the list plugin being seperated out.\n// This plugin needs to be rewritten to be assumptionless.\nexport const ListActions = {\n unwrapList,\n wrapList,\n indent,\n dedent,\n toggleList,\n}\n\nexport function onKeyDown(e: KeyboardEvent, editor: Editor) {\n if (\n !editor.selection ||\n Array.from(Editor.nodes(editor, { match: node => ElementUtils.isListItem(node) })).length === 0\n )\n return\n\n if (isHotkey('shift+tab', e)) {\n e.preventDefault()\n ListActions.dedent(editor)\n }\n\n if (isHotkey('tab', e)) {\n e.preventDefault()\n ListActions.indent(editor)\n }\n\n if (isHotkey('backspace', e)) {\n if (!editor.selection) return\n if (Range.isExpanded(editor.selection)) return\n const listItem = EditorUtils.getFirstAncestorListItem(editor, editor.selection.anchor.path)\n if (editor.selection.anchor.offset === 0 && listItem) {\n e.preventDefault()\n const parentListItem = EditorUtils.getFirstAncestorListItem(editor, listItem[1])\n const list = EditorUtils.getFirstAncestorList(editor, listItem[1])\n\n if (parentListItem) {\n ListActions.dedent(editor)\n } else if (list) {\n ListActions.unwrapList(editor)\n }\n return\n }\n }\n\n if (isHotkey('enter', e)) {\n e.preventDefault()\n\n if (!editor.selection) return\n\n if (Range.isExpanded(editor.selection)) {\n Transforms.delete(editor)\n return\n }\n\n const listItem = EditorUtils.getFirstAncestorListItem(editor, editor.selection.anchor.path)\n if (\n editor.selection.anchor.offset === 0 &&\n listItem &&\n Editor.string(editor, listItem[1]) === ''\n ) {\n const parentListItem = EditorUtils.getFirstAncestorListItem(editor, listItem[1])\n\n if (parentListItem) {\n ListActions.dedent(editor)\n } else {\n ListActions.unwrapList(editor)\n }\n return\n }\n\n Transforms.splitNodes(editor, {\n at: editor.selection,\n always: true,\n match: node => ElementUtils.isListItem(node),\n })\n }\n\n if (isHotkey('shift+enter', e)) {\n e.preventDefault()\n editor.insertText('\\n')\n }\n}\n\nexport function withBlock(editor: Editor) {\n const { normalizeNode } = editor\n\n editor.isInline = entry => {\n return ElementUtils.isInline(entry)\n }\n\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\n // Normalization textAlign with empty array of values\n if (ElementUtils.isBlock(normalizationNode) && normalizationNode?.textAlign?.length == 0) {\n Transforms.unsetNodes(editor, 'textAlign', { at: normalizationPath })\n return\n }\n\n // Normalization for converting children of list items to list item children\n // In the case of backspace from position 0 of node into a list this converts the node into a list item.\n if (ElementUtils.isListItem(normalizationNode)) {\n const pathToListItemText = [...normalizationPath, LIST_ITEM_CHILD_POSITION]\n\n if (Node.has(editor, pathToListItemText)) {\n const nodeInListItemTextPosition = Node.get(editor, pathToListItemText)\n if (ElementUtils.isRootBlock(nodeInListItemTextPosition)) {\n Transforms.setNodes(\n editor,\n { type: BlockType.ListItemChild },\n {\n at: pathToListItemText,\n },\n )\n return\n }\n } else {\n Transforms.insertNodes(editor, ElementUtils.createListItem(), {\n at: pathToListItemText,\n })\n return\n }\n }\n\n // Normalization for merging adjacent lists of the same type\n if (!Text.isText(normalizationNode)) {\n const mergeableChildren = Array.from(Node.children(editor, normalizationPath))\n .map((child, index, children) => {\n const potentialNodeToBeMerged = children.at(index + 1)\n if (\n !potentialNodeToBeMerged ||\n !ElementUtils.isList(potentialNodeToBeMerged[0]) ||\n !ElementUtils.isList(child[0]) ||\n potentialNodeToBeMerged[0].type !== child[0].type\n ) {\n return null\n }\n return [\n Editor.pathRef(editor, child[1]),\n Editor.pathRef(editor, potentialNodeToBeMerged[1]),\n ]\n })\n .filter((mergeableNodes): mergeableNodes is PathRef[] => Boolean(mergeableNodes))\n\n if (mergeableChildren.length !== 0) {\n mergeableChildren.reverse().forEach(([nodePathRef, nodeToBeMergedPathRef]) => {\n const nodePath = nodePathRef.current\n const nodeToBeMergedPath = nodeToBeMergedPathRef.current\n if (nodePath == null || nodeToBeMergedPath == null) return\n const nodeChildren = Array.from(Node.children(editor, nodePath))\n const childrenToBeMerged = Array.from(Node.children(editor, nodeToBeMergedPath))\n Editor.withoutNormalizing(editor, () => {\n childrenToBeMerged.reverse().forEach(([_, childPath]) => {\n Transforms.moveNodes(editor, {\n at: childPath,\n to: [...nodePath, nodeChildren.length],\n })\n })\n Transforms.removeNodes(editor, { at: nodeToBeMergedPath })\n })\n nodePathRef.unref()\n nodeToBeMergedPathRef.unref()\n })\n return\n }\n }\n\n normalizeNode(entry)\n }\n\n return editor\n}\n\nconst definition = Select({\n label: 'Block',\n labelOrientation: 'horizontal',\n options: [\n {\n value: BlockType.Paragraph,\n label: 'Paragraph',\n },\n {\n value: BlockType.Heading1,\n label: 'Heading 1',\n },\n {\n value: BlockType.Heading2,\n label: 'Heading 2',\n },\n {\n value: BlockType.Heading3,\n label: 'Heading 3',\n },\n {\n value: BlockType.Heading4,\n label: 'Heading 4',\n },\n {\n value: BlockType.Heading5,\n label: 'Heading 5',\n },\n {\n value: BlockType.Heading6,\n label: 'Heading 6',\n },\n {\n value: BlockType.UnorderedList,\n label: 'Bulleted list',\n },\n {\n value: BlockType.OrderedList,\n label: 'Numbered list',\n },\n {\n value: BlockType.BlockQuote,\n label: 'Quote',\n },\n ],\n defaultValue: BlockType.Paragraph,\n})\n\nexport function BlockPlugin() {\n return createRichTextV2Plugin({\n withPlugin: withBlock,\n onKeyDown: onKeyDown,\n control: {\n definition,\n onChange: (editor, value) => {\n // TODO: This onChange being so complex is an artifact of how the List plugin used to be seperated out from the block plugin.\n // Would be great to refactor and simplify here.\n\n const activeBlockType = getActiveBlockType(editor)\n if (value === BlockType.UnorderedList || value === BlockType.OrderedList) {\n ListActions.toggleList(editor, {\n type: value,\n at: getSelection(editor),\n })\n } else if (activeBlockType === value) {\n Transforms.setNodes(\n editor,\n {\n type: BlockType.Default,\n },\n { at: getSelection(editor) },\n )\n } else {\n ListActions.unwrapList(editor, {\n at: getSelection(editor),\n })\n Transforms.setNodes(\n editor,\n {\n type: value ?? BlockType.Default,\n },\n { at: getSelection(editor) },\n )\n }\n },\n getValue: editor => {\n const activeBlock = getActiveBlockType(editor)\n\n if (activeBlock === RootBlockType.Text || activeBlock === RootBlockType.Default)\n return undefined\n\n // Casting here because `getActiveBlockType` can return `null` when multiple blocks of different types are selected.\n // This is an edgecase of our block plugin, that didn't warrant expanding the type of `RichTextV2PluginControlValue`.\n return activeBlock as typeof definition['config']['options'][number]['value'] | undefined\n },\n },\n renderElement: renderElement => props =>\n <BlockPluginComponent {...props} renderElement={renderElement} />,\n })\n}\n\nfunction BlockPluginComponent({\n element,\n attributes,\n children,\n renderElement,\n}: RenderElementProps & { renderElement: RenderElement }) {\n const blockStyles = [useStyle({ margin: 0 }), element.className]\n const quoteStyles = 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 switch (element.type) {\n case BlockType.Text:\n return (\n <span {...attributes} className={cx(...blockStyles)}>\n {children}\n </span>\n )\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 {...attributes} className={cx(...blockStyles, quoteStyles)}>\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 case BlockType.Default:\n return (\n <p {...attributes} className={cx(...blockStyles)}>\n {children}\n </p>\n )\n\n default:\n return <>{renderElement({ element, attributes, children })}</>\n }\n}\n"],"names":["Element","BlockType","InlineType","Range","Editor","Text","Path","findBreakpointOverride","Transforms","Node","Point","BlockActions","setBlockKeyForDevice","clearBlockKeyForDevice","wrapInline","unwrapInline","ListActions","unwrapList","wrapList","indent","dedent","toggleList","e","editor","selection","Array","from","nodes","match","node","ElementUtils","isListItem","length","isHotkey","preventDefault","isExpanded","listItem","EditorUtils","getFirstAncestorListItem","anchor","path","offset","parentListItem","list","getFirstAncestorList","delete","string","splitNodes","at","always","insertText","normalizeNode","isInline","entry","normalizationNode","normalizationPath","isBlock","textAlign","unsetNodes","pathToListItemText","LIST_ITEM_CHILD_POSITION","has","nodeInListItemTextPosition","get","isRootBlock","setNodes","type","ListItemChild","insertNodes","createListItem","isText","mergeableChildren","children","map","child","index","potentialNodeToBeMerged","isList","pathRef","filter","mergeableNodes","Boolean","reverse","forEach","nodePathRef","nodeToBeMergedPathRef","nodePath","current","nodeToBeMergedPath","nodeChildren","childrenToBeMerged","withoutNormalizing","_","childPath","moveNodes","to","removeNodes","unref","definition","Select","label","labelOrientation","options","value","Paragraph","Heading1","Heading2","Heading3","Heading4","Heading5","Heading6","UnorderedList","OrderedList","BlockQuote","defaultValue","createRichTextV2Plugin","withPlugin","withBlock","onKeyDown","control","onChange","activeBlockType","getActiveBlockType","getSelection","Default","getValue","activeBlock","RootBlockType","undefined","renderElement","props","_jsx","element","attributes","blockStyles","useStyle","margin","className","quoteStyles","padding","fontSize","fontWeight","borderLeft","cx","listStylePosition","ListItem","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs6.js","sources":["../src/slate/InlineModePlugin/index.ts"],"sourcesContent":["import { Editor, Path, Transforms } from 'slate'\nimport { KeyboardEvent } from 'react'\nimport isHotkey from 'is-hotkey'\nimport { createRichTextV2Plugin } from '../../controls/rich-text-v2'\nimport { ElementUtils } from '../utils/element'\nimport { BlockType } from '../types'\n\nconst BLOCK_ONE_PATH = [0]\nconst BLOCK_TWO_PATH = [1]\n\nexport function withInlineMode(editor: Editor): Editor {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\n\n /**\n * Merge root nodes past the first one\n */\n if (Path.equals(BLOCK_TWO_PATH, normalizationPath)) {\n Transforms.mergeNodes(editor, { at: BLOCK_TWO_PATH })\n return\n }\n /**\n * Unwrap non text nodes of first root node\n */\n if (\n Path.isAncestor(BLOCK_ONE_PATH, normalizationPath) &&\n ElementUtils.isBlock(normalizationNode)\n ) {\n Transforms.unwrapNodes(editor, {\n at: normalizationPath,\n })\n return\n }\n /**\n * Update type of root nodes to be `text-block`\n */\n if (Path.equals(BLOCK_ONE_PATH, normalizationPath)) {\n Transforms.setNodes(editor, { type: BlockType.Text }, { at: normalizationPath })\n return\n }\n\n normalizeNode(entry)\n }\n\n return editor\n}\n\nexport const InlineModePlugin = createRichTextV2Plugin({\n onKeyDown: (e: KeyboardEvent) => {\n if (isHotkey('enter', e)) e.preventDefault()\n },\n withPlugin: withInlineMode,\n})\n"],"names":["Path","Transforms","ElementUtils","BlockType","createRichTextV2Plugin","isHotkey"],"mappings":";;;;;;;;;AAOA,MAAM,iBAAiB,CAAC,CAAC;AACzB,MAAM,iBAAiB,CAAC,CAAC;AAElB,wBAAwB,QAAwB;AACrD,QAAM,EAAE,kBAAkB;AAC1B,SAAO,gBAAgB,CAAS,UAAA;AACxB,UAAA,CAAC,mBAAmB,qBAAqB;AAK/C,QAAIA,WAAK,OAAO,gBAAgB,iBAAiB,GAAG;AAClDC,YAAA,WAAW,WAAW,QAAQ,EAAE,IAAI,eAAgB,CAAA;AACpD;AAAA,IACF;AAKE,QAAAD,MAAA,KAAK,WAAW,gBAAgB,iBAAiB,KACjDE,mBAAa,QAAQ,iBAAiB,GACtC;AACAD,YAAA,WAAW,YAAY,QAAQ;AAAA,QAC7B,IAAI;AAAA,MAAA,CACL;AACD;AAAA,IACF;AAIA,QAAID,WAAK,OAAO,gBAAgB,iBAAiB,GAAG;AACvCC,YAAAA,WAAA,SAAS,QAAQ,EAAE,MAAME,UAAAA,UAAU,QAAQ,EAAE,IAAI,kBAAA,CAAmB;AAC/E;AAAA,IACF;AAEA,kBAAc,KAAK;AAAA,EAAA;AAGd,SAAA;AACT;AAEO,MAAM,mBAAmBC,UAAAA,uBAAuB;AAAA,EACrD,WAAW,CAAC,MAAqB;AAC3B,QAAAC,kBAAA,WAAS,SAAS,CAAC;AAAG,QAAE,eAAe;AAAA,EAC7C;AAAA,EACA,YAAY;AACd,CAAC;;;"}
@@ -1,43 +1,19 @@
1
1
  "use strict";
2
2
  var slate = require("slate");
3
- var isHotkey = require("is-hotkey");
4
- var reactPage = require("./react-page.cjs.js");
5
- var index = require("./index.cjs6.js");
6
- function _interopDefaultLegacy(e) {
7
- return e && typeof e === "object" && "default" in e ? e : { "default": e };
8
- }
9
- var isHotkey__default = /* @__PURE__ */ _interopDefaultLegacy(isHotkey);
10
- const BLOCK_ONE_PATH = [0];
11
- const BLOCK_TWO_PATH = [1];
12
- function withInlineMode(editor) {
13
- const { normalizeNode } = editor;
14
- editor.normalizeNode = (entry) => {
15
- const [normalizationNode, normalizationPath] = entry;
16
- if (slate.Path.equals(BLOCK_TWO_PATH, normalizationPath)) {
17
- slate.Transforms.mergeNodes(editor, { at: BLOCK_TWO_PATH });
18
- return;
19
- }
20
- if (slate.Path.isAncestor(BLOCK_ONE_PATH, normalizationPath) && index.ElementUtils.isBlock(normalizationNode)) {
21
- slate.Transforms.unwrapNodes(editor, {
22
- at: normalizationPath
23
- });
24
- return;
25
- }
26
- if (slate.Path.equals(BLOCK_ONE_PATH, normalizationPath)) {
27
- slate.Transforms.setNodes(editor, { type: reactPage.BlockType.Text }, { at: normalizationPath });
28
- return;
29
- }
30
- normalizeNode(entry);
3
+ var slateReact = require("slate-react");
4
+ function withBuilder(editor) {
5
+ editor.deselectAndBlur = function() {
6
+ slateReact.ReactEditor.deselect(editor);
7
+ slateReact.ReactEditor.blur(editor);
8
+ };
9
+ editor.focusAndSelectAll = function() {
10
+ slateReact.ReactEditor.focus(editor);
11
+ slate.Transforms.select(editor, {
12
+ anchor: slate.Editor.start(editor, []),
13
+ focus: slate.Editor.end(editor, [])
14
+ });
31
15
  };
32
16
  return editor;
33
17
  }
34
- const InlineModePlugin = reactPage.createRichTextV2Plugin({
35
- onKeyDown: (e) => {
36
- if (isHotkey__default["default"]("enter", e))
37
- e.preventDefault();
38
- },
39
- withPlugin: withInlineMode
40
- });
41
- exports.InlineModePlugin = InlineModePlugin;
42
- exports.withInlineMode = withInlineMode;
18
+ exports.withBuilder = withBuilder;
43
19
  //# sourceMappingURL=index.cjs7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs7.js","sources":["../src/slate/InlineModePlugin/index.ts"],"sourcesContent":["import { Editor, Path, Transforms } from 'slate'\nimport { KeyboardEvent } from 'react'\nimport isHotkey from 'is-hotkey'\nimport { createRichTextV2Plugin } from '../../controls/rich-text-v2'\nimport { ElementUtils } from '../utils/element'\nimport { BlockType } from '../types'\n\nconst BLOCK_ONE_PATH = [0]\nconst BLOCK_TWO_PATH = [1]\n\nexport function withInlineMode(editor: Editor): Editor {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\n\n /**\n * Merge root nodes past the first one\n */\n if (Path.equals(BLOCK_TWO_PATH, normalizationPath)) {\n Transforms.mergeNodes(editor, { at: BLOCK_TWO_PATH })\n return\n }\n /**\n * Unwrap non text nodes of first root node\n */\n if (\n Path.isAncestor(BLOCK_ONE_PATH, normalizationPath) &&\n ElementUtils.isBlock(normalizationNode)\n ) {\n Transforms.unwrapNodes(editor, {\n at: normalizationPath,\n })\n return\n }\n /**\n * Update type of root nodes to be `text-block`\n */\n if (Path.equals(BLOCK_ONE_PATH, normalizationPath)) {\n Transforms.setNodes(editor, { type: BlockType.Text }, { at: normalizationPath })\n return\n }\n\n normalizeNode(entry)\n }\n\n return editor\n}\n\nexport const InlineModePlugin = createRichTextV2Plugin({\n onKeyDown: (e: KeyboardEvent) => {\n if (isHotkey('enter', e)) e.preventDefault()\n },\n withPlugin: withInlineMode,\n})\n"],"names":["Path","Transforms","ElementUtils","BlockType","createRichTextV2Plugin","isHotkey"],"mappings":";;;;;;;;;AAOA,MAAM,iBAAiB,CAAC,CAAC;AACzB,MAAM,iBAAiB,CAAC,CAAC;AAElB,wBAAwB,QAAwB;AACrD,QAAM,EAAE,kBAAkB;AAC1B,SAAO,gBAAgB,CAAS,UAAA;AACxB,UAAA,CAAC,mBAAmB,qBAAqB;AAK/C,QAAIA,WAAK,OAAO,gBAAgB,iBAAiB,GAAG;AAClDC,YAAA,WAAW,WAAW,QAAQ,EAAE,IAAI,eAAgB,CAAA;AACpD;AAAA,IACF;AAKE,QAAAD,MAAA,KAAK,WAAW,gBAAgB,iBAAiB,KACjDE,mBAAa,QAAQ,iBAAiB,GACtC;AACAD,YAAA,WAAW,YAAY,QAAQ;AAAA,QAC7B,IAAI;AAAA,MAAA,CACL;AACD;AAAA,IACF;AAIA,QAAID,WAAK,OAAO,gBAAgB,iBAAiB,GAAG;AACvCC,YAAAA,WAAA,SAAS,QAAQ,EAAE,MAAME,UAAAA,UAAU,QAAQ,EAAE,IAAI,kBAAA,CAAmB;AAC/E;AAAA,IACF;AAEA,kBAAc,KAAK;AAAA,EAAA;AAGd,SAAA;AACT;AAEO,MAAM,mBAAmBC,UAAAA,uBAAuB;AAAA,EACrD,WAAW,CAAC,MAAqB;AAC3B,QAAAC,kBAAA,WAAS,SAAS,CAAC;AAAG,QAAE,eAAe;AAAA,EAC7C;AAAA,EACA,YAAY;AACd,CAAC;;;"}
1
+ {"version":3,"file":"index.cjs7.js","sources":["../src/slate/BuilderPlugin/index.ts"],"sourcesContent":["import { BaseEditor, Editor, Transforms } from 'slate'\nimport { ReactEditor } from 'slate-react'\n\nexport interface BuilderEditor extends BaseEditor {\n focusAndSelectAll: () => void\n deselectAndBlur: () => void\n}\n\nexport function withBuilder(editor: Editor) {\n editor.deselectAndBlur = function () {\n ReactEditor.deselect(editor)\n ReactEditor.blur(editor)\n }\n\n editor.focusAndSelectAll = function () {\n ReactEditor.focus(editor)\n Transforms.select(editor, {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n })\n }\n\n return editor\n}\n"],"names":["ReactEditor","Transforms","Editor"],"mappings":";;;AAQO,qBAAqB,QAAgB;AAC1C,SAAO,kBAAkB,WAAY;AACnCA,2BAAY,SAAS,MAAM;AAC3BA,2BAAY,KAAK,MAAM;AAAA,EAAA;AAGzB,SAAO,oBAAoB,WAAY;AACrCA,2BAAY,MAAM,MAAM;AACxBC,UAAA,WAAW,OAAO,QAAQ;AAAA,MACxB,QAAQC,MAAA,OAAO,MAAM,QAAQ,CAAA,CAAE;AAAA,MAC/B,OAAOA,MAAA,OAAO,IAAI,QAAQ,CAAA,CAAE;AAAA,IAAA,CAC7B;AAAA,EAAA;AAGI,SAAA;AACT;;"}
@@ -1,19 +1,41 @@
1
1
  "use strict";
2
- var slate = require("slate");
3
- var slateReact = require("slate-react");
4
- function withBuilder(editor) {
5
- editor.deselectAndBlur = function() {
6
- slateReact.ReactEditor.deselect(editor);
7
- slateReact.ReactEditor.blur(editor);
8
- };
9
- editor.focusAndSelectAll = function() {
10
- slateReact.ReactEditor.focus(editor);
11
- slate.Transforms.select(editor, {
12
- anchor: slate.Editor.start(editor, []),
13
- focus: slate.Editor.end(editor, [])
14
- });
15
- };
16
- return editor;
17
- }
18
- exports.withBuilder = withBuilder;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ var Text = require("./Text.cjs.js");
4
+ require("next/dynamic");
5
+ require("react");
6
+ require("./index.cjs.js");
7
+ require("use-sync-external-store/shim/with-selector");
8
+ require("./react-page.cjs.js");
9
+ require("redux");
10
+ require("redux-thunk");
11
+ require("./actions.cjs.js");
12
+ require("./state/breakpoints.cjs.js");
13
+ require("@emotion/css");
14
+ require("@emotion/serialize");
15
+ require("@emotion/utils");
16
+ require("slate");
17
+ require("react/jsx-runtime");
18
+ require("./typography.cjs.js");
19
+ require("./combobox.cjs.js");
20
+ require("use-sync-external-store/shim");
21
+ require("./types.cjs.js");
22
+ require("./box-models.cjs.js");
23
+ require("css-box-model");
24
+ require("color");
25
+ require("scroll-into-view-if-needed");
26
+ require("react-dom");
27
+ require("html-react-parser");
28
+ require("next/head");
29
+ require("zod");
30
+ require("@emotion/server/create-instance");
31
+ require("next/document");
32
+ require("cors");
33
+ require("path-to-regexp");
34
+ require("cookie");
35
+ require("http-proxy");
36
+ require("set-cookie-parser");
37
+ require("./constants.cjs.js");
38
+ require("uuid");
39
+ require("corporate-ipsum");
40
+ exports["default"] = Text["default"];
19
41
  //# sourceMappingURL=index.cjs8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs8.js","sources":["../src/slate/BuilderPlugin/index.ts"],"sourcesContent":["import { BaseEditor, Editor, Transforms } from 'slate'\nimport { ReactEditor } from 'slate-react'\n\nexport interface BuilderEditor extends BaseEditor {\n focusAndSelectAll: () => void\n deselectAndBlur: () => void\n}\n\nexport function withBuilder(editor: Editor) {\n editor.deselectAndBlur = function () {\n ReactEditor.deselect(editor)\n ReactEditor.blur(editor)\n }\n\n editor.focusAndSelectAll = function () {\n ReactEditor.focus(editor)\n Transforms.select(editor, {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n })\n }\n\n return editor\n}\n"],"names":["ReactEditor","Transforms","Editor"],"mappings":";;;AAQO,qBAAqB,QAAgB;AAC1C,SAAO,kBAAkB,WAAY;AACnCA,2BAAY,SAAS,MAAM;AAC3BA,2BAAY,KAAK,MAAM;AAAA,EAAA;AAGzB,SAAO,oBAAoB,WAAY;AACrCA,2BAAY,MAAM,MAAM;AACxBC,UAAA,WAAW,OAAO,QAAQ;AAAA,MACxB,QAAQC,MAAA,OAAO,MAAM,QAAQ,CAAA,CAAE;AAAA,MAC/B,OAAOA,MAAA,OAAO,IAAI,QAAQ,CAAA,CAAE;AAAA,IAAA,CAC7B;AAAA,EAAA;AAGI,SAAA;AACT;;"}
1
+ {"version":3,"file":"index.cjs8.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,26 +1,62 @@
1
1
  "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var __objRest = (source, exclude) => {
22
+ var target = {};
23
+ for (var prop in source)
24
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
25
+ target[prop] = source[prop];
26
+ if (source != null && __getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(source)) {
28
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
29
+ target[prop] = source[prop];
30
+ }
31
+ return target;
32
+ };
2
33
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- var Text = require("./Text.cjs.js");
4
- require("next/dynamic");
5
- require("react");
6
- require("./index.cjs.js");
7
- require("use-sync-external-store/shim/with-selector");
8
- require("./react-page.cjs.js");
34
+ var React = require("react");
35
+ var slate = require("slate");
36
+ var isHotkey = require("is-hotkey");
37
+ var slateHistory = require("slate-history");
38
+ var slateReact = require("slate-react");
39
+ var reactPage = require("./react-page.cjs.js");
40
+ var css = require("@emotion/css");
41
+ require("@emotion/serialize");
42
+ require("@emotion/utils");
43
+ var next = require("./index.cjs.js");
44
+ require("./state/breakpoints.cjs.js");
45
+ require("./types.cjs2.js");
46
+ var index = require("./index.cjs6.js");
47
+ var index$1 = require("./index.cjs7.js");
48
+ var jsxRuntime = require("react/jsx-runtime");
49
+ require("./index.cjs3.js");
50
+ var useIsomorphicLayoutEffect = require("./useIsomorphicLayoutEffect.cjs.js");
9
51
  require("redux");
10
52
  require("redux-thunk");
11
53
  require("./actions.cjs.js");
12
- require("./state/breakpoints.cjs.js");
13
- require("@emotion/css");
14
- require("@emotion/serialize");
15
- require("@emotion/utils");
16
- require("slate");
17
- require("react/jsx-runtime");
18
- require("./text-input.cjs.js");
54
+ require("use-sync-external-store/shim/with-selector");
55
+ require("next/dynamic");
56
+ require("./typography.cjs.js");
19
57
  require("./combobox.cjs.js");
20
- require("./select.cjs.js");
21
58
  require("use-sync-external-store/shim");
22
59
  require("./types.cjs.js");
23
- require("./deepEqual.cjs.js");
24
60
  require("./box-models.cjs.js");
25
61
  require("css-box-model");
26
62
  require("color");
@@ -39,5 +75,222 @@ require("set-cookie-parser");
39
75
  require("./constants.cjs.js");
40
76
  require("uuid");
41
77
  require("corporate-ipsum");
42
- exports["default"] = Text["default"];
78
+ require("next/link");
79
+ function _interopDefaultLegacy(e) {
80
+ return e && typeof e === "object" && "default" in e ? e : { "default": e };
81
+ }
82
+ var isHotkey__default = /* @__PURE__ */ _interopDefaultLegacy(isHotkey);
83
+ function useSyncDOMSelection(editor, isEnabled) {
84
+ useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
85
+ if (!isEnabled.current || editor.selection == null || slateReact.ReactEditor.isFocused(editor))
86
+ return;
87
+ try {
88
+ const root = slateReact.ReactEditor.findDocumentOrShadowRoot(editor);
89
+ const domSelection = root.getSelection();
90
+ const newDomRange = slateReact.ReactEditor.toDOMRange(editor, editor.selection);
91
+ if (newDomRange) {
92
+ if (slate.Range.isBackward(editor.selection)) {
93
+ domSelection == null ? void 0 : domSelection.setBaseAndExtent(newDomRange.endContainer, newDomRange.endOffset, newDomRange.startContainer, newDomRange.startOffset);
94
+ } else {
95
+ domSelection == null ? void 0 : domSelection.setBaseAndExtent(newDomRange.startContainer, newDomRange.startOffset, newDomRange.endContainer, newDomRange.endOffset);
96
+ }
97
+ } else {
98
+ domSelection == null ? void 0 : domSelection.removeAllRanges();
99
+ }
100
+ } catch (e) {
101
+ console.error(e);
102
+ }
103
+ });
104
+ }
105
+ function RichTextV2Element(_a) {
106
+ var _b = _a, {
107
+ definition,
108
+ plugins
109
+ } = _b, props = __objRest(_b, [
110
+ "definition",
111
+ "plugins"
112
+ ]);
113
+ const blockStyles = [reactPage.useStyle({
114
+ margin: 0
115
+ })];
116
+ function initialRenderElement(props2) {
117
+ switch (props2.element.type) {
118
+ case reactPage.BlockType.Default:
119
+ default:
120
+ if (definition.config.mode === reactPage.RichTextV2Mode.Inline) {
121
+ return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({}, props2.attributes), {
122
+ className: css.cx(...blockStyles),
123
+ children: props2.children
124
+ }));
125
+ }
126
+ return /* @__PURE__ */ jsxRuntime.jsx("p", __spreadProps(__spreadValues({}, props2.attributes), {
127
+ className: css.cx(...blockStyles),
128
+ children: props2.children
129
+ }));
130
+ }
131
+ }
132
+ const renderElement = plugins.reduce((renderFn, plugin) => (props2) => {
133
+ const {
134
+ control,
135
+ renderElement: renderElement2
136
+ } = plugin;
137
+ if ((control == null ? void 0 : control.definition) == null || renderElement2 == null)
138
+ return renderFn(props2);
139
+ if (control.getElementValue == null)
140
+ return renderElement2(renderFn, void 0)(props2);
141
+ return /* @__PURE__ */ jsxRuntime.jsx(next.ControlValue, {
142
+ definition: control.definition,
143
+ data: control.getElementValue(props2.element),
144
+ children: (value) => renderElement2(renderFn, value)(props2)
145
+ });
146
+ }, initialRenderElement);
147
+ return renderElement(props);
148
+ }
149
+ function RichTextV2Leaf(_c) {
150
+ var _d = _c, {
151
+ definition,
152
+ plugins
153
+ } = _d, props = __objRest(_d, [
154
+ "definition",
155
+ "plugins"
156
+ ]);
157
+ function initialRenderLeaf({
158
+ attributes,
159
+ children,
160
+ leaf
161
+ }) {
162
+ return /* @__PURE__ */ jsxRuntime.jsx("span", __spreadProps(__spreadValues({
163
+ className: leaf.className
164
+ }, attributes), {
165
+ children
166
+ }));
167
+ }
168
+ const renderLeaf = plugins.reduce((renderFn, plugin) => (props2) => {
169
+ const {
170
+ control,
171
+ renderLeaf: renderLeaf2
172
+ } = plugin;
173
+ if ((control == null ? void 0 : control.definition) == null || renderLeaf2 == null)
174
+ return renderFn(props2);
175
+ if (control.getLeafValue == null)
176
+ return renderLeaf2(renderFn, void 0)(props2);
177
+ return /* @__PURE__ */ jsxRuntime.jsx(next.ControlValue, {
178
+ definition: control.definition,
179
+ data: control.getLeafValue(props2.leaf),
180
+ children: (value) => renderLeaf2(renderFn, value)(props2)
181
+ });
182
+ }, initialRenderLeaf);
183
+ return renderLeaf(props);
184
+ }
185
+ const defaultText = [{
186
+ type: reactPage.BlockType.Default,
187
+ children: [{
188
+ text: ""
189
+ }]
190
+ }];
191
+ function EditableTextV2({
192
+ text,
193
+ definition,
194
+ control
195
+ }) {
196
+ const plugins = React.useMemo(() => {
197
+ var _a, _b, _c;
198
+ const plugins2 = [...(_b = (_a = definition == null ? void 0 : definition.config) == null ? void 0 : _a.plugins) != null ? _b : [], ...((_c = definition == null ? void 0 : definition.config) == null ? void 0 : _c.mode) === reactPage.RichTextV2Mode.Inline ? [index.InlineModePlugin] : []];
199
+ return plugins2;
200
+ }, [definition]);
201
+ const [editor] = React.useState(() => plugins.reduceRight((editor2, plugin) => {
202
+ var _a, _b;
203
+ return (_b = (_a = plugin == null ? void 0 : plugin.withPlugin) == null ? void 0 : _a.call(plugin, editor2)) != null ? _b : editor2;
204
+ }, index$1.withBuilder(slateHistory.withHistory(slateReact.withReact(slate.createEditor())))));
205
+ const isPreservingFocus = React.useRef(false);
206
+ useSyncDOMSelection(editor, isPreservingFocus);
207
+ const editMode = next.useBuilderEditMode();
208
+ React.useEffect(() => {
209
+ if (control == null)
210
+ return;
211
+ const element = slateReact.ReactEditor.toDOMNode(editor, editor);
212
+ return next.pollBoxModel({
213
+ element,
214
+ onBoxModelChange: (boxModel) => control.changeBoxModel(boxModel)
215
+ });
216
+ }, [editor, control]);
217
+ const renderElement = React.useCallback((props) => {
218
+ return /* @__PURE__ */ jsxRuntime.jsx(RichTextV2Element, __spreadProps(__spreadValues({}, props), {
219
+ definition,
220
+ plugins
221
+ }));
222
+ }, [plugins, definition]);
223
+ const renderLeaf = React.useCallback((props) => {
224
+ return /* @__PURE__ */ jsxRuntime.jsx(RichTextV2Leaf, __spreadProps(__spreadValues({}, props), {
225
+ definition,
226
+ plugins
227
+ }));
228
+ }, [plugins, definition]);
229
+ const initialValue = React.useMemo(() => text != null ? text : defaultText, [text]);
230
+ React.useEffect(() => {
231
+ if (editMode !== reactPage.BuilderEditMode.CONTENT) {
232
+ isPreservingFocus.current = false;
233
+ slateReact.ReactEditor.deselect(editor);
234
+ }
235
+ }, [editMode]);
236
+ React.useEffect(() => {
237
+ control == null ? void 0 : control.setEditor(editor);
238
+ control == null ? void 0 : control.setDefaultValue(defaultText);
239
+ }, [control, editor, defaultText]);
240
+ const handleFocus = React.useCallback(() => {
241
+ isPreservingFocus.current = true;
242
+ control == null ? void 0 : control.select();
243
+ }, [control]);
244
+ const handleKeyDown = React.useCallback((e) => {
245
+ if (isHotkey__default["default"]("mod+shift+z", e))
246
+ return slateHistory.HistoryEditor.redo(editor);
247
+ if (isHotkey__default["default"]("mod+z", e))
248
+ return slateHistory.HistoryEditor.undo(editor);
249
+ if (isHotkey__default["default"]("escape")(e)) {
250
+ isPreservingFocus.current = false;
251
+ slateReact.ReactEditor.blur(editor);
252
+ control == null ? void 0 : control.switchToBuildMode();
253
+ }
254
+ plugins.forEach((plugin) => {
255
+ var _a;
256
+ return (_a = plugin == null ? void 0 : plugin.onKeyDown) == null ? void 0 : _a.call(plugin, e, editor);
257
+ });
258
+ }, [control, plugins, editor]);
259
+ const handleKeyUp = React.useCallback((e) => {
260
+ if (editMode === reactPage.BuilderEditMode.CONTENT)
261
+ e.preventDefault();
262
+ }, [control, editor, editMode]);
263
+ const handleClick = React.useCallback((e) => {
264
+ if (editMode === reactPage.BuilderEditMode.CONTENT)
265
+ e.stopPropagation();
266
+ }, [editMode]);
267
+ const handleBlur = React.useCallback((e) => {
268
+ var _a;
269
+ if (e.relatedTarget == null)
270
+ return;
271
+ if (((_a = e.relatedTarget) == null ? void 0 : _a.getAttribute("contenteditable")) === "true")
272
+ isPreservingFocus.current = false;
273
+ }, []);
274
+ const handleOnChange = React.useCallback((value) => {
275
+ control == null ? void 0 : control.onChange(value);
276
+ }, [control]);
277
+ return /* @__PURE__ */ jsxRuntime.jsx(slateReact.Slate, {
278
+ editor,
279
+ onChange: handleOnChange,
280
+ value: initialValue,
281
+ children: /* @__PURE__ */ jsxRuntime.jsx(slateReact.Editable, {
282
+ renderLeaf,
283
+ renderElement,
284
+ onFocus: handleFocus,
285
+ onKeyDown: handleKeyDown,
286
+ onKeyUp: handleKeyUp,
287
+ onClick: handleClick,
288
+ onBlur: handleBlur,
289
+ readOnly: editMode !== reactPage.BuilderEditMode.CONTENT,
290
+ placeholder: "Write some text..."
291
+ })
292
+ });
293
+ }
294
+ exports.EditableTextV2 = EditableTextV2;
295
+ exports["default"] = EditableTextV2;
43
296
  //# sourceMappingURL=index.cjs9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs9.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
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/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 { cx } from '@emotion/css'\nimport { RenderElementProps } from 'slate-react'\nimport {\n RichTextV2ControlDefinition,\n RichTextV2Plugin,\n RichTextV2Mode,\n} from '../../../../../controls'\nimport { BlockType } from '../../../../../slate'\nimport { useStyle } from '../../../use-style'\nimport { ControlValue } from '../../control'\n\ntype RichTextV2ElementProps = RenderElementProps & {\n definition: RichTextV2ControlDefinition\n plugins: RichTextV2Plugin[]\n}\n\nexport function RichTextV2Element({ definition, plugins, ...props }: RichTextV2ElementProps) {\n const blockStyles = [useStyle({ margin: 0 })]\n\n function initialRenderElement(props: RenderElementProps) {\n switch (props.element.type) {\n case BlockType.Default:\n default:\n if (definition.config.mode === RichTextV2Mode.Inline) {\n return (\n <span {...props.attributes} className={cx(...blockStyles)}>\n {props.children}\n </span>\n )\n }\n\n return (\n <p {...props.attributes} className={cx(...blockStyles)}>\n {props.children}\n </p>\n )\n }\n }\n\n const renderElement = plugins.reduce(\n (renderFn, plugin) => (props: RenderElementProps) => {\n const { control, renderElement } = plugin\n\n if (control?.definition == null || renderElement == null) return renderFn(props)\n\n if (control.getElementValue == null) 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, RichTextV2Plugin } from '../../../../../controls'\nimport { ControlValue } from '../../control'\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 {\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { Descendant, createEditor } from 'slate'\nimport isHotkey from 'is-hotkey'\nimport { withHistory, HistoryEditor } from 'slate-history'\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 { InlineModePlugin, withBuilder } from '../../../../../slate'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\nimport { BlockType } from '../../../../../slate'\nimport { RichTextV2Element } from './render-element'\nimport { RichTextV2Leaf } from './render-leaf'\n\nexport type RichTextV2ControlValue = ReactNode\n\nexport type Descriptors = { text?: RichTextV2ControlDefinition }\n\nconst defaultText: Descendant[] = [{ type: BlockType.Default, children: [{ text: '' }] }]\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 ...(definition?.config?.plugins ?? []),\n ...(definition?.config?.mode === RichTextV2Mode.Inline ? [InlineModePlugin] : []),\n ]\n return plugins\n }, [definition])\n\n const [editor] = useState(() =>\n plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n withBuilder(withHistory(withReact(createEditor()))),\n ),\n )\n\n const isPreservingFocus = useRef(false)\n useSyncDOMSelection(editor, isPreservingFocus)\n\n const editMode = useBuilderEditMode()\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 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 const initialValue = useMemo(() => text ?? defaultText, [text])\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 useEffect(() => {\n control?.setEditor(editor)\n control?.setDefaultValue(defaultText)\n }, [control, editor, defaultText])\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 HistoryEditor.redo(editor)\n if (isHotkey('mod+z', e)) return HistoryEditor.undo(editor)\n if (isHotkey('escape')(e)) {\n isPreservingFocus.current = false\n ReactEditor.blur(editor)\n control?.switchToBuildMode()\n }\n\n plugins.forEach(plugin => plugin?.onKeyDown?.(e, editor))\n },\n [control, plugins, editor],\n )\n\n const handleKeyUp = useCallback(\n (e: KeyboardEvent) => {\n if (editMode === BuilderEditMode.CONTENT) e.preventDefault()\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 const handleOnChange = useCallback(\n (value: Descendant[]) => {\n control?.onChange(value)\n },\n [control],\n )\n\n return (\n <Slate editor={editor} onChange={handleOnChange} 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","blockStyles","useStyle","margin","element","type","BlockType","Default","config","mode","RichTextV2Mode","Inline","attributes","cx","children","renderElement","reduce","renderFn","plugin","control","getElementValue","undefined","ControlValue","value","initialRenderElement","leaf","className","renderLeaf","getLeafValue","initialRenderLeaf","defaultText","text","useMemo","InlineModePlugin","useState","reduceRight","withPlugin","withBuilder","withHistory","withReact","createEditor","isPreservingFocus","useRef","useSyncDOMSelection","editMode","useBuilderEditMode","useEffect","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","useCallback","initialValue","BuilderEditMode","CONTENT","deselect","setEditor","setDefaultValue","handleFocus","select","handleKeyDown","isHotkey","HistoryEditor","redo","undo","blur","switchToBuildMode","forEach","onKeyDown","handleKeyUp","preventDefault","handleClick","stopPropagation","handleBlur","relatedTarget","getAttribute","handleOnChange","onChange","Slate","Editable"],"mappings":"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"}