@payloadcms/richtext-lexical 3.0.0-beta.35 → 3.0.0-beta.37

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 (406) hide show
  1. package/dist/cell/index.d.ts +2 -0
  2. package/dist/cell/index.d.ts.map +1 -1
  3. package/dist/cell/index.js +24 -15
  4. package/dist/cell/index.js.map +1 -1
  5. package/dist/field/Field.d.ts.map +1 -1
  6. package/dist/field/Field.js +66 -47
  7. package/dist/field/Field.js.map +1 -1
  8. package/dist/field/features/align/feature.client.d.ts.map +1 -1
  9. package/dist/field/features/align/feature.client.js +12 -4
  10. package/dist/field/features/align/feature.client.js.map +1 -1
  11. package/dist/field/features/align/feature.server.d.ts.map +1 -1
  12. package/dist/field/features/align/feature.server.js +2 -0
  13. package/dist/field/features/align/feature.server.js.map +1 -1
  14. package/dist/field/features/align/i18n.d.ts +3 -0
  15. package/dist/field/features/align/i18n.d.ts.map +1 -0
  16. package/dist/field/features/align/i18n.js +196 -0
  17. package/dist/field/features/align/i18n.js.map +1 -0
  18. package/dist/field/features/blockquote/feature.client.d.ts.map +1 -1
  19. package/dist/field/features/blockquote/feature.client.js +22 -21
  20. package/dist/field/features/blockquote/feature.client.js.map +1 -1
  21. package/dist/field/features/blockquote/feature.server.d.ts.map +1 -1
  22. package/dist/field/features/blockquote/feature.server.js +2 -0
  23. package/dist/field/features/blockquote/feature.server.js.map +1 -1
  24. package/dist/field/features/blockquote/i18n.d.ts +3 -0
  25. package/dist/field/features/blockquote/i18n.d.ts.map +1 -0
  26. package/dist/field/features/blockquote/i18n.js +100 -0
  27. package/dist/field/features/blockquote/i18n.js.map +1 -0
  28. package/dist/field/features/blocks/component/BlockContent.js +62 -45
  29. package/dist/field/features/blocks/component/BlockContent.js.map +1 -1
  30. package/dist/field/features/blocks/component/index.js +38 -28
  31. package/dist/field/features/blocks/component/index.js.map +1 -1
  32. package/dist/field/features/blocks/drawer/index.js +2 -1
  33. package/dist/field/features/blocks/drawer/index.js.map +1 -1
  34. package/dist/field/features/blocks/feature.client.d.ts.map +1 -1
  35. package/dist/field/features/blocks/feature.client.js +3 -1
  36. package/dist/field/features/blocks/feature.client.js.map +1 -1
  37. package/dist/field/features/blocks/feature.server.d.ts.map +1 -1
  38. package/dist/field/features/blocks/feature.server.js +2 -0
  39. package/dist/field/features/blocks/feature.server.js.map +1 -1
  40. package/dist/field/features/blocks/i18n.d.ts +3 -0
  41. package/dist/field/features/blocks/i18n.d.ts.map +1 -0
  42. package/dist/field/features/blocks/i18n.js +100 -0
  43. package/dist/field/features/blocks/i18n.js.map +1 -0
  44. package/dist/field/features/blocks/nodes/BlocksNode.d.ts +1 -1
  45. package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
  46. package/dist/field/features/blocks/nodes/BlocksNode.js +2 -1
  47. package/dist/field/features/blocks/nodes/BlocksNode.js.map +1 -1
  48. package/dist/field/features/blocks/plugin/index.js +2 -1
  49. package/dist/field/features/blocks/plugin/index.js.map +1 -1
  50. package/dist/field/features/blocks/populationPromise.js +1 -1
  51. package/dist/field/features/blocks/populationPromise.js.map +1 -1
  52. package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
  53. package/dist/field/features/converters/html/field/index.js +30 -2
  54. package/dist/field/features/converters/html/field/index.js.map +1 -1
  55. package/dist/field/features/debug/testRecorder/plugin/index.js +65 -39
  56. package/dist/field/features/debug/testRecorder/plugin/index.js.map +1 -1
  57. package/dist/field/features/debug/treeView/plugin/index.js +2 -1
  58. package/dist/field/features/debug/treeView/plugin/index.js.map +1 -1
  59. package/dist/field/features/heading/feature.client.d.ts.map +1 -1
  60. package/dist/field/features/heading/feature.client.js +26 -21
  61. package/dist/field/features/heading/feature.client.js.map +1 -1
  62. package/dist/field/features/heading/feature.server.d.ts.map +1 -1
  63. package/dist/field/features/heading/feature.server.js +2 -0
  64. package/dist/field/features/heading/feature.server.js.map +1 -1
  65. package/dist/field/features/heading/i18n.d.ts +3 -0
  66. package/dist/field/features/heading/i18n.d.ts.map +1 -0
  67. package/dist/field/features/heading/i18n.js +100 -0
  68. package/dist/field/features/heading/i18n.js.map +1 -0
  69. package/dist/field/features/horizontalRule/feature.client.d.ts.map +1 -1
  70. package/dist/field/features/horizontalRule/feature.client.js +21 -20
  71. package/dist/field/features/horizontalRule/feature.client.js.map +1 -1
  72. package/dist/field/features/horizontalRule/feature.server.d.ts.map +1 -1
  73. package/dist/field/features/horizontalRule/feature.server.js +2 -0
  74. package/dist/field/features/horizontalRule/feature.server.js.map +1 -1
  75. package/dist/field/features/horizontalRule/i18n.d.ts +3 -0
  76. package/dist/field/features/horizontalRule/i18n.d.ts.map +1 -0
  77. package/dist/field/features/horizontalRule/i18n.js +100 -0
  78. package/dist/field/features/horizontalRule/i18n.js.map +1 -0
  79. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js +2 -1
  80. package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js.map +1 -1
  81. package/dist/field/features/indent/feature.client.d.ts.map +1 -1
  82. package/dist/field/features/indent/feature.client.js +6 -2
  83. package/dist/field/features/indent/feature.client.js.map +1 -1
  84. package/dist/field/features/indent/feature.server.d.ts.map +1 -1
  85. package/dist/field/features/indent/feature.server.js +2 -0
  86. package/dist/field/features/indent/feature.server.js.map +1 -1
  87. package/dist/field/features/indent/i18n.d.ts +3 -0
  88. package/dist/field/features/indent/i18n.d.ts.map +1 -0
  89. package/dist/field/features/indent/i18n.js +132 -0
  90. package/dist/field/features/indent/i18n.js.map +1 -0
  91. package/dist/field/features/link/drawer/index.js +30 -22
  92. package/dist/field/features/link/drawer/index.js.map +1 -1
  93. package/dist/field/features/link/feature.client.d.ts.map +1 -1
  94. package/dist/field/features/link/feature.client.js +7 -1
  95. package/dist/field/features/link/feature.client.js.map +1 -1
  96. package/dist/field/features/link/feature.server.d.ts.map +1 -1
  97. package/dist/field/features/link/feature.server.js +10 -2
  98. package/dist/field/features/link/feature.server.js.map +1 -1
  99. package/dist/field/features/link/i18n.d.ts +3 -0
  100. package/dist/field/features/link/i18n.d.ts.map +1 -0
  101. package/dist/field/features/link/i18n.js +100 -0
  102. package/dist/field/features/link/i18n.js.map +1 -0
  103. package/dist/field/features/link/markdownTransformer.d.ts +6 -0
  104. package/dist/field/features/link/markdownTransformer.d.ts.map +1 -0
  105. package/dist/field/features/link/markdownTransformer.js +50 -0
  106. package/dist/field/features/link/markdownTransformer.js.map +1 -0
  107. package/dist/field/features/link/plugins/clickableLink/index.js +2 -1
  108. package/dist/field/features/link/plugins/clickableLink/index.js.map +1 -1
  109. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  110. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +88 -70
  111. package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  112. package/dist/field/features/link/plugins/floatingLinkEditor/index.js +2 -1
  113. package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +1 -1
  114. package/dist/field/features/link/populationPromise.js +1 -1
  115. package/dist/field/features/link/populationPromise.js.map +1 -1
  116. package/dist/field/features/lists/checklist/feature.client.d.ts.map +1 -1
  117. package/dist/field/features/lists/checklist/feature.client.js +21 -20
  118. package/dist/field/features/lists/checklist/feature.client.js.map +1 -1
  119. package/dist/field/features/lists/checklist/feature.server.d.ts.map +1 -1
  120. package/dist/field/features/lists/checklist/feature.server.js +2 -0
  121. package/dist/field/features/lists/checklist/feature.server.js.map +1 -1
  122. package/dist/field/features/lists/checklist/i18n.d.ts +3 -0
  123. package/dist/field/features/lists/checklist/i18n.d.ts.map +1 -0
  124. package/dist/field/features/lists/checklist/i18n.js +100 -0
  125. package/dist/field/features/lists/checklist/i18n.js.map +1 -0
  126. package/dist/field/features/lists/checklist/plugin/index.js +2 -1
  127. package/dist/field/features/lists/checklist/plugin/index.js.map +1 -1
  128. package/dist/field/features/lists/orderedList/feature.client.d.ts.map +1 -1
  129. package/dist/field/features/lists/orderedList/feature.client.js +19 -18
  130. package/dist/field/features/lists/orderedList/feature.client.js.map +1 -1
  131. package/dist/field/features/lists/orderedList/feature.server.d.ts.map +1 -1
  132. package/dist/field/features/lists/orderedList/feature.server.js +3 -1
  133. package/dist/field/features/lists/orderedList/feature.server.js.map +1 -1
  134. package/dist/field/features/lists/orderedList/i18n.d.ts +3 -0
  135. package/dist/field/features/lists/orderedList/i18n.d.ts.map +1 -0
  136. package/dist/field/features/lists/orderedList/i18n.js +100 -0
  137. package/dist/field/features/lists/orderedList/i18n.js.map +1 -0
  138. package/dist/field/features/lists/plugin/index.js +2 -1
  139. package/dist/field/features/lists/plugin/index.js.map +1 -1
  140. package/dist/field/features/lists/shared/slashMenuListGroup.d.ts +3 -0
  141. package/dist/field/features/lists/shared/slashMenuListGroup.d.ts.map +1 -0
  142. package/dist/field/features/lists/shared/slashMenuListGroup.js +11 -0
  143. package/dist/field/features/lists/shared/slashMenuListGroup.js.map +1 -0
  144. package/dist/field/features/lists/unorderedList/feature.client.d.ts.map +1 -1
  145. package/dist/field/features/lists/unorderedList/feature.client.js +19 -18
  146. package/dist/field/features/lists/unorderedList/feature.client.js.map +1 -1
  147. package/dist/field/features/lists/unorderedList/feature.server.d.ts.map +1 -1
  148. package/dist/field/features/lists/unorderedList/feature.server.js +2 -0
  149. package/dist/field/features/lists/unorderedList/feature.server.js.map +1 -1
  150. package/dist/field/features/lists/unorderedList/i18n.d.ts +3 -0
  151. package/dist/field/features/lists/unorderedList/i18n.d.ts.map +1 -0
  152. package/dist/field/features/lists/unorderedList/i18n.js +100 -0
  153. package/dist/field/features/lists/unorderedList/i18n.js.map +1 -0
  154. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +9 -1
  155. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  156. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
  157. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  158. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +2 -1
  159. package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  160. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +9 -1
  161. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  162. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
  163. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  164. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +2 -1
  165. package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  166. package/dist/field/features/paragraph/feature.client.d.ts.map +1 -1
  167. package/dist/field/features/paragraph/feature.client.js +24 -23
  168. package/dist/field/features/paragraph/feature.client.js.map +1 -1
  169. package/dist/field/features/paragraph/feature.server.d.ts.map +1 -1
  170. package/dist/field/features/paragraph/feature.server.js +2 -0
  171. package/dist/field/features/paragraph/feature.server.js.map +1 -1
  172. package/dist/field/features/paragraph/i18n.d.ts +3 -0
  173. package/dist/field/features/paragraph/i18n.d.ts.map +1 -0
  174. package/dist/field/features/paragraph/i18n.js +132 -0
  175. package/dist/field/features/paragraph/i18n.js.map +1 -0
  176. package/dist/field/features/relationship/drawer/index.js +10 -2
  177. package/dist/field/features/relationship/drawer/index.js.map +1 -1
  178. package/dist/field/features/relationship/feature.client.d.ts.map +1 -1
  179. package/dist/field/features/relationship/feature.client.js +23 -22
  180. package/dist/field/features/relationship/feature.client.js.map +1 -1
  181. package/dist/field/features/relationship/feature.server.d.ts.map +1 -1
  182. package/dist/field/features/relationship/feature.server.js +2 -0
  183. package/dist/field/features/relationship/feature.server.js.map +1 -1
  184. package/dist/field/features/relationship/i18n.d.ts +3 -0
  185. package/dist/field/features/relationship/i18n.d.ts.map +1 -0
  186. package/dist/field/features/relationship/i18n.js +100 -0
  187. package/dist/field/features/relationship/i18n.js.map +1 -0
  188. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts +1 -1
  189. package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
  190. package/dist/field/features/relationship/nodes/RelationshipNode.js +2 -1
  191. package/dist/field/features/relationship/nodes/RelationshipNode.js.map +1 -1
  192. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +64 -44
  193. package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
  194. package/dist/field/features/relationship/plugins/index.js +2 -1
  195. package/dist/field/features/relationship/plugins/index.js.map +1 -1
  196. package/dist/field/features/shared/slashMenu/basicGroup.d.ts +3 -0
  197. package/dist/field/features/shared/slashMenu/basicGroup.d.ts.map +1 -0
  198. package/dist/field/features/shared/slashMenu/basicGroup.js +11 -0
  199. package/dist/field/features/shared/slashMenu/basicGroup.js.map +1 -0
  200. package/dist/field/features/toolbars/fixed/Toolbar/index.js +60 -55
  201. package/dist/field/features/toolbars/fixed/Toolbar/index.js.map +1 -1
  202. package/dist/field/features/toolbars/fixed/Toolbar/index.scss +16 -2
  203. package/dist/field/features/toolbars/inline/Toolbar/index.js +57 -49
  204. package/dist/field/features/toolbars/inline/Toolbar/index.js.map +1 -1
  205. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts +1 -1
  206. package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  207. package/dist/field/features/toolbars/shared/ToolbarButton/index.js +5 -3
  208. package/dist/field/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  209. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  210. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js +54 -35
  211. package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  212. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts +1 -1
  213. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  214. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js +25 -22
  215. package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  216. package/dist/field/features/toolbars/types.d.ts +1 -1
  217. package/dist/field/features/toolbars/types.d.ts.map +1 -1
  218. package/dist/field/features/toolbars/types.js.map +1 -1
  219. package/dist/field/features/types.d.ts +21 -2
  220. package/dist/field/features/types.d.ts.map +1 -1
  221. package/dist/field/features/types.js.map +1 -1
  222. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +30 -22
  223. package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -1
  224. package/dist/field/features/upload/component/index.js +104 -71
  225. package/dist/field/features/upload/component/index.js.map +1 -1
  226. package/dist/field/features/upload/drawer/index.js +8 -4
  227. package/dist/field/features/upload/drawer/index.js.map +1 -1
  228. package/dist/field/features/upload/feature.client.d.ts.map +1 -1
  229. package/dist/field/features/upload/feature.client.js +26 -25
  230. package/dist/field/features/upload/feature.client.js.map +1 -1
  231. package/dist/field/features/upload/feature.server.d.ts.map +1 -1
  232. package/dist/field/features/upload/feature.server.js +2 -0
  233. package/dist/field/features/upload/feature.server.js.map +1 -1
  234. package/dist/field/features/upload/i18n.d.ts +3 -0
  235. package/dist/field/features/upload/i18n.d.ts.map +1 -0
  236. package/dist/field/features/upload/i18n.js +100 -0
  237. package/dist/field/features/upload/i18n.js.map +1 -0
  238. package/dist/field/features/upload/nodes/UploadNode.d.ts +1 -1
  239. package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
  240. package/dist/field/features/upload/nodes/UploadNode.js +2 -1
  241. package/dist/field/features/upload/nodes/UploadNode.js.map +1 -1
  242. package/dist/field/features/upload/plugin/index.js +2 -1
  243. package/dist/field/features/upload/plugin/index.js.map +1 -1
  244. package/dist/field/features/upload/populationPromise.js +1 -1
  245. package/dist/field/features/upload/populationPromise.js.map +1 -1
  246. package/dist/field/index.d.ts +2 -0
  247. package/dist/field/index.d.ts.map +1 -1
  248. package/dist/field/index.js +29 -21
  249. package/dist/field/index.js.map +1 -1
  250. package/dist/field/index.scss +0 -19
  251. package/dist/field/lexical/EditorFocusProvider.d.ts +1 -2
  252. package/dist/field/lexical/EditorFocusProvider.d.ts.map +1 -1
  253. package/dist/field/lexical/EditorFocusProvider.js +5 -3
  254. package/dist/field/lexical/EditorFocusProvider.js.map +1 -1
  255. package/dist/field/lexical/EditorPlugin.js +3 -2
  256. package/dist/field/lexical/EditorPlugin.js.map +1 -1
  257. package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
  258. package/dist/field/lexical/LexicalEditor.js +115 -81
  259. package/dist/field/lexical/LexicalEditor.js.map +1 -1
  260. package/dist/field/lexical/LexicalEditor.scss +10 -1
  261. package/dist/field/lexical/LexicalProvider.js +16 -10
  262. package/dist/field/lexical/LexicalProvider.js.map +1 -1
  263. package/dist/field/lexical/config/client/EditorConfigProvider.js +5 -3
  264. package/dist/field/lexical/config/client/EditorConfigProvider.js.map +1 -1
  265. package/dist/field/lexical/config/client/sanitize.d.ts +2 -1
  266. package/dist/field/lexical/config/client/sanitize.d.ts.map +1 -1
  267. package/dist/field/lexical/config/client/sanitize.js +2 -1
  268. package/dist/field/lexical/config/client/sanitize.js.map +1 -1
  269. package/dist/field/lexical/config/server/sanitize.d.ts.map +1 -1
  270. package/dist/field/lexical/config/server/sanitize.js +11 -0
  271. package/dist/field/lexical/config/server/sanitize.js.map +1 -1
  272. package/dist/field/lexical/config/types.d.ts +2 -0
  273. package/dist/field/lexical/config/types.d.ts.map +1 -1
  274. package/dist/field/lexical/config/types.js.map +1 -1
  275. package/dist/field/lexical/plugins/MarkdownShortcut/index.js +2 -1
  276. package/dist/field/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  277. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +1 -1
  278. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  279. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  280. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +1 -1
  281. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  282. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +2 -1
  283. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  284. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +2 -2
  285. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  286. package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  287. package/dist/field/lexical/plugins/SlashMenu/index.js +51 -40
  288. package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -1
  289. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts +2 -2
  290. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
  291. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +38 -119
  292. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  293. package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.scss +2 -2
  294. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts +1 -1
  295. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts.map +1 -1
  296. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -1
  297. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts +2 -2
  298. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  299. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +102 -58
  300. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  301. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +12 -3
  302. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts +8 -1
  303. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  304. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +73 -25
  305. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  306. package/dist/field/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts +5 -0
  307. package/dist/field/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -0
  308. package/dist/field/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js +21 -0
  309. package/dist/field/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -0
  310. package/dist/field/lexical/plugins/handles/{DraggableBlockPlugin → utils}/getNodeCloseToPoint.d.ts +4 -0
  311. package/dist/field/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -0
  312. package/dist/field/lexical/plugins/handles/{DraggableBlockPlugin → utils}/getNodeCloseToPoint.js +2 -14
  313. package/dist/field/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -0
  314. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  315. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +4 -2
  316. package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  317. package/dist/field/lexical/theme/EditorTheme.scss +5 -0
  318. package/dist/field/lexical/ui/ContentEditable.d.ts +1 -1
  319. package/dist/field/lexical/ui/ContentEditable.d.ts.map +1 -1
  320. package/dist/field/lexical/ui/ContentEditable.js +2 -1
  321. package/dist/field/lexical/ui/ContentEditable.js.map +1 -1
  322. package/dist/field/lexical/ui/ContentEditable.scss +50 -2
  323. package/dist/field/lexical/ui/icons/AI/index.js +26 -17
  324. package/dist/field/lexical/ui/icons/AI/index.js.map +1 -1
  325. package/dist/field/lexical/ui/icons/Add/index.js +14 -9
  326. package/dist/field/lexical/ui/icons/Add/index.js.map +1 -1
  327. package/dist/field/lexical/ui/icons/Add/light.svg +4 -0
  328. package/dist/field/lexical/ui/icons/AlignCenter/index.js +21 -15
  329. package/dist/field/lexical/ui/icons/AlignCenter/index.js.map +1 -1
  330. package/dist/field/lexical/ui/icons/AlignJustify/index.js +21 -15
  331. package/dist/field/lexical/ui/icons/AlignJustify/index.js.map +1 -1
  332. package/dist/field/lexical/ui/icons/AlignLeft/index.js +21 -15
  333. package/dist/field/lexical/ui/icons/AlignLeft/index.js.map +1 -1
  334. package/dist/field/lexical/ui/icons/AlignRight/index.js +21 -15
  335. package/dist/field/lexical/ui/icons/AlignRight/index.js.map +1 -1
  336. package/dist/field/lexical/ui/icons/Block/index.js +30 -24
  337. package/dist/field/lexical/ui/icons/Block/index.js.map +1 -1
  338. package/dist/field/lexical/ui/icons/Blockquote/index.js +8 -6
  339. package/dist/field/lexical/ui/icons/Blockquote/index.js.map +1 -1
  340. package/dist/field/lexical/ui/icons/Bold/index.js +8 -6
  341. package/dist/field/lexical/ui/icons/Bold/index.js.map +1 -1
  342. package/dist/field/lexical/ui/icons/Checklist/index.js +19 -14
  343. package/dist/field/lexical/ui/icons/Checklist/index.js.map +1 -1
  344. package/dist/field/lexical/ui/icons/Code/index.js +14 -9
  345. package/dist/field/lexical/ui/icons/Code/index.js.map +1 -1
  346. package/dist/field/lexical/ui/icons/CodeBlock/index.js +14 -9
  347. package/dist/field/lexical/ui/icons/CodeBlock/index.js.map +1 -1
  348. package/dist/field/lexical/ui/icons/DraggableBlock/light.svg +9 -0
  349. package/dist/field/lexical/ui/icons/H1/index.js +8 -6
  350. package/dist/field/lexical/ui/icons/H1/index.js.map +1 -1
  351. package/dist/field/lexical/ui/icons/H2/index.js +8 -6
  352. package/dist/field/lexical/ui/icons/H2/index.js.map +1 -1
  353. package/dist/field/lexical/ui/icons/H3/index.js +8 -6
  354. package/dist/field/lexical/ui/icons/H3/index.js.map +1 -1
  355. package/dist/field/lexical/ui/icons/H4/index.js +8 -6
  356. package/dist/field/lexical/ui/icons/H4/index.js.map +1 -1
  357. package/dist/field/lexical/ui/icons/H5/index.js +8 -6
  358. package/dist/field/lexical/ui/icons/H5/index.js.map +1 -1
  359. package/dist/field/lexical/ui/icons/H6/index.js +8 -6
  360. package/dist/field/lexical/ui/icons/H6/index.js.map +1 -1
  361. package/dist/field/lexical/ui/icons/HorizontalRule/index.js +11 -9
  362. package/dist/field/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
  363. package/dist/field/lexical/ui/icons/IndentDecrease/index.js +25 -18
  364. package/dist/field/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
  365. package/dist/field/lexical/ui/icons/IndentIncrease/index.js +25 -18
  366. package/dist/field/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
  367. package/dist/field/lexical/ui/icons/Italic/index.js +8 -6
  368. package/dist/field/lexical/ui/icons/Italic/index.js.map +1 -1
  369. package/dist/field/lexical/ui/icons/Link/index.js +26 -17
  370. package/dist/field/lexical/ui/icons/Link/index.js.map +1 -1
  371. package/dist/field/lexical/ui/icons/OrderedList/index.js +29 -21
  372. package/dist/field/lexical/ui/icons/OrderedList/index.js.map +1 -1
  373. package/dist/field/lexical/ui/icons/Relationship/index.js +26 -17
  374. package/dist/field/lexical/ui/icons/Relationship/index.js.map +1 -1
  375. package/dist/field/lexical/ui/icons/Strikethrough/index.js +14 -9
  376. package/dist/field/lexical/ui/icons/Strikethrough/index.js.map +1 -1
  377. package/dist/field/lexical/ui/icons/Subscript/index.js +8 -6
  378. package/dist/field/lexical/ui/icons/Subscript/index.js.map +1 -1
  379. package/dist/field/lexical/ui/icons/Superscript/index.js +8 -6
  380. package/dist/field/lexical/ui/icons/Superscript/index.js.map +1 -1
  381. package/dist/field/lexical/ui/icons/Text/index.js +8 -6
  382. package/dist/field/lexical/ui/icons/Text/index.js.map +1 -1
  383. package/dist/field/lexical/ui/icons/Underline/index.js +14 -9
  384. package/dist/field/lexical/ui/icons/Underline/index.js.map +1 -1
  385. package/dist/field/lexical/ui/icons/UnorderedList/index.js +45 -36
  386. package/dist/field/lexical/ui/icons/UnorderedList/index.js.map +1 -1
  387. package/dist/field/lexical/ui/icons/Upload/index.js +24 -18
  388. package/dist/field/lexical/ui/icons/Upload/index.js.map +1 -1
  389. package/dist/field/lexical/utils/url.d.ts.map +1 -1
  390. package/dist/field/lexical/utils/url.js +10 -2
  391. package/dist/field/lexical/utils/url.js.map +1 -1
  392. package/dist/generateComponentMap.js +8 -8
  393. package/dist/generateComponentMap.js.map +1 -1
  394. package/dist/i18n.d.ts +3 -0
  395. package/dist/i18n.d.ts.map +1 -0
  396. package/dist/i18n.js +164 -0
  397. package/dist/i18n.js.map +1 -0
  398. package/dist/index.d.ts.map +1 -1
  399. package/dist/index.js +13 -0
  400. package/dist/index.js.map +1 -1
  401. package/dist/types.d.ts +7 -0
  402. package/dist/types.d.ts.map +1 -1
  403. package/dist/types.js.map +1 -1
  404. package/package.json +20 -15
  405. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts.map +0 -1
  406. package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js.map +0 -1
@@ -1,10 +1,11 @@
1
1
  'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
2
3
  import LexicalClickableLinkPlugin from '@lexical/react/LexicalClickableLinkPlugin.js';
3
4
  import React from 'react';
4
5
  export const ClickableLinkPlugin = ()=>{
5
6
  const Component = LexicalClickableLinkPlugin.default || LexicalClickableLinkPlugin;
6
7
  //@ts-expect-error ts being dumb
7
- return /*#__PURE__*/ React.createElement(Component, null);
8
+ return /*#__PURE__*/ _jsx(Component, {});
8
9
  };
9
10
 
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/field/features/link/plugins/clickableLink/index.tsx"],"sourcesContent":["'use client'\nimport LexicalClickableLinkPlugin from '@lexical/react/LexicalClickableLinkPlugin.js'\nimport React from 'react'\n\nimport type { PluginComponent } from '../../../types.js'\nimport type { ClientProps } from '../../feature.client.js'\n\nexport const ClickableLinkPlugin: PluginComponent<ClientProps> = () => {\n const Component = LexicalClickableLinkPlugin.default || LexicalClickableLinkPlugin\n //@ts-expect-error ts being dumb\n return <Component />\n}\n"],"names":["LexicalClickableLinkPlugin","React","ClickableLinkPlugin","Component","default"],"rangeMappings":";;;;;;;","mappings":"AAAA;AACA,OAAOA,gCAAgC,+CAA8C;AACrF,OAAOC,WAAW,QAAO;AAKzB,OAAO,MAAMC,sBAAoD;IAC/D,MAAMC,YAAYH,2BAA2BI,OAAO,IAAIJ;IACxD,gCAAgC;IAChC,qBAAO,oBAACG;AACV,EAAC"}
1
+ {"version":3,"sources":["../../../../../../src/field/features/link/plugins/clickableLink/index.tsx"],"sourcesContent":["'use client'\nimport LexicalClickableLinkPlugin from '@lexical/react/LexicalClickableLinkPlugin.js'\nimport React from 'react'\n\nimport type { PluginComponent } from '../../../types.js'\nimport type { ClientProps } from '../../feature.client.js'\n\nexport const ClickableLinkPlugin: PluginComponent<ClientProps> = () => {\n const Component = LexicalClickableLinkPlugin.default || LexicalClickableLinkPlugin\n //@ts-expect-error ts being dumb\n return <Component />\n}\n"],"names":["LexicalClickableLinkPlugin","React","ClickableLinkPlugin","Component","default"],"rangeMappings":";;;;;;;;","mappings":"AAAA;;AACA,OAAOA,gCAAgC,+CAA8C;AACrF,OAAOC,WAAW,QAAO;AAKzB,OAAO,MAAMC,sBAAoD;IAC/D,MAAMC,YAAYH,2BAA2BI,OAAO,IAAIJ;IACxD,gCAAgC;IAChC,qBAAO,KAACG;AACV,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAevE,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAwUvF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAevE,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CA0UvF"}
@@ -1,4 +1,5 @@
1
1
  'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
3
  import * as facelessUIImport from '@faceless-ui/modal';
3
4
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
4
5
  import { $findMatchingParent, mergeRegister } from '@lexical/utils';
@@ -28,7 +29,7 @@ export function LinkEditor({ anchorElem }) {
28
29
  const config = useConfig();
29
30
  const { i18n, t } = useTranslation();
30
31
  const [stateData, setStateData] = useState({});
31
- const { closeModal, toggleModal } = useModal();
32
+ const { closeModal, isModalOpen, toggleModal } = useModal();
32
33
  const editDepth = useEditDepth();
33
34
  const [isLink, setIsLink] = useState(false);
34
35
  const [selectedNodes, setSelectedNodes] = useState([]);
@@ -208,76 +209,93 @@ export function LinkEditor({ anchorElem }) {
208
209
  editor,
209
210
  $updateLinkEditor
210
211
  ]);
211
- return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("div", {
212
- className: "link-editor",
213
- ref: editorRef
214
- }, /*#__PURE__*/ React.createElement("div", {
215
- className: "link-input"
216
- }, linkUrl && linkUrl.length > 0 ? /*#__PURE__*/ React.createElement("a", {
217
- href: linkUrl,
218
- rel: "noopener noreferrer",
219
- target: "_blank"
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", {
223
- "aria-label": "Edit link",
224
- className: "link-edit",
225
- onClick: ()=>{
226
- toggleModal(drawerSlug);
227
- },
228
- onMouseDown: (event)=>{
229
- event.preventDefault();
230
- },
231
- tabIndex: 0,
232
- type: "button"
233
- }), !isAutoLink && /*#__PURE__*/ React.createElement("button", {
234
- "aria-label": "Remove link",
235
- className: "link-trash",
236
- onClick: ()=>{
237
- editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
238
- },
239
- onMouseDown: (event)=>{
240
- event.preventDefault();
241
- },
242
- tabIndex: 0,
243
- type: "button"
244
- })))), /*#__PURE__*/ React.createElement(LinkDrawer, {
245
- drawerSlug: drawerSlug,
246
- handleModalSubmit: (fields, data)=>{
247
- closeModal(drawerSlug);
248
- const newLinkPayload = data;
249
- const bareLinkFields = {
250
- ...newLinkPayload
251
- };
252
- delete bareLinkFields.text;
253
- // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).
254
- editor.update(()=>{
255
- const selection = $getSelection();
256
- let linkParent = null;
257
- if ($isRangeSelection(selection)) {
258
- linkParent = getSelectedNode(selection).getParent();
259
- } else {
260
- if (selectedNodes.length) {
261
- linkParent = selectedNodes[0].getParent();
262
- }
263
- }
264
- if (linkParent && $isAutoLinkNode(linkParent)) {
265
- const linkNode = $createLinkNode({
266
- fields: bareLinkFields
212
+ return /*#__PURE__*/ _jsxs(React.Fragment, {
213
+ children: [
214
+ /*#__PURE__*/ _jsx("div", {
215
+ className: "link-editor",
216
+ ref: editorRef,
217
+ children: /*#__PURE__*/ _jsxs("div", {
218
+ className: "link-input",
219
+ children: [
220
+ linkUrl && linkUrl.length > 0 ? /*#__PURE__*/ _jsx("a", {
221
+ href: linkUrl,
222
+ rel: "noopener noreferrer",
223
+ target: "_blank",
224
+ children: linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl
225
+ }) : linkLabel != null && linkLabel.length > 0 ? /*#__PURE__*/ _jsx("span", {
226
+ className: "link-input__label-pure",
227
+ children: linkLabel
228
+ }) : null,
229
+ editor.isEditable() && /*#__PURE__*/ _jsxs(React.Fragment, {
230
+ children: [
231
+ /*#__PURE__*/ _jsx("button", {
232
+ "aria-label": "Edit link",
233
+ className: "link-edit",
234
+ onClick: ()=>{
235
+ toggleModal(drawerSlug);
236
+ },
237
+ onMouseDown: (event)=>{
238
+ event.preventDefault();
239
+ },
240
+ tabIndex: 0,
241
+ type: "button"
242
+ }),
243
+ !isAutoLink && /*#__PURE__*/ _jsx("button", {
244
+ "aria-label": "Remove link",
245
+ className: "link-trash",
246
+ onClick: ()=>{
247
+ editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);
248
+ },
249
+ onMouseDown: (event)=>{
250
+ event.preventDefault();
251
+ },
252
+ tabIndex: 0,
253
+ type: "button"
254
+ })
255
+ ]
256
+ })
257
+ ]
258
+ })
259
+ }),
260
+ isModalOpen(drawerSlug) && /*#__PURE__*/ _jsx(LinkDrawer, {
261
+ drawerSlug: drawerSlug,
262
+ handleModalSubmit: (fields, data)=>{
263
+ closeModal(drawerSlug);
264
+ const newLinkPayload = data;
265
+ const bareLinkFields = {
266
+ ...newLinkPayload
267
+ };
268
+ delete bareLinkFields.text;
269
+ // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).
270
+ editor.update(()=>{
271
+ const selection = $getSelection();
272
+ let linkParent = null;
273
+ if ($isRangeSelection(selection)) {
274
+ linkParent = getSelectedNode(selection).getParent();
275
+ } else {
276
+ if (selectedNodes.length) {
277
+ linkParent = selectedNodes[0].getParent();
278
+ }
279
+ }
280
+ if (linkParent && $isAutoLinkNode(linkParent)) {
281
+ const linkNode = $createLinkNode({
282
+ fields: bareLinkFields
283
+ });
284
+ linkParent.replace(linkNode, true);
285
+ }
267
286
  });
268
- linkParent.replace(linkNode, true);
269
- }
270
- });
271
- // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to
272
- // it being applied to the auto link node instead of the link node.
273
- editor.dispatchCommand(TOGGLE_LINK_COMMAND, {
274
- fields: bareLinkFields,
275
- selectedNodes,
276
- text: newLinkPayload.text
277
- });
278
- },
279
- stateData: stateData
280
- }));
287
+ // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to
288
+ // it being applied to the auto link node instead of the link node.
289
+ editor.dispatchCommand(TOGGLE_LINK_COMMAND, {
290
+ fields: bareLinkFields,
291
+ selectedNodes,
292
+ text: newLinkPayload.text
293
+ });
294
+ },
295
+ stateData: stateData
296
+ })
297
+ ]
298
+ });
281
299
  }
282
300
 
283
301
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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
+ {"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, isModalOpen, 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 {isModalOpen(drawerSlug) && (\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 )}\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","isModalOpen","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,11 +1,12 @@
1
1
  'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
2
3
  import * as React from 'react';
3
4
  import { createPortal } from 'react-dom';
4
5
  import { LinkEditor } from './LinkEditor/index.js';
5
6
  import './index.scss';
6
7
  export const FloatingLinkEditorPlugin = (props)=>{
7
8
  const { anchorElem = document.body } = props;
8
- return /*#__PURE__*/ createPortal(/*#__PURE__*/ React.createElement(LinkEditor, {
9
+ return /*#__PURE__*/ createPortal(/*#__PURE__*/ _jsx(LinkEditor, {
9
10
  anchorElem: anchorElem
10
11
  }), anchorElem);
11
12
  };
@@ -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 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"}
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,KAACC;QAAWG,YAAYA;QAAgBA;AAC9D,EAAC"}
@@ -17,7 +17,7 @@ export const linkPopulationPromiseHOC = (props)=>{
17
17
  fieldPromises,
18
18
  fields: props.fields,
19
19
  findMany,
20
- flattenLocales,
20
+ flattenLocales: false,
21
21
  overrideAccess,
22
22
  populationPromises,
23
23
  req,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/field/features/link/populationPromise.ts"],"sourcesContent":["import type { PopulationPromise } from '../types.js'\nimport type { LinkFeatureServerProps } from './feature.server.js'\nimport type { SerializedLinkNode } from './nodes/types.js'\n\nimport { recurseNestedFields } from '../../../populate/recurseNestedFields.js'\n\nexport const linkPopulationPromiseHOC = (\n props: LinkFeatureServerProps,\n): PopulationPromise<SerializedLinkNode> => {\n return ({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n fieldPromises,\n findMany,\n flattenLocales,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (!props.fields?.length) {\n return\n }\n\n /**\n * Should populate all fields, including the doc field (for internal links), as it's treated like a normal field\n */\n if (Array.isArray(props.fields)) {\n recurseNestedFields({\n context,\n currentDepth,\n data: node.fields,\n depth,\n draft,\n editorPopulationPromises,\n fieldPromises,\n fields: props.fields,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: node.fields,\n })\n }\n }\n}\n"],"names":["recurseNestedFields","linkPopulationPromiseHOC","props","context","currentDepth","depth","draft","editorPopulationPromises","fieldPromises","findMany","flattenLocales","node","overrideAccess","populationPromises","req","showHiddenFields","fields","length","Array","isArray","data","siblingDoc"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,mBAAmB,QAAQ,2CAA0C;AAE9E,OAAO,MAAMC,2BAA2B,CACtCC;IAEA,OAAO,CAAC,EACNC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,wBAAwB,EACxBC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,IAAI,EACJC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EACjB;QACC,IAAI,CAACb,MAAMc,MAAM,EAAEC,QAAQ;YACzB;QACF;QAEA;;KAEC,GACD,IAAIC,MAAMC,OAAO,CAACjB,MAAMc,MAAM,GAAG;YAC/BhB,oBAAoB;gBAClBG;gBACAC;gBACAgB,MAAMT,KAAKK,MAAM;gBACjBX;gBACAC;gBACAC;gBACAC;gBACAQ,QAAQd,MAAMc,MAAM;gBACpBP;gBACAC;gBACAE;gBACAC;gBACAC;gBACAC;gBACAM,YAAYV,KAAKK,MAAM;YACzB;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/field/features/link/populationPromise.ts"],"sourcesContent":["import type { PopulationPromise } from '../types.js'\nimport type { LinkFeatureServerProps } from './feature.server.js'\nimport type { SerializedLinkNode } from './nodes/types.js'\n\nimport { recurseNestedFields } from '../../../populate/recurseNestedFields.js'\n\nexport const linkPopulationPromiseHOC = (\n props: LinkFeatureServerProps,\n): PopulationPromise<SerializedLinkNode> => {\n return ({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n fieldPromises,\n findMany,\n flattenLocales,\n node,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (!props.fields?.length) {\n return\n }\n\n /**\n * Should populate all fields, including the doc field (for internal links), as it's treated like a normal field\n */\n if (Array.isArray(props.fields)) {\n recurseNestedFields({\n context,\n currentDepth,\n data: node.fields,\n depth,\n draft,\n editorPopulationPromises,\n fieldPromises,\n fields: props.fields,\n findMany,\n flattenLocales: false, // Disable localization handling which does not work properly yet. Once we fully support hooks, this can be enabled (pass through flattenLocales again)\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: node.fields,\n })\n }\n }\n}\n"],"names":["recurseNestedFields","linkPopulationPromiseHOC","props","context","currentDepth","depth","draft","editorPopulationPromises","fieldPromises","findMany","flattenLocales","node","overrideAccess","populationPromises","req","showHiddenFields","fields","length","Array","isArray","data","siblingDoc"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,mBAAmB,QAAQ,2CAA0C;AAE9E,OAAO,MAAMC,2BAA2B,CACtCC;IAEA,OAAO,CAAC,EACNC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,KAAK,EACLC,wBAAwB,EACxBC,aAAa,EACbC,QAAQ,EACRC,cAAc,EACdC,IAAI,EACJC,cAAc,EACdC,kBAAkB,EAClBC,GAAG,EACHC,gBAAgB,EACjB;QACC,IAAI,CAACb,MAAMc,MAAM,EAAEC,QAAQ;YACzB;QACF;QAEA;;KAEC,GACD,IAAIC,MAAMC,OAAO,CAACjB,MAAMc,MAAM,GAAG;YAC/BhB,oBAAoB;gBAClBG;gBACAC;gBACAgB,MAAMT,KAAKK,MAAM;gBACjBX;gBACAC;gBACAC;gBACAC;gBACAQ,QAAQd,MAAMc,MAAM;gBACpBP;gBACAC,gBAAgB;gBAChBE;gBACAC;gBACAC;gBACAC;gBACAM,YAAYV,KAAKK,MAAM;YACzB;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature.client.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/lists/checklist/feature.client.tsx"],"names":[],"mappings":";AA6GA,eAAO,MAAM,+BAA+B;;;EAAgD,CAAA"}
1
+ {"version":3,"file":"feature.client.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/lists/checklist/feature.client.tsx"],"names":[],"mappings":";AA8GA,eAAO,MAAM,+BAA+B;;;EAAgD,CAAA"}
@@ -5,6 +5,7 @@ import { ChecklistIcon } from '../../../lexical/ui/icons/Checklist/index.js';
5
5
  import { createClientComponent } from '../../createClientComponent.js';
6
6
  import { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js';
7
7
  import { LexicalListPlugin } from '../plugin/index.js';
8
+ import { slashMenuListGroupWithItems } from '../shared/slashMenuListGroup.js';
8
9
  import { CHECK_LIST } from './markdownTransformers.js';
9
10
  import { LexicalCheckListPlugin } from './plugin/index.js';
10
11
  const toolbarGroups = [
@@ -33,7 +34,9 @@ const toolbarGroups = [
33
34
  return true;
34
35
  },
35
36
  key: 'checklist',
36
- label: `Check List`,
37
+ label: ({ i18n })=>{
38
+ return i18n.t('lexical:checklist:label');
39
+ },
37
40
  onSelect: ({ editor })=>{
38
41
  editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined);
39
42
  },
@@ -69,26 +72,24 @@ const ChecklistFeatureClient = (props)=>{
69
72
  plugins,
70
73
  slashMenu: {
71
74
  groups: [
72
- {
73
- items: [
74
- {
75
- Icon: ChecklistIcon,
76
- key: 'checklist',
77
- keywords: [
78
- 'check list',
79
- 'check',
80
- 'checklist',
81
- 'cl'
82
- ],
83
- label: 'Check List',
84
- onSelect: ({ editor })=>{
85
- editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined);
86
- }
75
+ slashMenuListGroupWithItems([
76
+ {
77
+ Icon: ChecklistIcon,
78
+ key: 'checklist',
79
+ keywords: [
80
+ 'check list',
81
+ 'check',
82
+ 'checklist',
83
+ 'cl'
84
+ ],
85
+ label: ({ i18n })=>{
86
+ return i18n.t('lexical:checklist:label');
87
+ },
88
+ onSelect: ({ editor })=>{
89
+ editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined);
87
90
  }
88
- ],
89
- key: 'lists',
90
- label: 'Lists'
91
- }
91
+ }
92
+ ])
92
93
  ]
93
94
  },
94
95
  toolbarFixed: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/lists/checklist/feature.client.tsx"],"sourcesContent":["'use client'\nimport { $isListNode, INSERT_CHECK_LIST_COMMAND, ListItemNode, ListNode } from '@lexical/list'\nimport { $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\nimport type { ClientFeature, FeatureProviderProviderClient } from '../../types.js'\n\nimport { ChecklistIcon } from '../../../lexical/ui/icons/Checklist/index.js'\nimport { createClientComponent } from '../../createClientComponent.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js'\nimport { LexicalListPlugin } from '../plugin/index.js'\nimport { CHECK_LIST } from './markdownTransformers.js'\nimport { LexicalCheckListPlugin } from './plugin/index.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems([\n {\n ChildComponent: ChecklistIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isListNode(node) && node.getListType() === 'check') {\n continue\n }\n\n const parent = node.getParent()\n\n if ($isListNode(parent) && parent.getListType() === 'check') {\n continue\n }\n\n const parentParent = parent?.getParent()\n // Example scenario: Node = textNode, parent = listItemNode, parentParent = listNode\n if ($isListNode(parentParent) && parentParent.getListType() === 'check') {\n continue\n }\n\n return false\n }\n return true\n },\n key: 'checklist',\n label: `Check List`,\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\n },\n order: 12,\n },\n ]),\n]\n\nconst ChecklistFeatureClient: FeatureProviderProviderClient<undefined> = (props) => {\n return {\n clientFeatureProps: props,\n feature: ({ featureProviderMap }) => {\n const plugins: ClientFeature<undefined>['plugins'] = [\n {\n Component: LexicalCheckListPlugin,\n position: 'normal',\n },\n ]\n\n if (!featureProviderMap.has('unorderedList') && !featureProviderMap.has('orderedList')) {\n plugins.push({\n Component: LexicalListPlugin,\n position: 'normal',\n })\n }\n\n return {\n clientFeatureProps: props,\n markdownTransformers: [CHECK_LIST],\n nodes:\n featureProviderMap.has('unorderedList') || featureProviderMap.has('orderedList')\n ? []\n : [ListNode, ListItemNode],\n plugins,\n slashMenu: {\n groups: [\n {\n items: [\n {\n Icon: ChecklistIcon,\n key: 'checklist',\n keywords: ['check list', 'check', 'checklist', 'cl'],\n label: 'Check List',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\n },\n },\n ],\n key: 'lists',\n label: 'Lists',\n },\n ],\n },\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n }\n },\n }\n}\n\nexport const ChecklistFeatureClientComponent = createClientComponent(ChecklistFeatureClient)\n"],"names":["$isListNode","INSERT_CHECK_LIST_COMMAND","ListItemNode","ListNode","$isRangeSelection","ChecklistIcon","createClientComponent","toolbarTextDropdownGroupWithItems","LexicalListPlugin","CHECK_LIST","LexicalCheckListPlugin","toolbarGroups","ChildComponent","isActive","selection","node","getNodes","getListType","parent","getParent","parentParent","key","label","onSelect","editor","dispatchCommand","undefined","order","ChecklistFeatureClient","props","clientFeatureProps","feature","featureProviderMap","plugins","Component","position","has","push","markdownTransformers","nodes","slashMenu","groups","items","Icon","keywords","toolbarFixed","toolbarInline","ChecklistFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,SAASA,WAAW,EAAEC,yBAAyB,EAAEC,YAAY,EAAEC,QAAQ,QAAQ,gBAAe;AAC9F,SAASC,iBAAiB,QAAQ,UAAS;AAK3C,SAASC,aAAa,QAAQ,+CAA8C;AAC5E,SAASC,qBAAqB,QAAQ,iCAAgC;AACtE,SAASC,iCAAiC,QAAQ,4CAA2C;AAC7F,SAASC,iBAAiB,QAAQ,qBAAoB;AACtD,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,sBAAsB,QAAQ,oBAAmB;AAE1D,MAAMC,gBAAgC;IACpCJ,kCAAkC;QAChC;YACEK,gBAAgBP;YAChBQ,UAAU,CAAC,EAAEC,SAAS,EAAE;gBACtB,IAAI,CAACV,kBAAkBU,YAAY;oBACjC,OAAO;gBACT;gBACA,KAAK,MAAMC,QAAQD,UAAUE,QAAQ,GAAI;oBACvC,IAAIhB,YAAYe,SAASA,KAAKE,WAAW,OAAO,SAAS;wBACvD;oBACF;oBAEA,MAAMC,SAASH,KAAKI,SAAS;oBAE7B,IAAInB,YAAYkB,WAAWA,OAAOD,WAAW,OAAO,SAAS;wBAC3D;oBACF;oBAEA,MAAMG,eAAeF,QAAQC;oBAC7B,oFAAoF;oBACpF,IAAInB,YAAYoB,iBAAiBA,aAAaH,WAAW,OAAO,SAAS;wBACvE;oBACF;oBAEA,OAAO;gBACT;gBACA,OAAO;YACT;YACAI,KAAK;YACLC,OAAO,CAAC,UAAU,CAAC;YACnBC,UAAU,CAAC,EAAEC,MAAM,EAAE;gBACnBA,OAAOC,eAAe,CAACxB,2BAA2ByB;YACpD;YACAC,OAAO;QACT;KACD;CACF;AAED,MAAMC,yBAAmE,CAACC;IACxE,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,CAAC,EAAEC,kBAAkB,EAAE;YAC9B,MAAMC,UAA+C;gBACnD;oBACEC,WAAWxB;oBACXyB,UAAU;gBACZ;aACD;YAED,IAAI,CAACH,mBAAmBI,GAAG,CAAC,oBAAoB,CAACJ,mBAAmBI,GAAG,CAAC,gBAAgB;gBACtFH,QAAQI,IAAI,CAAC;oBACXH,WAAW1B;oBACX2B,UAAU;gBACZ;YACF;YAEA,OAAO;gBACLL,oBAAoBD;gBACpBS,sBAAsB;oBAAC7B;iBAAW;gBAClC8B,OACEP,mBAAmBI,GAAG,CAAC,oBAAoBJ,mBAAmBI,GAAG,CAAC,iBAC9D,EAAE,GACF;oBAACjC;oBAAUD;iBAAa;gBAC9B+B;gBACAO,WAAW;oBACTC,QAAQ;wBACN;4BACEC,OAAO;gCACL;oCACEC,MAAMtC;oCACNgB,KAAK;oCACLuB,UAAU;wCAAC;wCAAc;wCAAS;wCAAa;qCAAK;oCACpDtB,OAAO;oCACPC,UAAU,CAAC,EAAEC,MAAM,EAAE;wCACnBA,OAAOC,eAAe,CAACxB,2BAA2ByB;oCACpD;gCACF;6BACD;4BACDL,KAAK;4BACLC,OAAO;wBACT;qBACD;gBACH;gBACAuB,cAAc;oBACZJ,QAAQ9B;gBACV;gBACAmC,eAAe;oBACbL,QAAQ9B;gBACV;YACF;QACF;IACF;AACF;AAEA,OAAO,MAAMoC,kCAAkCzC,sBAAsBsB,wBAAuB"}
1
+ {"version":3,"sources":["../../../../../src/field/features/lists/checklist/feature.client.tsx"],"sourcesContent":["'use client'\nimport { $isListNode, INSERT_CHECK_LIST_COMMAND, ListItemNode, ListNode } from '@lexical/list'\nimport { $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\nimport type { ClientFeature, FeatureProviderProviderClient } from '../../types.js'\n\nimport { ChecklistIcon } from '../../../lexical/ui/icons/Checklist/index.js'\nimport { createClientComponent } from '../../createClientComponent.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js'\nimport { LexicalListPlugin } from '../plugin/index.js'\nimport { slashMenuListGroupWithItems } from '../shared/slashMenuListGroup.js'\nimport { CHECK_LIST } from './markdownTransformers.js'\nimport { LexicalCheckListPlugin } from './plugin/index.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems([\n {\n ChildComponent: ChecklistIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isListNode(node) && node.getListType() === 'check') {\n continue\n }\n\n const parent = node.getParent()\n\n if ($isListNode(parent) && parent.getListType() === 'check') {\n continue\n }\n\n const parentParent = parent?.getParent()\n // Example scenario: Node = textNode, parent = listItemNode, parentParent = listNode\n if ($isListNode(parentParent) && parentParent.getListType() === 'check') {\n continue\n }\n\n return false\n }\n return true\n },\n key: 'checklist',\n label: ({ i18n }) => {\n return i18n.t('lexical:checklist:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\n },\n order: 12,\n },\n ]),\n]\n\nconst ChecklistFeatureClient: FeatureProviderProviderClient<undefined> = (props) => {\n return {\n clientFeatureProps: props,\n feature: ({ featureProviderMap }) => {\n const plugins: ClientFeature<undefined>['plugins'] = [\n {\n Component: LexicalCheckListPlugin,\n position: 'normal',\n },\n ]\n\n if (!featureProviderMap.has('unorderedList') && !featureProviderMap.has('orderedList')) {\n plugins.push({\n Component: LexicalListPlugin,\n position: 'normal',\n })\n }\n\n return {\n clientFeatureProps: props,\n markdownTransformers: [CHECK_LIST],\n nodes:\n featureProviderMap.has('unorderedList') || featureProviderMap.has('orderedList')\n ? []\n : [ListNode, ListItemNode],\n plugins,\n slashMenu: {\n groups: [\n slashMenuListGroupWithItems([\n {\n Icon: ChecklistIcon,\n key: 'checklist',\n keywords: ['check list', 'check', 'checklist', 'cl'],\n label: ({ i18n }) => {\n return i18n.t('lexical:checklist:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n }\n },\n }\n}\n\nexport const ChecklistFeatureClientComponent = createClientComponent(ChecklistFeatureClient)\n"],"names":["$isListNode","INSERT_CHECK_LIST_COMMAND","ListItemNode","ListNode","$isRangeSelection","ChecklistIcon","createClientComponent","toolbarTextDropdownGroupWithItems","LexicalListPlugin","slashMenuListGroupWithItems","CHECK_LIST","LexicalCheckListPlugin","toolbarGroups","ChildComponent","isActive","selection","node","getNodes","getListType","parent","getParent","parentParent","key","label","i18n","t","onSelect","editor","dispatchCommand","undefined","order","ChecklistFeatureClient","props","clientFeatureProps","feature","featureProviderMap","plugins","Component","position","has","push","markdownTransformers","nodes","slashMenu","groups","Icon","keywords","toolbarFixed","toolbarInline","ChecklistFeatureClientComponent"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,SAASA,WAAW,EAAEC,yBAAyB,EAAEC,YAAY,EAAEC,QAAQ,QAAQ,gBAAe;AAC9F,SAASC,iBAAiB,QAAQ,UAAS;AAK3C,SAASC,aAAa,QAAQ,+CAA8C;AAC5E,SAASC,qBAAqB,QAAQ,iCAAgC;AACtE,SAASC,iCAAiC,QAAQ,4CAA2C;AAC7F,SAASC,iBAAiB,QAAQ,qBAAoB;AACtD,SAASC,2BAA2B,QAAQ,kCAAiC;AAC7E,SAASC,UAAU,QAAQ,4BAA2B;AACtD,SAASC,sBAAsB,QAAQ,oBAAmB;AAE1D,MAAMC,gBAAgC;IACpCL,kCAAkC;QAChC;YACEM,gBAAgBR;YAChBS,UAAU,CAAC,EAAEC,SAAS,EAAE;gBACtB,IAAI,CAACX,kBAAkBW,YAAY;oBACjC,OAAO;gBACT;gBACA,KAAK,MAAMC,QAAQD,UAAUE,QAAQ,GAAI;oBACvC,IAAIjB,YAAYgB,SAASA,KAAKE,WAAW,OAAO,SAAS;wBACvD;oBACF;oBAEA,MAAMC,SAASH,KAAKI,SAAS;oBAE7B,IAAIpB,YAAYmB,WAAWA,OAAOD,WAAW,OAAO,SAAS;wBAC3D;oBACF;oBAEA,MAAMG,eAAeF,QAAQC;oBAC7B,oFAAoF;oBACpF,IAAIpB,YAAYqB,iBAAiBA,aAAaH,WAAW,OAAO,SAAS;wBACvE;oBACF;oBAEA,OAAO;gBACT;gBACA,OAAO;YACT;YACAI,KAAK;YACLC,OAAO,CAAC,EAAEC,IAAI,EAAE;gBACd,OAAOA,KAAKC,CAAC,CAAC;YAChB;YACAC,UAAU,CAAC,EAAEC,MAAM,EAAE;gBACnBA,OAAOC,eAAe,CAAC3B,2BAA2B4B;YACpD;YACAC,OAAO;QACT;KACD;CACF;AAED,MAAMC,yBAAmE,CAACC;IACxE,OAAO;QACLC,oBAAoBD;QACpBE,SAAS,CAAC,EAAEC,kBAAkB,EAAE;YAC9B,MAAMC,UAA+C;gBACnD;oBACEC,WAAW1B;oBACX2B,UAAU;gBACZ;aACD;YAED,IAAI,CAACH,mBAAmBI,GAAG,CAAC,oBAAoB,CAACJ,mBAAmBI,GAAG,CAAC,gBAAgB;gBACtFH,QAAQI,IAAI,CAAC;oBACXH,WAAW7B;oBACX8B,UAAU;gBACZ;YACF;YAEA,OAAO;gBACLL,oBAAoBD;gBACpBS,sBAAsB;oBAAC/B;iBAAW;gBAClCgC,OACEP,mBAAmBI,GAAG,CAAC,oBAAoBJ,mBAAmBI,GAAG,CAAC,iBAC9D,EAAE,GACF;oBAACpC;oBAAUD;iBAAa;gBAC9BkC;gBACAO,WAAW;oBACTC,QAAQ;wBACNnC,4BAA4B;4BAC1B;gCACEoC,MAAMxC;gCACNiB,KAAK;gCACLwB,UAAU;oCAAC;oCAAc;oCAAS;oCAAa;iCAAK;gCACpDvB,OAAO,CAAC,EAAEC,IAAI,EAAE;oCACd,OAAOA,KAAKC,CAAC,CAAC;gCAChB;gCACAC,UAAU,CAAC,EAAEC,MAAM,EAAE;oCACnBA,OAAOC,eAAe,CAAC3B,2BAA2B4B;gCACpD;4BACF;yBACD;qBACF;gBACH;gBACAkB,cAAc;oBACZH,QAAQhC;gBACV;gBACAoC,eAAe;oBACbJ,QAAQhC;gBACV;YACF;QACF;IACF;AACF;AAEA,OAAO,MAAMqC,kCAAkC3C,sBAAsByB,wBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature.server.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/lists/checklist/feature.server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAOnE,eAAO,MAAM,gBAAgB,EAAE,6BAA6B,CAAC,SAAS,EAAE,SAAS,CA6BhF,CAAA"}
1
+ {"version":3,"file":"feature.server.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/lists/checklist/feature.server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAQnE,eAAO,MAAM,gBAAgB,EAAE,6BAA6B,CAAC,SAAS,EAAE,SAAS,CA8BhF,CAAA"}
@@ -2,12 +2,14 @@ import { ListItemNode, ListNode } from '@lexical/list';
2
2
  import { createNode } from '../../typeUtilities.js';
3
3
  import { ListHTMLConverter, ListItemHTMLConverter } from '../htmlConverter.js';
4
4
  import { ChecklistFeatureClientComponent } from './feature.client.js';
5
+ import { i18n } from './i18n.js';
5
6
  import { CHECK_LIST } from './markdownTransformers.js';
6
7
  export const ChecklistFeature = (props)=>{
7
8
  return {
8
9
  feature: ({ featureProviderMap })=>{
9
10
  return {
10
11
  ClientComponent: ChecklistFeatureClientComponent,
12
+ i18n,
11
13
  markdownTransformers: [
12
14
  CHECK_LIST
13
15
  ],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/field/features/lists/checklist/feature.server.ts"],"sourcesContent":["import { ListItemNode, ListNode } from '@lexical/list'\n\nimport type { FeatureProviderProviderServer } from '../../types.js'\n\nimport { createNode } from '../../typeUtilities.js'\nimport { ListHTMLConverter, ListItemHTMLConverter } from '../htmlConverter.js'\nimport { ChecklistFeatureClientComponent } from './feature.client.js'\nimport { CHECK_LIST } from './markdownTransformers.js'\n\nexport const ChecklistFeature: FeatureProviderProviderServer<undefined, undefined> = (props) => {\n return {\n feature: ({ featureProviderMap }) => {\n return {\n ClientComponent: ChecklistFeatureClientComponent,\n markdownTransformers: [CHECK_LIST],\n nodes:\n featureProviderMap.has('unorderedList') || featureProviderMap.has('orderedList')\n ? []\n : [\n createNode({\n converters: {\n html: ListHTMLConverter,\n },\n node: ListNode,\n }),\n createNode({\n converters: {\n html: ListItemHTMLConverter,\n },\n node: ListItemNode,\n }),\n ],\n serverFeatureProps: props,\n }\n },\n key: 'checklist',\n serverFeatureProps: props,\n }\n}\n"],"names":["ListItemNode","ListNode","createNode","ListHTMLConverter","ListItemHTMLConverter","ChecklistFeatureClientComponent","CHECK_LIST","ChecklistFeature","props","feature","featureProviderMap","ClientComponent","markdownTransformers","nodes","has","converters","html","node","serverFeatureProps","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,QAAQ,gBAAe;AAItD,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,iBAAiB,EAAEC,qBAAqB,QAAQ,sBAAqB;AAC9E,SAASC,+BAA+B,QAAQ,sBAAqB;AACrE,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,mBAAwE,CAACC;IACpF,OAAO;QACLC,SAAS,CAAC,EAAEC,kBAAkB,EAAE;YAC9B,OAAO;gBACLC,iBAAiBN;gBACjBO,sBAAsB;oBAACN;iBAAW;gBAClCO,OACEH,mBAAmBI,GAAG,CAAC,oBAAoBJ,mBAAmBI,GAAG,CAAC,iBAC9D,EAAE,GACF;oBACEZ,WAAW;wBACTa,YAAY;4BACVC,MAAMb;wBACR;wBACAc,MAAMhB;oBACR;oBACAC,WAAW;wBACTa,YAAY;4BACVC,MAAMZ;wBACR;wBACAa,MAAMjB;oBACR;iBACD;gBACPkB,oBAAoBV;YACtB;QACF;QACAW,KAAK;QACLD,oBAAoBV;IACtB;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/field/features/lists/checklist/feature.server.ts"],"sourcesContent":["import { ListItemNode, ListNode } from '@lexical/list'\n\nimport type { FeatureProviderProviderServer } from '../../types.js'\n\nimport { createNode } from '../../typeUtilities.js'\nimport { ListHTMLConverter, ListItemHTMLConverter } from '../htmlConverter.js'\nimport { ChecklistFeatureClientComponent } from './feature.client.js'\nimport { i18n } from './i18n.js'\nimport { CHECK_LIST } from './markdownTransformers.js'\n\nexport const ChecklistFeature: FeatureProviderProviderServer<undefined, undefined> = (props) => {\n return {\n feature: ({ featureProviderMap }) => {\n return {\n ClientComponent: ChecklistFeatureClientComponent,\n i18n,\n markdownTransformers: [CHECK_LIST],\n nodes:\n featureProviderMap.has('unorderedList') || featureProviderMap.has('orderedList')\n ? []\n : [\n createNode({\n converters: {\n html: ListHTMLConverter,\n },\n node: ListNode,\n }),\n createNode({\n converters: {\n html: ListItemHTMLConverter,\n },\n node: ListItemNode,\n }),\n ],\n serverFeatureProps: props,\n }\n },\n key: 'checklist',\n serverFeatureProps: props,\n }\n}\n"],"names":["ListItemNode","ListNode","createNode","ListHTMLConverter","ListItemHTMLConverter","ChecklistFeatureClientComponent","i18n","CHECK_LIST","ChecklistFeature","props","feature","featureProviderMap","ClientComponent","markdownTransformers","nodes","has","converters","html","node","serverFeatureProps","key"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,YAAY,EAAEC,QAAQ,QAAQ,gBAAe;AAItD,SAASC,UAAU,QAAQ,yBAAwB;AACnD,SAASC,iBAAiB,EAAEC,qBAAqB,QAAQ,sBAAqB;AAC9E,SAASC,+BAA+B,QAAQ,sBAAqB;AACrE,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,mBAAwE,CAACC;IACpF,OAAO;QACLC,SAAS,CAAC,EAAEC,kBAAkB,EAAE;YAC9B,OAAO;gBACLC,iBAAiBP;gBACjBC;gBACAO,sBAAsB;oBAACN;iBAAW;gBAClCO,OACEH,mBAAmBI,GAAG,CAAC,oBAAoBJ,mBAAmBI,GAAG,CAAC,iBAC9D,EAAE,GACF;oBACEb,WAAW;wBACTc,YAAY;4BACVC,MAAMd;wBACR;wBACAe,MAAMjB;oBACR;oBACAC,WAAW;wBACTc,YAAY;4BACVC,MAAMb;wBACR;wBACAc,MAAMlB;oBACR;iBACD;gBACPmB,oBAAoBV;YACtB;QACF;QACAW,KAAK;QACLD,oBAAoBV;IACtB;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GenericLanguages } from '@payloadcms/translations';
2
+ export declare const i18n: Partial<GenericLanguages>;
3
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../src/field/features/lists/checklist/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,eAAO,MAAM,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAiG1C,CAAA"}