@liveblocks/react-ui 2.25.0-aiprivatebeta4 → 2.25.0-aiprivatebeta6

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 (199) hide show
  1. package/dist/_private/index.cjs +4 -0
  2. package/dist/_private/index.cjs.map +1 -1
  3. package/dist/_private/index.d.cts +31 -94
  4. package/dist/_private/index.d.ts +31 -94
  5. package/dist/_private/index.js +2 -0
  6. package/dist/_private/index.js.map +1 -1
  7. package/dist/components/AiChat.cjs +217 -0
  8. package/dist/components/AiChat.cjs.map +1 -0
  9. package/dist/components/AiChat.js +215 -0
  10. package/dist/components/AiChat.js.map +1 -0
  11. package/dist/components/Comment.cjs +2 -2
  12. package/dist/components/Comment.cjs.map +1 -1
  13. package/dist/components/Comment.js +1 -1
  14. package/dist/components/Comment.js.map +1 -1
  15. package/dist/components/Composer.cjs +1 -2
  16. package/dist/components/Composer.cjs.map +1 -1
  17. package/dist/components/Composer.js +1 -2
  18. package/dist/components/Composer.js.map +1 -1
  19. package/dist/components/internal/AiChatAssistantMessage.cjs +83 -124
  20. package/dist/components/internal/AiChatAssistantMessage.cjs.map +1 -1
  21. package/dist/components/internal/AiChatAssistantMessage.js +81 -122
  22. package/dist/components/internal/AiChatAssistantMessage.js.map +1 -1
  23. package/dist/components/internal/AiChatComposer.cjs +30 -266
  24. package/dist/components/internal/AiChatComposer.cjs.map +1 -1
  25. package/dist/components/internal/AiChatComposer.js +35 -267
  26. package/dist/components/internal/AiChatComposer.js.map +1 -1
  27. package/dist/components/internal/AiChatUserMessage.cjs +18 -168
  28. package/dist/components/internal/AiChatUserMessage.cjs.map +1 -1
  29. package/dist/components/internal/AiChatUserMessage.js +20 -170
  30. package/dist/components/internal/AiChatUserMessage.js.map +1 -1
  31. package/dist/constants.cjs +2 -0
  32. package/dist/constants.cjs.map +1 -1
  33. package/dist/constants.js +2 -1
  34. package/dist/constants.js.map +1 -1
  35. package/dist/icon.cjs +4 -0
  36. package/dist/icon.cjs.map +1 -1
  37. package/dist/icon.js +2 -0
  38. package/dist/icon.js.map +1 -1
  39. package/dist/icons/Copy.cjs +8 -9
  40. package/dist/icons/Copy.cjs.map +1 -1
  41. package/dist/icons/Copy.js +8 -9
  42. package/dist/icons/Copy.js.map +1 -1
  43. package/dist/icons/Retry.cjs +21 -0
  44. package/dist/icons/Retry.cjs.map +1 -0
  45. package/dist/icons/Retry.js +19 -0
  46. package/dist/icons/Retry.js.map +1 -0
  47. package/dist/icons/index.cjs +4 -0
  48. package/dist/icons/index.cjs.map +1 -1
  49. package/dist/icons/index.js +2 -0
  50. package/dist/icons/index.js.map +1 -1
  51. package/dist/index.cjs +1 -1
  52. package/dist/index.cjs.map +1 -1
  53. package/dist/index.d.cts +32 -43
  54. package/dist/index.d.ts +32 -43
  55. package/dist/index.js +1 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/overrides.cjs +10 -10
  58. package/dist/overrides.cjs.map +1 -1
  59. package/dist/overrides.js +10 -10
  60. package/dist/overrides.js.map +1 -1
  61. package/dist/primitives/AiChatComposer/index.cjs +203 -0
  62. package/dist/primitives/AiChatComposer/index.cjs.map +1 -0
  63. package/dist/primitives/AiChatComposer/index.js +196 -0
  64. package/dist/primitives/AiChatComposer/index.js.map +1 -0
  65. package/dist/primitives/Comment/index.cjs +2 -2
  66. package/dist/primitives/Comment/index.cjs.map +1 -1
  67. package/dist/primitives/Comment/index.js +1 -1
  68. package/dist/primitives/Comment/index.js.map +1 -1
  69. package/dist/primitives/Composer/index.cjs +19 -14
  70. package/dist/primitives/Composer/index.cjs.map +1 -1
  71. package/dist/primitives/Composer/index.js +18 -13
  72. package/dist/primitives/Composer/index.js.map +1 -1
  73. package/dist/{slate → primitives/Composer/slate}/plugins/auto-formatting.cjs +3 -3
  74. package/dist/primitives/Composer/slate/plugins/auto-formatting.cjs.map +1 -0
  75. package/dist/{slate → primitives/Composer/slate}/plugins/auto-formatting.js +3 -3
  76. package/dist/primitives/Composer/slate/plugins/auto-formatting.js.map +1 -0
  77. package/dist/{slate → primitives/Composer/slate}/plugins/auto-links.cjs +7 -2
  78. package/dist/primitives/Composer/slate/plugins/auto-links.cjs.map +1 -0
  79. package/dist/{slate → primitives/Composer/slate}/plugins/auto-links.js +8 -3
  80. package/dist/primitives/Composer/slate/plugins/auto-links.js.map +1 -0
  81. package/dist/{slate → primitives/Composer/slate}/plugins/custom-links.cjs +8 -3
  82. package/dist/primitives/Composer/slate/plugins/custom-links.cjs.map +1 -0
  83. package/dist/{slate → primitives/Composer/slate}/plugins/custom-links.js +9 -4
  84. package/dist/primitives/Composer/slate/plugins/custom-links.js.map +1 -0
  85. package/dist/{slate → primitives/Composer/slate}/plugins/mentions.cjs +9 -10
  86. package/dist/primitives/Composer/slate/plugins/mentions.cjs.map +1 -0
  87. package/dist/{slate → primitives/Composer/slate}/plugins/mentions.js +6 -6
  88. package/dist/primitives/Composer/slate/plugins/mentions.js.map +1 -0
  89. package/dist/{slate → primitives/Composer/slate}/plugins/paste.cjs +1 -1
  90. package/dist/primitives/Composer/slate/plugins/paste.cjs.map +1 -0
  91. package/dist/{slate → primitives/Composer/slate}/plugins/paste.js +1 -1
  92. package/dist/primitives/Composer/slate/plugins/paste.js.map +1 -0
  93. package/dist/primitives/Composer/utils.cjs +4 -4
  94. package/dist/primitives/Composer/utils.cjs.map +1 -1
  95. package/dist/primitives/Composer/utils.js +4 -4
  96. package/dist/primitives/Composer/utils.js.map +1 -1
  97. package/dist/primitives/index.cjs +2 -5
  98. package/dist/primitives/index.cjs.map +1 -1
  99. package/dist/primitives/index.d.cts +33 -62
  100. package/dist/primitives/index.d.ts +33 -62
  101. package/dist/primitives/index.js +6 -5
  102. package/dist/primitives/index.js.map +1 -1
  103. package/dist/primitives/internal/{Collapsible.cjs → Collapsible/index.cjs} +23 -17
  104. package/dist/primitives/internal/Collapsible/index.cjs.map +1 -0
  105. package/dist/primitives/internal/{Collapsible.js → Collapsible/index.js} +23 -17
  106. package/dist/primitives/internal/Collapsible/index.js.map +1 -0
  107. package/dist/primitives/slate/plugins/empty-clear-formatting.cjs.map +1 -0
  108. package/dist/primitives/slate/plugins/empty-clear-formatting.js.map +1 -0
  109. package/dist/{slate → primitives/slate}/plugins/normalize.cjs +0 -5
  110. package/dist/primitives/slate/plugins/normalize.cjs.map +1 -0
  111. package/dist/{slate → primitives/slate}/plugins/normalize.js +0 -5
  112. package/dist/primitives/slate/plugins/normalize.js.map +1 -0
  113. package/dist/primitives/slate/utils/get-character.cjs.map +1 -0
  114. package/dist/primitives/slate/utils/get-character.js.map +1 -0
  115. package/dist/primitives/slate/utils/get-dom-range.cjs.map +1 -0
  116. package/dist/primitives/slate/utils/get-dom-range.js.map +1 -0
  117. package/dist/primitives/slate/utils/get-match-range.cjs.map +1 -0
  118. package/dist/primitives/slate/utils/get-match-range.js.map +1 -0
  119. package/dist/primitives/slate/utils/is-empty-string.cjs.map +1 -0
  120. package/dist/primitives/slate/utils/is-empty-string.js.map +1 -0
  121. package/dist/primitives/slate/utils/is-empty.cjs.map +1 -0
  122. package/dist/primitives/slate/utils/is-empty.js.map +1 -0
  123. package/dist/primitives/slate/utils/is-text.cjs.map +1 -0
  124. package/dist/primitives/slate/utils/is-text.js.map +1 -0
  125. package/dist/primitives/slate/utils/is-whitespace-character.cjs.map +1 -0
  126. package/dist/primitives/slate/utils/is-whitespace-character.js.map +1 -0
  127. package/dist/{slate → primitives/slate}/utils/marks.cjs +9 -9
  128. package/dist/primitives/slate/utils/marks.cjs.map +1 -0
  129. package/dist/{slate → primitives/slate}/utils/marks.js +9 -9
  130. package/dist/primitives/slate/utils/marks.js.map +1 -0
  131. package/dist/primitives/slate/utils/selection-contains-inlines.cjs.map +1 -0
  132. package/dist/primitives/slate/utils/selection-contains-inlines.js.map +1 -0
  133. package/dist/version.cjs +1 -1
  134. package/dist/version.js +1 -1
  135. package/package.json +4 -4
  136. package/src/styles/index.css +120 -133
  137. package/src/styles/utils.css +7 -2
  138. package/styles.css +1 -1
  139. package/styles.css.map +1 -1
  140. package/dist/components/AiChat/AiChat.cjs +0 -211
  141. package/dist/components/AiChat/AiChat.cjs.map +0 -1
  142. package/dist/components/AiChat/AiChat.js +0 -209
  143. package/dist/components/AiChat/AiChat.js.map +0 -1
  144. package/dist/primitives/Chat/Composer/index.cjs +0 -323
  145. package/dist/primitives/Chat/Composer/index.cjs.map +0 -1
  146. package/dist/primitives/Chat/Composer/index.js +0 -315
  147. package/dist/primitives/Chat/Composer/index.js.map +0 -1
  148. package/dist/primitives/internal/Collapsible.cjs.map +0 -1
  149. package/dist/primitives/internal/Collapsible.js.map +0 -1
  150. package/dist/slate/plugins/auto-formatting.cjs.map +0 -1
  151. package/dist/slate/plugins/auto-formatting.js.map +0 -1
  152. package/dist/slate/plugins/auto-links.cjs.map +0 -1
  153. package/dist/slate/plugins/auto-links.js.map +0 -1
  154. package/dist/slate/plugins/custom-links.cjs.map +0 -1
  155. package/dist/slate/plugins/custom-links.js.map +0 -1
  156. package/dist/slate/plugins/empty-clear-formatting.cjs.map +0 -1
  157. package/dist/slate/plugins/empty-clear-formatting.js.map +0 -1
  158. package/dist/slate/plugins/mentions.cjs.map +0 -1
  159. package/dist/slate/plugins/mentions.js.map +0 -1
  160. package/dist/slate/plugins/normalize.cjs.map +0 -1
  161. package/dist/slate/plugins/normalize.js.map +0 -1
  162. package/dist/slate/plugins/paste.cjs.map +0 -1
  163. package/dist/slate/plugins/paste.js.map +0 -1
  164. package/dist/slate/utils/get-character.cjs.map +0 -1
  165. package/dist/slate/utils/get-character.js.map +0 -1
  166. package/dist/slate/utils/get-dom-range.cjs.map +0 -1
  167. package/dist/slate/utils/get-dom-range.js.map +0 -1
  168. package/dist/slate/utils/get-match-range.cjs.map +0 -1
  169. package/dist/slate/utils/get-match-range.js.map +0 -1
  170. package/dist/slate/utils/is-empty-string.cjs.map +0 -1
  171. package/dist/slate/utils/is-empty-string.js.map +0 -1
  172. package/dist/slate/utils/is-empty.cjs.map +0 -1
  173. package/dist/slate/utils/is-empty.js.map +0 -1
  174. package/dist/slate/utils/is-text.cjs.map +0 -1
  175. package/dist/slate/utils/is-text.js.map +0 -1
  176. package/dist/slate/utils/is-whitespace-character.cjs.map +0 -1
  177. package/dist/slate/utils/is-whitespace-character.js.map +0 -1
  178. package/dist/slate/utils/marks.cjs.map +0 -1
  179. package/dist/slate/utils/marks.js.map +0 -1
  180. package/dist/slate/utils/selection-contains-inlines.cjs.map +0 -1
  181. package/dist/slate/utils/selection-contains-inlines.js.map +0 -1
  182. /package/dist/{slate → primitives/slate}/plugins/empty-clear-formatting.cjs +0 -0
  183. /package/dist/{slate → primitives/slate}/plugins/empty-clear-formatting.js +0 -0
  184. /package/dist/{slate → primitives/slate}/utils/get-character.cjs +0 -0
  185. /package/dist/{slate → primitives/slate}/utils/get-character.js +0 -0
  186. /package/dist/{slate → primitives/slate}/utils/get-dom-range.cjs +0 -0
  187. /package/dist/{slate → primitives/slate}/utils/get-dom-range.js +0 -0
  188. /package/dist/{slate → primitives/slate}/utils/get-match-range.cjs +0 -0
  189. /package/dist/{slate → primitives/slate}/utils/get-match-range.js +0 -0
  190. /package/dist/{slate → primitives/slate}/utils/is-empty-string.cjs +0 -0
  191. /package/dist/{slate → primitives/slate}/utils/is-empty-string.js +0 -0
  192. /package/dist/{slate → primitives/slate}/utils/is-empty.cjs +0 -0
  193. /package/dist/{slate → primitives/slate}/utils/is-empty.js +0 -0
  194. /package/dist/{slate → primitives/slate}/utils/is-text.cjs +0 -0
  195. /package/dist/{slate → primitives/slate}/utils/is-text.js +0 -0
  196. /package/dist/{slate → primitives/slate}/utils/is-whitespace-character.cjs +0 -0
  197. /package/dist/{slate → primitives/slate}/utils/is-whitespace-character.js +0 -0
  198. /package/dist/{slate → primitives/slate}/utils/selection-contains-inlines.cjs +0 -0
  199. /package/dist/{slate → primitives/slate}/utils/selection-contains-inlines.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"mentions.js","sources":["../../../src/slate/plugins/mentions.ts"],"sourcesContent":["import type { Node as SlateNode } from \"slate\";\nimport {\n Editor as SlateEditor,\n Element as SlateElement,\n Range as SlateRange,\n Transforms as SlateTransforms,\n} from \"slate\";\n\nimport type { ComposerBodyMention } from \"../../types\";\nimport { getCharacterAfter, getCharacterBefore } from \"../utils/get-character\";\nimport { getMatchRange } from \"../utils/get-match-range\";\nimport { isEmptyString } from \"../utils/is-empty-string\";\nimport { isWhitespaceCharacter } from \"../utils/is-whitespace-character\";\n\nexport const MENTION_CHARACTER = \"@\";\n\nexport type MentionDraft = {\n range: SlateRange;\n text: string;\n};\n\nexport function getMentionDraftAtSelection(\n editor: SlateEditor\n): MentionDraft | undefined {\n const { selection } = editor;\n\n if (!selection || !SlateRange.isCollapsed(selection)) {\n return;\n }\n\n // Walk backwards from the selection until \"@\" is found, unless the character\n // before isn't whitespace (or \"@\" is the block's first character)\n const match = getMatchRange(editor, selection, [\"@\"], {\n include: true,\n allowConsecutiveWhitespace: false,\n ignoreTerminator: (_, point) => {\n const characterBefore = getCharacterBefore(editor, point);\n\n // Ignore \"@\" if it's preceded by a non-whitespace character\n if (characterBefore && !isWhitespaceCharacter(characterBefore.text)) {\n return true;\n }\n\n return false;\n },\n });\n\n if (!match) {\n return;\n }\n\n const matchText = SlateEditor.string(editor, match);\n\n // Check if the match starts with the mention character (not followed by a whitespace character)\n if (\n !matchText.startsWith(MENTION_CHARACTER) ||\n (matchText.length > 1 && isWhitespaceCharacter(matchText[1]))\n ) {\n return;\n }\n\n return {\n range: match,\n // Exclude the mention character from the text\n text: matchText.substring(1),\n };\n}\n\nexport function isComposerBodyMention(\n node: SlateNode\n): node is ComposerBodyMention {\n return SlateElement.isElement(node) && node.type === \"mention\";\n}\n\nexport function insertMention(editor: SlateEditor, userId: string) {\n const mention: ComposerBodyMention = {\n type: \"mention\",\n id: userId,\n children: [{ text: \"\" }],\n };\n\n // Insert the mention\n SlateTransforms.insertNodes(editor, mention);\n SlateTransforms.move(editor);\n\n const afterCharacter = editor.selection\n ? getCharacterAfter(editor, editor.selection)\n : undefined;\n\n if (!afterCharacter || afterCharacter.void) {\n // Insert a following space if needed\n SlateTransforms.insertText(editor, \" \");\n } else if (isEmptyString(afterCharacter.text)) {\n // Move the selection if it's already followed by a space\n SlateTransforms.move(editor);\n }\n}\n\nexport function insertMentionCharacter(editor: SlateEditor) {\n if (!editor.selection) {\n return;\n }\n\n // Check if the selection is preceded or followed by a non-whitespace character\n const beforeCharacter = getCharacterBefore(editor, editor.selection, {\n filterVoids: true,\n });\n const afterCharacter = getCharacterAfter(editor, editor.selection, {\n filterVoids: true,\n });\n const shouldInsertSpaceBefore =\n beforeCharacter && !isEmptyString(beforeCharacter.text);\n const shouldInsertSpaceAfter =\n afterCharacter && !isEmptyString(afterCharacter.text);\n\n if (!SlateRange.isCollapsed(editor.selection)) {\n const text =\n (shouldInsertSpaceBefore ? \" \" : \"\") +\n MENTION_CHARACTER +\n (shouldInsertSpaceAfter ? \" \" : \"\");\n\n // If the selection is collapsed, insert the mention character at the current selection\n editor.insertText(text);\n\n // If a following space was inserted, move the selection back by one\n if (shouldInsertSpaceAfter) {\n SlateTransforms.move(editor, {\n distance: 1,\n unit: \"character\",\n reverse: true,\n });\n }\n } else {\n const beforeText = (shouldInsertSpaceBefore ? \" \" : \"\") + MENTION_CHARACTER;\n\n // If the selection is not collapsed, insert the mention character before the selection\n editor.insertText(beforeText, { at: SlateRange.start(editor.selection) });\n\n if (shouldInsertSpaceAfter) {\n editor.insertText(\" \", { at: SlateRange.end(editor.selection) });\n }\n\n // Collapse the selection at its end\n SlateTransforms.collapse(editor, { edge: \"end\" });\n }\n}\n\nexport function withMentions<T extends SlateEditor>(editor: T): T {\n const { isInline, isVoid, markableVoid, deleteBackward } = editor;\n\n editor.isInline = (element) => {\n return isComposerBodyMention(element) || isInline(element);\n };\n\n editor.isVoid = (element) => {\n return isComposerBodyMention(element) || isVoid(element);\n };\n\n editor.markableVoid = (element) => {\n return isComposerBodyMention(element) || markableVoid(element);\n };\n\n editor.deleteBackward = (unit) => {\n const { selection } = editor;\n\n if (selection && SlateRange.isCollapsed(selection)) {\n const [mention] = SlateEditor.nodes(editor, {\n at:\n unit === \"character\"\n ? SlateEditor.before(editor, selection, { unit: \"character\" })\n : selection,\n match: isComposerBodyMention,\n });\n\n deleteBackward(unit);\n\n if (mention) {\n SlateTransforms.insertText(editor, MENTION_CHARACTER);\n }\n } else {\n deleteBackward(unit);\n }\n };\n\n return editor;\n}\n"],"names":["SlateRange","SlateEditor","SlateElement","SlateTransforms"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalize.cjs","sources":["../../../src/slate/plugins/normalize.ts"],"sourcesContent":["import type { Editor } from \"slate\";\nimport { Element, Node, Transforms } from \"slate\";\n\nexport function withNormalize(editor: Editor) {\n const { normalizeNode } = editor;\n\n editor.normalizeNode = (entry) => {\n const [node, path] = entry;\n\n // Paragraphs should only contain inline elements\n if (Element.isElement(node) && node.type === \"paragraph\") {\n for (const [child, childPath] of Node.children(editor, path)) {\n if (Element.isElement(child) && !editor.isInline(child)) {\n Transforms.unwrapNodes(editor, { at: childPath });\n return;\n }\n }\n }\n\n // Links cannot be nested or empty\n if (\n Element.isElement(node) &&\n (node.type === \"auto-link\" || node.type === \"custom-link\")\n ) {\n if (\n node.children.length === 0 ||\n (node.children.length === 1 && node.children[0]?.text === \"\")\n ) {\n Transforms.removeNodes(editor, { at: path });\n }\n }\n\n normalizeNode(entry);\n };\n\n return editor;\n}\n"],"names":["Element","Node","Transforms"],"mappings":";;;;AAGO,SAAS,cAAc,MAAgB,EAAA;AAC5C,EAAM,MAAA,EAAE,eAAkB,GAAA,MAAA,CAAA;AAE1B,EAAO,MAAA,CAAA,aAAA,GAAgB,CAAC,KAAU,KAAA;AAChC,IAAM,MAAA,CAAC,IAAM,EAAA,IAAI,CAAI,GAAA,KAAA,CAAA;AAGrB,IAAA,IAAIA,cAAQ,SAAU,CAAA,IAAI,CAAK,IAAA,IAAA,CAAK,SAAS,WAAa,EAAA;AACxD,MAAW,KAAA,MAAA,CAAC,OAAO,SAAS,CAAA,IAAKC,WAAK,QAAS,CAAA,MAAA,EAAQ,IAAI,CAAG,EAAA;AAC5D,QAAI,IAAAD,aAAA,CAAQ,UAAU,KAAK,CAAA,IAAK,CAAC,MAAO,CAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACvD,UAAAE,gBAAA,CAAW,WAAY,CAAA,MAAA,EAAQ,EAAE,EAAA,EAAI,WAAW,CAAA,CAAA;AAChD,UAAA,OAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAGA,IACE,IAAAF,aAAA,CAAQ,UAAU,IAAI,CAAA,KACrB,KAAK,IAAS,KAAA,WAAA,IAAe,IAAK,CAAA,IAAA,KAAS,aAC5C,CAAA,EAAA;AACA,MAAA,IACE,IAAK,CAAA,QAAA,CAAS,MAAW,KAAA,CAAA,IACxB,IAAK,CAAA,QAAA,CAAS,MAAW,KAAA,CAAA,IAAK,IAAK,CAAA,QAAA,CAAS,CAAI,CAAA,EAAA,IAAA,KAAS,EAC1D,EAAA;AACA,QAAAE,gBAAA,CAAW,WAAY,CAAA,MAAA,EAAQ,EAAE,EAAA,EAAI,MAAM,CAAA,CAAA;AAAA,OAC7C;AAAA,KACF;AAEA,IAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalize.js","sources":["../../../src/slate/plugins/normalize.ts"],"sourcesContent":["import type { Editor } from \"slate\";\nimport { Element, Node, Transforms } from \"slate\";\n\nexport function withNormalize(editor: Editor) {\n const { normalizeNode } = editor;\n\n editor.normalizeNode = (entry) => {\n const [node, path] = entry;\n\n // Paragraphs should only contain inline elements\n if (Element.isElement(node) && node.type === \"paragraph\") {\n for (const [child, childPath] of Node.children(editor, path)) {\n if (Element.isElement(child) && !editor.isInline(child)) {\n Transforms.unwrapNodes(editor, { at: childPath });\n return;\n }\n }\n }\n\n // Links cannot be nested or empty\n if (\n Element.isElement(node) &&\n (node.type === \"auto-link\" || node.type === \"custom-link\")\n ) {\n if (\n node.children.length === 0 ||\n (node.children.length === 1 && node.children[0]?.text === \"\")\n ) {\n Transforms.removeNodes(editor, { at: path });\n }\n }\n\n normalizeNode(entry);\n };\n\n return editor;\n}\n"],"names":[],"mappings":";;AAGO,SAAS,cAAc,MAAgB,EAAA;AAC5C,EAAM,MAAA,EAAE,eAAkB,GAAA,MAAA,CAAA;AAE1B,EAAO,MAAA,CAAA,aAAA,GAAgB,CAAC,KAAU,KAAA;AAChC,IAAM,MAAA,CAAC,IAAM,EAAA,IAAI,CAAI,GAAA,KAAA,CAAA;AAGrB,IAAA,IAAI,QAAQ,SAAU,CAAA,IAAI,CAAK,IAAA,IAAA,CAAK,SAAS,WAAa,EAAA;AACxD,MAAW,KAAA,MAAA,CAAC,OAAO,SAAS,CAAA,IAAK,KAAK,QAAS,CAAA,MAAA,EAAQ,IAAI,CAAG,EAAA;AAC5D,QAAI,IAAA,OAAA,CAAQ,UAAU,KAAK,CAAA,IAAK,CAAC,MAAO,CAAA,QAAA,CAAS,KAAK,CAAG,EAAA;AACvD,UAAA,UAAA,CAAW,WAAY,CAAA,MAAA,EAAQ,EAAE,EAAA,EAAI,WAAW,CAAA,CAAA;AAChD,UAAA,OAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAGA,IACE,IAAA,OAAA,CAAQ,UAAU,IAAI,CAAA,KACrB,KAAK,IAAS,KAAA,WAAA,IAAe,IAAK,CAAA,IAAA,KAAS,aAC5C,CAAA,EAAA;AACA,MAAA,IACE,IAAK,CAAA,QAAA,CAAS,MAAW,KAAA,CAAA,IACxB,IAAK,CAAA,QAAA,CAAS,MAAW,KAAA,CAAA,IAAK,IAAK,CAAA,QAAA,CAAS,CAAI,CAAA,EAAA,IAAA,KAAS,EAC1D,EAAA;AACA,QAAA,UAAA,CAAW,WAAY,CAAA,MAAA,EAAQ,EAAE,EAAA,EAAI,MAAM,CAAA,CAAA;AAAA,OAC7C;AAAA,KACF;AAEA,IAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"paste.cjs","sources":["../../../src/slate/plugins/paste.ts"],"sourcesContent":["import type { Descendant, Editor, Node as SlateNode } from \"slate\";\nimport { Transforms } from \"slate\";\nimport { jsx } from \"slate-hyperscript\";\n\nimport type {\n ComposerBodyAutoLink,\n ComposerBodyBlockElement,\n ComposerBodyCustomLink,\n ComposerBodyInlineElement,\n ComposerBodyParagraph,\n ComposerBodyText,\n} from \"../../types\";\nimport { getFiles } from \"../../utils/data-transfer\";\n\n// Based on: https://github.com/ianstormtaylor/slate/blob/main/site/examples/paste-html.tsx\n\nconst NEWLINE_REGEX = /[\\r\\n]/g;\nconst WHITESPACE_REGEX = /\\s+/g;\n\ntype OmitTextChildren<T> = Omit<T, \"text\" | \"children\">;\n\ntype ComposerBodyElementTag = OmitTextChildren<\n ComposerBodyBlockElement | ComposerBodyInlineElement\n>;\ntype ComposerBodyTextTag = OmitTextChildren<ComposerBodyText>;\n\ntype DeserializedNode =\n | null\n | string\n | Descendant\n | Descendant[]\n | DeserializedNode[];\n\nfunction areUrlsEqual(a: string, b: string) {\n try {\n const urlA = new URL(a);\n const urlB = new URL(b);\n\n return urlA.origin === urlB.origin && urlA.pathname === urlB.pathname;\n } catch {\n return false;\n }\n}\n\nconst createParagraphElement = (): OmitTextChildren<ComposerBodyParagraph> => ({\n type: \"paragraph\",\n});\n\nconst ELEMENT_TAGS = {\n A: (\n element\n ): OmitTextChildren<ComposerBodyCustomLink | ComposerBodyAutoLink> => {\n const href = element.getAttribute(\"href\");\n const innerText = element.innerText;\n\n return {\n type: href && areUrlsEqual(href, innerText) ? \"auto-link\" : \"custom-link\",\n url: href ?? \"\",\n };\n },\n P: createParagraphElement,\n // Falling back to paragraphs for unsupported elements\n BLOCKQUOTE: createParagraphElement,\n H1: createParagraphElement,\n H2: createParagraphElement,\n H3: createParagraphElement,\n H4: createParagraphElement,\n H5: createParagraphElement,\n H6: createParagraphElement,\n LI: createParagraphElement,\n} as Record<string, (node: HTMLElement) => ComposerBodyElementTag>;\n\nconst TEXT_TAGS = {\n CODE: (): ComposerBodyTextTag => ({ code: true }),\n DEL: (): ComposerBodyTextTag => ({ strikethrough: true }),\n EM: (): ComposerBodyTextTag => ({ italic: true }),\n I: (): ComposerBodyTextTag => ({ italic: true }),\n S: (): ComposerBodyTextTag => ({ strikethrough: true }),\n STRONG: (): ComposerBodyTextTag => ({ bold: true }),\n B: (): ComposerBodyTextTag => ({ bold: true }),\n} as Record<string, (node: HTMLElement) => ComposerBodyTextTag>;\n\nfunction flattenListItems(node: HTMLElement): HTMLElement[] {\n const listItems: HTMLElement[] = [];\n\n if (node.nodeName === \"LI\") {\n listItems.push(node);\n }\n\n node.childNodes.forEach((child) => {\n if (child.nodeType === 1) {\n listItems.push(...flattenListItems(child as HTMLElement));\n }\n });\n\n return listItems;\n}\n\nfunction jsxTextChildren(\n children: DeserializedNode[],\n attrs?: ComposerBodyTextTag\n) {\n return children.map((child) => jsx(\"text\", attrs, child));\n}\n\nfunction deserialize(node: Node): DeserializedNode {\n if (node.nodeType === 3) {\n let text = node.textContent;\n const isMultiLine = text && NEWLINE_REGEX.test(text);\n\n if (text && isMultiLine) {\n text = text.replace(WHITESPACE_REGEX, \" \").trim();\n }\n\n return text ? { text } : null;\n } else if (node.nodeType !== 1) {\n return null;\n } else if (node.nodeName === \"BR\") {\n // Insert a new paragraph\n return jsx(\"element\", createParagraphElement(), []);\n }\n\n const childNodes = Array.from(node.childNodes);\n let children = childNodes.map(deserialize).flat();\n\n // Lists aren't supported (yet), so we flatten them into paragraphs\n if (node.nodeName === \"UL\" || node.nodeName === \"OL\") {\n const listItems = flattenListItems(node as HTMLElement);\n\n children = listItems.map((li) => deserialize(li)).flat();\n }\n\n if (children.length === 0) {\n children = [{ text: \"\" }];\n }\n\n if (node.nodeName === \"BODY\") {\n // If the body only contains text nodes, we wrap it in a paragraph\n if (\n children.length > 0 &&\n children.every((child) => typeof child === \"string\")\n ) {\n children = [\n { type: \"paragraph\", children: [{ text: children.join(\"\") }] },\n ];\n }\n\n return jsx(\n \"fragment\",\n {},\n children.filter((child) => typeof child !== \"string\")\n );\n }\n\n if (ELEMENT_TAGS[node.nodeName]) {\n const attrs = ELEMENT_TAGS[node.nodeName]!(node as HTMLElement);\n\n return jsx(\"element\", attrs, children);\n }\n\n if (TEXT_TAGS[node.nodeName]) {\n const attrs = TEXT_TAGS[node.nodeName]!(node as HTMLElement);\n\n // If there is at least one non-text child, we skip this node\n if (\n children.some(\n (child) => child && typeof child !== \"string\" && \"type\" in child\n )\n ) {\n return jsx(\"fragment\", {}, children);\n }\n\n return jsxTextChildren(children, attrs);\n }\n\n // Guess inline marks based on styles\n if (node.nodeName === \"SPAN\") {\n const style = (node as HTMLElement).style;\n const attrs: ComposerBodyTextTag = {};\n\n if (\n style.fontWeight === \"bold\" ||\n style.fontWeight === \"700\" ||\n style.fontWeight === \"800\" ||\n style.fontWeight === \"900\"\n ) {\n attrs.bold = true;\n }\n\n if (style.fontStyle === \"italic\") {\n attrs.italic = true;\n }\n\n if (style.textDecoration === \"line-through\") {\n attrs.strikethrough = true;\n }\n\n return jsxTextChildren(children, attrs);\n }\n\n return children as DeserializedNode;\n}\n\nexport function withPaste(\n editor: Editor,\n {\n createAttachments,\n pasteFilesAsAttachments,\n }: {\n createAttachments: (files: File[]) => void;\n pasteFilesAsAttachments?: boolean;\n }\n) {\n const { insertData } = editor;\n\n editor.insertData = (data) => {\n // Create attachments from files when pasting\n if (data.types.includes(\"Files\") && pasteFilesAsAttachments) {\n const files = getFiles(data);\n\n if (files.length > 0) {\n createAttachments(files);\n\n return;\n }\n }\n\n // Deserialize rich text from HTML when pasting (unless there's also Slate data)\n if (\n data.types.includes(\"text/html\") &&\n !data.types.includes(\"application/x-slate-fragment\")\n ) {\n const html = data.getData(\"text/html\");\n\n try {\n const { body } = new DOMParser().parseFromString(html, \"text/html\");\n\n // WebKit browsers can add a trailing `<br>`\n body.querySelector(\"br.Apple-interchange-newline\")?.remove();\n\n // Google Docs can use `<b>` as a wrapper for the entire document,\n // it shouldn't be supported so we remove it\n if (body.children.length === 1 && body.children[0]?.nodeName === \"B\") {\n const wrapper = body.children[0] as HTMLElement;\n\n while (wrapper.firstChild) {\n body.insertBefore(wrapper.firstChild, wrapper);\n }\n\n body.removeChild(wrapper);\n }\n\n const fragment = deserialize(body);\n\n if (fragment !== null && Array.isArray(fragment)) {\n Transforms.insertFragment(editor, fragment as SlateNode[]);\n\n return;\n }\n } catch {\n // Fallback to default `insertData` behavior\n }\n }\n\n // Default `insertData` behavior\n insertData(data);\n };\n\n return editor;\n}\n"],"names":["jsx","getFiles","Transforms"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"paste.js","sources":["../../../src/slate/plugins/paste.ts"],"sourcesContent":["import type { Descendant, Editor, Node as SlateNode } from \"slate\";\nimport { Transforms } from \"slate\";\nimport { jsx } from \"slate-hyperscript\";\n\nimport type {\n ComposerBodyAutoLink,\n ComposerBodyBlockElement,\n ComposerBodyCustomLink,\n ComposerBodyInlineElement,\n ComposerBodyParagraph,\n ComposerBodyText,\n} from \"../../types\";\nimport { getFiles } from \"../../utils/data-transfer\";\n\n// Based on: https://github.com/ianstormtaylor/slate/blob/main/site/examples/paste-html.tsx\n\nconst NEWLINE_REGEX = /[\\r\\n]/g;\nconst WHITESPACE_REGEX = /\\s+/g;\n\ntype OmitTextChildren<T> = Omit<T, \"text\" | \"children\">;\n\ntype ComposerBodyElementTag = OmitTextChildren<\n ComposerBodyBlockElement | ComposerBodyInlineElement\n>;\ntype ComposerBodyTextTag = OmitTextChildren<ComposerBodyText>;\n\ntype DeserializedNode =\n | null\n | string\n | Descendant\n | Descendant[]\n | DeserializedNode[];\n\nfunction areUrlsEqual(a: string, b: string) {\n try {\n const urlA = new URL(a);\n const urlB = new URL(b);\n\n return urlA.origin === urlB.origin && urlA.pathname === urlB.pathname;\n } catch {\n return false;\n }\n}\n\nconst createParagraphElement = (): OmitTextChildren<ComposerBodyParagraph> => ({\n type: \"paragraph\",\n});\n\nconst ELEMENT_TAGS = {\n A: (\n element\n ): OmitTextChildren<ComposerBodyCustomLink | ComposerBodyAutoLink> => {\n const href = element.getAttribute(\"href\");\n const innerText = element.innerText;\n\n return {\n type: href && areUrlsEqual(href, innerText) ? \"auto-link\" : \"custom-link\",\n url: href ?? \"\",\n };\n },\n P: createParagraphElement,\n // Falling back to paragraphs for unsupported elements\n BLOCKQUOTE: createParagraphElement,\n H1: createParagraphElement,\n H2: createParagraphElement,\n H3: createParagraphElement,\n H4: createParagraphElement,\n H5: createParagraphElement,\n H6: createParagraphElement,\n LI: createParagraphElement,\n} as Record<string, (node: HTMLElement) => ComposerBodyElementTag>;\n\nconst TEXT_TAGS = {\n CODE: (): ComposerBodyTextTag => ({ code: true }),\n DEL: (): ComposerBodyTextTag => ({ strikethrough: true }),\n EM: (): ComposerBodyTextTag => ({ italic: true }),\n I: (): ComposerBodyTextTag => ({ italic: true }),\n S: (): ComposerBodyTextTag => ({ strikethrough: true }),\n STRONG: (): ComposerBodyTextTag => ({ bold: true }),\n B: (): ComposerBodyTextTag => ({ bold: true }),\n} as Record<string, (node: HTMLElement) => ComposerBodyTextTag>;\n\nfunction flattenListItems(node: HTMLElement): HTMLElement[] {\n const listItems: HTMLElement[] = [];\n\n if (node.nodeName === \"LI\") {\n listItems.push(node);\n }\n\n node.childNodes.forEach((child) => {\n if (child.nodeType === 1) {\n listItems.push(...flattenListItems(child as HTMLElement));\n }\n });\n\n return listItems;\n}\n\nfunction jsxTextChildren(\n children: DeserializedNode[],\n attrs?: ComposerBodyTextTag\n) {\n return children.map((child) => jsx(\"text\", attrs, child));\n}\n\nfunction deserialize(node: Node): DeserializedNode {\n if (node.nodeType === 3) {\n let text = node.textContent;\n const isMultiLine = text && NEWLINE_REGEX.test(text);\n\n if (text && isMultiLine) {\n text = text.replace(WHITESPACE_REGEX, \" \").trim();\n }\n\n return text ? { text } : null;\n } else if (node.nodeType !== 1) {\n return null;\n } else if (node.nodeName === \"BR\") {\n // Insert a new paragraph\n return jsx(\"element\", createParagraphElement(), []);\n }\n\n const childNodes = Array.from(node.childNodes);\n let children = childNodes.map(deserialize).flat();\n\n // Lists aren't supported (yet), so we flatten them into paragraphs\n if (node.nodeName === \"UL\" || node.nodeName === \"OL\") {\n const listItems = flattenListItems(node as HTMLElement);\n\n children = listItems.map((li) => deserialize(li)).flat();\n }\n\n if (children.length === 0) {\n children = [{ text: \"\" }];\n }\n\n if (node.nodeName === \"BODY\") {\n // If the body only contains text nodes, we wrap it in a paragraph\n if (\n children.length > 0 &&\n children.every((child) => typeof child === \"string\")\n ) {\n children = [\n { type: \"paragraph\", children: [{ text: children.join(\"\") }] },\n ];\n }\n\n return jsx(\n \"fragment\",\n {},\n children.filter((child) => typeof child !== \"string\")\n );\n }\n\n if (ELEMENT_TAGS[node.nodeName]) {\n const attrs = ELEMENT_TAGS[node.nodeName]!(node as HTMLElement);\n\n return jsx(\"element\", attrs, children);\n }\n\n if (TEXT_TAGS[node.nodeName]) {\n const attrs = TEXT_TAGS[node.nodeName]!(node as HTMLElement);\n\n // If there is at least one non-text child, we skip this node\n if (\n children.some(\n (child) => child && typeof child !== \"string\" && \"type\" in child\n )\n ) {\n return jsx(\"fragment\", {}, children);\n }\n\n return jsxTextChildren(children, attrs);\n }\n\n // Guess inline marks based on styles\n if (node.nodeName === \"SPAN\") {\n const style = (node as HTMLElement).style;\n const attrs: ComposerBodyTextTag = {};\n\n if (\n style.fontWeight === \"bold\" ||\n style.fontWeight === \"700\" ||\n style.fontWeight === \"800\" ||\n style.fontWeight === \"900\"\n ) {\n attrs.bold = true;\n }\n\n if (style.fontStyle === \"italic\") {\n attrs.italic = true;\n }\n\n if (style.textDecoration === \"line-through\") {\n attrs.strikethrough = true;\n }\n\n return jsxTextChildren(children, attrs);\n }\n\n return children as DeserializedNode;\n}\n\nexport function withPaste(\n editor: Editor,\n {\n createAttachments,\n pasteFilesAsAttachments,\n }: {\n createAttachments: (files: File[]) => void;\n pasteFilesAsAttachments?: boolean;\n }\n) {\n const { insertData } = editor;\n\n editor.insertData = (data) => {\n // Create attachments from files when pasting\n if (data.types.includes(\"Files\") && pasteFilesAsAttachments) {\n const files = getFiles(data);\n\n if (files.length > 0) {\n createAttachments(files);\n\n return;\n }\n }\n\n // Deserialize rich text from HTML when pasting (unless there's also Slate data)\n if (\n data.types.includes(\"text/html\") &&\n !data.types.includes(\"application/x-slate-fragment\")\n ) {\n const html = data.getData(\"text/html\");\n\n try {\n const { body } = new DOMParser().parseFromString(html, \"text/html\");\n\n // WebKit browsers can add a trailing `<br>`\n body.querySelector(\"br.Apple-interchange-newline\")?.remove();\n\n // Google Docs can use `<b>` as a wrapper for the entire document,\n // it shouldn't be supported so we remove it\n if (body.children.length === 1 && body.children[0]?.nodeName === \"B\") {\n const wrapper = body.children[0] as HTMLElement;\n\n while (wrapper.firstChild) {\n body.insertBefore(wrapper.firstChild, wrapper);\n }\n\n body.removeChild(wrapper);\n }\n\n const fragment = deserialize(body);\n\n if (fragment !== null && Array.isArray(fragment)) {\n Transforms.insertFragment(editor, fragment as SlateNode[]);\n\n return;\n }\n } catch {\n // Fallback to default `insertData` behavior\n }\n }\n\n // Default `insertData` behavior\n insertData(data);\n };\n\n return editor;\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-character.cjs","sources":["../../../src/slate/utils/get-character.ts"],"sourcesContent":["import type { Location as SlateLocation } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\ninterface Options {\n filterVoids?: boolean;\n}\n\nexport function getCharacterBefore<T extends SlateEditor>(\n editor: T,\n at: SlateLocation,\n options: Options = {}\n) {\n const { filterVoids } = options;\n const before = SlateEditor.before(editor, at, {\n unit: \"character\",\n voids: filterVoids,\n });\n\n if (before) {\n const range = SlateEditor.range(\n editor,\n before,\n SlateRange.isRange(at) ? SlateRange.start(at) : at\n );\n const text = SlateEditor.string(editor, range);\n\n return {\n range,\n text,\n void: text.length === 0,\n };\n }\n\n return;\n}\n\nexport function getCharacterAfter<T extends SlateEditor>(\n editor: T,\n at: SlateLocation,\n options: Options = {}\n) {\n const { filterVoids } = options;\n const after = SlateEditor.after(editor, at, {\n unit: \"character\",\n voids: filterVoids,\n });\n\n if (after) {\n const range = SlateEditor.range(\n editor,\n after,\n SlateRange.isRange(at) ? SlateRange.end(at) : at\n );\n const text = SlateEditor.string(editor, range);\n\n return {\n range,\n text,\n void: text.length === 0,\n };\n }\n\n return;\n}\n"],"names":["SlateEditor","SlateRange"],"mappings":";;;;AAOO,SAAS,kBACd,CAAA,MAAA,EACA,EACA,EAAA,OAAA,GAAmB,EACnB,EAAA;AACA,EAAM,MAAA,EAAE,aAAgB,GAAA,OAAA,CAAA;AACxB,EAAA,MAAM,MAAS,GAAAA,YAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,EAAI,EAAA;AAAA,IAC5C,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,MAAM,QAAQA,YAAY,CAAA,KAAA;AAAA,MACxB,MAAA;AAAA,MACA,MAAA;AAAA,MACAC,YAAW,OAAQ,CAAA,EAAE,IAAIA,WAAW,CAAA,KAAA,CAAM,EAAE,CAAI,GAAA,EAAA;AAAA,KAClD,CAAA;AACA,IAAA,MAAM,IAAO,GAAAD,YAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAE7C,IAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAM,KAAK,MAAW,KAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACF;AAEA,EAAA,OAAA;AACF,CAAA;AAEO,SAAS,iBACd,CAAA,MAAA,EACA,EACA,EAAA,OAAA,GAAmB,EACnB,EAAA;AACA,EAAM,MAAA,EAAE,aAAgB,GAAA,OAAA,CAAA;AACxB,EAAA,MAAM,KAAQ,GAAAA,YAAA,CAAY,KAAM,CAAA,MAAA,EAAQ,EAAI,EAAA;AAAA,IAC1C,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,MAAM,QAAQA,YAAY,CAAA,KAAA;AAAA,MACxB,MAAA;AAAA,MACA,KAAA;AAAA,MACAC,YAAW,OAAQ,CAAA,EAAE,IAAIA,WAAW,CAAA,GAAA,CAAI,EAAE,CAAI,GAAA,EAAA;AAAA,KAChD,CAAA;AACA,IAAA,MAAM,IAAO,GAAAD,YAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAE7C,IAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAM,KAAK,MAAW,KAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACF;AAEA,EAAA,OAAA;AACF;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-character.js","sources":["../../../src/slate/utils/get-character.ts"],"sourcesContent":["import type { Location as SlateLocation } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\ninterface Options {\n filterVoids?: boolean;\n}\n\nexport function getCharacterBefore<T extends SlateEditor>(\n editor: T,\n at: SlateLocation,\n options: Options = {}\n) {\n const { filterVoids } = options;\n const before = SlateEditor.before(editor, at, {\n unit: \"character\",\n voids: filterVoids,\n });\n\n if (before) {\n const range = SlateEditor.range(\n editor,\n before,\n SlateRange.isRange(at) ? SlateRange.start(at) : at\n );\n const text = SlateEditor.string(editor, range);\n\n return {\n range,\n text,\n void: text.length === 0,\n };\n }\n\n return;\n}\n\nexport function getCharacterAfter<T extends SlateEditor>(\n editor: T,\n at: SlateLocation,\n options: Options = {}\n) {\n const { filterVoids } = options;\n const after = SlateEditor.after(editor, at, {\n unit: \"character\",\n voids: filterVoids,\n });\n\n if (after) {\n const range = SlateEditor.range(\n editor,\n after,\n SlateRange.isRange(at) ? SlateRange.end(at) : at\n );\n const text = SlateEditor.string(editor, range);\n\n return {\n range,\n text,\n void: text.length === 0,\n };\n }\n\n return;\n}\n"],"names":["SlateEditor","SlateRange"],"mappings":";;AAOO,SAAS,kBACd,CAAA,MAAA,EACA,EACA,EAAA,OAAA,GAAmB,EACnB,EAAA;AACA,EAAM,MAAA,EAAE,aAAgB,GAAA,OAAA,CAAA;AACxB,EAAA,MAAM,MAAS,GAAAA,MAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,EAAI,EAAA;AAAA,IAC5C,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,MAAM,QAAQA,MAAY,CAAA,KAAA;AAAA,MACxB,MAAA;AAAA,MACA,MAAA;AAAA,MACAC,MAAW,OAAQ,CAAA,EAAE,IAAIA,KAAW,CAAA,KAAA,CAAM,EAAE,CAAI,GAAA,EAAA;AAAA,KAClD,CAAA;AACA,IAAA,MAAM,IAAO,GAAAD,MAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAE7C,IAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAM,KAAK,MAAW,KAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACF;AAEA,EAAA,OAAA;AACF,CAAA;AAEO,SAAS,iBACd,CAAA,MAAA,EACA,EACA,EAAA,OAAA,GAAmB,EACnB,EAAA;AACA,EAAM,MAAA,EAAE,aAAgB,GAAA,OAAA,CAAA;AACxB,EAAA,MAAM,KAAQ,GAAAA,MAAA,CAAY,KAAM,CAAA,MAAA,EAAQ,EAAI,EAAA;AAAA,IAC1C,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,MAAM,QAAQA,MAAY,CAAA,KAAA;AAAA,MACxB,MAAA;AAAA,MACA,KAAA;AAAA,MACAC,MAAW,OAAQ,CAAA,EAAE,IAAIA,KAAW,CAAA,GAAA,CAAI,EAAE,CAAI,GAAA,EAAA;AAAA,KAChD,CAAA;AACA,IAAA,MAAM,IAAO,GAAAD,MAAA,CAAY,MAAO,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAE7C,IAAO,OAAA;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA,EAAM,KAAK,MAAW,KAAA,CAAA;AAAA,KACxB,CAAA;AAAA,GACF;AAEA,EAAA,OAAA;AACF;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-dom-range.cjs","sources":["../../../src/slate/utils/get-dom-range.ts"],"sourcesContent":["import type { Editor as SlateEditor, Range as SlateRange } from \"slate\";\nimport { ReactEditor } from \"slate-react\";\n\nexport function getDOMRange(\n editor: SlateEditor,\n range: SlateRange\n): Range | undefined {\n try {\n return ReactEditor.toDOMRange(editor, range);\n } catch (error) {\n return getDOMRange(editor, {\n anchor: range.anchor,\n focus: range.anchor,\n });\n }\n}\n"],"names":["ReactEditor"],"mappings":";;;;AAGgB,SAAA,WAAA,CACd,QACA,KACmB,EAAA;AACnB,EAAI,IAAA;AACF,IAAO,OAAAA,sBAAA,CAAY,UAAW,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,WACpC,KAAP,EAAA;AACA,IAAA,OAAO,YAAY,MAAQ,EAAA;AAAA,MACzB,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,OAAO,KAAM,CAAA,MAAA;AAAA,KACd,CAAA,CAAA;AAAA,GACH;AACF;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-dom-range.js","sources":["../../../src/slate/utils/get-dom-range.ts"],"sourcesContent":["import type { Editor as SlateEditor, Range as SlateRange } from \"slate\";\nimport { ReactEditor } from \"slate-react\";\n\nexport function getDOMRange(\n editor: SlateEditor,\n range: SlateRange\n): Range | undefined {\n try {\n return ReactEditor.toDOMRange(editor, range);\n } catch (error) {\n return getDOMRange(editor, {\n anchor: range.anchor,\n focus: range.anchor,\n });\n }\n}\n"],"names":[],"mappings":";;AAGgB,SAAA,WAAA,CACd,QACA,KACmB,EAAA;AACnB,EAAI,IAAA;AACF,IAAO,OAAA,WAAA,CAAY,UAAW,CAAA,MAAA,EAAQ,KAAK,CAAA,CAAA;AAAA,WACpC,KAAP,EAAA;AACA,IAAA,OAAO,YAAY,MAAQ,EAAA;AAAA,MACzB,QAAQ,KAAM,CAAA,MAAA;AAAA,MACd,OAAO,KAAM,CAAA,MAAA;AAAA,KACd,CAAA,CAAA;AAAA,GACH;AACF;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-match-range.cjs","sources":["../../../src/slate/utils/get-match-range.ts"],"sourcesContent":["import type { Point as SlatePoint } from \"slate\";\nimport {\n Editor as SlateEditor,\n Path as SlatePath,\n Range as SlateRange,\n} from \"slate\";\n\nimport { isWhitespaceCharacter } from \"./is-whitespace-character\";\n\ninterface Options {\n include?: boolean;\n direction?: \"before\" | \"after\" | \"both\";\n allowConsecutiveWhitespace?: boolean;\n ignoreTerminator?: (\n character: string,\n point: SlatePoint,\n direction: \"before\" | \"after\"\n ) => boolean;\n}\n\nconst defaultOptions: Options = {\n direction: \"before\",\n allowConsecutiveWhitespace: true,\n};\n\nexport function getMatchRange(\n editor: SlateEditor,\n at: SlateRange,\n terminators: string[] = [\" \"],\n options: Options = defaultOptions\n): SlateRange | undefined {\n const { include, direction, ignoreTerminator, allowConsecutiveWhitespace } = {\n ...defaultOptions,\n ...options,\n };\n\n let [start, end] = SlateRange.edges(at);\n let point: SlatePoint = start;\n let previousCharacterWasWhitespace = false;\n\n function move(direction: \"before\" | \"after\"): boolean {\n const nextPoint =\n direction === \"after\"\n ? SlateEditor.after(editor, point, { unit: \"character\" })\n : SlateEditor.before(editor, point, { unit: \"character\" });\n\n // Stop if we reached the end of a block\n if (!nextPoint || SlatePath.compare(nextPoint.path, point.path) !== 0) {\n return false;\n }\n\n const nextCharacter =\n nextPoint &&\n SlateEditor.string(\n editor,\n direction === \"after\"\n ? { anchor: point, focus: nextPoint }\n : { anchor: nextPoint, focus: point }\n );\n const lastCharacter =\n nextCharacter &&\n nextCharacter[direction === \"after\" ? 0 : nextCharacter.length - 1];\n\n if (\n !allowConsecutiveWhitespace &&\n previousCharacterWasWhitespace &&\n isWhitespaceCharacter(lastCharacter)\n ) {\n return false;\n }\n\n if (\n nextPoint &&\n lastCharacter &&\n (!terminators.includes(lastCharacter) ||\n ignoreTerminator?.(lastCharacter, nextPoint, direction))\n ) {\n previousCharacterWasWhitespace = isWhitespaceCharacter(lastCharacter);\n point = nextPoint;\n\n if (point.offset === 0) {\n return false;\n }\n } else {\n return false;\n }\n\n return true;\n }\n\n if (direction !== \"before\") {\n point = end;\n while (move(\"after\"));\n end = point;\n }\n\n if (direction !== \"after\") {\n point = start;\n while (move(\"before\"));\n start = point;\n }\n\n if (include) {\n return {\n anchor:\n direction === \"before\" || direction === \"both\"\n ? (SlateEditor.before(editor, start, { unit: \"offset\" }) ?? start)\n : start,\n focus:\n direction === \"after\" || direction === \"both\"\n ? (SlateEditor.after(editor, end, { unit: \"offset\" }) ?? end)\n : end,\n };\n }\n\n return { anchor: start, focus: end };\n}\n"],"names":["SlateRange","direction","SlateEditor","SlatePath","isWhitespaceCharacter"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-match-range.js","sources":["../../../src/slate/utils/get-match-range.ts"],"sourcesContent":["import type { Point as SlatePoint } from \"slate\";\nimport {\n Editor as SlateEditor,\n Path as SlatePath,\n Range as SlateRange,\n} from \"slate\";\n\nimport { isWhitespaceCharacter } from \"./is-whitespace-character\";\n\ninterface Options {\n include?: boolean;\n direction?: \"before\" | \"after\" | \"both\";\n allowConsecutiveWhitespace?: boolean;\n ignoreTerminator?: (\n character: string,\n point: SlatePoint,\n direction: \"before\" | \"after\"\n ) => boolean;\n}\n\nconst defaultOptions: Options = {\n direction: \"before\",\n allowConsecutiveWhitespace: true,\n};\n\nexport function getMatchRange(\n editor: SlateEditor,\n at: SlateRange,\n terminators: string[] = [\" \"],\n options: Options = defaultOptions\n): SlateRange | undefined {\n const { include, direction, ignoreTerminator, allowConsecutiveWhitespace } = {\n ...defaultOptions,\n ...options,\n };\n\n let [start, end] = SlateRange.edges(at);\n let point: SlatePoint = start;\n let previousCharacterWasWhitespace = false;\n\n function move(direction: \"before\" | \"after\"): boolean {\n const nextPoint =\n direction === \"after\"\n ? SlateEditor.after(editor, point, { unit: \"character\" })\n : SlateEditor.before(editor, point, { unit: \"character\" });\n\n // Stop if we reached the end of a block\n if (!nextPoint || SlatePath.compare(nextPoint.path, point.path) !== 0) {\n return false;\n }\n\n const nextCharacter =\n nextPoint &&\n SlateEditor.string(\n editor,\n direction === \"after\"\n ? { anchor: point, focus: nextPoint }\n : { anchor: nextPoint, focus: point }\n );\n const lastCharacter =\n nextCharacter &&\n nextCharacter[direction === \"after\" ? 0 : nextCharacter.length - 1];\n\n if (\n !allowConsecutiveWhitespace &&\n previousCharacterWasWhitespace &&\n isWhitespaceCharacter(lastCharacter)\n ) {\n return false;\n }\n\n if (\n nextPoint &&\n lastCharacter &&\n (!terminators.includes(lastCharacter) ||\n ignoreTerminator?.(lastCharacter, nextPoint, direction))\n ) {\n previousCharacterWasWhitespace = isWhitespaceCharacter(lastCharacter);\n point = nextPoint;\n\n if (point.offset === 0) {\n return false;\n }\n } else {\n return false;\n }\n\n return true;\n }\n\n if (direction !== \"before\") {\n point = end;\n while (move(\"after\"));\n end = point;\n }\n\n if (direction !== \"after\") {\n point = start;\n while (move(\"before\"));\n start = point;\n }\n\n if (include) {\n return {\n anchor:\n direction === \"before\" || direction === \"both\"\n ? (SlateEditor.before(editor, start, { unit: \"offset\" }) ?? start)\n : start,\n focus:\n direction === \"after\" || direction === \"both\"\n ? (SlateEditor.after(editor, end, { unit: \"offset\" }) ?? end)\n : end,\n };\n }\n\n return { anchor: start, focus: end };\n}\n"],"names":["SlateRange","direction","SlateEditor","SlatePath"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-empty-string.cjs","sources":["../../../src/slate/utils/is-empty-string.ts"],"sourcesContent":["export function isEmptyString(string: string) {\n return !string.trim();\n}\n"],"names":[],"mappings":";;AAAO,SAAS,cAAc,MAAgB,EAAA;AAC5C,EAAO,OAAA,CAAC,OAAO,IAAK,EAAA,CAAA;AACtB;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-empty-string.js","sources":["../../../src/slate/utils/is-empty-string.ts"],"sourcesContent":["export function isEmptyString(string: string) {\n return !string.trim();\n}\n"],"names":[],"mappings":"AAAO,SAAS,cAAc,MAAgB,EAAA;AAC5C,EAAO,OAAA,CAAC,OAAO,IAAK,EAAA,CAAA;AACtB;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-empty.cjs","sources":["../../../src/slate/utils/is-empty.ts"],"sourcesContent":["import type { Descendant } from \"slate\";\nimport { Editor as SlateEditor } from \"slate\";\n\nimport { isEmptyString } from \"./is-empty-string\";\nimport { isText } from \"./is-text\";\n\nexport function isEmpty(editor: SlateEditor, children: Descendant[]) {\n // Check if all blocks are empty, stopping at the first non-empty block\n for (const child of children) {\n if (isText(child)) {\n // Non-empty text\n if (!isEmptyString(child.text)) {\n return false;\n }\n } else if (child.type === \"paragraph\") {\n // Non-empty paragraph\n if (\n child.children.length > 1 ||\n (child.children[0] &&\n !(isText(child.children[0]) && isEmptyString(child.children[0].text)))\n ) {\n return false;\n }\n } else {\n // Non-empty other block\n if (!SlateEditor.isEmpty(editor, child)) {\n return false;\n }\n }\n }\n\n return true;\n}\n"],"names":["isText","isEmptyString","SlateEditor"],"mappings":";;;;;;AAMgB,SAAA,OAAA,CAAQ,QAAqB,QAAwB,EAAA;AAEnE,EAAA,KAAA,MAAW,SAAS,QAAU,EAAA;AAC5B,IAAI,IAAAA,aAAA,CAAO,KAAK,CAAG,EAAA;AAEjB,MAAA,IAAI,CAACC,2BAAA,CAAc,KAAM,CAAA,IAAI,CAAG,EAAA;AAC9B,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF,MAAA,IAAW,KAAM,CAAA,IAAA,KAAS,WAAa,EAAA;AAErC,MAAA,IACE,MAAM,QAAS,CAAA,MAAA,GAAS,KACvB,KAAM,CAAA,QAAA,CAAS,MACd,EAAED,aAAA,CAAO,KAAM,CAAA,QAAA,CAAS,EAAE,CAAK,IAAAC,2BAAA,CAAc,MAAM,QAAS,CAAA,CAAA,CAAA,CAAG,IAAI,CACrE,CAAA,EAAA;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACK,MAAA;AAEL,MAAA,IAAI,CAACC,YAAA,CAAY,OAAQ,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AACvC,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-empty.js","sources":["../../../src/slate/utils/is-empty.ts"],"sourcesContent":["import type { Descendant } from \"slate\";\nimport { Editor as SlateEditor } from \"slate\";\n\nimport { isEmptyString } from \"./is-empty-string\";\nimport { isText } from \"./is-text\";\n\nexport function isEmpty(editor: SlateEditor, children: Descendant[]) {\n // Check if all blocks are empty, stopping at the first non-empty block\n for (const child of children) {\n if (isText(child)) {\n // Non-empty text\n if (!isEmptyString(child.text)) {\n return false;\n }\n } else if (child.type === \"paragraph\") {\n // Non-empty paragraph\n if (\n child.children.length > 1 ||\n (child.children[0] &&\n !(isText(child.children[0]) && isEmptyString(child.children[0].text)))\n ) {\n return false;\n }\n } else {\n // Non-empty other block\n if (!SlateEditor.isEmpty(editor, child)) {\n return false;\n }\n }\n }\n\n return true;\n}\n"],"names":["SlateEditor"],"mappings":";;;;AAMgB,SAAA,OAAA,CAAQ,QAAqB,QAAwB,EAAA;AAEnE,EAAA,KAAA,MAAW,SAAS,QAAU,EAAA;AAC5B,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AAEjB,MAAA,IAAI,CAAC,aAAA,CAAc,KAAM,CAAA,IAAI,CAAG,EAAA;AAC9B,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF,MAAA,IAAW,KAAM,CAAA,IAAA,KAAS,WAAa,EAAA;AAErC,MAAA,IACE,MAAM,QAAS,CAAA,MAAA,GAAS,KACvB,KAAM,CAAA,QAAA,CAAS,MACd,EAAE,MAAA,CAAO,KAAM,CAAA,QAAA,CAAS,EAAE,CAAK,IAAA,aAAA,CAAc,MAAM,QAAS,CAAA,CAAA,CAAA,CAAG,IAAI,CACrE,CAAA,EAAA;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACK,MAAA;AAEL,MAAA,IAAI,CAACA,MAAA,CAAY,OAAQ,CAAA,MAAA,EAAQ,KAAK,CAAG,EAAA;AACvC,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAAA,KACF;AAAA,GACF;AAEA,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-text.cjs","sources":["../../../src/slate/utils/is-text.ts"],"sourcesContent":["import type { Node, Text } from \"slate\";\n\nexport function isText(element: Node): element is Text {\n return (\n !(\"type\" in element) &&\n \"text\" in element &&\n typeof element.text === \"string\"\n );\n}\n\nexport function isPlainText(node: Node): boolean {\n return isText(node) && Object.keys(node).length === 1;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,OAAO,OAAgC,EAAA;AACrD,EAAA,OACE,EAAE,MAAU,IAAA,OAAA,CAAA,IACZ,UAAU,OACV,IAAA,OAAO,QAAQ,IAAS,KAAA,QAAA,CAAA;AAE5B,CAAA;AAEO,SAAS,YAAY,IAAqB,EAAA;AAC/C,EAAA,OAAO,OAAO,IAAI,CAAA,IAAK,OAAO,IAAK,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AACtD;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-text.js","sources":["../../../src/slate/utils/is-text.ts"],"sourcesContent":["import type { Node, Text } from \"slate\";\n\nexport function isText(element: Node): element is Text {\n return (\n !(\"type\" in element) &&\n \"text\" in element &&\n typeof element.text === \"string\"\n );\n}\n\nexport function isPlainText(node: Node): boolean {\n return isText(node) && Object.keys(node).length === 1;\n}\n"],"names":[],"mappings":"AAEO,SAAS,OAAO,OAAgC,EAAA;AACrD,EAAA,OACE,EAAE,MAAU,IAAA,OAAA,CAAA,IACZ,UAAU,OACV,IAAA,OAAO,QAAQ,IAAS,KAAA,QAAA,CAAA;AAE5B,CAAA;AAEO,SAAS,YAAY,IAAqB,EAAA;AAC/C,EAAA,OAAO,OAAO,IAAI,CAAA,IAAK,OAAO,IAAK,CAAA,IAAI,EAAE,MAAW,KAAA,CAAA,CAAA;AACtD;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-whitespace-character.cjs","sources":["../../../src/slate/utils/is-whitespace-character.ts"],"sourcesContent":["const WHITESPACE_REGEX = /\\s/;\n\nexport function isWhitespaceCharacter(character?: string): boolean {\n return character ? WHITESPACE_REGEX.test(character) : false;\n}\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAmB,GAAA,IAAA,CAAA;AAElB,SAAS,sBAAsB,SAA6B,EAAA;AACjE,EAAA,OAAO,SAAY,GAAA,gBAAA,CAAiB,IAAK,CAAA,SAAS,CAAI,GAAA,KAAA,CAAA;AACxD;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-whitespace-character.js","sources":["../../../src/slate/utils/is-whitespace-character.ts"],"sourcesContent":["const WHITESPACE_REGEX = /\\s/;\n\nexport function isWhitespaceCharacter(character?: string): boolean {\n return character ? WHITESPACE_REGEX.test(character) : false;\n}\n"],"names":[],"mappings":"AAAA,MAAM,gBAAmB,GAAA,IAAA,CAAA;AAElB,SAAS,sBAAsB,SAA6B,EAAA;AACjE,EAAA,OAAO,SAAY,GAAA,gBAAA,CAAiB,IAAK,CAAA,SAAS,CAAI,GAAA,KAAA,CAAA;AACxD;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"marks.cjs","sources":["../../../src/slate/utils/marks.ts"],"sourcesContent":["import type { EditorMarks, Text } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\nimport { getCharacterAfter, getCharacterBefore } from \"./get-character\";\n\nconst defaultMarks: Required<EditorMarks> = {\n bold: false,\n italic: false,\n strikethrough: false,\n code: false,\n};\n\nexport function isMarkActive(editor: SlateEditor, mark: keyof EditorMarks) {\n const marks = SlateEditor.marks(editor);\n\n return marks ? marks[mark] === true : false;\n}\n\nexport function getMarks(editor?: SlateEditor) {\n if (!editor) {\n return { ...defaultMarks };\n }\n\n const marks = SlateEditor.marks(editor);\n\n return { ...defaultMarks, ...marks };\n}\n\nexport function filterActiveMarks(\n value: Text | EditorMarks | null | undefined\n) {\n return Object.keys(value ?? {}).filter(\n (key) => key !== \"text\"\n ) as (keyof EditorMarks)[];\n}\n\nexport function toggleMark(editor: SlateEditor, mark: keyof EditorMarks) {\n const isActive = isMarkActive(editor, mark);\n\n if (isActive) {\n SlateEditor.removeMark(editor, mark);\n } else {\n SlateEditor.addMark(editor, mark, true);\n }\n}\n\nexport function removeMarks(editor: SlateEditor) {\n const marks = SlateEditor.marks(editor);\n\n if (marks) {\n for (const mark in marks) {\n SlateEditor.removeMark(editor, mark);\n }\n }\n}\n\nexport function leaveMarkEdge(editor: SlateEditor, edge: \"start\" | \"end\") {\n if (editor.selection && SlateRange.isCollapsed(editor.selection)) {\n const marks = Object.keys(SlateEditor.marks(editor) ?? {});\n\n if (marks.length > 0) {\n const sibling =\n edge === \"start\"\n ? getCharacterBefore(editor, editor.selection)\n : getCharacterAfter(editor, editor.selection);\n\n if (!sibling) {\n removeMarks(editor);\n }\n }\n }\n}\n"],"names":["SlateEditor","SlateRange","getCharacterBefore","getCharacterAfter"],"mappings":";;;;;AAKA,MAAM,YAAsC,GAAA;AAAA,EAC1C,IAAM,EAAA,KAAA;AAAA,EACN,MAAQ,EAAA,KAAA;AAAA,EACR,aAAe,EAAA,KAAA;AAAA,EACf,IAAM,EAAA,KAAA;AACR,CAAA,CAAA;AAEgB,SAAA,YAAA,CAAa,QAAqB,IAAyB,EAAA;AACzE,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAO,OAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,CAAA,KAAU,IAAO,GAAA,KAAA,CAAA;AACxC,CAAA;AAEO,SAAS,SAAS,MAAsB,EAAA;AAC7C,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,EAAE,GAAG,YAAa,EAAA,CAAA;AAAA,GAC3B;AAEA,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,OAAO,EAAE,GAAG,YAAc,EAAA,GAAG,KAAM,EAAA,CAAA;AACrC,CAAA;AAEO,SAAS,kBACd,KACA,EAAA;AACA,EAAA,OAAO,MAAO,CAAA,IAAA,CAAK,KAAS,IAAA,EAAE,CAAE,CAAA,MAAA;AAAA,IAC9B,CAAC,QAAQ,GAAQ,KAAA,MAAA;AAAA,GACnB,CAAA;AACF,CAAA;AAEgB,SAAA,UAAA,CAAW,QAAqB,IAAyB,EAAA;AACvE,EAAM,MAAA,QAAA,GAAW,YAAa,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAE1C,EAAA,IAAI,QAAU,EAAA;AACZ,IAAYA,YAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC9B,MAAA;AACL,IAAYA,YAAA,CAAA,OAAA,CAAQ,MAAQ,EAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,GACxC;AACF,CAAA;AAEO,SAAS,YAAY,MAAqB,EAAA;AAC/C,EAAM,MAAA,KAAA,GAAQA,YAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,MAAYA,YAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,KACrC;AAAA,GACF;AACF,CAAA;AAEgB,SAAA,aAAA,CAAc,QAAqB,IAAuB,EAAA;AACxE,EAAA,IAAI,OAAO,SAAa,IAAAC,WAAA,CAAW,WAAY,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAChE,IAAM,MAAA,KAAA,GAAQ,OAAO,IAAK,CAAAD,YAAA,CAAY,MAAM,MAAM,CAAA,IAAK,EAAE,CAAA,CAAA;AAEzD,IAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,MAAM,MAAA,OAAA,GACJ,IAAS,KAAA,OAAA,GACLE,+BAAmB,CAAA,MAAA,EAAQ,MAAO,CAAA,SAAS,CAC3C,GAAAC,8BAAA,CAAkB,MAAQ,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAEhD,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,GACF;AACF;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"marks.js","sources":["../../../src/slate/utils/marks.ts"],"sourcesContent":["import type { EditorMarks, Text } from \"slate\";\nimport { Editor as SlateEditor, Range as SlateRange } from \"slate\";\n\nimport { getCharacterAfter, getCharacterBefore } from \"./get-character\";\n\nconst defaultMarks: Required<EditorMarks> = {\n bold: false,\n italic: false,\n strikethrough: false,\n code: false,\n};\n\nexport function isMarkActive(editor: SlateEditor, mark: keyof EditorMarks) {\n const marks = SlateEditor.marks(editor);\n\n return marks ? marks[mark] === true : false;\n}\n\nexport function getMarks(editor?: SlateEditor) {\n if (!editor) {\n return { ...defaultMarks };\n }\n\n const marks = SlateEditor.marks(editor);\n\n return { ...defaultMarks, ...marks };\n}\n\nexport function filterActiveMarks(\n value: Text | EditorMarks | null | undefined\n) {\n return Object.keys(value ?? {}).filter(\n (key) => key !== \"text\"\n ) as (keyof EditorMarks)[];\n}\n\nexport function toggleMark(editor: SlateEditor, mark: keyof EditorMarks) {\n const isActive = isMarkActive(editor, mark);\n\n if (isActive) {\n SlateEditor.removeMark(editor, mark);\n } else {\n SlateEditor.addMark(editor, mark, true);\n }\n}\n\nexport function removeMarks(editor: SlateEditor) {\n const marks = SlateEditor.marks(editor);\n\n if (marks) {\n for (const mark in marks) {\n SlateEditor.removeMark(editor, mark);\n }\n }\n}\n\nexport function leaveMarkEdge(editor: SlateEditor, edge: \"start\" | \"end\") {\n if (editor.selection && SlateRange.isCollapsed(editor.selection)) {\n const marks = Object.keys(SlateEditor.marks(editor) ?? {});\n\n if (marks.length > 0) {\n const sibling =\n edge === \"start\"\n ? getCharacterBefore(editor, editor.selection)\n : getCharacterAfter(editor, editor.selection);\n\n if (!sibling) {\n removeMarks(editor);\n }\n }\n }\n}\n"],"names":["SlateEditor","SlateRange"],"mappings":";;;AAKA,MAAM,YAAsC,GAAA;AAAA,EAC1C,IAAM,EAAA,KAAA;AAAA,EACN,MAAQ,EAAA,KAAA;AAAA,EACR,aAAe,EAAA,KAAA;AAAA,EACf,IAAM,EAAA,KAAA;AACR,CAAA,CAAA;AAEgB,SAAA,YAAA,CAAa,QAAqB,IAAyB,EAAA;AACzE,EAAM,MAAA,KAAA,GAAQA,MAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAO,OAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,CAAA,KAAU,IAAO,GAAA,KAAA,CAAA;AACxC,CAAA;AAEO,SAAS,SAAS,MAAsB,EAAA;AAC7C,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,EAAE,GAAG,YAAa,EAAA,CAAA;AAAA,GAC3B;AAEA,EAAM,MAAA,KAAA,GAAQA,MAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,OAAO,EAAE,GAAG,YAAc,EAAA,GAAG,KAAM,EAAA,CAAA;AACrC,CAAA;AAEO,SAAS,kBACd,KACA,EAAA;AACA,EAAA,OAAO,MAAO,CAAA,IAAA,CAAK,KAAS,IAAA,EAAE,CAAE,CAAA,MAAA;AAAA,IAC9B,CAAC,QAAQ,GAAQ,KAAA,MAAA;AAAA,GACnB,CAAA;AACF,CAAA;AAEgB,SAAA,UAAA,CAAW,QAAqB,IAAyB,EAAA;AACvE,EAAM,MAAA,QAAA,GAAW,YAAa,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAE1C,EAAA,IAAI,QAAU,EAAA;AACZ,IAAYA,MAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC9B,MAAA;AACL,IAAYA,MAAA,CAAA,OAAA,CAAQ,MAAQ,EAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,GACxC;AACF,CAAA;AAEO,SAAS,YAAY,MAAqB,EAAA;AAC/C,EAAM,MAAA,KAAA,GAAQA,MAAY,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEtC,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,MAAYA,MAAA,CAAA,UAAA,CAAW,QAAQ,IAAI,CAAA,CAAA;AAAA,KACrC;AAAA,GACF;AACF,CAAA;AAEgB,SAAA,aAAA,CAAc,QAAqB,IAAuB,EAAA;AACxE,EAAA,IAAI,OAAO,SAAa,IAAAC,KAAA,CAAW,WAAY,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAChE,IAAM,MAAA,KAAA,GAAQ,OAAO,IAAK,CAAAD,MAAA,CAAY,MAAM,MAAM,CAAA,IAAK,EAAE,CAAA,CAAA;AAEzD,IAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,MAAM,MAAA,OAAA,GACJ,IAAS,KAAA,OAAA,GACL,kBAAmB,CAAA,MAAA,EAAQ,MAAO,CAAA,SAAS,CAC3C,GAAA,iBAAA,CAAkB,MAAQ,EAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAEhD,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAA,WAAA,CAAY,MAAM,CAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,GACF;AACF;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection-contains-inlines.cjs","sources":["../../../src/slate/utils/selection-contains-inlines.ts"],"sourcesContent":["import type { Node } from \"slate\";\nimport { Editor, Element, Range } from \"slate\";\n\nexport function selectionContainsInlines(\n editor: Editor,\n match: (node: Node) => boolean\n) {\n const { selection } = editor;\n if (!selection) {\n return false;\n }\n\n const roots = Array.from(\n Editor.nodes(editor, {\n at: selection,\n match: (node) => Element.isElement(node) && Editor.isBlock(editor, node),\n mode: \"lowest\",\n })\n );\n\n for (const [, rootPath] of roots) {\n const intersectingSelection = Range.isRange(selection)\n ? Range.intersection(selection, Editor.range(editor, rootPath))\n : selection;\n\n if (!intersectingSelection) {\n continue;\n }\n\n const matches = Array.from(\n Editor.nodes(editor, {\n at: intersectingSelection,\n match: (node) =>\n Editor.isInline(editor, node as Element) && match(node),\n })\n );\n\n if (matches.length > 0) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":["Editor","Element","Range"],"mappings":";;;;AAGgB,SAAA,wBAAA,CACd,QACA,KACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,QAAQ,KAAM,CAAA,IAAA;AAAA,IAClBA,YAAA,CAAO,MAAM,MAAQ,EAAA;AAAA,MACnB,EAAI,EAAA,SAAA;AAAA,MACJ,KAAA,EAAO,CAAC,IAAA,KAASC,aAAQ,CAAA,SAAA,CAAU,IAAI,CAAK,IAAAD,YAAA,CAAO,OAAQ,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,MACvE,IAAM,EAAA,QAAA;AAAA,KACP,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,KAAA,MAAW,GAAG,QAAQ,CAAA,IAAK,KAAO,EAAA;AAChC,IAAA,MAAM,qBAAwB,GAAAE,WAAA,CAAM,OAAQ,CAAA,SAAS,CACjD,GAAAA,WAAA,CAAM,YAAa,CAAA,SAAA,EAAWF,YAAO,CAAA,KAAA,CAAM,MAAQ,EAAA,QAAQ,CAAC,CAC5D,GAAA,SAAA,CAAA;AAEJ,IAAA,IAAI,CAAC,qBAAuB,EAAA;AAC1B,MAAA,SAAA;AAAA,KACF;AAEA,IAAA,MAAM,UAAU,KAAM,CAAA,IAAA;AAAA,MACpBA,YAAA,CAAO,MAAM,MAAQ,EAAA;AAAA,QACnB,EAAI,EAAA,qBAAA;AAAA,QACJ,KAAA,EAAO,CAAC,IACN,KAAAA,YAAA,CAAO,SAAS,MAAQ,EAAA,IAAe,CAAK,IAAA,KAAA,CAAM,IAAI,CAAA;AAAA,OACzD,CAAA;AAAA,KACH,CAAA;AAEA,IAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection-contains-inlines.js","sources":["../../../src/slate/utils/selection-contains-inlines.ts"],"sourcesContent":["import type { Node } from \"slate\";\nimport { Editor, Element, Range } from \"slate\";\n\nexport function selectionContainsInlines(\n editor: Editor,\n match: (node: Node) => boolean\n) {\n const { selection } = editor;\n if (!selection) {\n return false;\n }\n\n const roots = Array.from(\n Editor.nodes(editor, {\n at: selection,\n match: (node) => Element.isElement(node) && Editor.isBlock(editor, node),\n mode: \"lowest\",\n })\n );\n\n for (const [, rootPath] of roots) {\n const intersectingSelection = Range.isRange(selection)\n ? Range.intersection(selection, Editor.range(editor, rootPath))\n : selection;\n\n if (!intersectingSelection) {\n continue;\n }\n\n const matches = Array.from(\n Editor.nodes(editor, {\n at: intersectingSelection,\n match: (node) =>\n Editor.isInline(editor, node as Element) && match(node),\n })\n );\n\n if (matches.length > 0) {\n return true;\n }\n }\n\n return false;\n}\n"],"names":[],"mappings":";;AAGgB,SAAA,wBAAA,CACd,QACA,KACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,QAAQ,KAAM,CAAA,IAAA;AAAA,IAClB,MAAA,CAAO,MAAM,MAAQ,EAAA;AAAA,MACnB,EAAI,EAAA,SAAA;AAAA,MACJ,KAAA,EAAO,CAAC,IAAA,KAAS,OAAQ,CAAA,SAAA,CAAU,IAAI,CAAK,IAAA,MAAA,CAAO,OAAQ,CAAA,MAAA,EAAQ,IAAI,CAAA;AAAA,MACvE,IAAM,EAAA,QAAA;AAAA,KACP,CAAA;AAAA,GACH,CAAA;AAEA,EAAA,KAAA,MAAW,GAAG,QAAQ,CAAA,IAAK,KAAO,EAAA;AAChC,IAAA,MAAM,qBAAwB,GAAA,KAAA,CAAM,OAAQ,CAAA,SAAS,CACjD,GAAA,KAAA,CAAM,YAAa,CAAA,SAAA,EAAW,MAAO,CAAA,KAAA,CAAM,MAAQ,EAAA,QAAQ,CAAC,CAC5D,GAAA,SAAA,CAAA;AAEJ,IAAA,IAAI,CAAC,qBAAuB,EAAA;AAC1B,MAAA,SAAA;AAAA,KACF;AAEA,IAAA,MAAM,UAAU,KAAM,CAAA,IAAA;AAAA,MACpB,MAAA,CAAO,MAAM,MAAQ,EAAA;AAAA,QACnB,EAAI,EAAA,qBAAA;AAAA,QACJ,KAAA,EAAO,CAAC,IACN,KAAA,MAAA,CAAO,SAAS,MAAQ,EAAA,IAAe,CAAK,IAAA,KAAA,CAAM,IAAI,CAAA;AAAA,OACzD,CAAA;AAAA,KACH,CAAA;AAEA,IAAI,IAAA,OAAA,CAAQ,SAAS,CAAG,EAAA;AACtB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF;AAEA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}