@payloadcms/richtext-lexical 3.0.0-beta.53 → 3.0.0-beta.55

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 (727) hide show
  1. package/dist/cell/index.d.ts.map +1 -1
  2. package/dist/cell/index.js +1 -1
  3. package/dist/cell/index.js.map +1 -1
  4. package/dist/exports/client/Field-XBUN6QOM.js +2 -0
  5. package/dist/exports/client/Field-XBUN6QOM.js.map +7 -0
  6. package/dist/exports/client/{RelationshipComponent-5OU5HATX.js → RelationshipComponent-AFXEJMZQ.js} +2 -2
  7. package/dist/exports/client/bundled.css +1 -1
  8. package/dist/exports/client/{chunk-QU5MKT75.js → chunk-5RJS5YZT.js} +2 -2
  9. package/dist/exports/client/chunk-5RJS5YZT.js.map +7 -0
  10. package/dist/exports/client/chunk-JIP5PWU3.js +2 -0
  11. package/dist/exports/client/chunk-JIP5PWU3.js.map +7 -0
  12. package/dist/exports/client/{chunk-MLIITFAS.js → chunk-Q5DYR7MH.js} +2 -2
  13. package/dist/exports/client/chunk-Q5DYR7MH.js.map +7 -0
  14. package/dist/exports/client/{chunk-OSR74ZNW.js → chunk-YL52LJO3.js} +2 -2
  15. package/dist/exports/client/chunk-YL52LJO3.js.map +7 -0
  16. package/dist/exports/client/{component-E2NHAHBC.js → component-F6V63OLD.js} +2 -2
  17. package/dist/exports/client/component-F6V63OLD.js.map +7 -0
  18. package/dist/exports/client/component-PEFMKIXI.js +2 -0
  19. package/dist/exports/client/component-PEFMKIXI.js.map +7 -0
  20. package/dist/exports/client/{component-QWIGEOVD.js → component-VM36FRT2.js} +2 -2
  21. package/dist/exports/client/index.d.ts +37 -27
  22. package/dist/exports/client/index.d.ts.map +1 -1
  23. package/dist/exports/client/index.js +7 -5
  24. package/dist/exports/client/index.js.map +4 -4
  25. package/dist/features/align/feature.client.d.ts +1 -2
  26. package/dist/features/align/feature.client.d.ts.map +1 -1
  27. package/dist/features/align/feature.client.js +9 -16
  28. package/dist/features/align/feature.client.js.map +1 -1
  29. package/dist/features/align/feature.server.d.ts +1 -2
  30. package/dist/features/align/feature.server.d.ts.map +1 -1
  31. package/dist/features/align/feature.server.js +9 -15
  32. package/dist/features/align/feature.server.js.map +1 -1
  33. package/dist/features/align/i18n.js.map +1 -1
  34. package/dist/features/align/toolbarAlignGroup.js.map +1 -1
  35. package/dist/features/blockquote/feature.client.d.ts +1 -2
  36. package/dist/features/blockquote/feature.client.d.ts.map +1 -1
  37. package/dist/features/blockquote/feature.client.js +37 -44
  38. package/dist/features/blockquote/feature.client.js.map +1 -1
  39. package/dist/features/blockquote/feature.server.d.ts +6 -2
  40. package/dist/features/blockquote/feature.server.d.ts.map +1 -1
  41. package/dist/features/blockquote/feature.server.js +35 -40
  42. package/dist/features/blockquote/feature.server.js.map +1 -1
  43. package/dist/features/blockquote/i18n.js.map +1 -1
  44. package/dist/features/blockquote/markdownTransformer.js.map +1 -1
  45. package/dist/features/blocks/component/BlockContent.js +2 -2
  46. package/dist/features/blocks/component/BlockContent.js.map +1 -1
  47. package/dist/features/blocks/component/FormSavePlugin.js.map +1 -1
  48. package/dist/features/blocks/component/index.js +1 -1
  49. package/dist/features/blocks/component/index.js.map +1 -1
  50. package/dist/features/blocks/component/removeEmptyArrayValues.js.map +1 -1
  51. package/dist/features/blocks/drawer/index.js +1 -1
  52. package/dist/features/blocks/drawer/index.js.map +1 -1
  53. package/dist/features/blocks/feature.client.d.ts +1 -2
  54. package/dist/features/blocks/feature.client.d.ts.map +1 -1
  55. package/dist/features/blocks/feature.client.js +74 -80
  56. package/dist/features/blocks/feature.client.js.map +1 -1
  57. package/dist/features/blocks/feature.server.d.ts +1 -2
  58. package/dist/features/blocks/feature.server.d.ts.map +1 -1
  59. package/dist/features/blocks/feature.server.js +88 -90
  60. package/dist/features/blocks/feature.server.js.map +1 -1
  61. package/dist/features/blocks/graphQLPopulationPromise.d.ts +1 -1
  62. package/dist/features/blocks/graphQLPopulationPromise.d.ts.map +1 -1
  63. package/dist/features/blocks/graphQLPopulationPromise.js.map +1 -1
  64. package/dist/features/blocks/i18n.js.map +1 -1
  65. package/dist/features/blocks/nodes/BlocksNode.d.ts +2 -0
  66. package/dist/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  67. package/dist/features/blocks/nodes/BlocksNode.js +1 -1
  68. package/dist/features/blocks/nodes/BlocksNode.js.map +1 -1
  69. package/dist/features/blocks/plugin/commands.js.map +1 -1
  70. package/dist/features/blocks/plugin/index.d.ts +1 -1
  71. package/dist/features/blocks/plugin/index.d.ts.map +1 -1
  72. package/dist/features/blocks/plugin/index.js.map +1 -1
  73. package/dist/features/blocks/validate.d.ts +1 -1
  74. package/dist/features/blocks/validate.d.ts.map +1 -1
  75. package/dist/features/blocks/validate.js.map +1 -1
  76. package/dist/features/converters/html/converter/converters/linebreak.js.map +1 -1
  77. package/dist/features/converters/html/converter/converters/paragraph.js.map +1 -1
  78. package/dist/features/converters/html/converter/converters/text.js.map +1 -1
  79. package/dist/features/converters/html/converter/defaultConverters.js.map +1 -1
  80. package/dist/features/converters/html/converter/index.js.map +1 -1
  81. package/dist/features/converters/html/converter/types.js.map +1 -1
  82. package/dist/features/converters/html/feature.server.d.ts +1 -2
  83. package/dist/features/converters/html/feature.server.d.ts.map +1 -1
  84. package/dist/features/converters/html/feature.server.js +6 -12
  85. package/dist/features/converters/html/feature.server.js.map +1 -1
  86. package/dist/features/converters/html/field/index.js +1 -1
  87. package/dist/features/converters/html/field/index.js.map +1 -1
  88. package/dist/features/createClientComponent.d.ts +3 -2
  89. package/dist/features/createClientComponent.d.ts.map +1 -1
  90. package/dist/features/createClientComponent.js.map +1 -1
  91. package/dist/features/createFeaturePropComponent.d.ts.map +1 -1
  92. package/dist/features/createFeaturePropComponent.js.map +1 -1
  93. package/dist/features/debug/testRecorder/feature.client.d.ts +1 -2
  94. package/dist/features/debug/testRecorder/feature.client.d.ts.map +1 -1
  95. package/dist/features/debug/testRecorder/feature.client.js +9 -16
  96. package/dist/features/debug/testRecorder/feature.client.js.map +1 -1
  97. package/dist/features/debug/testRecorder/feature.server.d.ts +1 -2
  98. package/dist/features/debug/testRecorder/feature.server.d.ts.map +1 -1
  99. package/dist/features/debug/testRecorder/feature.server.js +8 -13
  100. package/dist/features/debug/testRecorder/feature.server.js.map +1 -1
  101. package/dist/features/debug/testRecorder/plugin/index.d.ts +1 -1
  102. package/dist/features/debug/testRecorder/plugin/index.d.ts.map +1 -1
  103. package/dist/features/debug/testRecorder/plugin/index.js.map +1 -1
  104. package/dist/features/debug/treeView/feature.client.d.ts +1 -2
  105. package/dist/features/debug/treeView/feature.client.d.ts.map +1 -1
  106. package/dist/features/debug/treeView/feature.client.js +9 -16
  107. package/dist/features/debug/treeView/feature.client.js.map +1 -1
  108. package/dist/features/debug/treeView/feature.server.d.ts +1 -2
  109. package/dist/features/debug/treeView/feature.server.d.ts.map +1 -1
  110. package/dist/features/debug/treeView/feature.server.js +8 -13
  111. package/dist/features/debug/treeView/feature.server.js.map +1 -1
  112. package/dist/features/debug/treeView/plugin/index.d.ts +1 -1
  113. package/dist/features/debug/treeView/plugin/index.d.ts.map +1 -1
  114. package/dist/features/debug/treeView/plugin/index.js.map +1 -1
  115. package/dist/features/format/bold/feature.client.d.ts +1 -2
  116. package/dist/features/format/bold/feature.client.d.ts.map +1 -1
  117. package/dist/features/format/bold/feature.client.js +16 -23
  118. package/dist/features/format/bold/feature.client.js.map +1 -1
  119. package/dist/features/format/bold/feature.server.d.ts +1 -2
  120. package/dist/features/format/bold/feature.server.d.ts.map +1 -1
  121. package/dist/features/format/bold/feature.server.js +21 -24
  122. package/dist/features/format/bold/feature.server.js.map +1 -1
  123. package/dist/features/format/bold/markdownTransformers.js.map +1 -1
  124. package/dist/features/format/inlineCode/feature.client.d.ts +1 -2
  125. package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -1
  126. package/dist/features/format/inlineCode/feature.client.js +12 -21
  127. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  128. package/dist/features/format/inlineCode/feature.server.d.ts +1 -2
  129. package/dist/features/format/inlineCode/feature.server.d.ts.map +1 -1
  130. package/dist/features/format/inlineCode/feature.server.js +11 -16
  131. package/dist/features/format/inlineCode/feature.server.js.map +1 -1
  132. package/dist/features/format/inlineCode/markdownTransformers.js.map +1 -1
  133. package/dist/features/format/italic/feature.client.d.ts +1 -2
  134. package/dist/features/format/italic/feature.client.d.ts.map +1 -1
  135. package/dist/features/format/italic/feature.client.js +13 -22
  136. package/dist/features/format/italic/feature.client.js.map +1 -1
  137. package/dist/features/format/italic/feature.server.d.ts +1 -2
  138. package/dist/features/format/italic/feature.server.d.ts.map +1 -1
  139. package/dist/features/format/italic/feature.server.js +12 -17
  140. package/dist/features/format/italic/feature.server.js.map +1 -1
  141. package/dist/features/format/italic/markdownTransformers.js.map +1 -1
  142. package/dist/features/format/shared/toolbarFormatGroup.js.map +1 -1
  143. package/dist/features/format/strikethrough/feature.client.d.ts +1 -2
  144. package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -1
  145. package/dist/features/format/strikethrough/feature.client.js +12 -21
  146. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  147. package/dist/features/format/strikethrough/feature.server.d.ts +1 -2
  148. package/dist/features/format/strikethrough/feature.server.d.ts.map +1 -1
  149. package/dist/features/format/strikethrough/feature.server.js +11 -16
  150. package/dist/features/format/strikethrough/feature.server.js.map +1 -1
  151. package/dist/features/format/strikethrough/markdownTransformers.js.map +1 -1
  152. package/dist/features/format/subscript/feature.client.d.ts +1 -2
  153. package/dist/features/format/subscript/feature.client.d.ts.map +1 -1
  154. package/dist/features/format/subscript/feature.client.js +9 -18
  155. package/dist/features/format/subscript/feature.client.js.map +1 -1
  156. package/dist/features/format/subscript/feature.server.d.ts +1 -2
  157. package/dist/features/format/subscript/feature.server.d.ts.map +1 -1
  158. package/dist/features/format/subscript/feature.server.js +8 -13
  159. package/dist/features/format/subscript/feature.server.js.map +1 -1
  160. package/dist/features/format/superscript/feature.client.d.ts +1 -2
  161. package/dist/features/format/superscript/feature.client.d.ts.map +1 -1
  162. package/dist/features/format/superscript/feature.client.js +9 -18
  163. package/dist/features/format/superscript/feature.client.js.map +1 -1
  164. package/dist/features/format/superscript/feature.server.d.ts +1 -2
  165. package/dist/features/format/superscript/feature.server.d.ts.map +1 -1
  166. package/dist/features/format/superscript/feature.server.js +8 -13
  167. package/dist/features/format/superscript/feature.server.js.map +1 -1
  168. package/dist/features/format/underline/feature.client.d.ts +1 -2
  169. package/dist/features/format/underline/feature.client.d.ts.map +1 -1
  170. package/dist/features/format/underline/feature.client.js +9 -18
  171. package/dist/features/format/underline/feature.client.js.map +1 -1
  172. package/dist/features/format/underline/feature.server.d.ts +1 -2
  173. package/dist/features/format/underline/feature.server.d.ts.map +1 -1
  174. package/dist/features/format/underline/feature.server.js +8 -13
  175. package/dist/features/format/underline/feature.server.js.map +1 -1
  176. package/dist/features/heading/feature.client.d.ts +1 -2
  177. package/dist/features/heading/feature.client.d.ts.map +1 -1
  178. package/dist/features/heading/feature.client.js +70 -76
  179. package/dist/features/heading/feature.client.js.map +1 -1
  180. package/dist/features/heading/feature.server.d.ts +1 -2
  181. package/dist/features/heading/feature.server.d.ts.map +1 -1
  182. package/dist/features/heading/feature.server.js +51 -53
  183. package/dist/features/heading/feature.server.js.map +1 -1
  184. package/dist/features/heading/i18n.js +2 -2
  185. package/dist/features/heading/i18n.js.map +1 -1
  186. package/dist/features/heading/markdownTransformer.js.map +1 -1
  187. package/dist/features/horizontalRule/component/index.js.map +1 -1
  188. package/dist/features/horizontalRule/feature.client.d.ts +1 -2
  189. package/dist/features/horizontalRule/feature.client.d.ts.map +1 -1
  190. package/dist/features/horizontalRule/feature.client.js +58 -65
  191. package/dist/features/horizontalRule/feature.client.js.map +1 -1
  192. package/dist/features/horizontalRule/feature.server.d.ts +1 -2
  193. package/dist/features/horizontalRule/feature.server.d.ts.map +1 -1
  194. package/dist/features/horizontalRule/feature.server.js +26 -31
  195. package/dist/features/horizontalRule/feature.server.js.map +1 -1
  196. package/dist/features/horizontalRule/i18n.js.map +1 -1
  197. package/dist/features/horizontalRule/markdownTransformer.js.map +1 -1
  198. package/dist/features/horizontalRule/nodes/HorizontalRuleNode.d.ts +5 -2
  199. package/dist/features/horizontalRule/nodes/HorizontalRuleNode.d.ts.map +1 -1
  200. package/dist/features/horizontalRule/nodes/HorizontalRuleNode.js.map +1 -1
  201. package/dist/features/horizontalRule/plugin/index.d.ts +1 -1
  202. package/dist/features/horizontalRule/plugin/index.d.ts.map +1 -1
  203. package/dist/features/horizontalRule/plugin/index.js.map +1 -1
  204. package/dist/features/indent/feature.client.d.ts +1 -2
  205. package/dist/features/indent/feature.client.d.ts.map +1 -1
  206. package/dist/features/indent/feature.client.js +9 -16
  207. package/dist/features/indent/feature.client.js.map +1 -1
  208. package/dist/features/indent/feature.server.d.ts +1 -2
  209. package/dist/features/indent/feature.server.d.ts.map +1 -1
  210. package/dist/features/indent/feature.server.js +9 -15
  211. package/dist/features/indent/feature.server.js.map +1 -1
  212. package/dist/features/indent/i18n.js.map +1 -1
  213. package/dist/features/indent/toolbarIndentGroup.js.map +1 -1
  214. package/dist/features/link/drawer/baseFields.d.ts +2 -2
  215. package/dist/features/link/drawer/baseFields.d.ts.map +1 -1
  216. package/dist/features/link/drawer/baseFields.js.map +1 -1
  217. package/dist/features/link/drawer/index.js.map +1 -1
  218. package/dist/features/link/drawer/types.js.map +1 -1
  219. package/dist/features/link/feature.client.d.ts +3 -4
  220. package/dist/features/link/feature.client.d.ts.map +1 -1
  221. package/dist/features/link/feature.client.js +34 -41
  222. package/dist/features/link/feature.client.js.map +1 -1
  223. package/dist/features/link/feature.server.d.ts +4 -6
  224. package/dist/features/link/feature.server.d.ts.map +1 -1
  225. package/dist/features/link/feature.server.js +123 -125
  226. package/dist/features/link/feature.server.js.map +1 -1
  227. package/dist/features/link/graphQLPopulationPromise.d.ts +1 -1
  228. package/dist/features/link/graphQLPopulationPromise.d.ts.map +1 -1
  229. package/dist/features/link/graphQLPopulationPromise.js.map +1 -1
  230. package/dist/features/link/i18n.js.map +1 -1
  231. package/dist/features/link/markdownTransformer.js.map +1 -1
  232. package/dist/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  233. package/dist/features/link/nodes/AutoLinkNode.js +7 -1
  234. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  235. package/dist/features/link/nodes/LinkNode.js +1 -1
  236. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  237. package/dist/features/link/nodes/types.d.ts +7 -4
  238. package/dist/features/link/nodes/types.d.ts.map +1 -1
  239. package/dist/features/link/nodes/types.js.map +1 -1
  240. package/dist/features/link/plugins/autoLink/index.d.ts +1 -1
  241. package/dist/features/link/plugins/autoLink/index.d.ts.map +1 -1
  242. package/dist/features/link/plugins/autoLink/index.js.map +1 -1
  243. package/dist/features/link/plugins/clickableLink/index.d.ts +1 -1
  244. package/dist/features/link/plugins/clickableLink/index.d.ts.map +1 -1
  245. package/dist/features/link/plugins/clickableLink/index.js.map +1 -1
  246. package/dist/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
  247. package/dist/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  248. package/dist/features/link/plugins/floatingLinkEditor/index.d.ts +1 -1
  249. package/dist/features/link/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  250. package/dist/features/link/plugins/floatingLinkEditor/index.js.map +1 -1
  251. package/dist/features/link/plugins/floatingLinkEditor/types.js.map +1 -1
  252. package/dist/features/link/plugins/floatingLinkEditor/utilities.d.ts +2 -2
  253. package/dist/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -1
  254. package/dist/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -1
  255. package/dist/features/link/plugins/link/index.d.ts +1 -1
  256. package/dist/features/link/plugins/link/index.d.ts.map +1 -1
  257. package/dist/features/link/plugins/link/index.js.map +1 -1
  258. package/dist/features/link/validate.d.ts +1 -1
  259. package/dist/features/link/validate.d.ts.map +1 -1
  260. package/dist/features/link/validate.js.map +1 -1
  261. package/dist/features/lists/checklist/feature.client.d.ts +1 -2
  262. package/dist/features/lists/checklist/feature.client.d.ts.map +1 -1
  263. package/dist/features/lists/checklist/feature.client.js +50 -57
  264. package/dist/features/lists/checklist/feature.client.js.map +1 -1
  265. package/dist/features/lists/checklist/feature.server.d.ts +1 -2
  266. package/dist/features/lists/checklist/feature.server.d.ts.map +1 -1
  267. package/dist/features/lists/checklist/feature.server.js +28 -31
  268. package/dist/features/lists/checklist/feature.server.js.map +1 -1
  269. package/dist/features/lists/checklist/i18n.js.map +1 -1
  270. package/dist/features/lists/checklist/markdownTransformers.js.map +1 -1
  271. package/dist/features/lists/checklist/plugin/index.d.ts +1 -1
  272. package/dist/features/lists/checklist/plugin/index.d.ts.map +1 -1
  273. package/dist/features/lists/checklist/plugin/index.js.map +1 -1
  274. package/dist/features/lists/htmlConverter.d.ts +1 -1
  275. package/dist/features/lists/htmlConverter.d.ts.map +1 -1
  276. package/dist/features/lists/htmlConverter.js.map +1 -1
  277. package/dist/features/lists/orderedList/feature.client.d.ts +1 -2
  278. package/dist/features/lists/orderedList/feature.client.d.ts.map +1 -1
  279. package/dist/features/lists/orderedList/feature.client.js +39 -46
  280. package/dist/features/lists/orderedList/feature.client.js.map +1 -1
  281. package/dist/features/lists/orderedList/feature.server.d.ts +1 -2
  282. package/dist/features/lists/orderedList/feature.server.d.ts.map +1 -1
  283. package/dist/features/lists/orderedList/feature.server.js +28 -31
  284. package/dist/features/lists/orderedList/feature.server.js.map +1 -1
  285. package/dist/features/lists/orderedList/i18n.js.map +1 -1
  286. package/dist/features/lists/orderedList/markdownTransformer.js.map +1 -1
  287. package/dist/features/lists/plugin/index.d.ts +11 -1
  288. package/dist/features/lists/plugin/index.d.ts.map +1 -1
  289. package/dist/features/lists/plugin/index.js.map +1 -1
  290. package/dist/features/lists/shared/markdown.d.ts +1 -1
  291. package/dist/features/lists/shared/markdown.js.map +1 -1
  292. package/dist/features/lists/shared/slashMenuListGroup.js.map +1 -1
  293. package/dist/features/lists/unorderedList/feature.client.d.ts +1 -2
  294. package/dist/features/lists/unorderedList/feature.client.d.ts.map +1 -1
  295. package/dist/features/lists/unorderedList/feature.client.js +40 -49
  296. package/dist/features/lists/unorderedList/feature.client.js.map +1 -1
  297. package/dist/features/lists/unorderedList/feature.server.d.ts +1 -2
  298. package/dist/features/lists/unorderedList/feature.server.d.ts.map +1 -1
  299. package/dist/features/lists/unorderedList/feature.server.js +26 -31
  300. package/dist/features/lists/unorderedList/feature.server.js.map +1 -1
  301. package/dist/features/lists/unorderedList/i18n.js.map +1 -1
  302. package/dist/features/lists/unorderedList/markdownTransformer.js.map +1 -1
  303. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.d.ts +0 -1
  304. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.d.ts.map +1 -1
  305. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js.map +1 -1
  306. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -1
  307. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +1 -1
  308. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js.map +1 -1
  309. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/client.d.ts +0 -1
  310. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/client.d.ts.map +1 -1
  311. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js.map +1 -1
  312. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -1
  313. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +1 -1
  314. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js.map +1 -1
  315. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/client.d.ts +0 -1
  316. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/client.d.ts.map +1 -1
  317. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js.map +1 -1
  318. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts.map +1 -1
  319. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -1
  320. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +1 -1
  321. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js.map +1 -1
  322. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.d.ts +0 -1
  323. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.d.ts.map +1 -1
  324. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js.map +1 -1
  325. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts.map +1 -1
  326. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -1
  327. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +1 -1
  328. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js.map +1 -1
  329. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.d.ts +0 -1
  330. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.d.ts.map +1 -1
  331. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js.map +1 -1
  332. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts.map +1 -1
  333. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -1
  334. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +1 -1
  335. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js.map +1 -1
  336. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.d.ts +0 -1
  337. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.d.ts.map +1 -1
  338. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js.map +1 -1
  339. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -1
  340. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +1 -1
  341. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js.map +1 -1
  342. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.d.ts +0 -1
  343. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.d.ts.map +1 -1
  344. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js.map +1 -1
  345. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
  346. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +1 -1
  347. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js.map +1 -1
  348. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -1
  349. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
  350. package/dist/features/migrations/lexicalPluginToLexical/converter/types.d.ts +1 -1
  351. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -1
  352. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +1 -2
  353. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -1
  354. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +20 -27
  355. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -1
  356. package/dist/features/migrations/lexicalPluginToLexical/feature.server.d.ts +1 -2
  357. package/dist/features/migrations/lexicalPluginToLexical/feature.server.d.ts.map +1 -1
  358. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +39 -42
  359. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -1
  360. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  361. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  362. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts +0 -1
  363. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts.map +1 -1
  364. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +1 -1
  365. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts.map +1 -1
  366. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
  367. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/index.js +1 -1
  368. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +1 -1
  369. package/dist/features/migrations/slateToLexical/converter/converters/heading/client.d.ts +0 -1
  370. package/dist/features/migrations/slateToLexical/converter/converters/heading/client.d.ts.map +1 -1
  371. package/dist/features/migrations/slateToLexical/converter/converters/heading/client.js.map +1 -1
  372. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
  373. package/dist/features/migrations/slateToLexical/converter/converters/heading/index.js +1 -1
  374. package/dist/features/migrations/slateToLexical/converter/converters/heading/index.js.map +1 -1
  375. package/dist/features/migrations/slateToLexical/converter/converters/indent/client.d.ts +0 -1
  376. package/dist/features/migrations/slateToLexical/converter/converters/indent/client.d.ts.map +1 -1
  377. package/dist/features/migrations/slateToLexical/converter/converters/indent/client.js.map +1 -1
  378. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -1
  379. package/dist/features/migrations/slateToLexical/converter/converters/indent/index.js +1 -1
  380. package/dist/features/migrations/slateToLexical/converter/converters/indent/index.js.map +1 -1
  381. package/dist/features/migrations/slateToLexical/converter/converters/link/client.d.ts +0 -1
  382. package/dist/features/migrations/slateToLexical/converter/converters/link/client.d.ts.map +1 -1
  383. package/dist/features/migrations/slateToLexical/converter/converters/link/client.js.map +1 -1
  384. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
  385. package/dist/features/migrations/slateToLexical/converter/converters/link/index.js +1 -1
  386. package/dist/features/migrations/slateToLexical/converter/converters/link/index.js.map +1 -1
  387. package/dist/features/migrations/slateToLexical/converter/converters/listItem/client.d.ts +0 -1
  388. package/dist/features/migrations/slateToLexical/converter/converters/listItem/client.d.ts.map +1 -1
  389. package/dist/features/migrations/slateToLexical/converter/converters/listItem/client.js.map +1 -1
  390. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts.map +1 -1
  391. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
  392. package/dist/features/migrations/slateToLexical/converter/converters/listItem/index.js +1 -1
  393. package/dist/features/migrations/slateToLexical/converter/converters/listItem/index.js.map +1 -1
  394. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/client.d.ts +0 -1
  395. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/client.d.ts.map +1 -1
  396. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/client.js.map +1 -1
  397. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts.map +1 -1
  398. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
  399. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/index.js +1 -1
  400. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/index.js.map +1 -1
  401. package/dist/features/migrations/slateToLexical/converter/converters/relationship/client.d.ts +0 -1
  402. package/dist/features/migrations/slateToLexical/converter/converters/relationship/client.d.ts.map +1 -1
  403. package/dist/features/migrations/slateToLexical/converter/converters/relationship/client.js.map +1 -1
  404. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
  405. package/dist/features/migrations/slateToLexical/converter/converters/relationship/index.js +1 -1
  406. package/dist/features/migrations/slateToLexical/converter/converters/relationship/index.js.map +1 -1
  407. package/dist/features/migrations/slateToLexical/converter/converters/unknown/client.d.ts +0 -1
  408. package/dist/features/migrations/slateToLexical/converter/converters/unknown/client.d.ts.map +1 -1
  409. package/dist/features/migrations/slateToLexical/converter/converters/unknown/client.js.map +1 -1
  410. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
  411. package/dist/features/migrations/slateToLexical/converter/converters/unknown/index.js +1 -1
  412. package/dist/features/migrations/slateToLexical/converter/converters/unknown/index.js.map +1 -1
  413. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/client.d.ts +0 -1
  414. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/client.d.ts.map +1 -1
  415. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/client.js.map +1 -1
  416. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts.map +1 -1
  417. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
  418. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +1 -1
  419. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/index.js.map +1 -1
  420. package/dist/features/migrations/slateToLexical/converter/converters/upload/client.d.ts +0 -1
  421. package/dist/features/migrations/slateToLexical/converter/converters/upload/client.d.ts.map +1 -1
  422. package/dist/features/migrations/slateToLexical/converter/converters/upload/client.js.map +1 -1
  423. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
  424. package/dist/features/migrations/slateToLexical/converter/converters/upload/index.js +1 -1
  425. package/dist/features/migrations/slateToLexical/converter/converters/upload/index.js.map +1 -1
  426. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -1
  427. package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
  428. package/dist/features/migrations/slateToLexical/converter/types.d.ts +1 -1
  429. package/dist/features/migrations/slateToLexical/converter/types.js.map +1 -1
  430. package/dist/features/migrations/slateToLexical/feature.client.d.ts +1 -2
  431. package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +1 -1
  432. package/dist/features/migrations/slateToLexical/feature.client.js +20 -27
  433. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  434. package/dist/features/migrations/slateToLexical/feature.server.d.ts +3 -2
  435. package/dist/features/migrations/slateToLexical/feature.server.d.ts.map +1 -1
  436. package/dist/features/migrations/slateToLexical/feature.server.js +41 -42
  437. package/dist/features/migrations/slateToLexical/feature.server.js.map +1 -1
  438. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  439. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  440. package/dist/features/paragraph/feature.client.d.ts +1 -2
  441. package/dist/features/paragraph/feature.client.d.ts.map +1 -1
  442. package/dist/features/paragraph/feature.client.js +33 -40
  443. package/dist/features/paragraph/feature.client.js.map +1 -1
  444. package/dist/features/paragraph/feature.server.d.ts +1 -2
  445. package/dist/features/paragraph/feature.server.d.ts.map +1 -1
  446. package/dist/features/paragraph/feature.server.js +10 -15
  447. package/dist/features/paragraph/feature.server.js.map +1 -1
  448. package/dist/features/paragraph/i18n.js.map +1 -1
  449. package/dist/features/relationship/drawer/commands.js.map +1 -1
  450. package/dist/features/relationship/drawer/index.d.ts.map +1 -1
  451. package/dist/features/relationship/drawer/index.js.map +1 -1
  452. package/dist/features/relationship/feature.client.d.ts +3 -4
  453. package/dist/features/relationship/feature.client.d.ts.map +1 -1
  454. package/dist/features/relationship/feature.client.js +60 -67
  455. package/dist/features/relationship/feature.client.js.map +1 -1
  456. package/dist/features/relationship/feature.server.d.ts +4 -4
  457. package/dist/features/relationship/feature.server.d.ts.map +1 -1
  458. package/dist/features/relationship/feature.server.js +45 -51
  459. package/dist/features/relationship/feature.server.js.map +1 -1
  460. package/dist/features/relationship/graphQLPopulationPromise.d.ts +1 -1
  461. package/dist/features/relationship/graphQLPopulationPromise.d.ts.map +1 -1
  462. package/dist/features/relationship/graphQLPopulationPromise.js.map +1 -1
  463. package/dist/features/relationship/i18n.js.map +1 -1
  464. package/dist/features/relationship/nodes/RelationshipNode.d.ts +6 -2
  465. package/dist/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
  466. package/dist/features/relationship/nodes/RelationshipNode.js +1 -1
  467. package/dist/features/relationship/nodes/RelationshipNode.js.map +1 -1
  468. package/dist/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  469. package/dist/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
  470. package/dist/features/relationship/plugins/index.d.ts +1 -1
  471. package/dist/features/relationship/plugins/index.d.ts.map +1 -1
  472. package/dist/features/relationship/plugins/index.js.map +1 -1
  473. package/dist/features/relationship/utils/EnabledRelationshipsCondition.js.map +1 -1
  474. package/dist/features/shared/slashMenu/basicGroup.js.map +1 -1
  475. package/dist/features/shared/toolbar/addDropdownGroup.js.map +1 -1
  476. package/dist/features/shared/toolbar/featureButtonsGroup.js.map +1 -1
  477. package/dist/features/shared/toolbar/textDropdownGroup.js.map +1 -1
  478. package/dist/features/toolbars/fixed/Toolbar/index.d.ts +1 -1
  479. package/dist/features/toolbars/fixed/Toolbar/index.d.ts.map +1 -1
  480. package/dist/features/toolbars/fixed/Toolbar/index.js.map +1 -1
  481. package/dist/features/toolbars/fixed/feature.client.d.ts +1 -2
  482. package/dist/features/toolbars/fixed/feature.client.d.ts.map +1 -1
  483. package/dist/features/toolbars/fixed/feature.client.js +9 -16
  484. package/dist/features/toolbars/fixed/feature.client.js.map +1 -1
  485. package/dist/features/toolbars/fixed/feature.server.d.ts +1 -2
  486. package/dist/features/toolbars/fixed/feature.server.d.ts.map +1 -1
  487. package/dist/features/toolbars/fixed/feature.server.js +16 -18
  488. package/dist/features/toolbars/fixed/feature.server.js.map +1 -1
  489. package/dist/features/toolbars/inline/Toolbar/index.d.ts +1 -1
  490. package/dist/features/toolbars/inline/Toolbar/index.d.ts.map +1 -1
  491. package/dist/features/toolbars/inline/Toolbar/index.js.map +1 -1
  492. package/dist/features/toolbars/inline/feature.client.d.ts +1 -2
  493. package/dist/features/toolbars/inline/feature.client.d.ts.map +1 -1
  494. package/dist/features/toolbars/inline/feature.client.js +9 -16
  495. package/dist/features/toolbars/inline/feature.client.js.map +1 -1
  496. package/dist/features/toolbars/inline/feature.server.d.ts +1 -2
  497. package/dist/features/toolbars/inline/feature.server.d.ts.map +1 -1
  498. package/dist/features/toolbars/inline/feature.server.js +8 -13
  499. package/dist/features/toolbars/inline/feature.server.js.map +1 -1
  500. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  501. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  502. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  503. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  504. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  505. package/dist/features/toolbars/types.d.ts +37 -5
  506. package/dist/features/toolbars/types.d.ts.map +1 -1
  507. package/dist/features/toolbars/types.js.map +1 -1
  508. package/dist/features/typeUtilities.d.ts +1 -1
  509. package/dist/features/typeUtilities.d.ts.map +1 -1
  510. package/dist/features/typeUtilities.js.map +1 -1
  511. package/dist/features/typesClient.d.ts +182 -0
  512. package/dist/features/typesClient.d.ts.map +1 -0
  513. package/dist/features/typesClient.js +3 -0
  514. package/dist/features/typesClient.js.map +1 -0
  515. package/dist/features/{types.d.ts → typesServer.d.ts} +40 -193
  516. package/dist/features/typesServer.d.ts.map +1 -0
  517. package/dist/features/typesServer.js +3 -0
  518. package/dist/features/typesServer.js.map +1 -0
  519. package/dist/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -1
  520. package/dist/features/upload/component/index.d.ts.map +1 -1
  521. package/dist/features/upload/component/index.js +1 -1
  522. package/dist/features/upload/component/index.js.map +1 -1
  523. package/dist/features/upload/drawer/commands.js.map +1 -1
  524. package/dist/features/upload/drawer/index.d.ts.map +1 -1
  525. package/dist/features/upload/drawer/index.js.map +1 -1
  526. package/dist/features/upload/feature.client.d.ts +1 -2
  527. package/dist/features/upload/feature.client.d.ts.map +1 -1
  528. package/dist/features/upload/feature.client.js +62 -69
  529. package/dist/features/upload/feature.client.js.map +1 -1
  530. package/dist/features/upload/feature.server.d.ts +3 -4
  531. package/dist/features/upload/feature.server.d.ts.map +1 -1
  532. package/dist/features/upload/feature.server.js +166 -168
  533. package/dist/features/upload/feature.server.js.map +1 -1
  534. package/dist/features/upload/graphQLPopulationPromise.d.ts +1 -1
  535. package/dist/features/upload/graphQLPopulationPromise.d.ts.map +1 -1
  536. package/dist/features/upload/graphQLPopulationPromise.js.map +1 -1
  537. package/dist/features/upload/i18n.js.map +1 -1
  538. package/dist/features/upload/nodes/UploadNode.d.ts +6 -2
  539. package/dist/features/upload/nodes/UploadNode.d.ts.map +1 -1
  540. package/dist/features/upload/nodes/UploadNode.js +1 -1
  541. package/dist/features/upload/nodes/UploadNode.js.map +1 -1
  542. package/dist/features/upload/plugin/index.d.ts +1 -1
  543. package/dist/features/upload/plugin/index.d.ts.map +1 -1
  544. package/dist/features/upload/plugin/index.js.map +1 -1
  545. package/dist/features/upload/validate.d.ts +1 -1
  546. package/dist/features/upload/validate.d.ts.map +1 -1
  547. package/dist/features/upload/validate.js.map +1 -1
  548. package/dist/field/Field.d.ts.map +1 -1
  549. package/dist/field/Field.js.map +1 -1
  550. package/dist/field/index.d.ts.map +1 -1
  551. package/dist/field/index.js +9 -7
  552. package/dist/field/index.js.map +1 -1
  553. package/dist/i18n.js.map +1 -1
  554. package/dist/index.d.ts +12 -8
  555. package/dist/index.d.ts.map +1 -1
  556. package/dist/index.js +19 -17
  557. package/dist/index.js.map +1 -1
  558. package/dist/lexical/EditorPlugin.d.ts +1 -1
  559. package/dist/lexical/EditorPlugin.d.ts.map +1 -1
  560. package/dist/lexical/EditorPlugin.js.map +1 -1
  561. package/dist/lexical/LexicalEditor.js.map +1 -1
  562. package/dist/lexical/LexicalProvider.js.map +1 -1
  563. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  564. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  565. package/dist/lexical/config/client/default.js.map +1 -1
  566. package/dist/lexical/config/client/loader.d.ts +1 -1
  567. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  568. package/dist/lexical/config/client/loader.js +2 -2
  569. package/dist/lexical/config/client/loader.js.map +1 -1
  570. package/dist/lexical/config/client/sanitize.d.ts +1 -1
  571. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  572. package/dist/lexical/config/client/sanitize.js +1 -1
  573. package/dist/lexical/config/client/sanitize.js.map +1 -1
  574. package/dist/lexical/config/server/default.d.ts +2 -2
  575. package/dist/lexical/config/server/default.d.ts.map +1 -1
  576. package/dist/lexical/config/server/default.js.map +1 -1
  577. package/dist/lexical/config/server/loader.d.ts +2 -2
  578. package/dist/lexical/config/server/loader.d.ts.map +1 -1
  579. package/dist/lexical/config/server/loader.js +2 -2
  580. package/dist/lexical/config/server/loader.js.map +1 -1
  581. package/dist/lexical/config/server/sanitize.d.ts +1 -1
  582. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  583. package/dist/lexical/config/server/sanitize.js.map +1 -1
  584. package/dist/lexical/config/types.d.ts +4 -3
  585. package/dist/lexical/config/types.d.ts.map +1 -1
  586. package/dist/lexical/config/types.js.map +1 -1
  587. package/dist/lexical/nodes/index.js.map +1 -1
  588. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  589. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  590. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  591. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +16 -1
  592. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  593. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  594. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  595. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  596. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  597. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
  598. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
  599. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -1
  600. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  601. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts +0 -1
  602. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  603. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  604. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -1
  605. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
  606. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -1
  607. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  608. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
  609. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -1
  610. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  611. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  612. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  613. package/dist/lexical/ui/icons/AI/index.js.map +1 -1
  614. package/dist/lexical/ui/icons/Add/index.js.map +1 -1
  615. package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -1
  616. package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -1
  617. package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -1
  618. package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -1
  619. package/dist/lexical/ui/icons/Block/index.js.map +1 -1
  620. package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -1
  621. package/dist/lexical/ui/icons/Bold/index.js.map +1 -1
  622. package/dist/lexical/ui/icons/Checklist/index.js.map +1 -1
  623. package/dist/lexical/ui/icons/Code/index.js.map +1 -1
  624. package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
  625. package/dist/lexical/ui/icons/H1/index.js.map +1 -1
  626. package/dist/lexical/ui/icons/H2/index.js.map +1 -1
  627. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  628. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  629. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  630. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  631. package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
  632. package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
  633. package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
  634. package/dist/lexical/ui/icons/Italic/index.js.map +1 -1
  635. package/dist/lexical/ui/icons/Link/index.js.map +1 -1
  636. package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -1
  637. package/dist/lexical/ui/icons/Relationship/index.js.map +1 -1
  638. package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -1
  639. package/dist/lexical/ui/icons/Subscript/index.js.map +1 -1
  640. package/dist/lexical/ui/icons/Superscript/index.js.map +1 -1
  641. package/dist/lexical/ui/icons/Text/index.js.map +1 -1
  642. package/dist/lexical/ui/icons/Underline/index.js.map +1 -1
  643. package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -1
  644. package/dist/lexical/ui/icons/Upload/index.js.map +1 -1
  645. package/dist/lexical/utils/canUseDOM.js.map +1 -1
  646. package/dist/lexical/utils/cloneDeep.js.map +1 -1
  647. package/dist/lexical/utils/environment.js.map +1 -1
  648. package/dist/lexical/utils/getDOMRangeRect.js.map +1 -1
  649. package/dist/lexical/utils/getSelectedNode.js.map +1 -1
  650. package/dist/lexical/utils/guard.js.map +1 -1
  651. package/dist/lexical/utils/invariant.js.map +1 -1
  652. package/dist/lexical/utils/joinClasses.js.map +1 -1
  653. package/dist/lexical/utils/markdown/createBlockNode.d.ts +1 -1
  654. package/dist/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
  655. package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
  656. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  657. package/dist/lexical/utils/point.js.map +1 -1
  658. package/dist/lexical/utils/rect.js.map +1 -1
  659. package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
  660. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -1
  661. package/dist/lexical/utils/swipe.js.map +1 -1
  662. package/dist/lexical/utils/url.js.map +1 -1
  663. package/dist/nodeTypes.d.ts +27 -0
  664. package/dist/nodeTypes.d.ts.map +1 -0
  665. package/dist/nodeTypes.js +3 -0
  666. package/dist/nodeTypes.js.map +1 -0
  667. package/dist/populateGraphQL/defaultValue.js.map +1 -1
  668. package/dist/populateGraphQL/populate.d.ts.map +1 -1
  669. package/dist/populateGraphQL/populate.js.map +1 -1
  670. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts +1 -1
  671. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  672. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  673. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts +1 -1
  674. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts.map +1 -1
  675. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  676. package/dist/types.d.ts +7 -7
  677. package/dist/types.d.ts.map +1 -1
  678. package/dist/types.js.map +1 -1
  679. package/dist/utilities/createClientFeature.d.ts +13 -0
  680. package/dist/utilities/createClientFeature.d.ts.map +1 -0
  681. package/dist/utilities/createClientFeature.js +30 -0
  682. package/dist/utilities/createClientFeature.js.map +1 -0
  683. package/dist/utilities/createServerFeature.d.ts +16 -0
  684. package/dist/utilities/createServerFeature.d.ts.map +1 -0
  685. package/dist/utilities/createServerFeature.js +34 -0
  686. package/dist/utilities/createServerFeature.js.map +1 -0
  687. package/dist/utilities/forEachNodeRecursively.js.map +1 -1
  688. package/dist/utilities/generateComponentMap.d.ts +2 -2
  689. package/dist/utilities/generateComponentMap.d.ts.map +1 -1
  690. package/dist/utilities/generateComponentMap.js +4 -4
  691. package/dist/utilities/generateComponentMap.js.map +1 -1
  692. package/dist/utilities/generateSchemaMap.d.ts +2 -2
  693. package/dist/utilities/generateSchemaMap.d.ts.map +1 -1
  694. package/dist/utilities/generateSchemaMap.js +1 -1
  695. package/dist/utilities/generateSchemaMap.js.map +1 -1
  696. package/dist/utilities/migrateSlateToLexical/index.d.ts +15 -0
  697. package/dist/utilities/migrateSlateToLexical/index.d.ts.map +1 -0
  698. package/dist/utilities/migrateSlateToLexical/index.js +105 -0
  699. package/dist/utilities/migrateSlateToLexical/index.js.map +1 -0
  700. package/dist/utilities/migrateSlateToLexical/recurse.d.ts +9 -0
  701. package/dist/utilities/migrateSlateToLexical/recurse.d.ts.map +1 -0
  702. package/dist/utilities/migrateSlateToLexical/recurse.js +77 -0
  703. package/dist/utilities/migrateSlateToLexical/recurse.js.map +1 -0
  704. package/dist/utilities/recurseNodeTree.js.map +1 -1
  705. package/dist/utilities/useLexicalFeature.d.ts +1 -1
  706. package/dist/utilities/useLexicalFeature.d.ts.map +1 -1
  707. package/dist/utilities/useLexicalFeature.js.map +1 -1
  708. package/dist/validate/index.js.map +1 -1
  709. package/dist/validate/validateNodes.d.ts +1 -1
  710. package/dist/validate/validateNodes.d.ts.map +1 -1
  711. package/dist/validate/validateNodes.js.map +1 -1
  712. package/package.json +10 -10
  713. package/dist/exports/client/Field-YMWNSE3A.js +0 -2
  714. package/dist/exports/client/Field-YMWNSE3A.js.map +0 -7
  715. package/dist/exports/client/chunk-MLIITFAS.js.map +0 -7
  716. package/dist/exports/client/chunk-OSR74ZNW.js.map +0 -7
  717. package/dist/exports/client/chunk-QU5MKT75.js.map +0 -7
  718. package/dist/exports/client/chunk-ZITHDR53.js +0 -2
  719. package/dist/exports/client/chunk-ZITHDR53.js.map +0 -7
  720. package/dist/exports/client/component-E2NHAHBC.js.map +0 -7
  721. package/dist/exports/client/component-X4LSLSWF.js +0 -2
  722. package/dist/exports/client/component-X4LSLSWF.js.map +0 -7
  723. package/dist/features/types.d.ts.map +0 -1
  724. package/dist/features/types.js +0 -3
  725. package/dist/features/types.js.map +0 -1
  726. /package/dist/exports/client/{RelationshipComponent-5OU5HATX.js.map → RelationshipComponent-AFXEJMZQ.js.map} +0 -0
  727. /package/dist/exports/client/{component-QWIGEOVD.js.map → component-VM36FRT2.js.map} +0 -0
@@ -2,7 +2,8 @@ import { traverseFields } from '@payloadcms/ui/utilities/buildFieldSchemaMap/tra
2
2
  import { sanitizeFields } from 'payload';
3
3
  import { deepCopyObject } from 'payload/shared';
4
4
  // eslint-disable-next-line payload/no-imports-from-exports-dir
5
- import { LinkFeatureClientComponent } from '../../exports/client/index.js';
5
+ import { LinkFeatureClient } from '../../exports/client/index.js';
6
+ import { createServerFeature } from '../../utilities/createServerFeature.js';
6
7
  import { convertLexicalNodesToHTML } from '../converters/html/converter/index.js';
7
8
  import { createNode } from '../typeUtilities.js';
8
9
  import { linkPopulationPromiseHOC } from './graphQLPopulationPromise.js';
@@ -12,129 +13,126 @@ import { AutoLinkNode } from './nodes/AutoLinkNode.js';
12
13
  import { LinkNode } from './nodes/LinkNode.js';
13
14
  import { transformExtraFields } from './plugins/floatingLinkEditor/utilities.js';
14
15
  import { linkValidation } from './validate.js';
15
- export const LinkFeature = (props)=>{
16
- if (!props) {
17
- props = {};
18
- }
19
- return {
20
- feature: async ({ config: _config, isRoot })=>{
21
- const validRelationships = _config.collections.map((c)=>c.slug) || [];
22
- const _transformedFields = transformExtraFields(deepCopyObject(props.fields), _config, props.enabledCollections, props.disabledCollections, props.maxDepth);
23
- const sanitizedFields = await sanitizeFields({
24
- config: _config,
25
- fields: _transformedFields,
26
- requireFieldLevelRichTextEditor: isRoot,
27
- validRelationships
28
- });
29
- props.fields = sanitizedFields;
30
- // the text field is not included in the node data.
31
- // Thus, for tasks like validation, we do not want to pass it a text field in the schema which will never have data.
32
- // Otherwise, it will cause a validation error (field is required).
33
- const sanitizedFieldsWithoutText = deepCopyObject(sanitizedFields).filter((field)=>field.name !== 'text');
34
- return {
35
- ClientComponent: LinkFeatureClientComponent,
36
- clientFeatureProps: {
37
- disabledCollections: props.disabledCollections,
38
- enabledCollections: props.enabledCollections
39
- },
40
- generateSchemaMap: ({ config, i18n })=>{
41
- if (!sanitizedFields || !Array.isArray(sanitizedFields) || sanitizedFields.length === 0) {
42
- return null;
43
- }
44
- const schemaMap = new Map();
45
- const validRelationships = config.collections.map((c)=>c.slug) || [];
46
- schemaMap.set('fields', sanitizedFields);
47
- traverseFields({
48
- config,
49
- fields: sanitizedFields,
50
- i18n,
51
- schemaMap,
52
- schemaPath: 'fields',
53
- validRelationships
54
- });
55
- return schemaMap;
56
- },
57
- i18n,
58
- markdownTransformers: [
59
- LinkMarkdownTransformer
60
- ],
61
- nodes: [
62
- createNode({
63
- converters: {
64
- html: {
65
- converter: async ({ converters, node, parent, req })=>{
66
- const childrenText = await convertLexicalNodesToHTML({
67
- converters,
68
- lexicalNodes: node.children,
69
- parent: {
70
- ...node,
71
- parent
72
- },
73
- req
74
- });
75
- const rel = node.fields.newTab ? ' rel="noopener noreferrer"' : '';
76
- const target = node.fields.newTab ? ' target="_blank"' : '';
77
- let href = node.fields.url;
78
- if (node.fields.linkType === 'internal') {
79
- href = typeof node.fields.doc?.value === 'string' ? node.fields.doc?.value : node.fields.doc?.value?.id;
80
- }
81
- return `<a href="${href}"${target}${rel}>${childrenText}</a>`;
82
- },
83
- nodeTypes: [
84
- AutoLinkNode.getType()
85
- ]
86
- }
87
- },
88
- node: AutoLinkNode,
89
- // Since AutoLinkNodes are just internal links, they need no hooks or graphQL population promises
90
- validations: [
91
- linkValidation(props, sanitizedFieldsWithoutText)
92
- ]
93
- }),
94
- createNode({
95
- converters: {
96
- html: {
97
- converter: async ({ converters, node, parent, req })=>{
98
- const childrenText = await convertLexicalNodesToHTML({
99
- converters,
100
- lexicalNodes: node.children,
101
- parent: {
102
- ...node,
103
- parent
104
- },
105
- req
106
- });
107
- const rel = node.fields.newTab ? ' rel="noopener noreferrer"' : '';
108
- const target = node.fields.newTab ? ' target="_blank"' : '';
109
- const href = node.fields.linkType === 'custom' ? node.fields.url : node.fields.doc?.value;
110
- return `<a href="${href}"${target}${rel}>${childrenText}</a>`;
111
- },
112
- nodeTypes: [
113
- LinkNode.getType()
114
- ]
115
- }
116
- },
117
- getSubFields: ()=>{
118
- return sanitizedFieldsWithoutText;
119
- },
120
- getSubFieldsData: ({ node })=>{
121
- return node?.fields;
122
- },
123
- graphQLPopulationPromises: [
124
- linkPopulationPromiseHOC(props)
125
- ],
126
- node: LinkNode,
127
- validations: [
128
- linkValidation(props, sanitizedFieldsWithoutText)
129
- ]
130
- })
131
- ],
132
- serverFeatureProps: props
133
- };
134
- },
135
- key: 'link',
136
- serverFeatureProps: props
137
- };
138
- };
16
+ export const LinkFeature = createServerFeature({
17
+ feature: async ({ config: _config, isRoot, props })=>{
18
+ if (!props) {
19
+ props = {};
20
+ }
21
+ const validRelationships = _config.collections.map((c)=>c.slug) || [];
22
+ const _transformedFields = transformExtraFields(deepCopyObject(props.fields), _config, props.enabledCollections, props.disabledCollections, props.maxDepth);
23
+ const sanitizedFields = await sanitizeFields({
24
+ config: _config,
25
+ fields: _transformedFields,
26
+ requireFieldLevelRichTextEditor: isRoot,
27
+ validRelationships
28
+ });
29
+ props.fields = sanitizedFields;
30
+ // the text field is not included in the node data.
31
+ // Thus, for tasks like validation, we do not want to pass it a text field in the schema which will never have data.
32
+ // Otherwise, it will cause a validation error (field is required).
33
+ const sanitizedFieldsWithoutText = deepCopyObject(sanitizedFields).filter((field)=>field.name !== 'text');
34
+ return {
35
+ ClientFeature: LinkFeatureClient,
36
+ clientFeatureProps: {
37
+ disabledCollections: props.disabledCollections,
38
+ enabledCollections: props.enabledCollections
39
+ },
40
+ generateSchemaMap: ({ config, i18n })=>{
41
+ if (!sanitizedFields || !Array.isArray(sanitizedFields) || sanitizedFields.length === 0) {
42
+ return null;
43
+ }
44
+ const schemaMap = new Map();
45
+ const validRelationships = config.collections.map((c)=>c.slug) || [];
46
+ schemaMap.set('fields', sanitizedFields);
47
+ traverseFields({
48
+ config,
49
+ fields: sanitizedFields,
50
+ i18n,
51
+ schemaMap,
52
+ schemaPath: 'fields',
53
+ validRelationships
54
+ });
55
+ return schemaMap;
56
+ },
57
+ i18n,
58
+ markdownTransformers: [
59
+ LinkMarkdownTransformer
60
+ ],
61
+ nodes: [
62
+ createNode({
63
+ converters: {
64
+ html: {
65
+ converter: async ({ converters, node, parent, req })=>{
66
+ const childrenText = await convertLexicalNodesToHTML({
67
+ converters,
68
+ lexicalNodes: node.children,
69
+ parent: {
70
+ ...node,
71
+ parent
72
+ },
73
+ req
74
+ });
75
+ const rel = node.fields.newTab ? ' rel="noopener noreferrer"' : '';
76
+ const target = node.fields.newTab ? ' target="_blank"' : '';
77
+ let href = node.fields.url;
78
+ if (node.fields.linkType === 'internal') {
79
+ href = typeof node.fields.doc?.value === 'string' ? node.fields.doc?.value : node.fields.doc?.value?.id;
80
+ }
81
+ return `<a href="${href}"${target}${rel}>${childrenText}</a>`;
82
+ },
83
+ nodeTypes: [
84
+ AutoLinkNode.getType()
85
+ ]
86
+ }
87
+ },
88
+ node: AutoLinkNode,
89
+ // Since AutoLinkNodes are just internal links, they need no hooks or graphQL population promises
90
+ validations: [
91
+ linkValidation(props, sanitizedFieldsWithoutText)
92
+ ]
93
+ }),
94
+ createNode({
95
+ converters: {
96
+ html: {
97
+ converter: async ({ converters, node, parent, req })=>{
98
+ const childrenText = await convertLexicalNodesToHTML({
99
+ converters,
100
+ lexicalNodes: node.children,
101
+ parent: {
102
+ ...node,
103
+ parent
104
+ },
105
+ req
106
+ });
107
+ const rel = node.fields.newTab ? ' rel="noopener noreferrer"' : '';
108
+ const target = node.fields.newTab ? ' target="_blank"' : '';
109
+ const href = node.fields.linkType === 'custom' ? node.fields.url : node.fields.doc?.value;
110
+ return `<a href="${href}"${target}${rel}>${childrenText}</a>`;
111
+ },
112
+ nodeTypes: [
113
+ LinkNode.getType()
114
+ ]
115
+ }
116
+ },
117
+ getSubFields: ()=>{
118
+ return sanitizedFieldsWithoutText;
119
+ },
120
+ getSubFieldsData: ({ node })=>{
121
+ return node?.fields;
122
+ },
123
+ graphQLPopulationPromises: [
124
+ linkPopulationPromiseHOC(props)
125
+ ],
126
+ node: LinkNode,
127
+ validations: [
128
+ linkValidation(props, sanitizedFieldsWithoutText)
129
+ ]
130
+ })
131
+ ],
132
+ sanitizedServerFeatureProps: props
133
+ };
134
+ },
135
+ key: 'link'
136
+ });
139
137
 
140
138
  //# sourceMappingURL=feature.server.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/link/feature.server.ts"],"sourcesContent":["import type { Config, Field, FieldAffectingData, SanitizedConfig } from 'payload'\n\nimport { traverseFields } from '@payloadcms/ui/utilities/buildFieldSchemaMap/traverseFields'\nimport { sanitizeFields } from 'payload'\nimport { deepCopyObject } from 'payload/shared'\n\nimport type { FeatureProviderProviderServer } from '../types.js'\nimport type { ClientProps } from './feature.client.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { LinkFeatureClientComponent } from '../../exports/client/index.js'\nimport { convertLexicalNodesToHTML } from '../converters/html/converter/index.js'\nimport { createNode } from '../typeUtilities.js'\nimport { linkPopulationPromiseHOC } from './graphQLPopulationPromise.js'\nimport { i18n } from './i18n.js'\nimport { LinkMarkdownTransformer } from './markdownTransformer.js'\nimport { AutoLinkNode } from './nodes/AutoLinkNode.js'\nimport { LinkNode } from './nodes/LinkNode.js'\nimport { transformExtraFields } from './plugins/floatingLinkEditor/utilities.js'\nimport { linkValidation } from './validate.js'\n\nexport type ExclusiveLinkCollectionsProps =\n | {\n /**\n * The collections that should be disabled for internal linking. Overrides the `enableRichTextLink` property in the collection config.\n * When this property is set, `enabledCollections` will not be available.\n **/\n disabledCollections?: string[]\n\n // Ensures that enabledCollections is not available when disabledCollections is set\n enabledCollections?: never\n }\n | {\n // Ensures that disabledCollections is not available when enabledCollections is set\n disabledCollections?: never\n\n /**\n * The collections that should be enabled for internal linking. Overrides the `enableRichTextLink` property in the collection config\n * When this property is set, `disabledCollections` will not be available.\n **/\n enabledCollections?: string[]\n }\n\nexport type LinkFeatureServerProps = ExclusiveLinkCollectionsProps & {\n /**\n * A function or array defining additional fields for the link feature. These will be\n * displayed in the link editor drawer.\n */\n fields?:\n | ((args: {\n config: SanitizedConfig\n defaultFields: FieldAffectingData[]\n }) => (Field | FieldAffectingData)[])\n | Field[]\n /**\n * Sets a maximum population depth for the internal doc default field of link, regardless of the remaining depth when the field is reached.\n * This behaves exactly like the maxDepth properties of relationship and upload fields.\n *\n * {@link https://payloadcms.com/docs/getting-started/concepts#field-level-max-depth}\n */\n maxDepth?: number\n}\n\nexport const LinkFeature: FeatureProviderProviderServer<LinkFeatureServerProps, ClientProps> = (\n props,\n) => {\n if (!props) {\n props = {}\n }\n return {\n feature: async ({ config: _config, isRoot }) => {\n const validRelationships = _config.collections.map((c) => c.slug) || []\n\n const _transformedFields = transformExtraFields(\n deepCopyObject(props.fields),\n _config,\n props.enabledCollections,\n props.disabledCollections,\n props.maxDepth,\n )\n\n const sanitizedFields = await sanitizeFields({\n config: _config as unknown as Config,\n fields: _transformedFields,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n props.fields = sanitizedFields\n\n // the text field is not included in the node data.\n // Thus, for tasks like validation, we do not want to pass it a text field in the schema which will never have data.\n // Otherwise, it will cause a validation error (field is required).\n const sanitizedFieldsWithoutText = deepCopyObject(sanitizedFields).filter(\n (field) => field.name !== 'text',\n )\n\n return {\n ClientComponent: LinkFeatureClientComponent,\n clientFeatureProps: {\n disabledCollections: props.disabledCollections,\n enabledCollections: props.enabledCollections,\n } as ExclusiveLinkCollectionsProps,\n generateSchemaMap: ({ config, i18n }) => {\n if (!sanitizedFields || !Array.isArray(sanitizedFields) || sanitizedFields.length === 0) {\n return null\n }\n\n const schemaMap = new Map<string, Field[]>()\n\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n schemaMap.set('fields', sanitizedFields)\n\n traverseFields({\n config,\n fields: sanitizedFields,\n i18n,\n schemaMap,\n schemaPath: 'fields',\n validRelationships,\n })\n\n return schemaMap\n },\n i18n,\n markdownTransformers: [LinkMarkdownTransformer],\n nodes: [\n createNode({\n converters: {\n html: {\n converter: async ({ converters, node, parent, req }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n req,\n })\n\n const rel: string = node.fields.newTab ? ' rel=\"noopener noreferrer\"' : ''\n const target: string = node.fields.newTab ? ' target=\"_blank\"' : ''\n\n let href: string = node.fields.url\n if (node.fields.linkType === 'internal') {\n href =\n typeof node.fields.doc?.value === 'string'\n ? node.fields.doc?.value\n : node.fields.doc?.value?.id\n }\n\n return `<a href=\"${href}\"${target}${rel}>${childrenText}</a>`\n },\n nodeTypes: [AutoLinkNode.getType()],\n },\n },\n node: AutoLinkNode,\n // Since AutoLinkNodes are just internal links, they need no hooks or graphQL population promises\n validations: [linkValidation(props, sanitizedFieldsWithoutText)],\n }),\n createNode({\n converters: {\n html: {\n converter: async ({ converters, node, parent, req }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n req,\n })\n\n const rel: string = node.fields.newTab ? ' rel=\"noopener noreferrer\"' : ''\n const target: string = node.fields.newTab ? ' target=\"_blank\"' : ''\n\n const href: string =\n node.fields.linkType === 'custom'\n ? node.fields.url\n : (node.fields.doc?.value as string)\n\n return `<a href=\"${href}\"${target}${rel}>${childrenText}</a>`\n },\n nodeTypes: [LinkNode.getType()],\n },\n },\n getSubFields: () => {\n return sanitizedFieldsWithoutText\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [linkPopulationPromiseHOC(props)],\n node: LinkNode,\n validations: [linkValidation(props, sanitizedFieldsWithoutText)],\n }),\n ],\n serverFeatureProps: props,\n }\n },\n key: 'link',\n serverFeatureProps: props,\n }\n}\n"],"names":["traverseFields","sanitizeFields","deepCopyObject","LinkFeatureClientComponent","convertLexicalNodesToHTML","createNode","linkPopulationPromiseHOC","i18n","LinkMarkdownTransformer","AutoLinkNode","LinkNode","transformExtraFields","linkValidation","LinkFeature","props","feature","config","_config","isRoot","validRelationships","collections","map","c","slug","_transformedFields","fields","enabledCollections","disabledCollections","maxDepth","sanitizedFields","requireFieldLevelRichTextEditor","sanitizedFieldsWithoutText","filter","field","name","ClientComponent","clientFeatureProps","generateSchemaMap","Array","isArray","length","schemaMap","Map","set","schemaPath","markdownTransformers","nodes","converters","html","converter","node","parent","req","childrenText","lexicalNodes","children","rel","newTab","target","href","url","linkType","doc","value","id","nodeTypes","getType","validations","getSubFields","getSubFieldsData","graphQLPopulationPromises","serverFeatureProps","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/features/link/feature.server.ts"],"sourcesContent":["import type { CollectionSlug, Config, Field, FieldAffectingData, SanitizedConfig } from 'payload'\n\nimport { traverseFields } from '@payloadcms/ui/utilities/buildFieldSchemaMap/traverseFields'\nimport { sanitizeFields } from 'payload'\nimport { deepCopyObject } from 'payload/shared'\n\nimport type { ClientProps } from './feature.client.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir\nimport { LinkFeatureClient } from '../../exports/client/index.js'\nimport { createServerFeature } from '../../utilities/createServerFeature.js'\nimport { convertLexicalNodesToHTML } from '../converters/html/converter/index.js'\nimport { createNode } from '../typeUtilities.js'\nimport { linkPopulationPromiseHOC } from './graphQLPopulationPromise.js'\nimport { i18n } from './i18n.js'\nimport { LinkMarkdownTransformer } from './markdownTransformer.js'\nimport { AutoLinkNode } from './nodes/AutoLinkNode.js'\nimport { LinkNode } from './nodes/LinkNode.js'\nimport { transformExtraFields } from './plugins/floatingLinkEditor/utilities.js'\nimport { linkValidation } from './validate.js'\n\nexport type ExclusiveLinkCollectionsProps =\n | {\n /**\n * The collections that should be disabled for internal linking. Overrides the `enableRichTextLink` property in the collection config.\n * When this property is set, `enabledCollections` will not be available.\n **/\n disabledCollections?: CollectionSlug[]\n\n // Ensures that enabledCollections is not available when disabledCollections is set\n enabledCollections?: never\n }\n | {\n // Ensures that disabledCollections is not available when enabledCollections is set\n disabledCollections?: never\n\n /**\n * The collections that should be enabled for internal linking. Overrides the `enableRichTextLink` property in the collection config\n * When this property is set, `disabledCollections` will not be available.\n **/\n enabledCollections?: CollectionSlug[]\n }\n\nexport type LinkFeatureServerProps = ExclusiveLinkCollectionsProps & {\n /**\n * A function or array defining additional fields for the link feature. These will be\n * displayed in the link editor drawer.\n */\n fields?:\n | ((args: {\n config: SanitizedConfig\n defaultFields: FieldAffectingData[]\n }) => (Field | FieldAffectingData)[])\n | Field[]\n /**\n * Sets a maximum population depth for the internal doc default field of link, regardless of the remaining depth when the field is reached.\n * This behaves exactly like the maxDepth properties of relationship and upload fields.\n *\n * {@link https://payloadcms.com/docs/getting-started/concepts#field-level-max-depth}\n */\n maxDepth?: number\n}\n\nexport const LinkFeature = createServerFeature<\n LinkFeatureServerProps,\n LinkFeatureServerProps,\n ClientProps\n>({\n feature: async ({ config: _config, isRoot, props }) => {\n if (!props) {\n props = {}\n }\n const validRelationships = _config.collections.map((c) => c.slug) || []\n\n const _transformedFields = transformExtraFields(\n deepCopyObject(props.fields),\n _config,\n props.enabledCollections,\n props.disabledCollections,\n props.maxDepth,\n )\n\n const sanitizedFields = await sanitizeFields({\n config: _config as unknown as Config,\n fields: _transformedFields,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n props.fields = sanitizedFields\n\n // the text field is not included in the node data.\n // Thus, for tasks like validation, we do not want to pass it a text field in the schema which will never have data.\n // Otherwise, it will cause a validation error (field is required).\n const sanitizedFieldsWithoutText = deepCopyObject(sanitizedFields).filter(\n (field) => field.name !== 'text',\n )\n\n return {\n ClientFeature: LinkFeatureClient,\n clientFeatureProps: {\n disabledCollections: props.disabledCollections,\n enabledCollections: props.enabledCollections,\n } as ExclusiveLinkCollectionsProps,\n generateSchemaMap: ({ config, i18n }) => {\n if (!sanitizedFields || !Array.isArray(sanitizedFields) || sanitizedFields.length === 0) {\n return null\n }\n\n const schemaMap = new Map<string, Field[]>()\n\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n schemaMap.set('fields', sanitizedFields)\n\n traverseFields({\n config,\n fields: sanitizedFields,\n i18n,\n schemaMap,\n schemaPath: 'fields',\n validRelationships,\n })\n\n return schemaMap\n },\n i18n,\n markdownTransformers: [LinkMarkdownTransformer],\n nodes: [\n createNode({\n converters: {\n html: {\n converter: async ({ converters, node, parent, req }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n req,\n })\n\n const rel: string = node.fields.newTab ? ' rel=\"noopener noreferrer\"' : ''\n const target: string = node.fields.newTab ? ' target=\"_blank\"' : ''\n\n let href: string = node.fields.url\n if (node.fields.linkType === 'internal') {\n href =\n typeof node.fields.doc?.value === 'string'\n ? node.fields.doc?.value\n : node.fields.doc?.value?.id\n }\n\n return `<a href=\"${href}\"${target}${rel}>${childrenText}</a>`\n },\n nodeTypes: [AutoLinkNode.getType()],\n },\n },\n node: AutoLinkNode,\n // Since AutoLinkNodes are just internal links, they need no hooks or graphQL population promises\n validations: [linkValidation(props, sanitizedFieldsWithoutText)],\n }),\n createNode({\n converters: {\n html: {\n converter: async ({ converters, node, parent, req }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n req,\n })\n\n const rel: string = node.fields.newTab ? ' rel=\"noopener noreferrer\"' : ''\n const target: string = node.fields.newTab ? ' target=\"_blank\"' : ''\n\n const href: string =\n node.fields.linkType === 'custom'\n ? node.fields.url\n : (node.fields.doc?.value as string)\n\n return `<a href=\"${href}\"${target}${rel}>${childrenText}</a>`\n },\n nodeTypes: [LinkNode.getType()],\n },\n },\n getSubFields: () => {\n return sanitizedFieldsWithoutText\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [linkPopulationPromiseHOC(props)],\n node: LinkNode,\n validations: [linkValidation(props, sanitizedFieldsWithoutText)],\n }),\n ],\n sanitizedServerFeatureProps: props,\n }\n },\n key: 'link',\n})\n"],"names":["traverseFields","sanitizeFields","deepCopyObject","LinkFeatureClient","createServerFeature","convertLexicalNodesToHTML","createNode","linkPopulationPromiseHOC","i18n","LinkMarkdownTransformer","AutoLinkNode","LinkNode","transformExtraFields","linkValidation","LinkFeature","feature","config","_config","isRoot","props","validRelationships","collections","map","c","slug","_transformedFields","fields","enabledCollections","disabledCollections","maxDepth","sanitizedFields","requireFieldLevelRichTextEditor","sanitizedFieldsWithoutText","filter","field","name","ClientFeature","clientFeatureProps","generateSchemaMap","Array","isArray","length","schemaMap","Map","set","schemaPath","markdownTransformers","nodes","converters","html","converter","node","parent","req","childrenText","lexicalNodes","children","rel","newTab","target","href","url","linkType","doc","value","id","nodeTypes","getType","validations","getSubFields","getSubFieldsData","graphQLPopulationPromises","sanitizedServerFeatureProps","key"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PopulationPromise } from '../types.js';
1
+ import type { PopulationPromise } from '../typesServer.js';
2
2
  import type { LinkFeatureServerProps } from './feature.server.js';
3
3
  import type { SerializedLinkNode } from './nodes/types.js';
4
4
  export declare const linkPopulationPromiseHOC: (props: LinkFeatureServerProps) => PopulationPromise<SerializedLinkNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"graphQLPopulationPromise.d.ts","sourceRoot":"","sources":["../../../src/features/link/graphQLPopulationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAI1D,eAAO,MAAM,wBAAwB,UAC5B,sBAAsB,KAC5B,kBAAkB,kBAAkB,CA2CtC,CAAA"}
1
+ {"version":3,"file":"graphQLPopulationPromise.d.ts","sourceRoot":"","sources":["../../../src/features/link/graphQLPopulationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAI1D,eAAO,MAAM,wBAAwB,UAC5B,sBAAsB,KAC5B,iBAAiB,CAAC,kBAAkB,CA2CtC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/link/graphQLPopulationPromise.ts"],"sourcesContent":["import type { PopulationPromise } from '../types.js'\nimport type { LinkFeatureServerProps } from './feature.server.js'\nimport type { SerializedLinkNode } from './nodes/types.js'\n\nimport { recursivelyPopulateFieldsForGraphQL } from '../../populateGraphQL/recursivelyPopulateFieldsForGraphQL.js'\n\nexport const linkPopulationPromiseHOC = (\n props: LinkFeatureServerProps,\n): PopulationPromise<SerializedLinkNode> => {\n return ({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n fieldPromises,\n findMany,\n flattenLocales,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (!props.fields?.length) {\n return\n }\n\n /**\n * Should populate all fields, including the doc field (for internal links), as it's treated like a normal field\n */\n if (Array.isArray(props.fields)) {\n recursivelyPopulateFieldsForGraphQL({\n context,\n currentDepth,\n data: node.fields,\n depth,\n draft,\n editorPopulationPromises,\n fieldPromises,\n fields: props.fields,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: node.fields,\n })\n }\n }\n}\n"],"names":["recursivelyPopulateFieldsForGraphQL","linkPopulationPromiseHOC","props","context","currentDepth","depth","draft","editorPopulationPromises","fieldPromises","findMany","flattenLocales","node","overrideAccess","populationPromises","req","showHiddenFields","fields","length","Array","isArray","data","siblingDoc"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,mCAAmC,QAAQ,+DAA8D;AAElH,OAAO,MAAMC,2BAA2B,CACtCC;IAEA,OAAO,CAAC,EACNC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,wBAAwB,EACxBC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,IAAI,EACJC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EACjB;QACC,IAAI,CAACb,MAAMc,MAAM,EAAEC,QAAQ;YACzB;QACF;QAEA;;KAEC,GACD,IAAIC,MAAMC,OAAO,CAACjB,MAAMc,MAAM,GAAG;YAC/BhB,oCAAoC;gBAClCG;gBACAC;gBACAgB,MAAMT,KAAKK,MAAM;gBACjBX;gBACAC;gBACAC;gBACAC;gBACAQ,QAAQd,MAAMc,MAAM;gBACpBP;gBACAC;gBACAE;gBACAC;gBACAC;gBACAC;gBACAM,YAAYV,KAAKK,MAAM;YACzB;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/features/link/graphQLPopulationPromise.ts"],"sourcesContent":["import type { PopulationPromise } from '../typesServer.js'\nimport type { LinkFeatureServerProps } from './feature.server.js'\nimport type { SerializedLinkNode } from './nodes/types.js'\n\nimport { recursivelyPopulateFieldsForGraphQL } from '../../populateGraphQL/recursivelyPopulateFieldsForGraphQL.js'\n\nexport const linkPopulationPromiseHOC = (\n props: LinkFeatureServerProps,\n): PopulationPromise<SerializedLinkNode> => {\n return ({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n fieldPromises,\n findMany,\n flattenLocales,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (!props.fields?.length) {\n return\n }\n\n /**\n * Should populate all fields, including the doc field (for internal links), as it's treated like a normal field\n */\n if (Array.isArray(props.fields)) {\n recursivelyPopulateFieldsForGraphQL({\n context,\n currentDepth,\n data: node.fields,\n depth,\n draft,\n editorPopulationPromises,\n fieldPromises,\n fields: props.fields,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: node.fields,\n })\n }\n }\n}\n"],"names":["recursivelyPopulateFieldsForGraphQL","linkPopulationPromiseHOC","props","context","currentDepth","depth","draft","editorPopulationPromises","fieldPromises","findMany","flattenLocales","node","overrideAccess","populationPromises","req","showHiddenFields","fields","length","Array","isArray","data","siblingDoc"],"mappings":"AAIA,SAASA,mCAAmC,QAAQ,+DAA8D;AAElH,OAAO,MAAMC,2BAA2B,CACtCC;IAEA,OAAO,CAAC,EACNC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,wBAAwB,EACxBC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,IAAI,EACJC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EACjB;QACC,IAAI,CAACb,MAAMc,MAAM,EAAEC,QAAQ;YACzB;QACF;QAEA;;KAEC,GACD,IAAIC,MAAMC,OAAO,CAACjB,MAAMc,MAAM,GAAG;YAC/BhB,oCAAoC;gBAClCG;gBACAC;gBACAgB,MAAMT,KAAKK,MAAM;gBACjBX;gBACAC;gBACAC;gBACAC;gBACAQ,QAAQd,MAAMc,MAAM;gBACpBP;gBACAC;gBACAE;gBACAC;gBACAC;gBACAC;gBACAM,YAAYV,KAAKK,MAAM;YACzB;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/link/i18n.ts"],"sourcesContent":["import type { GenericLanguages } from '@payloadcms/translations'\n\nexport const i18n: Partial<GenericLanguages> = {\n ar: {\n label: 'رابط',\n },\n az: {\n label: 'Keçid',\n },\n bg: {\n label: 'Връзка',\n },\n cs: {\n label: 'Odkaz',\n },\n de: {\n label: 'Verknüpfung',\n },\n en: {\n label: 'Link',\n },\n es: {\n label: 'Enlace',\n },\n fa: {\n label: 'پیوند',\n },\n fr: {\n label: 'Lien',\n },\n he: {\n label: 'קישור',\n },\n hr: {\n label: 'Poveznica',\n },\n hu: {\n label: 'Hivatkozás',\n },\n it: {\n label: 'Collegamento',\n },\n ja: {\n label: 'リンク',\n },\n ko: {\n label: '링크',\n },\n my: {\n label: 'လင့်',\n },\n nb: {\n label: 'Lenke',\n },\n nl: {\n label: 'Link',\n },\n pl: {\n label: 'Łącze',\n },\n pt: {\n label: 'Ligação',\n },\n ro: {\n label: 'Legătură',\n },\n rs: {\n label: 'Veza',\n },\n 'rs-latin': {\n label: 'Veza',\n },\n ru: {\n label: 'Ссылка',\n },\n sk: {\n label: 'Odkaz',\n },\n sv: {\n label: 'Länk',\n },\n th: {\n label: 'ลิงค์',\n },\n tr: {\n label: 'Bağlantı',\n },\n uk: {\n label: 'Посилання',\n },\n vi: {\n label: 'Liên kết',\n },\n zh: {\n label: '链接',\n },\n 'zh-TW': {\n label: '連結',\n },\n}\n"],"names":["i18n","ar","label","az","bg","cs","de","en","es","fa","fr","he","hr","hu","it","ja","ko","my","nb","nl","pl","pt","ro","rs","ru","sk","sv","th","tr","uk","vi","zh"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,OAAkC;IAC7CC,IAAI;QACFC,OAAO;IACT;IACAC,IAAI;QACFD,OAAO;IACT;IACAE,IAAI;QACFF,OAAO;IACT;IACAG,IAAI;QACFH,OAAO;IACT;IACAI,IAAI;QACFJ,OAAO;IACT;IACAK,IAAI;QACFL,OAAO;IACT;IACAM,IAAI;QACFN,OAAO;IACT;IACAO,IAAI;QACFP,OAAO;IACT;IACAQ,IAAI;QACFR,OAAO;IACT;IACAS,IAAI;QACFT,OAAO;IACT;IACAU,IAAI;QACFV,OAAO;IACT;IACAW,IAAI;QACFX,OAAO;IACT;IACAY,IAAI;QACFZ,OAAO;IACT;IACAa,IAAI;QACFb,OAAO;IACT;IACAc,IAAI;QACFd,OAAO;IACT;IACAe,IAAI;QACFf,OAAO;IACT;IACAgB,IAAI;QACFhB,OAAO;IACT;IACAiB,IAAI;QACFjB,OAAO;IACT;IACAkB,IAAI;QACFlB,OAAO;IACT;IACAmB,IAAI;QACFnB,OAAO;IACT;IACAoB,IAAI;QACFpB,OAAO;IACT;IACAqB,IAAI;QACFrB,OAAO;IACT;IACA,YAAY;QACVA,OAAO;IACT;IACAsB,IAAI;QACFtB,OAAO;IACT;IACAuB,IAAI;QACFvB,OAAO;IACT;IACAwB,IAAI;QACFxB,OAAO;IACT;IACAyB,IAAI;QACFzB,OAAO;IACT;IACA0B,IAAI;QACF1B,OAAO;IACT;IACA2B,IAAI;QACF3B,OAAO;IACT;IACA4B,IAAI;QACF5B,OAAO;IACT;IACA6B,IAAI;QACF7B,OAAO;IACT;IACA,SAAS;QACPA,OAAO;IACT;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/features/link/i18n.ts"],"sourcesContent":["import type { GenericLanguages } from '@payloadcms/translations'\n\nexport const i18n: Partial<GenericLanguages> = {\n ar: {\n label: 'رابط',\n },\n az: {\n label: 'Keçid',\n },\n bg: {\n label: 'Връзка',\n },\n cs: {\n label: 'Odkaz',\n },\n de: {\n label: 'Verknüpfung',\n },\n en: {\n label: 'Link',\n },\n es: {\n label: 'Enlace',\n },\n fa: {\n label: 'پیوند',\n },\n fr: {\n label: 'Lien',\n },\n he: {\n label: 'קישור',\n },\n hr: {\n label: 'Poveznica',\n },\n hu: {\n label: 'Hivatkozás',\n },\n it: {\n label: 'Collegamento',\n },\n ja: {\n label: 'リンク',\n },\n ko: {\n label: '링크',\n },\n my: {\n label: 'လင့်',\n },\n nb: {\n label: 'Lenke',\n },\n nl: {\n label: 'Link',\n },\n pl: {\n label: 'Łącze',\n },\n pt: {\n label: 'Ligação',\n },\n ro: {\n label: 'Legătură',\n },\n rs: {\n label: 'Veza',\n },\n 'rs-latin': {\n label: 'Veza',\n },\n ru: {\n label: 'Ссылка',\n },\n sk: {\n label: 'Odkaz',\n },\n sv: {\n label: 'Länk',\n },\n th: {\n label: 'ลิงค์',\n },\n tr: {\n label: 'Bağlantı',\n },\n uk: {\n label: 'Посилання',\n },\n vi: {\n label: 'Liên kết',\n },\n zh: {\n label: '链接',\n },\n 'zh-TW': {\n label: '連結',\n },\n}\n"],"names":["i18n","ar","label","az","bg","cs","de","en","es","fa","fr","he","hr","hu","it","ja","ko","my","nb","nl","pl","pt","ro","rs","ru","sk","sv","th","tr","uk","vi","zh"],"mappings":"AAEA,OAAO,MAAMA,OAAkC;IAC7CC,IAAI;QACFC,OAAO;IACT;IACAC,IAAI;QACFD,OAAO;IACT;IACAE,IAAI;QACFF,OAAO;IACT;IACAG,IAAI;QACFH,OAAO;IACT;IACAI,IAAI;QACFJ,OAAO;IACT;IACAK,IAAI;QACFL,OAAO;IACT;IACAM,IAAI;QACFN,OAAO;IACT;IACAO,IAAI;QACFP,OAAO;IACT;IACAQ,IAAI;QACFR,OAAO;IACT;IACAS,IAAI;QACFT,OAAO;IACT;IACAU,IAAI;QACFV,OAAO;IACT;IACAW,IAAI;QACFX,OAAO;IACT;IACAY,IAAI;QACFZ,OAAO;IACT;IACAa,IAAI;QACFb,OAAO;IACT;IACAc,IAAI;QACFd,OAAO;IACT;IACAe,IAAI;QACFf,OAAO;IACT;IACAgB,IAAI;QACFhB,OAAO;IACT;IACAiB,IAAI;QACFjB,OAAO;IACT;IACAkB,IAAI;QACFlB,OAAO;IACT;IACAmB,IAAI;QACFnB,OAAO;IACT;IACAoB,IAAI;QACFpB,OAAO;IACT;IACAqB,IAAI;QACFrB,OAAO;IACT;IACA,YAAY;QACVA,OAAO;IACT;IACAsB,IAAI;QACFtB,OAAO;IACT;IACAuB,IAAI;QACFvB,OAAO;IACT;IACAwB,IAAI;QACFxB,OAAO;IACT;IACAyB,IAAI;QACFzB,OAAO;IACT;IACA0B,IAAI;QACF1B,OAAO;IACT;IACA2B,IAAI;QACF3B,OAAO;IACT;IACA4B,IAAI;QACF5B,OAAO;IACT;IACA6B,IAAI;QACF7B,OAAO;IACT;IACA,SAAS;QACPA,OAAO;IACT;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/link/markdownTransformer.ts"],"sourcesContent":["/**\n * Code taken from https://github.com/facebook/lexical/blob/main/packages/lexical-markdown/src/MarkdownTransformers.ts#L357\n */\n\n// Order of text transformers matters:\n//\n// - code should go first as it prevents any transformations inside\n\nimport type { TextMatchTransformer } from '@lexical/markdown'\n\nimport { $createTextNode, $isTextNode } from 'lexical'\n\nimport { $createLinkNode, $isLinkNode, LinkNode } from './nodes/LinkNode.js'\n\n// - then longer tags match (e.g. ** or __ should go before * or _)\nexport const LinkMarkdownTransformer: TextMatchTransformer = {\n type: 'text-match',\n dependencies: [LinkNode],\n export: (_node, exportChildren, exportFormat) => {\n if (!$isLinkNode(_node)) {\n return null\n }\n const node: LinkNode = _node\n const { url } = node.getFields()\n const linkContent = `[${node.getTextContent()}](${url})`\n const firstChild = node.getFirstChild()\n // Add text styles only if link has single text node inside. If it's more\n // then one we ignore it as markdown does not support nested styles for links\n if (node.getChildrenSize() === 1 && $isTextNode(firstChild)) {\n return exportFormat(firstChild, linkContent)\n } else {\n return linkContent\n }\n },\n importRegExp: /\\[([^[]+)\\]\\(([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?\\)/,\n regExp: /\\[([^[]+)\\]\\(([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?\\)$/,\n replace: (textNode, match) => {\n const [, linkText, linkUrl] = match\n const linkNode = $createLinkNode({\n fields: {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: linkUrl,\n },\n })\n const linkTextNode = $createTextNode(linkText)\n linkTextNode.setFormat(textNode.getFormat())\n linkNode.append(linkTextNode)\n textNode.replace(linkNode)\n },\n trigger: ')',\n}\n"],"names":["$createTextNode","$isTextNode","$createLinkNode","$isLinkNode","LinkNode","LinkMarkdownTransformer","type","dependencies","export","_node","exportChildren","exportFormat","node","url","getFields","linkContent","getTextContent","firstChild","getFirstChild","getChildrenSize","importRegExp","regExp","replace","textNode","match","linkText","linkUrl","linkNode","fields","doc","linkType","newTab","linkTextNode","setFormat","getFormat","append","trigger"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;;CAEC,GAED,sCAAsC;AACtC,EAAE;AACF,mEAAmE;AAInE,SAASA,eAAe,EAAEC,WAAW,QAAQ,UAAS;AAEtD,SAASC,eAAe,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,sBAAqB;AAE5E,mEAAmE;AACnE,OAAO,MAAMC,0BAAgD;IAC3DC,MAAM;IACNC,cAAc;QAACH;KAAS;IACxBI,QAAQ,CAACC,OAAOC,gBAAgBC;QAC9B,IAAI,CAACR,YAAYM,QAAQ;YACvB,OAAO;QACT;QACA,MAAMG,OAAiBH;QACvB,MAAM,EAAEI,GAAG,EAAE,GAAGD,KAAKE,SAAS;QAC9B,MAAMC,cAAc,CAAC,CAAC,EAAEH,KAAKI,cAAc,GAAG,EAAE,EAAEH,IAAI,CAAC,CAAC;QACxD,MAAMI,aAAaL,KAAKM,aAAa;QACrC,yEAAyE;QACzE,6EAA6E;QAC7E,IAAIN,KAAKO,eAAe,OAAO,KAAKlB,YAAYgB,aAAa;YAC3D,OAAON,aAAaM,YAAYF;QAClC,OAAO;YACL,OAAOA;QACT;IACF;IACAK,cAAc;IACdC,QAAQ;IACRC,SAAS,CAACC,UAAUC;QAClB,MAAM,GAAGC,UAAUC,QAAQ,GAAGF;QAC9B,MAAMG,WAAWzB,gBAAgB;YAC/B0B,QAAQ;gBACNC,KAAK;gBACLC,UAAU;gBACVC,QAAQ;gBACRlB,KAAKa;YACP;QACF;QACA,MAAMM,eAAehC,gBAAgByB;QACrCO,aAAaC,SAAS,CAACV,SAASW,SAAS;QACzCP,SAASQ,MAAM,CAACH;QAChBT,SAASD,OAAO,CAACK;IACnB;IACAS,SAAS;AACX,EAAC"}
1
+ {"version":3,"sources":["../../../src/features/link/markdownTransformer.ts"],"sourcesContent":["/**\n * Code taken from https://github.com/facebook/lexical/blob/main/packages/lexical-markdown/src/MarkdownTransformers.ts#L357\n */\n\n// Order of text transformers matters:\n//\n// - code should go first as it prevents any transformations inside\n\nimport type { TextMatchTransformer } from '@lexical/markdown'\n\nimport { $createTextNode, $isTextNode } from 'lexical'\n\nimport { $createLinkNode, $isLinkNode, LinkNode } from './nodes/LinkNode.js'\n\n// - then longer tags match (e.g. ** or __ should go before * or _)\nexport const LinkMarkdownTransformer: TextMatchTransformer = {\n type: 'text-match',\n dependencies: [LinkNode],\n export: (_node, exportChildren, exportFormat) => {\n if (!$isLinkNode(_node)) {\n return null\n }\n const node: LinkNode = _node\n const { url } = node.getFields()\n const linkContent = `[${node.getTextContent()}](${url})`\n const firstChild = node.getFirstChild()\n // Add text styles only if link has single text node inside. If it's more\n // then one we ignore it as markdown does not support nested styles for links\n if (node.getChildrenSize() === 1 && $isTextNode(firstChild)) {\n return exportFormat(firstChild, linkContent)\n } else {\n return linkContent\n }\n },\n importRegExp: /\\[([^[]+)\\]\\(([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?\\)/,\n regExp: /\\[([^[]+)\\]\\(([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?\\)$/,\n replace: (textNode, match) => {\n const [, linkText, linkUrl] = match\n const linkNode = $createLinkNode({\n fields: {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: linkUrl,\n },\n })\n const linkTextNode = $createTextNode(linkText)\n linkTextNode.setFormat(textNode.getFormat())\n linkNode.append(linkTextNode)\n textNode.replace(linkNode)\n },\n trigger: ')',\n}\n"],"names":["$createTextNode","$isTextNode","$createLinkNode","$isLinkNode","LinkNode","LinkMarkdownTransformer","type","dependencies","export","_node","exportChildren","exportFormat","node","url","getFields","linkContent","getTextContent","firstChild","getFirstChild","getChildrenSize","importRegExp","regExp","replace","textNode","match","linkText","linkUrl","linkNode","fields","doc","linkType","newTab","linkTextNode","setFormat","getFormat","append","trigger"],"mappings":"AAAA;;CAEC,GAED,sCAAsC;AACtC,EAAE;AACF,mEAAmE;AAInE,SAASA,eAAe,EAAEC,WAAW,QAAQ,UAAS;AAEtD,SAASC,eAAe,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,sBAAqB;AAE5E,mEAAmE;AACnE,OAAO,MAAMC,0BAAgD;IAC3DC,MAAM;IACNC,cAAc;QAACH;KAAS;IACxBI,QAAQ,CAACC,OAAOC,gBAAgBC;QAC9B,IAAI,CAACR,YAAYM,QAAQ;YACvB,OAAO;QACT;QACA,MAAMG,OAAiBH;QACvB,MAAM,EAAEI,GAAG,EAAE,GAAGD,KAAKE,SAAS;QAC9B,MAAMC,cAAc,CAAC,CAAC,EAAEH,KAAKI,cAAc,GAAG,EAAE,EAAEH,IAAI,CAAC,CAAC;QACxD,MAAMI,aAAaL,KAAKM,aAAa;QACrC,yEAAyE;QACzE,6EAA6E;QAC7E,IAAIN,KAAKO,eAAe,OAAO,KAAKlB,YAAYgB,aAAa;YAC3D,OAAON,aAAaM,YAAYF;QAClC,OAAO;YACL,OAAOA;QACT;IACF;IACAK,cAAc;IACdC,QAAQ;IACRC,SAAS,CAACC,UAAUC;QAClB,MAAM,GAAGC,UAAUC,QAAQ,GAAGF;QAC9B,MAAMG,WAAWzB,gBAAgB;YAC/B0B,QAAQ;gBACNC,KAAK;gBACLC,UAAU;gBACVC,QAAQ;gBACRlB,KAAKa;YACP;QACF;QACA,MAAMM,eAAehC,gBAAgByB;QACrCO,aAAaC,SAAS,CAACV,SAASW,SAAS;QACzCP,SAASQ,MAAM,CAACH;QAChBT,SAASD,OAAO,CAACK;IACnB;IACAS,SAAS;AACX,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AutoLinkNode.d.ts","sourceRoot":"","sources":["../../../../src/features/link/nodes/AutoLinkNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIvE,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAKxC,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY;IAI9C,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,SAAS,IAAI,IAAI;IAKxB,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,sBAAsB,GAAG,YAAY;IAkBvE,UAAU,IAAI,sBAAsB;IAQpC,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,gBAAgB,UAAO,GAAG,WAAW,GAAG,IAAI;CASvF;AAED,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,YAAY,CAEpF;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,YAAY,CAE1F"}
1
+ {"version":3,"file":"AutoLinkNode.d.ts","sourceRoot":"","sources":["../../../../src/features/link/nodes/AutoLinkNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAIvE,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAKxC,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY;IAI9C,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,SAAS,IAAI,IAAI;IAKxB,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,sBAAsB,GAAG,YAAY;IAmBvE,UAAU,IAAI,sBAAsB;IAapC,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,gBAAgB,UAAO,GAAG,WAAW,GAAG,IAAI;CASvF;AAED,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,YAAY,CAEpF;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,YAAY,CAE1F"}
@@ -30,10 +30,16 @@ export class AutoLinkNode extends LinkNode {
30
30
  node.setDirection(serializedNode.direction);
31
31
  return node;
32
32
  }
33
+ // @ts-expect-error
33
34
  exportJSON() {
35
+ const serialized = super.exportJSON();
34
36
  return {
35
- ...super.exportJSON(),
36
37
  type: 'autolink',
38
+ children: serialized.children,
39
+ direction: serialized.direction,
40
+ fields: serialized.fields,
41
+ format: serialized.format,
42
+ indent: serialized.indent,
37
43
  version: 2
38
44
  };
39
45
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/link/nodes/AutoLinkNode.ts"],"sourcesContent":["import type { ElementNode, LexicalNode, RangeSelection } from 'lexical'\n\nimport { $applyNodeReplacement, $isElementNode } from 'lexical'\n\nimport type { LinkFields, SerializedAutoLinkNode } from './types.js'\n\nimport { LinkNode } from './LinkNode.js'\n\n// Custom node type to override `canInsertTextAfter` that will\n// allow typing within the link\n\nexport class AutoLinkNode extends LinkNode {\n static clone(node: AutoLinkNode): AutoLinkNode {\n return new AutoLinkNode({ id: undefined, fields: node.__fields, key: node.__key })\n }\n\n static getType(): string {\n return 'autolink'\n }\n\n static importDOM(): null {\n // TODO: Should link node should handle the import over autolink?\n return null\n }\n\n static importJSON(serializedNode: SerializedAutoLinkNode): AutoLinkNode {\n if (\n serializedNode.version === 1 &&\n typeof serializedNode.fields?.doc?.value === 'object' &&\n serializedNode.fields?.doc?.value?.id\n ) {\n serializedNode.fields.doc.value = serializedNode.fields.doc.value.id\n serializedNode.version = 2\n }\n\n const node = $createAutoLinkNode({ fields: serializedNode.fields })\n\n node.setFormat(serializedNode.format)\n node.setIndent(serializedNode.indent)\n node.setDirection(serializedNode.direction)\n return node\n }\n\n exportJSON(): SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n type: 'autolink',\n version: 2,\n }\n }\n\n insertNewAfter(selection: RangeSelection, restoreSelection = true): ElementNode | null {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection)\n if ($isElementNode(element)) {\n const linkNode = $createAutoLinkNode({ fields: this.__fields })\n element.append(linkNode)\n return linkNode\n }\n return null\n }\n}\n\nexport function $createAutoLinkNode({ fields }: { fields: LinkFields }): AutoLinkNode {\n return $applyNodeReplacement(new AutoLinkNode({ id: undefined, fields }))\n}\nexport function $isAutoLinkNode(node: LexicalNode | null | undefined): node is AutoLinkNode {\n return node instanceof AutoLinkNode\n}\n"],"names":["$applyNodeReplacement","$isElementNode","LinkNode","AutoLinkNode","clone","node","id","undefined","fields","__fields","key","__key","getType","importDOM","importJSON","serializedNode","version","doc","value","$createAutoLinkNode","setFormat","format","setIndent","indent","setDirection","direction","exportJSON","type","insertNewAfter","selection","restoreSelection","element","getParentOrThrow","linkNode","append","$isAutoLinkNode"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,qBAAqB,EAAEC,cAAc,QAAQ,UAAS;AAI/D,SAASC,QAAQ,QAAQ,gBAAe;AAExC,8DAA8D;AAC9D,+BAA+B;AAE/B,OAAO,MAAMC,qBAAqBD;IAChC,OAAOE,MAAMC,IAAkB,EAAgB;QAC7C,OAAO,IAAIF,aAAa;YAAEG,IAAIC;YAAWC,QAAQH,KAAKI,QAAQ;YAAEC,KAAKL,KAAKM,KAAK;QAAC;IAClF;IAEA,OAAOC,UAAkB;QACvB,OAAO;IACT;IAEA,OAAOC,YAAkB;QACvB,iEAAiE;QACjE,OAAO;IACT;IAEA,OAAOC,WAAWC,cAAsC,EAAgB;QACtE,IACEA,eAAeC,OAAO,KAAK,KAC3B,OAAOD,eAAeP,MAAM,EAAES,KAAKC,UAAU,YAC7CH,eAAeP,MAAM,EAAES,KAAKC,OAAOZ,IACnC;YACAS,eAAeP,MAAM,CAACS,GAAG,CAACC,KAAK,GAAGH,eAAeP,MAAM,CAACS,GAAG,CAACC,KAAK,CAACZ,EAAE;YACpES,eAAeC,OAAO,GAAG;QAC3B;QAEA,MAAMX,OAAOc,oBAAoB;YAAEX,QAAQO,eAAeP,MAAM;QAAC;QAEjEH,KAAKe,SAAS,CAACL,eAAeM,MAAM;QACpChB,KAAKiB,SAAS,CAACP,eAAeQ,MAAM;QACpClB,KAAKmB,YAAY,CAACT,eAAeU,SAAS;QAC1C,OAAOpB;IACT;IAEAqB,aAAqC;QACnC,OAAO;YACL,GAAG,KAAK,CAACA,YAAY;YACrBC,MAAM;YACNX,SAAS;QACX;IACF;IAEAY,eAAeC,SAAyB,EAAEC,mBAAmB,IAAI,EAAsB;QACrF,MAAMC,UAAU,IAAI,CAACC,gBAAgB,GAAGJ,cAAc,CAACC,WAAWC;QAClE,IAAI7B,eAAe8B,UAAU;YAC3B,MAAME,WAAWd,oBAAoB;gBAAEX,QAAQ,IAAI,CAACC,QAAQ;YAAC;YAC7DsB,QAAQG,MAAM,CAACD;YACf,OAAOA;QACT;QACA,OAAO;IACT;AACF;AAEA,OAAO,SAASd,oBAAoB,EAAEX,MAAM,EAA0B;IACpE,OAAOR,sBAAsB,IAAIG,aAAa;QAAEG,IAAIC;QAAWC;IAAO;AACxE;AACA,OAAO,SAAS2B,gBAAgB9B,IAAoC;IAClE,OAAOA,gBAAgBF;AACzB"}
1
+ {"version":3,"sources":["../../../../src/features/link/nodes/AutoLinkNode.ts"],"sourcesContent":["import type { ElementNode, LexicalNode, RangeSelection } from 'lexical'\n\nimport { $applyNodeReplacement, $isElementNode } from 'lexical'\n\nimport type { LinkFields, SerializedAutoLinkNode } from './types.js'\n\nimport { LinkNode } from './LinkNode.js'\n\n// Custom node type to override `canInsertTextAfter` that will\n// allow typing within the link\n\nexport class AutoLinkNode extends LinkNode {\n static clone(node: AutoLinkNode): AutoLinkNode {\n return new AutoLinkNode({ id: undefined, fields: node.__fields, key: node.__key })\n }\n\n static getType(): string {\n return 'autolink'\n }\n\n static importDOM(): null {\n // TODO: Should link node should handle the import over autolink?\n return null\n }\n\n static importJSON(serializedNode: SerializedAutoLinkNode): AutoLinkNode {\n if (\n serializedNode.version === 1 &&\n typeof serializedNode.fields?.doc?.value === 'object' &&\n serializedNode.fields?.doc?.value?.id\n ) {\n serializedNode.fields.doc.value = serializedNode.fields.doc.value.id\n serializedNode.version = 2\n }\n\n const node = $createAutoLinkNode({ fields: serializedNode.fields })\n\n node.setFormat(serializedNode.format)\n node.setIndent(serializedNode.indent)\n node.setDirection(serializedNode.direction)\n return node\n }\n\n // @ts-expect-error\n exportJSON(): SerializedAutoLinkNode {\n const serialized = super.exportJSON()\n return {\n type: 'autolink',\n children: serialized.children,\n direction: serialized.direction,\n fields: serialized.fields,\n format: serialized.format,\n indent: serialized.indent,\n version: 2,\n }\n }\n\n insertNewAfter(selection: RangeSelection, restoreSelection = true): ElementNode | null {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection)\n if ($isElementNode(element)) {\n const linkNode = $createAutoLinkNode({ fields: this.__fields })\n element.append(linkNode)\n return linkNode\n }\n return null\n }\n}\n\nexport function $createAutoLinkNode({ fields }: { fields: LinkFields }): AutoLinkNode {\n return $applyNodeReplacement(new AutoLinkNode({ id: undefined, fields }))\n}\nexport function $isAutoLinkNode(node: LexicalNode | null | undefined): node is AutoLinkNode {\n return node instanceof AutoLinkNode\n}\n"],"names":["$applyNodeReplacement","$isElementNode","LinkNode","AutoLinkNode","clone","node","id","undefined","fields","__fields","key","__key","getType","importDOM","importJSON","serializedNode","version","doc","value","$createAutoLinkNode","setFormat","format","setIndent","indent","setDirection","direction","exportJSON","serialized","type","children","insertNewAfter","selection","restoreSelection","element","getParentOrThrow","linkNode","append","$isAutoLinkNode"],"mappings":"AAEA,SAASA,qBAAqB,EAAEC,cAAc,QAAQ,UAAS;AAI/D,SAASC,QAAQ,QAAQ,gBAAe;AAExC,8DAA8D;AAC9D,+BAA+B;AAE/B,OAAO,MAAMC,qBAAqBD;IAChC,OAAOE,MAAMC,IAAkB,EAAgB;QAC7C,OAAO,IAAIF,aAAa;YAAEG,IAAIC;YAAWC,QAAQH,KAAKI,QAAQ;YAAEC,KAAKL,KAAKM,KAAK;QAAC;IAClF;IAEA,OAAOC,UAAkB;QACvB,OAAO;IACT;IAEA,OAAOC,YAAkB;QACvB,iEAAiE;QACjE,OAAO;IACT;IAEA,OAAOC,WAAWC,cAAsC,EAAgB;QACtE,IACEA,eAAeC,OAAO,KAAK,KAC3B,OAAOD,eAAeP,MAAM,EAAES,KAAKC,UAAU,YAC7CH,eAAeP,MAAM,EAAES,KAAKC,OAAOZ,IACnC;YACAS,eAAeP,MAAM,CAACS,GAAG,CAACC,KAAK,GAAGH,eAAeP,MAAM,CAACS,GAAG,CAACC,KAAK,CAACZ,EAAE;YACpES,eAAeC,OAAO,GAAG;QAC3B;QAEA,MAAMX,OAAOc,oBAAoB;YAAEX,QAAQO,eAAeP,MAAM;QAAC;QAEjEH,KAAKe,SAAS,CAACL,eAAeM,MAAM;QACpChB,KAAKiB,SAAS,CAACP,eAAeQ,MAAM;QACpClB,KAAKmB,YAAY,CAACT,eAAeU,SAAS;QAC1C,OAAOpB;IACT;IAEA,mBAAmB;IACnBqB,aAAqC;QACnC,MAAMC,aAAa,KAAK,CAACD;QACzB,OAAO;YACLE,MAAM;YACNC,UAAUF,WAAWE,QAAQ;YAC7BJ,WAAWE,WAAWF,SAAS;YAC/BjB,QAAQmB,WAAWnB,MAAM;YACzBa,QAAQM,WAAWN,MAAM;YACzBE,QAAQI,WAAWJ,MAAM;YACzBP,SAAS;QACX;IACF;IAEAc,eAAeC,SAAyB,EAAEC,mBAAmB,IAAI,EAAsB;QACrF,MAAMC,UAAU,IAAI,CAACC,gBAAgB,GAAGJ,cAAc,CAACC,WAAWC;QAClE,IAAI/B,eAAegC,UAAU;YAC3B,MAAME,WAAWhB,oBAAoB;gBAAEX,QAAQ,IAAI,CAACC,QAAQ;YAAC;YAC7DwB,QAAQG,MAAM,CAACD;YACf,OAAOA;QACT;QACA,OAAO;IACT;AACF;AAEA,OAAO,SAAShB,oBAAoB,EAAEX,MAAM,EAA0B;IACpE,OAAOR,sBAAsB,IAAIG,aAAa;QAAEG,IAAIC;QAAWC;IAAO;AACxE;AACA,OAAO,SAAS6B,gBAAgBhC,IAAoC;IAClE,OAAOA,gBAAgBF;AACzB"}
@@ -83,7 +83,7 @@ const SUPPORTED_URL_PROTOCOLS = new Set([
83
83
  exportJSON() {
84
84
  const returnObject = {
85
85
  ...super.exportJSON(),
86
- type: this.getType(),
86
+ type: 'link',
87
87
  fields: this.getFields(),
88
88
  version: 3
89
89
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/link/nodes/LinkNode.ts"],"sourcesContent":["import type {\n BaseSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode as ElementNodeType,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n RangeSelection,\n} from 'lexical'\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from '@lexical/utils'\nimport ObjectID from 'bson-objectid'\nimport {\n $applyNodeReplacement,\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n ElementNode,\n createCommand,\n} from 'lexical'\n\nimport type { LinkPayload } from '../plugins/floatingLinkEditor/types.js'\nimport type { LinkFields, SerializedLinkNode } from './types.js'\n\nconst SUPPORTED_URL_PROTOCOLS = new Set(['http:', 'https:', 'mailto:', 'sms:', 'tel:'])\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n __fields: LinkFields\n __id: string\n\n constructor({\n id,\n fields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: undefined,\n },\n key,\n }: {\n fields: LinkFields\n id: string\n key?: NodeKey\n }) {\n super(key)\n this.__fields = fields\n this.__id = id\n }\n\n static clone(node: LinkNode): LinkNode {\n return new LinkNode({\n id: node.__id,\n fields: node.__fields,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'link'\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n a: (node: Node) => ({\n conversion: $convertAnchorElement,\n priority: 1,\n }),\n }\n }\n\n static importJSON(serializedNode: SerializedLinkNode): LinkNode {\n if (\n serializedNode.version === 1 &&\n typeof serializedNode.fields?.doc?.value === 'object' &&\n serializedNode.fields?.doc?.value?.id\n ) {\n serializedNode.fields.doc.value = serializedNode.fields.doc.value.id\n serializedNode.version = 2\n }\n\n if (serializedNode.version === 2 && !serializedNode.id) {\n serializedNode.id = new ObjectID.default().toHexString()\n serializedNode.version = 3\n }\n\n const node = $createLinkNode({\n id: serializedNode.id,\n fields: serializedNode.fields,\n })\n node.setFormat(serializedNode.format)\n node.setIndent(serializedNode.indent)\n node.setDirection(serializedNode.direction)\n return node\n }\n\n canBeEmpty(): false {\n return false\n }\n\n canInsertTextAfter(): false {\n return false\n }\n\n canInsertTextBefore(): false {\n return false\n }\n\n createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement('a')\n if (this.__fields?.linkType === 'custom') {\n element.href = this.sanitizeUrl(this.__fields.url ?? '')\n }\n if (this.__fields?.newTab ?? false) {\n element.target = '_blank'\n }\n\n if (this.__fields?.newTab === true && this.__fields?.linkType === 'custom') {\n element.rel = manageRel(element.rel, 'add', 'noopener')\n }\n\n addClassNamesToElement(element, config.theme.link)\n return element\n }\n\n exportJSON(): SerializedLinkNode {\n const returnObject: SerializedLinkNode = {\n ...super.exportJSON(),\n type: this.getType(),\n fields: this.getFields(),\n version: 3,\n }\n const id = this.getID()\n if (id) {\n returnObject.id = id\n }\n return returnObject\n }\n\n extractWithChild(\n child: LexicalNode,\n selection: BaseSelection,\n destination: 'clone' | 'html',\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n selection.getTextContent().length > 0\n )\n }\n\n getFields(): LinkFields {\n return this.getLatest().__fields\n }\n\n getID(): string {\n return this.getLatest().__id\n }\n\n insertNewAfter(selection: RangeSelection, restoreSelection = true): ElementNodeType | null {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection)\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode({ fields: this.__fields })\n element.append(linkNode)\n return linkNode\n }\n return null\n }\n\n isInline(): true {\n return true\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url)\n // eslint-disable-next-line no-script-url\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return 'about:blank'\n }\n } catch (e) {\n return 'https://'\n }\n return url\n }\n\n setFields(fields: LinkFields): void {\n const writable = this.getWritable()\n writable.__fields = fields\n }\n\n updateDOM(prevNode: LinkNode, anchor: HTMLAnchorElement, config: EditorConfig): boolean {\n const url = this.__fields?.url\n const newTab = this.__fields?.newTab\n if (url != null && url !== prevNode.__fields?.url && this.__fields?.linkType === 'custom') {\n anchor.href = url\n }\n if (this.__fields?.linkType === 'internal' && prevNode.__fields?.linkType === 'custom') {\n anchor.removeAttribute('href')\n }\n\n // TODO: not 100% sure why we're settign rel to '' - revisit\n // Start rel config here, then check newTab below\n if (anchor.rel == null) {\n anchor.rel = ''\n }\n\n if (newTab !== prevNode.__fields?.newTab) {\n if (newTab ?? false) {\n anchor.target = '_blank'\n if (this.__fields?.linkType === 'custom') {\n anchor.rel = manageRel(anchor.rel, 'add', 'noopener')\n }\n } else {\n anchor.removeAttribute('target')\n anchor.rel = manageRel(anchor.rel, 'remove', 'noopener')\n }\n }\n\n return false\n }\n}\n\nfunction $convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node: LinkNode | null = null\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent\n if (content !== null && content !== '') {\n node = $createLinkNode({\n id: new ObjectID.default().toHexString(),\n fields: {\n doc: null,\n linkType: 'custom',\n newTab: domNode.getAttribute('target') === '_blank',\n url: domNode.getAttribute('href') ?? '',\n },\n })\n }\n }\n return { node }\n}\n\nexport function $createLinkNode({ id, fields }: { fields: LinkFields; id?: string }): LinkNode {\n return $applyNodeReplacement(\n new LinkNode({\n id: id ?? new ObjectID.default().toHexString(),\n fields,\n }),\n )\n}\n\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<LinkPayload | null> =\n createCommand('TOGGLE_LINK_COMMAND')\n\nexport function $toggleLink(payload: LinkPayload): void {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection) && !payload.selectedNodes.length) {\n return\n }\n const nodes = $isRangeSelection(selection) ? selection.extract() : payload.selectedNodes\n\n if (payload === null) {\n // Remove LinkNodes\n nodes.forEach((node) => {\n const parent = node.getParent()\n\n if ($isLinkNode(parent)) {\n const children = parent.getChildren()\n\n for (let i = 0; i < children.length; i += 1) {\n parent.insertBefore(children[i])\n }\n\n parent.remove()\n }\n })\n } else {\n // Add or merge LinkNodes\n if (nodes.length === 1) {\n const firstNode = nodes[0]\n // if the first node is a LinkNode or if its\n // parent is a LinkNode, we update the URL, target and rel.\n const linkNode: LinkNode | null = $isLinkNode(firstNode)\n ? firstNode\n : $getLinkAncestor(firstNode)\n if (linkNode !== null) {\n linkNode.setFields(payload.fields)\n\n if (payload.text != null && payload.text !== linkNode.getTextContent()) {\n // remove all children and add child with new textcontent:\n linkNode.append($createTextNode(payload.text))\n linkNode.getChildren().forEach((child) => {\n if (child !== linkNode.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n }\n\n let prevParent: ElementNodeType | LinkNode | null = null\n let linkNode: LinkNode | null = null\n\n nodes.forEach((node) => {\n const parent = node.getParent()\n\n if (parent === linkNode || parent === null || ($isElementNode(node) && !node.isInline())) {\n return\n }\n\n if ($isLinkNode(parent)) {\n linkNode = parent\n parent.setFields(payload.fields)\n if (payload.text != null && payload.text !== parent.getTextContent()) {\n // remove all children and add child with new textcontent:\n parent.append($createTextNode(payload.text))\n parent.getChildren().forEach((child) => {\n if (child !== parent.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n\n if (!parent.is(prevParent)) {\n prevParent = parent\n linkNode = $createLinkNode({ fields: payload.fields })\n\n if ($isLinkNode(parent)) {\n if (node.getPreviousSibling() === null) {\n parent.insertBefore(linkNode)\n } else {\n parent.insertAfter(linkNode)\n }\n } else {\n node.insertBefore(linkNode)\n }\n }\n\n if ($isLinkNode(node)) {\n if (node.is(linkNode)) {\n return\n }\n if (linkNode !== null) {\n const children = node.getChildren()\n\n for (let i = 0; i < children.length; i += 1) {\n linkNode.append(children[i])\n }\n }\n\n node.remove()\n return\n }\n\n if (linkNode !== null) {\n linkNode.append(node)\n }\n })\n }\n}\n\nfunction $getLinkAncestor(node: LexicalNode): LinkNode | null {\n return $getAncestor(node, (ancestor) => $isLinkNode(ancestor)) as LinkNode\n}\n\nfunction $getAncestor(\n node: LexicalNode,\n predicate: (ancestor: LexicalNode) => boolean,\n): LexicalNode | null {\n let parent: LexicalNode | null = node\n while (parent !== null && (parent = parent.getParent()) !== null && !predicate(parent));\n return parent\n}\n\nfunction manageRel(input: string, action: 'add' | 'remove', value: string): string {\n let result: string\n let mutableInput = `${input}`\n if (action === 'add') {\n // if we somehow got out of sync - clean up\n if (mutableInput.includes(value)) {\n const re = new RegExp(value, 'g')\n mutableInput = mutableInput.replace(re, '').trim()\n }\n mutableInput = mutableInput.trim()\n result = mutableInput.length === 0 ? `${value}` : `${mutableInput} ${value}`\n } else {\n const re = new RegExp(value, 'g')\n result = mutableInput.replace(re, '').trim()\n }\n return result\n}\n"],"names":["addClassNamesToElement","isHTMLAnchorElement","ObjectID","$applyNodeReplacement","$createTextNode","$getSelection","$isElementNode","$isRangeSelection","ElementNode","createCommand","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","__fields","__id","constructor","id","fields","doc","linkType","newTab","url","undefined","key","clone","node","__key","getType","importDOM","a","conversion","$convertAnchorElement","priority","importJSON","serializedNode","version","value","default","toHexString","$createLinkNode","setFormat","format","setIndent","indent","setDirection","direction","canBeEmpty","canInsertTextAfter","canInsertTextBefore","createDOM","config","element","document","createElement","href","sanitizeUrl","target","rel","manageRel","theme","link","exportJSON","returnObject","type","getFields","getID","extractWithChild","child","selection","destination","anchorNode","anchor","getNode","focusNode","focus","isParentOf","getTextContent","length","getLatest","insertNewAfter","restoreSelection","getParentOrThrow","linkNode","append","isInline","parsedUrl","URL","has","protocol","e","setFields","writable","getWritable","updateDOM","prevNode","removeAttribute","domNode","content","textContent","getAttribute","$isLinkNode","TOGGLE_LINK_COMMAND","$toggleLink","payload","selectedNodes","nodes","extract","forEach","parent","getParent","children","getChildren","i","insertBefore","remove","firstNode","$getLinkAncestor","text","getLastChild","prevParent","is","getPreviousSibling","insertAfter","$getAncestor","ancestor","predicate","input","action","result","mutableInput","includes","re","RegExp","replace","trim"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/features/link/nodes/LinkNode.ts"],"sourcesContent":["import type {\n BaseSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode as ElementNodeType,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n RangeSelection,\n} from 'lexical'\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from '@lexical/utils'\nimport ObjectID from 'bson-objectid'\nimport {\n $applyNodeReplacement,\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n ElementNode,\n createCommand,\n} from 'lexical'\n\nimport type { LinkPayload } from '../plugins/floatingLinkEditor/types.js'\nimport type { LinkFields, SerializedLinkNode } from './types.js'\n\nconst SUPPORTED_URL_PROTOCOLS = new Set(['http:', 'https:', 'mailto:', 'sms:', 'tel:'])\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n __fields: LinkFields\n __id: string\n\n constructor({\n id,\n fields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: undefined,\n },\n key,\n }: {\n fields: LinkFields\n id: string\n key?: NodeKey\n }) {\n super(key)\n this.__fields = fields\n this.__id = id\n }\n\n static clone(node: LinkNode): LinkNode {\n return new LinkNode({\n id: node.__id,\n fields: node.__fields,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'link'\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n a: (node: Node) => ({\n conversion: $convertAnchorElement,\n priority: 1,\n }),\n }\n }\n\n static importJSON(serializedNode: SerializedLinkNode): LinkNode {\n if (\n serializedNode.version === 1 &&\n typeof serializedNode.fields?.doc?.value === 'object' &&\n serializedNode.fields?.doc?.value?.id\n ) {\n serializedNode.fields.doc.value = serializedNode.fields.doc.value.id\n serializedNode.version = 2\n }\n\n if (serializedNode.version === 2 && !serializedNode.id) {\n serializedNode.id = new ObjectID.default().toHexString()\n serializedNode.version = 3\n }\n\n const node = $createLinkNode({\n id: serializedNode.id,\n fields: serializedNode.fields,\n })\n node.setFormat(serializedNode.format)\n node.setIndent(serializedNode.indent)\n node.setDirection(serializedNode.direction)\n return node\n }\n\n canBeEmpty(): false {\n return false\n }\n\n canInsertTextAfter(): false {\n return false\n }\n\n canInsertTextBefore(): false {\n return false\n }\n\n createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement('a')\n if (this.__fields?.linkType === 'custom') {\n element.href = this.sanitizeUrl(this.__fields.url ?? '')\n }\n if (this.__fields?.newTab ?? false) {\n element.target = '_blank'\n }\n\n if (this.__fields?.newTab === true && this.__fields?.linkType === 'custom') {\n element.rel = manageRel(element.rel, 'add', 'noopener')\n }\n\n addClassNamesToElement(element, config.theme.link)\n return element\n }\n\n exportJSON(): SerializedLinkNode {\n const returnObject: SerializedLinkNode = {\n ...super.exportJSON(),\n type: 'link',\n fields: this.getFields(),\n version: 3,\n }\n const id = this.getID()\n if (id) {\n returnObject.id = id\n }\n return returnObject\n }\n\n extractWithChild(\n child: LexicalNode,\n selection: BaseSelection,\n destination: 'clone' | 'html',\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n selection.getTextContent().length > 0\n )\n }\n\n getFields(): LinkFields {\n return this.getLatest().__fields\n }\n\n getID(): string {\n return this.getLatest().__id\n }\n\n insertNewAfter(selection: RangeSelection, restoreSelection = true): ElementNodeType | null {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection)\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode({ fields: this.__fields })\n element.append(linkNode)\n return linkNode\n }\n return null\n }\n\n isInline(): true {\n return true\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url)\n // eslint-disable-next-line no-script-url\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return 'about:blank'\n }\n } catch (e) {\n return 'https://'\n }\n return url\n }\n\n setFields(fields: LinkFields): void {\n const writable = this.getWritable()\n writable.__fields = fields\n }\n\n updateDOM(prevNode: LinkNode, anchor: HTMLAnchorElement, config: EditorConfig): boolean {\n const url = this.__fields?.url\n const newTab = this.__fields?.newTab\n if (url != null && url !== prevNode.__fields?.url && this.__fields?.linkType === 'custom') {\n anchor.href = url\n }\n if (this.__fields?.linkType === 'internal' && prevNode.__fields?.linkType === 'custom') {\n anchor.removeAttribute('href')\n }\n\n // TODO: not 100% sure why we're settign rel to '' - revisit\n // Start rel config here, then check newTab below\n if (anchor.rel == null) {\n anchor.rel = ''\n }\n\n if (newTab !== prevNode.__fields?.newTab) {\n if (newTab ?? false) {\n anchor.target = '_blank'\n if (this.__fields?.linkType === 'custom') {\n anchor.rel = manageRel(anchor.rel, 'add', 'noopener')\n }\n } else {\n anchor.removeAttribute('target')\n anchor.rel = manageRel(anchor.rel, 'remove', 'noopener')\n }\n }\n\n return false\n }\n}\n\nfunction $convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node: LinkNode | null = null\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent\n if (content !== null && content !== '') {\n node = $createLinkNode({\n id: new ObjectID.default().toHexString(),\n fields: {\n doc: null,\n linkType: 'custom',\n newTab: domNode.getAttribute('target') === '_blank',\n url: domNode.getAttribute('href') ?? '',\n },\n })\n }\n }\n return { node }\n}\n\nexport function $createLinkNode({ id, fields }: { fields: LinkFields; id?: string }): LinkNode {\n return $applyNodeReplacement(\n new LinkNode({\n id: id ?? new ObjectID.default().toHexString(),\n fields,\n }),\n )\n}\n\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<LinkPayload | null> =\n createCommand('TOGGLE_LINK_COMMAND')\n\nexport function $toggleLink(payload: LinkPayload): void {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection) && !payload.selectedNodes.length) {\n return\n }\n const nodes = $isRangeSelection(selection) ? selection.extract() : payload.selectedNodes\n\n if (payload === null) {\n // Remove LinkNodes\n nodes.forEach((node) => {\n const parent = node.getParent()\n\n if ($isLinkNode(parent)) {\n const children = parent.getChildren()\n\n for (let i = 0; i < children.length; i += 1) {\n parent.insertBefore(children[i])\n }\n\n parent.remove()\n }\n })\n } else {\n // Add or merge LinkNodes\n if (nodes.length === 1) {\n const firstNode = nodes[0]\n // if the first node is a LinkNode or if its\n // parent is a LinkNode, we update the URL, target and rel.\n const linkNode: LinkNode | null = $isLinkNode(firstNode)\n ? firstNode\n : $getLinkAncestor(firstNode)\n if (linkNode !== null) {\n linkNode.setFields(payload.fields)\n\n if (payload.text != null && payload.text !== linkNode.getTextContent()) {\n // remove all children and add child with new textcontent:\n linkNode.append($createTextNode(payload.text))\n linkNode.getChildren().forEach((child) => {\n if (child !== linkNode.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n }\n\n let prevParent: ElementNodeType | LinkNode | null = null\n let linkNode: LinkNode | null = null\n\n nodes.forEach((node) => {\n const parent = node.getParent()\n\n if (parent === linkNode || parent === null || ($isElementNode(node) && !node.isInline())) {\n return\n }\n\n if ($isLinkNode(parent)) {\n linkNode = parent\n parent.setFields(payload.fields)\n if (payload.text != null && payload.text !== parent.getTextContent()) {\n // remove all children and add child with new textcontent:\n parent.append($createTextNode(payload.text))\n parent.getChildren().forEach((child) => {\n if (child !== parent.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n\n if (!parent.is(prevParent)) {\n prevParent = parent\n linkNode = $createLinkNode({ fields: payload.fields })\n\n if ($isLinkNode(parent)) {\n if (node.getPreviousSibling() === null) {\n parent.insertBefore(linkNode)\n } else {\n parent.insertAfter(linkNode)\n }\n } else {\n node.insertBefore(linkNode)\n }\n }\n\n if ($isLinkNode(node)) {\n if (node.is(linkNode)) {\n return\n }\n if (linkNode !== null) {\n const children = node.getChildren()\n\n for (let i = 0; i < children.length; i += 1) {\n linkNode.append(children[i])\n }\n }\n\n node.remove()\n return\n }\n\n if (linkNode !== null) {\n linkNode.append(node)\n }\n })\n }\n}\n\nfunction $getLinkAncestor(node: LexicalNode): LinkNode | null {\n return $getAncestor(node, (ancestor) => $isLinkNode(ancestor)) as LinkNode\n}\n\nfunction $getAncestor(\n node: LexicalNode,\n predicate: (ancestor: LexicalNode) => boolean,\n): LexicalNode | null {\n let parent: LexicalNode | null = node\n while (parent !== null && (parent = parent.getParent()) !== null && !predicate(parent));\n return parent\n}\n\nfunction manageRel(input: string, action: 'add' | 'remove', value: string): string {\n let result: string\n let mutableInput = `${input}`\n if (action === 'add') {\n // if we somehow got out of sync - clean up\n if (mutableInput.includes(value)) {\n const re = new RegExp(value, 'g')\n mutableInput = mutableInput.replace(re, '').trim()\n }\n mutableInput = mutableInput.trim()\n result = mutableInput.length === 0 ? `${value}` : `${mutableInput} ${value}`\n } else {\n const re = new RegExp(value, 'g')\n result = mutableInput.replace(re, '').trim()\n }\n return result\n}\n"],"names":["addClassNamesToElement","isHTMLAnchorElement","ObjectID","$applyNodeReplacement","$createTextNode","$getSelection","$isElementNode","$isRangeSelection","ElementNode","createCommand","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","__fields","__id","constructor","id","fields","doc","linkType","newTab","url","undefined","key","clone","node","__key","getType","importDOM","a","conversion","$convertAnchorElement","priority","importJSON","serializedNode","version","value","default","toHexString","$createLinkNode","setFormat","format","setIndent","indent","setDirection","direction","canBeEmpty","canInsertTextAfter","canInsertTextBefore","createDOM","config","element","document","createElement","href","sanitizeUrl","target","rel","manageRel","theme","link","exportJSON","returnObject","type","getFields","getID","extractWithChild","child","selection","destination","anchorNode","anchor","getNode","focusNode","focus","isParentOf","getTextContent","length","getLatest","insertNewAfter","restoreSelection","getParentOrThrow","linkNode","append","isInline","parsedUrl","URL","has","protocol","e","setFields","writable","getWritable","updateDOM","prevNode","removeAttribute","domNode","content","textContent","getAttribute","$isLinkNode","TOGGLE_LINK_COMMAND","$toggleLink","payload","selectedNodes","nodes","extract","forEach","parent","getParent","children","getChildren","i","insertBefore","remove","firstNode","$getLinkAncestor","text","getLastChild","prevParent","is","getPreviousSibling","insertAfter","$getAncestor","ancestor","predicate","input","action","result","mutableInput","includes","re","RegExp","replace","trim"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { SerializedElementNode, Spread } from 'lexical';
1
+ import type { SerializedElementNode, SerializedLexicalNode, Spread } from 'lexical';
2
2
  export type LinkFields = {
3
3
  [key: string]: unknown;
4
4
  doc: {
@@ -12,9 +12,12 @@ export type LinkFields = {
12
12
  newTab: boolean;
13
13
  url: string;
14
14
  };
15
- export type SerializedLinkNode = Spread<{
15
+ export type SerializedLinkNode<T extends SerializedLexicalNode = SerializedLexicalNode> = Spread<{
16
16
  fields: LinkFields;
17
17
  id?: string;
18
- }, SerializedElementNode>;
19
- export type SerializedAutoLinkNode = Omit<SerializedLinkNode, 'id'>;
18
+ type: 'link';
19
+ }, SerializedElementNode<T>>;
20
+ export type SerializedAutoLinkNode<T extends SerializedLexicalNode = SerializedLexicalNode> = {
21
+ type: 'autolink';
22
+ } & Omit<SerializedLinkNode<T>, 'id' | 'type'>;
20
23
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/features/link/nodes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAE5D,MAAM,MAAM,UAAU,GAAG;IAEvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,GAAG,EAAE;QACH,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EACD;YAEE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;YACtB,EAAE,EAAE,MAAM,CAAA;SACX,GACD,MAAM,CAAA;KACX,GAAG,IAAI,CAAA;IACR,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CACrC;IACE,MAAM,EAAE,UAAU,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,EACD,qBAAqB,CACtB,CAAA;AACD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/features/link/nodes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEnF,MAAM,MAAM,UAAU,GAAG;IAEvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IACtB,GAAG,EAAE;QACH,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EACD;YAEE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;YACtB,EAAE,EAAE,MAAM,CAAA;SACX,GACD,MAAM,CAAA;KACX,GAAG,IAAI,CAAA;IACR,QAAQ,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,IAAI,MAAM,CAC9F;IACE,MAAM,EAAE,UAAU,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb,EACD,qBAAqB,CAAC,CAAC,CAAC,CACzB,CAAA;AACD,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,IAAI;IAC5F,IAAI,EAAE,UAAU,CAAA;CACjB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAA"}