@payloadcms/richtext-lexical 3.0.0-beta.7 → 3.0.0-canary.6041f49

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 (661) 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 +4 -1
  13. package/dist/field/features/align/feature.client.d.ts.map +1 -1
  14. package/dist/field/features/align/feature.client.js +127 -54
  15. package/dist/field/features/align/feature.client.js.map +1 -1
  16. package/dist/field/features/align/toolbarAlignGroup.d.ts +3 -0
  17. package/dist/field/features/align/toolbarAlignGroup.d.ts.map +1 -0
  18. package/dist/field/features/align/toolbarAlignGroup.js +12 -0
  19. package/dist/field/features/align/toolbarAlignGroup.js.map +1 -0
  20. package/dist/field/features/blockquote/feature.client.d.ts +4 -1
  21. package/dist/field/features/blockquote/feature.client.d.ts.map +1 -1
  22. package/dist/field/features/blockquote/feature.client.js +53 -40
  23. package/dist/field/features/blockquote/feature.client.js.map +1 -1
  24. package/dist/field/features/blockquote/feature.server.d.ts +1 -1
  25. package/dist/field/features/blockquote/feature.server.d.ts.map +1 -1
  26. package/dist/field/features/blockquote/feature.server.js +7 -7
  27. package/dist/field/features/blockquote/feature.server.js.map +1 -1
  28. package/dist/field/features/blockquote/markdownTransformer.d.ts.map +1 -1
  29. package/dist/field/features/blockquote/markdownTransformer.js +2 -4
  30. package/dist/field/features/blockquote/markdownTransformer.js.map +1 -1
  31. package/dist/field/features/blocks/component/BlockContent.d.ts.map +1 -1
  32. package/dist/field/features/blocks/component/BlockContent.js +3 -5
  33. package/dist/field/features/blocks/component/BlockContent.js.map +1 -1
  34. package/dist/field/features/blocks/component/index.d.ts.map +1 -1
  35. package/dist/field/features/blocks/component/index.js +37 -4
  36. package/dist/field/features/blocks/component/index.js.map +1 -1
  37. package/dist/field/features/blocks/drawer/index.d.ts.map +1 -1
  38. package/dist/field/features/blocks/drawer/index.js +2 -4
  39. package/dist/field/features/blocks/drawer/index.js.map +1 -1
  40. package/dist/field/features/blocks/feature.client.d.ts +4 -1
  41. package/dist/field/features/blocks/feature.client.d.ts.map +1 -1
  42. package/dist/field/features/blocks/feature.client.js +56 -27
  43. package/dist/field/features/blocks/feature.client.js.map +1 -1
  44. package/dist/field/features/blocks/feature.server.d.ts +2 -5
  45. package/dist/field/features/blocks/feature.server.d.ts.map +1 -1
  46. package/dist/field/features/blocks/feature.server.js +109 -77
  47. package/dist/field/features/blocks/feature.server.js.map +1 -1
  48. package/dist/field/features/blocks/nodes/BlocksNode.d.ts +1 -3
  49. package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  50. package/dist/field/features/blocks/nodes/BlocksNode.js +1 -2
  51. package/dist/field/features/blocks/nodes/BlocksNode.js.map +1 -1
  52. package/dist/field/features/blocks/plugin/commands.d.ts.map +1 -1
  53. package/dist/field/features/blocks/plugin/commands.js +1 -2
  54. package/dist/field/features/blocks/plugin/commands.js.map +1 -1
  55. package/dist/field/features/blocks/plugin/index.d.ts +3 -2
  56. package/dist/field/features/blocks/plugin/index.d.ts.map +1 -1
  57. package/dist/field/features/blocks/plugin/index.js +5 -8
  58. package/dist/field/features/blocks/plugin/index.js.map +1 -1
  59. package/dist/field/features/blocks/populationPromise.d.ts.map +1 -1
  60. package/dist/field/features/blocks/populationPromise.js +4 -18
  61. package/dist/field/features/blocks/populationPromise.js.map +1 -1
  62. package/dist/field/features/blocks/validate.d.ts.map +1 -1
  63. package/dist/field/features/blocks/validate.js +22 -36
  64. package/dist/field/features/blocks/validate.js.map +1 -1
  65. package/dist/field/features/converters/html/field/index.d.ts +8 -2
  66. package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
  67. package/dist/field/features/converters/html/field/index.js +6 -3
  68. package/dist/field/features/converters/html/field/index.js.map +1 -1
  69. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.d.ts +4 -1
  70. package/dist/field/features/debug/testRecorder/feature.client.d.ts.map +1 -0
  71. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.js.map +1 -1
  72. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.d.ts.map +1 -1
  73. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.js +1 -1
  74. package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.js.map +1 -1
  75. package/dist/field/features/debug/testRecorder/plugin/index.d.ts +5 -0
  76. package/dist/field/features/debug/testRecorder/plugin/index.d.ts.map +1 -0
  77. package/dist/field/features/debug/{testrecorder → testRecorder}/plugin/index.js +2 -4
  78. package/dist/field/features/debug/testRecorder/plugin/index.js.map +1 -0
  79. package/dist/field/features/debug/{treeview → treeView}/feature.client.d.ts +4 -1
  80. package/dist/field/features/debug/treeView/feature.client.d.ts.map +1 -0
  81. package/dist/field/features/debug/{treeview → treeView}/feature.client.js.map +1 -1
  82. package/dist/field/features/debug/{treeview → treeView}/feature.server.d.ts.map +1 -1
  83. package/dist/field/features/debug/{treeview → treeView}/feature.server.js +1 -1
  84. package/dist/field/features/debug/{treeview → treeView}/feature.server.js.map +1 -1
  85. package/dist/field/features/debug/treeView/plugin/index.d.ts +4 -0
  86. package/dist/field/features/debug/treeView/plugin/index.d.ts.map +1 -0
  87. package/dist/field/features/debug/{treeview → treeView}/plugin/index.js +4 -6
  88. package/dist/field/features/debug/treeView/plugin/index.js.map +1 -0
  89. package/dist/field/features/format/bold/feature.client.d.ts +4 -1
  90. package/dist/field/features/format/bold/feature.client.d.ts.map +1 -1
  91. package/dist/field/features/format/bold/feature.client.js +26 -23
  92. package/dist/field/features/format/bold/feature.client.js.map +1 -1
  93. package/dist/field/features/format/{inlinecode → inlineCode}/feature.client.d.ts +4 -1
  94. package/dist/field/features/format/inlineCode/feature.client.d.ts.map +1 -0
  95. package/dist/field/features/format/inlineCode/feature.client.js +46 -0
  96. package/dist/field/features/format/inlineCode/feature.client.js.map +1 -0
  97. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.d.ts.map +1 -1
  98. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.js +1 -1
  99. package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.js.map +1 -1
  100. package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.d.ts.map +1 -1
  101. package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.js.map +1 -1
  102. package/dist/field/features/format/italic/feature.client.d.ts +4 -1
  103. package/dist/field/features/format/italic/feature.client.d.ts.map +1 -1
  104. package/dist/field/features/format/italic/feature.client.js +27 -24
  105. package/dist/field/features/format/italic/feature.client.js.map +1 -1
  106. package/dist/field/features/format/shared/toolbarFormatGroup.d.ts +3 -0
  107. package/dist/field/features/format/shared/toolbarFormatGroup.d.ts.map +1 -0
  108. package/dist/field/features/format/shared/toolbarFormatGroup.js +10 -0
  109. package/dist/field/features/format/shared/toolbarFormatGroup.js.map +1 -0
  110. package/dist/field/features/format/strikethrough/feature.client.d.ts +4 -1
  111. package/dist/field/features/format/strikethrough/feature.client.d.ts.map +1 -1
  112. package/dist/field/features/format/strikethrough/feature.client.js +27 -24
  113. package/dist/field/features/format/strikethrough/feature.client.js.map +1 -1
  114. package/dist/field/features/format/subscript/feature.client.d.ts +4 -1
  115. package/dist/field/features/format/subscript/feature.client.d.ts.map +1 -1
  116. package/dist/field/features/format/subscript/feature.client.js +25 -22
  117. package/dist/field/features/format/subscript/feature.client.js.map +1 -1
  118. package/dist/field/features/format/superscript/feature.client.d.ts +4 -1
  119. package/dist/field/features/format/superscript/feature.client.d.ts.map +1 -1
  120. package/dist/field/features/format/superscript/feature.client.js +25 -22
  121. package/dist/field/features/format/superscript/feature.client.js.map +1 -1
  122. package/dist/field/features/format/underline/feature.client.d.ts +4 -1
  123. package/dist/field/features/format/underline/feature.client.d.ts.map +1 -1
  124. package/dist/field/features/format/underline/feature.client.js +25 -22
  125. package/dist/field/features/format/underline/feature.client.js.map +1 -1
  126. package/dist/field/features/heading/feature.client.d.ts +4 -1
  127. package/dist/field/features/heading/feature.client.d.ts.map +1 -1
  128. package/dist/field/features/heading/feature.client.js +71 -54
  129. package/dist/field/features/heading/feature.client.js.map +1 -1
  130. package/dist/field/features/heading/feature.server.d.ts.map +1 -1
  131. package/dist/field/features/heading/feature.server.js +5 -5
  132. package/dist/field/features/heading/feature.server.js.map +1 -1
  133. package/dist/field/features/heading/markdownTransformer.d.ts.map +1 -1
  134. package/dist/field/features/heading/markdownTransformer.js +1 -2
  135. package/dist/field/features/heading/markdownTransformer.js.map +1 -1
  136. package/dist/field/features/horizontalRule/component/index.d.ts.map +1 -0
  137. package/dist/field/features/{horizontalrule → horizontalRule}/component/index.js +2 -4
  138. package/dist/field/features/horizontalRule/component/index.js.map +1 -0
  139. package/dist/field/features/{horizontalrule → horizontalRule}/feature.client.d.ts +4 -1
  140. package/dist/field/features/horizontalRule/feature.client.d.ts.map +1 -0
  141. package/dist/field/features/horizontalRule/feature.client.js +76 -0
  142. package/dist/field/features/horizontalRule/feature.client.js.map +1 -0
  143. package/dist/field/features/horizontalRule/feature.server.d.ts.map +1 -0
  144. package/dist/field/features/{horizontalrule → horizontalRule}/feature.server.js +4 -4
  145. package/dist/field/features/horizontalRule/feature.server.js.map +1 -0
  146. package/dist/field/features/{horizontalrule → horizontalRule}/markdownTransformer.d.ts.map +1 -1
  147. package/dist/field/features/{horizontalrule → horizontalRule}/markdownTransformer.js.map +1 -1
  148. package/dist/field/features/{horizontalrule → horizontalRule}/nodes/HorizontalRuleNode.d.ts +1 -3
  149. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.d.ts.map +1 -0
  150. package/dist/field/features/{horizontalrule → horizontalRule}/nodes/HorizontalRuleNode.js +1 -2
  151. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js.map +1 -0
  152. package/dist/field/features/horizontalRule/plugin/index.d.ts +7 -0
  153. package/dist/field/features/horizontalRule/plugin/index.d.ts.map +1 -0
  154. package/dist/field/features/{horizontalrule → horizontalRule}/plugin/index.js +5 -8
  155. package/dist/field/features/horizontalRule/plugin/index.js.map +1 -0
  156. package/dist/field/features/indent/feature.client.d.ts +4 -1
  157. package/dist/field/features/indent/feature.client.d.ts.map +1 -1
  158. package/dist/field/features/indent/feature.client.js +43 -42
  159. package/dist/field/features/indent/feature.client.js.map +1 -1
  160. package/dist/field/features/indent/toolbarIndentGroup.d.ts +3 -0
  161. package/dist/field/features/indent/toolbarIndentGroup.d.ts.map +1 -0
  162. package/dist/field/features/indent/toolbarIndentGroup.js +10 -0
  163. package/dist/field/features/indent/toolbarIndentGroup.js.map +1 -0
  164. package/dist/field/features/link/drawer/baseFields.d.ts +2 -2
  165. package/dist/field/features/link/drawer/baseFields.d.ts.map +1 -1
  166. package/dist/field/features/link/drawer/baseFields.js +30 -43
  167. package/dist/field/features/link/drawer/baseFields.js.map +1 -1
  168. package/dist/field/features/link/drawer/index.js +3 -2
  169. package/dist/field/features/link/drawer/index.js.map +1 -1
  170. package/dist/field/features/link/drawer/types.d.ts +4 -2
  171. package/dist/field/features/link/drawer/types.d.ts.map +1 -1
  172. package/dist/field/features/link/drawer/types.js.map +1 -1
  173. package/dist/field/features/link/feature.client.d.ts +13 -1
  174. package/dist/field/features/link/feature.client.d.ts.map +1 -1
  175. package/dist/field/features/link/feature.client.js +59 -47
  176. package/dist/field/features/link/feature.client.js.map +1 -1
  177. package/dist/field/features/link/feature.server.d.ts +10 -5
  178. package/dist/field/features/link/feature.server.d.ts.map +1 -1
  179. package/dist/field/features/link/feature.server.js +48 -9
  180. package/dist/field/features/link/feature.server.js.map +1 -1
  181. package/dist/field/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  182. package/dist/field/features/link/nodes/AutoLinkNode.js +1 -2
  183. package/dist/field/features/link/nodes/AutoLinkNode.js.map +1 -1
  184. package/dist/field/features/link/nodes/LinkNode.d.ts +1 -3
  185. package/dist/field/features/link/nodes/LinkNode.d.ts.map +1 -1
  186. package/dist/field/features/link/nodes/LinkNode.js +2 -4
  187. package/dist/field/features/link/nodes/LinkNode.js.map +1 -1
  188. package/dist/field/features/link/plugins/autoLink/index.d.ts +3 -2
  189. package/dist/field/features/link/plugins/autoLink/index.d.ts.map +1 -1
  190. package/dist/field/features/link/plugins/autoLink/index.js +5 -8
  191. package/dist/field/features/link/plugins/autoLink/index.js.map +1 -1
  192. package/dist/field/features/link/plugins/clickableLink/index.d.ts +3 -2
  193. package/dist/field/features/link/plugins/clickableLink/index.d.ts.map +1 -1
  194. package/dist/field/features/link/plugins/clickableLink/index.js +2 -2
  195. package/dist/field/features/link/plugins/clickableLink/index.js.map +1 -1
  196. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -1
  197. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -2
  198. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
  199. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  200. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +93 -69
  201. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  202. package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts +3 -4
  203. package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  204. package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +1 -1
  205. package/dist/field/features/link/plugins/floatingLinkEditor/index.scss +11 -3
  206. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts +1 -3
  207. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -1
  208. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +12 -30
  209. package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -1
  210. package/dist/field/features/link/plugins/link/index.d.ts +3 -1
  211. package/dist/field/features/link/plugins/link/index.d.ts.map +1 -1
  212. package/dist/field/features/link/plugins/link/index.js +5 -14
  213. package/dist/field/features/link/plugins/link/index.js.map +1 -1
  214. package/dist/field/features/link/populationPromise.d.ts.map +1 -1
  215. package/dist/field/features/link/populationPromise.js +10 -25
  216. package/dist/field/features/link/populationPromise.js.map +1 -1
  217. package/dist/field/features/link/validate.d.ts +5 -0
  218. package/dist/field/features/link/validate.d.ts.map +1 -0
  219. package/dist/field/features/link/validate.js +32 -0
  220. package/dist/field/features/link/validate.js.map +1 -0
  221. package/dist/field/features/lists/checklist/feature.client.d.ts +4 -1
  222. package/dist/field/features/lists/checklist/feature.client.d.ts.map +1 -1
  223. package/dist/field/features/lists/checklist/feature.client.js +56 -32
  224. package/dist/field/features/lists/checklist/feature.client.js.map +1 -1
  225. package/dist/field/features/lists/checklist/feature.server.d.ts +1 -1
  226. package/dist/field/features/lists/checklist/feature.server.d.ts.map +1 -1
  227. package/dist/field/features/lists/checklist/feature.server.js +10 -10
  228. package/dist/field/features/lists/checklist/feature.server.js.map +1 -1
  229. package/dist/field/features/lists/checklist/markdownTransformers.d.ts.map +1 -1
  230. package/dist/field/features/lists/checklist/markdownTransformers.js +2 -3
  231. package/dist/field/features/lists/checklist/markdownTransformers.js.map +1 -1
  232. package/dist/field/features/lists/checklist/plugin/index.d.ts +2 -2
  233. package/dist/field/features/lists/checklist/plugin/index.d.ts.map +1 -1
  234. package/dist/field/features/lists/checklist/plugin/index.js +3 -4
  235. package/dist/field/features/lists/checklist/plugin/index.js.map +1 -1
  236. package/dist/field/features/lists/htmlConverter.d.ts.map +1 -1
  237. package/dist/field/features/lists/htmlConverter.js +13 -6
  238. package/dist/field/features/lists/htmlConverter.js.map +1 -1
  239. package/dist/field/features/lists/{orderedlist → orderedList}/feature.client.d.ts +4 -1
  240. package/dist/field/features/lists/orderedList/feature.client.d.ts.map +1 -0
  241. package/dist/field/features/lists/orderedList/feature.client.js +96 -0
  242. package/dist/field/features/lists/orderedList/feature.client.js.map +1 -0
  243. package/dist/field/features/lists/orderedList/feature.server.d.ts.map +1 -0
  244. package/dist/field/features/lists/{orderedlist → orderedList}/feature.server.js +7 -7
  245. package/dist/field/features/lists/orderedList/feature.server.js.map +1 -0
  246. package/dist/field/features/lists/orderedList/markdownTransformer.d.ts.map +1 -0
  247. package/dist/field/features/lists/{orderedlist → orderedList}/markdownTransformer.js +2 -3
  248. package/dist/field/features/lists/orderedList/markdownTransformer.js.map +1 -0
  249. package/dist/field/features/lists/plugin/index.d.ts +2 -2
  250. package/dist/field/features/lists/plugin/index.d.ts.map +1 -1
  251. package/dist/field/features/lists/plugin/index.js +3 -4
  252. package/dist/field/features/lists/plugin/index.js.map +1 -1
  253. package/dist/field/features/lists/{common → shared}/markdown.d.ts.map +1 -1
  254. package/dist/field/features/lists/{common → shared}/markdown.js +1 -2
  255. package/dist/field/features/lists/shared/markdown.js.map +1 -0
  256. package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.client.d.ts +4 -1
  257. package/dist/field/features/lists/unorderedList/feature.client.d.ts.map +1 -0
  258. package/dist/field/features/lists/unorderedList/feature.client.js +96 -0
  259. package/dist/field/features/lists/unorderedList/feature.client.js.map +1 -0
  260. package/dist/field/features/lists/unorderedList/feature.server.d.ts.map +1 -0
  261. package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.server.js +7 -7
  262. package/dist/field/features/lists/unorderedList/feature.server.js.map +1 -0
  263. package/dist/field/features/lists/unorderedList/markdownTransformer.d.ts.map +1 -0
  264. package/dist/field/features/lists/{unorderedlist → unorderedList}/markdownTransformer.js +2 -3
  265. package/dist/field/features/lists/unorderedList/markdownTransformer.js.map +1 -0
  266. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts.map +1 -1
  267. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +2 -4
  268. package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
  269. package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.d.ts +4 -1
  270. package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -1
  271. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -3
  272. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  273. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +2 -4
  274. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  275. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts +1 -1
  276. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +1 -1
  277. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +1 -1
  278. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +2 -2
  279. package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +1 -1
  280. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts.map +1 -1
  281. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +2 -4
  282. package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
  283. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts.map +1 -1
  284. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +2 -4
  285. package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
  286. package/dist/field/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
  287. package/dist/field/features/migrations/slateToLexical/converter/index.js +2 -1
  288. package/dist/field/features/migrations/slateToLexical/converter/index.js.map +1 -1
  289. package/dist/field/features/migrations/slateToLexical/feature.client.d.ts +4 -1
  290. package/dist/field/features/migrations/slateToLexical/feature.client.d.ts.map +1 -1
  291. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -3
  292. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  293. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +2 -4
  294. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  295. package/dist/field/features/paragraph/feature.client.d.ts +4 -1
  296. package/dist/field/features/paragraph/feature.client.d.ts.map +1 -1
  297. package/dist/field/features/paragraph/feature.client.js +45 -33
  298. package/dist/field/features/paragraph/feature.client.js.map +1 -1
  299. package/dist/field/features/relationship/drawer/commands.d.ts.map +1 -1
  300. package/dist/field/features/relationship/drawer/commands.js +1 -2
  301. package/dist/field/features/relationship/drawer/commands.js.map +1 -1
  302. package/dist/field/features/relationship/drawer/index.d.ts.map +1 -1
  303. package/dist/field/features/relationship/drawer/index.js +7 -13
  304. package/dist/field/features/relationship/drawer/index.js.map +1 -1
  305. package/dist/field/features/relationship/feature.client.d.ts +17 -2
  306. package/dist/field/features/relationship/feature.client.d.ts.map +1 -1
  307. package/dist/field/features/relationship/feature.client.js +37 -15
  308. package/dist/field/features/relationship/feature.client.js.map +1 -1
  309. package/dist/field/features/relationship/feature.server.d.ts +10 -1
  310. package/dist/field/features/relationship/feature.server.d.ts.map +1 -1
  311. package/dist/field/features/relationship/feature.server.js +5 -4
  312. package/dist/field/features/relationship/feature.server.js.map +1 -1
  313. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts +3 -8
  314. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
  315. package/dist/field/features/relationship/nodes/RelationshipNode.js +8 -8
  316. package/dist/field/features/relationship/nodes/RelationshipNode.js.map +1 -1
  317. package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
  318. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +56 -7
  319. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
  320. package/dist/field/features/relationship/plugins/index.d.ts +2 -2
  321. package/dist/field/features/relationship/plugins/index.d.ts.map +1 -1
  322. package/dist/field/features/relationship/plugins/index.js +9 -12
  323. package/dist/field/features/relationship/plugins/index.js.map +1 -1
  324. package/dist/field/features/relationship/populationPromise.d.ts +2 -1
  325. package/dist/field/features/relationship/populationPromise.d.ts.map +1 -1
  326. package/dist/field/features/relationship/populationPromise.js +25 -19
  327. package/dist/field/features/relationship/populationPromise.js.map +1 -1
  328. package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts +3 -0
  329. package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -0
  330. package/dist/field/features/shared/toolbar/addDropdownGroup.js +12 -0
  331. package/dist/field/features/shared/toolbar/addDropdownGroup.js.map +1 -0
  332. package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts +3 -0
  333. package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -0
  334. package/dist/field/features/shared/toolbar/featureButtonsGroup.js +10 -0
  335. package/dist/field/features/shared/toolbar/featureButtonsGroup.js.map +1 -0
  336. package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts +3 -0
  337. package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -0
  338. package/dist/field/features/shared/toolbar/textDropdownGroup.js +12 -0
  339. package/dist/field/features/shared/toolbar/textDropdownGroup.js.map +1 -0
  340. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts +4 -0
  341. package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts.map +1 -0
  342. package/dist/field/features/toolbars/fixed/Toolbar/index.js +152 -0
  343. package/dist/field/features/toolbars/fixed/Toolbar/index.js.map +1 -0
  344. package/dist/field/features/toolbars/fixed/Toolbar/index.scss +91 -0
  345. package/dist/field/features/toolbars/fixed/feature.client.d.ts +6 -0
  346. package/dist/field/features/toolbars/fixed/feature.client.d.ts.map +1 -0
  347. package/dist/field/features/toolbars/fixed/feature.client.js +20 -0
  348. package/dist/field/features/toolbars/fixed/feature.client.js.map +1 -0
  349. package/dist/field/features/toolbars/fixed/feature.server.d.ts +3 -0
  350. package/dist/field/features/toolbars/fixed/feature.server.d.ts.map +1 -0
  351. package/dist/field/features/toolbars/fixed/feature.server.js +15 -0
  352. package/dist/field/features/toolbars/fixed/feature.server.js.map +1 -0
  353. package/dist/field/features/toolbars/inline/Toolbar/index.d.ts +4 -0
  354. package/dist/field/features/toolbars/inline/Toolbar/index.d.ts.map +1 -0
  355. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/inline/Toolbar}/index.js +112 -70
  356. package/dist/field/features/toolbars/inline/Toolbar/index.js.map +1 -0
  357. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/inline/Toolbar}/index.scss +7 -11
  358. package/dist/field/features/toolbars/inline/feature.client.d.ts +6 -0
  359. package/dist/field/features/toolbars/inline/feature.client.d.ts.map +1 -0
  360. package/dist/field/features/toolbars/inline/feature.client.js +20 -0
  361. package/dist/field/features/toolbars/inline/feature.client.js.map +1 -0
  362. package/dist/field/features/toolbars/inline/feature.server.d.ts +3 -0
  363. package/dist/field/features/toolbars/inline/feature.server.d.ts.map +1 -0
  364. package/dist/field/features/toolbars/inline/feature.server.js +15 -0
  365. package/dist/field/features/toolbars/inline/feature.server.js.map +1 -0
  366. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts +10 -0
  367. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -0
  368. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarButton/index.js +29 -19
  369. package/dist/field/features/toolbars/shared/ToolbarButton/index.js.map +1 -0
  370. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarButton/index.scss +3 -1
  371. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +23 -0
  372. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -0
  373. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarDropdown/DropDown.js +27 -72
  374. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -0
  375. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts +23 -0
  376. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -0
  377. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js +139 -0
  378. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -0
  379. package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarDropdown/index.scss +25 -13
  380. package/dist/field/features/toolbars/types.d.ts +48 -0
  381. package/dist/field/features/toolbars/types.d.ts.map +1 -0
  382. package/dist/field/features/toolbars/types.js.map +1 -0
  383. package/dist/field/features/typeUtilities.d.ts +8 -0
  384. package/dist/field/features/typeUtilities.d.ts.map +1 -0
  385. package/dist/field/features/typeUtilities.js +8 -0
  386. package/dist/field/features/typeUtilities.js.map +1 -0
  387. package/dist/field/features/types.d.ts +133 -59
  388. package/dist/field/features/types.d.ts.map +1 -1
  389. package/dist/field/features/types.js.map +1 -1
  390. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
  391. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +5 -6
  392. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -1
  393. package/dist/field/features/upload/component/index.d.ts.map +1 -1
  394. package/dist/field/features/upload/component/index.js +59 -9
  395. package/dist/field/features/upload/component/index.js.map +1 -1
  396. package/dist/field/features/upload/drawer/commands.d.ts.map +1 -1
  397. package/dist/field/features/upload/drawer/commands.js +1 -2
  398. package/dist/field/features/upload/drawer/commands.js.map +1 -1
  399. package/dist/field/features/upload/drawer/index.d.ts.map +1 -1
  400. package/dist/field/features/upload/drawer/index.js +8 -12
  401. package/dist/field/features/upload/drawer/index.js.map +1 -1
  402. package/dist/field/features/upload/feature.client.d.ts +4 -1
  403. package/dist/field/features/upload/feature.client.d.ts.map +1 -1
  404. package/dist/field/features/upload/feature.client.js +35 -10
  405. package/dist/field/features/upload/feature.client.js.map +1 -1
  406. package/dist/field/features/upload/feature.server.d.ts +10 -3
  407. package/dist/field/features/upload/feature.server.d.ts.map +1 -1
  408. package/dist/field/features/upload/feature.server.js +39 -11
  409. package/dist/field/features/upload/feature.server.js.map +1 -1
  410. package/dist/field/features/upload/nodes/UploadNode.d.ts +2 -14
  411. package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
  412. package/dist/field/features/upload/nodes/UploadNode.js +24 -11
  413. package/dist/field/features/upload/nodes/UploadNode.js.map +1 -1
  414. package/dist/field/features/upload/plugin/index.d.ts +5 -4
  415. package/dist/field/features/upload/plugin/index.d.ts.map +1 -1
  416. package/dist/field/features/upload/plugin/index.js +6 -11
  417. package/dist/field/features/upload/plugin/index.js.map +1 -1
  418. package/dist/field/features/upload/populationPromise.d.ts.map +1 -1
  419. package/dist/field/features/upload/populationPromise.js +15 -9
  420. package/dist/field/features/upload/populationPromise.js.map +1 -1
  421. package/dist/field/features/upload/validate.d.ts +2 -1
  422. package/dist/field/features/upload/validate.d.ts.map +1 -1
  423. package/dist/field/features/upload/validate.js +36 -9
  424. package/dist/field/features/upload/validate.js.map +1 -1
  425. package/dist/field/index.d.ts +1 -1
  426. package/dist/field/index.d.ts.map +1 -1
  427. package/dist/field/index.js.map +1 -1
  428. package/dist/field/index.scss +4 -0
  429. package/dist/field/lexical/EditorFocusProvider.d.ts +20 -0
  430. package/dist/field/lexical/EditorFocusProvider.d.ts.map +1 -0
  431. package/dist/field/lexical/EditorFocusProvider.js +78 -0
  432. package/dist/field/lexical/EditorFocusProvider.js.map +1 -0
  433. package/dist/field/lexical/EditorPlugin.d.ts +1 -0
  434. package/dist/field/lexical/EditorPlugin.d.ts.map +1 -1
  435. package/dist/field/lexical/EditorPlugin.js +6 -3
  436. package/dist/field/lexical/EditorPlugin.js.map +1 -1
  437. package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
  438. package/dist/field/lexical/LexicalEditor.js +31 -15
  439. package/dist/field/lexical/LexicalEditor.js.map +1 -1
  440. package/dist/field/lexical/LexicalEditor.scss +3 -19
  441. package/dist/field/lexical/LexicalProvider.d.ts +1 -1
  442. package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
  443. package/dist/field/lexical/LexicalProvider.js +4 -4
  444. package/dist/field/lexical/LexicalProvider.js.map +1 -1
  445. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts +2 -3
  446. package/dist/field/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  447. package/dist/field/lexical/config/client/EditorConfigProvider.js.map +1 -1
  448. package/dist/field/lexical/config/client/default.d.ts +1 -1
  449. package/dist/field/lexical/config/client/default.d.ts.map +1 -1
  450. package/dist/field/lexical/config/client/default.js.map +1 -1
  451. package/dist/field/lexical/config/client/sanitize.d.ts +1 -1
  452. package/dist/field/lexical/config/client/sanitize.d.ts.map +1 -1
  453. package/dist/field/lexical/config/client/sanitize.js +81 -32
  454. package/dist/field/lexical/config/client/sanitize.js.map +1 -1
  455. package/dist/field/lexical/config/server/default.d.ts +2 -3
  456. package/dist/field/lexical/config/server/default.d.ts.map +1 -1
  457. package/dist/field/lexical/config/server/default.js +11 -11
  458. package/dist/field/lexical/config/server/default.js.map +1 -1
  459. package/dist/field/lexical/config/server/loader.d.ts +5 -2
  460. package/dist/field/lexical/config/server/loader.d.ts.map +1 -1
  461. package/dist/field/lexical/config/server/loader.js +4 -2
  462. package/dist/field/lexical/config/server/loader.js.map +1 -1
  463. package/dist/field/lexical/config/server/sanitize.d.ts +2 -1
  464. package/dist/field/lexical/config/server/sanitize.d.ts.map +1 -1
  465. package/dist/field/lexical/config/server/sanitize.js +23 -8
  466. package/dist/field/lexical/config/server/sanitize.js.map +1 -1
  467. package/dist/field/lexical/config/types.d.ts +1 -1
  468. package/dist/field/lexical/config/types.d.ts.map +1 -1
  469. package/dist/field/lexical/config/types.js.map +1 -1
  470. package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
  471. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +1 -2
  472. package/dist/field/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  473. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +9 -9
  474. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  475. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +74 -77
  476. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  477. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +4 -4
  478. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  479. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +6 -9
  480. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  481. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +17 -25
  482. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  483. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -37
  484. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  485. package/dist/field/lexical/plugins/SlashMenu/index.d.ts +2 -2
  486. package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  487. package/dist/field/lexical/plugins/SlashMenu/index.js +72 -67
  488. package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -1
  489. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
  490. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +2 -4
  491. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  492. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts +1 -1
  493. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts.map +1 -1
  494. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +3 -4
  495. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js.map +1 -1
  496. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  497. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +8 -7
  498. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  499. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +8 -0
  500. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  501. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +25 -6
  502. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  503. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -1
  504. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +1 -2
  505. package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
  506. package/dist/field/lexical/theme/EditorTheme.scss +13 -14
  507. package/dist/field/lexical/ui/ContentEditable.d.ts.map +1 -1
  508. package/dist/field/lexical/ui/ContentEditable.js +1 -2
  509. package/dist/field/lexical/ui/ContentEditable.js.map +1 -1
  510. package/dist/field/lexical/ui/icons/Add/index.d.ts +3 -0
  511. package/dist/field/lexical/ui/icons/Add/index.d.ts.map +1 -0
  512. package/dist/field/lexical/ui/icons/Add/index.js +16 -0
  513. package/dist/field/lexical/ui/icons/Add/index.js.map +1 -0
  514. package/dist/field/lexical/utils/getSelectedNode.d.ts.map +1 -1
  515. package/dist/field/lexical/utils/getSelectedNode.js +1 -2
  516. package/dist/field/lexical/utils/getSelectedNode.js.map +1 -1
  517. package/dist/field/lexical/utils/nodeFormat.d.ts +2 -1
  518. package/dist/field/lexical/utils/nodeFormat.d.ts.map +1 -1
  519. package/dist/field/lexical/utils/nodeFormat.js.map +1 -1
  520. package/dist/field/lexical/utils/setFloatingElemPosition.d.ts +11 -1
  521. package/dist/field/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
  522. package/dist/field/lexical/utils/setFloatingElemPosition.js +16 -13
  523. package/dist/field/lexical/utils/setFloatingElemPosition.js.map +1 -1
  524. package/dist/field/lexical/utils/url.d.ts.map +1 -1
  525. package/dist/field/lexical/utils/url.js +3 -0
  526. package/dist/field/lexical/utils/url.js.map +1 -1
  527. package/dist/forEachNodeRecursively.d.ts +10 -0
  528. package/dist/forEachNodeRecursively.d.ts.map +1 -0
  529. package/dist/forEachNodeRecursively.js +24 -0
  530. package/dist/forEachNodeRecursively.js.map +1 -0
  531. package/dist/generateComponentMap.d.ts.map +1 -1
  532. package/dist/generateComponentMap.js +13 -21
  533. package/dist/generateComponentMap.js.map +1 -1
  534. package/dist/generateSchemaMap.d.ts.map +1 -1
  535. package/dist/generateSchemaMap.js +4 -12
  536. package/dist/generateSchemaMap.js.map +1 -1
  537. package/dist/index.d.ts +24 -20
  538. package/dist/index.d.ts.map +1 -1
  539. package/dist/index.js +275 -184
  540. package/dist/index.js.map +1 -1
  541. package/dist/populate/defaultValue.d.ts.map +1 -1
  542. package/dist/populate/defaultValue.js +1 -0
  543. package/dist/populate/defaultValue.js.map +1 -1
  544. package/dist/populate/populate.d.ts +5 -4
  545. package/dist/populate/populate.d.ts.map +1 -1
  546. package/dist/populate/populate.js +13 -11
  547. package/dist/populate/populate.js.map +1 -1
  548. package/dist/populate/populateLexicalPopulationPromises.d.ts +12 -0
  549. package/dist/populate/populateLexicalPopulationPromises.d.ts.map +1 -0
  550. package/dist/populate/populateLexicalPopulationPromises.js +36 -0
  551. package/dist/populate/populateLexicalPopulationPromises.js.map +1 -0
  552. package/dist/populate/recurseNestedFields.d.ts +8 -4
  553. package/dist/populate/recurseNestedFields.d.ts.map +1 -1
  554. package/dist/populate/recurseNestedFields.js +4 -5
  555. package/dist/populate/recurseNestedFields.js.map +1 -1
  556. package/dist/types.d.ts +12 -5
  557. package/dist/types.d.ts.map +1 -1
  558. package/dist/types.js.map +1 -1
  559. package/dist/validate/index.d.ts +1 -1
  560. package/dist/validate/index.d.ts.map +1 -1
  561. package/package.json +47 -46
  562. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts +0 -3
  563. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts.map +0 -1
  564. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +0 -12
  565. package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js.map +0 -1
  566. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts +0 -3
  567. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts.map +0 -1
  568. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +0 -10
  569. package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js.map +0 -1
  570. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts +0 -3
  571. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts.map +0 -1
  572. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +0 -12
  573. package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js.map +0 -1
  574. package/dist/field/features/debug/testrecorder/feature.client.d.ts.map +0 -1
  575. package/dist/field/features/debug/testrecorder/plugin/index.d.ts +0 -5
  576. package/dist/field/features/debug/testrecorder/plugin/index.d.ts.map +0 -1
  577. package/dist/field/features/debug/testrecorder/plugin/index.js.map +0 -1
  578. package/dist/field/features/debug/treeview/feature.client.d.ts.map +0 -1
  579. package/dist/field/features/debug/treeview/plugin/index.d.ts +0 -4
  580. package/dist/field/features/debug/treeview/plugin/index.d.ts.map +0 -1
  581. package/dist/field/features/debug/treeview/plugin/index.js.map +0 -1
  582. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts +0 -3
  583. package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts.map +0 -1
  584. package/dist/field/features/format/common/floatingSelectToolbarSection.js +0 -10
  585. package/dist/field/features/format/common/floatingSelectToolbarSection.js.map +0 -1
  586. package/dist/field/features/format/inlinecode/feature.client.d.ts.map +0 -1
  587. package/dist/field/features/format/inlinecode/feature.client.js +0 -43
  588. package/dist/field/features/format/inlinecode/feature.client.js.map +0 -1
  589. package/dist/field/features/horizontalrule/component/index.d.ts.map +0 -1
  590. package/dist/field/features/horizontalrule/component/index.js.map +0 -1
  591. package/dist/field/features/horizontalrule/feature.client.d.ts.map +0 -1
  592. package/dist/field/features/horizontalrule/feature.client.js +0 -53
  593. package/dist/field/features/horizontalrule/feature.client.js.map +0 -1
  594. package/dist/field/features/horizontalrule/feature.server.d.ts.map +0 -1
  595. package/dist/field/features/horizontalrule/feature.server.js.map +0 -1
  596. package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.d.ts.map +0 -1
  597. package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.js.map +0 -1
  598. package/dist/field/features/horizontalrule/plugin/index.d.ts +0 -6
  599. package/dist/field/features/horizontalrule/plugin/index.d.ts.map +0 -1
  600. package/dist/field/features/horizontalrule/plugin/index.js.map +0 -1
  601. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts +0 -3
  602. package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts.map +0 -1
  603. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +0 -10
  604. package/dist/field/features/indent/floatingSelectToolbarIndentSection.js.map +0 -1
  605. package/dist/field/features/indent/index.scss +0 -4
  606. package/dist/field/features/lists/common/markdown.js.map +0 -1
  607. package/dist/field/features/lists/orderedlist/feature.client.d.ts.map +0 -1
  608. package/dist/field/features/lists/orderedlist/feature.client.js +0 -72
  609. package/dist/field/features/lists/orderedlist/feature.client.js.map +0 -1
  610. package/dist/field/features/lists/orderedlist/feature.server.d.ts.map +0 -1
  611. package/dist/field/features/lists/orderedlist/feature.server.js.map +0 -1
  612. package/dist/field/features/lists/orderedlist/markdownTransformer.d.ts.map +0 -1
  613. package/dist/field/features/lists/orderedlist/markdownTransformer.js.map +0 -1
  614. package/dist/field/features/lists/unorderedlist/feature.client.d.ts.map +0 -1
  615. package/dist/field/features/lists/unorderedlist/feature.client.js +0 -72
  616. package/dist/field/features/lists/unorderedlist/feature.client.js.map +0 -1
  617. package/dist/field/features/lists/unorderedlist/feature.server.d.ts.map +0 -1
  618. package/dist/field/features/lists/unorderedlist/feature.server.js.map +0 -1
  619. package/dist/field/features/lists/unorderedlist/markdownTransformer.d.ts.map +0 -1
  620. package/dist/field/features/lists/unorderedlist/markdownTransformer.js.map +0 -1
  621. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts +0 -8
  622. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +0 -1
  623. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js.map +0 -1
  624. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts +0 -17
  625. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +0 -1
  626. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js.map +0 -1
  627. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts +0 -18
  628. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +0 -1
  629. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +0 -42
  630. package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js.map +0 -1
  631. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts +0 -6
  632. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +0 -1
  633. package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js.map +0 -1
  634. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts +0 -40
  635. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts.map +0 -1
  636. package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js.map +0 -1
  637. package/dist/populate/richTextRelationshipPromise.d.ts +0 -23
  638. package/dist/populate/richTextRelationshipPromise.d.ts.map +0 -1
  639. package/dist/populate/richTextRelationshipPromise.js +0 -68
  640. package/dist/populate/richTextRelationshipPromise.js.map +0 -1
  641. package/src/index.ts +0 -423
  642. /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.js +0 -0
  643. /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.d.ts +0 -0
  644. /package/dist/field/features/debug/{testrecorder → testRecorder}/plugin/index.scss +0 -0
  645. /package/dist/field/features/debug/{treeview → treeView}/feature.client.js +0 -0
  646. /package/dist/field/features/debug/{treeview → treeView}/feature.server.d.ts +0 -0
  647. /package/dist/field/features/debug/{treeview → treeView}/plugin/index.scss +0 -0
  648. /package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.d.ts +0 -0
  649. /package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.d.ts +0 -0
  650. /package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.js +0 -0
  651. /package/dist/field/features/{horizontalrule → horizontalRule}/component/index.d.ts +0 -0
  652. /package/dist/field/features/{horizontalrule → horizontalRule}/feature.server.d.ts +0 -0
  653. /package/dist/field/features/{horizontalrule → horizontalRule}/markdownTransformer.d.ts +0 -0
  654. /package/dist/field/features/{horizontalrule → horizontalRule}/markdownTransformer.js +0 -0
  655. /package/dist/field/features/{horizontalrule → horizontalRule}/plugin/index.scss +0 -0
  656. /package/dist/field/features/lists/{orderedlist → orderedList}/feature.server.d.ts +0 -0
  657. /package/dist/field/features/lists/{orderedlist → orderedList}/markdownTransformer.d.ts +0 -0
  658. /package/dist/field/features/lists/{common → shared}/markdown.d.ts +0 -0
  659. /package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.server.d.ts +0 -0
  660. /package/dist/field/features/lists/{unorderedlist → unorderedList}/markdownTransformer.d.ts +0 -0
  661. /package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars}/types.js +0 -0
@@ -1,16 +1,14 @@
1
1
  'use client';
2
2
  import * as facelessUIImport from '@faceless-ui/modal';
3
- import lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js';
4
- const { useLexicalComposerContext } = lexicalComposerContextImport;
5
- import lexicalUtilsImport from '@lexical/utils';
6
- const { $findMatchingParent, mergeRegister } = lexicalUtilsImport;
3
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
4
+ import { $findMatchingParent, mergeRegister } from '@lexical/utils';
7
5
  import { getTranslation } from '@payloadcms/translations';
8
- import lexicalImport from 'lexical';
9
- const { $getSelection, $isRangeSelection, COMMAND_PRIORITY_HIGH, COMMAND_PRIORITY_LOW, KEY_ESCAPE_COMMAND, SELECTION_CHANGE_COMMAND } = lexicalImport;
10
6
  import { formatDrawerSlug } from '@payloadcms/ui/elements/Drawer';
11
7
  import { useConfig } from '@payloadcms/ui/providers/Config';
12
8
  import { useEditDepth } from '@payloadcms/ui/providers/EditDepth';
13
9
  import { useTranslation } from '@payloadcms/ui/providers/Translation';
10
+ import { $isLineBreakNode } from 'lexical';
11
+ import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_HIGH, COMMAND_PRIORITY_LOW, KEY_ESCAPE_COMMAND, SELECTION_CHANGE_COMMAND } from 'lexical';
14
12
  import React, { useCallback, useEffect, useRef, useState } from 'react';
15
13
  import { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js';
16
14
  import { getSelectedNode } from '../../../../../lexical/utils/getSelectedNode.js';
@@ -24,12 +22,12 @@ export function LinkEditor({ anchorElem }) {
24
22
  const { useModal } = facelessUIImport;
25
23
  const [editor] = useLexicalComposerContext();
26
24
  const editorRef = useRef(null);
27
- const [linkUrl, setLinkUrl] = useState('');
28
- const [linkLabel, setLinkLabel] = useState('');
25
+ const [linkUrl, setLinkUrl] = useState(null);
26
+ const [linkLabel, setLinkLabel] = useState(null);
29
27
  const { uuid } = useEditorConfigContext();
30
28
  const config = useConfig();
31
29
  const { i18n, t } = useTranslation();
32
- const [stateData, setStateData] = useState(null);
30
+ const [stateData, setStateData] = useState({});
33
31
  const { closeModal, toggleModal } = useModal();
34
32
  const editDepth = useEditDepth();
35
33
  const [isLink, setIsLink] = useState(false);
@@ -39,53 +37,78 @@ export function LinkEditor({ anchorElem }) {
39
37
  slug: `lexical-rich-text-link-` + uuid,
40
38
  depth: editDepth
41
39
  });
40
+ const setNotLink = useCallback(()=>{
41
+ setIsLink(false);
42
+ if (editorRef && editorRef.current) {
43
+ editorRef.current.style.opacity = '0';
44
+ editorRef.current.style.transform = 'translate(-10000px, -10000px)';
45
+ }
46
+ setIsAutoLink(false);
47
+ setLinkUrl(null);
48
+ setLinkLabel(null);
49
+ setSelectedNodes([]);
50
+ setStateData({});
51
+ }, [
52
+ setIsLink,
53
+ setLinkUrl,
54
+ setLinkLabel,
55
+ setSelectedNodes
56
+ ]);
42
57
  const updateLinkEditor = useCallback(()=>{
43
58
  const selection = $getSelection();
44
59
  let selectedNodeDomRect = null;
60
+ if (!$isRangeSelection(selection) || !selection) {
61
+ setNotLink();
62
+ return;
63
+ }
45
64
  // Handle the data displayed in the floating link editor & drawer when you click on a link node
46
- if ($isRangeSelection(selection)) {
47
- const node = getSelectedNode(selection);
48
- selectedNodeDomRect = editor.getElementByKey(node.getKey())?.getBoundingClientRect();
49
- const linkParent = $findMatchingParent(node, $isLinkNode);
50
- if (linkParent == null) {
51
- setIsLink(false);
52
- setIsAutoLink(false);
53
- setLinkUrl('');
54
- setLinkLabel('');
55
- setSelectedNodes([]);
56
- return;
57
- }
58
- // Initial state:
59
- const data = {
60
- fields: {
61
- doc: undefined,
62
- linkType: undefined,
63
- newTab: undefined,
64
- url: '',
65
- ...linkParent.getFields()
66
- },
67
- text: linkParent.getTextContent()
68
- };
69
- if (linkParent.getFields()?.linkType === 'custom') {
70
- setLinkUrl(linkParent.getFields()?.url ?? '');
71
- setLinkLabel('');
65
+ const focusNode = getSelectedNode(selection);
66
+ selectedNodeDomRect = editor.getElementByKey(focusNode.getKey())?.getBoundingClientRect();
67
+ const focusLinkParent = $findMatchingParent(focusNode, $isLinkNode);
68
+ // Prevent link modal from showing if selection spans further than the link: https://github.com/facebook/lexical/issues/4064
69
+ const badNode = selection.getNodes().filter((node)=>!$isLineBreakNode(node)).find((node)=>{
70
+ const linkNode = $findMatchingParent(node, $isLinkNode);
71
+ return focusLinkParent && !focusLinkParent.is(linkNode) || linkNode && !linkNode.is(focusLinkParent);
72
+ });
73
+ if (focusLinkParent == null || badNode) {
74
+ setNotLink();
75
+ return;
76
+ }
77
+ // Initial state:
78
+ const data = {
79
+ doc: undefined,
80
+ linkType: undefined,
81
+ newTab: undefined,
82
+ url: '',
83
+ ...focusLinkParent.getFields(),
84
+ text: focusLinkParent.getTextContent()
85
+ };
86
+ if (focusLinkParent.getFields()?.linkType === 'custom') {
87
+ setLinkUrl(focusLinkParent.getFields()?.url ?? null);
88
+ setLinkLabel(null);
89
+ } else {
90
+ // internal link
91
+ setLinkUrl(`/admin/collections/${focusLinkParent.getFields()?.doc?.relationTo}/${focusLinkParent.getFields()?.doc?.value}`);
92
+ const relatedField = config.collections.find((coll)=>coll.slug === focusLinkParent.getFields()?.doc?.relationTo);
93
+ if (!relatedField) {
94
+ // Usually happens if the user removed all default fields. In this case, we let them specify the label or do not display the label at all.
95
+ // label could be a virtual field the user added. This is useful if they want to use the link feature for things other than links.
96
+ setLinkLabel(focusLinkParent.getFields()?.label ? String(focusLinkParent.getFields()?.label) : null);
97
+ setLinkUrl(focusLinkParent.getFields()?.url ? String(focusLinkParent.getFields()?.url) : null);
72
98
  } else {
73
- // internal link
74
- setLinkUrl(`/admin/collections/${linkParent.getFields()?.doc?.relationTo}/${linkParent.getFields()?.doc?.value}`);
75
- const relatedField = config.collections.find((coll)=>coll.slug === linkParent.getFields()?.doc?.relationTo);
76
99
  const label = t('fields:linkedTo', {
77
100
  label: getTranslation(relatedField.labels.singular, i18n)
78
101
  }).replace(/<[^>]*>?/g, '');
79
102
  setLinkLabel(label);
80
103
  }
81
- setStateData(data);
82
- setIsLink(true);
83
- setSelectedNodes(selection ? selection?.getNodes() : []);
84
- if ($isAutoLinkNode(linkParent)) {
85
- setIsAutoLink(true);
86
- } else {
87
- setIsAutoLink(false);
88
- }
104
+ }
105
+ setStateData(data);
106
+ setIsLink(true);
107
+ setSelectedNodes(selection ? selection?.getNodes() : []);
108
+ if ($isAutoLinkNode(focusLinkParent)) {
109
+ setIsAutoLink(true);
110
+ } else {
111
+ setIsAutoLink(false);
89
112
  }
90
113
  const editorElem = editorRef.current;
91
114
  const nativeSelection = window.getSelection();
@@ -94,7 +117,7 @@ export function LinkEditor({ anchorElem }) {
94
117
  return;
95
118
  }
96
119
  const rootElement = editor.getRootElement();
97
- if (selection !== null && nativeSelection !== null && rootElement !== null && rootElement.contains(nativeSelection.anchorNode)) {
120
+ if (nativeSelection !== null && rootElement !== null && rootElement.contains(nativeSelection.anchorNode)) {
98
121
  if (!selectedNodeDomRect) {
99
122
  // Get the DOM rect of the selected node using the native selection. This sometimes produces the wrong
100
123
  // result, which is why we use lexical's selection preferably.
@@ -108,16 +131,17 @@ export function LinkEditor({ anchorElem }) {
108
131
  if (rootElement !== null) {
109
132
  setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem);
110
133
  }
111
- setLinkUrl('');
112
- setLinkLabel('');
134
+ setLinkUrl(null);
135
+ setLinkLabel(null);
113
136
  }
114
137
  return true;
115
138
  }, [
116
- anchorElem,
117
139
  editor,
118
- config,
140
+ setNotLink,
141
+ config.collections,
119
142
  t,
120
- i18n
143
+ i18n,
144
+ anchorElem
121
145
  ]);
122
146
  useEffect(()=>{
123
147
  return mergeRegister(editor.registerCommand(TOGGLE_LINK_WITH_MODAL_COMMAND, (payload)=>{
@@ -133,14 +157,6 @@ export function LinkEditor({ anchorElem }) {
133
157
  toggleModal,
134
158
  drawerSlug
135
159
  ]);
136
- useEffect(()=>{
137
- if (!isLink && editorRef) {
138
- editorRef.current.style.opacity = '0';
139
- editorRef.current.style.transform = 'translate(-10000px, -10000px)';
140
- }
141
- }, [
142
- isLink
143
- ]);
144
160
  useEffect(()=>{
145
161
  const scrollerElem = anchorElem.parentElement;
146
162
  const update = ()=>{
@@ -173,8 +189,7 @@ export function LinkEditor({ anchorElem }) {
173
189
  return true;
174
190
  }, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ESCAPE_COMMAND, ()=>{
175
191
  if (isLink) {
176
- setIsLink(false);
177
- setIsAutoLink(false);
192
+ setNotLink();
178
193
  return true;
179
194
  }
180
195
  return false;
@@ -182,8 +197,8 @@ export function LinkEditor({ anchorElem }) {
182
197
  }, [
183
198
  editor,
184
199
  updateLinkEditor,
185
- setIsLink,
186
- isLink
200
+ isLink,
201
+ setNotLink
187
202
  ]);
188
203
  useEffect(()=>{
189
204
  editor.getEditorState().read(()=>{
@@ -198,11 +213,13 @@ export function LinkEditor({ anchorElem }) {
198
213
  ref: editorRef
199
214
  }, /*#__PURE__*/ React.createElement("div", {
200
215
  className: "link-input"
201
- }, /*#__PURE__*/ React.createElement("a", {
216
+ }, linkUrl && linkUrl.length > 0 ? /*#__PURE__*/ React.createElement("a", {
202
217
  href: linkUrl,
203
218
  rel: "noopener noreferrer",
204
219
  target: "_blank"
205
- }, linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl), editor.isEditable() && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("button", {
220
+ }, linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl) : linkLabel != null && linkLabel.length > 0 ? /*#__PURE__*/ React.createElement("span", {
221
+ className: "link-input__label-pure"
222
+ }, linkLabel) : null, editor.isEditable() && /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("button", {
206
223
  "aria-label": "Edit link",
207
224
  className: "link-edit",
208
225
  onClick: ()=>{
@@ -229,7 +246,10 @@ export function LinkEditor({ anchorElem }) {
229
246
  handleModalSubmit: (fields, data)=>{
230
247
  closeModal(drawerSlug);
231
248
  const newLinkPayload = data;
232
- newLinkPayload.selectedNodes = selectedNodes;
249
+ const bareLinkFields = {
250
+ ...newLinkPayload
251
+ };
252
+ delete bareLinkFields.text;
233
253
  // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).
234
254
  editor.update(()=>{
235
255
  const selection = $getSelection();
@@ -243,14 +263,18 @@ export function LinkEditor({ anchorElem }) {
243
263
  }
244
264
  if (linkParent && $isAutoLinkNode(linkParent)) {
245
265
  const linkNode = $createLinkNode({
246
- fields: newLinkPayload.fields
266
+ fields: bareLinkFields
247
267
  });
248
268
  linkParent.replace(linkNode, true);
249
269
  }
250
270
  });
251
271
  // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to
252
272
  // it being applied to the auto link node instead of the link node.
253
- editor.dispatchCommand(TOGGLE_LINK_COMMAND, newLinkPayload);
273
+ editor.dispatchCommand(TOGGLE_LINK_COMMAND, {
274
+ fields: bareLinkFields,
275
+ selectedNodes,
276
+ text: newLinkPayload.text
277
+ });
254
278
  },
255
279
  stateData: stateData
256
280
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState } from 'payload/types'\nimport type { Data } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { $findMatchingParent, mergeRegister } = lexicalUtilsImport\nimport type { LexicalNode } from 'lexical'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport lexicalImport from 'lexical'\nconst {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} = lexicalImport\n\nimport { formatDrawerSlug } from '@payloadcms/ui/elements/Drawer'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useEditDepth } from '@payloadcms/ui/providers/EditDepth'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { LinkNode } from '../../../nodes/LinkNode.js'\nimport type { LinkPayload } from '../types.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { getSelectedNode } from '../../../../../lexical/utils/getSelectedNode.js'\nimport { setFloatingElemPositionForLinkEditor } from '../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js'\nimport { LinkDrawer } from '../../../drawer/index.js'\nimport { $isAutoLinkNode } from '../../../nodes/AutoLinkNode.js'\nimport { $createLinkNode } from '../../../nodes/LinkNode.js'\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../nodes/LinkNode.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js'\n\nexport function LinkEditor({ anchorElem }: { anchorElem: HTMLElement }): React.ReactNode {\n const { useModal } = facelessUIImport\n\n const [editor] = useLexicalComposerContext()\n\n const editorRef = useRef<HTMLDivElement | null>(null)\n const [linkUrl, setLinkUrl] = useState('')\n const [linkLabel, setLinkLabel] = useState('')\n\n const { uuid } = useEditorConfigContext()\n\n const config = useConfig()\n\n const { i18n, t } = useTranslation()\n\n const [stateData, setStateData] = useState<LinkPayload>(null)\n\n const { closeModal, toggleModal } = useModal()\n const editDepth = useEditDepth()\n const [isLink, setIsLink] = useState(false)\n const [selectedNodes, setSelectedNodes] = useState<LexicalNode[]>([])\n\n const [isAutoLink, setIsAutoLink] = useState(false)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-rich-text-link-` + uuid,\n depth: editDepth,\n })\n\n const updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let selectedNodeDomRect: DOMRect | undefined = null\n\n // Handle the data displayed in the floating link editor & drawer when you click on a link node\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection)\n selectedNodeDomRect = editor.getElementByKey(node.getKey())?.getBoundingClientRect()\n const linkParent: LinkNode = $findMatchingParent(node, $isLinkNode)\n if (linkParent == null) {\n setIsLink(false)\n setIsAutoLink(false)\n setLinkUrl('')\n setLinkLabel('')\n setSelectedNodes([])\n return\n }\n\n // Initial state:\n const data: LinkPayload = {\n fields: {\n doc: undefined,\n linkType: undefined,\n newTab: undefined,\n url: '',\n ...linkParent.getFields(),\n },\n text: linkParent.getTextContent(),\n }\n\n if (linkParent.getFields()?.linkType === 'custom') {\n setLinkUrl(linkParent.getFields()?.url ?? '')\n setLinkLabel('')\n } else {\n // internal link\n setLinkUrl(\n `/admin/collections/${linkParent.getFields()?.doc?.relationTo}/${\n linkParent.getFields()?.doc?.value\n }`,\n )\n\n const relatedField = config.collections.find(\n (coll) => coll.slug === linkParent.getFields()?.doc?.relationTo,\n )\n const label = t('fields:linkedTo', {\n label: getTranslation(relatedField.labels.singular, i18n),\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\n }\n\n setStateData(data)\n setIsLink(true)\n setSelectedNodes(selection ? selection?.getNodes() : [])\n\n if ($isAutoLinkNode(linkParent)) {\n setIsAutoLink(true)\n } else {\n setIsAutoLink(false)\n }\n }\n\n const editorElem = editorRef.current\n const nativeSelection = window.getSelection()\n const { activeElement } = document\n\n if (editorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n selection !== null &&\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n if (!selectedNodeDomRect) {\n // Get the DOM rect of the selected node using the native selection. This sometimes produces the wrong\n // result, which is why we use lexical's selection preferably.\n selectedNodeDomRect = nativeSelection.getRangeAt(0).getBoundingClientRect()\n }\n\n if (selectedNodeDomRect != null) {\n selectedNodeDomRect.y += 40\n setFloatingElemPositionForLinkEditor(selectedNodeDomRect, editorElem, anchorElem)\n }\n } else if (activeElement == null || activeElement.className !== 'link-input') {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem)\n }\n setLinkUrl('')\n setLinkLabel('')\n }\n\n return true\n }, [anchorElem, editor, config, t, i18n])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_WITH_MODAL_COMMAND,\n (payload: LinkPayload) => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload)\n\n // Now, open the modal\n updateLinkEditor()\n toggleModal(drawerSlug)\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateLinkEditor, toggleModal, drawerSlug])\n\n useEffect(() => {\n if (!isLink && editorRef) {\n editorRef.current.style.opacity = '0'\n editorRef.current.style.transform = 'translate(-10000px, -10000px)'\n }\n }, [isLink])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = (): void => {\n editor.getEditorState().read(() => {\n void updateLinkEditor()\n })\n }\n\n window.addEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [anchorElem.parentElement, editor, updateLinkEditor])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n void updateLinkEditor()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n void updateLinkEditor()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setIsLink(false)\n setIsAutoLink(false)\n return true\n }\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n )\n }, [editor, updateLinkEditor, setIsLink, isLink])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n void updateLinkEditor()\n })\n }, [editor, updateLinkEditor])\n\n return (\n <React.Fragment>\n <div className=\"link-editor\" ref={editorRef}>\n <div className=\"link-input\">\n <a href={linkUrl} rel=\"noopener noreferrer\" target=\"_blank\">\n {linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl}\n </a>\n {editor.isEditable() && (\n <React.Fragment>\n <button\n aria-label=\"Edit link\"\n className=\"link-edit\"\n onClick={() => {\n toggleModal(drawerSlug)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n />\n {!isAutoLink && (\n <button\n aria-label=\"Remove link\"\n className=\"link-trash\"\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n />\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n <LinkDrawer\n drawerSlug={drawerSlug}\n handleModalSubmit={(fields: FormState, data: Data) => {\n closeModal(drawerSlug)\n\n const newLinkPayload: LinkPayload = data as LinkPayload\n\n newLinkPayload.selectedNodes = selectedNodes\n\n // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).\n editor.update(() => {\n const selection = $getSelection()\n let linkParent = null\n if ($isRangeSelection(selection)) {\n linkParent = getSelectedNode(selection).getParent()\n } else {\n if (selectedNodes.length) {\n linkParent = selectedNodes[0].getParent()\n }\n }\n\n if (linkParent && $isAutoLinkNode(linkParent)) {\n const linkNode = $createLinkNode({\n fields: newLinkPayload.fields,\n })\n linkParent.replace(linkNode, true)\n }\n })\n\n // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to\n // it being applied to the auto link node instead of the link node.\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, newLinkPayload)\n }}\n stateData={stateData}\n />\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","$findMatchingParent","mergeRegister","getTranslation","lexicalImport","$getSelection","$isRangeSelection","COMMAND_PRIORITY_HIGH","COMMAND_PRIORITY_LOW","KEY_ESCAPE_COMMAND","SELECTION_CHANGE_COMMAND","formatDrawerSlug","useConfig","useEditDepth","useTranslation","React","useCallback","useEffect","useRef","useState","useEditorConfigContext","getSelectedNode","setFloatingElemPositionForLinkEditor","LinkDrawer","$isAutoLinkNode","$createLinkNode","$isLinkNode","TOGGLE_LINK_COMMAND","TOGGLE_LINK_WITH_MODAL_COMMAND","LinkEditor","anchorElem","useModal","editor","editorRef","linkUrl","setLinkUrl","linkLabel","setLinkLabel","uuid","config","i18n","t","stateData","setStateData","closeModal","toggleModal","editDepth","isLink","setIsLink","selectedNodes","setSelectedNodes","isAutoLink","setIsAutoLink","drawerSlug","slug","depth","updateLinkEditor","selection","selectedNodeDomRect","node","getElementByKey","getKey","getBoundingClientRect","linkParent","data","fields","doc","undefined","linkType","newTab","url","getFields","text","getTextContent","relationTo","value","relatedField","collections","find","coll","label","labels","singular","replace","getNodes","editorElem","current","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","getRangeAt","y","className","registerCommand","payload","dispatchCommand","style","opacity","transform","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","registerUpdateListener","editorState","Fragment","div","ref","a","href","rel","target","length","isEditable","button","aria-label","onClick","onMouseDown","event","preventDefault","tabIndex","type","handleModalSubmit","newLinkPayload","getParent","linkNode"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalNode } from 'lexical'\nimport type { FormState } from 'payload/types'\nimport type { Data } from 'payload/types'\n\nimport * as facelessUIImport from '@faceless-ui/modal'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatDrawerSlug } from '@payloadcms/ui/elements/Drawer'\nimport { useConfig } from '@payloadcms/ui/providers/Config'\nimport { useEditDepth } from '@payloadcms/ui/providers/EditDepth'\nimport { useTranslation } from '@payloadcms/ui/providers/Translation'\nimport { $isLineBreakNode } from 'lexical'\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { LinkNode } from '../../../nodes/LinkNode.js'\nimport type { LinkFields } from '../../../nodes/types.js'\nimport type { LinkPayload } from '../types.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { getSelectedNode } from '../../../../../lexical/utils/getSelectedNode.js'\nimport { setFloatingElemPositionForLinkEditor } from '../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js'\nimport { LinkDrawer } from '../../../drawer/index.js'\nimport { $isAutoLinkNode } from '../../../nodes/AutoLinkNode.js'\nimport { $createLinkNode } from '../../../nodes/LinkNode.js'\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../nodes/LinkNode.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js'\n\nexport function LinkEditor({ anchorElem }: { anchorElem: HTMLElement }): React.ReactNode {\n const { useModal } = facelessUIImport\n\n const [editor] = useLexicalComposerContext()\n\n const editorRef = useRef<HTMLDivElement | null>(null)\n const [linkUrl, setLinkUrl] = useState(null)\n const [linkLabel, setLinkLabel] = useState(null)\n\n const { uuid } = useEditorConfigContext()\n\n const config = useConfig()\n\n const { i18n, t } = useTranslation()\n\n const [stateData, setStateData] = useState<{} | (LinkFields & { text: string })>({})\n\n const { closeModal, toggleModal } = useModal()\n const editDepth = useEditDepth()\n const [isLink, setIsLink] = useState(false)\n const [selectedNodes, setSelectedNodes] = useState<LexicalNode[]>([])\n\n const [isAutoLink, setIsAutoLink] = useState(false)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-rich-text-link-` + uuid,\n depth: editDepth,\n })\n\n const setNotLink = useCallback(() => {\n setIsLink(false)\n if (editorRef && editorRef.current) {\n editorRef.current.style.opacity = '0'\n editorRef.current.style.transform = 'translate(-10000px, -10000px)'\n }\n setIsAutoLink(false)\n setLinkUrl(null)\n setLinkLabel(null)\n setSelectedNodes([])\n setStateData({})\n }, [setIsLink, setLinkUrl, setLinkLabel, setSelectedNodes])\n\n const updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let selectedNodeDomRect: DOMRect | undefined = null\n\n if (!$isRangeSelection(selection) || !selection) {\n setNotLink()\n return\n }\n\n // Handle the data displayed in the floating link editor & drawer when you click on a link node\n\n const focusNode = getSelectedNode(selection)\n selectedNodeDomRect = editor.getElementByKey(focusNode.getKey())?.getBoundingClientRect()\n const focusLinkParent: LinkNode = $findMatchingParent(focusNode, $isLinkNode)\n\n // Prevent link modal from showing if selection spans further than the link: https://github.com/facebook/lexical/issues/4064\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode)\n return (\n (focusLinkParent && !focusLinkParent.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkParent))\n )\n })\n\n if (focusLinkParent == null || badNode) {\n setNotLink()\n return\n }\n\n // Initial state:\n const data: LinkFields & { text: string } = {\n doc: undefined,\n linkType: undefined,\n newTab: undefined,\n url: '',\n ...focusLinkParent.getFields(),\n text: focusLinkParent.getTextContent(),\n }\n\n if (focusLinkParent.getFields()?.linkType === 'custom') {\n setLinkUrl(focusLinkParent.getFields()?.url ?? null)\n setLinkLabel(null)\n } else {\n // internal link\n setLinkUrl(\n `/admin/collections/${focusLinkParent.getFields()?.doc?.relationTo}/${\n focusLinkParent.getFields()?.doc?.value\n }`,\n )\n\n const relatedField = config.collections.find(\n (coll) => coll.slug === focusLinkParent.getFields()?.doc?.relationTo,\n )\n if (!relatedField) {\n // Usually happens if the user removed all default fields. In this case, we let them specify the label or do not display the label at all.\n // label could be a virtual field the user added. This is useful if they want to use the link feature for things other than links.\n setLinkLabel(\n focusLinkParent.getFields()?.label ? String(focusLinkParent.getFields()?.label) : null,\n )\n setLinkUrl(\n focusLinkParent.getFields()?.url ? String(focusLinkParent.getFields()?.url) : null,\n )\n } else {\n const label = t('fields:linkedTo', {\n label: getTranslation(relatedField.labels.singular, i18n),\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\n }\n }\n\n setStateData(data)\n setIsLink(true)\n setSelectedNodes(selection ? selection?.getNodes() : [])\n\n if ($isAutoLinkNode(focusLinkParent)) {\n setIsAutoLink(true)\n } else {\n setIsAutoLink(false)\n }\n\n const editorElem = editorRef.current\n const nativeSelection = window.getSelection()\n const { activeElement } = document\n\n if (editorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n if (!selectedNodeDomRect) {\n // Get the DOM rect of the selected node using the native selection. This sometimes produces the wrong\n // result, which is why we use lexical's selection preferably.\n selectedNodeDomRect = nativeSelection.getRangeAt(0).getBoundingClientRect()\n }\n\n if (selectedNodeDomRect != null) {\n selectedNodeDomRect.y += 40\n setFloatingElemPositionForLinkEditor(selectedNodeDomRect, editorElem, anchorElem)\n }\n } else if (activeElement == null || activeElement.className !== 'link-input') {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem)\n }\n setLinkUrl(null)\n setLinkLabel(null)\n }\n\n return true\n }, [editor, setNotLink, config.collections, t, i18n, anchorElem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_WITH_MODAL_COMMAND,\n (payload: LinkPayload) => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload)\n\n // Now, open the modal\n updateLinkEditor()\n toggleModal(drawerSlug)\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateLinkEditor, toggleModal, drawerSlug])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = (): void => {\n editor.getEditorState().read(() => {\n void updateLinkEditor()\n })\n }\n\n window.addEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [anchorElem.parentElement, editor, updateLinkEditor])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n void updateLinkEditor()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n void updateLinkEditor()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setNotLink()\n\n return true\n }\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n )\n }, [editor, updateLinkEditor, isLink, setNotLink])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n void updateLinkEditor()\n })\n }, [editor, updateLinkEditor])\n\n return (\n <React.Fragment>\n <div className=\"link-editor\" ref={editorRef}>\n <div className=\"link-input\">\n {linkUrl && linkUrl.length > 0 ? (\n <a href={linkUrl} rel=\"noopener noreferrer\" target=\"_blank\">\n {linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl}\n </a>\n ) : linkLabel != null && linkLabel.length > 0 ? (\n <span className=\"link-input__label-pure\">{linkLabel}</span>\n ) : null}\n\n {editor.isEditable() && (\n <React.Fragment>\n <button\n aria-label=\"Edit link\"\n className=\"link-edit\"\n onClick={() => {\n toggleModal(drawerSlug)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n />\n {!isAutoLink && (\n <button\n aria-label=\"Remove link\"\n className=\"link-trash\"\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n />\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n <LinkDrawer\n drawerSlug={drawerSlug}\n handleModalSubmit={(fields: FormState, data: Data) => {\n closeModal(drawerSlug)\n\n const newLinkPayload = data as LinkFields & { text: string }\n\n const bareLinkFields: LinkFields = {\n ...newLinkPayload,\n }\n delete bareLinkFields.text\n\n // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).\n editor.update(() => {\n const selection = $getSelection()\n let linkParent = null\n if ($isRangeSelection(selection)) {\n linkParent = getSelectedNode(selection).getParent()\n } else {\n if (selectedNodes.length) {\n linkParent = selectedNodes[0].getParent()\n }\n }\n\n if (linkParent && $isAutoLinkNode(linkParent)) {\n const linkNode = $createLinkNode({\n fields: bareLinkFields,\n })\n linkParent.replace(linkNode, true)\n }\n })\n\n // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to\n // it being applied to the auto link node instead of the link node.\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: bareLinkFields,\n selectedNodes,\n text: newLinkPayload.text,\n })\n }}\n stateData={stateData}\n />\n </React.Fragment>\n )\n}\n"],"names":["facelessUIImport","useLexicalComposerContext","$findMatchingParent","mergeRegister","getTranslation","formatDrawerSlug","useConfig","useEditDepth","useTranslation","$isLineBreakNode","$getSelection","$isRangeSelection","COMMAND_PRIORITY_HIGH","COMMAND_PRIORITY_LOW","KEY_ESCAPE_COMMAND","SELECTION_CHANGE_COMMAND","React","useCallback","useEffect","useRef","useState","useEditorConfigContext","getSelectedNode","setFloatingElemPositionForLinkEditor","LinkDrawer","$isAutoLinkNode","$createLinkNode","$isLinkNode","TOGGLE_LINK_COMMAND","TOGGLE_LINK_WITH_MODAL_COMMAND","LinkEditor","anchorElem","useModal","editor","editorRef","linkUrl","setLinkUrl","linkLabel","setLinkLabel","uuid","config","i18n","t","stateData","setStateData","closeModal","toggleModal","editDepth","isLink","setIsLink","selectedNodes","setSelectedNodes","isAutoLink","setIsAutoLink","drawerSlug","slug","depth","setNotLink","current","style","opacity","transform","updateLinkEditor","selection","selectedNodeDomRect","focusNode","getElementByKey","getKey","getBoundingClientRect","focusLinkParent","badNode","getNodes","filter","node","find","linkNode","is","data","doc","undefined","linkType","newTab","url","getFields","text","getTextContent","relationTo","value","relatedField","collections","coll","label","String","labels","singular","replace","editorElem","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","getRangeAt","y","className","registerCommand","payload","dispatchCommand","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","registerUpdateListener","editorState","Fragment","div","ref","length","a","href","rel","target","span","isEditable","button","aria-label","onClick","onMouseDown","event","preventDefault","tabIndex","type","handleModalSubmit","fields","newLinkPayload","bareLinkFields","linkParent","getParent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,6 +1,5 @@
1
- import * as React from 'react';
1
+ import type { PluginComponentWithAnchor } from '../../../types.js';
2
+ import type { ClientProps } from '../../feature.client.js';
2
3
  import './index.scss';
3
- export declare const FloatingLinkEditorPlugin: React.FC<{
4
- anchorElem: HTMLElement;
5
- }>;
4
+ export declare const FloatingLinkEditorPlugin: PluginComponentWithAnchor<ClientProps>;
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/link/plugins/floatingLinkEditor/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9C,UAAU,EAAE,WAAW,CAAA;CACxB,CAIA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/link/plugins/floatingLinkEditor/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAG1D,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,wBAAwB,EAAE,yBAAyB,CAAC,WAAW,CAI3E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/field/features/link/plugins/floatingLinkEditor/index.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { LinkEditor } from './LinkEditor/index.js'\nimport './index.scss'\n\nexport const FloatingLinkEditorPlugin: React.FC<{\n anchorElem: HTMLElement\n}> = (props) => {\n const { anchorElem = document.body } = props\n\n return createPortal(<LinkEditor anchorElem={anchorElem} />, anchorElem)\n}\n"],"names":["React","createPortal","LinkEditor","FloatingLinkEditorPlugin","props","anchorElem","document","body"],"rangeMappings":";;;;;;;;;;","mappings":"AAAA;AACA,YAAYA,WAAW,QAAO;AAC9B,SAASC,YAAY,QAAQ,YAAW;AAExC,SAASC,UAAU,QAAQ,wBAAuB;AAClD,OAAO,eAAc;AAErB,OAAO,MAAMC,2BAER,CAACC;IACJ,MAAM,EAAEC,aAAaC,SAASC,IAAI,EAAE,GAAGH;IAEvC,qBAAOH,2BAAa,oBAACC;QAAWG,YAAYA;QAAgBA;AAC9D,EAAC"}
1
+ {"version":3,"sources":["../../../../../../src/field/features/link/plugins/floatingLinkEditor/index.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../types.js'\nimport type { ClientProps } from '../../feature.client.js'\n\nimport { LinkEditor } from './LinkEditor/index.js'\nimport './index.scss'\n\nexport const FloatingLinkEditorPlugin: PluginComponentWithAnchor<ClientProps> = (props) => {\n const { anchorElem = document.body } = props\n\n return createPortal(<LinkEditor anchorElem={anchorElem} />, anchorElem)\n}\n"],"names":["React","createPortal","LinkEditor","FloatingLinkEditorPlugin","props","anchorElem","document","body"],"rangeMappings":";;;;;;;;;;","mappings":"AAAA;AACA,YAAYA,WAAW,QAAO;AAC9B,SAASC,YAAY,QAAQ,YAAW;AAKxC,SAASC,UAAU,QAAQ,wBAAuB;AAClD,OAAO,eAAc;AAErB,OAAO,MAAMC,2BAAmE,CAACC;IAC/E,MAAM,EAAEC,aAAaC,SAASC,IAAI,EAAE,GAAGH;IAEvC,qBAAOH,2BAAa,oBAACC;QAAWG,YAAYA;QAAgBA;AAC9D,EAAC"}
@@ -7,11 +7,11 @@ html[data-theme='light'] {
7
7
  }
8
8
 
9
9
  .link-editor {
10
- z-index: 10;
10
+ z-index: 1;
11
11
  display: flex;
12
12
  align-items: center;
13
13
  background: var(--color-base-0);
14
- padding: 0px 3.72px 0px 6.25px;
14
+ padding: 0 3.72px 0 6.25px;
15
15
  vertical-align: middle;
16
16
  position: absolute;
17
17
  top: 0;
@@ -36,12 +36,20 @@ html[data-theme='light'] {
36
36
  position: relative;
37
37
  font-family: var(--font-body);
38
38
 
39
+ &__label-pure {
40
+ color: var(--color-base-1000);
41
+ margin-right: 15px;
42
+ display: block;
43
+ white-space: nowrap;
44
+ overflow: hidden;
45
+ }
46
+
39
47
  a {
40
48
  text-decoration: none;
41
49
  display: block;
42
50
  white-space: nowrap;
43
51
  overflow: hidden;
44
- margin-right: 30px;
52
+ margin-right: 15px;
45
53
  text-overflow: ellipsis;
46
54
  color: var(--color-blue-600);
47
55
  border-bottom: 1px dotted;
@@ -1,4 +1,3 @@
1
- import type { I18n } from '@payloadcms/translations';
2
1
  import type { SanitizedConfig } from 'payload/config';
3
2
  import type { Field } from 'payload/types';
4
3
  /**
@@ -7,6 +6,5 @@ import type { Field } from 'payload/types';
7
6
  export declare function transformExtraFields(customFieldSchema: ((args: {
8
7
  config: SanitizedConfig;
9
8
  defaultFields: Field[];
10
- i18n: I18n;
11
- }) => Field[]) | Field[], config: SanitizedConfig, i18n: I18n, enabledCollections?: false | string[], disabledCollections?: false | string[]): Field[];
9
+ }) => Field[]) | Field[], config: SanitizedConfig, enabledCollections?: false | string[], disabledCollections?: false | string[], maxDepth?: number): Field[];
12
10
  //# sourceMappingURL=utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/link/plugins/floatingLinkEditor/utilities.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,KAAK,EAAc,MAAM,eAAe,CAAA;AAItD;;GAEG;AAEH,wBAAgB,oBAAoB,CAClC,iBAAiB,EACb,CAAC,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,aAAa,EAAE,KAAK,EAAE,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,KAAK,KAAK,EAAE,CAAC,GACpF,KAAK,EAAE,EACX,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,IAAI,EACV,kBAAkB,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,EACrC,mBAAmB,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,GACrC,KAAK,EAAE,CA0CT"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/link/plugins/floatingLinkEditor/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAI1C;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,iBAAiB,EACb,CAAC,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,aAAa,EAAE,KAAK,EAAE,CAAA;CAAE,KAAK,KAAK,EAAE,CAAC,GACxE,KAAK,EAAE,EACX,MAAM,EAAE,eAAe,EACvB,kBAAkB,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,EACrC,mBAAmB,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,EACtC,QAAQ,CAAC,EAAE,MAAM,GAChB,KAAK,EAAE,CAmBT"}
@@ -1,36 +1,18 @@
1
1
  import { getBaseFields } from '../../drawer/baseFields.js';
2
2
  /**
3
3
  * This function is run to enrich the basefields which every link has with potential, custom user-added fields.
4
- */ // eslint-disable-next-line @typescript-eslint/require-await
5
- export function transformExtraFields(customFieldSchema, config, i18n, enabledCollections, disabledCollections) {
6
- const baseFields = getBaseFields(config, enabledCollections, disabledCollections);
7
- const fields = typeof customFieldSchema === 'function' ? customFieldSchema({
8
- config,
9
- defaultFields: baseFields,
10
- i18n
11
- }) : baseFields;
12
- // Wrap fields which are not part of the base schema in a group named 'fields' - otherwise they will be rendered but not saved
13
- const extraFields = [];
14
- for(let i = fields.length - 1; i >= 0; i--){
15
- const field = fields[i];
16
- if ('name' in field) {
17
- if (!baseFields.find((baseField)=>!('name' in baseField) || baseField.name === field.name)) {
18
- if (field.name !== 'fields' && field.type !== 'group') {
19
- extraFields.push(field);
20
- // Remove from fields from now, as they need to be part of the fields group below
21
- fields.splice(fields.indexOf(field), 1);
22
- }
23
- }
24
- }
25
- }
26
- if (Array.isArray(customFieldSchema) || fields.length > 0) {
27
- // find field with name 'fields' and add the extra fields to it
28
- const fieldsField = fields.find((field)=>field.type === 'group' && field.name === 'fields');
29
- if (!fieldsField) {
30
- throw new Error('Could not find field with name "fields". This is required to add fields to the link field.');
31
- }
32
- fieldsField.fields = Array.isArray(fieldsField.fields) ? fieldsField.fields : [];
33
- fieldsField.fields.push(...Array.isArray(customFieldSchema) ? customFieldSchema.concat(extraFields) : extraFields);
4
+ */ export function transformExtraFields(customFieldSchema, config, enabledCollections, disabledCollections, maxDepth) {
5
+ const baseFields = getBaseFields(config, enabledCollections, disabledCollections, maxDepth);
6
+ let fields;
7
+ if (typeof customFieldSchema === 'function') {
8
+ fields = customFieldSchema({
9
+ config,
10
+ defaultFields: baseFields
11
+ });
12
+ } else if (Array.isArray(customFieldSchema)) {
13
+ fields = customFieldSchema;
14
+ } else {
15
+ fields = baseFields;
34
16
  }
35
17
  return fields;
36
18
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/field/features/link/plugins/floatingLinkEditor/utilities.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { SanitizedConfig } from 'payload/config'\nimport type { Field, GroupField } from 'payload/types'\n\nimport { getBaseFields } from '../../drawer/baseFields.js'\n\n/**\n * This function is run to enrich the basefields which every link has with potential, custom user-added fields.\n */\n// eslint-disable-next-line @typescript-eslint/require-await\nexport function transformExtraFields(\n customFieldSchema:\n | ((args: { config: SanitizedConfig; defaultFields: Field[]; i18n: I18n }) => Field[])\n | Field[],\n config: SanitizedConfig,\n i18n: I18n,\n enabledCollections?: false | string[],\n disabledCollections?: false | string[],\n): Field[] {\n const baseFields: Field[] = getBaseFields(config, enabledCollections, disabledCollections)\n\n const fields =\n typeof customFieldSchema === 'function'\n ? customFieldSchema({ config, defaultFields: baseFields, i18n })\n : baseFields\n\n // Wrap fields which are not part of the base schema in a group named 'fields' - otherwise they will be rendered but not saved\n const extraFields = []\n for (let i = fields.length - 1; i >= 0; i--) {\n const field = fields[i]\n\n if ('name' in field) {\n if (\n !baseFields.find((baseField) => !('name' in baseField) || baseField.name === field.name)\n ) {\n if (field.name !== 'fields' && field.type !== 'group') {\n extraFields.push(field)\n // Remove from fields from now, as they need to be part of the fields group below\n fields.splice(fields.indexOf(field), 1)\n }\n }\n }\n }\n\n if (Array.isArray(customFieldSchema) || fields.length > 0) {\n // find field with name 'fields' and add the extra fields to it\n const fieldsField: GroupField = fields.find(\n (field) => field.type === 'group' && field.name === 'fields',\n ) as GroupField\n if (!fieldsField) {\n throw new Error(\n 'Could not find field with name \"fields\". This is required to add fields to the link field.',\n )\n }\n fieldsField.fields = Array.isArray(fieldsField.fields) ? fieldsField.fields : []\n fieldsField.fields.push(\n ...(Array.isArray(customFieldSchema) ? customFieldSchema.concat(extraFields) : extraFields),\n )\n }\n return fields\n}\n"],"names":["getBaseFields","transformExtraFields","customFieldSchema","config","i18n","enabledCollections","disabledCollections","baseFields","fields","defaultFields","extraFields","i","length","field","find","baseField","name","type","push","splice","indexOf","Array","isArray","fieldsField","Error","concat"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,aAAa,QAAQ,6BAA4B;AAE1D;;CAEC,GACD,4DAA4D;AAC5D,OAAO,SAASC,qBACdC,iBAEW,EACXC,MAAuB,EACvBC,IAAU,EACVC,kBAAqC,EACrCC,mBAAsC;IAEtC,MAAMC,aAAsBP,cAAcG,QAAQE,oBAAoBC;IAEtE,MAAME,SACJ,OAAON,sBAAsB,aACzBA,kBAAkB;QAAEC;QAAQM,eAAeF;QAAYH;IAAK,KAC5DG;IAEN,8HAA8H;IAC9H,MAAMG,cAAc,EAAE;IACtB,IAAK,IAAIC,IAAIH,OAAOI,MAAM,GAAG,GAAGD,KAAK,GAAGA,IAAK;QAC3C,MAAME,QAAQL,MAAM,CAACG,EAAE;QAEvB,IAAI,UAAUE,OAAO;YACnB,IACE,CAACN,WAAWO,IAAI,CAAC,CAACC,YAAc,CAAE,CAAA,UAAUA,SAAQ,KAAMA,UAAUC,IAAI,KAAKH,MAAMG,IAAI,GACvF;gBACA,IAAIH,MAAMG,IAAI,KAAK,YAAYH,MAAMI,IAAI,KAAK,SAAS;oBACrDP,YAAYQ,IAAI,CAACL;oBACjB,iFAAiF;oBACjFL,OAAOW,MAAM,CAACX,OAAOY,OAAO,CAACP,QAAQ;gBACvC;YACF;QACF;IACF;IAEA,IAAIQ,MAAMC,OAAO,CAACpB,sBAAsBM,OAAOI,MAAM,GAAG,GAAG;QACzD,+DAA+D;QAC/D,MAAMW,cAA0Bf,OAAOM,IAAI,CACzC,CAACD,QAAUA,MAAMI,IAAI,KAAK,WAAWJ,MAAMG,IAAI,KAAK;QAEtD,IAAI,CAACO,aAAa;YAChB,MAAM,IAAIC,MACR;QAEJ;QACAD,YAAYf,MAAM,GAAGa,MAAMC,OAAO,CAACC,YAAYf,MAAM,IAAIe,YAAYf,MAAM,GAAG,EAAE;QAChFe,YAAYf,MAAM,CAACU,IAAI,IACjBG,MAAMC,OAAO,CAACpB,qBAAqBA,kBAAkBuB,MAAM,CAACf,eAAeA;IAEnF;IACA,OAAOF;AACT"}
1
+ {"version":3,"sources":["../../../../../../src/field/features/link/plugins/floatingLinkEditor/utilities.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload/config'\nimport type { Field } from 'payload/types'\n\nimport { getBaseFields } from '../../drawer/baseFields.js'\n\n/**\n * This function is run to enrich the basefields which every link has with potential, custom user-added fields.\n */\nexport function transformExtraFields(\n customFieldSchema:\n | ((args: { config: SanitizedConfig; defaultFields: Field[] }) => Field[])\n | Field[],\n config: SanitizedConfig,\n enabledCollections?: false | string[],\n disabledCollections?: false | string[],\n maxDepth?: number,\n): Field[] {\n const baseFields: Field[] = getBaseFields(\n config,\n enabledCollections,\n disabledCollections,\n maxDepth,\n )\n\n let fields: Field[]\n\n if (typeof customFieldSchema === 'function') {\n fields = customFieldSchema({ config, defaultFields: baseFields })\n } else if (Array.isArray(customFieldSchema)) {\n fields = customFieldSchema\n } else {\n fields = baseFields\n }\n\n return fields\n}\n"],"names":["getBaseFields","transformExtraFields","customFieldSchema","config","enabledCollections","disabledCollections","maxDepth","baseFields","fields","defaultFields","Array","isArray"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAGA,SAASA,aAAa,QAAQ,6BAA4B;AAE1D;;CAEC,GACD,OAAO,SAASC,qBACdC,iBAEW,EACXC,MAAuB,EACvBC,kBAAqC,EACrCC,mBAAsC,EACtCC,QAAiB;IAEjB,MAAMC,aAAsBP,cAC1BG,QACAC,oBACAC,qBACAC;IAGF,IAAIE;IAEJ,IAAI,OAAON,sBAAsB,YAAY;QAC3CM,SAASN,kBAAkB;YAAEC;YAAQM,eAAeF;QAAW;IACjE,OAAO,IAAIG,MAAMC,OAAO,CAACT,oBAAoB;QAC3CM,SAASN;IACX,OAAO;QACLM,SAASD;IACX;IAEA,OAAOC;AACT"}
@@ -1,2 +1,4 @@
1
- export declare function LinkPlugin(): null;
1
+ import type { PluginComponent } from '../../../types.js';
2
+ import type { ClientProps } from '../../feature.client.js';
3
+ export declare const LinkPlugin: PluginComponent<ClientProps>;
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/link/plugins/link/index.tsx"],"names":[],"mappings":"AAkBA,wBAAgB,UAAU,IAAI,IAAI,CAkEjC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/features/link/plugins/link/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAO1D,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,WAAW,CA2DnD,CAAA"}
@@ -1,14 +1,11 @@
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 { $getSelection, $isElementNode, $isRangeSelection, COMMAND_PRIORITY_LOW, PASTE_COMMAND } = lexicalImport;
2
+ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
3
+ import { mergeRegister } from '@lexical/utils';
4
+ import { $getSelection, $isElementNode, $isRangeSelection, COMMAND_PRIORITY_LOW, PASTE_COMMAND } from 'lexical';
8
5
  import { useEffect } from 'react';
9
6
  import { validateUrl } from '../../../../lexical/utils/url.js';
10
7
  import { LinkNode, TOGGLE_LINK_COMMAND, toggleLink } from '../../nodes/LinkNode.js';
11
- export function LinkPlugin() {
8
+ export const LinkPlugin = ()=>{
12
9
  const [editor] = useLexicalComposerContext();
13
10
  useEffect(()=>{
14
11
  if (!editor.hasNodes([
@@ -17,12 +14,6 @@ export function LinkPlugin() {
17
14
  throw new Error('LinkPlugin: LinkNode not registered on editor');
18
15
  }
19
16
  return mergeRegister(editor.registerCommand(TOGGLE_LINK_COMMAND, (payload)=>{
20
- // validate
21
- if (payload?.fields.linkType === 'custom') {
22
- if (!(validateUrl === undefined || validateUrl(payload?.fields.url))) {
23
- return false;
24
- }
25
- }
26
17
  toggleLink(payload);
27
18
  return true;
28
19
  }, COMMAND_PRIORITY_LOW), validateUrl !== undefined ? editor.registerCommand(PASTE_COMMAND, (event)=>{
@@ -57,6 +48,6 @@ export function LinkPlugin() {
57
48
  editor
58
49
  ]);
59
50
  return null;
60
- }
51
+ };
61
52
 
62
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/field/features/link/plugins/link/index.tsx"],"sourcesContent":["'use client'\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\nimport lexicalUtilsImport from '@lexical/utils'\nconst { mergeRegister } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst { $getSelection, $isElementNode, $isRangeSelection, COMMAND_PRIORITY_LOW, PASTE_COMMAND } =\n lexicalImport\n\nimport { useEffect } from 'react'\n\nimport type { LinkFields } from '../../nodes/types.js'\nimport type { LinkPayload } from '../floatingLinkEditor/types.js'\n\nimport { validateUrl } from '../../../../lexical/utils/url.js'\nimport { LinkNode, TOGGLE_LINK_COMMAND, toggleLink } from '../../nodes/LinkNode.js'\n\nexport function LinkPlugin(): null {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([LinkNode])) {\n throw new Error('LinkPlugin: LinkNode not registered on editor')\n }\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (payload: LinkPayload) => {\n // validate\n if (payload?.fields.linkType === 'custom') {\n if (!(validateUrl === undefined || validateUrl(payload?.fields.url))) {\n return false\n }\n }\n\n toggleLink(payload)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n validateUrl !== undefined\n ? editor.registerCommand(\n PASTE_COMMAND,\n (event) => {\n const selection = $getSelection()\n if (\n !$isRangeSelection(selection) ||\n selection.isCollapsed() ||\n !(event instanceof ClipboardEvent) ||\n event.clipboardData == null\n ) {\n return false\n }\n const clipboardText = event.clipboardData.getData('text')\n if (!validateUrl(clipboardText)) {\n return false\n }\n // If we select nodes that are elements then avoid applying the link.\n if (!selection.getNodes().some((node) => $isElementNode(node))) {\n const linkFields: LinkFields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: clipboardText,\n }\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: linkFields,\n text: null,\n })\n event.preventDefault()\n return true\n }\n return false\n },\n COMMAND_PRIORITY_LOW,\n )\n : () => {\n // Don't paste arbitrary text as a link when there's no validate function\n },\n )\n }, [editor])\n\n return null\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","mergeRegister","lexicalImport","$getSelection","$isElementNode","$isRangeSelection","COMMAND_PRIORITY_LOW","PASTE_COMMAND","useEffect","validateUrl","LinkNode","TOGGLE_LINK_COMMAND","toggleLink","LinkPlugin","editor","hasNodes","Error","registerCommand","payload","fields","linkType","undefined","url","event","selection","isCollapsed","ClipboardEvent","clipboardData","clipboardText","getData","getNodes","some","node","linkFields","doc","newTab","dispatchCommand","text","preventDefault"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,OAAOA,kCAAkC,2CAA0C;AACnF,MAAM,EAAEC,yBAAyB,EAAE,GAAGD;AACtC,OAAOE,wBAAwB,iBAAgB;AAC/C,MAAM,EAAEC,aAAa,EAAE,GAAGD;AAE1B,OAAOE,mBAAmB,UAAS;AACnC,MAAM,EAAEC,aAAa,EAAEC,cAAc,EAAEC,iBAAiB,EAAEC,oBAAoB,EAAEC,aAAa,EAAE,GAC7FL;AAEF,SAASM,SAAS,QAAQ,QAAO;AAKjC,SAASC,WAAW,QAAQ,mCAAkC;AAC9D,SAASC,QAAQ,EAAEC,mBAAmB,EAAEC,UAAU,QAAQ,0BAAyB;AAEnF,OAAO,SAASC;IACd,MAAM,CAACC,OAAO,GAAGf;IAEjBS,UAAU;QACR,IAAI,CAACM,OAAOC,QAAQ,CAAC;YAACL;SAAS,GAAG;YAChC,MAAM,IAAIM,MAAM;QAClB;QACA,OAAOf,cACLa,OAAOG,eAAe,CACpBN,qBACA,CAACO;YACC,WAAW;YACX,IAAIA,SAASC,OAAOC,aAAa,UAAU;gBACzC,IAAI,CAAEX,CAAAA,gBAAgBY,aAAaZ,YAAYS,SAASC,OAAOG,IAAG,GAAI;oBACpE,OAAO;gBACT;YACF;YAEAV,WAAWM;YACX,OAAO;QACT,GACAZ,uBAEFG,gBAAgBY,YACZP,OAAOG,eAAe,CACpBV,eACA,CAACgB;YACC,MAAMC,YAAYrB;YAClB,IACE,CAACE,kBAAkBmB,cACnBA,UAAUC,WAAW,MACrB,CAAEF,CAAAA,iBAAiBG,cAAa,KAChCH,MAAMI,aAAa,IAAI,MACvB;gBACA,OAAO;YACT;YACA,MAAMC,gBAAgBL,MAAMI,aAAa,CAACE,OAAO,CAAC;YAClD,IAAI,CAACpB,YAAYmB,gBAAgB;gBAC/B,OAAO;YACT;YACA,qEAAqE;YACrE,IAAI,CAACJ,UAAUM,QAAQ,GAAGC,IAAI,CAAC,CAACC,OAAS5B,eAAe4B,QAAQ;gBAC9D,MAAMC,aAAyB;oBAC7BC,KAAK;oBACLd,UAAU;oBACVe,QAAQ;oBACRb,KAAKM;gBACP;gBACAd,OAAOsB,eAAe,CAACzB,qBAAqB;oBAC1CQ,QAAQc;oBACRI,MAAM;gBACR;gBACAd,MAAMe,cAAc;gBACpB,OAAO;YACT;YACA,OAAO;QACT,GACAhC,wBAEF;QACE,yEAAyE;QAC3E;IAER,GAAG;QAACQ;KAAO;IAEX,OAAO;AACT"}
1
+ {"version":3,"sources":["../../../../../../src/field/features/link/plugins/link/index.tsx"],"sourcesContent":["'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n PASTE_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../types.js'\nimport type { ClientProps } from '../../feature.client.js'\nimport type { LinkFields } from '../../nodes/types.js'\nimport type { LinkPayload } from '../floatingLinkEditor/types.js'\n\nimport { validateUrl } from '../../../../lexical/utils/url.js'\nimport { LinkNode, TOGGLE_LINK_COMMAND, toggleLink } from '../../nodes/LinkNode.js'\n\nexport const LinkPlugin: PluginComponent<ClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([LinkNode])) {\n throw new Error('LinkPlugin: LinkNode not registered on editor')\n }\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (payload: LinkPayload) => {\n toggleLink(payload)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n validateUrl !== undefined\n ? editor.registerCommand(\n PASTE_COMMAND,\n (event) => {\n const selection = $getSelection()\n if (\n !$isRangeSelection(selection) ||\n selection.isCollapsed() ||\n !(event instanceof ClipboardEvent) ||\n event.clipboardData == null\n ) {\n return false\n }\n const clipboardText = event.clipboardData.getData('text')\n if (!validateUrl(clipboardText)) {\n return false\n }\n // If we select nodes that are elements then avoid applying the link.\n if (!selection.getNodes().some((node) => $isElementNode(node))) {\n const linkFields: LinkFields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: clipboardText,\n }\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: linkFields,\n text: null,\n })\n event.preventDefault()\n return true\n }\n return false\n },\n COMMAND_PRIORITY_LOW,\n )\n : () => {\n // Don't paste arbitrary text as a link when there's no validate function\n },\n )\n }, [editor])\n\n return null\n}\n"],"names":["useLexicalComposerContext","mergeRegister","$getSelection","$isElementNode","$isRangeSelection","COMMAND_PRIORITY_LOW","PASTE_COMMAND","useEffect","validateUrl","LinkNode","TOGGLE_LINK_COMMAND","toggleLink","LinkPlugin","editor","hasNodes","Error","registerCommand","payload","undefined","event","selection","isCollapsed","ClipboardEvent","clipboardData","clipboardText","getData","getNodes","some","node","linkFields","doc","linkType","newTab","url","dispatchCommand","fields","text","preventDefault"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,SAASA,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,aAAa,QAAQ,iBAAgB;AAC9C,SACEC,aAAa,EACbC,cAAc,EACdC,iBAAiB,EACjBC,oBAAoB,EACpBC,aAAa,QACR,UAAS;AAChB,SAASC,SAAS,QAAQ,QAAO;AAOjC,SAASC,WAAW,QAAQ,mCAAkC;AAC9D,SAASC,QAAQ,EAAEC,mBAAmB,EAAEC,UAAU,QAAQ,0BAAyB;AAEnF,OAAO,MAAMC,aAA2C;IACtD,MAAM,CAACC,OAAO,GAAGb;IAEjBO,UAAU;QACR,IAAI,CAACM,OAAOC,QAAQ,CAAC;YAACL;SAAS,GAAG;YAChC,MAAM,IAAIM,MAAM;QAClB;QACA,OAAOd,cACLY,OAAOG,eAAe,CACpBN,qBACA,CAACO;YACCN,WAAWM;YACX,OAAO;QACT,GACAZ,uBAEFG,gBAAgBU,YACZL,OAAOG,eAAe,CACpBV,eACA,CAACa;YACC,MAAMC,YAAYlB;YAClB,IACE,CAACE,kBAAkBgB,cACnBA,UAAUC,WAAW,MACrB,CAAEF,CAAAA,iBAAiBG,cAAa,KAChCH,MAAMI,aAAa,IAAI,MACvB;gBACA,OAAO;YACT;YACA,MAAMC,gBAAgBL,MAAMI,aAAa,CAACE,OAAO,CAAC;YAClD,IAAI,CAACjB,YAAYgB,gBAAgB;gBAC/B,OAAO;YACT;YACA,qEAAqE;YACrE,IAAI,CAACJ,UAAUM,QAAQ,GAAGC,IAAI,CAAC,CAACC,OAASzB,eAAeyB,QAAQ;gBAC9D,MAAMC,aAAyB;oBAC7BC,KAAK;oBACLC,UAAU;oBACVC,QAAQ;oBACRC,KAAKT;gBACP;gBACAX,OAAOqB,eAAe,CAACxB,qBAAqB;oBAC1CyB,QAAQN;oBACRO,MAAM;gBACR;gBACAjB,MAAMkB,cAAc;gBACpB,OAAO;YACT;YACA,OAAO;QACT,GACAhC,wBAEF;QACE,yEAAyE;QAC3E;IAER,GAAG;QAACQ;KAAO;IAEX,OAAO;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"populationPromise.d.ts","sourceRoot":"","sources":["../../../../src/field/features/link/populationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAK1D,eAAO,MAAM,wBAAwB,UAC5B,sBAAsB,KAC5B,kBAAkB,kBAAkB,CA+DtC,CAAA"}
1
+ {"version":3,"file":"populationPromise.d.ts","sourceRoot":"","sources":["../../../../src/field/features/link/populationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAI1D,eAAO,MAAM,wBAAwB,UAC5B,sBAAsB,KAC5B,kBAAkB,kBAAkB,CA2CtC,CAAA"}