@payloadcms/richtext-lexical 3.68.0-internal-debug.35482da → 3.68.0-internal.35482da

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 (1045) hide show
  1. package/dist/cell/rscEntry.js +70 -72
  2. package/dist/cell/rscEntry.js.map +1 -1
  3. package/dist/dependencyChecker.spec.js +7 -8
  4. package/dist/dependencyChecker.spec.js.map +1 -1
  5. package/dist/exports/client/Component-DOSSWC76.js +2 -0
  6. package/dist/exports/client/Component-DOSSWC76.js.map +7 -0
  7. package/dist/exports/client/Component-MBLHTKDK.js +2 -0
  8. package/dist/exports/client/Component-MBLHTKDK.js.map +7 -0
  9. package/dist/exports/client/Field-2A2VQXKP.js +2 -0
  10. package/dist/exports/client/Field-2A2VQXKP.js.map +7 -0
  11. package/dist/exports/client/RelationshipComponent-UCIWIEVD.js +2 -0
  12. package/dist/exports/client/RelationshipComponent-UCIWIEVD.js.map +7 -0
  13. package/dist/exports/client/bundled.css +1 -0
  14. package/dist/exports/client/chunk-AFXLIYGL.js +12 -0
  15. package/dist/exports/client/chunk-AFXLIYGL.js.map +7 -0
  16. package/dist/exports/client/chunk-BZZVLW4U.js +2 -0
  17. package/dist/exports/client/chunk-BZZVLW4U.js.map +7 -0
  18. package/dist/exports/client/chunk-DBWINSQN.js +2 -0
  19. package/dist/exports/client/chunk-DBWINSQN.js.map +7 -0
  20. package/dist/exports/client/chunk-F26IQ5RE.js +2 -0
  21. package/dist/exports/client/chunk-F26IQ5RE.js.map +7 -0
  22. package/dist/exports/client/chunk-INBEEENE.js +2 -0
  23. package/dist/exports/client/chunk-INBEEENE.js.map +7 -0
  24. package/dist/exports/client/chunk-O6XRT2H3.js +2 -0
  25. package/dist/exports/client/chunk-O6XRT2H3.js.map +7 -0
  26. package/dist/exports/client/chunk-TRHFMZ3F.js +2 -0
  27. package/dist/exports/client/chunk-TRHFMZ3F.js.map +7 -0
  28. package/dist/exports/client/component-5IW2M4GH.js +2 -0
  29. package/dist/exports/client/component-5IW2M4GH.js.map +7 -0
  30. package/dist/exports/client/componentInline-5OVPQNQH.js +2 -0
  31. package/dist/exports/client/componentInline-5OVPQNQH.js.map +7 -0
  32. package/dist/exports/client/index.js +65 -85
  33. package/dist/exports/client/index.js.map +7 -1
  34. package/dist/exports/cssEntry.js +0 -1
  35. package/dist/exports/cssEntry.js.map +1 -1
  36. package/dist/exports/html/index.js +0 -1
  37. package/dist/exports/html/index.js.map +1 -1
  38. package/dist/exports/html-async/index.js +0 -1
  39. package/dist/exports/html-async/index.js.map +1 -1
  40. package/dist/exports/plaintext/index.js +0 -1
  41. package/dist/exports/plaintext/index.js.map +1 -1
  42. package/dist/exports/react/index.js +0 -1
  43. package/dist/exports/react/index.js.map +1 -1
  44. package/dist/exports/server/ast/mdx.js +35 -37
  45. package/dist/exports/server/ast/mdx.js.map +1 -1
  46. package/dist/exports/server/migrate.js +0 -1
  47. package/dist/exports/server/migrate.js.map +1 -1
  48. package/dist/exports/server/rsc.js +0 -1
  49. package/dist/exports/server/rsc.js.map +1 -1
  50. package/dist/exports/shared.js +0 -1
  51. package/dist/exports/shared.js.map +1 -1
  52. package/dist/features/align/client/index.js +195 -168
  53. package/dist/features/align/client/index.js.map +1 -1
  54. package/dist/features/align/client/toolbarAlignGroup.js +9 -9
  55. package/dist/features/align/client/toolbarAlignGroup.js.map +1 -1
  56. package/dist/features/align/server/i18n.js +222 -223
  57. package/dist/features/align/server/i18n.js.map +1 -1
  58. package/dist/features/align/server/index.js +5 -6
  59. package/dist/features/align/server/index.js.map +1 -1
  60. package/dist/features/blockquote/client/index.js +60 -65
  61. package/dist/features/blockquote/client/index.js.map +1 -1
  62. package/dist/features/blockquote/markdownTransformer.js +28 -33
  63. package/dist/features/blockquote/markdownTransformer.js.map +1 -1
  64. package/dist/features/blockquote/server/i18n.js +111 -112
  65. package/dist/features/blockquote/server/i18n.js.map +1 -1
  66. package/dist/features/blockquote/server/index.js +48 -47
  67. package/dist/features/blockquote/server/index.js.map +1 -1
  68. package/dist/features/blocks/client/component/BlockContent.js +69 -95
  69. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  70. package/dist/features/blocks/client/component/components/BlockCollapsible.js +14 -13
  71. package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
  72. package/dist/features/blocks/client/component/components/BlockEditButton.js +17 -9
  73. package/dist/features/blocks/client/component/components/BlockEditButton.js.map +1 -1
  74. package/dist/features/blocks/client/component/components/BlockRemoveButton.js +17 -9
  75. package/dist/features/blocks/client/component/components/BlockRemoveButton.js.map +1 -1
  76. package/dist/features/blocks/client/component/index.js +412 -553
  77. package/dist/features/blocks/client/component/index.js.map +1 -1
  78. package/dist/features/blocks/client/component/removeEmptyArrayValues.js +11 -8
  79. package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +1 -1
  80. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js +23 -11
  81. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js.map +1 -1
  82. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js +17 -9
  83. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js.map +1 -1
  84. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js +17 -9
  85. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js.map +1 -1
  86. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js +17 -9
  87. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js.map +1 -1
  88. package/dist/features/blocks/client/componentInline/index.js +342 -468
  89. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  90. package/dist/features/blocks/client/getBlockImageComponent.js +12 -17
  91. package/dist/features/blocks/client/getBlockImageComponent.js.map +1 -1
  92. package/dist/features/blocks/client/index.js +146 -141
  93. package/dist/features/blocks/client/index.js.map +1 -1
  94. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js +19 -18
  95. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js.map +1 -1
  96. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js +15 -14
  97. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js.map +1 -1
  98. package/dist/features/blocks/client/markdown/markdownTransformer.js +330 -328
  99. package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -1
  100. package/dist/features/blocks/client/nodes/BlocksNode.js +40 -44
  101. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  102. package/dist/features/blocks/client/nodes/InlineBlocksNode.js +33 -37
  103. package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
  104. package/dist/features/blocks/client/plugin/commands.js +1 -1
  105. package/dist/features/blocks/client/plugin/commands.js.map +1 -1
  106. package/dist/features/blocks/client/plugin/index.js +87 -59
  107. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  108. package/dist/features/blocks/premade/CodeBlock/Component/Block.js +101 -158
  109. package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
  110. package/dist/features/blocks/premade/CodeBlock/Component/Code.js +93 -119
  111. package/dist/features/blocks/premade/CodeBlock/Component/Code.js.map +1 -1
  112. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js +11 -19
  113. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js.map +1 -1
  114. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js +20 -32
  115. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js.map +1 -1
  116. package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.js +83 -84
  117. package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.js.map +1 -1
  118. package/dist/features/blocks/premade/CodeBlock/converter.js +40 -36
  119. package/dist/features/blocks/premade/CodeBlock/converter.js.map +1 -1
  120. package/dist/features/blocks/premade/CodeBlock/converterClient.js +1 -1
  121. package/dist/features/blocks/premade/CodeBlock/converterClient.js.map +1 -1
  122. package/dist/features/blocks/premade/CodeBlock/index.js +49 -49
  123. package/dist/features/blocks/premade/CodeBlock/index.js.map +1 -1
  124. package/dist/features/blocks/server/graphQLPopulationPromise.js +44 -29
  125. package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
  126. package/dist/features/blocks/server/i18n.js +333 -334
  127. package/dist/features/blocks/server/i18n.js.map +1 -1
  128. package/dist/features/blocks/server/index.js +211 -215
  129. package/dist/features/blocks/server/index.js.map +1 -1
  130. package/dist/features/blocks/server/markdown/linesFromMatchToContentAndPropsString.js +125 -123
  131. package/dist/features/blocks/server/markdown/linesFromMatchToContentAndPropsString.js.map +1 -1
  132. package/dist/features/blocks/server/markdown/markdownTransformer.js +349 -347
  133. package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -1
  134. package/dist/features/blocks/server/nodes/BlocksNode.js +90 -86
  135. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  136. package/dist/features/blocks/server/nodes/InlineBlocksNode.js +87 -84
  137. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  138. package/dist/features/blocks/server/validate.js +55 -42
  139. package/dist/features/blocks/server/validate.js.map +1 -1
  140. package/dist/features/converters/htmlToLexical/index.js +24 -21
  141. package/dist/features/converters/htmlToLexical/index.js.map +1 -1
  142. package/dist/features/converters/lexicalToHtml/async/converters/blockquote.js +10 -7
  143. package/dist/features/converters/lexicalToHtml/async/converters/blockquote.js.map +1 -1
  144. package/dist/features/converters/lexicalToHtml/async/converters/heading.js +10 -7
  145. package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -1
  146. package/dist/features/converters/lexicalToHtml/async/converters/horizontalRule.js +1 -2
  147. package/dist/features/converters/lexicalToHtml/async/converters/horizontalRule.js.map +1 -1
  148. package/dist/features/converters/lexicalToHtml/async/converters/linebreak.js +1 -2
  149. package/dist/features/converters/lexicalToHtml/async/converters/linebreak.js.map +1 -1
  150. package/dist/features/converters/lexicalToHtml/async/converters/link.js +38 -28
  151. package/dist/features/converters/lexicalToHtml/async/converters/link.js.map +1 -1
  152. package/dist/features/converters/lexicalToHtml/async/converters/list.js +26 -18
  153. package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -1
  154. package/dist/features/converters/lexicalToHtml/async/converters/paragraph.js +12 -9
  155. package/dist/features/converters/lexicalToHtml/async/converters/paragraph.js.map +1 -1
  156. package/dist/features/converters/lexicalToHtml/async/converters/tab.js +1 -2
  157. package/dist/features/converters/lexicalToHtml/async/converters/tab.js.map +1 -1
  158. package/dist/features/converters/lexicalToHtml/async/converters/table.js +38 -27
  159. package/dist/features/converters/lexicalToHtml/async/converters/table.js.map +1 -1
  160. package/dist/features/converters/lexicalToHtml/async/converters/text.js +26 -25
  161. package/dist/features/converters/lexicalToHtml/async/converters/text.js.map +1 -1
  162. package/dist/features/converters/lexicalToHtml/async/converters/upload.js +43 -40
  163. package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
  164. package/dist/features/converters/lexicalToHtml/async/defaultConverters.js +11 -12
  165. package/dist/features/converters/lexicalToHtml/async/defaultConverters.js.map +1 -1
  166. package/dist/features/converters/lexicalToHtml/async/field/index.js +56 -56
  167. package/dist/features/converters/lexicalToHtml/async/field/index.js.map +1 -1
  168. package/dist/features/converters/lexicalToHtml/async/index.js +97 -87
  169. package/dist/features/converters/lexicalToHtml/async/index.js.map +1 -1
  170. package/dist/features/converters/lexicalToHtml/async/types.js +1 -4
  171. package/dist/features/converters/lexicalToHtml/async/types.js.map +1 -1
  172. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js +62 -57
  173. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js.map +1 -1
  174. package/dist/features/converters/lexicalToHtml/shared/types.js +1 -2
  175. package/dist/features/converters/lexicalToHtml/shared/types.js.map +1 -1
  176. package/dist/features/converters/lexicalToHtml/sync/converters/blockquote.js +10 -7
  177. package/dist/features/converters/lexicalToHtml/sync/converters/blockquote.js.map +1 -1
  178. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js +10 -7
  179. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -1
  180. package/dist/features/converters/lexicalToHtml/sync/converters/horizontalRule.js +1 -2
  181. package/dist/features/converters/lexicalToHtml/sync/converters/horizontalRule.js.map +1 -1
  182. package/dist/features/converters/lexicalToHtml/sync/converters/linebreak.js +1 -2
  183. package/dist/features/converters/lexicalToHtml/sync/converters/linebreak.js.map +1 -1
  184. package/dist/features/converters/lexicalToHtml/sync/converters/link.js +36 -27
  185. package/dist/features/converters/lexicalToHtml/sync/converters/link.js.map +1 -1
  186. package/dist/features/converters/lexicalToHtml/sync/converters/list.js +26 -18
  187. package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -1
  188. package/dist/features/converters/lexicalToHtml/sync/converters/paragraph.js +12 -9
  189. package/dist/features/converters/lexicalToHtml/sync/converters/paragraph.js.map +1 -1
  190. package/dist/features/converters/lexicalToHtml/sync/converters/tab.js +1 -2
  191. package/dist/features/converters/lexicalToHtml/sync/converters/tab.js.map +1 -1
  192. package/dist/features/converters/lexicalToHtml/sync/converters/table.js +38 -27
  193. package/dist/features/converters/lexicalToHtml/sync/converters/table.js.map +1 -1
  194. package/dist/features/converters/lexicalToHtml/sync/converters/text.js +26 -25
  195. package/dist/features/converters/lexicalToHtml/sync/converters/text.js.map +1 -1
  196. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js +36 -34
  197. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -1
  198. package/dist/features/converters/lexicalToHtml/sync/defaultConverters.js +11 -12
  199. package/dist/features/converters/lexicalToHtml/sync/defaultConverters.js.map +1 -1
  200. package/dist/features/converters/lexicalToHtml/sync/index.js +92 -84
  201. package/dist/features/converters/lexicalToHtml/sync/index.js.map +1 -1
  202. package/dist/features/converters/lexicalToHtml/sync/types.js +1 -4
  203. package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -1
  204. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js +4 -7
  205. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js.map +1 -1
  206. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js +34 -29
  207. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js.map +1 -1
  208. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/tab.js +6 -7
  209. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/tab.js.map +1 -1
  210. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/text.js +28 -29
  211. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/text.js.map +1 -1
  212. package/dist/features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js +2 -7
  213. package/dist/features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js.map +1 -1
  214. package/dist/features/converters/lexicalToHtml_deprecated/converter/index.js +84 -84
  215. package/dist/features/converters/lexicalToHtml_deprecated/converter/index.js.map +1 -1
  216. package/dist/features/converters/lexicalToHtml_deprecated/converter/types.js +1 -6
  217. package/dist/features/converters/lexicalToHtml_deprecated/converter/types.js.map +1 -1
  218. package/dist/features/converters/lexicalToHtml_deprecated/field/index.js +107 -107
  219. package/dist/features/converters/lexicalToHtml_deprecated/field/index.js.map +1 -1
  220. package/dist/features/converters/lexicalToHtml_deprecated/index.js +4 -4
  221. package/dist/features/converters/lexicalToHtml_deprecated/index.js.map +1 -1
  222. package/dist/features/converters/lexicalToJSX/Component/index.js +36 -46
  223. package/dist/features/converters/lexicalToJSX/Component/index.js.map +1 -1
  224. package/dist/features/converters/lexicalToJSX/converter/converters/blockquote.js +12 -14
  225. package/dist/features/converters/lexicalToJSX/converter/converters/blockquote.js.map +1 -1
  226. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +13 -15
  227. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
  228. package/dist/features/converters/lexicalToJSX/converter/converters/horizontalRule.js +2 -7
  229. package/dist/features/converters/lexicalToJSX/converter/converters/horizontalRule.js.map +1 -1
  230. package/dist/features/converters/lexicalToJSX/converter/converters/linebreak.js +2 -7
  231. package/dist/features/converters/lexicalToJSX/converter/converters/linebreak.js.map +1 -1
  232. package/dist/features/converters/lexicalToJSX/converter/converters/link.js +48 -49
  233. package/dist/features/converters/lexicalToJSX/converter/converters/link.js.map +1 -1
  234. package/dist/features/converters/lexicalToJSX/converter/converters/list.js +56 -78
  235. package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
  236. package/dist/features/converters/lexicalToJSX/converter/converters/paragraph.js +16 -26
  237. package/dist/features/converters/lexicalToJSX/converter/converters/paragraph.js.map +1 -1
  238. package/dist/features/converters/lexicalToJSX/converter/converters/tab.js +1 -2
  239. package/dist/features/converters/lexicalToJSX/converter/converters/tab.js.map +1 -1
  240. package/dist/features/converters/lexicalToJSX/converter/converters/table.js +59 -73
  241. package/dist/features/converters/lexicalToJSX/converter/converters/table.js.map +1 -1
  242. package/dist/features/converters/lexicalToJSX/converter/converters/text.js +47 -74
  243. package/dist/features/converters/lexicalToJSX/converter/converters/text.js.map +1 -1
  244. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js +60 -76
  245. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
  246. package/dist/features/converters/lexicalToJSX/converter/defaultConverters.js +11 -12
  247. package/dist/features/converters/lexicalToJSX/converter/defaultConverters.js.map +1 -1
  248. package/dist/features/converters/lexicalToJSX/converter/index.js +128 -123
  249. package/dist/features/converters/lexicalToJSX/converter/index.js.map +1 -1
  250. package/dist/features/converters/lexicalToJSX/converter/types.js +1 -4
  251. package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -1
  252. package/dist/features/converters/lexicalToMarkdown/index.js +19 -17
  253. package/dist/features/converters/lexicalToMarkdown/index.js.map +1 -1
  254. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js +146 -223
  255. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js.map +1 -1
  256. package/dist/features/converters/lexicalToPlaintext/shared/findConverterForNode.js +13 -11
  257. package/dist/features/converters/lexicalToPlaintext/shared/findConverterForNode.js.map +1 -1
  258. package/dist/features/converters/lexicalToPlaintext/shared/types.js +1 -2
  259. package/dist/features/converters/lexicalToPlaintext/shared/types.js.map +1 -1
  260. package/dist/features/converters/lexicalToPlaintext/sync/index.js +82 -83
  261. package/dist/features/converters/lexicalToPlaintext/sync/index.js.map +1 -1
  262. package/dist/features/converters/lexicalToPlaintext/sync/types.js +1 -3
  263. package/dist/features/converters/lexicalToPlaintext/sync/types.js.map +1 -1
  264. package/dist/features/converters/markdownToLexical/index.js +16 -14
  265. package/dist/features/converters/markdownToLexical/index.js.map +1 -1
  266. package/dist/features/converters/utilities/payloadPopulateFn.js +38 -37
  267. package/dist/features/converters/utilities/payloadPopulateFn.js.map +1 -1
  268. package/dist/features/converters/utilities/restPopulateFn.js +30 -24
  269. package/dist/features/converters/utilities/restPopulateFn.js.map +1 -1
  270. package/dist/features/debug/jsxConverter/client/index.js +5 -7
  271. package/dist/features/debug/jsxConverter/client/index.js.map +1 -1
  272. package/dist/features/debug/jsxConverter/client/plugin/index.js +47 -27
  273. package/dist/features/debug/jsxConverter/client/plugin/index.js.map +1 -1
  274. package/dist/features/debug/jsxConverter/server/index.js +4 -5
  275. package/dist/features/debug/jsxConverter/server/index.js.map +1 -1
  276. package/dist/features/debug/testRecorder/client/index.js +5 -7
  277. package/dist/features/debug/testRecorder/client/index.js.map +1 -1
  278. package/dist/features/debug/testRecorder/client/plugin/index.js +365 -456
  279. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  280. package/dist/features/debug/testRecorder/server/index.js +4 -5
  281. package/dist/features/debug/testRecorder/server/index.js.map +1 -1
  282. package/dist/features/debug/treeView/client/index.js +5 -7
  283. package/dist/features/debug/treeView/client/index.js.map +1 -1
  284. package/dist/features/debug/treeView/client/plugin/index.js +23 -18
  285. package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
  286. package/dist/features/debug/treeView/server/index.js +4 -5
  287. package/dist/features/debug/treeView/server/index.js.map +1 -1
  288. package/dist/features/experimental_table/client/index.js +42 -61
  289. package/dist/features/experimental_table/client/index.js.map +1 -1
  290. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +517 -752
  291. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  292. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +316 -350
  293. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  294. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +225 -215
  295. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  296. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +133 -104
  297. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  298. package/dist/features/experimental_table/client/utils/debounce.js +107 -89
  299. package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
  300. package/dist/features/experimental_table/client/utils/useDebounce.js +39 -21
  301. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  302. package/dist/features/experimental_table/markdownTransformer.js +118 -123
  303. package/dist/features/experimental_table/markdownTransformer.js.map +1 -1
  304. package/dist/features/experimental_table/server/index.js +143 -125
  305. package/dist/features/experimental_table/server/index.js.map +1 -1
  306. package/dist/features/format/bold/feature.client.js +35 -38
  307. package/dist/features/format/bold/feature.client.js.map +1 -1
  308. package/dist/features/format/bold/feature.server.js +14 -18
  309. package/dist/features/format/bold/feature.server.js.map +1 -1
  310. package/dist/features/format/bold/markdownTransformers.js +14 -25
  311. package/dist/features/format/bold/markdownTransformers.js.map +1 -1
  312. package/dist/features/format/inlineCode/feature.client.js +27 -31
  313. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  314. package/dist/features/format/inlineCode/feature.server.js +5 -8
  315. package/dist/features/format/inlineCode/feature.server.js.map +1 -1
  316. package/dist/features/format/inlineCode/markdownTransformers.js +3 -6
  317. package/dist/features/format/inlineCode/markdownTransformers.js.map +1 -1
  318. package/dist/features/format/italic/feature.client.js +27 -32
  319. package/dist/features/format/italic/feature.client.js.map +1 -1
  320. package/dist/features/format/italic/feature.server.js +5 -9
  321. package/dist/features/format/italic/feature.server.js.map +1 -1
  322. package/dist/features/format/italic/markdownTransformers.js +7 -12
  323. package/dist/features/format/italic/markdownTransformers.js.map +1 -1
  324. package/dist/features/format/shared/toolbarFormatGroup.js +8 -8
  325. package/dist/features/format/shared/toolbarFormatGroup.js.map +1 -1
  326. package/dist/features/format/strikethrough/feature.client.js +27 -31
  327. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  328. package/dist/features/format/strikethrough/feature.server.js +5 -8
  329. package/dist/features/format/strikethrough/feature.server.js.map +1 -1
  330. package/dist/features/format/strikethrough/markdownTransformers.js +3 -6
  331. package/dist/features/format/strikethrough/markdownTransformers.js.map +1 -1
  332. package/dist/features/format/subscript/feature.client.js +26 -28
  333. package/dist/features/format/subscript/feature.client.js.map +1 -1
  334. package/dist/features/format/subscript/feature.server.js +4 -5
  335. package/dist/features/format/subscript/feature.server.js.map +1 -1
  336. package/dist/features/format/superscript/feature.client.js +26 -28
  337. package/dist/features/format/superscript/feature.client.js.map +1 -1
  338. package/dist/features/format/superscript/feature.server.js +4 -5
  339. package/dist/features/format/superscript/feature.server.js.map +1 -1
  340. package/dist/features/format/underline/feature.client.js +26 -28
  341. package/dist/features/format/underline/feature.client.js.map +1 -1
  342. package/dist/features/format/underline/feature.server.js +4 -5
  343. package/dist/features/format/underline/feature.server.js.map +1 -1
  344. package/dist/features/heading/client/index.js +142 -121
  345. package/dist/features/heading/client/index.js.map +1 -1
  346. package/dist/features/heading/markdownTransformer.js +22 -25
  347. package/dist/features/heading/markdownTransformer.js.map +1 -1
  348. package/dist/features/heading/server/i18n.js +111 -112
  349. package/dist/features/heading/server/i18n.js.map +1 -1
  350. package/dist/features/heading/server/index.js +60 -62
  351. package/dist/features/heading/server/index.js.map +1 -1
  352. package/dist/features/horizontalRule/client/index.js +48 -57
  353. package/dist/features/horizontalRule/client/index.js.map +1 -1
  354. package/dist/features/horizontalRule/client/markdownTransformer.js +15 -18
  355. package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
  356. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +27 -25
  357. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  358. package/dist/features/horizontalRule/client/plugin/index.js +32 -21
  359. package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
  360. package/dist/features/horizontalRule/server/i18n.js +111 -112
  361. package/dist/features/horizontalRule/server/i18n.js.map +1 -1
  362. package/dist/features/horizontalRule/server/index.js +17 -24
  363. package/dist/features/horizontalRule/server/index.js.map +1 -1
  364. package/dist/features/horizontalRule/server/markdownTransformer.js +15 -18
  365. package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
  366. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +72 -69
  367. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  368. package/dist/features/indent/client/IndentPlugin.js +78 -78
  369. package/dist/features/indent/client/IndentPlugin.js.map +1 -1
  370. package/dist/features/indent/client/index.js +77 -68
  371. package/dist/features/indent/client/index.js.map +1 -1
  372. package/dist/features/indent/client/toolbarIndentGroup.js +8 -8
  373. package/dist/features/indent/client/toolbarIndentGroup.js.map +1 -1
  374. package/dist/features/indent/server/i18n.js +148 -149
  375. package/dist/features/indent/server/i18n.js.map +1 -1
  376. package/dist/features/indent/server/index.js +11 -18
  377. package/dist/features/indent/server/index.js.map +1 -1
  378. package/dist/features/link/client/index.js +80 -83
  379. package/dist/features/link/client/index.js.map +1 -1
  380. package/dist/features/link/client/plugins/autoLink/index.js +273 -280
  381. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  382. package/dist/features/link/client/plugins/clickableLink/index.js +4 -8
  383. package/dist/features/link/client/plugins/clickableLink/index.js.map +1 -1
  384. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -1
  385. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
  386. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +293 -374
  387. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  388. package/dist/features/link/client/plugins/floatingLinkEditor/index.js +9 -12
  389. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  390. package/dist/features/link/client/plugins/floatingLinkEditor/types.js +1 -6
  391. package/dist/features/link/client/plugins/floatingLinkEditor/types.js.map +1 -1
  392. package/dist/features/link/client/plugins/link/index.js +68 -53
  393. package/dist/features/link/client/plugins/link/index.js.map +1 -1
  394. package/dist/features/link/markdownTransformer.js +33 -34
  395. package/dist/features/link/markdownTransformer.js.map +1 -1
  396. package/dist/features/link/nodes/AutoLinkNode.js +58 -56
  397. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  398. package/dist/features/link/nodes/LinkNode.js +288 -286
  399. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  400. package/dist/features/link/nodes/types.js +1 -6
  401. package/dist/features/link/nodes/types.js.map +1 -1
  402. package/dist/features/link/server/baseFields.js +140 -115
  403. package/dist/features/link/server/baseFields.js.map +1 -1
  404. package/dist/features/link/server/graphQLPopulationPromise.js +45 -29
  405. package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -1
  406. package/dist/features/link/server/i18n.js +148 -149
  407. package/dist/features/link/server/i18n.js.map +1 -1
  408. package/dist/features/link/server/index.js +143 -156
  409. package/dist/features/link/server/index.js.map +1 -1
  410. package/dist/features/link/server/transformExtraFields.js +15 -15
  411. package/dist/features/link/server/transformExtraFields.js.map +1 -1
  412. package/dist/features/link/server/validate.js +46 -35
  413. package/dist/features/link/server/validate.js.map +1 -1
  414. package/dist/features/lists/checklist/client/index.js +78 -86
  415. package/dist/features/lists/checklist/client/index.js.map +1 -1
  416. package/dist/features/lists/checklist/client/plugin/index.js +4 -8
  417. package/dist/features/lists/checklist/client/plugin/index.js.map +1 -1
  418. package/dist/features/lists/checklist/markdownTransformers.js +7 -11
  419. package/dist/features/lists/checklist/markdownTransformers.js.map +1 -1
  420. package/dist/features/lists/checklist/server/i18n.js +111 -112
  421. package/dist/features/lists/checklist/server/i18n.js.map +1 -1
  422. package/dist/features/lists/checklist/server/index.js +21 -26
  423. package/dist/features/lists/checklist/server/index.js.map +1 -1
  424. package/dist/features/lists/htmlConverter.js +62 -47
  425. package/dist/features/lists/htmlConverter.js.map +1 -1
  426. package/dist/features/lists/orderedList/client/index.js +72 -78
  427. package/dist/features/lists/orderedList/client/index.js.map +1 -1
  428. package/dist/features/lists/orderedList/markdownTransformer.js +7 -11
  429. package/dist/features/lists/orderedList/markdownTransformer.js.map +1 -1
  430. package/dist/features/lists/orderedList/server/i18n.js +111 -112
  431. package/dist/features/lists/orderedList/server/i18n.js.map +1 -1
  432. package/dist/features/lists/orderedList/server/index.js +21 -26
  433. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  434. package/dist/features/lists/plugin/index.js +4 -8
  435. package/dist/features/lists/plugin/index.js.map +1 -1
  436. package/dist/features/lists/shared/markdown.js +48 -49
  437. package/dist/features/lists/shared/markdown.js.map +1 -1
  438. package/dist/features/lists/shared/shouldRegisterListBaseNodes.js +9 -10
  439. package/dist/features/lists/shared/shouldRegisterListBaseNodes.js.map +1 -1
  440. package/dist/features/lists/shared/slashMenuListGroup.js +9 -8
  441. package/dist/features/lists/shared/slashMenuListGroup.js.map +1 -1
  442. package/dist/features/lists/unorderedList/client/index.js +68 -76
  443. package/dist/features/lists/unorderedList/client/index.js.map +1 -1
  444. package/dist/features/lists/unorderedList/markdownTransformer.js +7 -11
  445. package/dist/features/lists/unorderedList/markdownTransformer.js.map +1 -1
  446. package/dist/features/lists/unorderedList/server/i18n.js +111 -112
  447. package/dist/features/lists/unorderedList/server/i18n.js.map +1 -1
  448. package/dist/features/lists/unorderedList/server/index.js +17 -24
  449. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  450. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +18 -17
  451. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -1
  452. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +30 -29
  453. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -1
  454. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +21 -20
  455. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -1
  456. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +21 -19
  457. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -1
  458. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +18 -17
  459. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -1
  460. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +24 -23
  461. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -1
  462. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +20 -21
  463. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
  464. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +1 -10
  465. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -1
  466. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +70 -64
  467. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
  468. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js +1 -2
  469. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -1
  470. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +5 -7
  471. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -1
  472. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +42 -43
  473. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -1
  474. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +11 -21
  475. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  476. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +66 -65
  477. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  478. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +19 -19
  479. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
  480. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js +20 -26
  481. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
  482. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js +28 -30
  483. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -1
  484. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js +26 -27
  485. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
  486. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js +22 -21
  487. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
  488. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +22 -22
  489. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
  490. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js +12 -13
  491. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
  492. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js +23 -23
  493. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
  494. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +22 -22
  495. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
  496. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js +15 -16
  497. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
  498. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js +1 -13
  499. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -1
  500. package/dist/features/migrations/slateToLexical/converter/index.js +117 -110
  501. package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
  502. package/dist/features/migrations/slateToLexical/converter/types.js +1 -2
  503. package/dist/features/migrations/slateToLexical/converter/types.js.map +1 -1
  504. package/dist/features/migrations/slateToLexical/feature.client.js +5 -7
  505. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  506. package/dist/features/migrations/slateToLexical/feature.server.js +45 -54
  507. package/dist/features/migrations/slateToLexical/feature.server.js.map +1 -1
  508. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +11 -21
  509. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  510. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +66 -65
  511. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  512. package/dist/features/paragraph/client/index.js +58 -61
  513. package/dist/features/paragraph/client/index.js.map +1 -1
  514. package/dist/features/paragraph/server/i18n.js +148 -149
  515. package/dist/features/paragraph/server/i18n.js.map +1 -1
  516. package/dist/features/paragraph/server/index.js +6 -7
  517. package/dist/features/paragraph/server/index.js.map +1 -1
  518. package/dist/features/relationship/client/components/RelationshipComponent.js +114 -143
  519. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  520. package/dist/features/relationship/client/drawer/commands.js +0 -1
  521. package/dist/features/relationship/client/drawer/commands.js.map +1 -1
  522. package/dist/features/relationship/client/drawer/index.js +132 -81
  523. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  524. package/dist/features/relationship/client/index.js +53 -59
  525. package/dist/features/relationship/client/index.js.map +1 -1
  526. package/dist/features/relationship/client/nodes/RelationshipNode.js +60 -64
  527. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  528. package/dist/features/relationship/client/plugins/index.js +69 -39
  529. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  530. package/dist/features/relationship/client/utils/useEnabledRelationships.js +58 -48
  531. package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
  532. package/dist/features/relationship/server/graphQLPopulationPromise.js +34 -26
  533. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  534. package/dist/features/relationship/server/i18n.js +111 -112
  535. package/dist/features/relationship/server/i18n.js.map +1 -1
  536. package/dist/features/relationship/server/index.js +59 -64
  537. package/dist/features/relationship/server/index.js.map +1 -1
  538. package/dist/features/relationship/server/nodes/RelationshipNode.js +95 -92
  539. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  540. package/dist/features/shared/slashMenu/basicGroup.js +9 -8
  541. package/dist/features/shared/slashMenu/basicGroup.js.map +1 -1
  542. package/dist/features/shared/toolbar/addDropdownGroup.js +8 -9
  543. package/dist/features/shared/toolbar/addDropdownGroup.js.map +1 -1
  544. package/dist/features/shared/toolbar/featureButtonsGroup.js +7 -8
  545. package/dist/features/shared/toolbar/featureButtonsGroup.js.map +1 -1
  546. package/dist/features/shared/toolbar/textDropdownGroup.js +8 -9
  547. package/dist/features/shared/toolbar/textDropdownGroup.js.map +1 -1
  548. package/dist/features/textState/defaultColors.js +370 -370
  549. package/dist/features/textState/defaultColors.js.map +1 -1
  550. package/dist/features/textState/feature.client.js +64 -77
  551. package/dist/features/textState/feature.client.js.map +1 -1
  552. package/dist/features/textState/feature.server.js +14 -46
  553. package/dist/features/textState/feature.server.js.map +1 -1
  554. package/dist/features/textState/i18n.js +111 -112
  555. package/dist/features/textState/i18n.js.map +1 -1
  556. package/dist/features/textState/textState.js +62 -64
  557. package/dist/features/textState/textState.js.map +1 -1
  558. package/dist/features/toolbars/fixed/client/Toolbar/index.js +297 -263
  559. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  560. package/dist/features/toolbars/fixed/client/index.js +5 -7
  561. package/dist/features/toolbars/fixed/client/index.js.map +1 -1
  562. package/dist/features/toolbars/fixed/server/index.js +16 -32
  563. package/dist/features/toolbars/fixed/server/index.js.map +1 -1
  564. package/dist/features/toolbars/inline/client/Toolbar/index.js +366 -343
  565. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  566. package/dist/features/toolbars/inline/client/index.js +5 -7
  567. package/dist/features/toolbars/inline/client/index.js.map +1 -1
  568. package/dist/features/toolbars/inline/server/index.js +4 -5
  569. package/dist/features/toolbars/inline/server/index.js.map +1 -1
  570. package/dist/features/toolbars/shared/ToolbarButton/index.js +145 -103
  571. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  572. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +208 -264
  573. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  574. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +176 -172
  575. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  576. package/dist/features/toolbars/types.js +1 -29
  577. package/dist/features/toolbars/types.js.map +1 -1
  578. package/dist/features/typeUtilities.js +2 -3
  579. package/dist/features/typeUtilities.js.map +1 -1
  580. package/dist/features/typesClient.js +1 -61
  581. package/dist/features/typesClient.js.map +1 -1
  582. package/dist/features/typesServer.js +1 -90
  583. package/dist/features/typesServer.js.map +1 -1
  584. package/dist/features/upload/client/component/index.js +185 -238
  585. package/dist/features/upload/client/component/index.js.map +1 -1
  586. package/dist/features/upload/client/component/pending/index.js +10 -19
  587. package/dist/features/upload/client/component/pending/index.js.map +1 -1
  588. package/dist/features/upload/client/drawer/commands.js +1 -1
  589. package/dist/features/upload/client/drawer/commands.js.map +1 -1
  590. package/dist/features/upload/client/drawer/index.js +132 -83
  591. package/dist/features/upload/client/drawer/index.js.map +1 -1
  592. package/dist/features/upload/client/index.js +51 -61
  593. package/dist/features/upload/client/index.js.map +1 -1
  594. package/dist/features/upload/client/nodes/UploadNode.js +61 -67
  595. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  596. package/dist/features/upload/client/plugin/index.js +331 -290
  597. package/dist/features/upload/client/plugin/index.js.map +1 -1
  598. package/dist/features/upload/server/graphQLPopulationPromise.js +63 -48
  599. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  600. package/dist/features/upload/server/i18n.js +111 -112
  601. package/dist/features/upload/server/i18n.js.map +1 -1
  602. package/dist/features/upload/server/index.js +206 -196
  603. package/dist/features/upload/server/index.js.map +1 -1
  604. package/dist/features/upload/server/nodes/UploadNode.js +99 -115
  605. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  606. package/dist/features/upload/server/nodes/conversions.js +40 -41
  607. package/dist/features/upload/server/nodes/conversions.js.map +1 -1
  608. package/dist/features/upload/server/validate.js +62 -48
  609. package/dist/features/upload/server/validate.js.map +1 -1
  610. package/dist/field/Diff/converters/link.js +42 -32
  611. package/dist/field/Diff/converters/link.js.map +1 -1
  612. package/dist/field/Diff/converters/listitem/index.js +55 -75
  613. package/dist/field/Diff/converters/listitem/index.js.map +1 -1
  614. package/dist/field/Diff/converters/relationship/index.js +63 -85
  615. package/dist/field/Diff/converters/relationship/index.js.map +1 -1
  616. package/dist/field/Diff/converters/unknown/index.js +41 -64
  617. package/dist/field/Diff/converters/unknown/index.js.map +1 -1
  618. package/dist/field/Diff/converters/upload/index.js +69 -122
  619. package/dist/field/Diff/converters/upload/index.js.map +1 -1
  620. package/dist/field/Diff/index.js +66 -59
  621. package/dist/field/Diff/index.js.map +1 -1
  622. package/dist/field/Field.js +167 -226
  623. package/dist/field/Field.js.map +1 -1
  624. package/dist/field/RenderLexical/index.js +119 -123
  625. package/dist/field/RenderLexical/index.js.map +1 -1
  626. package/dist/field/bundled.css +1 -0
  627. package/dist/field/index.js +97 -61
  628. package/dist/field/index.js.map +1 -1
  629. package/dist/field/rscEntry.js +84 -86
  630. package/dist/field/rscEntry.js.map +1 -1
  631. package/dist/i18n.js +222 -223
  632. package/dist/i18n.js.map +1 -1
  633. package/dist/index.js +704 -639
  634. package/dist/index.js.map +1 -1
  635. package/dist/lexical/EditorPlugin.js +17 -21
  636. package/dist/lexical/EditorPlugin.js.map +1 -1
  637. package/dist/lexical/LexicalEditor.js +171 -274
  638. package/dist/lexical/LexicalEditor.js.map +1 -1
  639. package/dist/lexical/LexicalProvider.js +86 -109
  640. package/dist/lexical/LexicalProvider.js.map +1 -1
  641. package/dist/lexical/config/client/EditorConfigProvider.js +82 -94
  642. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  643. package/dist/lexical/config/client/default.js +3 -3
  644. package/dist/lexical/config/client/default.js.map +1 -1
  645. package/dist/lexical/config/client/loader.js +38 -30
  646. package/dist/lexical/config/client/loader.js.map +1 -1
  647. package/dist/lexical/config/client/sanitize.js +187 -188
  648. package/dist/lexical/config/client/sanitize.js.map +1 -1
  649. package/dist/lexical/config/server/default.js +5 -27
  650. package/dist/lexical/config/server/default.js.map +1 -1
  651. package/dist/lexical/config/server/loader.js +106 -105
  652. package/dist/lexical/config/server/loader.js.map +1 -1
  653. package/dist/lexical/config/server/sanitize.js +113 -114
  654. package/dist/lexical/config/server/sanitize.js.map +1 -1
  655. package/dist/lexical/config/types.js +1 -4
  656. package/dist/lexical/config/types.js.map +1 -1
  657. package/dist/lexical/nodes/index.js +15 -12
  658. package/dist/lexical/nodes/index.js.map +1 -1
  659. package/dist/lexical/plugins/ClipboardPlugin/index.js +70 -66
  660. package/dist/lexical/plugins/ClipboardPlugin/index.js.map +1 -1
  661. package/dist/lexical/plugins/DecoratorPlugin/index.js +225 -208
  662. package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
  663. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js +41 -42
  664. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
  665. package/dist/lexical/plugins/MarkdownShortcut/index.js +23 -11
  666. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  667. package/dist/lexical/plugins/NormalizeSelection/index.js +19 -21
  668. package/dist/lexical/plugins/NormalizeSelection/index.js.map +1 -1
  669. package/dist/lexical/plugins/SelectAllPlugin/index.js +17 -19
  670. package/dist/lexical/plugins/SelectAllPlugin/index.js.map +1 -1
  671. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +420 -399
  672. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  673. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +155 -164
  674. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  675. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -10
  676. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  677. package/dist/lexical/plugins/SlashMenu/index.js +181 -204
  678. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  679. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +41 -28
  680. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  681. package/dist/lexical/plugins/TextPlugin/index.js +42 -27
  682. package/dist/lexical/plugins/TextPlugin/index.js.map +1 -1
  683. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +130 -145
  684. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  685. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +10 -10
  686. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
  687. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +10 -10
  688. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
  689. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +26 -23
  690. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -1
  691. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +317 -325
  692. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  693. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +98 -86
  694. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  695. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js +22 -16
  696. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -1
  697. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +19 -29
  698. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
  699. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js +14 -11
  700. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -1
  701. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +133 -122
  702. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  703. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +2 -2
  704. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
  705. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js +2 -2
  706. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -1
  707. package/dist/lexical/plugins/handles/utils/setHandlePosition.js +24 -29
  708. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  709. package/dist/lexical/theme/EditorTheme.js +65 -72
  710. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  711. package/dist/lexical/ui/ContentEditable.js +35 -22
  712. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  713. package/dist/lexical/ui/icons/AI/index.js +31 -58
  714. package/dist/lexical/ui/icons/AI/index.js.map +1 -1
  715. package/dist/lexical/ui/icons/Add/index.js +16 -31
  716. package/dist/lexical/ui/icons/Add/index.js.map +1 -1
  717. package/dist/lexical/ui/icons/AlignCenter/index.js +25 -45
  718. package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -1
  719. package/dist/lexical/ui/icons/AlignJustify/index.js +25 -45
  720. package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -1
  721. package/dist/lexical/ui/icons/AlignLeft/index.js +25 -45
  722. package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -1
  723. package/dist/lexical/ui/icons/AlignRight/index.js +25 -45
  724. package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -1
  725. package/dist/lexical/ui/icons/Block/index.js +34 -54
  726. package/dist/lexical/ui/icons/Block/index.js.map +1 -1
  727. package/dist/lexical/ui/icons/Blockquote/index.js +16 -24
  728. package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -1
  729. package/dist/lexical/ui/icons/Bold/index.js +16 -24
  730. package/dist/lexical/ui/icons/Bold/index.js.map +1 -1
  731. package/dist/lexical/ui/icons/Checklist/index.js +24 -39
  732. package/dist/lexical/ui/icons/Checklist/index.js.map +1 -1
  733. package/dist/lexical/ui/icons/Code/index.js +19 -34
  734. package/dist/lexical/ui/icons/Code/index.js.map +1 -1
  735. package/dist/lexical/ui/icons/CodeBlock/index.js +14 -22
  736. package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
  737. package/dist/lexical/ui/icons/Collapse/index.js +15 -23
  738. package/dist/lexical/ui/icons/Collapse/index.js.map +1 -1
  739. package/dist/lexical/ui/icons/H1/index.js +16 -24
  740. package/dist/lexical/ui/icons/H1/index.js.map +1 -1
  741. package/dist/lexical/ui/icons/H2/index.js +16 -24
  742. package/dist/lexical/ui/icons/H2/index.js.map +1 -1
  743. package/dist/lexical/ui/icons/H3/index.js +16 -24
  744. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  745. package/dist/lexical/ui/icons/H4/index.js +16 -24
  746. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  747. package/dist/lexical/ui/icons/H5/index.js +16 -24
  748. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  749. package/dist/lexical/ui/icons/H6/index.js +16 -24
  750. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  751. package/dist/lexical/ui/icons/HorizontalRule/index.js +19 -27
  752. package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
  753. package/dist/lexical/ui/icons/IndentDecrease/index.js +28 -53
  754. package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
  755. package/dist/lexical/ui/icons/IndentIncrease/index.js +28 -53
  756. package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
  757. package/dist/lexical/ui/icons/InlineBlocks/index.js +18 -26
  758. package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -1
  759. package/dist/lexical/ui/icons/Italic/index.js +16 -24
  760. package/dist/lexical/ui/icons/Italic/index.js.map +1 -1
  761. package/dist/lexical/ui/icons/Link/index.js +17 -25
  762. package/dist/lexical/ui/icons/Link/index.js.map +1 -1
  763. package/dist/lexical/ui/icons/Meatballs/index.js +19 -39
  764. package/dist/lexical/ui/icons/Meatballs/index.js.map +1 -1
  765. package/dist/lexical/ui/icons/OrderedList/index.js +31 -61
  766. package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -1
  767. package/dist/lexical/ui/icons/Relationship/index.js +31 -58
  768. package/dist/lexical/ui/icons/Relationship/index.js.map +1 -1
  769. package/dist/lexical/ui/icons/Strikethrough/index.js +19 -34
  770. package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -1
  771. package/dist/lexical/ui/icons/Subscript/index.js +16 -24
  772. package/dist/lexical/ui/icons/Subscript/index.js.map +1 -1
  773. package/dist/lexical/ui/icons/Superscript/index.js +16 -24
  774. package/dist/lexical/ui/icons/Superscript/index.js.map +1 -1
  775. package/dist/lexical/ui/icons/Table/index.js +17 -25
  776. package/dist/lexical/ui/icons/Table/index.js.map +1 -1
  777. package/dist/lexical/ui/icons/Text/index.js +16 -24
  778. package/dist/lexical/ui/icons/Text/index.js.map +1 -1
  779. package/dist/lexical/ui/icons/TextState/index.js +19 -25
  780. package/dist/lexical/ui/icons/TextState/index.js.map +1 -1
  781. package/dist/lexical/ui/icons/Underline/index.js +19 -34
  782. package/dist/lexical/ui/icons/Underline/index.js.map +1 -1
  783. package/dist/lexical/ui/icons/UnorderedList/index.js +46 -81
  784. package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -1
  785. package/dist/lexical/ui/icons/Upload/index.js +28 -48
  786. package/dist/lexical/ui/icons/Upload/index.js.map +1 -1
  787. package/dist/lexical/utils/canUseDOM.js +1 -1
  788. package/dist/lexical/utils/canUseDOM.js.map +1 -1
  789. package/dist/lexical/utils/environment.js +1 -1
  790. package/dist/lexical/utils/environment.js.map +1 -1
  791. package/dist/lexical/utils/getDOMRangeRect.js +12 -12
  792. package/dist/lexical/utils/getDOMRangeRect.js.map +1 -1
  793. package/dist/lexical/utils/getSelectedNode.js +17 -13
  794. package/dist/lexical/utils/getSelectedNode.js.map +1 -1
  795. package/dist/lexical/utils/guard.js +4 -3
  796. package/dist/lexical/utils/guard.js.map +1 -1
  797. package/dist/lexical/utils/joinClasses.js +2 -2
  798. package/dist/lexical/utils/joinClasses.js.map +1 -1
  799. package/dist/lexical/utils/markdown/createBlockNode.js +9 -10
  800. package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
  801. package/dist/lexical/utils/nodeFormat.js +58 -59
  802. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  803. package/dist/lexical/utils/point.js +39 -32
  804. package/dist/lexical/utils/point.js.map +1 -1
  805. package/dist/lexical/utils/rect.js +166 -136
  806. package/dist/lexical/utils/rect.js.map +1 -1
  807. package/dist/lexical/utils/setFloatingElemPosition.js +56 -48
  808. package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
  809. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js +22 -22
  810. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -1
  811. package/dist/lexical/utils/swipe.js +81 -83
  812. package/dist/lexical/utils/swipe.js.map +1 -1
  813. package/dist/lexical/utils/url.js +53 -53
  814. package/dist/lexical/utils/url.js.map +1 -1
  815. package/dist/lexical/utils/url.spec.js +98 -214
  816. package/dist/lexical/utils/url.spec.js.map +1 -1
  817. package/dist/lexical-proxy/@lexical-headless.js +0 -1
  818. package/dist/lexical-proxy/@lexical-headless.js.map +1 -1
  819. package/dist/lexical-proxy/@lexical-html.js +0 -1
  820. package/dist/lexical-proxy/@lexical-html.js.map +1 -1
  821. package/dist/lexical-proxy/@lexical-link.js +0 -1
  822. package/dist/lexical-proxy/@lexical-link.js.map +1 -1
  823. package/dist/lexical-proxy/@lexical-list.js +0 -1
  824. package/dist/lexical-proxy/@lexical-list.js.map +1 -1
  825. package/dist/lexical-proxy/@lexical-mark.js +0 -1
  826. package/dist/lexical-proxy/@lexical-mark.js.map +1 -1
  827. package/dist/lexical-proxy/@lexical-markdown.js +0 -1
  828. package/dist/lexical-proxy/@lexical-markdown.js.map +1 -1
  829. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.js +0 -1
  830. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.js.map +1 -1
  831. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.js +0 -1
  832. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.js.map +1 -1
  833. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.js +0 -1
  834. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.js.map +1 -1
  835. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.js +0 -1
  836. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.js.map +1 -1
  837. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.js +0 -1
  838. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.js.map +1 -1
  839. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.js +0 -1
  840. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.js.map +1 -1
  841. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.js +0 -1
  842. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.js.map +1 -1
  843. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.js +0 -1
  844. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.js.map +1 -1
  845. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.js +0 -1
  846. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.js.map +1 -1
  847. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.js +0 -1
  848. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.js.map +1 -1
  849. package/dist/lexical-proxy/@lexical-react/LexicalComposer.js +0 -1
  850. package/dist/lexical-proxy/@lexical-react/LexicalComposer.js.map +1 -1
  851. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.js +0 -1
  852. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.js.map +1 -1
  853. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.js +0 -1
  854. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.js.map +1 -1
  855. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +0 -1
  856. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +1 -1
  857. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.js +0 -1
  858. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.js.map +1 -1
  859. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.js +0 -1
  860. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.js.map +1 -1
  861. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.js +0 -1
  862. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.js.map +1 -1
  863. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.js +0 -1
  864. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.js.map +1 -1
  865. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.js +0 -1
  866. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.js.map +1 -1
  867. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.js +0 -1
  868. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.js.map +1 -1
  869. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.js +0 -1
  870. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.js.map +1 -1
  871. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.js +0 -1
  872. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.js.map +1 -1
  873. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.js +0 -1
  874. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.js.map +1 -1
  875. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.js +0 -1
  876. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.js.map +1 -1
  877. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.js +0 -1
  878. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.js.map +1 -1
  879. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.js +0 -1
  880. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.js.map +1 -1
  881. package/dist/lexical-proxy/@lexical-react/LexicalNodeContextMenuPlugin.js +0 -1
  882. package/dist/lexical-proxy/@lexical-react/LexicalNodeContextMenuPlugin.js.map +1 -1
  883. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.js +0 -1
  884. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.js.map +1 -1
  885. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.js +0 -1
  886. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.js.map +1 -1
  887. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.js +0 -1
  888. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.js.map +1 -1
  889. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.js +0 -1
  890. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.js.map +1 -1
  891. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.js +0 -1
  892. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.js.map +1 -1
  893. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.js +0 -1
  894. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.js.map +1 -1
  895. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.js +0 -1
  896. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.js.map +1 -1
  897. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.js +0 -1
  898. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.js.map +1 -1
  899. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.js +0 -1
  900. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.js.map +1 -1
  901. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.js +0 -1
  902. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.js.map +1 -1
  903. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.js +0 -1
  904. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.js.map +1 -1
  905. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.js +0 -1
  906. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.js.map +1 -1
  907. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.js +0 -1
  908. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.js.map +1 -1
  909. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.js +0 -1
  910. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.js.map +1 -1
  911. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.js +0 -1
  912. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.js.map +1 -1
  913. package/dist/lexical-proxy/@lexical-rich-text.js +0 -1
  914. package/dist/lexical-proxy/@lexical-rich-text.js.map +1 -1
  915. package/dist/lexical-proxy/@lexical-selection.js +0 -1
  916. package/dist/lexical-proxy/@lexical-selection.js.map +1 -1
  917. package/dist/lexical-proxy/@lexical-utils.js +0 -1
  918. package/dist/lexical-proxy/@lexical-utils.js.map +1 -1
  919. package/dist/lexical-proxy/lexical.js +0 -1
  920. package/dist/lexical-proxy/lexical.js.map +1 -1
  921. package/dist/nodeTypes.js +1 -35
  922. package/dist/nodeTypes.js.map +1 -1
  923. package/dist/packages/@lexical/markdown/MarkdownExport.js +179 -184
  924. package/dist/packages/@lexical/markdown/MarkdownExport.js.map +1 -1
  925. package/dist/packages/@lexical/markdown/MarkdownImport.js +172 -174
  926. package/dist/packages/@lexical/markdown/MarkdownImport.js.map +1 -1
  927. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js +268 -258
  928. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js.map +1 -1
  929. package/dist/packages/@lexical/markdown/MarkdownTransformers.js +209 -305
  930. package/dist/packages/@lexical/markdown/MarkdownTransformers.js.map +1 -1
  931. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js +73 -76
  932. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js.map +1 -1
  933. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js +48 -59
  934. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js.map +1 -1
  935. package/dist/packages/@lexical/markdown/importTextTransformers.js +45 -51
  936. package/dist/packages/@lexical/markdown/importTextTransformers.js.map +1 -1
  937. package/dist/packages/@lexical/markdown/index.js +14 -33
  938. package/dist/packages/@lexical/markdown/index.js.map +1 -1
  939. package/dist/packages/@lexical/markdown/utils.js +185 -217
  940. package/dist/packages/@lexical/markdown/utils.js.map +1 -1
  941. package/dist/populateGraphQL/defaultValue.js +24 -29
  942. package/dist/populateGraphQL/defaultValue.js.map +1 -1
  943. package/dist/populateGraphQL/populate.js +37 -26
  944. package/dist/populateGraphQL/populate.js.map +1 -1
  945. package/dist/populateGraphQL/populateLexicalPopulationPromises.js +50 -34
  946. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  947. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js +42 -35
  948. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  949. package/dist/types.js +1 -40
  950. package/dist/types.js.map +1 -1
  951. package/dist/utilities/buildEditorState.js +40 -39
  952. package/dist/utilities/buildEditorState.js.map +1 -1
  953. package/dist/utilities/buildInitialState.js +52 -51
  954. package/dist/utilities/buildInitialState.js.map +1 -1
  955. package/dist/utilities/createClientFeature.js +48 -42
  956. package/dist/utilities/createClientFeature.js.map +1 -1
  957. package/dist/utilities/createServerFeature.js +48 -38
  958. package/dist/utilities/createServerFeature.js.map +1 -1
  959. package/dist/utilities/editorConfigFactory.js +79 -78
  960. package/dist/utilities/editorConfigFactory.js.map +1 -1
  961. package/dist/utilities/fieldsDrawer/Drawer.js +70 -45
  962. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  963. package/dist/utilities/fieldsDrawer/DrawerContent.js +122 -130
  964. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  965. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +115 -64
  966. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
  967. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +121 -76
  968. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
  969. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +141 -79
  970. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
  971. package/dist/utilities/forEachNodeRecursively.js +24 -19
  972. package/dist/utilities/forEachNodeRecursively.js.map +1 -1
  973. package/dist/utilities/generateImportMap.js +49 -43
  974. package/dist/utilities/generateImportMap.js.map +1 -1
  975. package/dist/utilities/generateSchemaMap.js +37 -32
  976. package/dist/utilities/generateSchemaMap.js.map +1 -1
  977. package/dist/utilities/getDefaultSanitizedEditorConfig.js +14 -12
  978. package/dist/utilities/getDefaultSanitizedEditorConfig.js.map +1 -1
  979. package/dist/utilities/initLexicalFeatures.js +65 -68
  980. package/dist/utilities/initLexicalFeatures.js.map +1 -1
  981. package/dist/utilities/jsx/collectTopLevelJSXInLines.js +29 -26
  982. package/dist/utilities/jsx/collectTopLevelJSXInLines.js.map +1 -1
  983. package/dist/utilities/jsx/declare.d.js.map +1 -1
  984. package/dist/utilities/jsx/extractPropsFromJSXPropsString.js +102 -100
  985. package/dist/utilities/jsx/extractPropsFromJSXPropsString.js.map +1 -1
  986. package/dist/utilities/jsx/jsx.js +80 -76
  987. package/dist/utilities/jsx/jsx.js.map +1 -1
  988. package/dist/utilities/jsx/jsx.spec.js +171 -225
  989. package/dist/utilities/jsx/jsx.spec.js.map +1 -1
  990. package/dist/utilities/migrateSlateToLexical/index.js +128 -112
  991. package/dist/utilities/migrateSlateToLexical/index.js.map +1 -1
  992. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +78 -74
  993. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
  994. package/dist/utilities/recurseNodeTree.js +25 -22
  995. package/dist/utilities/recurseNodeTree.js.map +1 -1
  996. package/dist/utilities/upgradeLexicalData/index.js +102 -88
  997. package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
  998. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +80 -78
  999. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  1000. package/dist/utilities/useLexicalFeature.js +16 -14
  1001. package/dist/utilities/useLexicalFeature.js.map +1 -1
  1002. package/dist/utilities/useRunDeprioritized.js +38 -41
  1003. package/dist/utilities/useRunDeprioritized.js.map +1 -1
  1004. package/dist/validate/hasText.js +20 -21
  1005. package/dist/validate/hasText.js.map +1 -1
  1006. package/dist/validate/index.js +28 -22
  1007. package/dist/validate/index.js.map +1 -1
  1008. package/dist/validate/validateNodes.js +31 -28
  1009. package/dist/validate/validateNodes.js.map +1 -1
  1010. package/package.json +6 -6
  1011. package/dist/features/blocks/client/component/index.scss +0 -188
  1012. package/dist/features/blocks/client/componentInline/index.scss +0 -90
  1013. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.scss +0 -6
  1014. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.scss +0 -29
  1015. package/dist/features/blocks/premade/CodeBlock/Component/index.scss +0 -97
  1016. package/dist/features/debug/jsxConverter/client/plugin/style.scss +0 -12
  1017. package/dist/features/debug/testRecorder/client/plugin/index.scss +0 -53
  1018. package/dist/features/debug/treeView/client/plugin/index.scss +0 -80
  1019. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.scss +0 -87
  1020. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.scss +0 -11
  1021. package/dist/features/experimental_table/client/plugins/TablePlugin/index.scss +0 -233
  1022. package/dist/features/horizontalRule/client/plugin/index.scss +0 -23
  1023. package/dist/features/link/client/plugins/floatingLinkEditor/index.scss +0 -92
  1024. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.scss +0 -16
  1025. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.scss +0 -16
  1026. package/dist/features/relationship/client/components/index.scss +0 -95
  1027. package/dist/features/toolbars/fixed/client/Toolbar/index.scss +0 -113
  1028. package/dist/features/toolbars/inline/client/Toolbar/index.scss +0 -58
  1029. package/dist/features/toolbars/shared/ToolbarButton/index.scss +0 -46
  1030. package/dist/features/toolbars/shared/ToolbarDropdown/index.scss +0 -129
  1031. package/dist/features/upload/client/component/index.scss +0 -191
  1032. package/dist/field/Diff/converters/listitem/index.scss +0 -47
  1033. package/dist/field/Diff/converters/relationship/index.scss +0 -73
  1034. package/dist/field/Diff/converters/unknown/index.scss +0 -40
  1035. package/dist/field/Diff/converters/upload/index.scss +0 -115
  1036. package/dist/field/Diff/index.scss +0 -102
  1037. package/dist/field/index.scss +0 -41
  1038. package/dist/lexical/LexicalEditor.scss +0 -54
  1039. package/dist/lexical/plugins/DecoratorPlugin/index.scss +0 -13
  1040. package/dist/lexical/plugins/InsertParagraphAtEnd/index.scss +0 -54
  1041. package/dist/lexical/plugins/SlashMenu/index.scss +0 -68
  1042. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.scss +0 -35
  1043. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.scss +0 -80
  1044. package/dist/lexical/theme/EditorTheme.scss +0 -357
  1045. package/dist/lexical/ui/ContentEditable.scss +0 -105
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"sourcesContent":["'use client'\nimport type { BaseSelection, LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, ReactPortal, RefObject } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $setSelection,\n COMMAND_PRIORITY_LOW,\n COMMAND_PRIORITY_NORMAL,\n createCommand,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nimport { CAN_USE_DOM } from '../../../utils/canUseDOM.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: RefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectedItemKey: null | string\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | null | ReactPortal\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) {\n return\n }\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): TextNode | undefined {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n const characterOffset = match.replaceableString.length\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElementRef: RefObject<HTMLElement | null>,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n const targetElement = targetElementRef.current\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.disconnect()\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [editor, onVisibilityChange, onReposition, resolution, targetElementRef])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: RefObject<HTMLElement | null>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]!\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n close()\n\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n if (textNodeContainingQuery) {\n textNodeContainingQuery.remove()\n }\n })\n\n setTimeout(() => {\n // Needed in Firefox. See https://github.com/payloadcms/payload/issues/10724\n let selection: BaseSelection | undefined\n editor.read(() => {\n selection = $getSelection()?.clone()\n })\n editor.update(() => {\n if (selection) {\n $setSelection(selection)\n }\n })\n\n selectedItem.onSelect({\n editor,\n queryString: resolution.match ? resolution.match.matchingString : '',\n })\n }, 0)\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n if (!newSelectedItem) {\n return false\n }\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n if (!newSelectedItem) {\n return false\n }\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectedItemKey,\n selectItemAndCleanUp,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nfunction setContainerDivAttributes(containerDiv: HTMLElement, className?: string) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): RefObject<HTMLElement | null> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement | null>(\n CAN_USE_DOM ? document.createElement('div') : null,\n )\n const positionMenu = useCallback(() => {\n if (anchorElementRef.current === null || parent === undefined) {\n return\n }\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n const isRTL = document.dir === 'rtl' || document.documentElement.dir === 'rtl'\n const anchorRect = anchorElem.getBoundingClientRect()\n const leftBoundary = Math.max(0, rootElementRect.left)\n\n if (!isRTL && left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n } else if (isRTL && menuRect.left < leftBoundary) {\n const newLeft = leftBoundary + menuWidth - anchorRect.left\n containerDiv.style.left = `${newLeft + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n setContainerDivAttributes(containerDiv, className)\n anchorElem.append(containerDiv)\n }\n containerDiv.setAttribute('id', 'slash-menu')\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n containerDiv.removeAttribute('id')\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n"],"names":["useLexicalComposerContext","mergeRegister","$getSelection","$isRangeSelection","$setSelection","COMMAND_PRIORITY_LOW","COMMAND_PRIORITY_NORMAL","createCommand","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","KEY_TAB_COMMAND","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","CAN_USE_DOM","baseClass","scrollIntoViewIfNeeded","target","typeaheadContainerNode","document","getElementById","typeaheadRect","getBoundingClientRect","top","height","window","innerHeight","scrollIntoView","block","getFullMatchOffset","documentText","entryText","offset","triggerOffset","i","length","substring","$splitNodeContainingQuery","match","selection","isCollapsed","anchor","type","anchorNode","getNode","isSimpleText","selectionOffset","textContent","getTextContent","slice","characterOffset","replaceableString","queryOffset","matchingString","startOffset","newNode","splitText","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","body","parent","parentElement","test","overflow","overflowY","overflowX","isTriggerVisibleInNearestScrollContainer","targetElement","containerElement","tRect","cRect","bottom","useDynamicPositioning","resolution","targetElementRef","onReposition","onVisibilityChange","editor","current","rootElement","getRootElement","rootScrollParent","ticking","previousIsInView","handleScroll","requestAnimationFrame","isInView","resizeObserver","ResizeObserver","addEventListener","capture","passive","observe","disconnect","removeEventListener","SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND","LexicalMenu","anchorElementRef","close","groups","menuRenderFn","shouldSplitNodeWithQuery","selectedItemKey","setSelectedItemKey","updateSelectedItem","item","rootElem","setAttribute","key","setSelectedItemKeyToFirstMatchingItem","allItems","flatMap","group","items","firstMatchingItem","selectItemAndCleanUp","selectedItem","update","textNodeContainingQuery","remove","setTimeout","read","clone","onSelect","queryString","removeAttribute","registerCommand","ref","payload","event","selectedIndex","findIndex","newSelectedIndex","newSelectedItem","dispatchCommand","index","preventDefault","stopImmediatePropagation","find","listItemProps","setContainerDivAttributes","containerDiv","className","display","useMenuAnchorRef","anchorElem","setResolution","createElement","positionMenu","undefined","VERTICAL_OFFSET","menuEle","firstChild","width","getRect","left","rawTop","scrollY","scrollX","menuRect","menuHeight","menuWidth","rootElementRect","isRTL","dir","documentElement","anchorRect","leftBoundary","Math","max","right","newLeft","wouldGoOffBottomOfScreen","wouldGoOffTopOfScreen","margin","isConnected","append"],"mappings":"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"}
1
+ {"version":3,"file":"LexicalMenu.js","names":["c","_c","useLexicalComposerContext","mergeRegister","$getSelection","$isRangeSelection","$setSelection","COMMAND_PRIORITY_LOW","COMMAND_PRIORITY_NORMAL","createCommand","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","KEY_TAB_COMMAND","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","CAN_USE_DOM","baseClass","scrollIntoViewIfNeeded","target","typeaheadContainerNode","document","getElementById","typeaheadRect","getBoundingClientRect","top","height","window","innerHeight","scrollIntoView","block","getFullMatchOffset","documentText","entryText","offset","triggerOffset","i","length","substring","$splitNodeContainingQuery","match","selection","isCollapsed","anchor","type","anchorNode","getNode","isSimpleText","selectionOffset","textContent","getTextContent","slice","characterOffset","replaceableString","queryOffset","matchingString","startOffset","newNode","splitText","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","body","parent1","parentElement","test","overflow","overflowY","overflowX","isTriggerVisibleInNearestScrollContainer","targetElement","containerElement","tRect","cRect","bottom","useDynamicPositioning","resolution","targetElementRef","onReposition","onVisibilityChange","$","editor","t0","t1","current","rootElement","getRootElement","rootScrollParent","ticking","previousIsInView","handleScroll","requestAnimationFrame","isInView","resizeObserver","ResizeObserver","addEventListener","capture","passive","observe","disconnect","removeEventListener","SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND","LexicalMenu","anchorElementRef","close","groups","menuRenderFn","shouldSplitNodeWithQuery","selectedItemKey","setSelectedItemKey","updateSelectedItem","item","rootElem","setAttribute","key","setSelectedItemKeyToFirstMatchingItem","allItems","flatMap","group","items","firstMatchingItem","selectItemAndCleanUp","selectedItem","update","textNodeContainingQuery","remove","setTimeout","read","clone","onSelect","queryString","removeAttribute","registerCommand","ref","payload","event","selectedIndex","findIndex","newSelectedIndex","newSelectedItem","dispatchCommand","index","preventDefault","stopImmediatePropagation","find","listItemProps","setContainerDivAttributes","containerDiv","className","display","useMenuAnchorRef","anchorElem","setResolution","Symbol","for","createElement","parent","undefined","menuEle","firstChild","width","getRect","left","rawTop","scrollY","scrollX","menuRect","menuHeight","menuWidth","rootElementRect","isRTL","dir","documentElement","anchorRect","leftBoundary","Math","max","right","newLeft","wouldGoOffBottomOfScreen","wouldGoOffTopOfScreen","isConnected","append","positionMenu","t2","t3","rootElement_0","containerDiv_0","t4"],"sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"sourcesContent":["'use client'\nimport type { BaseSelection, LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, ReactPortal, RefObject } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $setSelection,\n COMMAND_PRIORITY_LOW,\n COMMAND_PRIORITY_NORMAL,\n createCommand,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nimport { CAN_USE_DOM } from '../../../utils/canUseDOM.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: RefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectedItemKey: null | string\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | null | ReactPortal\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) {\n return\n }\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): TextNode | undefined {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n const characterOffset = match.replaceableString.length\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElementRef: RefObject<HTMLElement | null>,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n const targetElement = targetElementRef.current\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.disconnect()\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [editor, onVisibilityChange, onReposition, resolution, targetElementRef])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: RefObject<HTMLElement | null>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]!\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n close()\n\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n if (textNodeContainingQuery) {\n textNodeContainingQuery.remove()\n }\n })\n\n setTimeout(() => {\n // Needed in Firefox. See https://github.com/payloadcms/payload/issues/10724\n let selection: BaseSelection | undefined\n editor.read(() => {\n selection = $getSelection()?.clone()\n })\n editor.update(() => {\n if (selection) {\n $setSelection(selection)\n }\n })\n\n selectedItem.onSelect({\n editor,\n queryString: resolution.match ? resolution.match.matchingString : '',\n })\n }, 0)\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n if (!newSelectedItem) {\n return false\n }\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n if (!newSelectedItem) {\n return false\n }\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_NORMAL,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectedItemKey,\n selectItemAndCleanUp,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nfunction setContainerDivAttributes(containerDiv: HTMLElement, className?: string) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): RefObject<HTMLElement | null> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement | null>(\n CAN_USE_DOM ? document.createElement('div') : null,\n )\n const positionMenu = useCallback(() => {\n if (anchorElementRef.current === null || parent === undefined) {\n return\n }\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n const isRTL = document.dir === 'rtl' || document.documentElement.dir === 'rtl'\n const anchorRect = anchorElem.getBoundingClientRect()\n const leftBoundary = Math.max(0, rootElementRect.left)\n\n if (!isRTL && left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n } else if (isRTL && menuRect.left < leftBoundary) {\n const newLeft = leftBoundary + menuWidth - anchorRect.left\n containerDiv.style.left = `${newLeft + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n setContainerDivAttributes(containerDiv, className)\n anchorElem.append(containerDiv)\n }\n containerDiv.setAttribute('id', 'slash-menu')\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n containerDiv.removeAttribute('id')\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  'use client';
2
- import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
2
+
3
+ import { jsx as _jsx } from "react/jsx-runtime";
3
4
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
4
5
  import { mergeRegister } from '@lexical/utils';
5
6
  import { $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, createCommand, getDOMSelection } from 'lexical';
@@ -8,182 +9,172 @@ import * as React from 'react';
8
9
  import { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js';
9
10
  export const PUNCTUATION = '\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%\'"~=<>_:;';
10
11
  function getTextUpToAnchor(selection) {
11
- const anchor = selection.anchor;
12
- if (anchor.type !== 'text') {
13
- return null;
14
- }
15
- const anchorNode = anchor.getNode();
16
- if (!anchorNode.isSimpleText()) {
17
- return null;
18
- }
19
- const anchorOffset = anchor.offset;
20
- return anchorNode.getTextContent().slice(0, anchorOffset);
12
+ const anchor = selection.anchor;
13
+ if (anchor.type !== 'text') {
14
+ return null;
15
+ }
16
+ const anchorNode = anchor.getNode();
17
+ if (!anchorNode.isSimpleText()) {
18
+ return null;
19
+ }
20
+ const anchorOffset = anchor.offset;
21
+ return anchorNode.getTextContent().slice(0, anchorOffset);
21
22
  }
22
23
  function tryToPositionRange(leadOffset, range, editorWindow) {
23
- const domSelection = getDOMSelection(editorWindow);
24
- if (domSelection === null || !domSelection.isCollapsed) {
25
- return false;
26
- }
27
- const anchorNode = domSelection.anchorNode;
28
- const startOffset = leadOffset;
29
- const endOffset = domSelection.anchorOffset;
30
- if (anchorNode == null || endOffset == null) {
31
- return false;
32
- }
33
- try {
34
- range.setStart(anchorNode, startOffset);
35
- // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial
36
- range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1);
37
- } catch (error) {
38
- return false;
39
- }
40
- return true;
24
+ const domSelection = getDOMSelection(editorWindow);
25
+ if (domSelection === null || !domSelection.isCollapsed) {
26
+ return false;
27
+ }
28
+ const anchorNode = domSelection.anchorNode;
29
+ const startOffset = leadOffset;
30
+ const endOffset = domSelection.anchorOffset;
31
+ if (anchorNode == null || endOffset == null) {
32
+ return false;
33
+ }
34
+ try {
35
+ range.setStart(anchorNode, startOffset);
36
+ // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial
37
+ range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1);
38
+ } catch (error) {
39
+ return false;
40
+ }
41
+ return true;
41
42
  }
42
43
  function getQueryTextForSearch(editor) {
43
- let text;
44
- editor.getEditorState().read(()=>{
45
- const selection = $getSelection();
46
- if (!$isRangeSelection(selection)) {
47
- return;
48
- }
49
- text = getTextUpToAnchor(selection);
50
- });
51
- return text;
44
+ let text;
45
+ editor.getEditorState().read(() => {
46
+ const selection = $getSelection();
47
+ if (!$isRangeSelection(selection)) {
48
+ return;
49
+ }
50
+ text = getTextUpToAnchor(selection);
51
+ });
52
+ return text;
52
53
  }
53
54
  function isSelectionOnEntityBoundary(editor, offset) {
54
- if (offset !== 0) {
55
- return false;
55
+ if (offset !== 0) {
56
+ return false;
57
+ }
58
+ return editor.getEditorState().read(() => {
59
+ const selection = $getSelection();
60
+ if ($isRangeSelection(selection)) {
61
+ const anchor = selection.anchor;
62
+ const anchorNode = anchor.getNode();
63
+ const prevSibling = anchorNode.getPreviousSibling();
64
+ return $isTextNode(prevSibling) && prevSibling.isTextEntity();
56
65
  }
57
- return editor.getEditorState().read(()=>{
58
- const selection = $getSelection();
59
- if ($isRangeSelection(selection)) {
60
- const anchor = selection.anchor;
61
- const anchorNode = anchor.getNode();
62
- const prevSibling = anchorNode.getPreviousSibling();
63
- return $isTextNode(prevSibling) && prevSibling.isTextEntity();
64
- }
65
- return false;
66
- });
66
+ return false;
67
+ });
67
68
  }
68
69
  function startTransition(callback) {
69
- if (React.startTransition) {
70
- React.startTransition(callback);
71
- } else {
72
- callback();
73
- }
70
+ if (React.startTransition) {
71
+ React.startTransition(callback);
72
+ } else {
73
+ callback();
74
+ }
74
75
  }
75
76
  export { useDynamicPositioning } from './LexicalMenu.js';
76
77
  export const ENABLE_SLASH_MENU_COMMAND = createCommand('ENABLE_SLASH_MENU_COMMAND');
77
- export function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem, groups, menuRenderFn, onClose, onOpen, onQueryChange, triggerFn }) {
78
- const [editor] = useLexicalComposerContext();
79
- const [resolution, setResolution] = useState(null);
80
- const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName);
81
- const closeTypeahead = useCallback(()=>{
82
- setResolution(null);
83
- if (onClose != null && resolution !== null) {
84
- onClose();
78
+ export function LexicalTypeaheadMenuPlugin({
79
+ anchorClassName,
80
+ anchorElem,
81
+ groups,
82
+ menuRenderFn,
83
+ onClose,
84
+ onOpen,
85
+ onQueryChange,
86
+ triggerFn
87
+ }) {
88
+ const [editor] = useLexicalComposerContext();
89
+ const [resolution, setResolution] = useState(null);
90
+ const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName);
91
+ const closeTypeahead = useCallback(() => {
92
+ setResolution(null);
93
+ if (onClose != null && resolution !== null) {
94
+ onClose();
95
+ }
96
+ }, [onClose, resolution]);
97
+ const openTypeahead = useCallback(res => {
98
+ setResolution(res);
99
+ if (onOpen != null && resolution === null) {
100
+ onOpen(res);
101
+ }
102
+ }, [onOpen, resolution]);
103
+ // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there
104
+ useEffect(() => {
105
+ return mergeRegister(editor.registerCommand(ENABLE_SLASH_MENU_COMMAND, ({
106
+ node
107
+ }) => {
108
+ editor.getEditorState().read(() => {
109
+ const match = {
110
+ leadOffset: 0,
111
+ matchingString: '',
112
+ replaceableString: ''
113
+ };
114
+ if (!isSelectionOnEntityBoundary(editor, match.leadOffset)) {
115
+ if (node !== null) {
116
+ const editorWindow = editor._window ?? window;
117
+ const range = editorWindow.document.createRange();
118
+ const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow);
119
+ if (isRangePositioned !== null) {
120
+ startTransition(() => openTypeahead({
121
+ getRect: () => {
122
+ return range.getBoundingClientRect();
123
+ },
124
+ match
125
+ }));
126
+ }
127
+ return;
128
+ }
85
129
  }
86
- }, [
87
- onClose,
88
- resolution
89
- ]);
90
- const openTypeahead = useCallback((res)=>{
91
- setResolution(res);
92
- if (onOpen != null && resolution === null) {
93
- onOpen(res);
130
+ });
131
+ return true;
132
+ }, COMMAND_PRIORITY_LOW));
133
+ }, [editor, openTypeahead]);
134
+ useEffect(() => {
135
+ const updateListener = () => {
136
+ editor.getEditorState().read(() => {
137
+ const editorWindow_0 = editor._window ?? window;
138
+ const range_0 = editorWindow_0.document.createRange();
139
+ const selection = $getSelection();
140
+ const text = getQueryTextForSearch(editor);
141
+ if (!$isRangeSelection(selection) || !selection.isCollapsed() || text === undefined || range_0 === null) {
142
+ closeTypeahead();
143
+ return;
94
144
  }
95
- }, [
96
- onOpen,
97
- resolution
98
- ]);
99
- // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there
100
- useEffect(()=>{
101
- return mergeRegister(editor.registerCommand(ENABLE_SLASH_MENU_COMMAND, ({ node })=>{
102
- editor.getEditorState().read(()=>{
103
- const match = {
104
- leadOffset: 0,
105
- matchingString: '',
106
- replaceableString: ''
107
- };
108
- if (!isSelectionOnEntityBoundary(editor, match.leadOffset)) {
109
- if (node !== null) {
110
- const editorWindow = editor._window ?? window;
111
- const range = editorWindow.document.createRange();
112
- const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow);
113
- if (isRangePositioned !== null) {
114
- startTransition(()=>openTypeahead({
115
- getRect: ()=>{
116
- return range.getBoundingClientRect();
117
- },
118
- match
119
- }));
120
- }
121
- return;
122
- }
123
- }
124
- });
125
- return true;
126
- }, COMMAND_PRIORITY_LOW));
127
- }, [
128
- editor,
129
- openTypeahead
130
- ]);
131
- useEffect(()=>{
132
- const updateListener = ()=>{
133
- editor.getEditorState().read(()=>{
134
- const editorWindow = editor._window ?? window;
135
- const range = editorWindow.document.createRange();
136
- const selection = $getSelection();
137
- const text = getQueryTextForSearch(editor);
138
- if (!$isRangeSelection(selection) || !selection.isCollapsed() || text === undefined || range === null) {
139
- closeTypeahead();
140
- return;
141
- }
142
- const match = triggerFn({
143
- editor,
144
- query: text
145
- });
146
- onQueryChange(match ? match.matchingString : null);
147
- if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {
148
- const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow);
149
- if (isRangePositioned !== null) {
150
- startTransition(()=>openTypeahead({
151
- getRect: ()=>{
152
- return range.getBoundingClientRect();
153
- },
154
- match
155
- }));
156
- return;
157
- }
158
- }
159
- closeTypeahead();
160
- });
161
- };
162
- const removeUpdateListener = editor.registerUpdateListener(updateListener);
163
- return ()=>{
164
- removeUpdateListener();
165
- };
166
- }, [
167
- editor,
168
- triggerFn,
169
- onQueryChange,
170
- resolution,
171
- closeTypeahead,
172
- openTypeahead
173
- ]);
174
- return anchorElementRef.current === null || resolution === null || editor === null ? null : /*#__PURE__*/ _jsxDEV(LexicalMenu, {
175
- anchorElementRef: anchorElementRef,
176
- close: closeTypeahead,
177
- editor: editor,
178
- groups: groups,
179
- menuRenderFn: menuRenderFn,
180
- resolution: resolution,
181
- shouldSplitNodeWithQuery: true
182
- }, void 0, false, {
183
- fileName: "src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx",
184
- lineNumber: 235,
185
- columnNumber: 5
186
- }, this);
145
+ const match_0 = triggerFn({
146
+ editor,
147
+ query: text
148
+ });
149
+ onQueryChange(match_0 ? match_0.matchingString : null);
150
+ if (match_0 !== null && !isSelectionOnEntityBoundary(editor, match_0.leadOffset)) {
151
+ const isRangePositioned_0 = tryToPositionRange(match_0.leadOffset, range_0, editorWindow_0);
152
+ if (isRangePositioned_0 !== null) {
153
+ startTransition(() => openTypeahead({
154
+ getRect: () => {
155
+ return range_0.getBoundingClientRect();
156
+ },
157
+ match: match_0
158
+ }));
159
+ return;
160
+ }
161
+ }
162
+ closeTypeahead();
163
+ });
164
+ };
165
+ const removeUpdateListener = editor.registerUpdateListener(updateListener);
166
+ return () => {
167
+ removeUpdateListener();
168
+ };
169
+ }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead]);
170
+ return anchorElementRef.current === null || resolution === null || editor === null ? null : /*#__PURE__*/_jsx(LexicalMenu, {
171
+ anchorElementRef: anchorElementRef,
172
+ close: closeTypeahead,
173
+ editor: editor,
174
+ groups: groups,
175
+ menuRenderFn: menuRenderFn,
176
+ resolution: resolution,
177
+ shouldSplitNodeWithQuery: true
178
+ });
187
179
  }
188
-
189
180
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand, LexicalEditor, ParagraphNode, RangeSelection } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n createCommand,\n getDOMSelection,\n} from 'lexical'\nimport { type JSX, useCallback, useEffect, useState } from 'react'\nimport * as React from 'react'\n\nimport type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js'\nimport type { MenuRenderFn, MenuResolution } from './LexicalMenu.js'\nimport type { SlashMenuGroupInternal } from './types.js'\n\nimport { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js'\n\nexport const PUNCTUATION = '\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%\\'\"~=<>_:;'\n\nfunction getTextUpToAnchor(selection: RangeSelection): null | string {\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const anchorOffset = anchor.offset\n return anchorNode.getTextContent().slice(0, anchorOffset)\n}\n\nfunction tryToPositionRange(leadOffset: number, range: Range, editorWindow: Window): boolean {\n const domSelection = getDOMSelection(editorWindow)\n if (domSelection === null || !domSelection.isCollapsed) {\n return false\n }\n\n const anchorNode = domSelection.anchorNode\n const startOffset = leadOffset\n const endOffset = domSelection.anchorOffset\n\n if (anchorNode == null || endOffset == null) {\n return false\n }\n\n try {\n range.setStart(anchorNode, startOffset)\n // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial\n range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1)\n } catch (error) {\n return false\n }\n\n return true\n}\n\nfunction getQueryTextForSearch(editor: LexicalEditor): string | undefined {\n let text\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return\n }\n text = getTextUpToAnchor(selection)\n })\n return text\n}\n\nfunction isSelectionOnEntityBoundary(editor: LexicalEditor, offset: number): boolean {\n if (offset !== 0) {\n return false\n }\n return editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor\n const anchorNode = anchor.getNode()\n const prevSibling = anchorNode.getPreviousSibling()\n return $isTextNode(prevSibling) && prevSibling.isTextEntity()\n }\n return false\n })\n}\n\nfunction startTransition(callback: () => void) {\n if (React.startTransition) {\n React.startTransition(callback)\n } else {\n callback()\n }\n}\n\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n triggerFn: TriggerFn\n}\n\nexport const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{\n node: ParagraphNode\n}> = createCommand('ENABLE_SLASH_MENU_COMMAND')\n\nexport function LexicalTypeaheadMenuPlugin({\n anchorClassName,\n anchorElem,\n groups,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n triggerFn,\n}: TypeaheadMenuPluginProps): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [resolution, setResolution] = useState<MenuResolution | null>(null)\n const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName)\n\n const closeTypeahead = useCallback(() => {\n setResolution(null)\n if (onClose != null && resolution !== null) {\n onClose()\n }\n }, [onClose, resolution])\n\n const openTypeahead = useCallback(\n (res: MenuResolution) => {\n setResolution(res)\n if (onOpen != null && resolution === null) {\n onOpen(res)\n }\n },\n [onOpen, resolution],\n )\n\n // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n ENABLE_SLASH_MENU_COMMAND,\n ({ node }) => {\n editor.getEditorState().read(() => {\n const match: MenuTextMatch = {\n leadOffset: 0,\n matchingString: '',\n replaceableString: '',\n }\n if (!isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n if (node !== null) {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n }\n\n return\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, openTypeahead])\n\n useEffect(() => {\n const updateListener = () => {\n editor.getEditorState().read(() => {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n const selection = $getSelection()\n const text = getQueryTextForSearch(editor)\n\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n text === undefined ||\n range === null\n ) {\n closeTypeahead()\n return\n }\n\n const match = triggerFn({ editor, query: text })\n onQueryChange(match ? match.matchingString : null)\n\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n return\n }\n }\n closeTypeahead()\n })\n }\n\n const removeUpdateListener = editor.registerUpdateListener(updateListener)\n\n return () => {\n removeUpdateListener()\n }\n }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead])\n\n return anchorElementRef.current === null || resolution === null || editor === null ? null : (\n <LexicalMenu\n anchorElementRef={anchorElementRef}\n close={closeTypeahead}\n editor={editor}\n groups={groups}\n menuRenderFn={menuRenderFn}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n"],"names":["useLexicalComposerContext","mergeRegister","$getSelection","$isRangeSelection","$isTextNode","COMMAND_PRIORITY_LOW","createCommand","getDOMSelection","useCallback","useEffect","useState","React","LexicalMenu","useMenuAnchorRef","PUNCTUATION","getTextUpToAnchor","selection","anchor","type","anchorNode","getNode","isSimpleText","anchorOffset","offset","getTextContent","slice","tryToPositionRange","leadOffset","range","editorWindow","domSelection","isCollapsed","startOffset","endOffset","setStart","setEnd","error","getQueryTextForSearch","editor","text","getEditorState","read","isSelectionOnEntityBoundary","prevSibling","getPreviousSibling","isTextEntity","startTransition","callback","useDynamicPositioning","ENABLE_SLASH_MENU_COMMAND","LexicalTypeaheadMenuPlugin","anchorClassName","anchorElem","groups","menuRenderFn","onClose","onOpen","onQueryChange","triggerFn","resolution","setResolution","anchorElementRef","closeTypeahead","openTypeahead","res","registerCommand","node","match","matchingString","replaceableString","_window","window","document","createRange","isRangePositioned","getRect","getBoundingClientRect","updateListener","undefined","query","removeUpdateListener","registerUpdateListener","current","close","shouldSplitNodeWithQuery"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["useLexicalComposerContext","mergeRegister","$getSelection","$isRangeSelection","$isTextNode","COMMAND_PRIORITY_LOW","createCommand","getDOMSelection","useCallback","useEffect","useState","React","LexicalMenu","useMenuAnchorRef","PUNCTUATION","getTextUpToAnchor","selection","anchor","type","anchorNode","getNode","isSimpleText","anchorOffset","offset","getTextContent","slice","tryToPositionRange","leadOffset","range","editorWindow","domSelection","isCollapsed","startOffset","endOffset","setStart","setEnd","error","getQueryTextForSearch","editor","text","getEditorState","read","isSelectionOnEntityBoundary","prevSibling","getPreviousSibling","isTextEntity","startTransition","callback","useDynamicPositioning","ENABLE_SLASH_MENU_COMMAND","LexicalTypeaheadMenuPlugin","anchorClassName","anchorElem","groups","menuRenderFn","onClose","onOpen","onQueryChange","triggerFn","resolution","setResolution","anchorElementRef","closeTypeahead","openTypeahead","res","registerCommand","node","match","matchingString","replaceableString","_window","window","document","createRange","isRangePositioned","getRect","getBoundingClientRect","updateListener","undefined","query","removeUpdateListener","registerUpdateListener","current","_jsx","close","shouldSplitNodeWithQuery"],"sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand, LexicalEditor, ParagraphNode, RangeSelection } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n createCommand,\n getDOMSelection,\n} from 'lexical'\nimport { type JSX, useCallback, useEffect, useState } from 'react'\nimport * as React from 'react'\n\nimport type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js'\nimport type { MenuRenderFn, MenuResolution } from './LexicalMenu.js'\nimport type { SlashMenuGroupInternal } from './types.js'\n\nimport { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js'\n\nexport const PUNCTUATION = '\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%\\'\"~=<>_:;'\n\nfunction getTextUpToAnchor(selection: RangeSelection): null | string {\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const anchorOffset = anchor.offset\n return anchorNode.getTextContent().slice(0, anchorOffset)\n}\n\nfunction tryToPositionRange(leadOffset: number, range: Range, editorWindow: Window): boolean {\n const domSelection = getDOMSelection(editorWindow)\n if (domSelection === null || !domSelection.isCollapsed) {\n return false\n }\n\n const anchorNode = domSelection.anchorNode\n const startOffset = leadOffset\n const endOffset = domSelection.anchorOffset\n\n if (anchorNode == null || endOffset == null) {\n return false\n }\n\n try {\n range.setStart(anchorNode, startOffset)\n // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial\n range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1)\n } catch (error) {\n return false\n }\n\n return true\n}\n\nfunction getQueryTextForSearch(editor: LexicalEditor): string | undefined {\n let text\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return\n }\n text = getTextUpToAnchor(selection)\n })\n return text\n}\n\nfunction isSelectionOnEntityBoundary(editor: LexicalEditor, offset: number): boolean {\n if (offset !== 0) {\n return false\n }\n return editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor\n const anchorNode = anchor.getNode()\n const prevSibling = anchorNode.getPreviousSibling()\n return $isTextNode(prevSibling) && prevSibling.isTextEntity()\n }\n return false\n })\n}\n\nfunction startTransition(callback: () => void) {\n if (React.startTransition) {\n React.startTransition(callback)\n } else {\n callback()\n }\n}\n\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n triggerFn: TriggerFn\n}\n\nexport const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{\n node: ParagraphNode\n}> = createCommand('ENABLE_SLASH_MENU_COMMAND')\n\nexport function LexicalTypeaheadMenuPlugin({\n anchorClassName,\n anchorElem,\n groups,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n triggerFn,\n}: TypeaheadMenuPluginProps): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [resolution, setResolution] = useState<MenuResolution | null>(null)\n const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName)\n\n const closeTypeahead = useCallback(() => {\n setResolution(null)\n if (onClose != null && resolution !== null) {\n onClose()\n }\n }, [onClose, resolution])\n\n const openTypeahead = useCallback(\n (res: MenuResolution) => {\n setResolution(res)\n if (onOpen != null && resolution === null) {\n onOpen(res)\n }\n },\n [onOpen, resolution],\n )\n\n // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n ENABLE_SLASH_MENU_COMMAND,\n ({ node }) => {\n editor.getEditorState().read(() => {\n const match: MenuTextMatch = {\n leadOffset: 0,\n matchingString: '',\n replaceableString: '',\n }\n if (!isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n if (node !== null) {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n }\n\n return\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, openTypeahead])\n\n useEffect(() => {\n const updateListener = () => {\n editor.getEditorState().read(() => {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n const selection = $getSelection()\n const text = getQueryTextForSearch(editor)\n\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n text === undefined ||\n range === null\n ) {\n closeTypeahead()\n return\n }\n\n const match = triggerFn({ editor, query: text })\n onQueryChange(match ? match.matchingString : null)\n\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n return\n }\n }\n closeTypeahead()\n })\n }\n\n const removeUpdateListener = editor.registerUpdateListener(updateListener)\n\n return () => {\n removeUpdateListener()\n }\n }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead])\n\n return anchorElementRef.current === null || resolution === null || editor === null ? null : (\n <LexicalMenu\n anchorElementRef={anchorElementRef}\n close={closeTypeahead}\n editor={editor}\n groups={groups}\n menuRenderFn={menuRenderFn}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,2 @@
1
- /** The icon which is rendered in your slash menu item. */ /** Each slash menu item needs to have a unique key. The key will be matched when typing, displayed if no `label` property is set, and used for classNames. */ /**
2
- * Keywords are used to match the item for different texts typed after the '/'.
3
- * E.g. you might want to show a horizontal rule item if you type both /hr, /separator, /horizontal etc.
4
- * In addition to the keywords, the label and key will be used to find the right slash menu item.
5
- */ /** The label will be displayed in your slash menu item. In order to make use of i18n, this can be a function. */ /** A function which is called when the slash menu item is selected. */ /**
6
- * An array of `SlashMenuItem`'s which will be displayed in the slash menu.
7
- */ /**
8
- * Used for class names and, if label is not provided, for display. Slash menus with the same key will have their items merged together.
9
- */ /** The label will be displayed before your Slash Menu group. In order to make use of i18n, this can be a function. */ export { };
10
-
1
+ export {};
11
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { LexicalEditor, Spread } from 'lexical'\nimport type React from 'react'\nimport type { RefObject } from 'react'\n\nimport type { FeatureClientSchemaMap } from '../../../../types.js'\n\nexport type SlashMenuItem = {\n /** The icon which is rendered in your slash menu item. */\n Icon: React.FC\n /** Each slash menu item needs to have a unique key. The key will be matched when typing, displayed if no `label` property is set, and used for classNames. */\n key: string\n /**\n * Keywords are used to match the item for different texts typed after the '/'.\n * E.g. you might want to show a horizontal rule item if you type both /hr, /separator, /horizontal etc.\n * In addition to the keywords, the label and key will be used to find the right slash menu item.\n */\n keywords?: Array<string>\n /** The label will be displayed in your slash menu item. In order to make use of i18n, this can be a function. */\n label?:\n | ((args: {\n featureClientSchemaMap: FeatureClientSchemaMap\n i18n: I18nClient<{}, string>\n schemaPath: string\n }) => string)\n | string\n /** A function which is called when the slash menu item is selected. */\n onSelect: ({ editor, queryString }: { editor: LexicalEditor; queryString: string }) => void\n}\n\nexport type SlashMenuGroup = {\n /**\n * An array of `SlashMenuItem`'s which will be displayed in the slash menu.\n */\n items: Array<SlashMenuItem>\n /**\n * Used for class names and, if label is not provided, for display. Slash menus with the same key will have their items merged together.\n */\n key: string\n /** The label will be displayed before your Slash Menu group. In order to make use of i18n, this can be a function. */\n label?:\n | ((args: {\n featureClientSchemaMap: FeatureClientSchemaMap\n i18n: I18nClient<{}, string>\n schemaPath: string\n }) => string)\n | string\n}\n\nexport type SlashMenuItemInternal = {\n ref: RefObject<HTMLButtonElement | null>\n} & SlashMenuItem\n\nexport type SlashMenuGroupInternal = Spread<\n {\n items: Array<SlashMenuItemInternal>\n },\n SlashMenuGroup\n>\n"],"names":[],"mappings":"AAQE,wDAAwD,GAExD,4JAA4J,GAE5J;;;;GAIC,GAED,+GAA+G,GAQ/G,qEAAqE,GAKrE;;GAEC,GAED;;GAEC,GAED,oHAAoH,GActH,WAKC"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { LexicalEditor, Spread } from 'lexical'\nimport type React from 'react'\nimport type { RefObject } from 'react'\n\nimport type { FeatureClientSchemaMap } from '../../../../types.js'\n\nexport type SlashMenuItem = {\n /** The icon which is rendered in your slash menu item. */\n Icon: React.FC\n /** Each slash menu item needs to have a unique key. The key will be matched when typing, displayed if no `label` property is set, and used for classNames. */\n key: string\n /**\n * Keywords are used to match the item for different texts typed after the '/'.\n * E.g. you might want to show a horizontal rule item if you type both /hr, /separator, /horizontal etc.\n * In addition to the keywords, the label and key will be used to find the right slash menu item.\n */\n keywords?: Array<string>\n /** The label will be displayed in your slash menu item. In order to make use of i18n, this can be a function. */\n label?:\n | ((args: {\n featureClientSchemaMap: FeatureClientSchemaMap\n i18n: I18nClient<{}, string>\n schemaPath: string\n }) => string)\n | string\n /** A function which is called when the slash menu item is selected. */\n onSelect: ({ editor, queryString }: { editor: LexicalEditor; queryString: string }) => void\n}\n\nexport type SlashMenuGroup = {\n /**\n * An array of `SlashMenuItem`'s which will be displayed in the slash menu.\n */\n items: Array<SlashMenuItem>\n /**\n * Used for class names and, if label is not provided, for display. Slash menus with the same key will have their items merged together.\n */\n key: string\n /** The label will be displayed before your Slash Menu group. In order to make use of i18n, this can be a function. */\n label?:\n | ((args: {\n featureClientSchemaMap: FeatureClientSchemaMap\n i18n: I18nClient<{}, string>\n schemaPath: string\n }) => string)\n | string\n}\n\nexport type SlashMenuItemInternal = {\n ref: RefObject<HTMLButtonElement | null>\n} & SlashMenuItem\n\nexport type SlashMenuGroupInternal = Spread<\n {\n items: Array<SlashMenuItemInternal>\n },\n SlashMenuGroup\n>\n"],"mappings":"AAqDA","ignoreList":[]}