@payloadcms/richtext-lexical 3.0.0-beta.3 → 3.0.0-beta.30

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 (645) hide show
  1. package/dist/cell/index.d.ts +1 -1
  2. package/dist/cell/index.d.ts.map +1 -1
  3. package/dist/cell/index.js +2 -4
  4. package/dist/cell/index.js.map +1 -1
  5. package/dist/exports/components.d.ts +8 -2
  6. package/dist/exports/components.d.ts.map +1 -1
  7. package/dist/exports/components.js +8 -2
  8. package/dist/exports/components.js.map +1 -1
  9. package/dist/field/Field.d.ts +0 -2
  10. package/dist/field/Field.d.ts.map +1 -1
  11. package/dist/field/Field.js.map +1 -1
  12. package/dist/field/features/align/feature.client.d.ts.map +1 -1
  13. package/dist/field/features/align/feature.client.js +127 -54
  14. package/dist/field/features/align/feature.client.js.map +1 -1
  15. package/dist/field/features/align/toolbarAlignGroup.d.ts +3 -0
  16. package/dist/field/features/align/toolbarAlignGroup.d.ts.map +1 -0
  17. package/dist/field/features/align/toolbarAlignGroup.js +12 -0
  18. package/dist/field/features/align/toolbarAlignGroup.js.map +1 -0
  19. package/dist/field/features/blockquote/feature.client.d.ts +1 -1
  20. package/dist/field/features/blockquote/feature.client.d.ts.map +1 -1
  21. package/dist/field/features/blockquote/feature.client.js +53 -40
  22. package/dist/field/features/blockquote/feature.client.js.map +1 -1
  23. package/dist/field/features/blockquote/feature.server.d.ts +1 -1
  24. package/dist/field/features/blockquote/feature.server.d.ts.map +1 -1
  25. package/dist/field/features/blockquote/feature.server.js +7 -7
  26. package/dist/field/features/blockquote/feature.server.js.map +1 -1
  27. package/dist/field/features/blockquote/markdownTransformer.d.ts.map +1 -1
  28. package/dist/field/features/blockquote/markdownTransformer.js +2 -4
  29. package/dist/field/features/blockquote/markdownTransformer.js.map +1 -1
  30. package/dist/field/features/blocks/component/BlockContent.d.ts.map +1 -1
  31. package/dist/field/features/blocks/component/BlockContent.js +3 -5
  32. package/dist/field/features/blocks/component/BlockContent.js.map +1 -1
  33. package/dist/field/features/blocks/component/index.d.ts.map +1 -1
  34. package/dist/field/features/blocks/component/index.js +37 -4
  35. package/dist/field/features/blocks/component/index.js.map +1 -1
  36. package/dist/field/features/blocks/drawer/index.d.ts.map +1 -1
  37. package/dist/field/features/blocks/drawer/index.js +2 -4
  38. package/dist/field/features/blocks/drawer/index.js.map +1 -1
  39. package/dist/field/features/blocks/feature.client.d.ts.map +1 -1
  40. package/dist/field/features/blocks/feature.client.js +56 -27
  41. package/dist/field/features/blocks/feature.client.js.map +1 -1
  42. package/dist/field/features/blocks/feature.server.d.ts +2 -5
  43. package/dist/field/features/blocks/feature.server.d.ts.map +1 -1
  44. package/dist/field/features/blocks/feature.server.js +109 -77
  45. package/dist/field/features/blocks/feature.server.js.map +1 -1
  46. package/dist/field/features/blocks/nodes/BlocksNode.d.ts +1 -3
  47. package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  48. package/dist/field/features/blocks/nodes/BlocksNode.js +1 -2
  49. package/dist/field/features/blocks/nodes/BlocksNode.js.map +1 -1
  50. package/dist/field/features/blocks/plugin/commands.d.ts.map +1 -1
  51. package/dist/field/features/blocks/plugin/commands.js +1 -2
  52. package/dist/field/features/blocks/plugin/commands.js.map +1 -1
  53. package/dist/field/features/blocks/plugin/index.d.ts +3 -2
  54. package/dist/field/features/blocks/plugin/index.d.ts.map +1 -1
  55. package/dist/field/features/blocks/plugin/index.js +5 -8
  56. package/dist/field/features/blocks/plugin/index.js.map +1 -1
  57. package/dist/field/features/blocks/populationPromise.d.ts.map +1 -1
  58. package/dist/field/features/blocks/populationPromise.js +4 -18
  59. package/dist/field/features/blocks/populationPromise.js.map +1 -1
  60. package/dist/field/features/blocks/validate.d.ts.map +1 -1
  61. package/dist/field/features/blocks/validate.js +22 -36
  62. package/dist/field/features/blocks/validate.js.map +1 -1
  63. package/dist/field/features/converters/html/field/index.d.ts +8 -2
  64. package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
  65. package/dist/field/features/converters/html/field/index.js +6 -3
  66. package/dist/field/features/converters/html/field/index.js.map +1 -1
  67. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.d.ts.map +1 -1
  68. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.js.map +1 -1
  69. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.d.ts.map +1 -1
  70. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.js +1 -1
  71. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.js.map +1 -1
  72. package/dist/field/features/debug/testRecorder/plugin/index.d.ts +5 -0
  73. package/dist/field/features/debug/testRecorder/plugin/index.d.ts.map +1 -0
  74. package/dist/field/features/debug/{testrecorder → testRecorder}/plugin/index.js +2 -4
  75. package/dist/field/features/debug/testRecorder/plugin/index.js.map +1 -0
  76. package/dist/field/features/debug/{treeview → treeView}/feature.client.d.ts.map +1 -1
  77. package/dist/field/features/debug/{treeview → treeView}/feature.client.js.map +1 -1
  78. package/dist/field/features/debug/{treeview → treeView}/feature.server.d.ts.map +1 -1
  79. package/dist/field/features/debug/{treeview → treeView}/feature.server.js +1 -1
  80. package/dist/field/features/debug/{treeview → treeView}/feature.server.js.map +1 -1
  81. package/dist/field/features/debug/treeView/plugin/index.d.ts +4 -0
  82. package/dist/field/features/debug/treeView/plugin/index.d.ts.map +1 -0
  83. package/dist/field/features/debug/{treeview → treeView}/plugin/index.js +4 -6
  84. package/dist/field/features/debug/treeView/plugin/index.js.map +1 -0
  85. package/dist/field/features/format/bold/feature.client.d.ts.map +1 -1
  86. package/dist/field/features/format/bold/feature.client.js +26 -23
  87. package/dist/field/features/format/bold/feature.client.js.map +1 -1
  88. package/dist/field/features/format/inlineCode/feature.client.d.ts.map +1 -0
  89. package/dist/field/features/format/inlineCode/feature.client.js +46 -0
  90. package/dist/field/features/format/inlineCode/feature.client.js.map +1 -0
  91. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.d.ts.map +1 -1
  92. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.js +1 -1
  93. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.js.map +1 -1
  94. package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.d.ts.map +1 -1
  95. package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.js.map +1 -1
  96. package/dist/field/features/format/italic/feature.client.d.ts.map +1 -1
  97. package/dist/field/features/format/italic/feature.client.js +27 -24
  98. package/dist/field/features/format/italic/feature.client.js.map +1 -1
  99. package/dist/field/features/format/shared/toolbarFormatGroup.d.ts +3 -0
  100. package/dist/field/features/format/shared/toolbarFormatGroup.d.ts.map +1 -0
  101. package/dist/field/features/format/shared/toolbarFormatGroup.js +10 -0
  102. package/dist/field/features/format/shared/toolbarFormatGroup.js.map +1 -0
  103. package/dist/field/features/format/strikethrough/feature.client.d.ts.map +1 -1
  104. package/dist/field/features/format/strikethrough/feature.client.js +27 -24
  105. package/dist/field/features/format/strikethrough/feature.client.js.map +1 -1
  106. package/dist/field/features/format/subscript/feature.client.d.ts.map +1 -1
  107. package/dist/field/features/format/subscript/feature.client.js +25 -22
  108. package/dist/field/features/format/subscript/feature.client.js.map +1 -1
  109. package/dist/field/features/format/superscript/feature.client.d.ts.map +1 -1
  110. package/dist/field/features/format/superscript/feature.client.js +25 -22
  111. package/dist/field/features/format/superscript/feature.client.js.map +1 -1
  112. package/dist/field/features/format/underline/feature.client.d.ts.map +1 -1
  113. package/dist/field/features/format/underline/feature.client.js +25 -22
  114. package/dist/field/features/format/underline/feature.client.js.map +1 -1
  115. package/dist/field/features/heading/feature.client.d.ts.map +1 -1
  116. package/dist/field/features/heading/feature.client.js +71 -54
  117. package/dist/field/features/heading/feature.client.js.map +1 -1
  118. package/dist/field/features/heading/feature.server.d.ts.map +1 -1
  119. package/dist/field/features/heading/feature.server.js +5 -5
  120. package/dist/field/features/heading/feature.server.js.map +1 -1
  121. package/dist/field/features/heading/markdownTransformer.d.ts.map +1 -1
  122. package/dist/field/features/heading/markdownTransformer.js +1 -2
  123. package/dist/field/features/heading/markdownTransformer.js.map +1 -1
  124. package/dist/field/features/horizontalRule/component/index.d.ts +10 -0
  125. package/dist/field/features/horizontalRule/component/index.d.ts.map +1 -0
  126. package/dist/field/features/horizontalRule/component/index.js +62 -0
  127. package/dist/field/features/horizontalRule/component/index.js.map +1 -0
  128. package/dist/field/features/horizontalRule/feature.client.d.ts +3 -0
  129. package/dist/field/features/horizontalRule/feature.client.d.ts.map +1 -0
  130. package/dist/field/features/horizontalRule/feature.client.js +76 -0
  131. package/dist/field/features/horizontalRule/feature.client.js.map +1 -0
  132. package/dist/field/features/horizontalRule/feature.server.d.ts +3 -0
  133. package/dist/field/features/horizontalRule/feature.server.d.ts.map +1 -0
  134. package/dist/field/features/horizontalRule/feature.server.js +37 -0
  135. package/dist/field/features/horizontalRule/feature.server.js.map +1 -0
  136. package/dist/field/features/horizontalRule/markdownTransformer.d.ts +3 -0
  137. package/dist/field/features/horizontalRule/markdownTransformer.d.ts.map +1 -0
  138. package/dist/field/features/horizontalRule/markdownTransformer.js +23 -0
  139. package/dist/field/features/horizontalRule/markdownTransformer.js.map +1 -0
  140. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.d.ts +53 -0
  141. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.d.ts.map +1 -0
  142. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js +88 -0
  143. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js.map +1 -0
  144. package/dist/field/features/horizontalRule/plugin/index.d.ts +7 -0
  145. package/dist/field/features/horizontalRule/plugin/index.d.ts.map +1 -0
  146. package/dist/field/features/horizontalRule/plugin/index.js +31 -0
  147. package/dist/field/features/horizontalRule/plugin/index.js.map +1 -0
  148. package/dist/field/features/horizontalRule/plugin/index.scss +20 -0
  149. package/dist/field/features/indent/feature.client.d.ts.map +1 -1
  150. package/dist/field/features/indent/feature.client.js +43 -42
  151. package/dist/field/features/indent/feature.client.js.map +1 -1
  152. package/dist/field/features/indent/toolbarIndentGroup.d.ts +3 -0
  153. package/dist/field/features/indent/toolbarIndentGroup.d.ts.map +1 -0
  154. package/dist/field/features/indent/toolbarIndentGroup.js +10 -0
  155. package/dist/field/features/indent/toolbarIndentGroup.js.map +1 -0
  156. package/dist/field/features/link/drawer/baseFields.d.ts +2 -2
  157. package/dist/field/features/link/drawer/baseFields.d.ts.map +1 -1
  158. package/dist/field/features/link/drawer/baseFields.js +30 -43
  159. package/dist/field/features/link/drawer/baseFields.js.map +1 -1
  160. package/dist/field/features/link/drawer/index.js +3 -2
  161. package/dist/field/features/link/drawer/index.js.map +1 -1
  162. package/dist/field/features/link/drawer/types.d.ts +4 -2
  163. package/dist/field/features/link/drawer/types.d.ts.map +1 -1
  164. package/dist/field/features/link/drawer/types.js.map +1 -1
  165. package/dist/field/features/link/feature.client.d.ts.map +1 -1
  166. package/dist/field/features/link/feature.client.js +59 -47
  167. package/dist/field/features/link/feature.client.js.map +1 -1
  168. package/dist/field/features/link/feature.server.d.ts +10 -5
  169. package/dist/field/features/link/feature.server.d.ts.map +1 -1
  170. package/dist/field/features/link/feature.server.js +48 -9
  171. package/dist/field/features/link/feature.server.js.map +1 -1
  172. package/dist/field/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  173. package/dist/field/features/link/nodes/AutoLinkNode.js +1 -2
  174. package/dist/field/features/link/nodes/AutoLinkNode.js.map +1 -1
  175. package/dist/field/features/link/nodes/LinkNode.d.ts +1 -3
  176. package/dist/field/features/link/nodes/LinkNode.d.ts.map +1 -1
  177. package/dist/field/features/link/nodes/LinkNode.js +2 -4
  178. package/dist/field/features/link/nodes/LinkNode.js.map +1 -1
  179. package/dist/field/features/link/plugins/autoLink/index.d.ts +3 -2
  180. package/dist/field/features/link/plugins/autoLink/index.d.ts.map +1 -1
  181. package/dist/field/features/link/plugins/autoLink/index.js +5 -8
  182. package/dist/field/features/link/plugins/autoLink/index.js.map +1 -1
  183. package/dist/field/features/link/plugins/clickableLink/index.d.ts +3 -2
  184. package/dist/field/features/link/plugins/clickableLink/index.d.ts.map +1 -1
  185. package/dist/field/features/link/plugins/clickableLink/index.js +2 -2
  186. package/dist/field/features/link/plugins/clickableLink/index.js.map +1 -1
  187. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -1
  188. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -2
  189. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
  190. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  191. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +93 -69
  192. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  193. package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts +3 -4
  194. package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  195. package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +1 -1
  196. package/dist/field/features/link/plugins/floatingLinkEditor/index.scss +11 -3
  197. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts +1 -3
  198. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -1
  199. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +12 -30
  200. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -1
  201. package/dist/field/features/link/plugins/link/index.d.ts +3 -1
  202. package/dist/field/features/link/plugins/link/index.d.ts.map +1 -1
  203. package/dist/field/features/link/plugins/link/index.js +5 -14
  204. package/dist/field/features/link/plugins/link/index.js.map +1 -1
  205. package/dist/field/features/link/populationPromise.d.ts.map +1 -1
  206. package/dist/field/features/link/populationPromise.js +10 -25
  207. package/dist/field/features/link/populationPromise.js.map +1 -1
  208. package/dist/field/features/link/validate.d.ts +5 -0
  209. package/dist/field/features/link/validate.d.ts.map +1 -0
  210. package/dist/field/features/link/validate.js +32 -0
  211. package/dist/field/features/link/validate.js.map +1 -0
  212. package/dist/field/features/lists/checklist/feature.client.d.ts +1 -1
  213. package/dist/field/features/lists/checklist/feature.client.d.ts.map +1 -1
  214. package/dist/field/features/lists/checklist/feature.client.js +56 -32
  215. package/dist/field/features/lists/checklist/feature.client.js.map +1 -1
  216. package/dist/field/features/lists/checklist/feature.server.d.ts +1 -1
  217. package/dist/field/features/lists/checklist/feature.server.d.ts.map +1 -1
  218. package/dist/field/features/lists/checklist/feature.server.js +10 -10
  219. package/dist/field/features/lists/checklist/feature.server.js.map +1 -1
  220. package/dist/field/features/lists/checklist/markdownTransformers.d.ts.map +1 -1
  221. package/dist/field/features/lists/checklist/markdownTransformers.js +2 -3
  222. package/dist/field/features/lists/checklist/markdownTransformers.js.map +1 -1
  223. package/dist/field/features/lists/checklist/plugin/index.d.ts +2 -2
  224. package/dist/field/features/lists/checklist/plugin/index.d.ts.map +1 -1
  225. package/dist/field/features/lists/checklist/plugin/index.js +3 -4
  226. package/dist/field/features/lists/checklist/plugin/index.js.map +1 -1
  227. package/dist/field/features/lists/htmlConverter.d.ts.map +1 -1
  228. package/dist/field/features/lists/htmlConverter.js +13 -6
  229. package/dist/field/features/lists/htmlConverter.js.map +1 -1
  230. package/dist/field/features/lists/orderedList/feature.client.d.ts.map +1 -0
  231. package/dist/field/features/lists/orderedList/feature.client.js +96 -0
  232. package/dist/field/features/lists/orderedList/feature.client.js.map +1 -0
  233. package/dist/field/features/lists/orderedList/feature.server.d.ts.map +1 -0
  234. package/dist/field/features/lists/{orderedlist → orderedList}/feature.server.js +7 -7
  235. package/dist/field/features/lists/orderedList/feature.server.js.map +1 -0
  236. package/dist/field/features/lists/orderedList/markdownTransformer.d.ts.map +1 -0
  237. package/dist/field/features/lists/{orderedlist → orderedList}/markdownTransformer.js +2 -3
  238. package/dist/field/features/lists/orderedList/markdownTransformer.js.map +1 -0
  239. package/dist/field/features/lists/plugin/index.d.ts +2 -2
  240. package/dist/field/features/lists/plugin/index.d.ts.map +1 -1
  241. package/dist/field/features/lists/plugin/index.js +3 -4
  242. package/dist/field/features/lists/plugin/index.js.map +1 -1
  243. package/dist/field/features/lists/{common → shared}/markdown.d.ts.map +1 -1
  244. package/dist/field/features/lists/{common → shared}/markdown.js +1 -2
  245. package/dist/field/features/lists/shared/markdown.js.map +1 -0
  246. package/dist/field/features/lists/unorderedList/feature.client.d.ts.map +1 -0
  247. package/dist/field/features/lists/unorderedList/feature.client.js +96 -0
  248. package/dist/field/features/lists/unorderedList/feature.client.js.map +1 -0
  249. package/dist/field/features/lists/unorderedList/feature.server.d.ts.map +1 -0
  250. package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.server.js +7 -7
  251. package/dist/field/features/lists/unorderedList/feature.server.js.map +1 -0
  252. package/dist/field/features/lists/unorderedList/markdownTransformer.d.ts.map +1 -0
  253. package/dist/field/features/lists/{unorderedlist → unorderedList}/markdownTransformer.js +2 -3
  254. package/dist/field/features/lists/unorderedList/markdownTransformer.js.map +1 -0
  255. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts.map +1 -1
  256. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +2 -4
  257. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
  258. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -3
  259. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  260. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +2 -4
  261. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  262. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts +1 -1
  263. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +1 -1
  264. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +1 -1
  265. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +2 -2
  266. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +1 -1
  267. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts.map +1 -1
  268. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +2 -4
  269. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
  270. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts.map +1 -1
  271. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +2 -4
  272. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
  273. package/dist/field/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
  274. package/dist/field/features/migrations/slateToLexical/converter/index.js +2 -1
  275. package/dist/field/features/migrations/slateToLexical/converter/index.js.map +1 -1
  276. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -3
  277. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  278. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +2 -4
  279. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  280. package/dist/field/features/paragraph/feature.client.d.ts.map +1 -1
  281. package/dist/field/features/paragraph/feature.client.js +45 -33
  282. package/dist/field/features/paragraph/feature.client.js.map +1 -1
  283. package/dist/field/features/relationship/drawer/commands.d.ts.map +1 -1
  284. package/dist/field/features/relationship/drawer/commands.js +1 -2
  285. package/dist/field/features/relationship/drawer/commands.js.map +1 -1
  286. package/dist/field/features/relationship/drawer/index.d.ts.map +1 -1
  287. package/dist/field/features/relationship/drawer/index.js +7 -13
  288. package/dist/field/features/relationship/drawer/index.js.map +1 -1
  289. package/dist/field/features/relationship/feature.client.d.ts.map +1 -1
  290. package/dist/field/features/relationship/feature.client.js +37 -15
  291. package/dist/field/features/relationship/feature.client.js.map +1 -1
  292. package/dist/field/features/relationship/feature.server.d.ts +10 -1
  293. package/dist/field/features/relationship/feature.server.d.ts.map +1 -1
  294. package/dist/field/features/relationship/feature.server.js +5 -4
  295. package/dist/field/features/relationship/feature.server.js.map +1 -1
  296. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts +3 -8
  297. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
  298. package/dist/field/features/relationship/nodes/RelationshipNode.js +8 -8
  299. package/dist/field/features/relationship/nodes/RelationshipNode.js.map +1 -1
  300. package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  301. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +56 -7
  302. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
  303. package/dist/field/features/relationship/plugins/index.d.ts +2 -2
  304. package/dist/field/features/relationship/plugins/index.d.ts.map +1 -1
  305. package/dist/field/features/relationship/plugins/index.js +9 -12
  306. package/dist/field/features/relationship/plugins/index.js.map +1 -1
  307. package/dist/field/features/relationship/populationPromise.d.ts +2 -1
  308. package/dist/field/features/relationship/populationPromise.d.ts.map +1 -1
  309. package/dist/field/features/relationship/populationPromise.js +25 -19
  310. package/dist/field/features/relationship/populationPromise.js.map +1 -1
  311. package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts +3 -0
  312. package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -0
  313. package/dist/field/features/shared/toolbar/addDropdownGroup.js +12 -0
  314. package/dist/field/features/shared/toolbar/addDropdownGroup.js.map +1 -0
  315. package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts +3 -0
  316. package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -0
  317. package/dist/field/features/shared/toolbar/featureButtonsGroup.js +10 -0
  318. package/dist/field/features/shared/toolbar/featureButtonsGroup.js.map +1 -0
  319. package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts +3 -0
  320. package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -0
  321. package/dist/field/features/shared/toolbar/textDropdownGroup.js +12 -0
  322. package/dist/field/features/shared/toolbar/textDropdownGroup.js.map +1 -0
  323. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts +4 -0
  324. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts.map +1 -0
  325. package/dist/field/features/toolbars/fixed/Toolbar/index.js +152 -0
  326. package/dist/field/features/toolbars/fixed/Toolbar/index.js.map +1 -0
  327. package/dist/field/features/toolbars/fixed/Toolbar/index.scss +81 -0
  328. package/dist/field/features/toolbars/fixed/feature.client.d.ts +3 -0
  329. package/dist/field/features/toolbars/fixed/feature.client.d.ts.map +1 -0
  330. package/dist/field/features/toolbars/fixed/feature.client.js +20 -0
  331. package/dist/field/features/toolbars/fixed/feature.client.js.map +1 -0
  332. package/dist/field/features/toolbars/fixed/feature.server.d.ts +3 -0
  333. package/dist/field/features/toolbars/fixed/feature.server.d.ts.map +1 -0
  334. package/dist/field/features/toolbars/fixed/feature.server.js +16 -0
  335. package/dist/field/features/toolbars/fixed/feature.server.js.map +1 -0
  336. package/dist/field/features/toolbars/inline/Toolbar/index.d.ts +4 -0
  337. package/dist/field/features/toolbars/inline/Toolbar/index.d.ts.map +1 -0
  338. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/inline/Toolbar}/index.js +112 -70
  339. package/dist/field/features/toolbars/inline/Toolbar/index.js.map +1 -0
  340. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/inline/Toolbar}/index.scss +7 -11
  341. package/dist/field/features/toolbars/inline/feature.client.d.ts +3 -0
  342. package/dist/field/features/toolbars/inline/feature.client.d.ts.map +1 -0
  343. package/dist/field/features/toolbars/inline/feature.client.js +20 -0
  344. package/dist/field/features/toolbars/inline/feature.client.js.map +1 -0
  345. package/dist/field/features/toolbars/inline/feature.server.d.ts +3 -0
  346. package/dist/field/features/toolbars/inline/feature.server.d.ts.map +1 -0
  347. package/dist/field/features/toolbars/inline/feature.server.js +16 -0
  348. package/dist/field/features/toolbars/inline/feature.server.js.map +1 -0
  349. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts +10 -0
  350. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -0
  351. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarButton/index.js +29 -19
  352. package/dist/field/features/toolbars/shared/ToolbarButton/index.js.map +1 -0
  353. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarButton/index.scss +3 -1
  354. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +23 -0
  355. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -0
  356. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarDropdown/DropDown.js +27 -72
  357. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -0
  358. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts +23 -0
  359. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -0
  360. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js +139 -0
  361. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -0
  362. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarDropdown/index.scss +25 -13
  363. package/dist/field/features/toolbars/types.d.ts +48 -0
  364. package/dist/field/features/toolbars/types.d.ts.map +1 -0
  365. package/dist/field/features/toolbars/types.js.map +1 -0
  366. package/dist/field/features/typeUtilities.d.ts +8 -0
  367. package/dist/field/features/typeUtilities.d.ts.map +1 -0
  368. package/dist/field/features/typeUtilities.js +8 -0
  369. package/dist/field/features/typeUtilities.js.map +1 -0
  370. package/dist/field/features/types.d.ts +128 -57
  371. package/dist/field/features/types.d.ts.map +1 -1
  372. package/dist/field/features/types.js.map +1 -1
  373. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
  374. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +5 -6
  375. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -1
  376. package/dist/field/features/upload/component/index.d.ts.map +1 -1
  377. package/dist/field/features/upload/component/index.js +59 -9
  378. package/dist/field/features/upload/component/index.js.map +1 -1
  379. package/dist/field/features/upload/drawer/commands.d.ts.map +1 -1
  380. package/dist/field/features/upload/drawer/commands.js +1 -2
  381. package/dist/field/features/upload/drawer/commands.js.map +1 -1
  382. package/dist/field/features/upload/drawer/index.d.ts.map +1 -1
  383. package/dist/field/features/upload/drawer/index.js +8 -12
  384. package/dist/field/features/upload/drawer/index.js.map +1 -1
  385. package/dist/field/features/upload/feature.client.d.ts.map +1 -1
  386. package/dist/field/features/upload/feature.client.js +35 -10
  387. package/dist/field/features/upload/feature.client.js.map +1 -1
  388. package/dist/field/features/upload/feature.server.d.ts +10 -3
  389. package/dist/field/features/upload/feature.server.d.ts.map +1 -1
  390. package/dist/field/features/upload/feature.server.js +39 -11
  391. package/dist/field/features/upload/feature.server.js.map +1 -1
  392. package/dist/field/features/upload/nodes/UploadNode.d.ts +2 -14
  393. package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
  394. package/dist/field/features/upload/nodes/UploadNode.js +24 -11
  395. package/dist/field/features/upload/nodes/UploadNode.js.map +1 -1
  396. package/dist/field/features/upload/plugin/index.d.ts +5 -4
  397. package/dist/field/features/upload/plugin/index.d.ts.map +1 -1
  398. package/dist/field/features/upload/plugin/index.js +6 -11
  399. package/dist/field/features/upload/plugin/index.js.map +1 -1
  400. package/dist/field/features/upload/populationPromise.d.ts.map +1 -1
  401. package/dist/field/features/upload/populationPromise.js +15 -9
  402. package/dist/field/features/upload/populationPromise.js.map +1 -1
  403. package/dist/field/features/upload/validate.d.ts +2 -1
  404. package/dist/field/features/upload/validate.d.ts.map +1 -1
  405. package/dist/field/features/upload/validate.js +37 -12
  406. package/dist/field/features/upload/validate.js.map +1 -1
  407. package/dist/field/index.d.ts +1 -1
  408. package/dist/field/index.d.ts.map +1 -1
  409. package/dist/field/index.js.map +1 -1
  410. package/dist/field/lexical/EditorFocusProvider.d.ts +20 -0
  411. package/dist/field/lexical/EditorFocusProvider.d.ts.map +1 -0
  412. package/dist/field/lexical/EditorFocusProvider.js +78 -0
  413. package/dist/field/lexical/EditorFocusProvider.js.map +1 -0
  414. package/dist/field/lexical/EditorPlugin.d.ts +1 -0
  415. package/dist/field/lexical/EditorPlugin.d.ts.map +1 -1
  416. package/dist/field/lexical/EditorPlugin.js +6 -3
  417. package/dist/field/lexical/EditorPlugin.js.map +1 -1
  418. package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
  419. package/dist/field/lexical/LexicalEditor.js +31 -15
  420. package/dist/field/lexical/LexicalEditor.js.map +1 -1
  421. package/dist/field/lexical/LexicalEditor.scss +3 -19
  422. package/dist/field/lexical/LexicalProvider.d.ts +1 -1
  423. package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
  424. package/dist/field/lexical/LexicalProvider.js +4 -4
  425. package/dist/field/lexical/LexicalProvider.js.map +1 -1
  426. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts +2 -3
  427. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  428. package/dist/field/lexical/config/client/EditorConfigProvider.js.map +1 -1
  429. package/dist/field/lexical/config/client/default.d.ts +1 -1
  430. package/dist/field/lexical/config/client/default.d.ts.map +1 -1
  431. package/dist/field/lexical/config/client/default.js.map +1 -1
  432. package/dist/field/lexical/config/client/sanitize.d.ts +1 -1
  433. package/dist/field/lexical/config/client/sanitize.d.ts.map +1 -1
  434. package/dist/field/lexical/config/client/sanitize.js +81 -32
  435. package/dist/field/lexical/config/client/sanitize.js.map +1 -1
  436. package/dist/field/lexical/config/server/default.d.ts +2 -3
  437. package/dist/field/lexical/config/server/default.d.ts.map +1 -1
  438. package/dist/field/lexical/config/server/default.js +12 -10
  439. package/dist/field/lexical/config/server/default.js.map +1 -1
  440. package/dist/field/lexical/config/server/loader.d.ts +5 -2
  441. package/dist/field/lexical/config/server/loader.d.ts.map +1 -1
  442. package/dist/field/lexical/config/server/loader.js +4 -2
  443. package/dist/field/lexical/config/server/loader.js.map +1 -1
  444. package/dist/field/lexical/config/server/sanitize.d.ts +2 -1
  445. package/dist/field/lexical/config/server/sanitize.d.ts.map +1 -1
  446. package/dist/field/lexical/config/server/sanitize.js +23 -8
  447. package/dist/field/lexical/config/server/sanitize.js.map +1 -1
  448. package/dist/field/lexical/config/types.d.ts +1 -1
  449. package/dist/field/lexical/config/types.d.ts.map +1 -1
  450. package/dist/field/lexical/config/types.js.map +1 -1
  451. package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
  452. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +1 -2
  453. package/dist/field/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  454. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +9 -9
  455. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  456. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +74 -77
  457. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  458. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +4 -4
  459. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  460. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +6 -9
  461. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  462. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +17 -25
  463. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  464. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -37
  465. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  466. package/dist/field/lexical/plugins/SlashMenu/index.d.ts +2 -2
  467. package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  468. package/dist/field/lexical/plugins/SlashMenu/index.js +72 -67
  469. package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -1
  470. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
  471. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +13 -10
  472. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  473. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts +1 -1
  474. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts.map +1 -1
  475. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +3 -4
  476. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js.map +1 -1
  477. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  478. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +16 -10
  479. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  480. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +8 -0
  481. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  482. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +25 -6
  483. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  484. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts +9 -0
  485. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -0
  486. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +35 -0
  487. package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -0
  488. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -1
  489. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +1 -2
  490. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
  491. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts +1 -1
  492. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  493. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +17 -7
  494. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  495. package/dist/field/lexical/theme/EditorTheme.scss +13 -14
  496. package/dist/field/lexical/ui/ContentEditable.d.ts.map +1 -1
  497. package/dist/field/lexical/ui/ContentEditable.js +1 -2
  498. package/dist/field/lexical/ui/ContentEditable.js.map +1 -1
  499. package/dist/field/lexical/ui/icons/Add/index.d.ts +3 -0
  500. package/dist/field/lexical/ui/icons/Add/index.d.ts.map +1 -0
  501. package/dist/field/lexical/ui/icons/Add/index.js +16 -0
  502. package/dist/field/lexical/ui/icons/Add/index.js.map +1 -0
  503. package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts +3 -0
  504. package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -0
  505. package/dist/field/lexical/ui/icons/HorizontalRule/index.js +19 -0
  506. package/dist/field/lexical/ui/icons/HorizontalRule/index.js.map +1 -0
  507. package/dist/field/lexical/utils/getSelectedNode.d.ts.map +1 -1
  508. package/dist/field/lexical/utils/getSelectedNode.js +1 -2
  509. package/dist/field/lexical/utils/getSelectedNode.js.map +1 -1
  510. package/dist/field/lexical/utils/nodeFormat.d.ts +2 -1
  511. package/dist/field/lexical/utils/nodeFormat.d.ts.map +1 -1
  512. package/dist/field/lexical/utils/nodeFormat.js.map +1 -1
  513. package/dist/field/lexical/utils/setFloatingElemPosition.d.ts +11 -1
  514. package/dist/field/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
  515. package/dist/field/lexical/utils/setFloatingElemPosition.js +16 -13
  516. package/dist/field/lexical/utils/setFloatingElemPosition.js.map +1 -1
  517. package/dist/field/lexical/utils/url.d.ts.map +1 -1
  518. package/dist/field/lexical/utils/url.js +3 -0
  519. package/dist/field/lexical/utils/url.js.map +1 -1
  520. package/dist/forEachNodeRecursively.d.ts +10 -0
  521. package/dist/forEachNodeRecursively.d.ts.map +1 -0
  522. package/dist/forEachNodeRecursively.js +24 -0
  523. package/dist/forEachNodeRecursively.js.map +1 -0
  524. package/dist/generateComponentMap.d.ts.map +1 -1
  525. package/dist/generateComponentMap.js +16 -22
  526. package/dist/generateComponentMap.js.map +1 -1
  527. package/dist/generateSchemaMap.d.ts.map +1 -1
  528. package/dist/generateSchemaMap.js +4 -12
  529. package/dist/generateSchemaMap.js.map +1 -1
  530. package/dist/index.d.ts +24 -20
  531. package/dist/index.d.ts.map +1 -1
  532. package/dist/index.js +275 -184
  533. package/dist/index.js.map +1 -1
  534. package/dist/populate/defaultValue.d.ts.map +1 -1
  535. package/dist/populate/defaultValue.js +1 -0
  536. package/dist/populate/defaultValue.js.map +1 -1
  537. package/dist/populate/populate.d.ts +5 -4
  538. package/dist/populate/populate.d.ts.map +1 -1
  539. package/dist/populate/populate.js +13 -11
  540. package/dist/populate/populate.js.map +1 -1
  541. package/dist/populate/populateLexicalPopulationPromises.d.ts +12 -0
  542. package/dist/populate/populateLexicalPopulationPromises.d.ts.map +1 -0
  543. package/dist/populate/populateLexicalPopulationPromises.js +36 -0
  544. package/dist/populate/populateLexicalPopulationPromises.js.map +1 -0
  545. package/dist/populate/recurseNestedFields.d.ts +8 -4
  546. package/dist/populate/recurseNestedFields.d.ts.map +1 -1
  547. package/dist/populate/recurseNestedFields.js +4 -5
  548. package/dist/populate/recurseNestedFields.js.map +1 -1
  549. package/dist/scss/app.scss +2 -3
  550. package/dist/scss/vars.scss +0 -7
  551. package/dist/types.d.ts +12 -5
  552. package/dist/types.d.ts.map +1 -1
  553. package/dist/types.js.map +1 -1
  554. package/dist/validate/index.d.ts +1 -1
  555. package/dist/validate/index.d.ts.map +1 -1
  556. package/package.json +48 -47
  557. package/components.d.ts +0 -6
  558. package/components.js +0 -7
  559. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts +0 -3
  560. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts.map +0 -1
  561. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +0 -12
  562. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js.map +0 -1
  563. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts +0 -3
  564. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts.map +0 -1
  565. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +0 -10
  566. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js.map +0 -1
  567. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts +0 -3
  568. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts.map +0 -1
  569. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +0 -12
  570. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js.map +0 -1
  571. package/dist/field/features/debug/testrecorder/plugin/index.d.ts +0 -5
  572. package/dist/field/features/debug/testrecorder/plugin/index.d.ts.map +0 -1
  573. package/dist/field/features/debug/testrecorder/plugin/index.js.map +0 -1
  574. package/dist/field/features/debug/treeview/plugin/index.d.ts +0 -4
  575. package/dist/field/features/debug/treeview/plugin/index.d.ts.map +0 -1
  576. package/dist/field/features/debug/treeview/plugin/index.js.map +0 -1
  577. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts +0 -3
  578. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts.map +0 -1
  579. package/dist/field/features/format/common/floatingSelectToolbarSection.js +0 -10
  580. package/dist/field/features/format/common/floatingSelectToolbarSection.js.map +0 -1
  581. package/dist/field/features/format/inlinecode/feature.client.d.ts.map +0 -1
  582. package/dist/field/features/format/inlinecode/feature.client.js +0 -43
  583. package/dist/field/features/format/inlinecode/feature.client.js.map +0 -1
  584. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts +0 -3
  585. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts.map +0 -1
  586. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +0 -10
  587. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js.map +0 -1
  588. package/dist/field/features/indent/index.scss +0 -4
  589. package/dist/field/features/lists/common/markdown.js.map +0 -1
  590. package/dist/field/features/lists/orderedlist/feature.client.d.ts.map +0 -1
  591. package/dist/field/features/lists/orderedlist/feature.client.js +0 -72
  592. package/dist/field/features/lists/orderedlist/feature.client.js.map +0 -1
  593. package/dist/field/features/lists/orderedlist/feature.server.d.ts.map +0 -1
  594. package/dist/field/features/lists/orderedlist/feature.server.js.map +0 -1
  595. package/dist/field/features/lists/orderedlist/markdownTransformer.d.ts.map +0 -1
  596. package/dist/field/features/lists/orderedlist/markdownTransformer.js.map +0 -1
  597. package/dist/field/features/lists/unorderedlist/feature.client.d.ts.map +0 -1
  598. package/dist/field/features/lists/unorderedlist/feature.client.js +0 -72
  599. package/dist/field/features/lists/unorderedlist/feature.client.js.map +0 -1
  600. package/dist/field/features/lists/unorderedlist/feature.server.d.ts.map +0 -1
  601. package/dist/field/features/lists/unorderedlist/feature.server.js.map +0 -1
  602. package/dist/field/features/lists/unorderedlist/markdownTransformer.d.ts.map +0 -1
  603. package/dist/field/features/lists/unorderedlist/markdownTransformer.js.map +0 -1
  604. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts +0 -8
  605. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +0 -1
  606. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js.map +0 -1
  607. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts +0 -17
  608. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +0 -1
  609. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js.map +0 -1
  610. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts +0 -18
  611. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +0 -1
  612. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +0 -42
  613. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js.map +0 -1
  614. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts +0 -6
  615. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +0 -1
  616. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js.map +0 -1
  617. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts +0 -40
  618. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts.map +0 -1
  619. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js.map +0 -1
  620. package/dist/populate/richTextRelationshipPromise.d.ts +0 -23
  621. package/dist/populate/richTextRelationshipPromise.d.ts.map +0 -1
  622. package/dist/populate/richTextRelationshipPromise.js +0 -68
  623. package/dist/populate/richTextRelationshipPromise.js.map +0 -1
  624. package/dist/scss/fonts.scss +0 -75
  625. package/src/index.ts +0 -423
  626. /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.d.ts +0 -0
  627. /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.js +0 -0
  628. /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.d.ts +0 -0
  629. /package/dist/field/features/debug/{testrecorder → testRecorder}/plugin/index.scss +0 -0
  630. /package/dist/field/features/debug/{treeview → treeView}/feature.client.d.ts +0 -0
  631. /package/dist/field/features/debug/{treeview → treeView}/feature.client.js +0 -0
  632. /package/dist/field/features/debug/{treeview → treeView}/feature.server.d.ts +0 -0
  633. /package/dist/field/features/debug/{treeview → treeView}/plugin/index.scss +0 -0
  634. /package/dist/field/features/format/{inlinecode → inlineCode}/feature.client.d.ts +0 -0
  635. /package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.d.ts +0 -0
  636. /package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.d.ts +0 -0
  637. /package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.js +0 -0
  638. /package/dist/field/features/lists/{orderedlist → orderedList}/feature.client.d.ts +0 -0
  639. /package/dist/field/features/lists/{orderedlist → orderedList}/feature.server.d.ts +0 -0
  640. /package/dist/field/features/lists/{orderedlist → orderedList}/markdownTransformer.d.ts +0 -0
  641. /package/dist/field/features/lists/{common → shared}/markdown.d.ts +0 -0
  642. /package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.client.d.ts +0 -0
  643. /package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.server.d.ts +0 -0
  644. /package/dist/field/features/lists/{unorderedlist → unorderedList}/markdownTransformer.d.ts +0 -0
  645. /package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars}/types.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/link/drawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AAEzE,MAAM,WAAW,KAAK;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC7E,SAAS,CAAC,EAAE,WAAW,CAAA;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/link/drawer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,MAAM,WAAW,KAAK;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC7E,SAAS,EAAE,EAAE,GAAG,CAAC,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/link/drawer/types.ts"],"sourcesContent":["import type { FormState } from 'payload/types'\n\nimport type { LinkPayload } from '../plugins/floatingLinkEditor/types.js'\n\nexport interface Props {\n drawerSlug: string\n handleModalSubmit: (fields: FormState, data: Record<string, unknown>) => void\n stateData?: LinkPayload\n}\n"],"names":[],"rangeMappings":"","mappings":"AAIA,WAIC"}
1
+ {"version":3,"sources":["../../../../../src/field/features/link/drawer/types.ts"],"sourcesContent":["import type { FormState } from 'payload/types'\n\nimport type { LinkFields } from '../nodes/types.js'\n\nexport interface Props {\n drawerSlug: string\n handleModalSubmit: (fields: FormState, data: Record<string, unknown>) => void\n stateData: {} | (LinkFields & { text: string })\n}\n"],"names":[],"rangeMappings":"","mappings":"AAIA,WAIC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature.client.d.ts","sourceRoot":"","sources":["../../../../src/field/features/link/feature.client.tsx"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAexE,MAAM,MAAM,WAAW,GAAG,6BAA6B,CAAA;AAuEvD,eAAO,MAAM,0BAA0B,+FAA2C,CAAA"}
1
+ {"version":3,"file":"feature.client.d.ts","sourceRoot":"","sources":["../../../../src/field/features/link/feature.client.tsx"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AAexE,MAAM,MAAM,WAAW,GAAG,6BAA6B,CAAA;AAyFvD,eAAO,MAAM,0BAA0B,+FAA2C,CAAA"}
@@ -1,12 +1,10 @@
1
1
  'use client';
2
- import lexicalUtilsImport from '@lexical/utils';
3
- const { $findMatchingParent } = lexicalUtilsImport;
4
- import lexicalImport from 'lexical';
5
- const { $getSelection, $isRangeSelection } = lexicalImport;
2
+ import { $findMatchingParent } from '@lexical/utils';
3
+ import { $getSelection, $isRangeSelection } from 'lexical';
6
4
  import { LinkIcon } from '../../lexical/ui/icons/Link/index.js';
7
5
  import { getSelectedNode } from '../../lexical/utils/getSelectedNode.js';
8
- import { FeaturesSectionWithEntries } from '../common/floatingSelectToolbarFeaturesButtonsSection/index.js';
9
6
  import { createClientComponent } from '../createClientComponent.js';
7
+ import { toolbarFeatureButtonsGroupWithItems } from '../shared/toolbar/featureButtonsGroup.js';
10
8
  import { AutoLinkNode } from './nodes/AutoLinkNode.js';
11
9
  import { $isLinkNode, LinkNode, TOGGLE_LINK_COMMAND } from './nodes/LinkNode.js';
12
10
  import { AutoLinkPlugin } from './plugins/autoLink/index.js';
@@ -14,52 +12,60 @@ import { ClickableLinkPlugin } from './plugins/clickableLink/index.js';
14
12
  import { TOGGLE_LINK_WITH_MODAL_COMMAND } from './plugins/floatingLinkEditor/LinkEditor/commands.js';
15
13
  import { FloatingLinkEditorPlugin } from './plugins/floatingLinkEditor/index.js';
16
14
  import { LinkPlugin } from './plugins/link/index.js';
15
+ const toolbarGroups = [
16
+ toolbarFeatureButtonsGroupWithItems([
17
+ {
18
+ ChildComponent: LinkIcon,
19
+ isActive: ({ selection })=>{
20
+ if ($isRangeSelection(selection)) {
21
+ const selectedNode = getSelectedNode(selection);
22
+ const linkParent = $findMatchingParent(selectedNode, $isLinkNode);
23
+ return linkParent != null;
24
+ }
25
+ return false;
26
+ },
27
+ isEnabled: ({ selection })=>{
28
+ return !!($isRangeSelection(selection) && $getSelection()?.getTextContent()?.length);
29
+ },
30
+ key: 'link',
31
+ label: `Link`,
32
+ onSelect: ({ editor, isActive })=>{
33
+ if (!isActive) {
34
+ let selectedText = null;
35
+ let selectedNodes = [];
36
+ editor.getEditorState().read(()=>{
37
+ selectedText = $getSelection()?.getTextContent();
38
+ // We need to selected nodes here before the drawer opens, as clicking around in the drawer may change the original selection
39
+ selectedNodes = $getSelection()?.getNodes() ?? [];
40
+ });
41
+ if (!selectedText?.length) {
42
+ return;
43
+ }
44
+ const linkFields = {
45
+ doc: null,
46
+ linkType: 'custom',
47
+ newTab: false,
48
+ url: 'https://'
49
+ };
50
+ editor.dispatchCommand(TOGGLE_LINK_WITH_MODAL_COMMAND, {
51
+ fields: linkFields,
52
+ selectedNodes,
53
+ text: selectedText
54
+ });
55
+ } else {
56
+ // remove link
57
+ editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
58
+ }
59
+ },
60
+ order: 1
61
+ }
62
+ ])
63
+ ];
17
64
  const LinkFeatureClient = (props)=>{
18
65
  return {
19
66
  clientFeatureProps: props,
20
67
  feature: ()=>({
21
68
  clientFeatureProps: props,
22
- floatingSelectToolbar: {
23
- sections: [
24
- FeaturesSectionWithEntries([
25
- {
26
- ChildComponent: LinkIcon,
27
- isActive: ({ selection })=>{
28
- if ($isRangeSelection(selection)) {
29
- const selectedNode = getSelectedNode(selection);
30
- const linkParent = $findMatchingParent(selectedNode, $isLinkNode);
31
- return linkParent != null;
32
- }
33
- return false;
34
- },
35
- key: 'link',
36
- label: `Link`,
37
- onClick: ({ editor, isActive })=>{
38
- if (!isActive) {
39
- let selectedText = null;
40
- editor.getEditorState().read(()=>{
41
- selectedText = $getSelection().getTextContent();
42
- });
43
- const linkFields = {
44
- doc: null,
45
- linkType: 'custom',
46
- newTab: false,
47
- url: 'https://'
48
- };
49
- editor.dispatchCommand(TOGGLE_LINK_WITH_MODAL_COMMAND, {
50
- fields: linkFields,
51
- text: selectedText
52
- });
53
- } else {
54
- // remove link
55
- editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
56
- }
57
- },
58
- order: 1
59
- }
60
- ])
61
- ]
62
- },
63
69
  nodes: [
64
70
  LinkNode,
65
71
  AutoLinkNode
@@ -81,7 +87,13 @@ const LinkFeatureClient = (props)=>{
81
87
  Component: FloatingLinkEditorPlugin,
82
88
  position: 'floatingAnchorElem'
83
89
  }
84
- ]
90
+ ],
91
+ toolbarFixed: {
92
+ groups: toolbarGroups
93
+ },
94
+ toolbarInline: {
95
+ groups: toolbarGroups
96
+ }
85
97
  })
86
98
  };
87
99
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/features/link/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { $findMatchingParent } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst { $getSelection, $isRangeSelection } = lexicalImport\n\nimport type { FeatureProviderProviderClient } from '../types.js'\nimport type { ExclusiveLinkCollectionsProps } from './feature.server.js'\nimport type { LinkFields } from './nodes/types.js'\n\nimport { LinkIcon } from '../../lexical/ui/icons/Link/index.js'\nimport { getSelectedNode } from '../../lexical/utils/getSelectedNode.js'\nimport { FeaturesSectionWithEntries } from '../common/floatingSelectToolbarFeaturesButtonsSection/index.js'\nimport { createClientComponent } from '../createClientComponent.js'\nimport { AutoLinkNode } from './nodes/AutoLinkNode.js'\nimport { $isLinkNode, LinkNode, TOGGLE_LINK_COMMAND } from './nodes/LinkNode.js'\nimport { AutoLinkPlugin } from './plugins/autoLink/index.js'\nimport { ClickableLinkPlugin } from './plugins/clickableLink/index.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './plugins/floatingLinkEditor/LinkEditor/commands.js'\nimport { FloatingLinkEditorPlugin } from './plugins/floatingLinkEditor/index.js'\nimport { LinkPlugin } from './plugins/link/index.js'\n\nexport type ClientProps = ExclusiveLinkCollectionsProps\n\nconst LinkFeatureClient: FeatureProviderProviderClient<ClientProps> = (props) => {\n return {\n clientFeatureProps: props,\n feature: () => ({\n clientFeatureProps: props,\n floatingSelectToolbar: {\n sections: [\n FeaturesSectionWithEntries([\n {\n ChildComponent: LinkIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection)) {\n const selectedNode = getSelectedNode(selection)\n const linkParent = $findMatchingParent(selectedNode, $isLinkNode)\n return linkParent != null\n }\n return false\n },\n key: 'link',\n label: `Link`,\n onClick: ({ editor, isActive }) => {\n if (!isActive) {\n let selectedText = null\n editor.getEditorState().read(() => {\n selectedText = $getSelection().getTextContent()\n })\n const linkFields: LinkFields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: 'https://',\n }\n editor.dispatchCommand(TOGGLE_LINK_WITH_MODAL_COMMAND, {\n fields: linkFields,\n text: selectedText,\n })\n } else {\n // remove link\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }\n },\n order: 1,\n },\n ]),\n ],\n },\n nodes: [LinkNode, AutoLinkNode],\n plugins: [\n {\n Component: LinkPlugin,\n position: 'normal',\n },\n {\n Component: AutoLinkPlugin,\n position: 'normal',\n },\n {\n Component: ClickableLinkPlugin,\n position: 'normal',\n },\n {\n Component: FloatingLinkEditorPlugin,\n position: 'floatingAnchorElem',\n },\n ],\n }),\n }\n}\n\nexport const LinkFeatureClientComponent = createClientComponent(LinkFeatureClient)\n"],"names":["lexicalUtilsImport","$findMatchingParent","lexicalImport","$getSelection","$isRangeSelection","LinkIcon","getSelectedNode","FeaturesSectionWithEntries","createClientComponent","AutoLinkNode","$isLinkNode","LinkNode","TOGGLE_LINK_COMMAND","AutoLinkPlugin","ClickableLinkPlugin","TOGGLE_LINK_WITH_MODAL_COMMAND","FloatingLinkEditorPlugin","LinkPlugin","LinkFeatureClient","props","clientFeatureProps","feature","floatingSelectToolbar","sections","ChildComponent","isActive","selection","selectedNode","linkParent","key","label","onClick","editor","selectedText","getEditorState","read","getTextContent","linkFields","doc","linkType","newTab","url","dispatchCommand","fields","text","order","nodes","plugins","Component","position","LinkFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAEA,OAAOA,wBAAwB,iBAAgB;AAC/C,MAAM,EAAEC,mBAAmB,EAAE,GAAGD;AAEhC,OAAOE,mBAAmB,UAAS;AACnC,MAAM,EAAEC,aAAa,EAAEC,iBAAiB,EAAE,GAAGF;AAM7C,SAASG,QAAQ,QAAQ,uCAAsC;AAC/D,SAASC,eAAe,QAAQ,yCAAwC;AACxE,SAASC,0BAA0B,QAAQ,iEAAgE;AAC3G,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,WAAW,EAAEC,QAAQ,EAAEC,mBAAmB,QAAQ,sBAAqB;AAChF,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,mBAAmB,QAAQ,mCAAkC;AACtE,SAASC,8BAA8B,QAAQ,sDAAqD;AACpG,SAASC,wBAAwB,QAAQ,wCAAuC;AAChF,SAASC,UAAU,QAAQ,0BAAyB;AAIpD,MAAMC,oBAAgE,CAACC;IACrE,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,IAAO,CAAA;gBACdD,oBAAoBD;gBACpBG,uBAAuB;oBACrBC,UAAU;wBACRhB,2BAA2B;4BACzB;gCACEiB,gBAAgBnB;gCAChBoB,UAAU,CAAC,EAAEC,SAAS,EAAE;oCACtB,IAAItB,kBAAkBsB,YAAY;wCAChC,MAAMC,eAAerB,gBAAgBoB;wCACrC,MAAME,aAAa3B,oBAAoB0B,cAAcjB;wCACrD,OAAOkB,cAAc;oCACvB;oCACA,OAAO;gCACT;gCACAC,KAAK;gCACLC,OAAO,CAAC,IAAI,CAAC;gCACbC,SAAS,CAAC,EAAEC,MAAM,EAAEP,QAAQ,EAAE;oCAC5B,IAAI,CAACA,UAAU;wCACb,IAAIQ,eAAe;wCACnBD,OAAOE,cAAc,GAAGC,IAAI,CAAC;4CAC3BF,eAAe9B,gBAAgBiC,cAAc;wCAC/C;wCACA,MAAMC,aAAyB;4CAC7BC,KAAK;4CACLC,UAAU;4CACVC,QAAQ;4CACRC,KAAK;wCACP;wCACAT,OAAOU,eAAe,CAAC3B,gCAAgC;4CACrD4B,QAAQN;4CACRO,MAAMX;wCACR;oCACF,OAAO;wCACL,cAAc;wCACdD,OAAOU,eAAe,CAAC9B,qBAAqB;oCAC9C;gCACF;gCACAiC,OAAO;4BACT;yBACD;qBACF;gBACH;gBACAC,OAAO;oBAACnC;oBAAUF;iBAAa;gBAC/BsC,SAAS;oBACP;wBACEC,WAAW/B;wBACXgC,UAAU;oBACZ;oBACA;wBACED,WAAWnC;wBACXoC,UAAU;oBACZ;oBACA;wBACED,WAAWlC;wBACXmC,UAAU;oBACZ;oBACA;wBACED,WAAWhC;wBACXiC,UAAU;oBACZ;iBACD;YACH,CAAA;IACF;AACF;AAEA,OAAO,MAAMC,6BAA6B1C,sBAAsBU,mBAAkB"}
1
+ {"version":3,"sources":["../../../../src/field/features/link/feature.client.tsx"],"sourcesContent":["'use client'\n\nimport type { LexicalNode } from 'lexical'\n\nimport { $findMatchingParent } from '@lexical/utils'\nimport { $getSelection, $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../toolbars/types.js'\nimport type { FeatureProviderProviderClient } from '../types.js'\nimport type { ExclusiveLinkCollectionsProps } from './feature.server.js'\nimport type { LinkFields } from './nodes/types.js'\n\nimport { LinkIcon } from '../../lexical/ui/icons/Link/index.js'\nimport { getSelectedNode } from '../../lexical/utils/getSelectedNode.js'\nimport { createClientComponent } from '../createClientComponent.js'\nimport { toolbarFeatureButtonsGroupWithItems } from '../shared/toolbar/featureButtonsGroup.js'\nimport { AutoLinkNode } from './nodes/AutoLinkNode.js'\nimport { $isLinkNode, LinkNode, TOGGLE_LINK_COMMAND } from './nodes/LinkNode.js'\nimport { AutoLinkPlugin } from './plugins/autoLink/index.js'\nimport { ClickableLinkPlugin } from './plugins/clickableLink/index.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './plugins/floatingLinkEditor/LinkEditor/commands.js'\nimport { FloatingLinkEditorPlugin } from './plugins/floatingLinkEditor/index.js'\nimport { LinkPlugin } from './plugins/link/index.js'\n\nexport type ClientProps = ExclusiveLinkCollectionsProps\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarFeatureButtonsGroupWithItems([\n {\n ChildComponent: LinkIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection)) {\n const selectedNode = getSelectedNode(selection)\n const linkParent = $findMatchingParent(selectedNode, $isLinkNode)\n return linkParent != null\n }\n return false\n },\n isEnabled: ({ selection }) => {\n return !!($isRangeSelection(selection) && $getSelection()?.getTextContent()?.length)\n },\n key: 'link',\n label: `Link`,\n onSelect: ({ editor, isActive }) => {\n if (!isActive) {\n let selectedText: string = null\n let selectedNodes: LexicalNode[] = []\n editor.getEditorState().read(() => {\n selectedText = $getSelection()?.getTextContent()\n // We need to selected nodes here before the drawer opens, as clicking around in the drawer may change the original selection\n selectedNodes = $getSelection()?.getNodes() ?? []\n })\n\n if (!selectedText?.length) {\n return\n }\n\n const linkFields: LinkFields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: 'https://',\n }\n\n editor.dispatchCommand(TOGGLE_LINK_WITH_MODAL_COMMAND, {\n fields: linkFields,\n selectedNodes,\n text: selectedText,\n })\n } else {\n // remove link\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }\n },\n order: 1,\n },\n ]),\n]\n\nconst LinkFeatureClient: FeatureProviderProviderClient<ClientProps> = (props) => {\n return {\n clientFeatureProps: props,\n feature: () => ({\n clientFeatureProps: props,\n nodes: [LinkNode, AutoLinkNode],\n plugins: [\n {\n Component: LinkPlugin,\n position: 'normal',\n },\n {\n Component: AutoLinkPlugin,\n position: 'normal',\n },\n {\n Component: ClickableLinkPlugin,\n position: 'normal',\n },\n {\n Component: FloatingLinkEditorPlugin,\n position: 'floatingAnchorElem',\n },\n ],\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n }),\n }\n}\n\nexport const LinkFeatureClientComponent = createClientComponent(LinkFeatureClient)\n"],"names":["$findMatchingParent","$getSelection","$isRangeSelection","LinkIcon","getSelectedNode","createClientComponent","toolbarFeatureButtonsGroupWithItems","AutoLinkNode","$isLinkNode","LinkNode","TOGGLE_LINK_COMMAND","AutoLinkPlugin","ClickableLinkPlugin","TOGGLE_LINK_WITH_MODAL_COMMAND","FloatingLinkEditorPlugin","LinkPlugin","toolbarGroups","ChildComponent","isActive","selection","selectedNode","linkParent","isEnabled","getTextContent","length","key","label","onSelect","editor","selectedText","selectedNodes","getEditorState","read","getNodes","linkFields","doc","linkType","newTab","url","dispatchCommand","fields","text","order","LinkFeatureClient","props","clientFeatureProps","feature","nodes","plugins","Component","position","toolbarFixed","groups","toolbarInline","LinkFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAIA,SAASA,mBAAmB,QAAQ,iBAAgB;AACpD,SAASC,aAAa,EAAEC,iBAAiB,QAAQ,UAAS;AAO1D,SAASC,QAAQ,QAAQ,uCAAsC;AAC/D,SAASC,eAAe,QAAQ,yCAAwC;AACxE,SAASC,qBAAqB,QAAQ,8BAA6B;AACnE,SAASC,mCAAmC,QAAQ,2CAA0C;AAC9F,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,WAAW,EAAEC,QAAQ,EAAEC,mBAAmB,QAAQ,sBAAqB;AAChF,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,mBAAmB,QAAQ,mCAAkC;AACtE,SAASC,8BAA8B,QAAQ,sDAAqD;AACpG,SAASC,wBAAwB,QAAQ,wCAAuC;AAChF,SAASC,UAAU,QAAQ,0BAAyB;AAIpD,MAAMC,gBAAgC;IACpCV,oCAAoC;QAClC;YACEW,gBAAgBd;YAChBe,UAAU,CAAC,EAAEC,SAAS,EAAE;gBACtB,IAAIjB,kBAAkBiB,YAAY;oBAChC,MAAMC,eAAehB,gBAAgBe;oBACrC,MAAME,aAAarB,oBAAoBoB,cAAcZ;oBACrD,OAAOa,cAAc;gBACvB;gBACA,OAAO;YACT;YACAC,WAAW,CAAC,EAAEH,SAAS,EAAE;gBACvB,OAAO,CAAC,CAAEjB,CAAAA,kBAAkBiB,cAAclB,iBAAiBsB,kBAAkBC,MAAK;YACpF;YACAC,KAAK;YACLC,OAAO,CAAC,IAAI,CAAC;YACbC,UAAU,CAAC,EAAEC,MAAM,EAAEV,QAAQ,EAAE;gBAC7B,IAAI,CAACA,UAAU;oBACb,IAAIW,eAAuB;oBAC3B,IAAIC,gBAA+B,EAAE;oBACrCF,OAAOG,cAAc,GAAGC,IAAI,CAAC;wBAC3BH,eAAe5B,iBAAiBsB;wBAChC,6HAA6H;wBAC7HO,gBAAgB7B,iBAAiBgC,cAAc,EAAE;oBACnD;oBAEA,IAAI,CAACJ,cAAcL,QAAQ;wBACzB;oBACF;oBAEA,MAAMU,aAAyB;wBAC7BC,KAAK;wBACLC,UAAU;wBACVC,QAAQ;wBACRC,KAAK;oBACP;oBAEAV,OAAOW,eAAe,CAAC1B,gCAAgC;wBACrD2B,QAAQN;wBACRJ;wBACAW,MAAMZ;oBACR;gBACF,OAAO;oBACL,cAAc;oBACdD,OAAOW,eAAe,CAAC7B,qBAAqB;gBAC9C;YACF;YACAgC,OAAO;QACT;KACD;CACF;AAED,MAAMC,oBAAgE,CAACC;IACrE,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,IAAO,CAAA;gBACdD,oBAAoBD;gBACpBG,OAAO;oBAACtC;oBAAUF;iBAAa;gBAC/ByC,SAAS;oBACP;wBACEC,WAAWlC;wBACXmC,UAAU;oBACZ;oBACA;wBACED,WAAWtC;wBACXuC,UAAU;oBACZ;oBACA;wBACED,WAAWrC;wBACXsC,UAAU;oBACZ;oBACA;wBACED,WAAWnC;wBACXoC,UAAU;oBACZ;iBACD;gBACDC,cAAc;oBACZC,QAAQpC;gBACV;gBACAqC,eAAe;oBACbD,QAAQpC;gBACV;YACF,CAAA;IACF;AACF;AAEA,OAAO,MAAMsC,6BAA6BjD,sBAAsBsC,mBAAkB"}
@@ -1,6 +1,5 @@
1
- import type { I18n } from '@payloadcms/translations';
2
1
  import type { SanitizedConfig } from 'payload/config';
3
- import type { FieldWithRichTextRequiredEditor } from 'payload/types';
2
+ import type { Field } from 'payload/types';
4
3
  import type { FeatureProviderProviderServer } from '../types.js';
5
4
  import type { ClientProps } from './feature.client.js';
6
5
  export type ExclusiveLinkCollectionsProps = {
@@ -25,9 +24,15 @@ export type LinkFeatureServerProps = ExclusiveLinkCollectionsProps & {
25
24
  */
26
25
  fields?: ((args: {
27
26
  config: SanitizedConfig;
28
- defaultFields: FieldWithRichTextRequiredEditor[];
29
- i18n: I18n;
30
- }) => FieldWithRichTextRequiredEditor[]) | FieldWithRichTextRequiredEditor[];
27
+ defaultFields: Field[];
28
+ }) => Field[]) | Field[];
29
+ /**
30
+ * Sets a maximum population depth for the internal doc default field of link, regardless of the remaining depth when the field is reached.
31
+ * This behaves exactly like the maxDepth properties of relationship and upload fields.
32
+ *
33
+ * {@link https://payloadcms.com/docs/getting-started/concepts#field-level-max-depth}
34
+ */
35
+ maxDepth?: number;
31
36
  };
32
37
  export declare const LinkFeature: FeatureProviderProviderServer<LinkFeatureServerProps, ClientProps>;
33
38
  //# sourceMappingURL=feature.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature.server.d.ts","sourceRoot":"","sources":["../../../../src/field/features/link/feature.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAA;AAGpE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAUtD,MAAM,MAAM,6BAA6B,GACrC;IACE;;;QAGI;IACJ,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAG9B,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAC3B,GACD;IAEE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAE3B;;;QAGI;IACJ,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC9B,CAAA;AAEL,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,GAAG;IACnE;;;OAGG;IACH,MAAM,CAAC,EACH,CAAC,CAAC,IAAI,EAAE;QACN,MAAM,EAAE,eAAe,CAAA;QACvB,aAAa,EAAE,+BAA+B,EAAE,CAAA;QAChD,IAAI,EAAE,IAAI,CAAA;KACX,KAAK,+BAA+B,EAAE,CAAC,GACxC,+BAA+B,EAAE,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,6BAA6B,CAAC,sBAAsB,EAAE,WAAW,CA8F1F,CAAA"}
1
+ {"version":3,"file":"feature.server.d.ts","sourceRoot":"","sources":["../../../../src/field/features/link/feature.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAM1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAWtD,MAAM,MAAM,6BAA6B,GACrC;IACE;;;QAGI;IACJ,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAG9B,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAC3B,GACD;IAEE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAE3B;;;QAGI;IACJ,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC9B,CAAA;AAEL,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,GAAG;IACnE;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,eAAe,CAAC;QAAC,aAAa,EAAE,KAAK,EAAE,CAAA;KAAE,KAAK,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,CAAA;IAC3F;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,6BAA6B,CAAC,sBAAsB,EAAE,WAAW,CAoI1F,CAAA"}
@@ -1,28 +1,54 @@
1
+ import { traverseFields } from '@payloadcms/next/utilities';
2
+ import { sanitizeFields } from 'payload/config';
3
+ import { deepCopyObject } from 'payload/utilities';
1
4
  import { convertLexicalNodesToHTML } from '../converters/html/converter/index.js';
5
+ import { createNode } from '../typeUtilities.js';
2
6
  import { LinkFeatureClientComponent } from './feature.client.js';
3
7
  import { AutoLinkNode } from './nodes/AutoLinkNode.js';
4
8
  import { LinkNode } from './nodes/LinkNode.js';
5
9
  import { transformExtraFields } from './plugins/floatingLinkEditor/utilities.js';
6
10
  import { linkPopulationPromiseHOC } from './populationPromise.js';
11
+ import { linkValidation } from './validate.js';
7
12
  export const LinkFeature = (props)=>{
8
13
  if (!props) {
9
14
  props = {};
10
15
  }
11
16
  return {
12
- feature: ()=>{
17
+ feature: async ({ config: _config, isRoot })=>{
18
+ const validRelationships = _config.collections.map((c)=>c.slug) || [];
19
+ const _transformedFields = transformExtraFields(deepCopyObject(props.fields), _config, props.enabledCollections, props.disabledCollections, props.maxDepth);
20
+ const sanitizedFields = await sanitizeFields({
21
+ config: _config,
22
+ fields: _transformedFields,
23
+ requireFieldLevelRichTextEditor: isRoot,
24
+ validRelationships
25
+ });
26
+ props.fields = sanitizedFields;
13
27
  return {
14
28
  ClientComponent: LinkFeatureClientComponent,
15
29
  clientFeatureProps: {
16
30
  disabledCollections: props.disabledCollections,
17
31
  enabledCollections: props.enabledCollections
18
32
  },
19
- generateSchemaMap: ({ config, i18n, props })=>{
20
- return {
21
- fields: transformExtraFields(props.fields, config, i18n, props.enabledCollections, props.disabledCollections)
22
- };
33
+ generateSchemaMap: ({ config, i18n })=>{
34
+ if (!sanitizedFields || !Array.isArray(sanitizedFields) || sanitizedFields.length === 0) {
35
+ return null;
36
+ }
37
+ const schemaMap = new Map();
38
+ const validRelationships = config.collections.map((c)=>c.slug) || [];
39
+ schemaMap.set('fields', sanitizedFields);
40
+ traverseFields({
41
+ config,
42
+ fields: sanitizedFields,
43
+ i18n,
44
+ schemaMap,
45
+ schemaPath: 'fields',
46
+ validRelationships
47
+ });
48
+ return schemaMap;
23
49
  },
24
50
  nodes: [
25
- {
51
+ createNode({
26
52
  converters: {
27
53
  html: {
28
54
  converter: async ({ converters, node, parent, payload })=>{
@@ -47,12 +73,22 @@ export const LinkFeature = (props)=>{
47
73
  ]
48
74
  }
49
75
  },
76
+ hooks: {
77
+ afterRead: [
78
+ ({ node })=>{
79
+ return node;
80
+ }
81
+ ]
82
+ },
50
83
  node: AutoLinkNode,
51
84
  populationPromises: [
52
85
  linkPopulationPromiseHOC(props)
86
+ ],
87
+ validations: [
88
+ linkValidation(props)
53
89
  ]
54
- },
55
- {
90
+ }),
91
+ createNode({
56
92
  converters: {
57
93
  html: {
58
94
  converter: async ({ converters, node, parent, payload })=>{
@@ -77,8 +113,11 @@ export const LinkFeature = (props)=>{
77
113
  node: LinkNode,
78
114
  populationPromises: [
79
115
  linkPopulationPromiseHOC(props)
116
+ ],
117
+ validations: [
118
+ linkValidation(props)
80
119
  ]
81
- }
120
+ })
82
121
  ],
83
122
  serverFeatureProps: props
84
123
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/features/link/feature.server.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload/config'\nimport type { FieldWithRichTextRequiredEditor } from 'payload/types'\n\nimport type { HTMLConverter } from '../converters/html/converter/types.js'\nimport type { FeatureProviderProviderServer } from '../types.js'\nimport type { ClientProps } from './feature.client.js'\nimport type { SerializedAutoLinkNode, SerializedLinkNode } from './nodes/types.js'\n\nimport { convertLexicalNodesToHTML } from '../converters/html/converter/index.js'\nimport { LinkFeatureClientComponent } from './feature.client.js'\nimport { AutoLinkNode } from './nodes/AutoLinkNode.js'\nimport { LinkNode } from './nodes/LinkNode.js'\nimport { transformExtraFields } from './plugins/floatingLinkEditor/utilities.js'\nimport { linkPopulationPromiseHOC } from './populationPromise.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: FieldWithRichTextRequiredEditor[]\n i18n: I18n\n }) => FieldWithRichTextRequiredEditor[])\n | FieldWithRichTextRequiredEditor[]\n}\n\nexport const LinkFeature: FeatureProviderProviderServer<LinkFeatureServerProps, ClientProps> = (\n props,\n) => {\n if (!props) {\n props = {}\n }\n return {\n feature: () => {\n return {\n ClientComponent: LinkFeatureClientComponent,\n clientFeatureProps: {\n disabledCollections: props.disabledCollections,\n enabledCollections: props.enabledCollections,\n } as ExclusiveLinkCollectionsProps,\n generateSchemaMap: ({ config, i18n, props }) => {\n return {\n fields: transformExtraFields(\n props.fields,\n config,\n i18n,\n props.enabledCollections,\n props.disabledCollections,\n ),\n }\n },\n nodes: [\n {\n converters: {\n html: {\n converter: async ({ converters, node, parent, payload }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n payload,\n })\n\n const rel: string = node.fields.newTab ? ' rel=\"noopener noreferrer\"' : ''\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}\"${rel}>${childrenText}</a>`\n },\n nodeTypes: [AutoLinkNode.getType()],\n } as HTMLConverter<SerializedAutoLinkNode>,\n },\n node: AutoLinkNode,\n populationPromises: [linkPopulationPromiseHOC(props)],\n },\n {\n converters: {\n html: {\n converter: async ({ converters, node, parent, payload }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n payload,\n })\n\n const rel: string = node.fields.newTab ? ' rel=\"noopener noreferrer\"' : ''\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}\"${rel}>${childrenText}</a>`\n },\n nodeTypes: [LinkNode.getType()],\n } as HTMLConverter<SerializedLinkNode>,\n },\n node: LinkNode,\n populationPromises: [linkPopulationPromiseHOC(props)],\n },\n ],\n serverFeatureProps: props,\n }\n },\n key: 'link',\n serverFeatureProps: props,\n }\n}\n"],"names":["convertLexicalNodesToHTML","LinkFeatureClientComponent","AutoLinkNode","LinkNode","transformExtraFields","linkPopulationPromiseHOC","LinkFeature","props","feature","ClientComponent","clientFeatureProps","disabledCollections","enabledCollections","generateSchemaMap","config","i18n","fields","nodes","converters","html","converter","node","parent","payload","childrenText","lexicalNodes","children","rel","newTab","href","url","linkType","doc","value","id","nodeTypes","getType","populationPromises","serverFeatureProps","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AASA,SAASA,yBAAyB,QAAQ,wCAAuC;AACjF,SAASC,0BAA0B,QAAQ,sBAAqB;AAChE,SAASC,YAAY,QAAQ,0BAAyB;AACtD,SAASC,QAAQ,QAAQ,sBAAqB;AAC9C,SAASC,oBAAoB,QAAQ,4CAA2C;AAChF,SAASC,wBAAwB,QAAQ,yBAAwB;AAsCjE,OAAO,MAAMC,cAAkF,CAC7FC;IAEA,IAAI,CAACA,OAAO;QACVA,QAAQ,CAAC;IACX;IACA,OAAO;QACLC,SAAS;YACP,OAAO;gBACLC,iBAAiBR;gBACjBS,oBAAoB;oBAClBC,qBAAqBJ,MAAMI,mBAAmB;oBAC9CC,oBAAoBL,MAAMK,kBAAkB;gBAC9C;gBACAC,mBAAmB,CAAC,EAAEC,MAAM,EAAEC,IAAI,EAAER,KAAK,EAAE;oBACzC,OAAO;wBACLS,QAAQZ,qBACNG,MAAMS,MAAM,EACZF,QACAC,MACAR,MAAMK,kBAAkB,EACxBL,MAAMI,mBAAmB;oBAE7B;gBACF;gBACAM,OAAO;oBACL;wBACEC,YAAY;4BACVC,MAAM;gCACJC,WAAW,OAAO,EAAEF,UAAU,EAAEG,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAE;oCACrD,MAAMC,eAAe,MAAMxB,0BAA0B;wCACnDkB;wCACAO,cAAcJ,KAAKK,QAAQ;wCAC3BJ,QAAQ;4CACN,GAAGD,IAAI;4CACPC;wCACF;wCACAC;oCACF;oCAEA,MAAMI,MAAcN,KAAKL,MAAM,CAACY,MAAM,GAAG,+BAA+B;oCAExE,IAAIC,OAAeR,KAAKL,MAAM,CAACc,GAAG;oCAClC,IAAIT,KAAKL,MAAM,CAACe,QAAQ,KAAK,YAAY;wCACvCF,OACE,OAAOR,KAAKL,MAAM,CAACgB,GAAG,EAAEC,UAAU,WAC9BZ,KAAKL,MAAM,CAACgB,GAAG,EAAEC,QACjBZ,KAAKL,MAAM,CAACgB,GAAG,EAAEC,OAAOC;oCAChC;oCAEA,OAAO,CAAC,SAAS,EAAEL,KAAK,CAAC,EAAEF,IAAI,CAAC,EAAEH,aAAa,IAAI,CAAC;gCACtD;gCACAW,WAAW;oCAACjC,aAAakC,OAAO;iCAAG;4BACrC;wBACF;wBACAf,MAAMnB;wBACNmC,oBAAoB;4BAAChC,yBAAyBE;yBAAO;oBACvD;oBACA;wBACEW,YAAY;4BACVC,MAAM;gCACJC,WAAW,OAAO,EAAEF,UAAU,EAAEG,IAAI,EAAEC,MAAM,EAAEC,OAAO,EAAE;oCACrD,MAAMC,eAAe,MAAMxB,0BAA0B;wCACnDkB;wCACAO,cAAcJ,KAAKK,QAAQ;wCAC3BJ,QAAQ;4CACN,GAAGD,IAAI;4CACPC;wCACF;wCACAC;oCACF;oCAEA,MAAMI,MAAcN,KAAKL,MAAM,CAACY,MAAM,GAAG,+BAA+B;oCAExE,MAAMC,OACJR,KAAKL,MAAM,CAACe,QAAQ,KAAK,WACrBV,KAAKL,MAAM,CAACc,GAAG,GACdT,KAAKL,MAAM,CAACgB,GAAG,EAAEC;oCAExB,OAAO,CAAC,SAAS,EAAEJ,KAAK,CAAC,EAAEF,IAAI,CAAC,EAAEH,aAAa,IAAI,CAAC;gCACtD;gCACAW,WAAW;oCAAChC,SAASiC,OAAO;iCAAG;4BACjC;wBACF;wBACAf,MAAMlB;wBACNkC,oBAAoB;4BAAChC,yBAAyBE;yBAAO;oBACvD;iBACD;gBACD+B,oBAAoB/B;YACtB;QACF;QACAgC,KAAK;QACLD,oBAAoB/B;IACtB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/features/link/feature.server.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from 'payload/config'\nimport type { Field } from 'payload/types'\n\nimport { traverseFields } from '@payloadcms/next/utilities'\nimport { sanitizeFields } from 'payload/config'\nimport { deepCopyObject } from 'payload/utilities'\n\nimport type { FeatureProviderProviderServer } from '../types.js'\nimport type { ClientProps } from './feature.client.js'\n\nimport { convertLexicalNodesToHTML } from '../converters/html/converter/index.js'\nimport { createNode } from '../typeUtilities.js'\nimport { LinkFeatureClientComponent } from './feature.client.js'\nimport { AutoLinkNode } from './nodes/AutoLinkNode.js'\nimport { LinkNode } from './nodes/LinkNode.js'\nimport { transformExtraFields } from './plugins/floatingLinkEditor/utilities.js'\nimport { linkPopulationPromiseHOC } from './populationPromise.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?: ((args: { config: SanitizedConfig; defaultFields: Field[] }) => Field[]) | 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 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 nodes: [\n createNode({\n converters: {\n html: {\n converter: async ({ converters, node, parent, payload }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n payload,\n })\n\n const rel: string = node.fields.newTab ? ' rel=\"noopener noreferrer\"' : ''\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}\"${rel}>${childrenText}</a>`\n },\n nodeTypes: [AutoLinkNode.getType()],\n },\n },\n hooks: {\n afterRead: [\n ({ node }) => {\n return node\n },\n ],\n },\n node: AutoLinkNode,\n populationPromises: [linkPopulationPromiseHOC(props)],\n validations: [linkValidation(props)],\n }),\n createNode({\n converters: {\n html: {\n converter: async ({ converters, node, parent, payload }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n lexicalNodes: node.children,\n parent: {\n ...node,\n parent,\n },\n payload,\n })\n\n const rel: string = node.fields.newTab ? ' rel=\"noopener noreferrer\"' : ''\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}\"${rel}>${childrenText}</a>`\n },\n nodeTypes: [LinkNode.getType()],\n },\n },\n node: LinkNode,\n populationPromises: [linkPopulationPromiseHOC(props)],\n validations: [linkValidation(props)],\n }),\n ],\n serverFeatureProps: props,\n }\n },\n key: 'link',\n serverFeatureProps: props,\n }\n}\n"],"names":["traverseFields","sanitizeFields","deepCopyObject","convertLexicalNodesToHTML","createNode","LinkFeatureClientComponent","AutoLinkNode","LinkNode","transformExtraFields","linkPopulationPromiseHOC","linkValidation","LinkFeature","props","feature","config","_config","isRoot","validRelationships","collections","map","c","slug","_transformedFields","fields","enabledCollections","disabledCollections","maxDepth","sanitizedFields","requireFieldLevelRichTextEditor","ClientComponent","clientFeatureProps","generateSchemaMap","i18n","Array","isArray","length","schemaMap","Map","set","schemaPath","nodes","converters","html","converter","node","parent","payload","childrenText","lexicalNodes","children","rel","newTab","href","url","linkType","doc","value","id","nodeTypes","getType","hooks","afterRead","populationPromises","validations","serverFeatureProps","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AutoLinkNode.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/link/nodes/AutoLinkNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAKvE,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/field/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,5 +1,4 @@
1
- import lexicalImport from 'lexical';
2
- const { $applyNodeReplacement, $isElementNode } = lexicalImport;
1
+ import { $applyNodeReplacement, $isElementNode } from 'lexical';
3
2
  import { LinkNode } from './LinkNode.js';
4
3
  // Custom node type to override `canInsertTextAfter` that will
5
4
  // allow typing within the link
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/link/nodes/AutoLinkNode.ts"],"sourcesContent":["import type { ElementNode, LexicalNode, RangeSelection } from 'lexical'\n\nimport lexicalImport from 'lexical'\nconst { $applyNodeReplacement, $isElementNode } = lexicalImport\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({ 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({ fields }))\n}\nexport function $isAutoLinkNode(node: LexicalNode | null | undefined): node is AutoLinkNode {\n return node instanceof AutoLinkNode\n}\n"],"names":["lexicalImport","$applyNodeReplacement","$isElementNode","LinkNode","AutoLinkNode","clone","node","fields","__fields","key","__key","getType","importDOM","importJSON","serializedNode","version","doc","value","id","$createAutoLinkNode","setFormat","format","setIndent","indent","setDirection","direction","exportJSON","type","insertNewAfter","selection","restoreSelection","element","getParentOrThrow","linkNode","append","$isAutoLinkNode"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,mBAAmB,UAAS;AACnC,MAAM,EAAEC,qBAAqB,EAAEC,cAAc,EAAE,GAAGF;AAIlD,SAASG,QAAQ,QAAQ,gBAAe;AAExC,8DAA8D;AAC9D,+BAA+B;AAE/B,OAAO,MAAMC,qBAAqBD;IAChC,OAAOE,MAAMC,IAAkB,EAAgB;QAC7C,OAAO,IAAIF,aAAa;YAAEG,QAAQD,KAAKE,QAAQ;YAAEC,KAAKH,KAAKI,KAAK;QAAC;IACnE;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,OAAOC,IACnC;YACAJ,eAAeP,MAAM,CAACS,GAAG,CAACC,KAAK,GAAGH,eAAeP,MAAM,CAACS,GAAG,CAACC,KAAK,CAACC,EAAE;YACpEJ,eAAeC,OAAO,GAAG;QAC3B;QAEA,MAAMT,OAAOa,oBAAoB;YAAEZ,QAAQO,eAAeP,MAAM;QAAC;QAEjED,KAAKc,SAAS,CAACN,eAAeO,MAAM;QACpCf,KAAKgB,SAAS,CAACR,eAAeS,MAAM;QACpCjB,KAAKkB,YAAY,CAACV,eAAeW,SAAS;QAC1C,OAAOnB;IACT;IAEAoB,aAAqC;QACnC,OAAO;YACL,GAAG,KAAK,CAACA,YAAY;YACrBC,MAAM;YACNZ,SAAS;QACX;IACF;IAEAa,eAAeC,SAAyB,EAAEC,mBAAmB,IAAI,EAAsB;QACrF,MAAMC,UAAU,IAAI,CAACC,gBAAgB,GAAGJ,cAAc,CAACC,WAAWC;QAClE,IAAI5B,eAAe6B,UAAU;YAC3B,MAAME,WAAWd,oBAAoB;gBAAEZ,QAAQ,IAAI,CAACC,QAAQ;YAAC;YAC7DuB,QAAQG,MAAM,CAACD;YACf,OAAOA;QACT;QACA,OAAO;IACT;AACF;AAEA,OAAO,SAASd,oBAAoB,EAAEZ,MAAM,EAA0B;IACpE,OAAON,sBAAsB,IAAIG,aAAa;QAAEG;IAAO;AACzD;AACA,OAAO,SAAS4B,gBAAgB7B,IAAoC;IAClE,OAAOA,gBAAgBF;AACzB"}
1
+ {"version":3,"sources":["../../../../../src/field/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({ 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({ 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","fields","__fields","key","__key","getType","importDOM","importJSON","serializedNode","version","doc","value","id","$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,QAAQD,KAAKE,QAAQ;YAAEC,KAAKH,KAAKI,KAAK;QAAC;IACnE;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,OAAOC,IACnC;YACAJ,eAAeP,MAAM,CAACS,GAAG,CAACC,KAAK,GAAGH,eAAeP,MAAM,CAACS,GAAG,CAACC,KAAK,CAACC,EAAE;YACpEJ,eAAeC,OAAO,GAAG;QAC3B;QAEA,MAAMT,OAAOa,oBAAoB;YAAEZ,QAAQO,eAAeP,MAAM;QAAC;QAEjED,KAAKc,SAAS,CAACN,eAAeO,MAAM;QACpCf,KAAKgB,SAAS,CAACR,eAAeS,MAAM;QACpCjB,KAAKkB,YAAY,CAACV,eAAeW,SAAS;QAC1C,OAAOnB;IACT;IAEAoB,aAAqC;QACnC,OAAO;YACL,GAAG,KAAK,CAACA,YAAY;YACrBC,MAAM;YACNZ,SAAS;QACX;IACF;IAEAa,eAAeC,SAAyB,EAAEC,mBAAmB,IAAI,EAAsB;QACrF,MAAMC,UAAU,IAAI,CAACC,gBAAgB,GAAGJ,cAAc,CAACC,WAAWC;QAClE,IAAI5B,eAAe6B,UAAU;YAC3B,MAAME,WAAWd,oBAAoB;gBAAEZ,QAAQ,IAAI,CAACC,QAAQ;YAAC;YAC7DuB,QAAQG,MAAM,CAACD;YACf,OAAOA;QACT;QACA,OAAO;IACT;AACF;AAEA,OAAO,SAASd,oBAAoB,EAAEZ,MAAM,EAA0B;IACpE,OAAON,sBAAsB,IAAIG,aAAa;QAAEG;IAAO;AACzD;AACA,OAAO,SAAS4B,gBAAgB7B,IAAoC;IAClE,OAAOA,gBAAgBF;AACzB"}
@@ -1,7 +1,6 @@
1
1
  import type { BaseSelection } from 'lexical';
2
- import lexicalImport from 'lexical';
3
- declare const ElementNode: typeof lexicalImport.ElementNode;
4
2
  import type { DOMConversionMap, EditorConfig, ElementNode as ElementNodeType, LexicalCommand, LexicalNode, NodeKey, RangeSelection } from 'lexical';
3
+ import { ElementNode } from 'lexical';
5
4
  import type { LinkPayload } from '../plugins/floatingLinkEditor/types.js';
6
5
  import type { LinkFields, SerializedLinkNode } from './types.js';
7
6
  /** @noInheritDoc */
@@ -34,5 +33,4 @@ export declare function $createLinkNode({ fields }: {
34
33
  export declare function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode;
35
34
  export declare const TOGGLE_LINK_COMMAND: LexicalCommand<LinkPayload | null>;
36
35
  export declare function toggleLink(payload: LinkPayload): void;
37
- export {};
38
36
  //# sourceMappingURL=LinkNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkNode.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/link/nodes/LinkNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAK5C,OAAO,aAAa,MAAM,SAAS,CAAA;AACnC,QAAA,MAME,WAAW,kCAEI,CAAA;AAEjB,OAAO,KAAK,EACV,gBAAgB,EAEhB,YAAY,EACZ,WAAW,IAAI,eAAe,EAC9B,cAAc,EACd,WAAW,EACX,OAAO,EACP,cAAc,EACf,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAIhE,oBAAoB;AACpB,qBAAa,QAAS,SAAQ,WAAW;IACvC,QAAQ,EAAE,UAAU,CAAA;gBAER,EACV,MAKC,EACD,GAAG,GACJ,EAAE;QACD,MAAM,EAAE,UAAU,CAAA;QAClB,GAAG,CAAC,EAAE,OAAO,CAAA;KACd;IAKD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAOtC,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,SAAS,IAAI,gBAAgB,GAAG,IAAI;IAS3C,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,kBAAkB,GAAG,QAAQ;IAmB/D,UAAU,IAAI,KAAK;IAInB,kBAAkB,IAAI,KAAK;IAI3B,mBAAmB,IAAI,KAAK;IAI5B,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,iBAAiB;IAiBlD,UAAU,IAAI,kBAAkB;IAShC,gBAAgB,CACd,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,OAAO,GAAG,MAAM,GAC5B,OAAO;IAeV,SAAS,IAAI,UAAU;IAIvB,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,gBAAgB,UAAO,GAAG,eAAe,GAAG,IAAI;IAU1F,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAahC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKnC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO;CA8BxF;AAoBD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,QAAQ,CAE5E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,QAAQ,CAElF;AAED,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,WAAW,GAAG,IAAI,CAC7B,CAAA;AAEtC,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CA6GrD"}
1
+ {"version":3,"file":"LinkNode.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/link/nodes/LinkNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EACV,gBAAgB,EAEhB,YAAY,EACZ,WAAW,IAAI,eAAe,EAC9B,cAAc,EACd,WAAW,EACX,OAAO,EACP,cAAc,EACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EAML,WAAW,EAEZ,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAIhE,oBAAoB;AACpB,qBAAa,QAAS,SAAQ,WAAW;IACvC,QAAQ,EAAE,UAAU,CAAA;gBAER,EACV,MAKC,EACD,GAAG,GACJ,EAAE;QACD,MAAM,EAAE,UAAU,CAAA;QAClB,GAAG,CAAC,EAAE,OAAO,CAAA;KACd;IAKD,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAOtC,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,SAAS,IAAI,gBAAgB,GAAG,IAAI;IAS3C,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,kBAAkB,GAAG,QAAQ;IAmB/D,UAAU,IAAI,KAAK;IAInB,kBAAkB,IAAI,KAAK;IAI3B,mBAAmB,IAAI,KAAK;IAI5B,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,iBAAiB;IAiBlD,UAAU,IAAI,kBAAkB;IAShC,gBAAgB,CACd,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,OAAO,GAAG,MAAM,GAC5B,OAAO;IAeV,SAAS,IAAI,UAAU;IAIvB,cAAc,CAAC,SAAS,EAAE,cAAc,EAAE,gBAAgB,UAAO,GAAG,eAAe,GAAG,IAAI;IAU1F,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAahC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKnC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO;CA8BxF;AAoBD,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,QAAQ,CAE5E;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,QAAQ,CAElF;AAED,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,WAAW,GAAG,IAAI,CAC7B,CAAA;AAEtC,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CA6GrD"}
@@ -1,7 +1,5 @@
1
- import lexicalUtilsImport from '@lexical/utils';
2
- const { addClassNamesToElement, isHTMLAnchorElement } = lexicalUtilsImport;
3
- import lexicalImport from 'lexical';
4
- const { $applyNodeReplacement, $createTextNode, $getSelection, $isElementNode, $isRangeSelection, ElementNode, createCommand } = lexicalImport;
1
+ import { addClassNamesToElement, isHTMLAnchorElement } from '@lexical/utils';
2
+ import { $applyNodeReplacement, $createTextNode, $getSelection, $isElementNode, $isRangeSelection, ElementNode, createCommand } from 'lexical';
5
3
  const SUPPORTED_URL_PROTOCOLS = new Set([
6
4
  'http:',
7
5
  'https:',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/link/nodes/LinkNode.ts"],"sourcesContent":["import type { BaseSelection } from 'lexical'\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { addClassNamesToElement, isHTMLAnchorElement } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst {\n $applyNodeReplacement,\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n ElementNode,\n createCommand,\n} = lexicalImport\n\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode as ElementNodeType,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n RangeSelection,\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\n constructor({\n fields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: undefined,\n },\n key,\n }: {\n fields: LinkFields\n key?: NodeKey\n }) {\n super(key)\n this.__fields = fields\n }\n\n static clone(node: LinkNode): LinkNode {\n return new LinkNode({\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 const node = $createLinkNode({\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 return {\n ...super.exportJSON(),\n type: this.getType(),\n fields: this.getFields(),\n version: 2,\n }\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 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 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({ fields }: { fields: LinkFields }): LinkNode {\n return $applyNodeReplacement(new LinkNode({ fields }))\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":["lexicalUtilsImport","addClassNamesToElement","isHTMLAnchorElement","lexicalImport","$applyNodeReplacement","$createTextNode","$getSelection","$isElementNode","$isRangeSelection","ElementNode","createCommand","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","__fields","constructor","fields","doc","linkType","newTab","url","undefined","key","clone","node","__key","getType","importDOM","a","conversion","convertAnchorElement","priority","importJSON","serializedNode","version","value","id","$createLinkNode","setFormat","format","setIndent","indent","setDirection","direction","canBeEmpty","canInsertTextAfter","canInsertTextBefore","createDOM","config","element","document","createElement","href","sanitizeUrl","target","rel","manageRel","theme","link","exportJSON","type","getFields","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/field/features/link/nodes/LinkNode.ts"],"sourcesContent":["import type { BaseSelection } from 'lexical'\nimport type {\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 {\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\n constructor({\n fields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: undefined,\n },\n key,\n }: {\n fields: LinkFields\n key?: NodeKey\n }) {\n super(key)\n this.__fields = fields\n }\n\n static clone(node: LinkNode): LinkNode {\n return new LinkNode({\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 const node = $createLinkNode({\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 return {\n ...super.exportJSON(),\n type: this.getType(),\n fields: this.getFields(),\n version: 2,\n }\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 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 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({ fields }: { fields: LinkFields }): LinkNode {\n return $applyNodeReplacement(new LinkNode({ fields }))\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","$applyNodeReplacement","$createTextNode","$getSelection","$isElementNode","$isRangeSelection","ElementNode","createCommand","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","__fields","constructor","fields","doc","linkType","newTab","url","undefined","key","clone","node","__key","getType","importDOM","a","conversion","convertAnchorElement","priority","importJSON","serializedNode","version","value","id","$createLinkNode","setFormat","format","setIndent","indent","setDirection","direction","canBeEmpty","canInsertTextAfter","canInsertTextBefore","createDOM","config","element","document","createElement","href","sanitizeUrl","target","rel","manageRel","theme","link","exportJSON","type","getFields","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,4 +1,5 @@
1
- /// <reference types="react" resolution-mode="require"/>
1
+ import type { PluginComponent } from '../../../types.js';
2
+ import type { ClientProps } from '../../feature.client.js';
2
3
  import type { LinkFields } from '../../nodes/types.js';
3
4
  interface LinkMatcherResult {
4
5
  fields?: LinkFields;
@@ -14,6 +15,6 @@ export declare function createLinkMatcherWithRegExp(regExp: RegExp, urlTransform
14
15
  text: string;
15
16
  url: string;
16
17
  };
17
- export declare function AutoLinkPlugin(): JSX.Element | null;
18
+ export declare const AutoLinkPlugin: PluginComponent<ClientProps>;
18
19
  export {};
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/link/plugins/autoLink/index.tsx"],"names":[],"mappings":";AAwBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAQtD,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAAA;AAEpE,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAuB,UAE3C,MAAM;;;;;EAUrB;AA4XD,wBAAgB,cAAc,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAMnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/link/plugins/autoLink/index.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAQtD,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAAA;AAEpE,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAuB,UAE3C,MAAM;;;;;EAUrB;AA4XD,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,WAAW,CAMvD,CAAA"}
@@ -1,10 +1,7 @@
1
1
  'use client';
2
- import lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js';
3
- const { useLexicalComposerContext } = lexicalComposerContextImport;
4
- import lexicalUtilsImport from '@lexical/utils';
5
- const { mergeRegister } = lexicalUtilsImport;
6
- import lexicalImport from 'lexical';
7
- const { $createTextNode, $getSelection, $isElementNode, $isLineBreakNode, $isNodeSelection, $isRangeSelection, $isTextNode, TextNode: TextNodeValue } = lexicalImport;
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
3
+ import { mergeRegister } from '@lexical/utils';
4
+ import { $createTextNode, $getSelection, $isElementNode, $isLineBreakNode, $isNodeSelection, $isRangeSelection, $isTextNode, TextNode as TextNodeValue } from 'lexical';
8
5
  import { useEffect } from 'react';
9
6
  import { invariant } from '../../../../lexical/utils/invariant.js';
10
7
  import { $createAutoLinkNode, $isAutoLinkNode, AutoLinkNode } from '../../nodes/AutoLinkNode.js';
@@ -312,10 +309,10 @@ const MATCHERS = [
312
309
  return `mailto:${text}`;
313
310
  })
314
311
  ];
315
- export function AutoLinkPlugin() {
312
+ export const AutoLinkPlugin = ()=>{
316
313
  const [editor] = useLexicalComposerContext();
317
314
  useAutoLink(editor, MATCHERS);
318
315
  return null;
319
- }
316
+ };
320
317
 
321
318
  //# sourceMappingURL=index.js.map