@makeswift/runtime 0.8.6 → 0.8.8

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 (90) hide show
  1. package/dist/LiveProvider.cjs.js +4 -3
  2. package/dist/LiveProvider.cjs.js.map +1 -1
  3. package/dist/LiveProvider.es.js +5 -4
  4. package/dist/LiveProvider.es.js.map +1 -1
  5. package/dist/PreviewProvider.cjs.js +4 -3
  6. package/dist/PreviewProvider.cjs.js.map +1 -1
  7. package/dist/PreviewProvider.es.js +5 -4
  8. package/dist/PreviewProvider.es.js.map +1 -1
  9. package/dist/actions.es.js +1 -1
  10. package/dist/constants.cjs.js +6 -2
  11. package/dist/constants.cjs.js.map +1 -1
  12. package/dist/constants.es.js +8 -4
  13. package/dist/constants.es.js.map +1 -1
  14. package/dist/index.cjs.js +83 -50
  15. package/dist/index.cjs.js.map +1 -1
  16. package/dist/index.cjs5.js +260 -106
  17. package/dist/index.cjs5.js.map +1 -1
  18. package/dist/index.cjs7.js.map +1 -1
  19. package/dist/index.es.js +86 -52
  20. package/dist/index.es.js.map +1 -1
  21. package/dist/index.es5.js +260 -106
  22. package/dist/index.es5.js.map +1 -1
  23. package/dist/index.es7.js +1 -1
  24. package/dist/index.es7.js.map +1 -1
  25. package/dist/leaf.es.js +1 -1
  26. package/dist/next.es.js +1 -1
  27. package/dist/state/breakpoints.cjs.js +44 -10
  28. package/dist/state/breakpoints.cjs.js.map +1 -1
  29. package/dist/state/breakpoints.es.js +44 -10
  30. package/dist/state/breakpoints.es.js.map +1 -1
  31. package/dist/types/src/components/builtin/Form/components/Field/components/Checkbox/index.d.ts +1 -1
  32. package/dist/types/src/next/api-handler/handlers/manifest.d.ts +1 -0
  33. package/dist/types/src/next/api-handler/handlers/manifest.d.ts.map +1 -1
  34. package/dist/types/src/next/client.d.ts +4 -1
  35. package/dist/types/src/next/client.d.ts.map +1 -1
  36. package/dist/types/src/next/index.d.ts +3 -1
  37. package/dist/types/src/next/index.d.ts.map +1 -1
  38. package/dist/types/src/runtimes/react/components/LiveProvider.d.ts +3 -1
  39. package/dist/types/src/runtimes/react/components/LiveProvider.d.ts.map +1 -1
  40. package/dist/types/src/runtimes/react/components/PreviewProvider.d.ts +3 -1
  41. package/dist/types/src/runtimes/react/components/PreviewProvider.d.ts.map +1 -1
  42. package/dist/types/src/runtimes/react/index.d.ts +19 -5
  43. package/dist/types/src/runtimes/react/index.d.ts.map +1 -1
  44. package/dist/types/src/slate/BlockPlugin/clearBlockKeyForDevice.d.ts +2 -2
  45. package/dist/types/src/slate/BlockPlugin/clearBlockKeyForDevice.d.ts.map +1 -1
  46. package/dist/types/src/slate/BlockPlugin/index.d.ts +4 -0
  47. package/dist/types/src/slate/BlockPlugin/index.d.ts.map +1 -1
  48. package/dist/types/src/slate/BlockPlugin/setBlockKeyForDevice.d.ts +7 -4
  49. package/dist/types/src/slate/BlockPlugin/setBlockKeyForDevice.d.ts.map +1 -1
  50. package/dist/types/src/slate/BlockPlugin/types.d.ts +2 -2
  51. package/dist/types/src/slate/BlockPlugin/types.d.ts.map +1 -1
  52. package/dist/types/src/slate/BlockPlugin/unwrapInline.d.ts +4 -0
  53. package/dist/types/src/slate/BlockPlugin/unwrapInline.d.ts.map +1 -0
  54. package/dist/types/src/slate/BlockPlugin/wrapInline.d.ts +4 -0
  55. package/dist/types/src/slate/BlockPlugin/wrapInline.d.ts.map +1 -0
  56. package/dist/types/src/slate/ListPlugin/toggleList.d.ts +2 -1
  57. package/dist/types/src/slate/ListPlugin/toggleList.d.ts.map +1 -1
  58. package/dist/types/src/slate/ListPlugin/unwrapList.d.ts +6 -2
  59. package/dist/types/src/slate/ListPlugin/unwrapList.d.ts.map +1 -1
  60. package/dist/types/src/slate/ListPlugin/utils/getSelectedListItems.d.ts +0 -1
  61. package/dist/types/src/slate/ListPlugin/utils/getSelectedListItems.d.ts.map +1 -1
  62. package/dist/types/src/slate/ListPlugin/wrapList.d.ts +2 -1
  63. package/dist/types/src/slate/ListPlugin/wrapList.d.ts.map +1 -1
  64. package/dist/types/src/slate/TypographyPlugin/clearActiveTypographyStyle.d.ts +6 -2
  65. package/dist/types/src/slate/TypographyPlugin/clearActiveTypographyStyle.d.ts.map +1 -1
  66. package/dist/types/src/slate/TypographyPlugin/clearDeviceActiveTypography.d.ts +6 -2
  67. package/dist/types/src/slate/TypographyPlugin/clearDeviceActiveTypography.d.ts.map +1 -1
  68. package/dist/types/src/slate/TypographyPlugin/detachActiveTypography.d.ts +6 -2
  69. package/dist/types/src/slate/TypographyPlugin/detachActiveTypography.d.ts.map +1 -1
  70. package/dist/types/src/slate/TypographyPlugin/index.d.ts.map +1 -1
  71. package/dist/types/src/slate/TypographyPlugin/setActiveTypographyId.d.ts +6 -2
  72. package/dist/types/src/slate/TypographyPlugin/setActiveTypographyId.d.ts.map +1 -1
  73. package/dist/types/src/slate/TypographyPlugin/setActiveTypographyStyle.d.ts +6 -2
  74. package/dist/types/src/slate/TypographyPlugin/setActiveTypographyStyle.d.ts.map +1 -1
  75. package/dist/types/src/slate/selectors.d.ts +19 -0
  76. package/dist/types/src/slate/selectors.d.ts.map +1 -0
  77. package/dist/types/src/slate/utils/editor.d.ts.map +1 -1
  78. package/dist/types/src/slate/utils/element.d.ts +2 -1
  79. package/dist/types/src/slate/utils/element.d.ts.map +1 -1
  80. package/dist/types/src/slate/utils/unhangRange.d.ts +10 -0
  81. package/dist/types/src/slate/utils/unhangRange.d.ts.map +1 -0
  82. package/dist/types/src/state/modules/breakpoints.d.ts +3 -4
  83. package/dist/types/src/state/modules/breakpoints.d.ts.map +1 -1
  84. package/dist/types/src/state/modules/breakpoints.test.d.ts +2 -0
  85. package/dist/types/src/state/modules/breakpoints.test.d.ts.map +1 -0
  86. package/dist/types/src/state/react-page.d.ts +2 -1
  87. package/dist/types/src/state/react-page.d.ts.map +1 -1
  88. package/dist/types/src/utils/isNonNullable.d.ts +2 -0
  89. package/dist/types/src/utils/isNonNullable.d.ts.map +1 -0
  90. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs5.js","sources":["../src/slate/ListPlugin/constants.ts","../src/slate/utils/element.ts","../src/slate/utils/editor.ts","../src/slate/ListPlugin/utils/filterForSubtreeRoots.ts","../src/slate/ListPlugin/utils/location.ts","../src/slate/ListPlugin/utils/getSelectedListItems.ts","../src/slate/ListPlugin/indent.ts","../src/slate/ListPlugin/dedent.ts","../src/slate/ListPlugin/unwrapList.ts","../src/slate/ListPlugin/wrapList.ts","../src/slate/ListPlugin/toggleList.ts","../src/slate/ListPlugin/index.ts","../src/slate/TypographyPlugin/clearActiveTypographyStyle.ts","../src/slate/TypographyPlugin/clearDeviceActiveTypography.ts","../src/slate/TypographyPlugin/detachActiveTypography.ts","../src/slate/TypographyPlugin/setActiveTypographyId.ts","../src/slate/TypographyPlugin/setActiveTypographyStyle.ts","../src/slate/TypographyPlugin/index.ts","../src/slate/BlockPlugin/setBlockKeyForDevice.ts","../src/slate/BlockPlugin/clearBlockKeyForDevice.ts","../src/slate/BlockPlugin/index.ts"],"sourcesContent":["export const LIST_ITEM_CHILD_POSITION = 0\nexport const LIST_ITEM_LIST_POSITION = 1\n","import { Node, Element } from 'slate'\nimport {\n BlockType,\n Block,\n ParagraphElement,\n OrderedListElement,\n UnorderedListElement,\n ListItemElement,\n ListItemChildElement,\n Inline,\n InlineType,\n} from '../../controls'\n\nexport const ElementUtils = {\n isBlock(node: Node): node is Block {\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.ListItem) ||\n Element.isElementType(node, BlockType.ListItemChild))\n )\n },\n isInline(node: Node): node is Inline {\n return (\n Element.isElement(node) &&\n (Element.isElementType(node, InlineType.Link) ||\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 isParagraph(node: Node): node is ParagraphElement {\n return Element.isElementType(node, BlockType.Paragraph)\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.createText()],\n type: BlockType.ListItem,\n }\n },\n createListItemChild(): Block {\n return {\n children: [this.createText()],\n type: BlockType.ListItemChild,\n }\n },\n}\n","import { Path, Editor, NodeEntry } from 'slate'\nimport { ListElement, ListItemElement } from '../../controls'\nimport { ElementUtils } from './element'\n\nexport const EditorUtils = {\n getFirstAncestorList(editor: Editor, path: Path): NodeEntry<ListElement> | null {\n const parentList = Editor.above(editor, {\n at: path,\n match: (node): node is ListElement => ElementUtils.isList(node),\n })\n return parentList ?? null\n },\n getFirstAncestorListItem(editor: Editor, path: Path): NodeEntry<ListItemElement> | null {\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 },\n}\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 { 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\nexport function getSelectedLists(editor: Editor): NodeEntry<Element>[] {\n if (!editor.selection) return []\n\n const start = LocationUtils.getStartPath(editor.selection)\n const lists = Editor.nodes(editor, {\n at: editor.selection,\n match: node => ElementUtils.isList(node),\n })\n const firstAncestorPath = EditorUtils.getFirstAncestorList(editor, start)?.[1] ?? []\n\n return Array.from(lists).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, Transforms, Path, Node } from 'slate'\nimport { BlockType } from '../../controls'\nimport { EditorUtils } from '../utils/editor'\nimport { LIST_ITEM_CHILD_POSITION, LIST_ITEM_LIST_POSITION } from './constants'\nimport { filterForSubtreeRoots } from './utils/filterForSubtreeRoots'\nimport { getSelectedListItems } from './utils/getSelectedListItems'\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\nexport function unwrapList(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 unwrapPath(editor, ref.current)\n }\n ref.unref()\n })\n}\n","import { Editor, Element, Transforms } from 'slate'\nimport { BlockType } from '../../controls'\nimport { ElementUtils } from '../utils/element'\n\ntype WrapListOptions = {\n type: typeof BlockType.UnorderedList | typeof BlockType.OrderedList\n}\n\nexport function wrapList(\n editor: Editor,\n options: WrapListOptions = { type: BlockType.UnorderedList },\n) {\n if (!editor.selection) return\n\n const nonListEntries = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\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 at: path,\n })\n Transforms.wrapNodes(editor, ElementUtils.createList(options.type), {\n at: path,\n })\n })\n }\n ref.unref()\n })\n}\n","import { Editor, Node, Path, Transforms } from 'slate'\nimport { BlockType } from '../../controls'\nimport { ElementUtils } from '../utils/element'\nimport { unwrapList } from './unwrapList'\nimport { LocationUtils } from './utils/location'\nimport { wrapList } from './wrapList'\n\ntype ToggleListOptions = {\n type: typeof BlockType.UnorderedList | typeof BlockType.OrderedList\n}\n\nexport function toggleList(\n editor: Editor,\n options: ToggleListOptions = { type: BlockType.UnorderedList },\n) {\n if (!editor.selection) return\n const start = LocationUtils.getStartPath(editor.selection)\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 })\n }\n\n if (ancestor.type === options.type) {\n unwrapList(editor)\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 isHotkey from 'is-hotkey'\nimport { LIST_ITEM_CHILD_POSITION } from './constants'\nimport { EditorUtils } from '../utils/editor'\nimport { ElementUtils } from '../utils/element'\nimport { dedent } from './dedent'\nimport { indent } from './indent'\nimport { toggleList } from './toggleList'\nimport { unwrapList } from './unwrapList'\nimport { wrapList } from './wrapList'\nimport { BlockType } from '../../controls'\n\nexport const List = {\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 List.dedent(editor)\n }\n\n if (isHotkey('tab', e)) {\n e.preventDefault()\n List.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 List.dedent(editor)\n } else if (list) {\n List.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 List.dedent(editor)\n } else {\n List.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 withList(editor: Editor) {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\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.isParagraph(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.forEach(([_, childPath], index) => {\n Transforms.moveNodes(editor, {\n at: childPath,\n to: [...nodePath, nodeChildren.length + index],\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","import { Editor, Transforms, Text } from 'slate'\nimport { RichTextTypography } from '../../controls'\n\nexport function clearActiveTypographyStyle(editor: Editor) {\n if (!editor.selection) return\n\n // Due to the nested nature of `typography` I can't just call a single `Transforms.setNodes` on our selection\n const textNodes = Editor.nodes(editor, {\n at: editor.selection,\n match: node => Text.isText(node),\n })\n\n for (const [node, path] of textNodes) {\n if (Text.isText(node)) {\n const typography: RichTextTypography = {\n ...node.typography,\n style: [],\n }\n\n Transforms.setNodes(\n editor,\n {\n typography,\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Transforms, Text } from 'slate'\nimport { RichTextTypography } from '../../controls'\n\nexport function clearDeviceActiveTypography(editor: Editor, currentDeviceId: string) {\n if (!editor.selection) return\n\n const textNodes = Editor.nodes(editor, {\n at: editor.selection,\n match: node => Text.isText(node),\n })\n\n for (const [node, path] of textNodes) {\n if (Text.isText(node)) {\n const typography: RichTextTypography = {\n ...node.typography,\n style: node?.typography?.style.filter(({ deviceId }) => deviceId !== currentDeviceId) ?? [],\n }\n\n Transforms.setNodes(\n editor,\n {\n typography,\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Transforms, Text } from 'slate'\nimport { RichTextTypography } from '../../controls'\n\nexport function detachActiveTypography(editor: Editor, value: RichTextTypography['style']) {\n if (!editor.selection) return\n\n const textNodes = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: node => Text.isText(node),\n }),\n )\n\n textNodes.forEach(([node, path]) => {\n if (Text.isText(node)) {\n Transforms.setNodes(\n editor,\n {\n typography: {\n style: value,\n },\n },\n { at: path },\n )\n }\n })\n}\n","import { Editor, Transforms, Text } from 'slate'\n\nexport function setActiveTypographyId(editor: Editor, id: string) {\n Transforms.setNodes(\n editor,\n {\n typography: {\n id,\n style: [],\n },\n },\n {\n match: node => Text.isText(node),\n },\n )\n}\n","import { Editor, Transforms, Text } from 'slate'\nimport { RichTextTypography } from '../../controls'\nimport { Breakpoints, findBreakpointOverride } from '../../state/modules/breakpoints'\n\nexport function setActiveTypographyStyle(\n editor: Editor,\n breakpoints: Breakpoints,\n deviceId: string,\n prop: string,\n value?: unknown,\n) {\n if (!editor.selection) return\n\n const textNodes = Editor.nodes(editor, {\n at: editor.selection,\n match: node => Text.isText(node),\n })\n\n for (const [node, path] of textNodes) {\n if (Text.isText(node)) {\n const deviceOverrides = node?.typography?.style ?? []\n const deviceStyle = findBreakpointOverride(\n breakpoints,\n deviceOverrides,\n deviceId,\n v => v,\n ) || { value: {} }\n const nextDeviceStyle = {\n deviceId,\n value: { ...deviceStyle.value, [prop]: value },\n }\n const nextTypography: RichTextTypography = {\n ...node.typography,\n style: [...deviceOverrides.filter(v => v.deviceId !== deviceId), nextDeviceStyle],\n }\n\n Transforms.setNodes(\n editor,\n {\n typography: nextTypography,\n },\n { at: path },\n )\n }\n }\n}\n","import { Editor, Text, Transforms } from 'slate'\nimport { clearActiveTypographyStyle } from './clearActiveTypographyStyle'\nimport { clearDeviceActiveTypography } from './clearDeviceActiveTypography'\nimport { detachActiveTypography } from './detachActiveTypography'\nimport { setActiveTypographyId } from './setActiveTypographyId'\nimport { setActiveTypographyStyle } from './setActiveTypographyStyle'\n\nexport const Typography = {\n setActiveTypographyId,\n setActiveTypographyStyle,\n clearActiveTypographyStyle,\n clearDeviceActiveTypography,\n detachActiveTypography,\n}\n\nexport function withTypography(editor: Editor) {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\n // Normalization typography with empty style and id to be text\n if (\n Text.isText(normalizationNode) &&\n normalizationNode?.typography?.id == null &&\n normalizationNode?.typography?.style.length === 0\n ) {\n Transforms.unsetNodes(editor, 'typography', { at: normalizationPath })\n return\n }\n\n normalizeNode(entry)\n }\n\n return editor\n}\n","import { Editor, Transforms } from 'slate'\nimport { Device } from '../../controls/types'\nimport { Breakpoints, findBreakpointOverride } from '../../state/modules/breakpoints'\nimport { ElementUtils } from '../utils/element'\nimport { EditableBlockKey, EditableBlockValue } from './types'\n\nexport function setBlockKeyForDevice(\n editor: Editor,\n breakpoints: Breakpoints,\n deviceId: Device,\n key: EditableBlockKey,\n value: EditableBlockValue,\n) {\n if (!editor.selection) return\n\n const rootElements = Editor.nodes(editor, {\n match: (_, path) => path.length === 1,\n at: Editor.unhangRange(editor, editor.selection),\n })\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 { Device } from '../../controls/types'\nimport { ElementUtils } from '../utils/element'\nimport { EditableBlockKey } from './types'\n\nexport function clearBlockKeyForDevice(editor: Editor, deviceId: Device, key: EditableBlockKey) {\n if (!editor.selection) return\n\n const rootElements = Editor.nodes(editor, {\n match: (_, path) => path.length === 1,\n at: Editor.unhangRange(editor, editor.selection),\n })\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 { setBlockKeyForDevice } from './setBlockKeyForDevice'\nimport { clearBlockKeyForDevice } from './clearBlockKeyForDevice'\nimport { ElementUtils } from '../utils/element'\n\nexport const Block = {\n setBlockKeyForDevice: setBlockKeyForDevice,\n clearBlockKeyForDevice: clearBlockKeyForDevice,\n}\n\nexport function withBlock(editor: Editor) {\n const { normalizeNode } = editor\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 normalizeNode(entry)\n }\n\n return editor\n}\n"],"names":["Element","BlockType","InlineType","Editor","Path","Range","Point","Node","Transforms","isHotkey","Text","findBreakpointOverride"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs5.js","sources":["../src/slate/ListPlugin/constants.ts","../src/slate/utils/element.ts","../src/slate/utils/editor.ts","../src/slate/ListPlugin/utils/filterForSubtreeRoots.ts","../src/slate/ListPlugin/utils/location.ts","../src/slate/ListPlugin/utils/getSelectedListItems.ts","../src/slate/ListPlugin/indent.ts","../src/slate/ListPlugin/dedent.ts","../src/slate/ListPlugin/unwrapList.ts","../src/slate/ListPlugin/wrapList.ts","../src/slate/ListPlugin/toggleList.ts","../src/slate/ListPlugin/index.ts","../src/slate/TypographyPlugin/clearActiveTypographyStyle.ts","../src/slate/TypographyPlugin/clearDeviceActiveTypography.ts","../src/slate/TypographyPlugin/detachActiveTypography.ts","../src/slate/TypographyPlugin/setActiveTypographyId.ts","../src/slate/TypographyPlugin/setActiveTypographyStyle.ts","../src/slate/TypographyPlugin/index.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/BlockPlugin/index.ts"],"sourcesContent":["export const LIST_ITEM_CHILD_POSITION = 0\nexport const LIST_ITEM_LIST_POSITION = 1\n","import { Node, Element } from 'slate'\nimport {\n RootBlock,\n BlockType,\n Block,\n Inline,\n InlineType,\n ParagraphElement,\n OrderedListElement,\n UnorderedListElement,\n ListItemElement,\n ListItemChildElement,\n} from '../../controls'\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 )\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 isParagraph(node: Node): node is ParagraphElement {\n return Element.isElementType(node, BlockType.Paragraph)\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 { Path, Editor, NodeEntry } from 'slate'\n\nimport { ElementUtils } from './element'\nimport { ListElement, ListItemElement } from '../../controls'\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","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 { 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, 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 '../../controls'\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 '../../controls'\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 { 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 '../../controls'\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 isHotkey from 'is-hotkey'\nimport { LIST_ITEM_CHILD_POSITION } from './constants'\nimport { EditorUtils } from '../utils/editor'\nimport { ElementUtils } from '../utils/element'\nimport { dedent } from './dedent'\nimport { indent } from './indent'\nimport { toggleList } from './toggleList'\nimport { unwrapList } from './unwrapList'\nimport { wrapList } from './wrapList'\nimport { BlockType } from '../../controls'\n\nexport const List = {\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 List.dedent(editor)\n }\n\n if (isHotkey('tab', e)) {\n e.preventDefault()\n List.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 List.dedent(editor)\n } else if (list) {\n List.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 List.dedent(editor)\n } else {\n List.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 withList(editor: Editor) {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\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.isParagraph(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","import { Editor, Transforms, Text, Range } from 'slate'\nimport { RichTextTypography } from '../../controls'\n\ntype ClearActiveTypographyStyleOptions = {\n at?: Range\n}\n\nexport function clearActiveTypographyStyle(\n editor: Editor,\n options?: ClearActiveTypographyStyleOptions,\n) {\n Editor.withoutNormalizing(editor, () => {\n const at = options?.at ?? editor.selection\n if (!at) return\n const atRef = Editor.rangeRef(editor, at)\n\n if (atRef.current) {\n Transforms.setNodes(\n editor,\n {\n slice: true,\n },\n {\n at: atRef.current,\n match: node => Text.isText(node),\n split: Range.isExpanded(atRef.current),\n },\n )\n }\n\n if (atRef.current) {\n const textNodes = Array.from(\n Editor.nodes(editor, {\n at: atRef.current,\n match: node => Text.isText(node) && node.slice === true,\n }),\n )\n\n for (const [node, path] of textNodes) {\n if (Text.isText(node)) {\n const typography: RichTextTypography = {\n ...node.typography,\n style: [],\n }\n\n Transforms.setNodes(\n editor,\n {\n typography,\n },\n { at: path },\n )\n }\n }\n }\n\n atRef.unref()\n })\n}\n","import { Editor, Transforms, Text, Range } from 'slate'\nimport { RichTextTypography } from '../../controls'\n\ntype ClearDeviceActiveTypographyOptions = {\n at?: Range\n}\n\nexport function clearDeviceActiveTypography(\n editor: Editor,\n currentDeviceId: string,\n options?: ClearDeviceActiveTypographyOptions,\n) {\n Editor.withoutNormalizing(editor, () => {\n const at = options?.at ?? editor.selection\n if (!at) return\n const atRef = Editor.rangeRef(editor, at)\n\n if (atRef.current) {\n Transforms.setNodes(\n editor,\n {\n slice: true,\n },\n {\n at: atRef.current,\n match: node => Text.isText(node),\n split: Range.isExpanded(atRef.current),\n },\n )\n }\n\n if (atRef.current) {\n const textNodes = Array.from(\n Editor.nodes(editor, {\n at: atRef.current,\n match: node => Text.isText(node) && node.slice === true,\n }),\n )\n\n for (const [node, path] of textNodes) {\n if (Text.isText(node)) {\n const typography: RichTextTypography = {\n ...node.typography,\n style:\n node?.typography?.style.filter(({ deviceId }) => deviceId !== currentDeviceId) ?? [],\n }\n\n Transforms.setNodes(\n editor,\n {\n typography,\n },\n { at: path },\n )\n }\n }\n }\n\n atRef.unref()\n })\n}\n","import { Editor, Transforms, Text, Range } from 'slate'\nimport { RichTextTypography } from '../../controls'\n\ntype SetActiveTypographyIdOptions = {\n at?: Range\n}\n\nexport function detachActiveTypography(\n editor: Editor,\n value: RichTextTypography['style'],\n options?: SetActiveTypographyIdOptions,\n) {\n Editor.withoutNormalizing(editor, () => {\n const at = options?.at ?? editor.selection\n if (!at) return\n const atRef = Editor.rangeRef(editor, at)\n\n if (atRef.current) {\n Transforms.setNodes(\n editor,\n {\n slice: true,\n },\n {\n at: atRef.current,\n match: node => Text.isText(node),\n split: Range.isExpanded(atRef.current),\n },\n )\n }\n\n if (atRef.current) {\n const textNodes = Array.from(\n Editor.nodes(editor, {\n at: atRef.current,\n match: node => Text.isText(node) && node.slice === true,\n }),\n )\n\n for (const [node, path] of textNodes) {\n if (Text.isText(node)) {\n Transforms.setNodes(\n editor,\n {\n typography: {\n style: value,\n },\n },\n { at: path },\n )\n }\n }\n }\n\n atRef.unref()\n })\n}\n","import { Editor, Transforms, Text, Range } from 'slate'\n\ntype SetActiveTypographyIdOptions = {\n at?: Range\n}\n\nexport function setActiveTypographyId(\n editor: Editor,\n id?: string,\n options?: SetActiveTypographyIdOptions,\n) {\n const at = options?.at ?? editor.selection\n if (!at) return\n Transforms.setNodes(\n editor,\n {\n typography: {\n id,\n style: [],\n },\n },\n {\n at,\n match: node => Text.isText(node),\n split: Range.isExpanded(at),\n },\n )\n}\n","import { Editor, Transforms, Text, Range } from 'slate'\nimport { RichTextTypography } from '../../controls'\nimport { Breakpoints, findBreakpointOverride, BreakpointId } from '../../state/modules/breakpoints'\n\ntype SetActiveTypographyStyleOptions = {\n at?: Range\n}\n\nexport function setActiveTypographyStyle(\n editor: Editor,\n breakpoints: Breakpoints,\n deviceId: string,\n prop: string,\n value?: unknown,\n options?: SetActiveTypographyStyleOptions,\n) {\n Editor.withoutNormalizing(editor, () => {\n const at = options?.at ?? editor.selection\n if (!at) return\n const atRef = Editor.rangeRef(editor, at)\n\n if (atRef.current) {\n Transforms.setNodes(\n editor,\n {\n slice: true,\n },\n {\n at: atRef.current,\n match: node => Text.isText(node),\n split: Range.isExpanded(atRef.current),\n },\n )\n }\n\n if (atRef.current) {\n const textNodes = Array.from(\n Editor.nodes(editor, {\n at: atRef.current,\n match: node => Text.isText(node) && node.slice === true,\n }),\n )\n\n for (const [node, path] of textNodes) {\n if (Text.isText(node)) {\n const deviceOverrides = node?.typography?.style ?? []\n const deviceStyle = findBreakpointOverride(\n breakpoints,\n deviceOverrides,\n deviceId as BreakpointId,\n v => v,\n ) || {\n value: {},\n }\n const nextDeviceStyle = {\n deviceId,\n value: { ...deviceStyle.value, [prop]: value },\n }\n\n const nextTypography: RichTextTypography = {\n ...node.typography,\n style: [...deviceOverrides.filter(v => v.deviceId !== deviceId), nextDeviceStyle],\n }\n\n Transforms.setNodes(\n editor,\n {\n typography: nextTypography,\n },\n { at: path },\n )\n }\n }\n }\n\n atRef.unref()\n })\n}\n","import { Editor, Text, Transforms } from 'slate'\nimport { clearActiveTypographyStyle } from './clearActiveTypographyStyle'\nimport { clearDeviceActiveTypography } from './clearDeviceActiveTypography'\nimport { detachActiveTypography } from './detachActiveTypography'\nimport { setActiveTypographyId } from './setActiveTypographyId'\nimport { setActiveTypographyStyle } from './setActiveTypographyStyle'\n\nexport const Typography = {\n setActiveTypographyId,\n setActiveTypographyStyle,\n clearActiveTypographyStyle,\n clearDeviceActiveTypography,\n detachActiveTypography,\n}\n\nexport function withTypography(editor: Editor) {\n const { normalizeNode } = editor\n editor.normalizeNode = entry => {\n const [normalizationNode, normalizationPath] = entry\n if (\n Text.isText(normalizationNode) &&\n normalizationNode?.typography?.id == null &&\n normalizationNode?.typography?.style.length === 0\n ) {\n Transforms.unsetNodes(editor, 'typography', { at: normalizationPath })\n return\n }\n\n if (Text.isText(normalizationNode) && normalizationNode?.slice != null) {\n Transforms.unsetNodes(editor, 'slice', { at: normalizationPath })\n return\n }\n\n normalizeNode(entry)\n }\n\n return editor\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 {\n RootBlock,\n Inline,\n RootBlockType,\n ResponsiveBlockTextAlignment,\n BlockTextAlignment,\n RichTextTypography,\n} from '../controls'\nimport { Breakpoints, BreakpointId, findBreakpointOverride } from '../state/modules/breakpoints'\nimport deepEqual from '../utils/deepEqual'\nimport keys from '../utils/keys'\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 '../../controls'\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 '../../controls'\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 { Editor, Transforms } from 'slate'\nimport { setBlockKeyForDevice } from './setBlockKeyForDevice'\nimport { clearBlockKeyForDevice } from './clearBlockKeyForDevice'\nimport { wrapInline } from './wrapInline'\nimport { unwrapInline } from './unwrapInline'\nimport { ElementUtils } from '../utils/element'\n\nexport const Block = {\n setBlockKeyForDevice,\n clearBlockKeyForDevice,\n wrapInline,\n unwrapInline,\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 normalizeNode(entry)\n }\n\n return editor\n}\n"],"names":["Element","BlockType","InlineType","Editor","Path","Range","Point","Node","Transforms","isHotkey","Text","findBreakpointOverride"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;ACahC,MAAM,eAAe;AAAA,EAC1B,YAAY,MAA+B;AACzC,WACEA,MAAAA,QAAQ,UAAU,IAAI,oBACb,cAAc,MAAMC,YAAU,UAAA,SAAS,KAC9CD,MAAAA,QAAQ,cAAc,MAAMC,YAAAA,UAAU,QAAQ,KAC9CD,MAAAA,QAAQ,cAAc,MAAMC,YAAAA,UAAU,QAAQ,KAC9CD,cAAQ,cAAc,MAAMC,YAAU,UAAA,QAAQ,KAC9CD,MAAAA,QAAQ,cAAc,MAAMC,YAAAA,UAAU,QAAQ,KAC9CD,MAAAA,QAAQ,cAAc,MAAMC,YAAAA,UAAU,QAAQ,KAC9CD,cAAQ,cAAc,MAAMC,YAAU,UAAA,QAAQ,KAC9CD,MAAAA,QAAQ,cAAc,MAAMC,YAAAA,UAAU,QAAQ,KAC9CD,MAAAA,QAAQ,cAAc,MAAMC,YAAAA,UAAU,UAAU,KAChDD,cAAQ,cAAc,MAAMC,YAAAA,UAAU,aAAa,KACnDD,MAAA,QAAQ,cAAc,MAAMC,sBAAU,WAAW;AAAA,EAEvD;AAAA,EACA,QAAQ,MAA2B;AACjC,WACED,cAAQ,UAAU,IAAI,KAChB,MAAA,YAAY,IAAI,KACpBA,cAAQ,cAAc,MAAMC,sBAAU,QAAQ,KAC9CD,cAAQ,cAAc,MAAMC,YAAAA,UAAU,aAAa;AAAA,EAEzD;AAAA,EACA,SAAS,MAA4B;AAEjC,WAAAD,cAAQ,cAAc,MAAME,uBAAW,IAAI,KAC3CF,MAAAA,QAAQ,cAAc,MAAME,YAAAA,WAAW,IAAI,KAC3CF,MAAQ,QAAA,cAAc,MAAME,YAAW,WAAA,SAAS,KAChDF,cAAQ,cAAc,MAAME,uBAAW,WAAW;AAAA,EAEtD;AAAA,EACA,4BAA4B,MAAY;AACtC,WAAO,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,gBAAgB,IAAI;AAAA,EACnF;AAAA,EACA,YAAY,MAAsC;AAChD,WAAOF,MAAQ,QAAA,cAAc,MAAMC,YAAA,UAAU,SAAS;AAAA,EACxD;AAAA,EACA,OAAO,MAA+D;AAElE,WAAAD,cAAQ,cAAc,MAAMC,YAAU,UAAA,WAAW,KACjDD,MAAQ,QAAA,cAAc,MAAMC,YAAA,UAAU,aAAa;AAAA,EAEvD;AAAA,EACA,WAAW,MAAqC;AAC9C,WAAOD,MAAQ,QAAA,cAAc,MAAMC,YAAA,UAAU,QAAQ;AAAA,EACvD;AAAA,EACA,gBAAgB,MAA0C;AACxD,WAAOD,MAAQ,QAAA,cAAc,MAAMC,YAAA,UAAU,aAAa;AAAA,EAC5D;AAAA,EACA,aAAa;AACJ,WAAA,EAAE,MAAM;EACjB;AAAA,EACA,kBAAkB;AACT,WAAA;AAAA,MACL,UAAU,CAAC,KAAK,YAAY;AAAA,MAC5B,MAAMA,YAAU,UAAA;AAAA,IAAA;AAAA,EAEpB;AAAA,EACA,WAAW,OAAkBA,YAAA,UAAU,eAAsB;AAC3D,WAAO,EAAE,UAAU,CAAC,KAAK,WAAY,CAAA,GAAG;EAC1C;AAAA,EACA,iBAAwB;AACf,WAAA;AAAA,MACL,UAAU,CAAC,KAAK,qBAAqB;AAAA,MACrC,MAAMA,YAAU,UAAA;AAAA,IAAA;AAAA,EAEpB;AAAA,EACA,sBAA6B;AACpB,WAAA;AAAA,MACL,UAAU,CAAC,KAAK,YAAY;AAAA,MAC5B,MAAMA,YAAU,UAAA;AAAA,IAAA;AAAA,EAEpB;AACF;ACpFO,MAAM,cAAc;AAAA,EACzB,qBAAqB,QAAgB,MAA2C;AAC1E,QAAA;AACI,YAAA,aAAaE,MAAAA,OAAO,MAAM,QAAQ;AAAA,QACtC,IAAI;AAAA,QACJ,OAAO,CAAC,SAA8B,aAAa,OAAO,IAAI;AAAA,MAAA,CAC/D;AACD,aAAO,kCAAc;AAAA,aACd;AACA,aAAA;AAAA,IACT;AAAA,EACF;AAAA,EACA,yBAAyB,QAAgB,MAA+C;AAClF,QAAA;AACI,YAAA,iBAAiBA,MAAAA,OAAO,MAAM,QAAQ;AAAA,QAC1C,IAAI;AAAA,QACJ,OAAO,CAAC,SAAkC,aAAa,WAAW,IAAI;AAAA,MAAA,CACvE;AAED,aAAO,0CAAkB;AAAA,aAClB;AACA,aAAA;AAAA,IACT;AAAA,EACF;AACF;AC1BO,+BAA+B,SAA+C;AACnF,SAAO,QAAQ,OACb,CAAC,CAAA,EAAG,cACF,CAACC,WAAK,UAAU,QAAQ,EAAE,KAAK,CAAY,aAAA;AAClC,WAAA,QAAQ,KAAK,CAAC,GAAG,UAAUA,MAAK,KAAA,OAAO,MAAM,QAAQ,CAAC;AAAA,EAC9D,CAAA,CACL;AACF;ACRO,MAAM,gBAAgB;AAAA,EAC3B,aAAa,UAA0B;AACjC,QAAAC,MAAA,MAAM,QAAQ,QAAQ;AAAU,aAAAA,YAAM,MAAM,QAAQ,EAAE;AACtD,QAAAC,MAAA,MAAM,QAAQ,QAAQ;AAAG,aAAO,SAAS;AACtC,WAAA;AAAA,EACT;AACF;ACFO,8BAA8B,QAAsC;;AACzE,MAAI,CAAC,OAAO;AAAW,WAAO;AAE9B,QAAM,QAAQ,cAAc,aAAa,OAAO,SAAS;AACnD,QAAA,YAAYH,MAAAA,OAAO,MAAM,QAAQ;AAAA,IACrC,IAAI,OAAO;AAAA,IACX,OAAO,CAAA,SAAQ,aAAa,WAAW,IAAI;AAAA,EAAA,CAC5C;AACD,QAAM,oBAAoB,wBAAY,yBAAyB,QAAQ,KAAK,MAAlD,mBAAsD,OAAtD,YAA4D;AAE/E,SAAA,MAAM,KAAK,SAAS,EAAE,OAAO,CAAC,SACnCC,MAAAA,KAAK,aAAa,OAAO,KAAK,EAAE,IAC5BA,WAAK,OAAO,KAAK,IAAI,iBAAiB,IACtC,CAACA,WAAK,QAAQ,OAAO,KAAK,EAAE,CAClC;AACF;ACfO,oBAAoB,QAAgB,MAAY;AACrD,QAAM,SAASG,MAAA,KAAK,OAAO,QAAQ,IAAI;AACnC,MAAA,CAAC,QAAQ,CAACH,MAAAA,KAAK,YAAY,IAAI,KAAK,CAAC,aAAa,OAAO,MAAM;AAAG;AAEhE,QAAA,cAAcA,MAAAA,KAAK,SAAS,IAAI;AAEtC,QAAM,wBAAwB,CAAC,GAAG,aAAa,uBAAuB;AACtE,QAAM,uBAAuBG,MAAA,KAAK,IAAI,QAAQ,qBAAqB;AAE5DJ,eAAA,mBAAmB,QAAQ,MAAM;AACtC,QAAI,CAAC,sBAAsB;AACzBK,YAAA,WAAW,YAAY,QAAQ,aAAa,WAAW,OAAO,IAAI,GAAG;AAAA,QACnE,IAAI;AAAA,MAAA,CACL;AAAA,IACH;AAEA,UAAM,oBAAoBD,MAAA,KAAK,IAAI,QAAQ,qBAAqB;AAE5D,QAAA,aAAa,OAAO,iBAAiB,GAAG;AAC1C,YAAM,QAAQ,uBAAuB,kBAAkB,SAAS,SAAS;AACzEC,YAAA,WAAW,UAAU,QAAQ;AAAA,QAC3B,IAAI;AAAA,QACJ,IAAI,CAAC,GAAG,uBAAuB,KAAK;AAAA,MAAA,CACrC;AAAA,IACH;AAAA,EAAA,CACD;AACH;AAEO,gBAAgB,QAAgB;AACrC,MAAI,CAAC,OAAO;AAAW;AAEjB,QAAA,YAAY,qBAAqB,MAAM;AACvC,QAAA,WAAW,sBAAsB,SAAS;AAC1C,QAAA,OAAO,SAAS,IAAI,CAAC,CAAC,GAAG,UAAUL,MAAO,OAAA,QAAQ,QAAQ,IAAI,CAAC;AAErE,OAAK,QAAQ,CAAO,QAAA;AAClB,QAAI,IAAI,SAAS;AACJ,iBAAA,QAAQ,IAAI,OAAO;AAAA,IAChC;AACA,QAAI,MAAM;AAAA,EAAA,CACX;AACH;ACzCA,oBAAoB,QAAgB,cAAoB;AACtD,QAAM,aAAa,YAAY,qBAAqB,QAAQ,YAAY;AACxE,QAAM,+BAA+B,YAAY,yBAAyB,QAAQ,YAAY;AAC1F,MAAA,CAAC,cAAc,CAAC;AAA8B;AAE5C,QAAA,CAAC,gBAAgB,kBAAkB;AACnC,QAAA,CAAC,GAAG,oCAAoC;AAExC,QAAA,mBAAmB,aAAa,aAAa,SAAS;AAC5D,QAAM,mBAAmB,eAAe,SAAS,MAAM,GAAG,gBAAgB;AAC1E,QAAM,eAAe,eAAe,SAAS,MAAM,mBAAmB,CAAC;AAEhEA,eAAA,mBAAmB,QAAQ,MAAM;AAEtC,iBAAa,QAAQ,MAAM;AACzB,YAAM,kBAAkB,CAAC,GAAG,gBAAgB,mBAAmB,CAAC;AAChE,iBAAW,QAAQ,eAAe;AAAA,IAAA,CACnC;AAEDK,UAAA,WAAW,UAAU,QAAQ;AAAA,MAC3B,IAAI;AAAA,MACJ,IAAIJ,MAAAA,KAAK,KAAK,gCAAgC;AAAA,IAAA,CAC/C;AAEG,QAAA,iBAAiB,WAAW,GAAG;AACjCI,YAAA,WAAW,YAAY,QAAQ,EAAE,IAAI,eAAgB,CAAA;AAAA,IACvD;AAAA,EAAA,CACD;AACH;AAEO,gBAAgB,QAAgB;AACrC,MAAI,CAAC,OAAO;AAAW;AAEjB,QAAA,YAAY,qBAAqB,MAAM;AACvC,QAAA,WAAW,sBAAsB,SAAS;AAC1C,QAAA,OAAO,SAAS,IAAI,CAAC,CAAC,GAAG,UAAUL,MAAO,OAAA,QAAQ,QAAQ,IAAI,CAAC;AAErE,OAAK,QAAQ,CAAO,QAAA;AAClB,QAAI,IAAI,SAAS;AACJ,iBAAA,QAAQ,IAAI,OAAO;AAAA,IAChC;AACA,QAAI,MAAM;AAAA,EAAA,CACX;AACH;AC1CO,oBAAoB,QAAgB,cAAoB;AAC7D,QAAM,aAAa,YAAY,qBAAqB,QAAQ,YAAY;AACxE,QAAM,+BAA+B,YAAY,yBAAyB,QAAQ,YAAY;AAE9F,MAAI,CAAC,cAAc;AAA8B;AAE1CA,eAAA,mBAAmB,QAAQ,MAAM;AACtC,UAAM,mBAAmB,CAAC,GAAG,cAAc,wBAAwB;AACnE,UAAM,yBAAyB,CAAC,GAAG,cAAc,uBAAuB;AAExE,QAAII,WAAK,IAAI,QAAQ,sBAAsB,GAAG;AACjCC,YAAAA,WAAA,SAAS,QAAQ,EAAE,MAAM,WAAW,GAAG,KAAA,GAAQ,EAAE,IAAI,uBAAwB,CAAA;AACxFA,YAAA,WAAW,UAAU,QAAQ,EAAE,IAAI,uBAAwB,CAAA;AAChDA,uBAAA,UAAU,QAAQ,EAAE,IAAIJ,MAAAA,KAAK,KAAK,YAAY,GAAG;AAAA,IAC9D;AAEA,QAAIG,WAAK,IAAI,QAAQ,gBAAgB,GAAG;AACtCC,YAAA,WAAW,SACT,QACA,EAAE,MAAMP,YAAAA,UAAU,aAClB;AAAA,QACE,IAAI;AAAA,MAAA,CAER;AACAO,YAAA,WAAW,UAAU,QAAQ,EAAE,IAAI,iBAAkB,CAAA;AACrDA,YAAA,WAAW,UAAU,QAAQ,EAAE,IAAI,aAAc,CAAA;AAAA,IACnD;AAAA,EAAA,CACD;AACH;AAMO,oBAAoB,QAAgB,SAA6B;;AAChE,QAAA,KAAK,yCAAS,OAAT,YAAe,OAAO;AACjC,MAAI,CAAC;AAAI;AAET,QAAM,YAAY,MAAM,KACtBL,MAAAA,OAAO,MAAM,QAAQ;AAAA,IACnB;AAAA,IACA,OAAO,CAAQ,SAAA;AACb,aAAOH,MAAAA,QAAQ,UAAU,IAAI,KAAK,aAAa,WAAW,IAAI;AAAA,IAChE;AAAA,EACD,CAAA,CACH;AACM,QAAA,WAAW,sBAAsB,SAAS;AAC1C,QAAA,OAAO,SAAS,IAAI,CAAC,CAAC,GAAG,UAAUG,MAAO,OAAA,QAAQ,QAAQ,IAAI,CAAC;AAErE,OAAK,QAAQ,CAAO,QAAA;AAClB,QAAI,IAAI,SAAS;AACJ,iBAAA,QAAQ,IAAI,OAAO;AAAA,IAChC;AACA,QAAI,MAAM;AAAA,EAAA,CACX;AACH;ACrDO,kBACL,QACA,UAA2B,EAAE,MAAMF,YAAAA,UAAU,iBAC7C;;AACM,QAAA,KAAK,cAAQ,OAAR,YAAc,OAAO;AAChC,MAAI,CAAC;AAAI;AAET,QAAM,iBAAiB,MAAM,KAC3BE,MAAAA,OAAO,MAAM,QAAQ;AAAA,IACnB;AAAA,IACA,OAAO,CAAQ,SAAA;AACb,aAAOH,MAAAA,QAAQ,UAAU,IAAI,KAAK,aAAa,4BAA4B,IAAI;AAAA,IACjF;AAAA,EACD,CAAA,CACH;AAEM,QAAA,OAAO,eAAe,IAAI,CAAC,CAAC,GAAG,UAAUG,MAAO,OAAA,QAAQ,QAAQ,IAAI,CAAC;AAE3E,OAAK,QAAQ,CAAO,QAAA;AAClB,UAAM,OAAO,IAAI;AACjB,QAAI,MAAM;AACDA,mBAAA,mBAAmB,QAAQ,MAAM;AACtCK,cAAA,WAAW,SACT,QACA,EAAE,MAAMP,YAAAA,UAAU,iBAClB;AAAA,UACE,IAAI;AAAA,QAAA,CAER;AACAO,cAAAA,WAAW,UAAU,QAAQ,aAAa,eAAA,GAAkB;AAAA,UAC1D,OAAO,CAAA,SAAQ,aAAa,gBAAgB,IAAI;AAAA,UAChD,IAAI;AAAA,QAAA,CACL;AACDA,cAAA,WAAW,UAAU,QAAQ,aAAa,WAAW,QAAQ,IAAI,GAAG;AAAA,UAClE,IAAI;AAAA,QAAA,CACL;AAAA,MAAA,CACF;AAAA,IACH;AACA,QAAI,MAAM;AAAA,EAAA,CACX;AACH;ACrCO,oBACL,QACA,UAA6B,EAAE,MAAMP,YAAAA,UAAU,iBAC/C;;AACM,QAAA,KAAK,cAAQ,OAAR,YAAc,OAAO;AAChC,MAAI,MAAM;AAAM;AACV,QAAA,QAAQ,cAAc,aAAa,EAAE;AAC3C,QAAM,eAAeG,MAAAA,KAAK,UAAU,KAAK,EAAE,GAAG,CAAC;AAC/C,MAAI,CAAC,gBAAgB,CAACG,MAAAA,KAAK,IAAI,QAAQ,YAAY;AAAG;AACtD,QAAM,WAAWA,MAAA,KAAK,IAAI,QAAQ,YAAY;AAE9C,MAAI,CAAC,aAAa,OAAO,QAAQ,GAAG;AAClC,WAAO,SAAS,QAAQ,EAAE,MAAM,QAAQ,MAAM,IAAI;AAAA,EACpD;AAEI,MAAA,SAAS,SAAS,QAAQ,MAAM;AACvB,eAAA,QAAQ,EAAE,GAAA,CAAI;AAAA,EAAA,OACpB;AACMC,UAAAA,WAAA,SAAS,QAAQ,EAAE,MAAM,QAAQ,QAAQ,EAAE,IAAI,aAAA,CAAc;AAAA,EAC1E;AACF;ACnBO,MAAM,OAAO;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,mBAAmB,GAAkB,QAAgB;AAC1D,MACE,CAAC,OAAO,aACR,MAAM,KAAKL,MAAA,OAAO,MAAM,QAAQ,EAAE,OAAO,CAAA,SAAQ,aAAa,WAAW,IAAI,GAAG,CAAC,EAAE,WAAW;AAE9F;AAEE,MAAAM,kBAAA,WAAS,aAAa,CAAC,GAAG;AAC5B,MAAE,eAAe;AACjB,SAAK,OAAO,MAAM;AAAA,EACpB;AAEI,MAAAA,kBAAA,WAAS,OAAO,CAAC,GAAG;AACtB,MAAE,eAAe;AACjB,SAAK,OAAO,MAAM;AAAA,EACpB;AAEI,MAAAA,kBAAA,WAAS,aAAa,CAAC,GAAG;AAC5B,QAAI,CAAC,OAAO;AAAW;AACnB,QAAAJ,YAAM,WAAW,OAAO,SAAS;AAAG;AACxC,UAAM,WAAW,YAAY,yBAAyB,QAAQ,OAAO,UAAU,OAAO,IAAI;AAC1F,QAAI,OAAO,UAAU,OAAO,WAAW,KAAK,UAAU;AACpD,QAAE,eAAe;AACjB,YAAM,iBAAiB,YAAY,yBAAyB,QAAQ,SAAS,EAAE;AAC/E,YAAM,OAAO,YAAY,qBAAqB,QAAQ,SAAS,EAAE;AAEjE,UAAI,gBAAgB;AAClB,aAAK,OAAO,MAAM;AAAA,iBACT,MAAM;AACf,aAAK,WAAW,MAAM;AAAA,MACxB;AACA;AAAA,IACF;AAAA,EACF;AAEI,MAAAI,kBAAA,WAAS,SAAS,CAAC,GAAG;AACxB,MAAE,eAAe;AAEjB,QAAI,CAAC,OAAO;AAAW;AAEvB,QAAIJ,YAAM,WAAW,OAAO,SAAS,GAAG;AACtCG,uBAAW,OAAO,MAAM;AACxB;AAAA,IACF;AAEA,UAAM,WAAW,YAAY,yBAAyB,QAAQ,OAAO,UAAU,OAAO,IAAI;AAC1F,QACE,OAAO,UAAU,OAAO,WAAW,KACnC,YACAL,aAAO,OAAO,QAAQ,SAAS,EAAE,MAAM,IACvC;AACA,YAAM,iBAAiB,YAAY,yBAAyB,QAAQ,SAAS,EAAE;AAE/E,UAAI,gBAAgB;AAClB,aAAK,OAAO,MAAM;AAAA,MAAA,OACb;AACL,aAAK,WAAW,MAAM;AAAA,MACxB;AACA;AAAA,IACF;AAEAK,UAAA,WAAW,WAAW,QAAQ;AAAA,MAC5B,IAAI,OAAO;AAAA,MACX,QAAQ;AAAA,MACR,OAAO,CAAA,SAAQ,aAAa,WAAW,IAAI;AAAA,IAAA,CAC5C;AAAA,EACH;AAEI,MAAAC,kBAAA,WAAS,eAAe,CAAC,GAAG;AAC9B,MAAE,eAAe;AACjB,WAAO,WAAW,IAAI;AAAA,EACxB;AACF;AAEO,kBAAkB,QAAgB;AACvC,QAAM,EAAE,kBAAkB;AAC1B,SAAO,gBAAgB,CAAS,UAAA;AACxB,UAAA,CAAC,mBAAmB,qBAAqB;AAI3C,QAAA,aAAa,WAAW,iBAAiB,GAAG;AAC9C,YAAM,qBAAqB,CAAC,GAAG,mBAAmB,wBAAwB;AAE1E,UAAIF,WAAK,IAAI,QAAQ,kBAAkB,GAAG;AACxC,cAAM,6BAA6BA,MAAA,KAAK,IAAI,QAAQ,kBAAkB;AAClE,YAAA,aAAa,YAAY,0BAA0B,GAAG;AACxDC,gBAAA,WAAW,SACT,QACA,EAAE,MAAMP,YAAAA,UAAU,iBAClB;AAAA,YACE,IAAI;AAAA,UAAA,CAER;AACA;AAAA,QACF;AAAA,MAAA,OACK;AACLO,cAAAA,WAAW,YAAY,QAAQ,aAAa,eAAA,GAAkB;AAAA,UAC5D,IAAI;AAAA,QAAA,CACL;AACD;AAAA,MACF;AAAA,IACF;AAGA,QAAI,CAACE,MAAA,KAAK,OAAO,iBAAiB,GAAG;AACnC,YAAM,oBAAoB,MAAM,KAAKH,MAAAA,KAAK,SAAS,QAAQ,iBAAiB,CAAC,EAC1E,IAAI,CAAC,OAAO,OAAO,aAAa;AAC/B,cAAM,0BAA0B,SAAS,GAAG,QAAQ,CAAC;AACrD,YACE,CAAC,2BACD,CAAC,aAAa,OAAO,wBAAwB,EAAE,KAC/C,CAAC,aAAa,OAAO,MAAM,EAAE,KAC7B,wBAAwB,GAAG,SAAS,MAAM,GAAG,MAC7C;AACO,iBAAA;AAAA,QACT;AACO,eAAA;AAAA,UACLJ,MAAAA,OAAO,QAAQ,QAAQ,MAAM,EAAE;AAAA,UAC/BA,MAAAA,OAAO,QAAQ,QAAQ,wBAAwB,EAAE;AAAA,QAAA;AAAA,MACnD,CACD,EACA,OAAO,CAAC,mBAAgD,QAAQ,cAAc,CAAC;AAE9E,UAAA,kBAAkB,WAAW,GAAG;AAClC,0BAAkB,UAAU,QAAQ,CAAC,CAAC,aAAa,2BAA2B;AAC5E,gBAAM,WAAW,YAAY;AAC7B,gBAAM,qBAAqB,sBAAsB;AAC7C,cAAA,YAAY,QAAQ,sBAAsB;AAAM;AACpD,gBAAM,eAAe,MAAM,KAAKI,MAAAA,KAAK,SAAS,QAAQ,QAAQ,CAAC;AAC/D,gBAAM,qBAAqB,MAAM,KAAKA,MAAAA,KAAK,SAAS,QAAQ,kBAAkB,CAAC;AACxEJ,uBAAA,mBAAmB,QAAQ,MAAM;AACtC,+BAAmB,UAAU,QAAQ,CAAC,CAAC,GAAG,eAAe;AACvDK,oBAAA,WAAW,UAAU,QAAQ;AAAA,gBAC3B,IAAI;AAAA,gBACJ,IAAI,CAAC,GAAG,UAAU,aAAa,MAAM;AAAA,cAAA,CACtC;AAAA,YAAA,CACF;AACDA,kBAAA,WAAW,YAAY,QAAQ,EAAE,IAAI,mBAAoB,CAAA;AAAA,UAAA,CAC1D;AACD,sBAAY,MAAM;AAClB,gCAAsB,MAAM;AAAA,QAAA,CAC7B;AACD;AAAA,MACF;AAAA,IACF;AAEA,kBAAc,KAAK;AAAA,EAAA;AAGd,SAAA;AACT;ACrKO,oCACL,QACA,SACA;AACOL,eAAA,mBAAmB,QAAQ,MAAM;;AAChC,UAAA,KAAK,yCAAS,OAAT,YAAe,OAAO;AACjC,QAAI,CAAC;AAAI;AACT,UAAM,QAAQA,MAAA,OAAO,SAAS,QAAQ,EAAE;AAExC,QAAI,MAAM,SAAS;AACjBK,YAAA,WAAW,SACT,QACA;AAAA,QACE,OAAO;AAAA,MAAA,GAET;AAAA,QACE,IAAI,MAAM;AAAA,QACV,OAAO,CAAA,SAAQE,WAAK,OAAO,IAAI;AAAA,QAC/B,OAAOL,MAAA,MAAM,WAAW,MAAM,OAAO;AAAA,MAAA,CAEzC;AAAA,IACF;AAEA,QAAI,MAAM,SAAS;AACjB,YAAM,YAAY,MAAM,KACtBF,MAAAA,OAAO,MAAM,QAAQ;AAAA,QACnB,IAAI,MAAM;AAAA,QACV,OAAO,CAAQ,SAAAO,WAAK,OAAO,IAAI,KAAK,KAAK,UAAU;AAAA,MACpD,CAAA,CACH;AAEW,iBAAA,CAAC,MAAM,SAAS,WAAW;AAChC,YAAAA,MAAA,KAAK,OAAO,IAAI,GAAG;AACrB,gBAAM,aAAiC,iCAClC,KAAK,aAD6B;AAAA,YAErC,OAAO,CAAC;AAAA,UAAA;AAGVF,gBAAA,WAAW,SACT,QACA;AAAA,YACE;AAAA,UAAA,GAEF,EAAE,IAAI,KAAA,CACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM;AAAA,EAAA,CACb;AACH;AClDE,qCAAA,QACA,iBACA,SACA;AACOL,eAAA,mBAAmB,QAAQ,MAAM;;AAChC,UAAA,KAAK,yCAAS,OAAT,YAAe,OAAO;AACjC,QAAI,CAAC;AAAI;AACT,UAAM,QAAQA,MAAA,OAAO,SAAS,QAAQ,EAAE;AAExC,QAAI,MAAM,SAAS;AACjBK,YAAA,WAAW,SACT,QACA;AAAA,QACE,OAAO;AAAA,MAAA,GAET;AAAA,QACE,IAAI,MAAM;AAAA,QACV,OAAO,CAAA,SAAQE,WAAK,OAAO,IAAI;AAAA,QAC/B,OAAOL,MAAA,MAAM,WAAW,MAAM,OAAO;AAAA,MAAA,CAEzC;AAAA,IACF;AAEA,QAAI,MAAM,SAAS;AACjB,YAAM,YAAY,MAAM,KACtBF,MAAAA,OAAO,MAAM,QAAQ;AAAA,QACnB,IAAI,MAAM;AAAA,QACV,OAAO,CAAQ,SAAAO,WAAK,OAAO,IAAI,KAAK,KAAK,UAAU;AAAA,MACpD,CAAA,CACH;AAEW,iBAAA,CAAC,MAAM,SAAS,WAAW;AAChC,YAAAA,MAAA,KAAK,OAAO,IAAI,GAAG;AACrB,gBAAM,aAAiC,iCAClC,KAAK,aAD6B;AAAA,YAErC,OACE,yCAAM,eAAN,mBAAkB,MAAM,OAAO,CAAC,EAAE,eAAe,aAAa,qBAA9D,YAAkF,CAAC;AAAA,UAAA;AAGvFF,gBAAA,WAAW,SACT,QACA;AAAA,YACE;AAAA,UAAA,GAEF,EAAE,IAAI,KAAA,CACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM;AAAA,EAAA,CACb;AACH;ACpDE,gCAAA,QACA,OACA,SACA;AACOL,eAAA,mBAAmB,QAAQ,MAAM;;AAChC,UAAA,KAAK,yCAAS,OAAT,YAAe,OAAO;AACjC,QAAI,CAAC;AAAI;AACT,UAAM,QAAQA,MAAA,OAAO,SAAS,QAAQ,EAAE;AAExC,QAAI,MAAM,SAAS;AACjBK,YAAA,WAAW,SACT,QACA;AAAA,QACE,OAAO;AAAA,MAAA,GAET;AAAA,QACE,IAAI,MAAM;AAAA,QACV,OAAO,CAAA,SAAQE,WAAK,OAAO,IAAI;AAAA,QAC/B,OAAOL,MAAA,MAAM,WAAW,MAAM,OAAO;AAAA,MAAA,CAEzC;AAAA,IACF;AAEA,QAAI,MAAM,SAAS;AACjB,YAAM,YAAY,MAAM,KACtBF,MAAAA,OAAO,MAAM,QAAQ;AAAA,QACnB,IAAI,MAAM;AAAA,QACV,OAAO,CAAQ,SAAAO,WAAK,OAAO,IAAI,KAAK,KAAK,UAAU;AAAA,MACpD,CAAA,CACH;AAEW,iBAAA,CAAC,MAAM,SAAS,WAAW;AAChC,YAAAA,MAAA,KAAK,OAAO,IAAI,GAAG;AACrBF,gBAAA,WAAW,SACT,QACA;AAAA,YACE,YAAY;AAAA,cACV,OAAO;AAAA,YACT;AAAA,UAAA,GAEF,EAAE,IAAI,KAAA,CACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM;AAAA,EAAA,CACb;AACH;ACjDE,+BAAA,QACA,IACA,SACA;;AACM,QAAA,KAAK,yCAAS,OAAT,YAAe,OAAO;AACjC,MAAI,CAAC;AAAI;AACTA,QAAA,WAAW,SACT,QACA;AAAA,IACE,YAAY;AAAA,MACV;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AAAA,EAAA,GAEF;AAAA,IACE;AAAA,IACA,OAAO,CAAA,SAAQE,WAAK,OAAO,IAAI;AAAA,IAC/B,OAAOL,MAAAA,MAAM,WAAW,EAAE;AAAA,EAAA,CAE9B;AACF;ACnBO,kCACL,QACA,aACA,UACA,MACA,OACA,SACA;AACOF,eAAA,mBAAmB,QAAQ,MAAM;;AAChC,UAAA,KAAK,yCAAS,OAAT,YAAe,OAAO;AACjC,QAAI,CAAC;AAAI;AACT,UAAM,QAAQA,MAAA,OAAO,SAAS,QAAQ,EAAE;AAExC,QAAI,MAAM,SAAS;AACjBK,YAAA,WAAW,SACT,QACA;AAAA,QACE,OAAO;AAAA,MAAA,GAET;AAAA,QACE,IAAI,MAAM;AAAA,QACV,OAAO,CAAA,SAAQE,WAAK,OAAO,IAAI;AAAA,QAC/B,OAAOL,MAAA,MAAM,WAAW,MAAM,OAAO;AAAA,MAAA,CAEzC;AAAA,IACF;AAEA,QAAI,MAAM,SAAS;AACjB,YAAM,YAAY,MAAM,KACtBF,MAAAA,OAAO,MAAM,QAAQ;AAAA,QACnB,IAAI,MAAM;AAAA,QACV,OAAO,CAAQ,SAAAO,WAAK,OAAO,IAAI,KAAK,KAAK,UAAU;AAAA,MACpD,CAAA,CACH;AAEW,iBAAA,CAAC,MAAM,SAAS,WAAW;AAChC,YAAAA,MAAA,KAAK,OAAO,IAAI,GAAG;AACrB,gBAAM,kBAAkB,yCAAM,eAAN,mBAAkB,UAAlB,YAA2B,CAAA;AACnD,gBAAM,cAAcC,kBAClB,uBAAA,aACA,iBACA,UACA,CAAA,MAAK,CACP,KAAK;AAAA,YACH,OAAO,CAAC;AAAA,UAAA;AAEV,gBAAM,kBAAkB;AAAA,YACtB;AAAA,YACA,OAAO,iCAAK,YAAY,QAAjB,GAAyB,OAAO,MAAM;AAAA,UAAA;AAG/C,gBAAM,iBAAqC,iCACtC,KAAK,aADiC;AAAA,YAEzC,OAAO,CAAC,GAAG,gBAAgB,OAAO,OAAK,EAAE,aAAa,QAAQ,GAAG,eAAe;AAAA,UAAA;AAGlFH,gBAAA,WAAW,SACT,QACA;AAAA,YACE,YAAY;AAAA,UAAA,GAEd,EAAE,IAAI,KAAA,CACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM;AAAA,EAAA,CACb;AACH;ACtEO,MAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,wBAAwB,QAAgB;AAC7C,QAAM,EAAE,kBAAkB;AAC1B,SAAO,gBAAgB,CAAS,UAAA;;AACxB,UAAA,CAAC,mBAAmB,qBAAqB;AAC/C,QACEE,MAAK,KAAA,OAAO,iBAAiB,KAC7B,8DAAmB,eAAnB,mBAA+B,OAAM,QACrC,8DAAmB,eAAnB,mBAA+B,MAAM,YAAW,GAChD;AACAF,YAAA,WAAW,WAAW,QAAQ,cAAc,EAAE,IAAI,mBAAmB;AACrE;AAAA,IACF;AAEA,QAAIE,MAAAA,KAAK,OAAO,iBAAiB,KAAK,wDAAmB,UAAS,MAAM;AACtEF,YAAA,WAAW,WAAW,QAAQ,SAAS,EAAE,IAAI,mBAAmB;AAChE;AAAA,IACF;AAEA,kBAAc,KAAK;AAAA,EAAA;AAGd,SAAA;AACT;AC7BA,qBAAqB,QAAgB,OAAqB;AAExD,MAAI,CAAC,OAAO,OAAOH,MAAAA,MAAM,MAAM,KAAK;AAEhC,MAAA,MAAM,WAAW,KAAK,IAAI,WAAW,KAAKA,MAAA,MAAM,YAAY,KAAK,GAAG;AAC/D,WAAA;AAAA,EACT;AAEM,QAAA,WAAWF,MAAAA,OAAO,MAAM,QAAQ;AAAA,IACpC,IAAI;AAAA,IACJ,OAAO,OAAKH,MAAAA,QAAQ,UAAU,CAAC,KAAKG,aAAO,QAAQ,QAAQ,CAAC;AAAA,EAAA,CAC7D;AACD,QAAM,YAAY,WAAW,SAAS,KAAK,CAAA;AAC3C,QAAM,QAAQA,MAAA,OAAO,MAAM,QAAQ,KAAK;AACxC,QAAM,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI;AAC3C,MAAI,OAAO;AAEX,aAAW,CAAC,MAAM,SAASA,MAAA,OAAO,MAAM,QAAQ;AAAA,IAC9C,IAAI;AAAA,IACJ,OAAOO,MAAK,KAAA;AAAA,IACZ,SAAS;AAAA,EAAA,CACV,GAAG;AACF,QAAI,MAAM;AACD,aAAA;AACP;AAAA,IACF;AAEA,QAAI,KAAK,SAAS,MAAMN,WAAK,SAAS,MAAM,SAAS,GAAG;AACtD,YAAM,EAAE,MAAM,QAAQ,KAAK,KAAK;AAChC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,QAAQ,OAAO,OAAO,IAAI;AACrC;ACtBO,sBAAsB,QAAuB;AAClD,MAAI,OAAO;AAAkB,WAAA,YAAY,QAAQ,OAAO,SAAS;AAC1D,SAAA;AAAA,IACL,QAAQD,MAAA,OAAO,MAAM,QAAQ,CAAA,CAAE;AAAA,IAC/B,OAAOA,MAAA,OAAO,IAAI,QAAQ,CAAA,CAAE;AAAA,EAAA;AAEhC;AAEO,8BAA8B,QAAwC;AAC3E,SAAO,MAAM,KACXA,aAAO,MAAM,QAAQ;AAAA,IACnB,IAAI,aAAa,MAAM;AAAA,IACvB,OAAO,CAAA,SAAQ,aAAa,YAAY,IAAI;AAAA,EAAA,CAC7C,CACH,EAAE,OAAO,CAAC,UAAyC,aAAa,YAAY,MAAM,EAAE,CAAC;AACvF;ACzBO,8BACL,QACA,aACA,UACA,KACA,OACA,SACA;;AACM,QAAA,KAAK,yCAAS,OAAT,YAAe,OAAO;AACjC,MAAI,CAAC;AAAI;AAEH,QAAA,eAAe,qBAAqB,MAAM;AAErC,aAAA,CAAC,MAAM,SAAS,cAAc;AACnC,QAAA,aAAa,QAAQ,IAAI,GAAG;AACxB,YAAA,eAAe,WAAK,SAAL,YAAa,CAAA;AAClC,YAAM,qBAAqBQ,kBAAuB,uBAAA,aAAa,cAAc,UAAU,OAAK,CAAC;AAC7F,YAAM,kBAAkB,iCACnB,qBADmB;AAAA,QAEtB;AAAA,QACA;AAAA,MAAA;AAEFH,YAAA,WAAW,SACT,QACA;AAAA,SACG,MAAM,CAAC,GAAG,aAAa,OAAO,OAAK,EAAE,aAAa,QAAQ,GAAG,eAAe;AAAA,MAAA,GAE/E,EAAE,IAAI,KAAA,CACR;AAAA,IACF;AAAA,EACF;AACF;AClCE,gCAAA,QACA,UACA,KACA;;AACM,QAAA,eAAe,qBAAqB,MAAM;AAErC,aAAA,CAAC,MAAM,SAAS,cAAc;AACnC,QAAA,aAAa,QAAQ,IAAI,GAAG;AACxB,YAAA,kBAAkB,WAAK,SAAL,YAAa,CAAA;AACrCA,YAAA,WAAW,SACT,QACA;AAAA,SACG,MAAM,gBAAgB,OAAO,CAAK,MAAA,EAAE,aAAa,QAAQ;AAAA,MAAA,GAE5D,EAAE,IAAI,KAAA,CACR;AAAA,IACF;AAAA,EACF;AACF;ACrBO,oBAAoB,QAAgB,QAAgB;AAC9CA,mBAAA,UAAU,QAAQ,QAAQ;AAAA,IACnC,IAAI,aAAa,MAAM;AAAA,IACvB,OAAO;AAAA,EAAA,CACR;AACH;ACJO,sBAAsB,QAAgB,MAAkB;AAC7DA,QAAA,WAAW,YAAY,QAAQ;AAAA,IAC7B,OAAO,CAAQ,SAAA,aAAa,SAAS,IAAI,KAAK,KAAK,SAAS;AAAA,IAC5D,IAAI,aAAa,MAAM;AAAA,EAAA,CACxB;AACH;ACHO,MAAM,QAAQ;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,mBAAmB,QAAgB;AACxC,QAAM,EAAE,kBAAkB;AAE1B,SAAO,WAAW,CAAS,UAAA;AAClB,WAAA,aAAa,SAAS,KAAK;AAAA,EAAA;AAGpC,SAAO,gBAAgB,CAAS,UAAA;;AACxB,UAAA,CAAC,mBAAmB,qBAAqB;AAE/C,QAAI,aAAa,QAAQ,iBAAiB,KAAK,8DAAmB,cAAnB,mBAA8B,WAAU,GAAG;AACxFA,YAAA,WAAW,WAAW,QAAQ,aAAa,EAAE,IAAI,mBAAmB;AACpE;AAAA,IACF;AAEA,kBAAc,KAAK;AAAA,EAAA;AAGd,SAAA;AACT;;;;;;;;"}
@@ -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/useSyncDOMSelection.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 { useResponsiveStyle } 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(useResponsiveStyle([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'\nimport { useIsInBuilder } from '../../../../react'\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 const isInBuilder = useIsInBuilder()\n\n useEffect(() => {\n if (shouldCommit && text && isInBuilder) {\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 { ReactEditor } from 'slate-react'\nimport { useIsomorphicLayoutEffect } from '../../../hooks/useIsomorphicLayoutEffect'\nimport { Editor, Range as SlateRange } from 'slate'\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: boolean) {\n useIsomorphicLayoutEffect(() => {\n if (!isEnabled || 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 {\n FocusEvent,\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'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\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 [isPreservingDOMSElection, setIsPreservingDOMSelection] = useState(false)\n useSyncDOMSelection(editor, isPreservingDOMSElection)\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 setIsPreservingDOMSelection(true)\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 const handleBlur = useCallback((e: FocusEvent) => {\n // When clicking outside of the iframe (`relatedTarget` is null) we want to preserve the DOM selection.\n if (e.relatedTarget == null) return\n // Otherwise we want to deselect on blur and stop preserving selection.\n setIsPreservingDOMSelection(false)\n ReactEditor.deselect(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 onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n className={cx(width, margin)}\n readOnly={editMode !== BuilderEditMode.CONTENT}\n placeholder=\"Write some text...\"\n />\n </Slate>\n )\n})\n\nexport default EditableText\n"],"names":["element","attributes","children","blockStyles","useStyle","margin","useResponsiveStyle","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","isInBuilder","useIsInBuilder","useEffect","nextValue","richTextDTOtoDAO","nextSelection","richTextDTOtoSelection","deepEqual","selection","onChange","timeoutId","window","setTimeout","clearTimeout","useCallback","isEnabled","useIsomorphicLayoutEffect","ReactEditor","isFocused","root","findDocumentOrShadowRoot","domSelection","getSelection","newDomRange","toDOMRange","SlateRange","isBackward","setBaseAndExtent","endContainer","endOffset","startContainer","startOffset","removeAllRanges","e","console","error","defaultText","EditableText","forwardRef","id","width","ref","withBlock","withTypography","withList","withReact","createEditor","isPreservingDOMSElection","setIsPreservingDOMSelection","useSyncDOMSelection","delaySync","useSyncWithBuilder","editMode","useBuilderEditMode","propControllers","setPropControllers","controller","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","useImperativeHandle","getDomNode","getBoxModel","getBox","initialValue","useMemo","setSlateEditor","handleFocus","focus","handleKeyDown","isHotkey","redo","undo","blur","onKeyDown","handleBlur","relatedTarget","deselect","Slate","Editable","Leaf","Element","BuilderEditMode","CONTENT"],"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/useSyncDOMSelection.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 { useResponsiveStyle } 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(useResponsiveStyle([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'\nimport { useIsInBuilder } from '../../../../runtimes/react'\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 const isInBuilder = useIsInBuilder()\n\n useEffect(() => {\n if (shouldCommit && text && isInBuilder) {\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 { ReactEditor } from 'slate-react'\nimport { useIsomorphicLayoutEffect } from '../../../hooks/useIsomorphicLayoutEffect'\nimport { Editor, Range as SlateRange } from 'slate'\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: boolean) {\n useIsomorphicLayoutEffect(() => {\n if (!isEnabled || 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 {\n FocusEvent,\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'\nimport { useSyncDOMSelection } from './useSyncDOMSelection'\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 [isPreservingDOMSElection, setIsPreservingDOMSelection] = useState(false)\n useSyncDOMSelection(editor, isPreservingDOMSElection)\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 setIsPreservingDOMSelection(true)\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 const handleBlur = useCallback((e: FocusEvent) => {\n // When clicking outside of the iframe (`relatedTarget` is null) we want to preserve the DOM selection.\n if (e.relatedTarget == null) return\n // Otherwise we want to deselect on blur and stop preserving selection.\n setIsPreservingDOMSelection(false)\n ReactEditor.deselect(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 onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n className={cx(width, margin)}\n readOnly={editMode !== BuilderEditMode.CONTENT}\n placeholder=\"Write some text...\"\n />\n </Slate>\n )\n})\n\nexport default EditableText\n"],"names":["element","attributes","children","blockStyles","useStyle","margin","useResponsiveStyle","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","isInBuilder","useIsInBuilder","useEffect","nextValue","richTextDTOtoDAO","nextSelection","richTextDTOtoSelection","deepEqual","selection","onChange","timeoutId","window","setTimeout","clearTimeout","useCallback","isEnabled","useIsomorphicLayoutEffect","ReactEditor","isFocused","root","findDocumentOrShadowRoot","domSelection","getSelection","newDomRange","toDOMRange","SlateRange","isBackward","setBaseAndExtent","endContainer","endOffset","startContainer","startOffset","removeAllRanges","e","console","error","defaultText","EditableText","forwardRef","id","width","ref","withBlock","withTypography","withList","withReact","createEditor","isPreservingDOMSElection","setIsPreservingDOMSelection","useSyncDOMSelection","delaySync","useSyncWithBuilder","editMode","useBuilderEditMode","propControllers","setPropControllers","controller","toDOMNode","pollBoxModel","onBoxModelChange","boxModel","changeBoxModel","useImperativeHandle","getDomNode","getBoxModel","getBox","initialValue","useMemo","setSlateEditor","handleFocus","focus","handleKeyDown","isHotkey","redo","undo","blur","onKeyDown","handleBlur","relatedTarget","deselect","Slate","Editable","Leaf","Element","BuilderEditMode","CONTENT"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -39,8 +39,8 @@ import * as React from "react";
39
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
- import { a as createDocumentReference, g as getPropControllerDescriptors, i as isElementReference, M as MakeswiftComponentType, b as isPropControllersHandle, d as getComponentPropControllerDescriptors, e as getPropControllers, f as configureStore$1, h as getDocument, j as getBreakpoints, k as getElementId, l as getIsPreview, m as getIsInBuilder, n as copyElementTree, o as getReactComponent, p as getBuilderEditMode } from "./constants.es.js";
43
- import { A as ActionTypes, k as apiResourceFulfilled, l as registerComponentHandleEffect, n as mountComponentEffect, o as registerComponentEffect, p as registerReactComponentEffect, j as setBreakpoints } from "./actions.es.js";
42
+ import { a as createDocumentReference, g as getPropControllerDescriptors, i as isElementReference, M as MakeswiftComponentType, b as isPropControllersHandle, d as getComponentPropControllerDescriptors, e as getPropControllers, f as configureStore$1, h as copyElementTree, j as getBreakpoints, k as getDocument, l as getElementId, m as getIsPreview, n as getIsInBuilder, o as getReactComponent, p as getBuilderEditMode } from "./constants.es.js";
43
+ import { A as ActionTypes, k as apiResourceFulfilled, l as registerComponentEffect, n as registerReactComponentEffect, o as registerComponentHandleEffect, p as mountComponentEffect } from "./actions.es.js";
44
44
  import { cache, cx } from "@emotion/css";
45
45
  import { serializeStyles } from "@emotion/serialize";
46
46
  import { registerStyles, insertStyles } from "@emotion/utils";
@@ -758,10 +758,11 @@ function useCachedSite(siteId) {
758
758
  return site;
759
759
  }
760
760
  class Makeswift {
761
- constructor(apiKey, { apiOrigin = "https://api.makeswift.com" } = {}) {
761
+ constructor(apiKey, { apiOrigin = "https://api.makeswift.com", runtime } = {}) {
762
762
  __publicField(this, "apiKey");
763
763
  __publicField(this, "apiOrigin");
764
764
  __publicField(this, "graphqlClient");
765
+ __publicField(this, "runtime");
765
766
  if (typeof apiKey !== "string") {
766
767
  throw new Error(`The Makeswift client must be passed a valid Makeswift site API key: \`new Makeswift('<makeswift_site_api_key>')\`
767
768
  Received "${apiKey}" instead.`);
@@ -773,6 +774,7 @@ Received "${apiKey}" instead.`);
773
774
  throw new Error(`The Makeswift client received an invalid \`apiOrigin\` parameter: "${apiOrigin}".`);
774
775
  }
775
776
  this.graphqlClient = new GraphQLClient(new URL("graphql", apiOrigin).href);
777
+ this.runtime = runtime;
776
778
  }
777
779
  async fetch(path, init) {
778
780
  const response = await fetch(new URL(path, this.apiOrigin).toString(), __spreadProps(__spreadValues({}, init), {
@@ -798,7 +800,9 @@ Received "${apiKey}" instead.`);
798
800
  return result;
799
801
  }
800
802
  async introspect(element) {
801
- const descriptors = getPropControllerDescriptors(storeContextDefaultValue.getState());
803
+ var _a;
804
+ const runtime = (_a = this.runtime) != null ? _a : ReactRuntime;
805
+ const descriptors = getPropControllerDescriptors(runtime.store.getState());
802
806
  const swatchIds = /* @__PURE__ */ new Set();
803
807
  const fileIds = /* @__PURE__ */ new Set();
804
808
  const typographyIds = /* @__PURE__ */ new Set();
@@ -873,8 +877,8 @@ Received "${apiKey}" instead.`);
873
877
  const typographies = await this.getTypographies([...typographyIds]);
874
878
  typographies.forEach((typography) => {
875
879
  typography == null ? void 0 : typography.style.forEach((style) => {
876
- var _a;
877
- const swatchId = (_a = style.value.color) == null ? void 0 : _a.swatchId;
880
+ var _a2;
881
+ const swatchId = (_a2 = style.value.color) == null ? void 0 : _a2.swatchId;
878
882
  if (swatchId != null)
879
883
  swatchIds.add(swatchId);
880
884
  });
@@ -890,38 +894,38 @@ Received "${apiKey}" instead.`);
890
894
  }));
891
895
  return {
892
896
  [APIResourceType.Swatch]: [...swatchIds].map((id) => {
893
- var _a;
897
+ var _a2;
894
898
  return {
895
899
  id,
896
- value: (_a = swatches.find((swatch) => (swatch == null ? void 0 : swatch.id) === id)) != null ? _a : null
900
+ value: (_a2 = swatches.find((swatch) => (swatch == null ? void 0 : swatch.id) === id)) != null ? _a2 : null
897
901
  };
898
902
  }),
899
903
  [APIResourceType.File]: [...fileIds].map((id) => {
900
- var _a;
904
+ var _a2;
901
905
  return {
902
906
  id,
903
- value: (_a = files.find((file) => (file == null ? void 0 : file.id) === id)) != null ? _a : null
907
+ value: (_a2 = files.find((file) => (file == null ? void 0 : file.id) === id)) != null ? _a2 : null
904
908
  };
905
909
  }),
906
910
  [APIResourceType.Typography]: [...typographyIds].map((id) => {
907
- var _a;
911
+ var _a2;
908
912
  return {
909
913
  id,
910
- value: (_a = typographies.find((typography) => (typography == null ? void 0 : typography.id) === id)) != null ? _a : null
914
+ value: (_a2 = typographies.find((typography) => (typography == null ? void 0 : typography.id) === id)) != null ? _a2 : null
911
915
  };
912
916
  }),
913
917
  [APIResourceType.Table]: [...tableIds].map((id) => {
914
- var _a;
918
+ var _a2;
915
919
  return {
916
920
  id,
917
- value: (_a = tables.find((table) => (table == null ? void 0 : table.id) === id)) != null ? _a : null
921
+ value: (_a2 = tables.find((table) => (table == null ? void 0 : table.id) === id)) != null ? _a2 : null
918
922
  };
919
923
  }),
920
924
  [APIResourceType.PagePathnameSlice]: [...pageIds].map((id) => {
921
- var _a;
925
+ var _a2;
922
926
  return {
923
927
  id,
924
- value: (_a = pagePathnameSlices.find((pagePathnameSlice) => (pagePathnameSlice == null ? void 0 : pagePathnameSlice.id) === id)) != null ? _a : null
928
+ value: (_a2 = pagePathnameSlices.find((pagePathnameSlice) => (pagePathnameSlice == null ? void 0 : pagePathnameSlice.id) === id)) != null ? _a2 : null
925
929
  };
926
930
  }),
927
931
  [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({
@@ -1123,7 +1127,7 @@ async function fonts(_req, res, { getFonts } = {}) {
1123
1127
  const fonts2 = (_a = await (getFonts == null ? void 0 : getFonts())) != null ? _a : [];
1124
1128
  return res.json(fonts2);
1125
1129
  }
1126
- const version = "0.8.6";
1130
+ const version = "0.8.8";
1127
1131
  async function handler(req, res, { apiKey }) {
1128
1132
  if (req.query.secret !== apiKey) {
1129
1133
  return res.status(401).json({ message: "Unauthorized" });
@@ -1133,7 +1137,8 @@ async function handler(req, res, { apiKey }) {
1133
1137
  previewMode: true,
1134
1138
  interactionMode: true,
1135
1139
  clientSideNavigation: true,
1136
- elementFromPoint: false
1140
+ elementFromPoint: false,
1141
+ customBreakpoints: true
1137
1142
  });
1138
1143
  }
1139
1144
  async function proxyPreviewMode(req, res, { apiKey }) {
@@ -1378,7 +1383,8 @@ async function getServerSideProps(ctx) {
1378
1383
  };
1379
1384
  }
1380
1385
  const Page = memo(({
1381
- snapshot
1386
+ snapshot,
1387
+ runtime
1382
1388
  }) => {
1383
1389
  const client = useMemo(() => new MakeswiftClient({
1384
1390
  uri: new URL("graphql", snapshot.apiOrigin).href,
@@ -1388,6 +1394,7 @@ const Page = memo(({
1388
1394
  client,
1389
1395
  rootElements: /* @__PURE__ */ new Map([[snapshot.document.id, snapshot.document.data]]),
1390
1396
  preview: snapshot.preview,
1397
+ runtime,
1391
1398
  children: /* @__PURE__ */ jsx(Page$1, {
1392
1399
  document: snapshot.document
1393
1400
  }, snapshot.document.data.key)
@@ -3626,41 +3633,68 @@ function isDomNodeHandle(value) {
3626
3633
  }
3627
3634
  return false;
3628
3635
  }
3629
- const storeContextDefaultValue = configureStore$1();
3630
- function createReactRuntime(store) {
3631
- return {
3632
- registerComponent(component, {
3633
- type,
3636
+ class ReactRuntime {
3637
+ constructor({
3638
+ breakpoints
3639
+ }) {
3640
+ __publicField(this, "store");
3641
+ this.store = configureStore$1({
3642
+ breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : void 0
3643
+ });
3644
+ registerBuiltinComponents(this);
3645
+ }
3646
+ static registerComponent(component, {
3647
+ type,
3648
+ label,
3649
+ icon = "Cube40",
3650
+ hidden = false,
3651
+ props
3652
+ }) {
3653
+ const unregisterComponent = this.store.dispatch(registerComponentEffect(type, {
3634
3654
  label,
3635
- icon = "Cube40",
3636
- hidden = false,
3637
- props
3638
- }) {
3639
- const unregisterComponent = store.dispatch(registerComponentEffect(type, {
3640
- label,
3641
- icon,
3642
- hidden
3643
- }, props != null ? props : {}));
3644
- const unregisterReactComponent = store.dispatch(registerReactComponentEffect(type, component));
3645
- return () => {
3646
- unregisterComponent();
3647
- unregisterReactComponent();
3648
- };
3649
- },
3650
- copyElementTree(elementTree2, replacementContext) {
3651
- return copyElementTree(store.getState(), elementTree2, replacementContext);
3652
- },
3653
- getBreakpoints() {
3654
- return getBreakpoints(store.getState());
3655
- },
3656
- unstable_setBreakpoints(breakpoints) {
3657
- return store.dispatch(setBreakpoints(parseBreakpointsInput(breakpoints)));
3658
- }
3659
- };
3655
+ icon,
3656
+ hidden
3657
+ }, props != null ? props : {}));
3658
+ const unregisterReactComponent = this.store.dispatch(registerReactComponentEffect(type, component));
3659
+ return () => {
3660
+ unregisterComponent();
3661
+ unregisterReactComponent();
3662
+ };
3663
+ }
3664
+ static copyElementTree(elementTree2, replacementContext) {
3665
+ return copyElementTree(this.store.getState(), elementTree2, replacementContext);
3666
+ }
3667
+ static getBreakpoints() {
3668
+ return getBreakpoints(this.store.getState());
3669
+ }
3670
+ registerComponent(component, {
3671
+ type,
3672
+ label,
3673
+ icon = "Cube40",
3674
+ hidden = false,
3675
+ props
3676
+ }) {
3677
+ const unregisterComponent = this.store.dispatch(registerComponentEffect(type, {
3678
+ label,
3679
+ icon,
3680
+ hidden
3681
+ }, props != null ? props : {}));
3682
+ const unregisterReactComponent = this.store.dispatch(registerReactComponentEffect(type, component));
3683
+ return () => {
3684
+ unregisterComponent();
3685
+ unregisterReactComponent();
3686
+ };
3687
+ }
3688
+ copyElementTree(elementTree2, replacementContext) {
3689
+ return copyElementTree(this.store.getState(), elementTree2, replacementContext);
3690
+ }
3691
+ getBreakpoints() {
3692
+ return getBreakpoints(this.store.getState());
3693
+ }
3660
3694
  }
3661
- const ReactRuntime = createReactRuntime(storeContextDefaultValue);
3695
+ __publicField(ReactRuntime, "store", configureStore$1());
3662
3696
  registerBuiltinComponents(ReactRuntime);
3663
- const StoreContext = createContext(storeContextDefaultValue);
3697
+ const StoreContext = createContext(ReactRuntime.store);
3664
3698
  const PreviewProvider = dynamic(() => import("./PreviewProvider.es.js"));
3665
3699
  const LiveProvider = dynamic(() => import("./LiveProvider.es.js"));
3666
3700
  function RuntimeProvider(_j) {
@@ -3867,5 +3901,5 @@ const DocumentReference = memo(forwardRef(function DocumentReference2({
3867
3901
  document: document2
3868
3902
  });
3869
3903
  }));
3870
- export { PreviewModeScript as $, Alignments as A, useFile as B, Contrasts as C, DocumentReference as D, Element$1 as E, forwardNextDynamicRef as F, useIsPreview as G, useFiles as H, useSwatches as I, usePagePathnameSlice as J, useElementId as K, deepEqual as L, ElementImperativeHandle as M, storeContextDefaultValue as N, StoreContext as O, PageProvider as P, MakeswiftProvider as Q, RuntimeProvider as R, Shapes as S, useBuilderEditMode as T, pollBoxModel as U, useTypography as V, getStaticPaths as W, getStaticProps as X, getServerSideProps as Y, Page as Z, Makeswift as _, ReactRuntime as a, Document$1 as a0, MakeswiftApiHandler as a1, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useBoxShadow as k, useResponsiveColor as l, Page$1 as m, useStyle as n, useResponsiveStyle as o, useResponsiveWidth as p, useResponsiveTextStyle as q, colorToString as r, useBreakpoints as s, Sizes as t, useIsInBuilder as u, useFormContext as v, useResponsiveGridItem as w, useTable as x, useMakeswiftClient as y, Provider as z };
3904
+ export { Document$1 as $, Alignments as A, useFile as B, Contrasts as C, DocumentReference as D, Element$1 as E, forwardNextDynamicRef as F, useIsPreview as G, useFiles as H, useSwatches as I, usePagePathnameSlice as J, useElementId as K, deepEqual as L, ElementImperativeHandle as M, StoreContext as N, MakeswiftProvider as O, PageProvider as P, useBuilderEditMode as Q, RuntimeProvider as R, Shapes as S, pollBoxModel as T, useTypography as U, getStaticPaths as V, getStaticProps as W, getServerSideProps as X, Page as Y, Makeswift as Z, PreviewModeScript as _, ReactRuntime as a, MakeswiftApiHandler as a0, usePageId as b, DEFAULT_BOX_ANIMATE_TYPE as c, DEFAULT_BOX_ANIMATE_DELAY as d, DEFAULT_BOX_ANIMATE_DURATION as e, DEFAULT_ITEM_ANIMATE_TYPE as f, DEFAULT_ITEM_ANIMATE_DELAY as g, DEFAULT_ITEM_ANIMATE_DURATION as h, DEFAULT_ITEM_STAGGER_DURATION as i, useBorder as j, useBoxShadow as k, useResponsiveColor as l, Page$1 as m, useStyle as n, useResponsiveStyle as o, useResponsiveWidth as p, useResponsiveTextStyle as q, colorToString as r, useBreakpoints as s, Sizes as t, useIsInBuilder as u, useFormContext as v, useResponsiveGridItem as w, useTable as x, useMakeswiftClient as y, Provider as z };
3871
3905
  //# sourceMappingURL=index.es.js.map