@payloadcms/richtext-lexical 3.78.0-internal-debug.f663370 → 3.78.0-internal.ab11ffa

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 (1110) hide show
  1. package/dist/cell/rscEntry.js +72 -74
  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-HJGV32KA.js +2 -0
  10. package/dist/exports/client/Field-HJGV32KA.js.map +7 -0
  11. package/dist/exports/client/RelationshipComponent-BG3DPV3T.js +2 -0
  12. package/dist/exports/client/RelationshipComponent-BG3DPV3T.js.map +7 -0
  13. package/dist/exports/client/bundled.css +1 -0
  14. package/dist/exports/client/chunk-2S5Q7QYO.js +2 -0
  15. package/dist/exports/client/chunk-2S5Q7QYO.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-EZX4YW7S.js +12 -0
  21. package/dist/exports/client/chunk-EZX4YW7S.js.map +7 -0
  22. package/dist/exports/client/chunk-F26IQ5RE.js +2 -0
  23. package/dist/exports/client/chunk-F26IQ5RE.js.map +7 -0
  24. package/dist/exports/client/chunk-INBEEENE.js +2 -0
  25. package/dist/exports/client/chunk-INBEEENE.js.map +7 -0
  26. package/dist/exports/client/chunk-QJ5EETIB.js +2 -0
  27. package/dist/exports/client/chunk-QJ5EETIB.js.map +7 -0
  28. package/dist/exports/client/component-XIHC3W6W.js +2 -0
  29. package/dist/exports/client/component-XIHC3W6W.js.map +7 -0
  30. package/dist/exports/client/componentInline-NL25DNZ5.js +2 -0
  31. package/dist/exports/client/componentInline-NL25DNZ5.js.map +7 -0
  32. package/dist/exports/client/index.d.ts +0 -1
  33. package/dist/exports/client/index.d.ts.map +1 -1
  34. package/dist/exports/client/index.js +65 -86
  35. package/dist/exports/client/index.js.map +7 -1
  36. package/dist/exports/cssEntry.js +0 -1
  37. package/dist/exports/cssEntry.js.map +1 -1
  38. package/dist/exports/html/index.js +0 -1
  39. package/dist/exports/html/index.js.map +1 -1
  40. package/dist/exports/html-async/index.js +0 -1
  41. package/dist/exports/html-async/index.js.map +1 -1
  42. package/dist/exports/plaintext/index.js +0 -1
  43. package/dist/exports/plaintext/index.js.map +1 -1
  44. package/dist/exports/react/index.d.ts +1 -3
  45. package/dist/exports/react/index.d.ts.map +1 -1
  46. package/dist/exports/react/index.js +1 -3
  47. package/dist/exports/react/index.js.map +1 -1
  48. package/dist/exports/server/ast/mdx.js +34 -36
  49. package/dist/exports/server/ast/mdx.js.map +1 -1
  50. package/dist/exports/server/migrate.js +0 -1
  51. package/dist/exports/server/migrate.js.map +1 -1
  52. package/dist/exports/server/rsc.js +0 -1
  53. package/dist/exports/server/rsc.js.map +1 -1
  54. package/dist/exports/shared.js +0 -1
  55. package/dist/exports/shared.js.map +1 -1
  56. package/dist/features/align/client/index.js +195 -168
  57. package/dist/features/align/client/index.js.map +1 -1
  58. package/dist/features/align/client/toolbarAlignGroup.js +9 -9
  59. package/dist/features/align/client/toolbarAlignGroup.js.map +1 -1
  60. package/dist/features/align/server/i18n.js +222 -223
  61. package/dist/features/align/server/i18n.js.map +1 -1
  62. package/dist/features/align/server/index.js +5 -6
  63. package/dist/features/align/server/index.js.map +1 -1
  64. package/dist/features/blockquote/client/index.js +60 -65
  65. package/dist/features/blockquote/client/index.js.map +1 -1
  66. package/dist/features/blockquote/markdownTransformer.js +28 -33
  67. package/dist/features/blockquote/markdownTransformer.js.map +1 -1
  68. package/dist/features/blockquote/server/i18n.js +111 -112
  69. package/dist/features/blockquote/server/i18n.js.map +1 -1
  70. package/dist/features/blockquote/server/index.js +48 -47
  71. package/dist/features/blockquote/server/index.js.map +1 -1
  72. package/dist/features/blocks/client/component/BlockContent.d.ts +4 -7
  73. package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
  74. package/dist/features/blocks/client/component/BlockContent.js +68 -97
  75. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  76. package/dist/features/blocks/client/component/components/BlockCollapsible.js +14 -13
  77. package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
  78. package/dist/features/blocks/client/component/components/BlockEditButton.js +17 -9
  79. package/dist/features/blocks/client/component/components/BlockEditButton.js.map +1 -1
  80. package/dist/features/blocks/client/component/components/BlockRemoveButton.js +17 -9
  81. package/dist/features/blocks/client/component/components/BlockRemoveButton.js.map +1 -1
  82. package/dist/features/blocks/client/component/index.d.ts +4 -20
  83. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  84. package/dist/features/blocks/client/component/index.js +418 -611
  85. package/dist/features/blocks/client/component/index.js.map +1 -1
  86. package/dist/features/blocks/client/component/removeEmptyArrayValues.js +11 -8
  87. package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +1 -1
  88. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js +23 -11
  89. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js.map +1 -1
  90. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js +17 -9
  91. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js.map +1 -1
  92. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js +17 -9
  93. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js.map +1 -1
  94. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js +17 -9
  95. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js.map +1 -1
  96. package/dist/features/blocks/client/componentInline/index.d.ts +14 -8
  97. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  98. package/dist/features/blocks/client/componentInline/index.js +346 -509
  99. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  100. package/dist/features/blocks/client/getBlockImageComponent.js +12 -17
  101. package/dist/features/blocks/client/getBlockImageComponent.js.map +1 -1
  102. package/dist/features/blocks/client/index.js +146 -141
  103. package/dist/features/blocks/client/index.js.map +1 -1
  104. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js +18 -18
  105. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js.map +1 -1
  106. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js +15 -14
  107. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js.map +1 -1
  108. package/dist/features/blocks/client/markdown/markdownTransformer.js +330 -328
  109. package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -1
  110. package/dist/features/blocks/client/nodes/BlocksNode.d.ts +2 -4
  111. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  112. package/dist/features/blocks/client/nodes/BlocksNode.js +40 -46
  113. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  114. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts +2 -4
  115. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
  116. package/dist/features/blocks/client/nodes/InlineBlocksNode.js +33 -39
  117. package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
  118. package/dist/features/blocks/client/plugin/commands.js +1 -1
  119. package/dist/features/blocks/client/plugin/commands.js.map +1 -1
  120. package/dist/features/blocks/client/plugin/index.js +87 -59
  121. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  122. package/dist/features/blocks/premade/CodeBlock/Component/Block.js +101 -158
  123. package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
  124. package/dist/features/blocks/premade/CodeBlock/Component/Code.js +93 -119
  125. package/dist/features/blocks/premade/CodeBlock/Component/Code.js.map +1 -1
  126. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js +11 -19
  127. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.js.map +1 -1
  128. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js +20 -32
  129. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.js.map +1 -1
  130. package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.js +83 -84
  131. package/dist/features/blocks/premade/CodeBlock/Component/defaultLanguages.js.map +1 -1
  132. package/dist/features/blocks/premade/CodeBlock/converter.js +40 -36
  133. package/dist/features/blocks/premade/CodeBlock/converter.js.map +1 -1
  134. package/dist/features/blocks/premade/CodeBlock/converterClient.js +1 -1
  135. package/dist/features/blocks/premade/CodeBlock/converterClient.js.map +1 -1
  136. package/dist/features/blocks/premade/CodeBlock/index.js +49 -49
  137. package/dist/features/blocks/premade/CodeBlock/index.js.map +1 -1
  138. package/dist/features/blocks/server/graphQLPopulationPromise.js +44 -29
  139. package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
  140. package/dist/features/blocks/server/i18n.js +333 -334
  141. package/dist/features/blocks/server/i18n.js.map +1 -1
  142. package/dist/features/blocks/server/index.js +218 -238
  143. package/dist/features/blocks/server/index.js.map +1 -1
  144. package/dist/features/blocks/server/markdown/linesFromMatchToContentAndPropsString.js +122 -123
  145. package/dist/features/blocks/server/markdown/linesFromMatchToContentAndPropsString.js.map +1 -1
  146. package/dist/features/blocks/server/markdown/markdownTransformer.js +349 -347
  147. package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -1
  148. package/dist/features/blocks/server/nodes/BlocksNode.js +90 -86
  149. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  150. package/dist/features/blocks/server/nodes/InlineBlocksNode.js +87 -84
  151. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  152. package/dist/features/blocks/server/validate.js +55 -42
  153. package/dist/features/blocks/server/validate.js.map +1 -1
  154. package/dist/features/converters/htmlToLexical/index.js +24 -21
  155. package/dist/features/converters/htmlToLexical/index.js.map +1 -1
  156. package/dist/features/converters/lexicalToHtml/async/converters/blockquote.js +10 -7
  157. package/dist/features/converters/lexicalToHtml/async/converters/blockquote.js.map +1 -1
  158. package/dist/features/converters/lexicalToHtml/async/converters/heading.js +10 -7
  159. package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -1
  160. package/dist/features/converters/lexicalToHtml/async/converters/horizontalRule.js +1 -2
  161. package/dist/features/converters/lexicalToHtml/async/converters/horizontalRule.js.map +1 -1
  162. package/dist/features/converters/lexicalToHtml/async/converters/linebreak.js +1 -2
  163. package/dist/features/converters/lexicalToHtml/async/converters/linebreak.js.map +1 -1
  164. package/dist/features/converters/lexicalToHtml/async/converters/link.js +37 -28
  165. package/dist/features/converters/lexicalToHtml/async/converters/link.js.map +1 -1
  166. package/dist/features/converters/lexicalToHtml/async/converters/list.js +26 -18
  167. package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -1
  168. package/dist/features/converters/lexicalToHtml/async/converters/paragraph.js +12 -9
  169. package/dist/features/converters/lexicalToHtml/async/converters/paragraph.js.map +1 -1
  170. package/dist/features/converters/lexicalToHtml/async/converters/tab.js +1 -2
  171. package/dist/features/converters/lexicalToHtml/async/converters/tab.js.map +1 -1
  172. package/dist/features/converters/lexicalToHtml/async/converters/table.js +38 -27
  173. package/dist/features/converters/lexicalToHtml/async/converters/table.js.map +1 -1
  174. package/dist/features/converters/lexicalToHtml/async/converters/text.js +26 -25
  175. package/dist/features/converters/lexicalToHtml/async/converters/text.js.map +1 -1
  176. package/dist/features/converters/lexicalToHtml/async/converters/upload.js +44 -41
  177. package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
  178. package/dist/features/converters/lexicalToHtml/async/defaultConverters.js +11 -12
  179. package/dist/features/converters/lexicalToHtml/async/defaultConverters.js.map +1 -1
  180. package/dist/features/converters/lexicalToHtml/async/field/index.js +56 -56
  181. package/dist/features/converters/lexicalToHtml/async/field/index.js.map +1 -1
  182. package/dist/features/converters/lexicalToHtml/async/index.js +97 -87
  183. package/dist/features/converters/lexicalToHtml/async/index.js.map +1 -1
  184. package/dist/features/converters/lexicalToHtml/async/types.js +1 -4
  185. package/dist/features/converters/lexicalToHtml/async/types.js.map +1 -1
  186. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js +62 -57
  187. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js.map +1 -1
  188. package/dist/features/converters/lexicalToHtml/shared/types.js +1 -2
  189. package/dist/features/converters/lexicalToHtml/shared/types.js.map +1 -1
  190. package/dist/features/converters/lexicalToHtml/sync/converters/blockquote.js +10 -7
  191. package/dist/features/converters/lexicalToHtml/sync/converters/blockquote.js.map +1 -1
  192. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js +10 -7
  193. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -1
  194. package/dist/features/converters/lexicalToHtml/sync/converters/horizontalRule.js +1 -2
  195. package/dist/features/converters/lexicalToHtml/sync/converters/horizontalRule.js.map +1 -1
  196. package/dist/features/converters/lexicalToHtml/sync/converters/linebreak.js +1 -2
  197. package/dist/features/converters/lexicalToHtml/sync/converters/linebreak.js.map +1 -1
  198. package/dist/features/converters/lexicalToHtml/sync/converters/link.js +35 -27
  199. package/dist/features/converters/lexicalToHtml/sync/converters/link.js.map +1 -1
  200. package/dist/features/converters/lexicalToHtml/sync/converters/list.js +26 -18
  201. package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -1
  202. package/dist/features/converters/lexicalToHtml/sync/converters/paragraph.js +12 -9
  203. package/dist/features/converters/lexicalToHtml/sync/converters/paragraph.js.map +1 -1
  204. package/dist/features/converters/lexicalToHtml/sync/converters/tab.js +1 -2
  205. package/dist/features/converters/lexicalToHtml/sync/converters/tab.js.map +1 -1
  206. package/dist/features/converters/lexicalToHtml/sync/converters/table.js +38 -27
  207. package/dist/features/converters/lexicalToHtml/sync/converters/table.js.map +1 -1
  208. package/dist/features/converters/lexicalToHtml/sync/converters/text.js +26 -25
  209. package/dist/features/converters/lexicalToHtml/sync/converters/text.js.map +1 -1
  210. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js +37 -35
  211. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -1
  212. package/dist/features/converters/lexicalToHtml/sync/defaultConverters.js +11 -12
  213. package/dist/features/converters/lexicalToHtml/sync/defaultConverters.js.map +1 -1
  214. package/dist/features/converters/lexicalToHtml/sync/index.js +92 -84
  215. package/dist/features/converters/lexicalToHtml/sync/index.js.map +1 -1
  216. package/dist/features/converters/lexicalToHtml/sync/types.js +1 -4
  217. package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -1
  218. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js +4 -7
  219. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js.map +1 -1
  220. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js +34 -29
  221. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js.map +1 -1
  222. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/tab.js +6 -7
  223. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/tab.js.map +1 -1
  224. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/text.js +28 -29
  225. package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/text.js.map +1 -1
  226. package/dist/features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js +2 -7
  227. package/dist/features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js.map +1 -1
  228. package/dist/features/converters/lexicalToHtml_deprecated/converter/index.js +84 -84
  229. package/dist/features/converters/lexicalToHtml_deprecated/converter/index.js.map +1 -1
  230. package/dist/features/converters/lexicalToHtml_deprecated/converter/types.js +1 -6
  231. package/dist/features/converters/lexicalToHtml_deprecated/converter/types.js.map +1 -1
  232. package/dist/features/converters/lexicalToHtml_deprecated/field/index.js +107 -107
  233. package/dist/features/converters/lexicalToHtml_deprecated/field/index.js.map +1 -1
  234. package/dist/features/converters/lexicalToHtml_deprecated/index.js +4 -4
  235. package/dist/features/converters/lexicalToHtml_deprecated/index.js.map +1 -1
  236. package/dist/features/converters/lexicalToJSX/Component/index.d.ts +20 -6
  237. package/dist/features/converters/lexicalToJSX/Component/index.d.ts.map +1 -1
  238. package/dist/features/converters/lexicalToJSX/Component/index.js +37 -42
  239. package/dist/features/converters/lexicalToJSX/Component/index.js.map +1 -1
  240. package/dist/features/converters/lexicalToJSX/converter/converters/blockquote.js +12 -14
  241. package/dist/features/converters/lexicalToJSX/converter/converters/blockquote.js.map +1 -1
  242. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +13 -15
  243. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
  244. package/dist/features/converters/lexicalToJSX/converter/converters/horizontalRule.js +2 -7
  245. package/dist/features/converters/lexicalToJSX/converter/converters/horizontalRule.js.map +1 -1
  246. package/dist/features/converters/lexicalToJSX/converter/converters/linebreak.js +2 -7
  247. package/dist/features/converters/lexicalToJSX/converter/converters/linebreak.js.map +1 -1
  248. package/dist/features/converters/lexicalToJSX/converter/converters/link.js +47 -49
  249. package/dist/features/converters/lexicalToJSX/converter/converters/link.js.map +1 -1
  250. package/dist/features/converters/lexicalToJSX/converter/converters/list.js +56 -78
  251. package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
  252. package/dist/features/converters/lexicalToJSX/converter/converters/paragraph.js +16 -26
  253. package/dist/features/converters/lexicalToJSX/converter/converters/paragraph.js.map +1 -1
  254. package/dist/features/converters/lexicalToJSX/converter/converters/tab.js +1 -2
  255. package/dist/features/converters/lexicalToJSX/converter/converters/tab.js.map +1 -1
  256. package/dist/features/converters/lexicalToJSX/converter/converters/table.js +59 -73
  257. package/dist/features/converters/lexicalToJSX/converter/converters/table.js.map +1 -1
  258. package/dist/features/converters/lexicalToJSX/converter/converters/text.js +47 -74
  259. package/dist/features/converters/lexicalToJSX/converter/converters/text.js.map +1 -1
  260. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js +61 -77
  261. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
  262. package/dist/features/converters/lexicalToJSX/converter/defaultConverters.js +11 -12
  263. package/dist/features/converters/lexicalToJSX/converter/defaultConverters.js.map +1 -1
  264. package/dist/features/converters/lexicalToJSX/converter/index.d.ts +2 -17
  265. package/dist/features/converters/lexicalToJSX/converter/index.d.ts.map +1 -1
  266. package/dist/features/converters/lexicalToJSX/converter/index.js +125 -253
  267. package/dist/features/converters/lexicalToJSX/converter/index.js.map +1 -1
  268. package/dist/features/converters/lexicalToJSX/converter/types.d.ts +10 -14
  269. package/dist/features/converters/lexicalToJSX/converter/types.d.ts.map +1 -1
  270. package/dist/features/converters/lexicalToJSX/converter/types.js +1 -4
  271. package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -1
  272. package/dist/features/converters/lexicalToMarkdown/index.js +19 -17
  273. package/dist/features/converters/lexicalToMarkdown/index.js.map +1 -1
  274. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js +146 -223
  275. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js.map +1 -1
  276. package/dist/features/converters/lexicalToPlaintext/shared/findConverterForNode.js +13 -11
  277. package/dist/features/converters/lexicalToPlaintext/shared/findConverterForNode.js.map +1 -1
  278. package/dist/features/converters/lexicalToPlaintext/shared/types.js +1 -2
  279. package/dist/features/converters/lexicalToPlaintext/shared/types.js.map +1 -1
  280. package/dist/features/converters/lexicalToPlaintext/sync/index.js +82 -83
  281. package/dist/features/converters/lexicalToPlaintext/sync/index.js.map +1 -1
  282. package/dist/features/converters/lexicalToPlaintext/sync/types.js +1 -3
  283. package/dist/features/converters/lexicalToPlaintext/sync/types.js.map +1 -1
  284. package/dist/features/converters/markdownToLexical/index.js +16 -14
  285. package/dist/features/converters/markdownToLexical/index.js.map +1 -1
  286. package/dist/features/converters/utilities/payloadPopulateFn.js +38 -37
  287. package/dist/features/converters/utilities/payloadPopulateFn.js.map +1 -1
  288. package/dist/features/converters/utilities/restPopulateFn.js +30 -24
  289. package/dist/features/converters/utilities/restPopulateFn.js.map +1 -1
  290. package/dist/features/debug/jsxConverter/client/index.js +5 -7
  291. package/dist/features/debug/jsxConverter/client/index.js.map +1 -1
  292. package/dist/features/debug/jsxConverter/client/plugin/index.js +47 -27
  293. package/dist/features/debug/jsxConverter/client/plugin/index.js.map +1 -1
  294. package/dist/features/debug/jsxConverter/server/index.js +4 -5
  295. package/dist/features/debug/jsxConverter/server/index.js.map +1 -1
  296. package/dist/features/debug/testRecorder/client/index.js +5 -7
  297. package/dist/features/debug/testRecorder/client/index.js.map +1 -1
  298. package/dist/features/debug/testRecorder/client/plugin/index.js +365 -456
  299. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  300. package/dist/features/debug/testRecorder/server/index.js +4 -5
  301. package/dist/features/debug/testRecorder/server/index.js.map +1 -1
  302. package/dist/features/debug/treeView/client/index.js +5 -7
  303. package/dist/features/debug/treeView/client/index.js.map +1 -1
  304. package/dist/features/debug/treeView/client/plugin/index.js +23 -18
  305. package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
  306. package/dist/features/debug/treeView/server/index.js +4 -5
  307. package/dist/features/debug/treeView/server/index.js.map +1 -1
  308. package/dist/features/experimental_table/client/index.js +42 -61
  309. package/dist/features/experimental_table/client/index.js.map +1 -1
  310. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +517 -752
  311. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  312. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +316 -350
  313. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  314. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +225 -215
  315. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  316. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +133 -104
  317. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  318. package/dist/features/experimental_table/client/utils/debounce.js +107 -89
  319. package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
  320. package/dist/features/experimental_table/client/utils/useDebounce.js +39 -21
  321. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  322. package/dist/features/experimental_table/markdownTransformer.js +118 -123
  323. package/dist/features/experimental_table/markdownTransformer.js.map +1 -1
  324. package/dist/features/experimental_table/server/index.js +143 -125
  325. package/dist/features/experimental_table/server/index.js.map +1 -1
  326. package/dist/features/format/bold/feature.client.js +35 -38
  327. package/dist/features/format/bold/feature.client.js.map +1 -1
  328. package/dist/features/format/bold/feature.server.js +14 -18
  329. package/dist/features/format/bold/feature.server.js.map +1 -1
  330. package/dist/features/format/bold/markdownTransformers.js +14 -25
  331. package/dist/features/format/bold/markdownTransformers.js.map +1 -1
  332. package/dist/features/format/inlineCode/feature.client.js +27 -31
  333. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  334. package/dist/features/format/inlineCode/feature.server.js +5 -8
  335. package/dist/features/format/inlineCode/feature.server.js.map +1 -1
  336. package/dist/features/format/inlineCode/markdownTransformers.js +3 -6
  337. package/dist/features/format/inlineCode/markdownTransformers.js.map +1 -1
  338. package/dist/features/format/italic/feature.client.js +27 -32
  339. package/dist/features/format/italic/feature.client.js.map +1 -1
  340. package/dist/features/format/italic/feature.server.js +5 -9
  341. package/dist/features/format/italic/feature.server.js.map +1 -1
  342. package/dist/features/format/italic/markdownTransformers.js +7 -12
  343. package/dist/features/format/italic/markdownTransformers.js.map +1 -1
  344. package/dist/features/format/shared/toolbarFormatGroup.js +8 -8
  345. package/dist/features/format/shared/toolbarFormatGroup.js.map +1 -1
  346. package/dist/features/format/strikethrough/feature.client.js +27 -31
  347. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  348. package/dist/features/format/strikethrough/feature.server.js +5 -8
  349. package/dist/features/format/strikethrough/feature.server.js.map +1 -1
  350. package/dist/features/format/strikethrough/markdownTransformers.js +3 -6
  351. package/dist/features/format/strikethrough/markdownTransformers.js.map +1 -1
  352. package/dist/features/format/subscript/feature.client.js +26 -28
  353. package/dist/features/format/subscript/feature.client.js.map +1 -1
  354. package/dist/features/format/subscript/feature.server.js +4 -5
  355. package/dist/features/format/subscript/feature.server.js.map +1 -1
  356. package/dist/features/format/superscript/feature.client.js +26 -28
  357. package/dist/features/format/superscript/feature.client.js.map +1 -1
  358. package/dist/features/format/superscript/feature.server.js +4 -5
  359. package/dist/features/format/superscript/feature.server.js.map +1 -1
  360. package/dist/features/format/underline/feature.client.js +26 -28
  361. package/dist/features/format/underline/feature.client.js.map +1 -1
  362. package/dist/features/format/underline/feature.server.js +4 -5
  363. package/dist/features/format/underline/feature.server.js.map +1 -1
  364. package/dist/features/heading/client/index.js +142 -121
  365. package/dist/features/heading/client/index.js.map +1 -1
  366. package/dist/features/heading/markdownTransformer.js +22 -25
  367. package/dist/features/heading/markdownTransformer.js.map +1 -1
  368. package/dist/features/heading/server/i18n.js +111 -112
  369. package/dist/features/heading/server/i18n.js.map +1 -1
  370. package/dist/features/heading/server/index.js +60 -62
  371. package/dist/features/heading/server/index.js.map +1 -1
  372. package/dist/features/horizontalRule/client/index.js +48 -57
  373. package/dist/features/horizontalRule/client/index.js.map +1 -1
  374. package/dist/features/horizontalRule/client/markdownTransformer.js +15 -18
  375. package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
  376. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +27 -25
  377. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  378. package/dist/features/horizontalRule/client/plugin/index.js +32 -21
  379. package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
  380. package/dist/features/horizontalRule/server/i18n.js +111 -112
  381. package/dist/features/horizontalRule/server/i18n.js.map +1 -1
  382. package/dist/features/horizontalRule/server/index.js +17 -24
  383. package/dist/features/horizontalRule/server/index.js.map +1 -1
  384. package/dist/features/horizontalRule/server/markdownTransformer.js +15 -18
  385. package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
  386. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +72 -69
  387. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  388. package/dist/features/indent/client/IndentPlugin.js +78 -78
  389. package/dist/features/indent/client/IndentPlugin.js.map +1 -1
  390. package/dist/features/indent/client/index.js +77 -68
  391. package/dist/features/indent/client/index.js.map +1 -1
  392. package/dist/features/indent/client/toolbarIndentGroup.js +8 -8
  393. package/dist/features/indent/client/toolbarIndentGroup.js.map +1 -1
  394. package/dist/features/indent/server/i18n.js +148 -149
  395. package/dist/features/indent/server/i18n.js.map +1 -1
  396. package/dist/features/indent/server/index.js +11 -18
  397. package/dist/features/indent/server/index.js.map +1 -1
  398. package/dist/features/link/client/index.js +80 -83
  399. package/dist/features/link/client/index.js.map +1 -1
  400. package/dist/features/link/client/plugins/autoLink/index.js +273 -280
  401. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  402. package/dist/features/link/client/plugins/clickableLink/index.js +4 -8
  403. package/dist/features/link/client/plugins/clickableLink/index.js.map +1 -1
  404. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -1
  405. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
  406. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +308 -395
  407. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  408. package/dist/features/link/client/plugins/floatingLinkEditor/index.js +9 -12
  409. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  410. package/dist/features/link/client/plugins/floatingLinkEditor/types.js +1 -6
  411. package/dist/features/link/client/plugins/floatingLinkEditor/types.js.map +1 -1
  412. package/dist/features/link/client/plugins/link/index.js +68 -53
  413. package/dist/features/link/client/plugins/link/index.js.map +1 -1
  414. package/dist/features/link/markdownTransformer.js +33 -34
  415. package/dist/features/link/markdownTransformer.js.map +1 -1
  416. package/dist/features/link/nodes/AutoLinkNode.js +58 -56
  417. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  418. package/dist/features/link/nodes/LinkNode.js +288 -286
  419. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  420. package/dist/features/link/nodes/types.js +1 -6
  421. package/dist/features/link/nodes/types.js.map +1 -1
  422. package/dist/features/link/server/baseFields.js +140 -115
  423. package/dist/features/link/server/baseFields.js.map +1 -1
  424. package/dist/features/link/server/graphQLPopulationPromise.js +45 -29
  425. package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -1
  426. package/dist/features/link/server/i18n.js +148 -149
  427. package/dist/features/link/server/i18n.js.map +1 -1
  428. package/dist/features/link/server/index.js +143 -156
  429. package/dist/features/link/server/index.js.map +1 -1
  430. package/dist/features/link/server/transformExtraFields.js +15 -15
  431. package/dist/features/link/server/transformExtraFields.js.map +1 -1
  432. package/dist/features/link/server/validate.js +46 -35
  433. package/dist/features/link/server/validate.js.map +1 -1
  434. package/dist/features/lists/checklist/client/index.js +78 -86
  435. package/dist/features/lists/checklist/client/index.js.map +1 -1
  436. package/dist/features/lists/checklist/client/plugin/index.js +4 -8
  437. package/dist/features/lists/checklist/client/plugin/index.js.map +1 -1
  438. package/dist/features/lists/checklist/markdownTransformers.js +7 -11
  439. package/dist/features/lists/checklist/markdownTransformers.js.map +1 -1
  440. package/dist/features/lists/checklist/server/i18n.js +111 -112
  441. package/dist/features/lists/checklist/server/i18n.js.map +1 -1
  442. package/dist/features/lists/checklist/server/index.js +21 -26
  443. package/dist/features/lists/checklist/server/index.js.map +1 -1
  444. package/dist/features/lists/htmlConverter.js +62 -47
  445. package/dist/features/lists/htmlConverter.js.map +1 -1
  446. package/dist/features/lists/orderedList/client/index.js +72 -78
  447. package/dist/features/lists/orderedList/client/index.js.map +1 -1
  448. package/dist/features/lists/orderedList/markdownTransformer.js +7 -11
  449. package/dist/features/lists/orderedList/markdownTransformer.js.map +1 -1
  450. package/dist/features/lists/orderedList/server/i18n.js +111 -112
  451. package/dist/features/lists/orderedList/server/i18n.js.map +1 -1
  452. package/dist/features/lists/orderedList/server/index.js +21 -26
  453. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  454. package/dist/features/lists/plugin/index.js +4 -8
  455. package/dist/features/lists/plugin/index.js.map +1 -1
  456. package/dist/features/lists/shared/markdown.js +48 -49
  457. package/dist/features/lists/shared/markdown.js.map +1 -1
  458. package/dist/features/lists/shared/shouldRegisterListBaseNodes.js +9 -10
  459. package/dist/features/lists/shared/shouldRegisterListBaseNodes.js.map +1 -1
  460. package/dist/features/lists/shared/slashMenuListGroup.js +9 -8
  461. package/dist/features/lists/shared/slashMenuListGroup.js.map +1 -1
  462. package/dist/features/lists/unorderedList/client/index.js +68 -76
  463. package/dist/features/lists/unorderedList/client/index.js.map +1 -1
  464. package/dist/features/lists/unorderedList/markdownTransformer.js +7 -11
  465. package/dist/features/lists/unorderedList/markdownTransformer.js.map +1 -1
  466. package/dist/features/lists/unorderedList/server/i18n.js +111 -112
  467. package/dist/features/lists/unorderedList/server/i18n.js.map +1 -1
  468. package/dist/features/lists/unorderedList/server/index.js +17 -24
  469. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  470. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +18 -17
  471. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -1
  472. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +30 -29
  473. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -1
  474. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +21 -20
  475. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -1
  476. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +21 -19
  477. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -1
  478. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +18 -17
  479. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -1
  480. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +24 -23
  481. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -1
  482. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +20 -21
  483. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
  484. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +1 -10
  485. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -1
  486. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +70 -64
  487. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
  488. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js +1 -2
  489. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -1
  490. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +5 -7
  491. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -1
  492. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +42 -43
  493. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -1
  494. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +11 -21
  495. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  496. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +66 -65
  497. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  498. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +19 -19
  499. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
  500. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js +20 -26
  501. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
  502. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js +28 -30
  503. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -1
  504. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js +26 -27
  505. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
  506. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js +22 -21
  507. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
  508. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +22 -22
  509. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
  510. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js +12 -13
  511. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
  512. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js +23 -23
  513. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
  514. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +22 -22
  515. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
  516. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js +15 -16
  517. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
  518. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js +1 -13
  519. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -1
  520. package/dist/features/migrations/slateToLexical/converter/index.js +117 -110
  521. package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
  522. package/dist/features/migrations/slateToLexical/converter/types.js +1 -2
  523. package/dist/features/migrations/slateToLexical/converter/types.js.map +1 -1
  524. package/dist/features/migrations/slateToLexical/feature.client.js +5 -7
  525. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  526. package/dist/features/migrations/slateToLexical/feature.server.js +45 -54
  527. package/dist/features/migrations/slateToLexical/feature.server.js.map +1 -1
  528. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +11 -21
  529. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  530. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +66 -65
  531. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  532. package/dist/features/paragraph/client/index.js +58 -61
  533. package/dist/features/paragraph/client/index.js.map +1 -1
  534. package/dist/features/paragraph/server/i18n.js +148 -149
  535. package/dist/features/paragraph/server/i18n.js.map +1 -1
  536. package/dist/features/paragraph/server/index.js +6 -7
  537. package/dist/features/paragraph/server/index.js.map +1 -1
  538. package/dist/features/relationship/client/components/RelationshipComponent.js +118 -147
  539. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  540. package/dist/features/relationship/client/drawer/commands.js +0 -1
  541. package/dist/features/relationship/client/drawer/commands.js.map +1 -1
  542. package/dist/features/relationship/client/drawer/index.js +132 -81
  543. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  544. package/dist/features/relationship/client/index.js +53 -59
  545. package/dist/features/relationship/client/index.js.map +1 -1
  546. package/dist/features/relationship/client/nodes/RelationshipNode.js +60 -64
  547. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  548. package/dist/features/relationship/client/plugins/index.js +69 -39
  549. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  550. package/dist/features/relationship/client/utils/useEnabledRelationships.js +58 -48
  551. package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
  552. package/dist/features/relationship/server/graphQLPopulationPromise.js +34 -26
  553. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  554. package/dist/features/relationship/server/i18n.js +111 -112
  555. package/dist/features/relationship/server/i18n.js.map +1 -1
  556. package/dist/features/relationship/server/index.js +59 -64
  557. package/dist/features/relationship/server/index.js.map +1 -1
  558. package/dist/features/relationship/server/nodes/RelationshipNode.js +95 -92
  559. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  560. package/dist/features/shared/slashMenu/basicGroup.js +9 -8
  561. package/dist/features/shared/slashMenu/basicGroup.js.map +1 -1
  562. package/dist/features/shared/toolbar/addDropdownGroup.js +8 -9
  563. package/dist/features/shared/toolbar/addDropdownGroup.js.map +1 -1
  564. package/dist/features/shared/toolbar/featureButtonsGroup.js +7 -8
  565. package/dist/features/shared/toolbar/featureButtonsGroup.js.map +1 -1
  566. package/dist/features/shared/toolbar/textDropdownGroup.js +8 -9
  567. package/dist/features/shared/toolbar/textDropdownGroup.js.map +1 -1
  568. package/dist/features/textState/defaultColors.js +370 -370
  569. package/dist/features/textState/defaultColors.js.map +1 -1
  570. package/dist/features/textState/feature.client.js +64 -77
  571. package/dist/features/textState/feature.client.js.map +1 -1
  572. package/dist/features/textState/feature.server.js +14 -46
  573. package/dist/features/textState/feature.server.js.map +1 -1
  574. package/dist/features/textState/i18n.js +111 -112
  575. package/dist/features/textState/i18n.js.map +1 -1
  576. package/dist/features/textState/textState.js +62 -64
  577. package/dist/features/textState/textState.js.map +1 -1
  578. package/dist/features/toolbars/fixed/client/Toolbar/index.js +297 -263
  579. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  580. package/dist/features/toolbars/fixed/client/index.js +5 -7
  581. package/dist/features/toolbars/fixed/client/index.js.map +1 -1
  582. package/dist/features/toolbars/fixed/server/index.js +16 -32
  583. package/dist/features/toolbars/fixed/server/index.js.map +1 -1
  584. package/dist/features/toolbars/inline/client/Toolbar/index.js +366 -343
  585. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  586. package/dist/features/toolbars/inline/client/index.js +5 -7
  587. package/dist/features/toolbars/inline/client/index.js.map +1 -1
  588. package/dist/features/toolbars/inline/server/index.js +4 -5
  589. package/dist/features/toolbars/inline/server/index.js.map +1 -1
  590. package/dist/features/toolbars/shared/ToolbarButton/index.js +145 -103
  591. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  592. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +208 -264
  593. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  594. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +176 -172
  595. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  596. package/dist/features/toolbars/types.js +1 -29
  597. package/dist/features/toolbars/types.js.map +1 -1
  598. package/dist/features/typeUtilities.js +2 -3
  599. package/dist/features/typeUtilities.js.map +1 -1
  600. package/dist/features/typesClient.js +1 -61
  601. package/dist/features/typesClient.js.map +1 -1
  602. package/dist/features/typesServer.js +1 -90
  603. package/dist/features/typesServer.js.map +1 -1
  604. package/dist/features/upload/client/component/index.js +189 -242
  605. package/dist/features/upload/client/component/index.js.map +1 -1
  606. package/dist/features/upload/client/component/pending/index.js +10 -19
  607. package/dist/features/upload/client/component/pending/index.js.map +1 -1
  608. package/dist/features/upload/client/drawer/commands.js +1 -1
  609. package/dist/features/upload/client/drawer/commands.js.map +1 -1
  610. package/dist/features/upload/client/drawer/index.js +132 -83
  611. package/dist/features/upload/client/drawer/index.js.map +1 -1
  612. package/dist/features/upload/client/index.js +51 -61
  613. package/dist/features/upload/client/index.js.map +1 -1
  614. package/dist/features/upload/client/nodes/UploadNode.js +61 -67
  615. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  616. package/dist/features/upload/client/plugin/index.js +331 -290
  617. package/dist/features/upload/client/plugin/index.js.map +1 -1
  618. package/dist/features/upload/server/graphQLPopulationPromise.js +63 -48
  619. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  620. package/dist/features/upload/server/i18n.js +111 -112
  621. package/dist/features/upload/server/i18n.js.map +1 -1
  622. package/dist/features/upload/server/index.d.ts.map +1 -1
  623. package/dist/features/upload/server/index.js +209 -197
  624. package/dist/features/upload/server/index.js.map +1 -1
  625. package/dist/features/upload/server/markdownTransformer.d.ts +3 -0
  626. package/dist/features/upload/server/markdownTransformer.d.ts.map +1 -0
  627. package/dist/features/upload/server/markdownTransformer.js +52 -0
  628. package/dist/features/upload/server/markdownTransformer.js.map +1 -0
  629. package/dist/features/upload/server/nodes/UploadNode.js +99 -115
  630. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  631. package/dist/features/upload/server/nodes/conversions.js +40 -41
  632. package/dist/features/upload/server/nodes/conversions.js.map +1 -1
  633. package/dist/features/upload/server/validate.js +62 -48
  634. package/dist/features/upload/server/validate.js.map +1 -1
  635. package/dist/field/Diff/converters/link.js +41 -32
  636. package/dist/field/Diff/converters/link.js.map +1 -1
  637. package/dist/field/Diff/converters/listitem/index.js +55 -75
  638. package/dist/field/Diff/converters/listitem/index.js.map +1 -1
  639. package/dist/field/Diff/converters/relationship/index.js +63 -85
  640. package/dist/field/Diff/converters/relationship/index.js.map +1 -1
  641. package/dist/field/Diff/converters/unknown/index.js +41 -64
  642. package/dist/field/Diff/converters/unknown/index.js.map +1 -1
  643. package/dist/field/Diff/converters/upload/index.js +66 -122
  644. package/dist/field/Diff/converters/upload/index.js.map +1 -1
  645. package/dist/field/Diff/index.js +99 -86
  646. package/dist/field/Diff/index.js.map +1 -1
  647. package/dist/field/Field.d.ts.map +1 -1
  648. package/dist/field/Field.js +167 -246
  649. package/dist/field/Field.js.map +1 -1
  650. package/dist/field/RenderLexical/index.js +119 -123
  651. package/dist/field/RenderLexical/index.js.map +1 -1
  652. package/dist/field/bundled.css +1 -0
  653. package/dist/field/index.d.ts +0 -1
  654. package/dist/field/index.d.ts.map +1 -1
  655. package/dist/field/index.js +97 -89
  656. package/dist/field/index.js.map +1 -1
  657. package/dist/field/rscEntry.d.ts +1 -1
  658. package/dist/field/rscEntry.d.ts.map +1 -1
  659. package/dist/field/rscEntry.js +84 -98
  660. package/dist/field/rscEntry.js.map +1 -1
  661. package/dist/i18n.js +222 -223
  662. package/dist/i18n.js.map +1 -1
  663. package/dist/index.d.ts +1 -1
  664. package/dist/index.d.ts.map +1 -1
  665. package/dist/index.js +704 -641
  666. package/dist/index.js.map +1 -1
  667. package/dist/lexical/EditorPlugin.js +17 -21
  668. package/dist/lexical/EditorPlugin.js.map +1 -1
  669. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  670. package/dist/lexical/LexicalEditor.js +171 -280
  671. package/dist/lexical/LexicalEditor.js.map +1 -1
  672. package/dist/lexical/LexicalProvider.d.ts.map +1 -1
  673. package/dist/lexical/LexicalProvider.js +86 -117
  674. package/dist/lexical/LexicalProvider.js.map +1 -1
  675. package/dist/lexical/config/client/EditorConfigProvider.js +81 -94
  676. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  677. package/dist/lexical/config/client/default.js +3 -3
  678. package/dist/lexical/config/client/default.js.map +1 -1
  679. package/dist/lexical/config/client/loader.js +38 -30
  680. package/dist/lexical/config/client/loader.js.map +1 -1
  681. package/dist/lexical/config/client/sanitize.d.ts +1 -1
  682. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  683. package/dist/lexical/config/client/sanitize.js +188 -190
  684. package/dist/lexical/config/client/sanitize.js.map +1 -1
  685. package/dist/lexical/config/server/default.js +5 -27
  686. package/dist/lexical/config/server/default.js.map +1 -1
  687. package/dist/lexical/config/server/loader.js +106 -105
  688. package/dist/lexical/config/server/loader.js.map +1 -1
  689. package/dist/lexical/config/server/sanitize.js +113 -114
  690. package/dist/lexical/config/server/sanitize.js.map +1 -1
  691. package/dist/lexical/config/types.d.ts +0 -4
  692. package/dist/lexical/config/types.d.ts.map +1 -1
  693. package/dist/lexical/config/types.js +1 -6
  694. package/dist/lexical/config/types.js.map +1 -1
  695. package/dist/lexical/nodes/index.d.ts +2 -12
  696. package/dist/lexical/nodes/index.d.ts.map +1 -1
  697. package/dist/lexical/nodes/index.js +15 -215
  698. package/dist/lexical/nodes/index.js.map +1 -1
  699. package/dist/lexical/plugins/ClipboardPlugin/index.js +70 -66
  700. package/dist/lexical/plugins/ClipboardPlugin/index.js.map +1 -1
  701. package/dist/lexical/plugins/DecoratorPlugin/index.js +225 -208
  702. package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
  703. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js +41 -42
  704. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
  705. package/dist/lexical/plugins/MarkdownShortcut/index.js +23 -11
  706. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  707. package/dist/lexical/plugins/NormalizeSelection/index.js +19 -21
  708. package/dist/lexical/plugins/NormalizeSelection/index.js.map +1 -1
  709. package/dist/lexical/plugins/SelectAllPlugin/index.js +17 -19
  710. package/dist/lexical/plugins/SelectAllPlugin/index.js.map +1 -1
  711. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +420 -399
  712. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  713. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +155 -164
  714. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  715. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -10
  716. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  717. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  718. package/dist/lexical/plugins/SlashMenu/index.js +181 -217
  719. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  720. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +41 -28
  721. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  722. package/dist/lexical/plugins/TextPlugin/index.js +42 -27
  723. package/dist/lexical/plugins/TextPlugin/index.js.map +1 -1
  724. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +130 -145
  725. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  726. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +10 -10
  727. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
  728. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +10 -10
  729. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
  730. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +26 -23
  731. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -1
  732. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +317 -325
  733. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  734. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +98 -86
  735. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  736. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js +22 -16
  737. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -1
  738. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +19 -29
  739. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
  740. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js +14 -11
  741. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -1
  742. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +133 -122
  743. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  744. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +2 -2
  745. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
  746. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js +2 -2
  747. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -1
  748. package/dist/lexical/plugins/handles/utils/setHandlePosition.js +24 -29
  749. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  750. package/dist/lexical/theme/EditorTheme.js +65 -72
  751. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  752. package/dist/lexical/ui/ContentEditable.js +35 -22
  753. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  754. package/dist/lexical/ui/icons/AI/index.js +31 -58
  755. package/dist/lexical/ui/icons/AI/index.js.map +1 -1
  756. package/dist/lexical/ui/icons/Add/index.js +16 -31
  757. package/dist/lexical/ui/icons/Add/index.js.map +1 -1
  758. package/dist/lexical/ui/icons/AlignCenter/index.js +25 -45
  759. package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -1
  760. package/dist/lexical/ui/icons/AlignJustify/index.js +25 -45
  761. package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -1
  762. package/dist/lexical/ui/icons/AlignLeft/index.js +25 -45
  763. package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -1
  764. package/dist/lexical/ui/icons/AlignRight/index.js +25 -45
  765. package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -1
  766. package/dist/lexical/ui/icons/Block/index.js +34 -54
  767. package/dist/lexical/ui/icons/Block/index.js.map +1 -1
  768. package/dist/lexical/ui/icons/Blockquote/index.js +16 -24
  769. package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -1
  770. package/dist/lexical/ui/icons/Bold/index.js +16 -24
  771. package/dist/lexical/ui/icons/Bold/index.js.map +1 -1
  772. package/dist/lexical/ui/icons/Checklist/index.js +24 -39
  773. package/dist/lexical/ui/icons/Checklist/index.js.map +1 -1
  774. package/dist/lexical/ui/icons/Code/index.js +19 -34
  775. package/dist/lexical/ui/icons/Code/index.js.map +1 -1
  776. package/dist/lexical/ui/icons/CodeBlock/index.js +14 -22
  777. package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
  778. package/dist/lexical/ui/icons/Collapse/index.js +15 -23
  779. package/dist/lexical/ui/icons/Collapse/index.js.map +1 -1
  780. package/dist/lexical/ui/icons/H1/index.js +16 -24
  781. package/dist/lexical/ui/icons/H1/index.js.map +1 -1
  782. package/dist/lexical/ui/icons/H2/index.js +16 -24
  783. package/dist/lexical/ui/icons/H2/index.js.map +1 -1
  784. package/dist/lexical/ui/icons/H3/index.js +16 -24
  785. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  786. package/dist/lexical/ui/icons/H4/index.js +16 -24
  787. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  788. package/dist/lexical/ui/icons/H5/index.js +16 -24
  789. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  790. package/dist/lexical/ui/icons/H6/index.js +16 -24
  791. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  792. package/dist/lexical/ui/icons/HorizontalRule/index.js +19 -27
  793. package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
  794. package/dist/lexical/ui/icons/IndentDecrease/index.js +28 -53
  795. package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
  796. package/dist/lexical/ui/icons/IndentIncrease/index.js +28 -53
  797. package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
  798. package/dist/lexical/ui/icons/InlineBlocks/index.js +18 -26
  799. package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -1
  800. package/dist/lexical/ui/icons/Italic/index.js +16 -24
  801. package/dist/lexical/ui/icons/Italic/index.js.map +1 -1
  802. package/dist/lexical/ui/icons/Link/index.js +17 -25
  803. package/dist/lexical/ui/icons/Link/index.js.map +1 -1
  804. package/dist/lexical/ui/icons/Meatballs/index.js +19 -39
  805. package/dist/lexical/ui/icons/Meatballs/index.js.map +1 -1
  806. package/dist/lexical/ui/icons/OrderedList/index.js +31 -61
  807. package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -1
  808. package/dist/lexical/ui/icons/Relationship/index.js +31 -58
  809. package/dist/lexical/ui/icons/Relationship/index.js.map +1 -1
  810. package/dist/lexical/ui/icons/Strikethrough/index.js +19 -34
  811. package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -1
  812. package/dist/lexical/ui/icons/Subscript/index.js +16 -24
  813. package/dist/lexical/ui/icons/Subscript/index.js.map +1 -1
  814. package/dist/lexical/ui/icons/Superscript/index.js +16 -24
  815. package/dist/lexical/ui/icons/Superscript/index.js.map +1 -1
  816. package/dist/lexical/ui/icons/Table/index.js +17 -25
  817. package/dist/lexical/ui/icons/Table/index.js.map +1 -1
  818. package/dist/lexical/ui/icons/Text/index.js +16 -24
  819. package/dist/lexical/ui/icons/Text/index.js.map +1 -1
  820. package/dist/lexical/ui/icons/TextState/index.js +19 -25
  821. package/dist/lexical/ui/icons/TextState/index.js.map +1 -1
  822. package/dist/lexical/ui/icons/Underline/index.js +19 -34
  823. package/dist/lexical/ui/icons/Underline/index.js.map +1 -1
  824. package/dist/lexical/ui/icons/UnorderedList/index.js +46 -81
  825. package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -1
  826. package/dist/lexical/ui/icons/Upload/index.js +28 -48
  827. package/dist/lexical/ui/icons/Upload/index.js.map +1 -1
  828. package/dist/lexical/utils/canUseDOM.js +1 -1
  829. package/dist/lexical/utils/canUseDOM.js.map +1 -1
  830. package/dist/lexical/utils/environment.js +1 -1
  831. package/dist/lexical/utils/environment.js.map +1 -1
  832. package/dist/lexical/utils/getDOMRangeRect.js +12 -12
  833. package/dist/lexical/utils/getDOMRangeRect.js.map +1 -1
  834. package/dist/lexical/utils/getSelectedNode.js +17 -13
  835. package/dist/lexical/utils/getSelectedNode.js.map +1 -1
  836. package/dist/lexical/utils/guard.js +4 -3
  837. package/dist/lexical/utils/guard.js.map +1 -1
  838. package/dist/lexical/utils/joinClasses.js +2 -2
  839. package/dist/lexical/utils/joinClasses.js.map +1 -1
  840. package/dist/lexical/utils/markdown/createBlockNode.js +9 -10
  841. package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
  842. package/dist/lexical/utils/nodeFormat.js +58 -59
  843. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  844. package/dist/lexical/utils/point.js +39 -32
  845. package/dist/lexical/utils/point.js.map +1 -1
  846. package/dist/lexical/utils/rect.js +166 -136
  847. package/dist/lexical/utils/rect.js.map +1 -1
  848. package/dist/lexical/utils/setFloatingElemPosition.js +56 -48
  849. package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
  850. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js +49 -49
  851. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -1
  852. package/dist/lexical/utils/swipe.js +81 -83
  853. package/dist/lexical/utils/swipe.js.map +1 -1
  854. package/dist/lexical/utils/url.js +53 -53
  855. package/dist/lexical/utils/url.js.map +1 -1
  856. package/dist/lexical/utils/url.spec.js +98 -214
  857. package/dist/lexical/utils/url.spec.js.map +1 -1
  858. package/dist/lexical-proxy/@lexical-headless.js +0 -1
  859. package/dist/lexical-proxy/@lexical-headless.js.map +1 -1
  860. package/dist/lexical-proxy/@lexical-html.js +0 -1
  861. package/dist/lexical-proxy/@lexical-html.js.map +1 -1
  862. package/dist/lexical-proxy/@lexical-link.js +0 -1
  863. package/dist/lexical-proxy/@lexical-link.js.map +1 -1
  864. package/dist/lexical-proxy/@lexical-list.js +0 -1
  865. package/dist/lexical-proxy/@lexical-list.js.map +1 -1
  866. package/dist/lexical-proxy/@lexical-mark.js +0 -1
  867. package/dist/lexical-proxy/@lexical-mark.js.map +1 -1
  868. package/dist/lexical-proxy/@lexical-markdown.js +0 -1
  869. package/dist/lexical-proxy/@lexical-markdown.js.map +1 -1
  870. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.js +0 -1
  871. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.js.map +1 -1
  872. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.js +0 -1
  873. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.js.map +1 -1
  874. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.js +0 -1
  875. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.js.map +1 -1
  876. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.js +0 -1
  877. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.js.map +1 -1
  878. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.js +0 -1
  879. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.js.map +1 -1
  880. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.js +0 -1
  881. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.js.map +1 -1
  882. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.js +0 -1
  883. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.js.map +1 -1
  884. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.js +0 -1
  885. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.js.map +1 -1
  886. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.js +0 -1
  887. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.js.map +1 -1
  888. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.js +0 -1
  889. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.js.map +1 -1
  890. package/dist/lexical-proxy/@lexical-react/LexicalComposer.js +0 -1
  891. package/dist/lexical-proxy/@lexical-react/LexicalComposer.js.map +1 -1
  892. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.js +0 -1
  893. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.js.map +1 -1
  894. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.js +0 -1
  895. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.js.map +1 -1
  896. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +0 -1
  897. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +1 -1
  898. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.js +0 -1
  899. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.js.map +1 -1
  900. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.js +0 -1
  901. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.js.map +1 -1
  902. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.js +0 -1
  903. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.js.map +1 -1
  904. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.js +0 -1
  905. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.js.map +1 -1
  906. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.js +0 -1
  907. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.js.map +1 -1
  908. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.js +0 -1
  909. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.js.map +1 -1
  910. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.js +0 -1
  911. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.js.map +1 -1
  912. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.js +0 -1
  913. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.js.map +1 -1
  914. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.js +0 -1
  915. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.js.map +1 -1
  916. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.js +0 -1
  917. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.js.map +1 -1
  918. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.js +0 -1
  919. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.js.map +1 -1
  920. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.js +0 -1
  921. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.js.map +1 -1
  922. package/dist/lexical-proxy/@lexical-react/LexicalNodeContextMenuPlugin.js +0 -1
  923. package/dist/lexical-proxy/@lexical-react/LexicalNodeContextMenuPlugin.js.map +1 -1
  924. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.js +0 -1
  925. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.js.map +1 -1
  926. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.js +0 -1
  927. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.js.map +1 -1
  928. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.js +0 -1
  929. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.js.map +1 -1
  930. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.js +0 -1
  931. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.js.map +1 -1
  932. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.js +0 -1
  933. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.js.map +1 -1
  934. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.js +0 -1
  935. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.js.map +1 -1
  936. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.js +0 -1
  937. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.js.map +1 -1
  938. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.js +0 -1
  939. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.js.map +1 -1
  940. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.js +0 -1
  941. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.js.map +1 -1
  942. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.js +0 -1
  943. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.js.map +1 -1
  944. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.js +0 -1
  945. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.js.map +1 -1
  946. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.js +0 -1
  947. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.js.map +1 -1
  948. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.js +0 -1
  949. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.js.map +1 -1
  950. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.js +0 -1
  951. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.js.map +1 -1
  952. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.js +0 -1
  953. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.js.map +1 -1
  954. package/dist/lexical-proxy/@lexical-rich-text.js +0 -1
  955. package/dist/lexical-proxy/@lexical-rich-text.js.map +1 -1
  956. package/dist/lexical-proxy/@lexical-selection.js +0 -1
  957. package/dist/lexical-proxy/@lexical-selection.js.map +1 -1
  958. package/dist/lexical-proxy/@lexical-utils.js +0 -1
  959. package/dist/lexical-proxy/@lexical-utils.js.map +1 -1
  960. package/dist/lexical-proxy/lexical.js +0 -1
  961. package/dist/lexical-proxy/lexical.js.map +1 -1
  962. package/dist/nodeTypes.js +1 -35
  963. package/dist/nodeTypes.js.map +1 -1
  964. package/dist/packages/@lexical/markdown/MarkdownExport.js +179 -184
  965. package/dist/packages/@lexical/markdown/MarkdownExport.js.map +1 -1
  966. package/dist/packages/@lexical/markdown/MarkdownImport.js +168 -173
  967. package/dist/packages/@lexical/markdown/MarkdownImport.js.map +1 -1
  968. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js +268 -258
  969. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js.map +1 -1
  970. package/dist/packages/@lexical/markdown/MarkdownTransformers.js +209 -305
  971. package/dist/packages/@lexical/markdown/MarkdownTransformers.js.map +1 -1
  972. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js +73 -76
  973. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js.map +1 -1
  974. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js +48 -59
  975. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js.map +1 -1
  976. package/dist/packages/@lexical/markdown/importTextTransformers.js +45 -51
  977. package/dist/packages/@lexical/markdown/importTextTransformers.js.map +1 -1
  978. package/dist/packages/@lexical/markdown/index.js +14 -33
  979. package/dist/packages/@lexical/markdown/index.js.map +1 -1
  980. package/dist/packages/@lexical/markdown/utils.js +185 -217
  981. package/dist/packages/@lexical/markdown/utils.js.map +1 -1
  982. package/dist/populateGraphQL/defaultValue.js +24 -29
  983. package/dist/populateGraphQL/defaultValue.js.map +1 -1
  984. package/dist/populateGraphQL/populate.js +37 -26
  985. package/dist/populateGraphQL/populate.js.map +1 -1
  986. package/dist/populateGraphQL/populateLexicalPopulationPromises.js +50 -34
  987. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  988. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js +42 -35
  989. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  990. package/dist/types.d.ts +2 -329
  991. package/dist/types.d.ts.map +1 -1
  992. package/dist/types.js +1 -219
  993. package/dist/types.js.map +1 -1
  994. package/dist/utilities/applyBaseFilterToFields.js +84 -81
  995. package/dist/utilities/applyBaseFilterToFields.js.map +1 -1
  996. package/dist/utilities/buildEditorState.js +40 -39
  997. package/dist/utilities/buildEditorState.js.map +1 -1
  998. package/dist/utilities/buildInitialState.js +52 -51
  999. package/dist/utilities/buildInitialState.js.map +1 -1
  1000. package/dist/utilities/createClientFeature.js +48 -42
  1001. package/dist/utilities/createClientFeature.js.map +1 -1
  1002. package/dist/utilities/createServerFeature.js +48 -38
  1003. package/dist/utilities/createServerFeature.js.map +1 -1
  1004. package/dist/utilities/editorConfigFactory.js +79 -78
  1005. package/dist/utilities/editorConfigFactory.js.map +1 -1
  1006. package/dist/utilities/fieldsDrawer/Drawer.js +70 -45
  1007. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  1008. package/dist/utilities/fieldsDrawer/DrawerContent.js +124 -134
  1009. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  1010. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +115 -64
  1011. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
  1012. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +121 -76
  1013. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
  1014. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +141 -79
  1015. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
  1016. package/dist/utilities/forEachNodeRecursively.js +24 -19
  1017. package/dist/utilities/forEachNodeRecursively.js.map +1 -1
  1018. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  1019. package/dist/utilities/generateImportMap.js +49 -44
  1020. package/dist/utilities/generateImportMap.js.map +1 -1
  1021. package/dist/utilities/generateSchemaMap.js +37 -32
  1022. package/dist/utilities/generateSchemaMap.js.map +1 -1
  1023. package/dist/utilities/getDefaultSanitizedEditorConfig.js +14 -12
  1024. package/dist/utilities/getDefaultSanitizedEditorConfig.js.map +1 -1
  1025. package/dist/utilities/initLexicalFeatures.js +65 -68
  1026. package/dist/utilities/initLexicalFeatures.js.map +1 -1
  1027. package/dist/utilities/jsx/collectTopLevelJSXInLines.js +29 -26
  1028. package/dist/utilities/jsx/collectTopLevelJSXInLines.js.map +1 -1
  1029. package/dist/utilities/jsx/declare.d.js.map +1 -1
  1030. package/dist/utilities/jsx/extractPropsFromJSXPropsString.js +102 -100
  1031. package/dist/utilities/jsx/extractPropsFromJSXPropsString.js.map +1 -1
  1032. package/dist/utilities/jsx/jsx.js +80 -76
  1033. package/dist/utilities/jsx/jsx.js.map +1 -1
  1034. package/dist/utilities/jsx/jsx.spec.js +171 -225
  1035. package/dist/utilities/jsx/jsx.spec.js.map +1 -1
  1036. package/dist/utilities/migrateSlateToLexical/index.js +127 -111
  1037. package/dist/utilities/migrateSlateToLexical/index.js.map +1 -1
  1038. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +78 -74
  1039. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
  1040. package/dist/utilities/recurseNodeTree.js +25 -22
  1041. package/dist/utilities/recurseNodeTree.js.map +1 -1
  1042. package/dist/utilities/upgradeLexicalData/index.js +101 -87
  1043. package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
  1044. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +80 -78
  1045. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  1046. package/dist/utilities/useLexicalFeature.js +16 -14
  1047. package/dist/utilities/useLexicalFeature.js.map +1 -1
  1048. package/dist/utilities/useRunDeprioritized.js +37 -41
  1049. package/dist/utilities/useRunDeprioritized.js.map +1 -1
  1050. package/dist/validate/hasText.d.ts +1 -6
  1051. package/dist/validate/hasText.d.ts.map +1 -1
  1052. package/dist/validate/hasText.js +20 -27
  1053. package/dist/validate/hasText.js.map +1 -1
  1054. package/dist/validate/index.js +28 -22
  1055. package/dist/validate/index.js.map +1 -1
  1056. package/dist/validate/validateNodes.js +31 -28
  1057. package/dist/validate/validateNodes.js.map +1 -1
  1058. package/package.json +6 -11
  1059. package/dist/exports/client/internal-client.d.ts +0 -3
  1060. package/dist/exports/client/internal-client.d.ts.map +0 -1
  1061. package/dist/exports/client/internal-client.js +0 -4
  1062. package/dist/exports/client/internal-client.js.map +0 -1
  1063. package/dist/features/blocks/client/component/index.scss +0 -188
  1064. package/dist/features/blocks/client/componentInline/index.scss +0 -100
  1065. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.scss +0 -6
  1066. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.scss +0 -29
  1067. package/dist/features/blocks/premade/CodeBlock/Component/index.scss +0 -97
  1068. package/dist/features/debug/jsxConverter/client/plugin/style.scss +0 -12
  1069. package/dist/features/debug/testRecorder/client/plugin/index.scss +0 -53
  1070. package/dist/features/debug/treeView/client/plugin/index.scss +0 -80
  1071. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.scss +0 -87
  1072. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.scss +0 -11
  1073. package/dist/features/experimental_table/client/plugins/TablePlugin/index.scss +0 -233
  1074. package/dist/features/horizontalRule/client/plugin/index.scss +0 -23
  1075. package/dist/features/link/client/plugins/floatingLinkEditor/index.scss +0 -95
  1076. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.scss +0 -16
  1077. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.scss +0 -16
  1078. package/dist/features/relationship/client/components/index.scss +0 -95
  1079. package/dist/features/toolbars/fixed/client/Toolbar/index.scss +0 -113
  1080. package/dist/features/toolbars/inline/client/Toolbar/index.scss +0 -58
  1081. package/dist/features/toolbars/shared/ToolbarButton/index.scss +0 -46
  1082. package/dist/features/toolbars/shared/ToolbarDropdown/index.scss +0 -129
  1083. package/dist/features/upload/client/component/index.scss +0 -191
  1084. package/dist/field/Diff/converters/listitem/index.scss +0 -47
  1085. package/dist/field/Diff/converters/relationship/index.scss +0 -73
  1086. package/dist/field/Diff/converters/unknown/index.scss +0 -40
  1087. package/dist/field/Diff/converters/upload/index.scss +0 -115
  1088. package/dist/field/Diff/index.scss +0 -102
  1089. package/dist/field/RichTextViewProvider.d.ts +0 -85
  1090. package/dist/field/RichTextViewProvider.d.ts.map +0 -1
  1091. package/dist/field/RichTextViewProvider.js +0 -114
  1092. package/dist/field/RichTextViewProvider.js.map +0 -1
  1093. package/dist/field/ViewSelector.d.ts +0 -4
  1094. package/dist/field/ViewSelector.d.ts.map +0 -1
  1095. package/dist/field/ViewSelector.js +0 -90
  1096. package/dist/field/ViewSelector.js.map +0 -1
  1097. package/dist/field/ViewSelector.scss +0 -34
  1098. package/dist/field/index.scss +0 -53
  1099. package/dist/lexical/LexicalEditor.scss +0 -54
  1100. package/dist/lexical/plugins/DecoratorPlugin/index.scss +0 -13
  1101. package/dist/lexical/plugins/InsertParagraphAtEnd/index.scss +0 -54
  1102. package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts +0 -2
  1103. package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts.map +0 -1
  1104. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js +0 -31
  1105. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js.map +0 -1
  1106. package/dist/lexical/plugins/SlashMenu/index.scss +0 -68
  1107. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.scss +0 -35
  1108. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.scss +0 -80
  1109. package/dist/lexical/theme/EditorTheme.scss +0 -357
  1110. package/dist/lexical/ui/ContentEditable.scss +0 -105
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/packages/@lexical/markdown/MarkdownTransformers.ts"],"sourcesContent":["/* eslint-disable regexp/no-unused-capturing-group */\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { ListType } from '@lexical/list'\nimport type { HeadingTagType } from '@lexical/rich-text'\nimport type { ElementNode, Klass, LexicalNode, TextFormatType, TextNode } from 'lexical'\n\nimport {\n $createListItemNode,\n $createListNode,\n $isListItemNode,\n $isListNode,\n ListItemNode,\n ListNode,\n} from '@lexical/list'\nimport {\n $createHeadingNode,\n $createQuoteNode,\n $isHeadingNode,\n $isQuoteNode,\n HeadingNode,\n QuoteNode,\n} from '@lexical/rich-text'\nimport { $createLineBreakNode } from 'lexical'\n\nexport type Transformer =\n | ElementTransformer\n | MultilineElementTransformer\n | TextFormatTransformer\n | TextMatchTransformer\n\nexport type ElementTransformer = {\n dependencies: Array<Klass<LexicalNode>>\n /**\n * `export` is called when the `$convertToMarkdownString` is called to convert the editor state into markdown.\n *\n * @return return null to cancel the export, even though the regex matched. Lexical will then search for the next transformer.\n */\n export: (\n node: LexicalNode,\n\n traverseChildren: (node: ElementNode) => string,\n ) => null | string\n regExp: RegExp\n /**\n * `replace` is called when markdown is imported or typed in the editor\n *\n * @return return false to cancel the transform, even though the regex matched. Lexical will then search for the next transformer.\n */\n replace: (\n parentNode: ElementNode,\n children: Array<LexicalNode>,\n match: Array<string>,\n /**\n * Whether the match is from an import operation (e.g. through `$convertFromMarkdownString`) or not (e.g. through typing in the editor).\n */\n isImport: boolean,\n ) => boolean | void\n type: 'element'\n}\n\nexport type MultilineElementTransformer = {\n dependencies: Array<Klass<LexicalNode>>\n /**\n * `export` is called when the `$convertToMarkdownString` is called to convert the editor state into markdown.\n *\n * @return return null to cancel the export, even though the regex matched. Lexical will then search for the next transformer.\n */\n export?: (\n node: LexicalNode,\n\n traverseChildren: (node: ElementNode) => string,\n ) => null | string\n /**\n * Use this function to manually handle the import process, once the `regExpStart` has matched successfully.\n * Without providing this function, the default behavior is to match until `regExpEnd` is found, or until the end of the document if `regExpEnd.optional` is true.\n *\n * @returns a tuple or null. The first element of the returned tuple is a boolean indicating if a multiline element was imported. The second element is the index of the last line that was processed. If null is returned, the next multilineElementTransformer will be tried. If undefined is returned, the default behavior will be used.\n */\n handleImportAfterStartMatch?: (args: {\n lines: Array<string>\n rootNode: ElementNode\n startLineIndex: number\n startMatch: RegExpMatchArray\n transformer: MultilineElementTransformer\n }) => [boolean, number] | null | undefined\n /**\n * This regex determines when to stop matching. Anything in between regExpStart and regExpEnd will be matched\n */\n regExpEnd?:\n | {\n /**\n * Whether the end match is optional. If true, the end match is not required to match for the transformer to be triggered.\n * The entire text from regexpStart to the end of the document will then be matched.\n */\n optional?: true\n regExp: RegExp\n }\n | RegExp\n /**\n * This regex determines when to start matching\n */\n regExpStart: RegExp\n /**\n * `replace` is called only when markdown is imported in the editor, not when it's typed\n *\n * @return return false to cancel the transform, even though the regex matched. Lexical will then search for the next transformer.\n */\n replace: (\n rootNode: ElementNode,\n /**\n * During markdown shortcut transforms, children nodes may be provided to the transformer. If this is the case, no `linesInBetween` will be provided and\n * the children nodes should be used instead of the `linesInBetween` to create the new node.\n */\n children: Array<LexicalNode> | null,\n startMatch: Array<string>,\n endMatch: Array<string> | null,\n /**\n * linesInBetween includes the text between the start & end matches, split up by lines, not including the matches themselves.\n * This is null when the transformer is triggered through markdown shortcuts (by typing in the editor)\n */\n linesInBetween: Array<string> | null,\n /**\n * Whether the match is from an import operation (e.g. through `$convertFromMarkdownString`) or not (e.g. through typing in the editor).\n */\n isImport: boolean,\n ) => boolean | void\n type: 'multiline-element'\n}\n\nexport type TextFormatTransformer = Readonly<{\n format: ReadonlyArray<TextFormatType>\n intraword?: boolean\n tag: string\n type: 'text-format'\n}>\n\nexport type TextMatchTransformer = Readonly<{\n dependencies: Array<Klass<LexicalNode>>\n /**\n * Determines how a node should be exported to markdown\n */\n export?: (\n node: LexicalNode,\n\n exportChildren: (node: ElementNode) => string,\n\n exportFormat: (node: TextNode, textContent: string) => string,\n ) => null | string\n /**\n * For import operations, this function can be used to determine the end index of the match, after `importRegExp` has matched.\n * Without this function, the end index will be determined by the length of the match from `importRegExp`. Manually determining the end index can be useful if\n * the match from `importRegExp` is not the entire text content of the node. That way, `importRegExp` can be used to match only the start of the node, and `getEndIndex`\n * can be used to match the end of the node.\n *\n * @returns The end index of the match, or false if the match was unsuccessful and a different transformer should be tried.\n */\n getEndIndex?: (node: TextNode, match: RegExpMatchArray) => false | number\n /**\n * This regex determines what text is matched during markdown imports\n */\n importRegExp?: RegExp\n /**\n * This regex determines what text is matched for markdown shortcuts while typing in the editor\n */\n regExp: RegExp\n /**\n * Determines how the matched markdown text should be transformed into a node during the markdown import process\n *\n * @returns nothing, or a TextNode that may be a child of the new node that is created.\n * If a TextNode is returned, text format matching will be applied to it (e.g. bold, italic, etc.)\n */\n replace?: (node: TextNode, match: RegExpMatchArray) => TextNode | void\n /**\n * Single character that allows the transformer to trigger when typed in the editor. This does not affect markdown imports outside of the markdown shortcut plugin.\n * If the trigger is matched, the `regExp` will be used to match the text in the second step.\n */\n trigger?: string\n type: 'text-match'\n}>\n\nconst EMPTY_OR_WHITESPACE_ONLY = /^[\\t ]*$/\nconst ORDERED_LIST_REGEX = /^(\\s*)(\\d+)\\.\\s/\nconst UNORDERED_LIST_REGEX = /^(\\s*)[-*+]\\s/\nconst CHECK_LIST_REGEX = /^(\\s*)(?:-\\s)?\\s?(\\[(\\s|x)?\\])\\s/i\nconst HEADING_REGEX = /^(#{1,6})\\s/\nconst QUOTE_REGEX = /^>\\s/\nconst CODE_START_REGEX = /^[ \\t]*(\\\\`\\\\`\\\\`|```)(\\w+)?/\nconst CODE_END_REGEX = /[ \\t]*(\\\\`\\\\`\\\\`|```)$/\nconst CODE_SINGLE_LINE_REGEX = /^[ \\t]*```[^`]+(?:(?:`{1,2}|`{4,})[^`]+)*```(?:[^`]|$)/\nconst TABLE_ROW_REG_EXP = /^\\|(.+)\\|\\s?$/\nconst TABLE_ROW_DIVIDER_REG_EXP = /^(\\| ?:?-*:? ?)+\\|\\s?$/\nconst TAG_START_REGEX = /^[ \\t]*<[a-z_][\\w-]*(?:\\s[^<>]*)?\\/?>/i\nconst TAG_END_REGEX = /^[ \\t]*<\\/[a-z_][\\w-]*\\s*>/i\n\nconst createBlockNode = (\n createNode: (match: Array<string>) => ElementNode,\n): ElementTransformer['replace'] => {\n return (parentNode, children, match) => {\n const node = createNode(match)\n node.append(...children)\n parentNode.replace(node)\n node.select(0, 0)\n }\n}\n\n// Amount of spaces that define indentation level\n// TODO: should be an option\nconst LIST_INDENT_SIZE = 4\n\nfunction getIndent(whitespaces: string): number {\n const tabs = whitespaces.match(/\\t/g)\n const spaces = whitespaces.match(/ /g)\n\n let indent = 0\n\n if (tabs) {\n indent += tabs.length\n }\n\n if (spaces) {\n indent += Math.floor(spaces.length / LIST_INDENT_SIZE)\n }\n\n return indent\n}\n\nconst listReplace = (listType: ListType): ElementTransformer['replace'] => {\n return (parentNode, children, match) => {\n const previousNode = parentNode.getPreviousSibling()\n const nextNode = parentNode.getNextSibling()\n const listItem = $createListItemNode(listType === 'check' ? match[3] === 'x' : undefined)\n if ($isListNode(nextNode) && nextNode.getListType() === listType) {\n const firstChild = nextNode.getFirstChild()\n if (firstChild !== null) {\n firstChild.insertBefore(listItem)\n } else {\n // should never happen, but let's handle gracefully, just in case.\n nextNode.append(listItem)\n }\n parentNode.remove()\n } else if ($isListNode(previousNode) && previousNode.getListType() === listType) {\n previousNode.append(listItem)\n parentNode.remove()\n } else {\n const list = $createListNode(listType, listType === 'number' ? Number(match[2]) : undefined)\n list.append(listItem)\n parentNode.replace(list)\n }\n listItem.append(...children)\n listItem.select(0, 0)\n const indent = getIndent(match[1]!)\n if (indent) {\n listItem.setIndent(indent)\n }\n }\n}\n\nconst listExport = (\n listNode: ListNode,\n exportChildren: (node: ElementNode) => string,\n depth: number,\n): string => {\n const output: string[] = []\n const children = listNode.getChildren()\n let index = 0\n for (const listItemNode of children) {\n if ($isListItemNode(listItemNode)) {\n if (listItemNode.getChildrenSize() === 1) {\n const firstChild = listItemNode.getFirstChild()\n if ($isListNode(firstChild)) {\n output.push(listExport(firstChild, exportChildren, depth + 1))\n continue\n }\n }\n const indent = ' '.repeat(depth * LIST_INDENT_SIZE)\n const listType = listNode.getListType()\n const prefix =\n listType === 'number'\n ? `${listNode.getStart() + index}. `\n : listType === 'check'\n ? `- [${listItemNode.getChecked() ? 'x' : ' '}] `\n : '- '\n output.push(indent + prefix + exportChildren(listItemNode))\n index++\n }\n }\n\n return output.join('\\n')\n}\n\nexport const HEADING: ElementTransformer = {\n type: 'element',\n dependencies: [HeadingNode],\n export: (node, exportChildren) => {\n if (!$isHeadingNode(node)) {\n return null\n }\n const level = Number(node.getTag().slice(1))\n return '#'.repeat(level) + ' ' + exportChildren(node)\n },\n regExp: HEADING_REGEX,\n replace: createBlockNode((match) => {\n const tag = ('h' + match[1]!.length) as HeadingTagType\n return $createHeadingNode(tag)\n }),\n}\n\nexport const QUOTE: ElementTransformer = {\n type: 'element',\n dependencies: [QuoteNode],\n export: (node, exportChildren) => {\n if (!$isQuoteNode(node)) {\n return null\n }\n\n const lines = exportChildren(node).split('\\n')\n const output: string[] = []\n for (const line of lines) {\n output.push('> ' + line)\n }\n return output.join('\\n')\n },\n regExp: QUOTE_REGEX,\n replace: (parentNode, children, _match, isImport) => {\n if (isImport) {\n const previousNode = parentNode.getPreviousSibling()\n if ($isQuoteNode(previousNode)) {\n previousNode.splice(previousNode.getChildrenSize(), 0, [\n $createLineBreakNode(),\n ...children,\n ])\n previousNode.select(0, 0)\n parentNode.remove()\n return\n }\n }\n\n const node = $createQuoteNode()\n node.append(...children)\n parentNode.replace(node)\n node.select(0, 0)\n },\n}\n\nexport const UNORDERED_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: UNORDERED_LIST_REGEX,\n replace: listReplace('bullet'),\n}\n\nexport const CHECK_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: CHECK_LIST_REGEX,\n replace: listReplace('check'),\n}\n\nexport const ORDERED_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: ORDERED_LIST_REGEX,\n replace: listReplace('number'),\n}\n\nexport const INLINE_CODE: TextFormatTransformer = {\n type: 'text-format',\n format: ['code'],\n tag: '`',\n}\n\nexport const HIGHLIGHT: TextFormatTransformer = {\n type: 'text-format',\n format: ['highlight'],\n tag: '==',\n}\n\nexport const BOLD_ITALIC_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold', 'italic'],\n tag: '***',\n}\n\nexport const BOLD_ITALIC_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold', 'italic'],\n intraword: false,\n tag: '___',\n}\n\nexport const BOLD_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold'],\n tag: '**',\n}\n\nexport const BOLD_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold'],\n intraword: false,\n tag: '__',\n}\n\nexport const STRIKETHROUGH: TextFormatTransformer = {\n type: 'text-format',\n format: ['strikethrough'],\n tag: '~~',\n}\n\nexport const ITALIC_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['italic'],\n tag: '*',\n}\n\nexport const ITALIC_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['italic'],\n intraword: false,\n tag: '_',\n}\n\nexport function normalizeMarkdown(input: string, shouldMergeAdjacentLines: boolean): string {\n const lines = input.split('\\n')\n let inCodeBlock = false\n const sanitizedLines: string[] = []\n let nestedDeepCodeBlock = 0\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]!\n const lastLine = sanitizedLines[sanitizedLines.length - 1]\n\n // Code blocks of ```single line``` don't toggle the inCodeBlock flag\n if (CODE_SINGLE_LINE_REGEX.test(line)) {\n sanitizedLines.push(line)\n continue\n }\n\n if (CODE_END_REGEX.test(line)) {\n if (nestedDeepCodeBlock === 0) {\n inCodeBlock = true\n }\n if (nestedDeepCodeBlock === 1) {\n inCodeBlock = false\n }\n if (nestedDeepCodeBlock > 0) {\n nestedDeepCodeBlock--\n }\n sanitizedLines.push(line)\n continue\n }\n\n // Toggle inCodeBlock state when encountering start or end of a code block\n if (CODE_START_REGEX.test(line)) {\n inCodeBlock = true\n nestedDeepCodeBlock++\n sanitizedLines.push(line)\n continue\n }\n\n // If we are inside a code block, keep the line unchanged\n if (inCodeBlock) {\n sanitizedLines.push(line)\n continue\n }\n\n // In markdown the concept of \"empty paragraphs\" does not exist.\n // Blocks must be separated by an empty line. Non-empty adjacent lines must be merged.\n if (\n EMPTY_OR_WHITESPACE_ONLY.test(line) ||\n EMPTY_OR_WHITESPACE_ONLY.test(lastLine!) ||\n !lastLine ||\n HEADING_REGEX.test(lastLine) ||\n HEADING_REGEX.test(line) ||\n QUOTE_REGEX.test(line) ||\n ORDERED_LIST_REGEX.test(line) ||\n UNORDERED_LIST_REGEX.test(line) ||\n CHECK_LIST_REGEX.test(line) ||\n TABLE_ROW_REG_EXP.test(line) ||\n TABLE_ROW_DIVIDER_REG_EXP.test(line) ||\n !shouldMergeAdjacentLines ||\n TAG_START_REGEX.test(line) ||\n TAG_END_REGEX.test(line) ||\n TAG_START_REGEX.test(lastLine) ||\n TAG_END_REGEX.test(lastLine) ||\n CODE_END_REGEX.test(lastLine)\n ) {\n sanitizedLines.push(line)\n } else {\n sanitizedLines[sanitizedLines.length - 1] = lastLine + ' ' + line.trim()\n }\n }\n\n return sanitizedLines.join('\\n')\n}\n"],"names":["$createListItemNode","$createListNode","$isListItemNode","$isListNode","ListItemNode","ListNode","$createHeadingNode","$createQuoteNode","$isHeadingNode","$isQuoteNode","HeadingNode","QuoteNode","$createLineBreakNode","EMPTY_OR_WHITESPACE_ONLY","ORDERED_LIST_REGEX","UNORDERED_LIST_REGEX","CHECK_LIST_REGEX","HEADING_REGEX","QUOTE_REGEX","CODE_START_REGEX","CODE_END_REGEX","CODE_SINGLE_LINE_REGEX","TABLE_ROW_REG_EXP","TABLE_ROW_DIVIDER_REG_EXP","TAG_START_REGEX","TAG_END_REGEX","createBlockNode","createNode","parentNode","children","match","node","append","replace","select","LIST_INDENT_SIZE","getIndent","whitespaces","tabs","spaces","indent","length","Math","floor","listReplace","listType","previousNode","getPreviousSibling","nextNode","getNextSibling","listItem","undefined","getListType","firstChild","getFirstChild","insertBefore","remove","list","Number","setIndent","listExport","listNode","exportChildren","depth","output","getChildren","index","listItemNode","getChildrenSize","push","repeat","prefix","getStart","getChecked","join","HEADING","type","dependencies","export","level","getTag","slice","regExp","tag","QUOTE","lines","split","line","_match","isImport","splice","UNORDERED_LIST","CHECK_LIST","ORDERED_LIST","INLINE_CODE","format","HIGHLIGHT","BOLD_ITALIC_STAR","BOLD_ITALIC_UNDERSCORE","intraword","BOLD_STAR","BOLD_UNDERSCORE","STRIKETHROUGH","ITALIC_STAR","ITALIC_UNDERSCORE","normalizeMarkdown","input","shouldMergeAdjacentLines","inCodeBlock","sanitizedLines","nestedDeepCodeBlock","i","lastLine","test","trim"],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownTransformers.js","names":["$createListItemNode","$createListNode","$isListItemNode","$isListNode","ListItemNode","ListNode","$createHeadingNode","$createQuoteNode","$isHeadingNode","$isQuoteNode","HeadingNode","QuoteNode","$createLineBreakNode","EMPTY_OR_WHITESPACE_ONLY","ORDERED_LIST_REGEX","UNORDERED_LIST_REGEX","CHECK_LIST_REGEX","HEADING_REGEX","QUOTE_REGEX","CODE_START_REGEX","CODE_END_REGEX","CODE_SINGLE_LINE_REGEX","TABLE_ROW_REG_EXP","TABLE_ROW_DIVIDER_REG_EXP","TAG_START_REGEX","TAG_END_REGEX","createBlockNode","createNode","parentNode","children","match","node","append","replace","select","LIST_INDENT_SIZE","getIndent","whitespaces","tabs","spaces","indent","length","Math","floor","listReplace","listType","previousNode","getPreviousSibling","nextNode","getNextSibling","listItem","undefined","getListType","firstChild","getFirstChild","insertBefore","remove","list","Number","setIndent","listExport","listNode","exportChildren","depth","output","getChildren","index","listItemNode","getChildrenSize","push","repeat","prefix","getStart","getChecked","join","HEADING","type","dependencies","export","level","getTag","slice","regExp","tag","QUOTE","lines","split","line","_match","isImport","splice","UNORDERED_LIST","CHECK_LIST","ORDERED_LIST","INLINE_CODE","format","HIGHLIGHT","BOLD_ITALIC_STAR","BOLD_ITALIC_UNDERSCORE","intraword","BOLD_STAR","BOLD_UNDERSCORE","STRIKETHROUGH","ITALIC_STAR","ITALIC_UNDERSCORE","normalizeMarkdown","input","shouldMergeAdjacentLines","inCodeBlock","sanitizedLines","nestedDeepCodeBlock","i","lastLine","test","trim"],"sources":["../../../../src/packages/@lexical/markdown/MarkdownTransformers.ts"],"sourcesContent":["/* eslint-disable regexp/no-unused-capturing-group */\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { ListType } from '@lexical/list'\nimport type { HeadingTagType } from '@lexical/rich-text'\nimport type { ElementNode, Klass, LexicalNode, TextFormatType, TextNode } from 'lexical'\n\nimport {\n $createListItemNode,\n $createListNode,\n $isListItemNode,\n $isListNode,\n ListItemNode,\n ListNode,\n} from '@lexical/list'\nimport {\n $createHeadingNode,\n $createQuoteNode,\n $isHeadingNode,\n $isQuoteNode,\n HeadingNode,\n QuoteNode,\n} from '@lexical/rich-text'\nimport { $createLineBreakNode } from 'lexical'\n\nexport type Transformer =\n | ElementTransformer\n | MultilineElementTransformer\n | TextFormatTransformer\n | TextMatchTransformer\n\nexport type ElementTransformer = {\n dependencies: Array<Klass<LexicalNode>>\n /**\n * `export` is called when the `$convertToMarkdownString` is called to convert the editor state into markdown.\n *\n * @return return null to cancel the export, even though the regex matched. Lexical will then search for the next transformer.\n */\n export: (\n node: LexicalNode,\n\n traverseChildren: (node: ElementNode) => string,\n ) => null | string\n regExp: RegExp\n /**\n * `replace` is called when markdown is imported or typed in the editor\n *\n * @return return false to cancel the transform, even though the regex matched. Lexical will then search for the next transformer.\n */\n replace: (\n parentNode: ElementNode,\n children: Array<LexicalNode>,\n match: Array<string>,\n /**\n * Whether the match is from an import operation (e.g. through `$convertFromMarkdownString`) or not (e.g. through typing in the editor).\n */\n isImport: boolean,\n ) => boolean | void\n type: 'element'\n}\n\nexport type MultilineElementTransformer = {\n dependencies: Array<Klass<LexicalNode>>\n /**\n * `export` is called when the `$convertToMarkdownString` is called to convert the editor state into markdown.\n *\n * @return return null to cancel the export, even though the regex matched. Lexical will then search for the next transformer.\n */\n export?: (\n node: LexicalNode,\n\n traverseChildren: (node: ElementNode) => string,\n ) => null | string\n /**\n * Use this function to manually handle the import process, once the `regExpStart` has matched successfully.\n * Without providing this function, the default behavior is to match until `regExpEnd` is found, or until the end of the document if `regExpEnd.optional` is true.\n *\n * @returns a tuple or null. The first element of the returned tuple is a boolean indicating if a multiline element was imported. The second element is the index of the last line that was processed. If null is returned, the next multilineElementTransformer will be tried. If undefined is returned, the default behavior will be used.\n */\n handleImportAfterStartMatch?: (args: {\n lines: Array<string>\n rootNode: ElementNode\n startLineIndex: number\n startMatch: RegExpMatchArray\n transformer: MultilineElementTransformer\n }) => [boolean, number] | null | undefined\n /**\n * This regex determines when to stop matching. Anything in between regExpStart and regExpEnd will be matched\n */\n regExpEnd?:\n | {\n /**\n * Whether the end match is optional. If true, the end match is not required to match for the transformer to be triggered.\n * The entire text from regexpStart to the end of the document will then be matched.\n */\n optional?: true\n regExp: RegExp\n }\n | RegExp\n /**\n * This regex determines when to start matching\n */\n regExpStart: RegExp\n /**\n * `replace` is called only when markdown is imported in the editor, not when it's typed\n *\n * @return return false to cancel the transform, even though the regex matched. Lexical will then search for the next transformer.\n */\n replace: (\n rootNode: ElementNode,\n /**\n * During markdown shortcut transforms, children nodes may be provided to the transformer. If this is the case, no `linesInBetween` will be provided and\n * the children nodes should be used instead of the `linesInBetween` to create the new node.\n */\n children: Array<LexicalNode> | null,\n startMatch: Array<string>,\n endMatch: Array<string> | null,\n /**\n * linesInBetween includes the text between the start & end matches, split up by lines, not including the matches themselves.\n * This is null when the transformer is triggered through markdown shortcuts (by typing in the editor)\n */\n linesInBetween: Array<string> | null,\n /**\n * Whether the match is from an import operation (e.g. through `$convertFromMarkdownString`) or not (e.g. through typing in the editor).\n */\n isImport: boolean,\n ) => boolean | void\n type: 'multiline-element'\n}\n\nexport type TextFormatTransformer = Readonly<{\n format: ReadonlyArray<TextFormatType>\n intraword?: boolean\n tag: string\n type: 'text-format'\n}>\n\nexport type TextMatchTransformer = Readonly<{\n dependencies: Array<Klass<LexicalNode>>\n /**\n * Determines how a node should be exported to markdown\n */\n export?: (\n node: LexicalNode,\n\n exportChildren: (node: ElementNode) => string,\n\n exportFormat: (node: TextNode, textContent: string) => string,\n ) => null | string\n /**\n * For import operations, this function can be used to determine the end index of the match, after `importRegExp` has matched.\n * Without this function, the end index will be determined by the length of the match from `importRegExp`. Manually determining the end index can be useful if\n * the match from `importRegExp` is not the entire text content of the node. That way, `importRegExp` can be used to match only the start of the node, and `getEndIndex`\n * can be used to match the end of the node.\n *\n * @returns The end index of the match, or false if the match was unsuccessful and a different transformer should be tried.\n */\n getEndIndex?: (node: TextNode, match: RegExpMatchArray) => false | number\n /**\n * This regex determines what text is matched during markdown imports\n */\n importRegExp?: RegExp\n /**\n * This regex determines what text is matched for markdown shortcuts while typing in the editor\n */\n regExp: RegExp\n /**\n * Determines how the matched markdown text should be transformed into a node during the markdown import process\n *\n * @returns nothing, or a TextNode that may be a child of the new node that is created.\n * If a TextNode is returned, text format matching will be applied to it (e.g. bold, italic, etc.)\n */\n replace?: (node: TextNode, match: RegExpMatchArray) => TextNode | void\n /**\n * Single character that allows the transformer to trigger when typed in the editor. This does not affect markdown imports outside of the markdown shortcut plugin.\n * If the trigger is matched, the `regExp` will be used to match the text in the second step.\n */\n trigger?: string\n type: 'text-match'\n}>\n\nconst EMPTY_OR_WHITESPACE_ONLY = /^[\\t ]*$/\nconst ORDERED_LIST_REGEX = /^(\\s*)(\\d+)\\.\\s/\nconst UNORDERED_LIST_REGEX = /^(\\s*)[-*+]\\s/\nconst CHECK_LIST_REGEX = /^(\\s*)(?:-\\s)?\\s?(\\[(\\s|x)?\\])\\s/i\nconst HEADING_REGEX = /^(#{1,6})\\s/\nconst QUOTE_REGEX = /^>\\s/\nconst CODE_START_REGEX = /^[ \\t]*(\\\\`\\\\`\\\\`|```)(\\w+)?/\nconst CODE_END_REGEX = /[ \\t]*(\\\\`\\\\`\\\\`|```)$/\nconst CODE_SINGLE_LINE_REGEX = /^[ \\t]*```[^`]+(?:(?:`{1,2}|`{4,})[^`]+)*```(?:[^`]|$)/\nconst TABLE_ROW_REG_EXP = /^\\|(.+)\\|\\s?$/\nconst TABLE_ROW_DIVIDER_REG_EXP = /^(\\| ?:?-*:? ?)+\\|\\s?$/\nconst TAG_START_REGEX = /^[ \\t]*<[a-z_][\\w-]*(?:\\s[^<>]*)?\\/?>/i\nconst TAG_END_REGEX = /^[ \\t]*<\\/[a-z_][\\w-]*\\s*>/i\n\nconst createBlockNode = (\n createNode: (match: Array<string>) => ElementNode,\n): ElementTransformer['replace'] => {\n return (parentNode, children, match) => {\n const node = createNode(match)\n node.append(...children)\n parentNode.replace(node)\n node.select(0, 0)\n }\n}\n\n// Amount of spaces that define indentation level\n// TODO: should be an option\nconst LIST_INDENT_SIZE = 4\n\nfunction getIndent(whitespaces: string): number {\n const tabs = whitespaces.match(/\\t/g)\n const spaces = whitespaces.match(/ /g)\n\n let indent = 0\n\n if (tabs) {\n indent += tabs.length\n }\n\n if (spaces) {\n indent += Math.floor(spaces.length / LIST_INDENT_SIZE)\n }\n\n return indent\n}\n\nconst listReplace = (listType: ListType): ElementTransformer['replace'] => {\n return (parentNode, children, match) => {\n const previousNode = parentNode.getPreviousSibling()\n const nextNode = parentNode.getNextSibling()\n const listItem = $createListItemNode(listType === 'check' ? match[3] === 'x' : undefined)\n if ($isListNode(nextNode) && nextNode.getListType() === listType) {\n const firstChild = nextNode.getFirstChild()\n if (firstChild !== null) {\n firstChild.insertBefore(listItem)\n } else {\n // should never happen, but let's handle gracefully, just in case.\n nextNode.append(listItem)\n }\n parentNode.remove()\n } else if ($isListNode(previousNode) && previousNode.getListType() === listType) {\n previousNode.append(listItem)\n parentNode.remove()\n } else {\n const list = $createListNode(listType, listType === 'number' ? Number(match[2]) : undefined)\n list.append(listItem)\n parentNode.replace(list)\n }\n listItem.append(...children)\n listItem.select(0, 0)\n const indent = getIndent(match[1]!)\n if (indent) {\n listItem.setIndent(indent)\n }\n }\n}\n\nconst listExport = (\n listNode: ListNode,\n exportChildren: (node: ElementNode) => string,\n depth: number,\n): string => {\n const output: string[] = []\n const children = listNode.getChildren()\n let index = 0\n for (const listItemNode of children) {\n if ($isListItemNode(listItemNode)) {\n if (listItemNode.getChildrenSize() === 1) {\n const firstChild = listItemNode.getFirstChild()\n if ($isListNode(firstChild)) {\n output.push(listExport(firstChild, exportChildren, depth + 1))\n continue\n }\n }\n const indent = ' '.repeat(depth * LIST_INDENT_SIZE)\n const listType = listNode.getListType()\n const prefix =\n listType === 'number'\n ? `${listNode.getStart() + index}. `\n : listType === 'check'\n ? `- [${listItemNode.getChecked() ? 'x' : ' '}] `\n : '- '\n output.push(indent + prefix + exportChildren(listItemNode))\n index++\n }\n }\n\n return output.join('\\n')\n}\n\nexport const HEADING: ElementTransformer = {\n type: 'element',\n dependencies: [HeadingNode],\n export: (node, exportChildren) => {\n if (!$isHeadingNode(node)) {\n return null\n }\n const level = Number(node.getTag().slice(1))\n return '#'.repeat(level) + ' ' + exportChildren(node)\n },\n regExp: HEADING_REGEX,\n replace: createBlockNode((match) => {\n const tag = ('h' + match[1]!.length) as HeadingTagType\n return $createHeadingNode(tag)\n }),\n}\n\nexport const QUOTE: ElementTransformer = {\n type: 'element',\n dependencies: [QuoteNode],\n export: (node, exportChildren) => {\n if (!$isQuoteNode(node)) {\n return null\n }\n\n const lines = exportChildren(node).split('\\n')\n const output: string[] = []\n for (const line of lines) {\n output.push('> ' + line)\n }\n return output.join('\\n')\n },\n regExp: QUOTE_REGEX,\n replace: (parentNode, children, _match, isImport) => {\n if (isImport) {\n const previousNode = parentNode.getPreviousSibling()\n if ($isQuoteNode(previousNode)) {\n previousNode.splice(previousNode.getChildrenSize(), 0, [\n $createLineBreakNode(),\n ...children,\n ])\n previousNode.select(0, 0)\n parentNode.remove()\n return\n }\n }\n\n const node = $createQuoteNode()\n node.append(...children)\n parentNode.replace(node)\n node.select(0, 0)\n },\n}\n\nexport const UNORDERED_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: UNORDERED_LIST_REGEX,\n replace: listReplace('bullet'),\n}\n\nexport const CHECK_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: CHECK_LIST_REGEX,\n replace: listReplace('check'),\n}\n\nexport const ORDERED_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: ORDERED_LIST_REGEX,\n replace: listReplace('number'),\n}\n\nexport const INLINE_CODE: TextFormatTransformer = {\n type: 'text-format',\n format: ['code'],\n tag: '`',\n}\n\nexport const HIGHLIGHT: TextFormatTransformer = {\n type: 'text-format',\n format: ['highlight'],\n tag: '==',\n}\n\nexport const BOLD_ITALIC_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold', 'italic'],\n tag: '***',\n}\n\nexport const BOLD_ITALIC_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold', 'italic'],\n intraword: false,\n tag: '___',\n}\n\nexport const BOLD_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold'],\n tag: '**',\n}\n\nexport const BOLD_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold'],\n intraword: false,\n tag: '__',\n}\n\nexport const STRIKETHROUGH: TextFormatTransformer = {\n type: 'text-format',\n format: ['strikethrough'],\n tag: '~~',\n}\n\nexport const ITALIC_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['italic'],\n tag: '*',\n}\n\nexport const ITALIC_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['italic'],\n intraword: false,\n tag: '_',\n}\n\nexport function normalizeMarkdown(input: string, shouldMergeAdjacentLines: boolean): string {\n const lines = input.split('\\n')\n let inCodeBlock = false\n const sanitizedLines: string[] = []\n let nestedDeepCodeBlock = 0\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]!\n const lastLine = sanitizedLines[sanitizedLines.length - 1]\n\n // Code blocks of ```single line``` don't toggle the inCodeBlock flag\n if (CODE_SINGLE_LINE_REGEX.test(line)) {\n sanitizedLines.push(line)\n continue\n }\n\n if (CODE_END_REGEX.test(line)) {\n if (nestedDeepCodeBlock === 0) {\n inCodeBlock = true\n }\n if (nestedDeepCodeBlock === 1) {\n inCodeBlock = false\n }\n if (nestedDeepCodeBlock > 0) {\n nestedDeepCodeBlock--\n }\n sanitizedLines.push(line)\n continue\n }\n\n // Toggle inCodeBlock state when encountering start or end of a code block\n if (CODE_START_REGEX.test(line)) {\n inCodeBlock = true\n nestedDeepCodeBlock++\n sanitizedLines.push(line)\n continue\n }\n\n // If we are inside a code block, keep the line unchanged\n if (inCodeBlock) {\n sanitizedLines.push(line)\n continue\n }\n\n // In markdown the concept of \"empty paragraphs\" does not exist.\n // Blocks must be separated by an empty line. Non-empty adjacent lines must be merged.\n if (\n EMPTY_OR_WHITESPACE_ONLY.test(line) ||\n EMPTY_OR_WHITESPACE_ONLY.test(lastLine!) ||\n !lastLine ||\n HEADING_REGEX.test(lastLine) ||\n HEADING_REGEX.test(line) ||\n QUOTE_REGEX.test(line) ||\n ORDERED_LIST_REGEX.test(line) ||\n UNORDERED_LIST_REGEX.test(line) ||\n CHECK_LIST_REGEX.test(line) ||\n TABLE_ROW_REG_EXP.test(line) ||\n TABLE_ROW_DIVIDER_REG_EXP.test(line) ||\n !shouldMergeAdjacentLines ||\n TAG_START_REGEX.test(line) ||\n TAG_END_REGEX.test(line) ||\n TAG_START_REGEX.test(lastLine) ||\n TAG_END_REGEX.test(lastLine) ||\n CODE_END_REGEX.test(lastLine)\n ) {\n sanitizedLines.push(line)\n } else {\n sanitizedLines[sanitizedLines.length - 1] = lastLine + ' ' + line.trim()\n }\n }\n\n return sanitizedLines.join('\\n')\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,91 +4,88 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- */ import { PUNCTUATION_OR_SPACE } from './utils.js';
7
+ */import { PUNCTUATION_OR_SPACE } from './utils.js';
8
8
  export function findOutermostTextFormatTransformer(textNode, textFormatTransformersIndex) {
9
- const textContent = textNode.getTextContent();
10
- const match = findOutermostMatch(textContent, textFormatTransformersIndex);
11
- if (!match) {
12
- return null;
13
- }
14
- const textFormatMatchStart = match.index || 0;
15
- const textFormatMatchEnd = textFormatMatchStart + match[0].length;
16
- // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
17
- const transformer = textFormatTransformersIndex.transformersByTag[match[1]];
18
- return {
19
- endIndex: textFormatMatchEnd,
20
- match,
21
- startIndex: textFormatMatchStart,
22
- transformer
23
- };
9
+ const textContent = textNode.getTextContent();
10
+ const match = findOutermostMatch(textContent, textFormatTransformersIndex);
11
+ if (!match) {
12
+ return null;
13
+ }
14
+ const textFormatMatchStart = match.index || 0;
15
+ const textFormatMatchEnd = textFormatMatchStart + match[0].length;
16
+ // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve
17
+ const transformer = textFormatTransformersIndex.transformersByTag[match[1]];
18
+ return {
19
+ endIndex: textFormatMatchEnd,
20
+ match,
21
+ startIndex: textFormatMatchStart,
22
+ transformer
23
+ };
24
24
  }
25
25
  // Finds first "<tag>content<tag>" match that is not nested into another tag
26
26
  function findOutermostMatch(textContent, textTransformersIndex) {
27
- const openTagsMatch = textContent.match(textTransformersIndex.openTagsRegExp);
28
- if (openTagsMatch == null) {
29
- return null;
27
+ const openTagsMatch = textContent.match(textTransformersIndex.openTagsRegExp);
28
+ if (openTagsMatch == null) {
29
+ return null;
30
+ }
31
+ for (const match of openTagsMatch) {
32
+ // Open tags reg exp might capture leading space so removing it
33
+ // before using match to find transformer
34
+ const tag = match.replace(/^\s/, '');
35
+ const fullMatchRegExp = textTransformersIndex.fullMatchRegExpByTag[tag];
36
+ if (fullMatchRegExp == null) {
37
+ continue;
30
38
  }
31
- for (const match of openTagsMatch){
32
- // Open tags reg exp might capture leading space so removing it
33
- // before using match to find transformer
34
- const tag = match.replace(/^\s/, '');
35
- const fullMatchRegExp = textTransformersIndex.fullMatchRegExpByTag[tag];
36
- if (fullMatchRegExp == null) {
37
- continue;
38
- }
39
- const fullMatch = textContent.match(fullMatchRegExp);
40
- const transformer = textTransformersIndex.transformersByTag[tag];
41
- if (fullMatch != null && transformer != null) {
42
- if (transformer.intraword !== false) {
43
- return fullMatch;
44
- }
45
- // For non-intraword transformers checking if it's within a word
46
- // or surrounded with space/punctuation/newline
47
- const { index = 0 } = fullMatch;
48
- const beforeChar = textContent[index - 1];
49
- const afterChar = textContent[index + fullMatch[0].length];
50
- if ((!beforeChar || PUNCTUATION_OR_SPACE.test(beforeChar)) && (!afterChar || PUNCTUATION_OR_SPACE.test(afterChar))) {
51
- return fullMatch;
52
- }
53
- }
39
+ const fullMatch = textContent.match(fullMatchRegExp);
40
+ const transformer = textTransformersIndex.transformersByTag[tag];
41
+ if (fullMatch != null && transformer != null) {
42
+ if (transformer.intraword !== false) {
43
+ return fullMatch;
44
+ }
45
+ // For non-intraword transformers checking if it's within a word
46
+ // or surrounded with space/punctuation/newline
47
+ const {
48
+ index = 0
49
+ } = fullMatch;
50
+ const beforeChar = textContent[index - 1];
51
+ const afterChar = textContent[index + fullMatch[0].length];
52
+ if ((!beforeChar || PUNCTUATION_OR_SPACE.test(beforeChar)) && (!afterChar || PUNCTUATION_OR_SPACE.test(afterChar))) {
53
+ return fullMatch;
54
+ }
54
55
  }
55
- return null;
56
+ }
57
+ return null;
56
58
  }
57
- export function importTextFormatTransformer(textNode, startIndex, endIndex, transformer, match) // If split
58
- // If split
59
- {
60
- const textContent = textNode.getTextContent();
61
- // No text matches - we can safely process the text format match
62
- let nodeAfter;
63
- let nodeBefore;
64
- let transformedNode;
65
- // If matching full content there's no need to run splitText and can reuse existing textNode
66
- // to update its content and apply format. E.g. for **_Hello_** string after applying bold
67
- // format (**) it will reuse the same text node to apply italic (_)
68
- if (match[0] === textContent) {
69
- transformedNode = textNode;
59
+ export function importTextFormatTransformer(textNode, startIndex, endIndex, transformer, match) {
60
+ const textContent = textNode.getTextContent();
61
+ // No text matches - we can safely process the text format match
62
+ let nodeAfter;
63
+ let nodeBefore;
64
+ let transformedNode;
65
+ // If matching full content there's no need to run splitText and can reuse existing textNode
66
+ // to update its content and apply format. E.g. for **_Hello_** string after applying bold
67
+ // format (**) it will reuse the same text node to apply italic (_)
68
+ if (match[0] === textContent) {
69
+ transformedNode = textNode;
70
+ } else {
71
+ if (startIndex === 0) {
72
+ [transformedNode, nodeAfter] = textNode.splitText(endIndex);
70
73
  } else {
71
- if (startIndex === 0) {
72
- ;
73
- [transformedNode, nodeAfter] = textNode.splitText(endIndex);
74
- } else {
75
- ;
76
- [nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex);
77
- }
74
+ [nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex);
78
75
  }
79
- transformedNode.setTextContent(match[2]);
80
- if (transformer) {
81
- for (const format of transformer.format){
82
- if (!transformedNode.hasFormat(format)) {
83
- transformedNode.toggleFormat(format);
84
- }
85
- }
76
+ }
77
+ transformedNode.setTextContent(match[2]);
78
+ if (transformer) {
79
+ for (const format of transformer.format) {
80
+ if (!transformedNode.hasFormat(format)) {
81
+ transformedNode.toggleFormat(format);
82
+ }
86
83
  }
87
- return {
88
- nodeAfter,
89
- nodeBefore,
90
- transformedNode
91
- };
84
+ }
85
+ return {
86
+ nodeAfter,
87
+ nodeBefore,
88
+ transformedNode
89
+ };
92
90
  }
93
-
94
91
  //# sourceMappingURL=importTextFormatTransformer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/packages/@lexical/markdown/importTextFormatTransformer.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { TextNode } from 'lexical'\n\nimport type { TextFormatTransformersIndex } from './MarkdownImport.js'\nimport type { TextFormatTransformer } from './MarkdownTransformers.js'\n\nimport { PUNCTUATION_OR_SPACE } from './utils.js'\n\nexport function findOutermostTextFormatTransformer(\n textNode: TextNode,\n textFormatTransformersIndex: TextFormatTransformersIndex,\n): {\n endIndex: number\n match: RegExpMatchArray\n startIndex: number\n transformer: TextFormatTransformer\n} | null {\n const textContent = textNode.getTextContent()\n const match = findOutermostMatch(textContent, textFormatTransformersIndex)\n\n if (!match) {\n return null\n }\n\n const textFormatMatchStart: number = match.index || 0\n const textFormatMatchEnd = textFormatMatchStart + match[0].length\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n const transformer: TextFormatTransformer = textFormatTransformersIndex.transformersByTag[match[1]]\n\n return {\n endIndex: textFormatMatchEnd,\n match,\n startIndex: textFormatMatchStart,\n transformer,\n }\n}\n\n// Finds first \"<tag>content<tag>\" match that is not nested into another tag\nfunction findOutermostMatch(\n textContent: string,\n textTransformersIndex: TextFormatTransformersIndex,\n): null | RegExpMatchArray {\n const openTagsMatch = textContent.match(textTransformersIndex.openTagsRegExp)\n\n if (openTagsMatch == null) {\n return null\n }\n\n for (const match of openTagsMatch) {\n // Open tags reg exp might capture leading space so removing it\n // before using match to find transformer\n const tag = match.replace(/^\\s/, '')\n const fullMatchRegExp = textTransformersIndex.fullMatchRegExpByTag[tag]\n if (fullMatchRegExp == null) {\n continue\n }\n\n const fullMatch = textContent.match(fullMatchRegExp)\n const transformer = textTransformersIndex.transformersByTag[tag]\n if (fullMatch != null && transformer != null) {\n if (transformer.intraword !== false) {\n return fullMatch\n }\n\n // For non-intraword transformers checking if it's within a word\n // or surrounded with space/punctuation/newline\n const { index = 0 } = fullMatch\n const beforeChar = textContent[index - 1]\n const afterChar = textContent[index + fullMatch[0].length]\n\n if (\n (!beforeChar || PUNCTUATION_OR_SPACE.test(beforeChar)) &&\n (!afterChar || PUNCTUATION_OR_SPACE.test(afterChar))\n ) {\n return fullMatch\n }\n }\n }\n\n return null\n}\n\nexport function importTextFormatTransformer(\n textNode: TextNode,\n startIndex: number,\n endIndex: number,\n transformer: TextFormatTransformer,\n match: RegExpMatchArray,\n): {\n nodeAfter: TextNode | undefined // If split\n nodeBefore: TextNode | undefined // If split\n transformedNode: TextNode\n} {\n const textContent = textNode.getTextContent()\n\n // No text matches - we can safely process the text format match\n let nodeAfter: TextNode | undefined\n let nodeBefore: TextNode | undefined\n let transformedNode: TextNode\n\n // If matching full content there's no need to run splitText and can reuse existing textNode\n // to update its content and apply format. E.g. for **_Hello_** string after applying bold\n // format (**) it will reuse the same text node to apply italic (_)\n if (match[0] === textContent) {\n transformedNode = textNode\n } else {\n if (startIndex === 0) {\n ;[transformedNode, nodeAfter] = textNode.splitText(endIndex) as [\n TextNode,\n TextNode | undefined,\n ]\n } else {\n ;[nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex) as [\n TextNode,\n TextNode,\n TextNode | undefined,\n ]\n }\n }\n\n transformedNode.setTextContent(match[2]!)\n if (transformer) {\n for (const format of transformer.format) {\n if (!transformedNode.hasFormat(format)) {\n transformedNode.toggleFormat(format)\n }\n }\n }\n\n return {\n nodeAfter,\n nodeBefore,\n transformedNode,\n }\n}\n"],"names":["PUNCTUATION_OR_SPACE","findOutermostTextFormatTransformer","textNode","textFormatTransformersIndex","textContent","getTextContent","match","findOutermostMatch","textFormatMatchStart","index","textFormatMatchEnd","length","transformer","transformersByTag","endIndex","startIndex","textTransformersIndex","openTagsMatch","openTagsRegExp","tag","replace","fullMatchRegExp","fullMatchRegExpByTag","fullMatch","intraword","beforeChar","afterChar","test","importTextFormatTransformer","nodeAfter","nodeBefore","transformedNode","splitText","setTextContent","format","hasFormat","toggleFormat"],"mappings":"AAAA;;;;;;CAMC,GAOD,SAASA,oBAAoB,QAAQ,aAAY;AAEjD,OAAO,SAASC,mCACdC,QAAkB,EAClBC,2BAAwD;IAOxD,MAAMC,cAAcF,SAASG,cAAc;IAC3C,MAAMC,QAAQC,mBAAmBH,aAAaD;IAE9C,IAAI,CAACG,OAAO;QACV,OAAO;IACT;IAEA,MAAME,uBAA+BF,MAAMG,KAAK,IAAI;IACpD,MAAMC,qBAAqBF,uBAAuBF,KAAK,CAAC,EAAE,CAACK,MAAM;IAEjE,oFAAoF;IACpF,MAAMC,cAAqCT,4BAA4BU,iBAAiB,CAACP,KAAK,CAAC,EAAE,CAAC;IAElG,OAAO;QACLQ,UAAUJ;QACVJ;QACAS,YAAYP;QACZI;IACF;AACF;AAEA,4EAA4E;AAC5E,SAASL,mBACPH,WAAmB,EACnBY,qBAAkD;IAElD,MAAMC,gBAAgBb,YAAYE,KAAK,CAACU,sBAAsBE,cAAc;IAE5E,IAAID,iBAAiB,MAAM;QACzB,OAAO;IACT;IAEA,KAAK,MAAMX,SAASW,cAAe;QACjC,+DAA+D;QAC/D,yCAAyC;QACzC,MAAME,MAAMb,MAAMc,OAAO,CAAC,OAAO;QACjC,MAAMC,kBAAkBL,sBAAsBM,oBAAoB,CAACH,IAAI;QACvE,IAAIE,mBAAmB,MAAM;YAC3B;QACF;QAEA,MAAME,YAAYnB,YAAYE,KAAK,CAACe;QACpC,MAAMT,cAAcI,sBAAsBH,iBAAiB,CAACM,IAAI;QAChE,IAAII,aAAa,QAAQX,eAAe,MAAM;YAC5C,IAAIA,YAAYY,SAAS,KAAK,OAAO;gBACnC,OAAOD;YACT;YAEA,gEAAgE;YAChE,+CAA+C;YAC/C,MAAM,EAAEd,QAAQ,CAAC,EAAE,GAAGc;YACtB,MAAME,aAAarB,WAAW,CAACK,QAAQ,EAAE;YACzC,MAAMiB,YAAYtB,WAAW,CAACK,QAAQc,SAAS,CAAC,EAAE,CAACZ,MAAM,CAAC;YAE1D,IACE,AAAC,CAAA,CAACc,cAAczB,qBAAqB2B,IAAI,CAACF,WAAU,KACnD,CAAA,CAACC,aAAa1B,qBAAqB2B,IAAI,CAACD,UAAS,GAClD;gBACA,OAAOH;YACT;QACF;IACF;IAEA,OAAO;AACT;AAEA,OAAO,SAASK,4BACd1B,QAAkB,EAClBa,UAAkB,EAClBD,QAAgB,EAChBF,WAAkC,EAClCN,KAAuB,EAES,WAAW;AACV,WAAW;;IAG5C,MAAMF,cAAcF,SAASG,cAAc;IAE3C,gEAAgE;IAChE,IAAIwB;IACJ,IAAIC;IACJ,IAAIC;IAEJ,4FAA4F;IAC5F,0FAA0F;IAC1F,mEAAmE;IACnE,IAAIzB,KAAK,CAAC,EAAE,KAAKF,aAAa;QAC5B2B,kBAAkB7B;IACpB,OAAO;QACL,IAAIa,eAAe,GAAG;;YACnB,CAACgB,iBAAiBF,UAAU,GAAG3B,SAAS8B,SAAS,CAAClB;QAIrD,OAAO;;YACJ,CAACgB,YAAYC,iBAAiBF,UAAU,GAAG3B,SAAS8B,SAAS,CAACjB,YAAYD;QAK7E;IACF;IAEAiB,gBAAgBE,cAAc,CAAC3B,KAAK,CAAC,EAAE;IACvC,IAAIM,aAAa;QACf,KAAK,MAAMsB,UAAUtB,YAAYsB,MAAM,CAAE;YACvC,IAAI,CAACH,gBAAgBI,SAAS,CAACD,SAAS;gBACtCH,gBAAgBK,YAAY,CAACF;YAC/B;QACF;IACF;IAEA,OAAO;QACLL;QACAC;QACAC;IACF;AACF"}
1
+ {"version":3,"file":"importTextFormatTransformer.js","names":["PUNCTUATION_OR_SPACE","findOutermostTextFormatTransformer","textNode","textFormatTransformersIndex","textContent","getTextContent","match","findOutermostMatch","textFormatMatchStart","index","textFormatMatchEnd","length","transformer","transformersByTag","endIndex","startIndex","textTransformersIndex","openTagsMatch","openTagsRegExp","tag","replace","fullMatchRegExp","fullMatchRegExpByTag","fullMatch","intraword","beforeChar","afterChar","test","importTextFormatTransformer","nodeAfter","nodeBefore","transformedNode","splitText","setTextContent","format","hasFormat","toggleFormat"],"sources":["../../../../src/packages/@lexical/markdown/importTextFormatTransformer.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { TextNode } from 'lexical'\n\nimport type { TextFormatTransformersIndex } from './MarkdownImport.js'\nimport type { TextFormatTransformer } from './MarkdownTransformers.js'\n\nimport { PUNCTUATION_OR_SPACE } from './utils.js'\n\nexport function findOutermostTextFormatTransformer(\n textNode: TextNode,\n textFormatTransformersIndex: TextFormatTransformersIndex,\n): {\n endIndex: number\n match: RegExpMatchArray\n startIndex: number\n transformer: TextFormatTransformer\n} | null {\n const textContent = textNode.getTextContent()\n const match = findOutermostMatch(textContent, textFormatTransformersIndex)\n\n if (!match) {\n return null\n }\n\n const textFormatMatchStart: number = match.index || 0\n const textFormatMatchEnd = textFormatMatchStart + match[0].length\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n const transformer: TextFormatTransformer = textFormatTransformersIndex.transformersByTag[match[1]]\n\n return {\n endIndex: textFormatMatchEnd,\n match,\n startIndex: textFormatMatchStart,\n transformer,\n }\n}\n\n// Finds first \"<tag>content<tag>\" match that is not nested into another tag\nfunction findOutermostMatch(\n textContent: string,\n textTransformersIndex: TextFormatTransformersIndex,\n): null | RegExpMatchArray {\n const openTagsMatch = textContent.match(textTransformersIndex.openTagsRegExp)\n\n if (openTagsMatch == null) {\n return null\n }\n\n for (const match of openTagsMatch) {\n // Open tags reg exp might capture leading space so removing it\n // before using match to find transformer\n const tag = match.replace(/^\\s/, '')\n const fullMatchRegExp = textTransformersIndex.fullMatchRegExpByTag[tag]\n if (fullMatchRegExp == null) {\n continue\n }\n\n const fullMatch = textContent.match(fullMatchRegExp)\n const transformer = textTransformersIndex.transformersByTag[tag]\n if (fullMatch != null && transformer != null) {\n if (transformer.intraword !== false) {\n return fullMatch\n }\n\n // For non-intraword transformers checking if it's within a word\n // or surrounded with space/punctuation/newline\n const { index = 0 } = fullMatch\n const beforeChar = textContent[index - 1]\n const afterChar = textContent[index + fullMatch[0].length]\n\n if (\n (!beforeChar || PUNCTUATION_OR_SPACE.test(beforeChar)) &&\n (!afterChar || PUNCTUATION_OR_SPACE.test(afterChar))\n ) {\n return fullMatch\n }\n }\n }\n\n return null\n}\n\nexport function importTextFormatTransformer(\n textNode: TextNode,\n startIndex: number,\n endIndex: number,\n transformer: TextFormatTransformer,\n match: RegExpMatchArray,\n): {\n nodeAfter: TextNode | undefined // If split\n nodeBefore: TextNode | undefined // If split\n transformedNode: TextNode\n} {\n const textContent = textNode.getTextContent()\n\n // No text matches - we can safely process the text format match\n let nodeAfter: TextNode | undefined\n let nodeBefore: TextNode | undefined\n let transformedNode: TextNode\n\n // If matching full content there's no need to run splitText and can reuse existing textNode\n // to update its content and apply format. E.g. for **_Hello_** string after applying bold\n // format (**) it will reuse the same text node to apply italic (_)\n if (match[0] === textContent) {\n transformedNode = textNode\n } else {\n if (startIndex === 0) {\n ;[transformedNode, nodeAfter] = textNode.splitText(endIndex) as [\n TextNode,\n TextNode | undefined,\n ]\n } else {\n ;[nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex) as [\n TextNode,\n TextNode,\n TextNode | undefined,\n ]\n }\n }\n\n transformedNode.setTextContent(match[2]!)\n if (transformer) {\n for (const format of transformer.format) {\n if (!transformedNode.hasFormat(format)) {\n transformedNode.toggleFormat(format)\n }\n }\n }\n\n return {\n nodeAfter,\n nodeBefore,\n transformedNode,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,65 +1,54 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */ export function findOutermostTextMatchTransformer(textNode_, textMatchTransformers) {
8
- const textNode = textNode_;
9
- let foundMatchStartIndex = undefined;
10
- let foundMatchEndIndex = undefined;
11
- let foundMatchTransformer = undefined;
12
- let foundMatch = undefined;
13
- for (const transformer of textMatchTransformers){
14
- if (!transformer.replace || !transformer.importRegExp) {
15
- continue;
16
- }
17
- const match = textNode.getTextContent().match(transformer.importRegExp);
18
- if (!match) {
19
- continue;
20
- }
21
- const startIndex = match.index || 0;
22
- const endIndex = transformer.getEndIndex ? transformer.getEndIndex(textNode, match) : startIndex + match[0].length;
23
- if (endIndex === false) {
24
- continue;
25
- }
26
- if (foundMatchStartIndex === undefined || foundMatchEndIndex === undefined || startIndex < foundMatchStartIndex && endIndex > foundMatchEndIndex) {
27
- foundMatchStartIndex = startIndex;
28
- foundMatchEndIndex = endIndex;
29
- foundMatchTransformer = transformer;
30
- foundMatch = match;
31
- }
1
+ export function findOutermostTextMatchTransformer(textNode_, textMatchTransformers) {
2
+ const textNode = textNode_;
3
+ let foundMatchStartIndex = undefined;
4
+ let foundMatchEndIndex = undefined;
5
+ let foundMatchTransformer = undefined;
6
+ let foundMatch = undefined;
7
+ for (const transformer of textMatchTransformers) {
8
+ if (!transformer.replace || !transformer.importRegExp) {
9
+ continue;
32
10
  }
33
- if (foundMatchStartIndex === undefined || foundMatchEndIndex === undefined || foundMatchTransformer === undefined || foundMatch === undefined) {
34
- return null;
11
+ const match = textNode.getTextContent().match(transformer.importRegExp);
12
+ if (!match) {
13
+ continue;
35
14
  }
36
- return {
37
- endIndex: foundMatchEndIndex,
38
- match: foundMatch,
39
- startIndex: foundMatchStartIndex,
40
- transformer: foundMatchTransformer
41
- };
42
- }
43
- export function importFoundTextMatchTransformer(textNode, startIndex, endIndex, transformer, match) // If split
44
- // If split
45
- {
46
- let nodeAfter, nodeBefore, transformedNode;
47
- if (startIndex === 0) {
48
- ;
49
- [transformedNode, nodeAfter] = textNode.splitText(endIndex);
50
- } else {
51
- ;
52
- [nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex);
15
+ const startIndex = match.index || 0;
16
+ const endIndex = transformer.getEndIndex ? transformer.getEndIndex(textNode, match) : startIndex + match[0].length;
17
+ if (endIndex === false) {
18
+ continue;
53
19
  }
54
- if (!transformer.replace) {
55
- return null;
20
+ if (foundMatchStartIndex === undefined || foundMatchEndIndex === undefined || startIndex < foundMatchStartIndex && endIndex > foundMatchEndIndex) {
21
+ foundMatchStartIndex = startIndex;
22
+ foundMatchEndIndex = endIndex;
23
+ foundMatchTransformer = transformer;
24
+ foundMatch = match;
56
25
  }
57
- const potentialTransformedNode = transformedNode ? transformer.replace(transformedNode, match) : undefined;
58
- return {
59
- nodeAfter,
60
- nodeBefore,
61
- transformedNode: potentialTransformedNode || undefined
62
- };
26
+ }
27
+ if (foundMatchStartIndex === undefined || foundMatchEndIndex === undefined || foundMatchTransformer === undefined || foundMatch === undefined) {
28
+ return null;
29
+ }
30
+ return {
31
+ endIndex: foundMatchEndIndex,
32
+ match: foundMatch,
33
+ startIndex: foundMatchStartIndex,
34
+ transformer: foundMatchTransformer
35
+ };
36
+ }
37
+ export function importFoundTextMatchTransformer(textNode, startIndex, endIndex, transformer, match) {
38
+ let nodeAfter, nodeBefore, transformedNode;
39
+ if (startIndex === 0) {
40
+ [transformedNode, nodeAfter] = textNode.splitText(endIndex);
41
+ } else {
42
+ [nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex);
43
+ }
44
+ if (!transformer.replace) {
45
+ return null;
46
+ }
47
+ const potentialTransformedNode = transformedNode ? transformer.replace(transformedNode, match) : undefined;
48
+ return {
49
+ nodeAfter,
50
+ nodeBefore,
51
+ transformedNode: potentialTransformedNode || undefined
52
+ };
63
53
  }
64
-
65
54
  //# sourceMappingURL=importTextMatchTransformer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/packages/@lexical/markdown/importTextMatchTransformer.ts"],"sourcesContent":["import { type TextNode } from 'lexical'\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport type { TextMatchTransformer } from './MarkdownTransformers.js'\n\nexport function findOutermostTextMatchTransformer(\n textNode_: TextNode,\n textMatchTransformers: Array<TextMatchTransformer>,\n): {\n endIndex: number\n match: RegExpMatchArray\n startIndex: number\n transformer: TextMatchTransformer\n} | null {\n const textNode = textNode_\n\n let foundMatchStartIndex: number | undefined = undefined\n let foundMatchEndIndex: number | undefined = undefined\n let foundMatchTransformer: TextMatchTransformer | undefined = undefined\n let foundMatch: RegExpMatchArray | undefined = undefined\n\n for (const transformer of textMatchTransformers) {\n if (!transformer.replace || !transformer.importRegExp) {\n continue\n }\n const match = textNode.getTextContent().match(transformer.importRegExp)\n\n if (!match) {\n continue\n }\n\n const startIndex = match.index || 0\n const endIndex = transformer.getEndIndex\n ? transformer.getEndIndex(textNode, match)\n : startIndex + match[0].length\n\n if (endIndex === false) {\n continue\n }\n\n if (\n foundMatchStartIndex === undefined ||\n foundMatchEndIndex === undefined ||\n (startIndex < foundMatchStartIndex && endIndex > foundMatchEndIndex)\n ) {\n foundMatchStartIndex = startIndex\n foundMatchEndIndex = endIndex\n foundMatchTransformer = transformer\n foundMatch = match\n }\n }\n\n if (\n foundMatchStartIndex === undefined ||\n foundMatchEndIndex === undefined ||\n foundMatchTransformer === undefined ||\n foundMatch === undefined\n ) {\n return null\n }\n\n return {\n endIndex: foundMatchEndIndex,\n match: foundMatch,\n startIndex: foundMatchStartIndex,\n transformer: foundMatchTransformer,\n }\n}\n\nexport function importFoundTextMatchTransformer(\n textNode: TextNode,\n startIndex: number,\n endIndex: number,\n transformer: TextMatchTransformer,\n match: RegExpMatchArray,\n): {\n nodeAfter: TextNode | undefined // If split\n nodeBefore: TextNode | undefined // If split\n transformedNode?: TextNode\n} | null {\n let nodeAfter, nodeBefore, transformedNode\n\n if (startIndex === 0) {\n ;[transformedNode, nodeAfter] = textNode.splitText(endIndex)\n } else {\n ;[nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex)\n }\n\n if (!transformer.replace) {\n return null\n }\n const potentialTransformedNode = transformedNode\n ? transformer.replace(transformedNode, match)\n : undefined\n\n return {\n nodeAfter,\n nodeBefore,\n transformedNode: potentialTransformedNode || undefined,\n }\n}\n"],"names":["findOutermostTextMatchTransformer","textNode_","textMatchTransformers","textNode","foundMatchStartIndex","undefined","foundMatchEndIndex","foundMatchTransformer","foundMatch","transformer","replace","importRegExp","match","getTextContent","startIndex","index","endIndex","getEndIndex","length","importFoundTextMatchTransformer","nodeAfter","nodeBefore","transformedNode","splitText","potentialTransformedNode"],"mappings":"AAEA;;;;;;CAMC,GAGD,OAAO,SAASA,kCACdC,SAAmB,EACnBC,qBAAkD;IAOlD,MAAMC,WAAWF;IAEjB,IAAIG,uBAA2CC;IAC/C,IAAIC,qBAAyCD;IAC7C,IAAIE,wBAA0DF;IAC9D,IAAIG,aAA2CH;IAE/C,KAAK,MAAMI,eAAeP,sBAAuB;QAC/C,IAAI,CAACO,YAAYC,OAAO,IAAI,CAACD,YAAYE,YAAY,EAAE;YACrD;QACF;QACA,MAAMC,QAAQT,SAASU,cAAc,GAAGD,KAAK,CAACH,YAAYE,YAAY;QAEtE,IAAI,CAACC,OAAO;YACV;QACF;QAEA,MAAME,aAAaF,MAAMG,KAAK,IAAI;QAClC,MAAMC,WAAWP,YAAYQ,WAAW,GACpCR,YAAYQ,WAAW,CAACd,UAAUS,SAClCE,aAAaF,KAAK,CAAC,EAAE,CAACM,MAAM;QAEhC,IAAIF,aAAa,OAAO;YACtB;QACF;QAEA,IACEZ,yBAAyBC,aACzBC,uBAAuBD,aACtBS,aAAaV,wBAAwBY,WAAWV,oBACjD;YACAF,uBAAuBU;YACvBR,qBAAqBU;YACrBT,wBAAwBE;YACxBD,aAAaI;QACf;IACF;IAEA,IACER,yBAAyBC,aACzBC,uBAAuBD,aACvBE,0BAA0BF,aAC1BG,eAAeH,WACf;QACA,OAAO;IACT;IAEA,OAAO;QACLW,UAAUV;QACVM,OAAOJ;QACPM,YAAYV;QACZK,aAAaF;IACf;AACF;AAEA,OAAO,SAASY,gCACdhB,QAAkB,EAClBW,UAAkB,EAClBE,QAAgB,EAChBP,WAAiC,EACjCG,KAAuB,EAES,WAAW;AACV,WAAW;;IAG5C,IAAIQ,WAAWC,YAAYC;IAE3B,IAAIR,eAAe,GAAG;;QACnB,CAACQ,iBAAiBF,UAAU,GAAGjB,SAASoB,SAAS,CAACP;IACrD,OAAO;;QACJ,CAACK,YAAYC,iBAAiBF,UAAU,GAAGjB,SAASoB,SAAS,CAACT,YAAYE;IAC7E;IAEA,IAAI,CAACP,YAAYC,OAAO,EAAE;QACxB,OAAO;IACT;IACA,MAAMc,2BAA2BF,kBAC7Bb,YAAYC,OAAO,CAACY,iBAAiBV,SACrCP;IAEJ,OAAO;QACLe;QACAC;QACAC,iBAAiBE,4BAA4BnB;IAC/C;AACF"}
1
+ {"version":3,"file":"importTextMatchTransformer.js","names":["findOutermostTextMatchTransformer","textNode_","textMatchTransformers","textNode","foundMatchStartIndex","undefined","foundMatchEndIndex","foundMatchTransformer","foundMatch","transformer","replace","importRegExp","match","getTextContent","startIndex","index","endIndex","getEndIndex","length","importFoundTextMatchTransformer","nodeAfter","nodeBefore","transformedNode","splitText","potentialTransformedNode"],"sources":["../../../../src/packages/@lexical/markdown/importTextMatchTransformer.ts"],"sourcesContent":["import { type TextNode } from 'lexical'\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport type { TextMatchTransformer } from './MarkdownTransformers.js'\n\nexport function findOutermostTextMatchTransformer(\n textNode_: TextNode,\n textMatchTransformers: Array<TextMatchTransformer>,\n): {\n endIndex: number\n match: RegExpMatchArray\n startIndex: number\n transformer: TextMatchTransformer\n} | null {\n const textNode = textNode_\n\n let foundMatchStartIndex: number | undefined = undefined\n let foundMatchEndIndex: number | undefined = undefined\n let foundMatchTransformer: TextMatchTransformer | undefined = undefined\n let foundMatch: RegExpMatchArray | undefined = undefined\n\n for (const transformer of textMatchTransformers) {\n if (!transformer.replace || !transformer.importRegExp) {\n continue\n }\n const match = textNode.getTextContent().match(transformer.importRegExp)\n\n if (!match) {\n continue\n }\n\n const startIndex = match.index || 0\n const endIndex = transformer.getEndIndex\n ? transformer.getEndIndex(textNode, match)\n : startIndex + match[0].length\n\n if (endIndex === false) {\n continue\n }\n\n if (\n foundMatchStartIndex === undefined ||\n foundMatchEndIndex === undefined ||\n (startIndex < foundMatchStartIndex && endIndex > foundMatchEndIndex)\n ) {\n foundMatchStartIndex = startIndex\n foundMatchEndIndex = endIndex\n foundMatchTransformer = transformer\n foundMatch = match\n }\n }\n\n if (\n foundMatchStartIndex === undefined ||\n foundMatchEndIndex === undefined ||\n foundMatchTransformer === undefined ||\n foundMatch === undefined\n ) {\n return null\n }\n\n return {\n endIndex: foundMatchEndIndex,\n match: foundMatch,\n startIndex: foundMatchStartIndex,\n transformer: foundMatchTransformer,\n }\n}\n\nexport function importFoundTextMatchTransformer(\n textNode: TextNode,\n startIndex: number,\n endIndex: number,\n transformer: TextMatchTransformer,\n match: RegExpMatchArray,\n): {\n nodeAfter: TextNode | undefined // If split\n nodeBefore: TextNode | undefined // If split\n transformedNode?: TextNode\n} | null {\n let nodeAfter, nodeBefore, transformedNode\n\n if (startIndex === 0) {\n ;[transformedNode, nodeAfter] = textNode.splitText(endIndex)\n } else {\n ;[nodeBefore, transformedNode, nodeAfter] = textNode.splitText(startIndex, endIndex)\n }\n\n if (!transformer.replace) {\n return null\n }\n const potentialTransformedNode = transformedNode\n ? transformer.replace(transformedNode, match)\n : undefined\n\n return {\n nodeAfter,\n nodeBefore,\n transformedNode: potentialTransformedNode || undefined,\n }\n}\n"],"mappings":"AAWA,OAAO,SAASA,kCACdC,SAAmB,EACnBC,qBAAkD;EAOlD,MAAMC,QAAA,GAAWF,SAAA;EAEjB,IAAIG,oBAAA,GAA2CC,SAAA;EAC/C,IAAIC,kBAAA,GAAyCD,SAAA;EAC7C,IAAIE,qBAAA,GAA0DF,SAAA;EAC9D,IAAIG,UAAA,GAA2CH,SAAA;EAE/C,KAAK,MAAMI,WAAA,IAAeP,qBAAA,EAAuB;IAC/C,IAAI,CAACO,WAAA,CAAYC,OAAO,IAAI,CAACD,WAAA,CAAYE,YAAY,EAAE;MACrD;IACF;IACA,MAAMC,KAAA,GAAQT,QAAA,CAASU,cAAc,GAAGD,KAAK,CAACH,WAAA,CAAYE,YAAY;IAEtE,IAAI,CAACC,KAAA,EAAO;MACV;IACF;IAEA,MAAME,UAAA,GAAaF,KAAA,CAAMG,KAAK,IAAI;IAClC,MAAMC,QAAA,GAAWP,WAAA,CAAYQ,WAAW,GACpCR,WAAA,CAAYQ,WAAW,CAACd,QAAA,EAAUS,KAAA,IAClCE,UAAA,GAAaF,KAAK,CAAC,EAAE,CAACM,MAAM;IAEhC,IAAIF,QAAA,KAAa,OAAO;MACtB;IACF;IAEA,IACEZ,oBAAA,KAAyBC,SAAA,IACzBC,kBAAA,KAAuBD,SAAA,IACtBS,UAAA,GAAaV,oBAAA,IAAwBY,QAAA,GAAWV,kBAAA,EACjD;MACAF,oBAAA,GAAuBU,UAAA;MACvBR,kBAAA,GAAqBU,QAAA;MACrBT,qBAAA,GAAwBE,WAAA;MACxBD,UAAA,GAAaI,KAAA;IACf;EACF;EAEA,IACER,oBAAA,KAAyBC,SAAA,IACzBC,kBAAA,KAAuBD,SAAA,IACvBE,qBAAA,KAA0BF,SAAA,IAC1BG,UAAA,KAAeH,SAAA,EACf;IACA,OAAO;EACT;EAEA,OAAO;IACLW,QAAA,EAAUV,kBAAA;IACVM,KAAA,EAAOJ,UAAA;IACPM,UAAA,EAAYV,oBAAA;IACZK,WAAA,EAAaF;EACf;AACF;AAEA,OAAO,SAASY,gCACdhB,QAAkB,EAClBW,UAAkB,EAClBE,QAAgB,EAChBP,WAAiC,EACjCG,KAAuB;EAMvB,IAAIQ,SAAA,EAAWC,UAAA,EAAYC,eAAA;EAE3B,IAAIR,UAAA,KAAe,GAAG;IACnB,CAACQ,eAAA,EAAiBF,SAAA,CAAU,GAAGjB,QAAA,CAASoB,SAAS,CAACP,QAAA;EACrD,OAAO;IACJ,CAACK,UAAA,EAAYC,eAAA,EAAiBF,SAAA,CAAU,GAAGjB,QAAA,CAASoB,SAAS,CAACT,UAAA,EAAYE,QAAA;EAC7E;EAEA,IAAI,CAACP,WAAA,CAAYC,OAAO,EAAE;IACxB,OAAO;EACT;EACA,MAAMc,wBAAA,GAA2BF,eAAA,GAC7Bb,WAAA,CAAYC,OAAO,CAACY,eAAA,EAAiBV,KAAA,IACrCP,SAAA;EAEJ,OAAO;IACLe,SAAA;IACAC,UAAA;IACAC,eAAA,EAAiBE,wBAAA,IAA4BnB;EAC/C;AACF","ignoreList":[]}
@@ -1,60 +1,54 @@
1
1
  import { $isTextNode } from 'lexical';
2
- /**
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- *
8
- */ import { findOutermostTextFormatTransformer, importTextFormatTransformer } from './importTextFormatTransformer.js';
2
+ import { findOutermostTextFormatTransformer, importTextFormatTransformer } from './importTextFormatTransformer.js';
9
3
  import { findOutermostTextMatchTransformer, importFoundTextMatchTransformer } from './importTextMatchTransformer.js';
10
4
  /**
11
5
  * Handles applying both text format and text match transformers.
12
6
  * It finds the outermost text format or text match and applies it,
13
7
  * then recursively calls itself to apply the next outermost transformer,
14
8
  * until there are no more transformers to apply.
15
- */ export function importTextTransformers(textNode, textFormatTransformersIndex, textMatchTransformers) {
16
- let foundTextFormat = findOutermostTextFormatTransformer(textNode, textFormatTransformersIndex);
17
- let foundTextMatch = findOutermostTextMatchTransformer(textNode, textMatchTransformers);
18
- if (foundTextFormat && foundTextMatch) {
19
- // Find the outermost transformer
20
- if (foundTextFormat.startIndex <= foundTextMatch.startIndex && foundTextFormat.endIndex >= foundTextMatch.endIndex) {
21
- // foundTextFormat wraps foundTextMatch - apply foundTextFormat by setting foundTextMatch to null
22
- foundTextMatch = null;
23
- } else {
24
- // foundTextMatch wraps foundTextFormat - apply foundTextMatch by setting foundTextFormat to null
25
- foundTextFormat = null;
26
- }
27
- }
28
- if (foundTextFormat) {
29
- const result = importTextFormatTransformer(textNode, foundTextFormat.startIndex, foundTextFormat.endIndex, foundTextFormat.transformer, foundTextFormat.match);
30
- if (result.nodeAfter && $isTextNode(result.nodeAfter) && !result.nodeAfter.hasFormat('code')) {
31
- importTextTransformers(result.nodeAfter, textFormatTransformersIndex, textMatchTransformers);
32
- }
33
- if (result.nodeBefore && $isTextNode(result.nodeBefore) && !result.nodeBefore.hasFormat('code')) {
34
- importTextTransformers(result.nodeBefore, textFormatTransformersIndex, textMatchTransformers);
35
- }
36
- if (result.transformedNode && $isTextNode(result.transformedNode) && !result.transformedNode.hasFormat('code')) {
37
- importTextTransformers(result.transformedNode, textFormatTransformersIndex, textMatchTransformers);
38
- }
39
- } else if (foundTextMatch) {
40
- const result = importFoundTextMatchTransformer(textNode, foundTextMatch.startIndex, foundTextMatch.endIndex, foundTextMatch.transformer, foundTextMatch.match);
41
- if (!result) {
42
- return;
43
- }
44
- if (result.nodeAfter && $isTextNode(result.nodeAfter) && !result.nodeAfter.hasFormat('code')) {
45
- importTextTransformers(result.nodeAfter, textFormatTransformersIndex, textMatchTransformers);
46
- }
47
- if (result.nodeBefore && $isTextNode(result.nodeBefore) && !result.nodeBefore.hasFormat('code')) {
48
- importTextTransformers(result.nodeBefore, textFormatTransformersIndex, textMatchTransformers);
49
- }
50
- if (result.transformedNode && $isTextNode(result.transformedNode) && !result.transformedNode.hasFormat('code')) {
51
- importTextTransformers(result.transformedNode, textFormatTransformersIndex, textMatchTransformers);
52
- }
53
- }
54
- // Handle escape characters
55
- const textContent = textNode.getTextContent();
56
- const escapedText = textContent.replace(/\\([*_`~])/g, '$1');
57
- textNode.setTextContent(escapedText);
9
+ */
10
+ export function importTextTransformers(textNode, textFormatTransformersIndex, textMatchTransformers) {
11
+ let foundTextFormat = findOutermostTextFormatTransformer(textNode, textFormatTransformersIndex);
12
+ let foundTextMatch = findOutermostTextMatchTransformer(textNode, textMatchTransformers);
13
+ if (foundTextFormat && foundTextMatch) {
14
+ // Find the outermost transformer
15
+ if (foundTextFormat.startIndex <= foundTextMatch.startIndex && foundTextFormat.endIndex >= foundTextMatch.endIndex) {
16
+ // foundTextFormat wraps foundTextMatch - apply foundTextFormat by setting foundTextMatch to null
17
+ foundTextMatch = null;
18
+ } else {
19
+ // foundTextMatch wraps foundTextFormat - apply foundTextMatch by setting foundTextFormat to null
20
+ foundTextFormat = null;
21
+ }
22
+ }
23
+ if (foundTextFormat) {
24
+ const result = importTextFormatTransformer(textNode, foundTextFormat.startIndex, foundTextFormat.endIndex, foundTextFormat.transformer, foundTextFormat.match);
25
+ if (result.nodeAfter && $isTextNode(result.nodeAfter) && !result.nodeAfter.hasFormat('code')) {
26
+ importTextTransformers(result.nodeAfter, textFormatTransformersIndex, textMatchTransformers);
27
+ }
28
+ if (result.nodeBefore && $isTextNode(result.nodeBefore) && !result.nodeBefore.hasFormat('code')) {
29
+ importTextTransformers(result.nodeBefore, textFormatTransformersIndex, textMatchTransformers);
30
+ }
31
+ if (result.transformedNode && $isTextNode(result.transformedNode) && !result.transformedNode.hasFormat('code')) {
32
+ importTextTransformers(result.transformedNode, textFormatTransformersIndex, textMatchTransformers);
33
+ }
34
+ } else if (foundTextMatch) {
35
+ const result = importFoundTextMatchTransformer(textNode, foundTextMatch.startIndex, foundTextMatch.endIndex, foundTextMatch.transformer, foundTextMatch.match);
36
+ if (!result) {
37
+ return;
38
+ }
39
+ if (result.nodeAfter && $isTextNode(result.nodeAfter) && !result.nodeAfter.hasFormat('code')) {
40
+ importTextTransformers(result.nodeAfter, textFormatTransformersIndex, textMatchTransformers);
41
+ }
42
+ if (result.nodeBefore && $isTextNode(result.nodeBefore) && !result.nodeBefore.hasFormat('code')) {
43
+ importTextTransformers(result.nodeBefore, textFormatTransformersIndex, textMatchTransformers);
44
+ }
45
+ if (result.transformedNode && $isTextNode(result.transformedNode) && !result.transformedNode.hasFormat('code')) {
46
+ importTextTransformers(result.transformedNode, textFormatTransformersIndex, textMatchTransformers);
47
+ }
48
+ }
49
+ // Handle escape characters
50
+ const textContent = textNode.getTextContent();
51
+ const escapedText = textContent.replace(/\\([*_`~])/g, '$1');
52
+ textNode.setTextContent(escapedText);
58
53
  }
59
-
60
54
  //# sourceMappingURL=importTextTransformers.js.map