@payloadcms/richtext-lexical 3.0.0-beta.85 → 3.0.0-beta.86

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 (754) hide show
  1. package/dist/cell/index.js +117 -127
  2. package/dist/cell/index.js.map +1 -1
  3. package/dist/exports/client/Component-DOSSWC76.js +2 -0
  4. package/dist/exports/client/Component-DOSSWC76.js.map +7 -0
  5. package/dist/exports/client/Component-MBLHTKDK.js +2 -0
  6. package/dist/exports/client/Component-MBLHTKDK.js.map +7 -0
  7. package/dist/exports/client/Field-KUSPHC7Q.js +2 -0
  8. package/dist/exports/client/Field-KUSPHC7Q.js.map +7 -0
  9. package/dist/exports/client/RelationshipComponent-3QWBV4GT.js +2 -0
  10. package/dist/exports/client/RelationshipComponent-3QWBV4GT.js.map +7 -0
  11. package/dist/exports/client/bundled.css +1 -1
  12. package/dist/exports/client/chunk-G5DTIOPI.js +2 -0
  13. package/dist/exports/client/chunk-G5DTIOPI.js.map +7 -0
  14. package/dist/exports/client/chunk-LGUXX2QH.js +2 -0
  15. package/dist/exports/client/chunk-LGUXX2QH.js.map +7 -0
  16. package/dist/exports/client/chunk-NI6Z4GBD.js +2 -0
  17. package/dist/exports/client/{chunk-SQHN3N6E.js.map → chunk-NI6Z4GBD.js.map} +2 -2
  18. package/dist/exports/client/chunk-OKMIHD2R.js +2 -0
  19. package/dist/exports/client/chunk-OKMIHD2R.js.map +7 -0
  20. package/dist/exports/client/chunk-TO2W7Q2G.js +2 -0
  21. package/dist/exports/client/chunk-TO2W7Q2G.js.map +7 -0
  22. package/dist/exports/client/chunk-V2LKLT2F.js +3 -0
  23. package/dist/exports/client/chunk-V2LKLT2F.js.map +7 -0
  24. package/dist/exports/client/component-3OFD6Q4Z.js +2 -0
  25. package/dist/exports/client/component-3OFD6Q4Z.js.map +7 -0
  26. package/dist/exports/client/component-LCAAX56T.js +2 -0
  27. package/dist/exports/client/component-LCAAX56T.js.map +7 -0
  28. package/dist/exports/client/component-LLWMZU6K.js +2 -0
  29. package/dist/exports/client/component-LLWMZU6K.js.map +7 -0
  30. package/dist/exports/client/componentInline-72VZAAHP.js +2 -0
  31. package/dist/exports/client/componentInline-72VZAAHP.js.map +7 -0
  32. package/dist/exports/client/index.js +9 -9
  33. package/dist/exports/client/index.js.map +3 -3
  34. package/dist/exports/server/migrate.js +0 -1
  35. package/dist/exports/server/migrate.js.map +1 -1
  36. package/dist/features/align/client/index.js +151 -134
  37. package/dist/features/align/client/index.js.map +1 -1
  38. package/dist/features/align/client/toolbarAlignGroup.d.ts.map +1 -1
  39. package/dist/features/align/client/toolbarAlignGroup.js +10 -9
  40. package/dist/features/align/client/toolbarAlignGroup.js.map +1 -1
  41. package/dist/features/align/server/i18n.js +192 -193
  42. package/dist/features/align/server/i18n.js.map +1 -1
  43. package/dist/features/align/server/index.js +5 -6
  44. package/dist/features/align/server/index.js.map +1 -1
  45. package/dist/features/blockquote/client/index.js +60 -65
  46. package/dist/features/blockquote/client/index.js.map +1 -1
  47. package/dist/features/blockquote/markdownTransformer.js +28 -34
  48. package/dist/features/blockquote/markdownTransformer.js.map +1 -1
  49. package/dist/features/blockquote/server/i18n.js +96 -97
  50. package/dist/features/blockquote/server/i18n.js.map +1 -1
  51. package/dist/features/blockquote/server/index.js +38 -37
  52. package/dist/features/blockquote/server/index.js.map +1 -1
  53. package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
  54. package/dist/features/blocks/client/component/BlockContent.js +166 -172
  55. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  56. package/dist/features/blocks/client/component/FormSavePlugin.d.ts.map +1 -1
  57. package/dist/features/blocks/client/component/FormSavePlugin.js +46 -22
  58. package/dist/features/blocks/client/component/FormSavePlugin.js.map +1 -1
  59. package/dist/features/blocks/client/component/index.js +130 -142
  60. package/dist/features/blocks/client/component/index.js.map +1 -1
  61. package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts.map +1 -1
  62. package/dist/features/blocks/client/component/removeEmptyArrayValues.js +12 -8
  63. package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +1 -1
  64. package/dist/features/blocks/client/componentInline/index.js +106 -122
  65. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  66. package/dist/features/blocks/client/index.js +149 -142
  67. package/dist/features/blocks/client/index.js.map +1 -1
  68. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  69. package/dist/features/blocks/client/nodes/BlocksNode.js +41 -40
  70. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  71. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
  72. package/dist/features/blocks/client/nodes/InlineBlocksNode.js +31 -30
  73. package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
  74. package/dist/features/blocks/client/plugin/commands.d.ts.map +1 -1
  75. package/dist/features/blocks/client/plugin/commands.js +2 -1
  76. package/dist/features/blocks/client/plugin/commands.js.map +1 -1
  77. package/dist/features/blocks/client/plugin/index.js +179 -106
  78. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  79. package/dist/features/blocks/server/graphQLPopulationPromise.js +41 -28
  80. package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
  81. package/dist/features/blocks/server/i18n.js +288 -289
  82. package/dist/features/blocks/server/i18n.js.map +1 -1
  83. package/dist/features/blocks/server/index.js +149 -151
  84. package/dist/features/blocks/server/index.js.map +1 -1
  85. package/dist/features/blocks/server/nodes/BlocksNode.js +76 -73
  86. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  87. package/dist/features/blocks/server/nodes/InlineBlocksNode.js +78 -76
  88. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  89. package/dist/features/blocks/server/validate.js +45 -34
  90. package/dist/features/blocks/server/validate.js.map +1 -1
  91. package/dist/features/converters/html/converter/converters/linebreak.js +4 -7
  92. package/dist/features/converters/html/converter/converters/linebreak.js.map +1 -1
  93. package/dist/features/converters/html/converter/converters/paragraph.js +24 -19
  94. package/dist/features/converters/html/converter/converters/paragraph.js.map +1 -1
  95. package/dist/features/converters/html/converter/converters/text.js +28 -29
  96. package/dist/features/converters/html/converter/converters/text.js.map +1 -1
  97. package/dist/features/converters/html/converter/defaultConverters.js +1 -6
  98. package/dist/features/converters/html/converter/defaultConverters.js.map +1 -1
  99. package/dist/features/converters/html/converter/index.js +66 -51
  100. package/dist/features/converters/html/converter/index.js.map +1 -1
  101. package/dist/features/converters/html/converter/types.js +1 -2
  102. package/dist/features/converters/html/converter/types.js.map +1 -1
  103. package/dist/features/converters/html/field/index.js +134 -139
  104. package/dist/features/converters/html/field/index.js.map +1 -1
  105. package/dist/features/converters/html/index.js +2 -3
  106. package/dist/features/converters/html/index.js.map +1 -1
  107. package/dist/features/createClientComponent.js +7 -6
  108. package/dist/features/createClientComponent.js.map +1 -1
  109. package/dist/features/createFeaturePropComponent.js +14 -13
  110. package/dist/features/createFeaturePropComponent.js.map +1 -1
  111. package/dist/features/debug/testRecorder/client/index.js +5 -7
  112. package/dist/features/debug/testRecorder/client/index.js.map +1 -1
  113. package/dist/features/debug/testRecorder/client/plugin/index.js +518 -402
  114. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  115. package/dist/features/debug/testRecorder/server/index.js +4 -5
  116. package/dist/features/debug/testRecorder/server/index.js.map +1 -1
  117. package/dist/features/debug/treeView/client/index.js +5 -7
  118. package/dist/features/debug/treeView/client/index.js.map +1 -1
  119. package/dist/features/debug/treeView/client/plugin/index.js +21 -11
  120. package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
  121. package/dist/features/debug/treeView/server/index.js +4 -5
  122. package/dist/features/debug/treeView/server/index.js.map +1 -1
  123. package/dist/features/experimental_table/client/index.js +41 -58
  124. package/dist/features/experimental_table/client/index.js.map +1 -1
  125. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +714 -560
  126. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  127. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +295 -301
  128. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  129. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +0 -7
  130. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  131. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +228 -159
  132. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  133. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts +1 -1
  134. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
  135. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +129 -82
  136. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  137. package/dist/features/experimental_table/client/utils/debounce.d.ts.map +1 -1
  138. package/dist/features/experimental_table/client/utils/debounce.js +108 -89
  139. package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
  140. package/dist/features/experimental_table/client/utils/useDebounce.d.ts.map +1 -1
  141. package/dist/features/experimental_table/client/utils/useDebounce.js +11 -13
  142. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  143. package/dist/features/experimental_table/server/index.js +127 -114
  144. package/dist/features/experimental_table/server/index.js.map +1 -1
  145. package/dist/features/format/bold/feature.client.js +34 -35
  146. package/dist/features/format/bold/feature.client.js.map +1 -1
  147. package/dist/features/format/bold/feature.server.js +14 -18
  148. package/dist/features/format/bold/feature.server.js.map +1 -1
  149. package/dist/features/format/bold/markdownTransformers.js +14 -25
  150. package/dist/features/format/bold/markdownTransformers.js.map +1 -1
  151. package/dist/features/format/inlineCode/feature.client.js +26 -28
  152. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  153. package/dist/features/format/inlineCode/feature.server.js +5 -8
  154. package/dist/features/format/inlineCode/feature.server.js.map +1 -1
  155. package/dist/features/format/inlineCode/markdownTransformers.js +3 -6
  156. package/dist/features/format/inlineCode/markdownTransformers.js.map +1 -1
  157. package/dist/features/format/italic/feature.client.js +26 -29
  158. package/dist/features/format/italic/feature.client.js.map +1 -1
  159. package/dist/features/format/italic/feature.server.js +5 -9
  160. package/dist/features/format/italic/feature.server.js.map +1 -1
  161. package/dist/features/format/italic/markdownTransformers.js +7 -12
  162. package/dist/features/format/italic/markdownTransformers.js.map +1 -1
  163. package/dist/features/format/shared/toolbarFormatGroup.d.ts.map +1 -1
  164. package/dist/features/format/shared/toolbarFormatGroup.js +9 -8
  165. package/dist/features/format/shared/toolbarFormatGroup.js.map +1 -1
  166. package/dist/features/format/strikethrough/feature.client.js +26 -28
  167. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  168. package/dist/features/format/strikethrough/feature.server.js +5 -8
  169. package/dist/features/format/strikethrough/feature.server.js.map +1 -1
  170. package/dist/features/format/strikethrough/markdownTransformers.js +3 -6
  171. package/dist/features/format/strikethrough/markdownTransformers.js.map +1 -1
  172. package/dist/features/format/subscript/feature.client.js +25 -25
  173. package/dist/features/format/subscript/feature.client.js.map +1 -1
  174. package/dist/features/format/subscript/feature.server.js +4 -5
  175. package/dist/features/format/subscript/feature.server.js.map +1 -1
  176. package/dist/features/format/superscript/feature.client.js +25 -25
  177. package/dist/features/format/superscript/feature.client.js.map +1 -1
  178. package/dist/features/format/superscript/feature.server.js +4 -5
  179. package/dist/features/format/superscript/feature.server.js.map +1 -1
  180. package/dist/features/format/underline/feature.client.js +25 -25
  181. package/dist/features/format/underline/feature.client.js.map +1 -1
  182. package/dist/features/format/underline/feature.server.js +4 -5
  183. package/dist/features/format/underline/feature.server.js.map +1 -1
  184. package/dist/features/heading/client/index.js +86 -90
  185. package/dist/features/heading/client/index.js.map +1 -1
  186. package/dist/features/heading/markdownTransformer.js +22 -25
  187. package/dist/features/heading/markdownTransformer.js.map +1 -1
  188. package/dist/features/heading/server/i18n.js +96 -97
  189. package/dist/features/heading/server/i18n.js.map +1 -1
  190. package/dist/features/heading/server/index.js +49 -51
  191. package/dist/features/heading/server/index.js.map +1 -1
  192. package/dist/features/horizontalRule/client/component/index.js +81 -51
  193. package/dist/features/horizontalRule/client/component/index.js.map +1 -1
  194. package/dist/features/horizontalRule/client/index.js +48 -57
  195. package/dist/features/horizontalRule/client/index.js.map +1 -1
  196. package/dist/features/horizontalRule/client/markdownTransformer.js +15 -18
  197. package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
  198. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
  199. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +33 -30
  200. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  201. package/dist/features/horizontalRule/client/plugin/index.js +31 -20
  202. package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
  203. package/dist/features/horizontalRule/server/i18n.js +96 -97
  204. package/dist/features/horizontalRule/server/i18n.js.map +1 -1
  205. package/dist/features/horizontalRule/server/index.js +17 -24
  206. package/dist/features/horizontalRule/server/index.js.map +1 -1
  207. package/dist/features/horizontalRule/server/markdownTransformer.js +15 -18
  208. package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
  209. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +71 -66
  210. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  211. package/dist/features/indent/client/index.js +52 -47
  212. package/dist/features/indent/client/index.js.map +1 -1
  213. package/dist/features/indent/client/toolbarIndentGroup.d.ts.map +1 -1
  214. package/dist/features/indent/client/toolbarIndentGroup.js +9 -8
  215. package/dist/features/indent/client/toolbarIndentGroup.js.map +1 -1
  216. package/dist/features/indent/server/i18n.js +128 -129
  217. package/dist/features/indent/server/i18n.js.map +1 -1
  218. package/dist/features/indent/server/index.js +5 -6
  219. package/dist/features/indent/server/index.js.map +1 -1
  220. package/dist/features/link/client/index.js +78 -83
  221. package/dist/features/link/client/index.js.map +1 -1
  222. package/dist/features/link/client/plugins/autoLink/index.js +267 -271
  223. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  224. package/dist/features/link/client/plugins/clickableLink/index.js +3 -3
  225. package/dist/features/link/client/plugins/clickableLink/index.js.map +1 -1
  226. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -1
  227. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js +2 -1
  228. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
  229. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +254 -276
  230. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  231. package/dist/features/link/client/plugins/floatingLinkEditor/index.js +8 -6
  232. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  233. package/dist/features/link/client/plugins/floatingLinkEditor/types.js +1 -2
  234. package/dist/features/link/client/plugins/floatingLinkEditor/types.js.map +1 -1
  235. package/dist/features/link/client/plugins/link/index.js +50 -41
  236. package/dist/features/link/client/plugins/link/index.js.map +1 -1
  237. package/dist/features/link/markdownTransformer.js +38 -39
  238. package/dist/features/link/markdownTransformer.js.map +1 -1
  239. package/dist/features/link/nodes/AutoLinkNode.js +57 -56
  240. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  241. package/dist/features/link/nodes/LinkNode.js +277 -276
  242. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  243. package/dist/features/link/nodes/types.js +1 -2
  244. package/dist/features/link/nodes/types.js.map +1 -1
  245. package/dist/features/link/server/baseFields.js +118 -88
  246. package/dist/features/link/server/baseFields.js.map +1 -1
  247. package/dist/features/link/server/graphQLPopulationPromise.js +42 -28
  248. package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -1
  249. package/dist/features/link/server/i18n.js +96 -97
  250. package/dist/features/link/server/i18n.js.map +1 -1
  251. package/dist/features/link/server/index.js +120 -114
  252. package/dist/features/link/server/index.js.map +1 -1
  253. package/dist/features/link/server/transformExtraFields.js +15 -15
  254. package/dist/features/link/server/transformExtraFields.js.map +1 -1
  255. package/dist/features/link/server/validate.js +37 -26
  256. package/dist/features/link/server/validate.js.map +1 -1
  257. package/dist/features/lists/checklist/client/index.js +77 -85
  258. package/dist/features/lists/checklist/client/index.js.map +1 -1
  259. package/dist/features/lists/checklist/client/plugin/index.js +3 -3
  260. package/dist/features/lists/checklist/client/plugin/index.js.map +1 -1
  261. package/dist/features/lists/checklist/markdownTransformers.js +7 -11
  262. package/dist/features/lists/checklist/markdownTransformers.js.map +1 -1
  263. package/dist/features/lists/checklist/server/i18n.js +96 -97
  264. package/dist/features/lists/checklist/server/i18n.js.map +1 -1
  265. package/dist/features/lists/checklist/server/index.js +21 -25
  266. package/dist/features/lists/checklist/server/index.js.map +1 -1
  267. package/dist/features/lists/htmlConverter.js +54 -43
  268. package/dist/features/lists/htmlConverter.js.map +1 -1
  269. package/dist/features/lists/orderedList/client/index.js +71 -77
  270. package/dist/features/lists/orderedList/client/index.js.map +1 -1
  271. package/dist/features/lists/orderedList/markdownTransformer.js +7 -11
  272. package/dist/features/lists/orderedList/markdownTransformer.js.map +1 -1
  273. package/dist/features/lists/orderedList/server/i18n.js +96 -97
  274. package/dist/features/lists/orderedList/server/i18n.js.map +1 -1
  275. package/dist/features/lists/orderedList/server/index.js +21 -25
  276. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  277. package/dist/features/lists/plugin/index.js +3 -3
  278. package/dist/features/lists/plugin/index.js.map +1 -1
  279. package/dist/features/lists/shared/markdown.js +48 -49
  280. package/dist/features/lists/shared/markdown.js.map +1 -1
  281. package/dist/features/lists/shared/slashMenuListGroup.js +9 -8
  282. package/dist/features/lists/shared/slashMenuListGroup.js.map +1 -1
  283. package/dist/features/lists/unorderedList/client/index.js +68 -76
  284. package/dist/features/lists/unorderedList/client/index.js.map +1 -1
  285. package/dist/features/lists/unorderedList/markdownTransformer.js +7 -11
  286. package/dist/features/lists/unorderedList/markdownTransformer.js.map +1 -1
  287. package/dist/features/lists/unorderedList/server/i18n.js +96 -97
  288. package/dist/features/lists/unorderedList/server/i18n.js.map +1 -1
  289. package/dist/features/lists/unorderedList/server/index.js +17 -23
  290. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  291. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +18 -17
  292. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -1
  293. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +30 -29
  294. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -1
  295. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +21 -20
  296. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -1
  297. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +21 -19
  298. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -1
  299. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +18 -17
  300. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -1
  301. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +24 -23
  302. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -1
  303. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +20 -21
  304. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
  305. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +1 -10
  306. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -1
  307. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +69 -61
  308. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
  309. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js +1 -2
  310. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -1
  311. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +5 -7
  312. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -1
  313. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +42 -43
  314. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -1
  315. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -1
  316. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +11 -11
  317. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  318. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +64 -59
  319. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  320. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +19 -19
  321. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
  322. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js +20 -25
  323. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
  324. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js +28 -30
  325. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -1
  326. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js +26 -26
  327. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
  328. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js +22 -21
  329. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
  330. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +22 -22
  331. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
  332. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js +12 -13
  333. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
  334. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js +23 -23
  335. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
  336. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +22 -22
  337. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
  338. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js +15 -16
  339. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
  340. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js +1 -13
  341. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -1
  342. package/dist/features/migrations/slateToLexical/converter/index.js +105 -98
  343. package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
  344. package/dist/features/migrations/slateToLexical/converter/types.js +1 -2
  345. package/dist/features/migrations/slateToLexical/converter/types.js.map +1 -1
  346. package/dist/features/migrations/slateToLexical/feature.client.js +7 -7
  347. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  348. package/dist/features/migrations/slateToLexical/feature.server.js +43 -44
  349. package/dist/features/migrations/slateToLexical/feature.server.js.map +1 -1
  350. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -1
  351. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +11 -11
  352. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  353. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +64 -59
  354. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  355. package/dist/features/paragraph/client/index.js +58 -61
  356. package/dist/features/paragraph/client/index.js.map +1 -1
  357. package/dist/features/paragraph/server/i18n.js +128 -129
  358. package/dist/features/paragraph/server/i18n.js.map +1 -1
  359. package/dist/features/paragraph/server/index.js +6 -7
  360. package/dist/features/paragraph/server/index.js.map +1 -1
  361. package/dist/features/relationship/client/components/RelationshipComponent.js +141 -149
  362. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  363. package/dist/features/relationship/client/drawer/commands.js +0 -1
  364. package/dist/features/relationship/client/drawer/commands.js.map +1 -1
  365. package/dist/features/relationship/client/drawer/index.js +138 -67
  366. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  367. package/dist/features/relationship/client/index.js +53 -59
  368. package/dist/features/relationship/client/index.js.map +1 -1
  369. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  370. package/dist/features/relationship/client/nodes/RelationshipNode.js +60 -59
  371. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  372. package/dist/features/relationship/client/plugins/index.js +90 -35
  373. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  374. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.d.ts.map +1 -1
  375. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +97 -26
  376. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
  377. package/dist/features/relationship/server/graphQLPopulationPromise.js +34 -26
  378. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  379. package/dist/features/relationship/server/i18n.js +96 -97
  380. package/dist/features/relationship/server/i18n.js.map +1 -1
  381. package/dist/features/relationship/server/index.js +48 -44
  382. package/dist/features/relationship/server/index.js.map +1 -1
  383. package/dist/features/relationship/server/nodes/RelationshipNode.js +90 -87
  384. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  385. package/dist/features/shared/slashMenu/basicGroup.js +9 -8
  386. package/dist/features/shared/slashMenu/basicGroup.js.map +1 -1
  387. package/dist/features/shared/toolbar/addDropdownGroup.js +8 -9
  388. package/dist/features/shared/toolbar/addDropdownGroup.js.map +1 -1
  389. package/dist/features/shared/toolbar/featureButtonsGroup.js +7 -8
  390. package/dist/features/shared/toolbar/featureButtonsGroup.js.map +1 -1
  391. package/dist/features/shared/toolbar/textDropdownGroup.js +8 -9
  392. package/dist/features/shared/toolbar/textDropdownGroup.js.map +1 -1
  393. package/dist/features/toolbars/fixed/client/Toolbar/index.js +264 -187
  394. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  395. package/dist/features/toolbars/fixed/client/index.js +5 -7
  396. package/dist/features/toolbars/fixed/client/index.js.map +1 -1
  397. package/dist/features/toolbars/fixed/server/index.js +14 -13
  398. package/dist/features/toolbars/fixed/server/index.js.map +1 -1
  399. package/dist/features/toolbars/inline/client/Toolbar/index.js +374 -286
  400. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  401. package/dist/features/toolbars/inline/client/index.js +5 -7
  402. package/dist/features/toolbars/inline/client/index.js.map +1 -1
  403. package/dist/features/toolbars/inline/server/index.js +4 -5
  404. package/dist/features/toolbars/inline/server/index.js.map +1 -1
  405. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts +1 -1
  406. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  407. package/dist/features/toolbars/shared/ToolbarButton/index.js +75 -97
  408. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  409. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +190 -211
  410. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  411. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +1 -1
  412. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  413. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +289 -124
  414. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  415. package/dist/features/toolbars/types.js +1 -2
  416. package/dist/features/toolbars/types.js.map +1 -1
  417. package/dist/features/typeUtilities.js +2 -3
  418. package/dist/features/typeUtilities.js.map +1 -1
  419. package/dist/features/typesClient.js +1 -2
  420. package/dist/features/typesClient.js.map +1 -1
  421. package/dist/features/typesServer.js +1 -2
  422. package/dist/features/typesServer.js.map +1 -1
  423. package/dist/features/upload/client/component/index.js +208 -224
  424. package/dist/features/upload/client/component/index.js.map +1 -1
  425. package/dist/features/upload/client/drawer/commands.js +1 -1
  426. package/dist/features/upload/client/drawer/commands.js.map +1 -1
  427. package/dist/features/upload/client/drawer/index.js +107 -58
  428. package/dist/features/upload/client/drawer/index.js.map +1 -1
  429. package/dist/features/upload/client/feature.client.js +51 -61
  430. package/dist/features/upload/client/feature.client.js.map +1 -1
  431. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  432. package/dist/features/upload/client/nodes/UploadNode.js +76 -73
  433. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  434. package/dist/features/upload/client/plugin/index.js +67 -39
  435. package/dist/features/upload/client/plugin/index.js.map +1 -1
  436. package/dist/features/upload/server/feature.server.js +190 -171
  437. package/dist/features/upload/server/feature.server.js.map +1 -1
  438. package/dist/features/upload/server/graphQLPopulationPromise.js +60 -47
  439. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  440. package/dist/features/upload/server/i18n.js +96 -97
  441. package/dist/features/upload/server/i18n.js.map +1 -1
  442. package/dist/features/upload/server/nodes/UploadNode.js +113 -108
  443. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  444. package/dist/features/upload/server/validate.js +53 -40
  445. package/dist/features/upload/server/validate.js.map +1 -1
  446. package/dist/field/Field.js +124 -105
  447. package/dist/field/Field.js.map +1 -1
  448. package/dist/field/bundled.css +1 -0
  449. package/dist/field/index.js +92 -36
  450. package/dist/field/index.js.map +1 -1
  451. package/dist/i18n.js +160 -161
  452. package/dist/i18n.js.map +1 -1
  453. package/dist/index.js +670 -623
  454. package/dist/index.js.map +1 -1
  455. package/dist/lexical/EditorPlugin.d.ts.map +1 -1
  456. package/dist/lexical/EditorPlugin.js +15 -10
  457. package/dist/lexical/EditorPlugin.js.map +1 -1
  458. package/dist/lexical/LexicalEditor.js +206 -161
  459. package/dist/lexical/LexicalEditor.js.map +1 -1
  460. package/dist/lexical/LexicalProvider.js +83 -82
  461. package/dist/lexical/LexicalProvider.js.map +1 -1
  462. package/dist/lexical/config/client/EditorConfigProvider.js +76 -79
  463. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  464. package/dist/lexical/config/client/default.js +3 -3
  465. package/dist/lexical/config/client/default.js.map +1 -1
  466. package/dist/lexical/config/client/loader.js +42 -39
  467. package/dist/lexical/config/client/loader.js.map +1 -1
  468. package/dist/lexical/config/client/sanitize.js +165 -165
  469. package/dist/lexical/config/client/sanitize.js.map +1 -1
  470. package/dist/lexical/config/server/default.js +5 -27
  471. package/dist/lexical/config/server/default.js.map +1 -1
  472. package/dist/lexical/config/server/loader.js +103 -103
  473. package/dist/lexical/config/server/loader.js.map +1 -1
  474. package/dist/lexical/config/server/sanitize.js +98 -99
  475. package/dist/lexical/config/server/sanitize.js.map +1 -1
  476. package/dist/lexical/config/types.js +1 -2
  477. package/dist/lexical/config/types.js.map +1 -1
  478. package/dist/lexical/nodes/index.js +9 -8
  479. package/dist/lexical/nodes/index.js.map +1 -1
  480. package/dist/lexical/plugins/MarkdownShortcut/index.js +17 -5
  481. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  482. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +384 -361
  483. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  484. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +223 -160
  485. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  486. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -2
  487. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  488. package/dist/lexical/plugins/SlashMenu/index.js +191 -179
  489. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  490. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.d.ts.map +1 -1
  491. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +41 -26
  492. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  493. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +164 -129
  494. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  495. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
  496. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +11 -10
  497. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
  498. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts.map +1 -1
  499. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +11 -10
  500. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
  501. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts.map +1 -1
  502. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +27 -23
  503. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -1
  504. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +331 -300
  505. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  506. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +110 -97
  507. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  508. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -1
  509. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js +23 -16
  510. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -1
  511. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -1
  512. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +18 -27
  513. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
  514. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.d.ts.map +1 -1
  515. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js +15 -11
  516. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -1
  517. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -1
  518. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +133 -118
  519. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  520. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -1
  521. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +3 -2
  522. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
  523. package/dist/lexical/plugins/handles/utils/isOnHandleElement.d.ts.map +1 -1
  524. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js +3 -2
  525. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -1
  526. package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  527. package/dist/lexical/plugins/handles/utils/setHandlePosition.js +26 -25
  528. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  529. package/dist/lexical/theme/EditorTheme.d.ts.map +1 -1
  530. package/dist/lexical/theme/EditorTheme.js +97 -102
  531. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  532. package/dist/lexical/ui/ContentEditable.d.ts.map +1 -1
  533. package/dist/lexical/ui/ContentEditable.js +27 -10
  534. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  535. package/dist/lexical/ui/icons/AI/index.d.ts.map +1 -1
  536. package/dist/lexical/ui/icons/AI/index.js +31 -33
  537. package/dist/lexical/ui/icons/AI/index.js.map +1 -1
  538. package/dist/lexical/ui/icons/Add/index.d.ts.map +1 -1
  539. package/dist/lexical/ui/icons/Add/index.js +16 -18
  540. package/dist/lexical/ui/icons/Add/index.js.map +1 -1
  541. package/dist/lexical/ui/icons/AlignCenter/index.d.ts.map +1 -1
  542. package/dist/lexical/ui/icons/AlignCenter/index.js +25 -28
  543. package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -1
  544. package/dist/lexical/ui/icons/AlignJustify/index.d.ts.map +1 -1
  545. package/dist/lexical/ui/icons/AlignJustify/index.js +25 -28
  546. package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -1
  547. package/dist/lexical/ui/icons/AlignLeft/index.d.ts.map +1 -1
  548. package/dist/lexical/ui/icons/AlignLeft/index.js +25 -28
  549. package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -1
  550. package/dist/lexical/ui/icons/AlignRight/index.d.ts.map +1 -1
  551. package/dist/lexical/ui/icons/AlignRight/index.js +25 -28
  552. package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -1
  553. package/dist/lexical/ui/icons/Block/index.d.ts.map +1 -1
  554. package/dist/lexical/ui/icons/Block/index.js +34 -37
  555. package/dist/lexical/ui/icons/Block/index.js.map +1 -1
  556. package/dist/lexical/ui/icons/Blockquote/index.d.ts.map +1 -1
  557. package/dist/lexical/ui/icons/Blockquote/index.js +16 -15
  558. package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -1
  559. package/dist/lexical/ui/icons/Bold/index.d.ts.map +1 -1
  560. package/dist/lexical/ui/icons/Bold/index.js +16 -15
  561. package/dist/lexical/ui/icons/Bold/index.js.map +1 -1
  562. package/dist/lexical/ui/icons/Checklist/index.d.ts.map +1 -1
  563. package/dist/lexical/ui/icons/Checklist/index.js +24 -26
  564. package/dist/lexical/ui/icons/Checklist/index.js.map +1 -1
  565. package/dist/lexical/ui/icons/Code/index.d.ts.map +1 -1
  566. package/dist/lexical/ui/icons/Code/index.js +19 -21
  567. package/dist/lexical/ui/icons/Code/index.js.map +1 -1
  568. package/dist/lexical/ui/icons/CodeBlock/index.d.ts.map +1 -1
  569. package/dist/lexical/ui/icons/CodeBlock/index.js +19 -21
  570. package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
  571. package/dist/lexical/ui/icons/H1/index.d.ts.map +1 -1
  572. package/dist/lexical/ui/icons/H1/index.js +16 -15
  573. package/dist/lexical/ui/icons/H1/index.js.map +1 -1
  574. package/dist/lexical/ui/icons/H2/index.d.ts.map +1 -1
  575. package/dist/lexical/ui/icons/H2/index.js +16 -15
  576. package/dist/lexical/ui/icons/H2/index.js.map +1 -1
  577. package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
  578. package/dist/lexical/ui/icons/H3/index.js +16 -15
  579. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  580. package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -1
  581. package/dist/lexical/ui/icons/H4/index.js +16 -15
  582. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  583. package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -1
  584. package/dist/lexical/ui/icons/H5/index.js +16 -15
  585. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  586. package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -1
  587. package/dist/lexical/ui/icons/H6/index.js +16 -15
  588. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  589. package/dist/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -1
  590. package/dist/lexical/ui/icons/HorizontalRule/index.js +19 -18
  591. package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
  592. package/dist/lexical/ui/icons/IndentDecrease/index.d.ts.map +1 -1
  593. package/dist/lexical/ui/icons/IndentDecrease/index.js +28 -32
  594. package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
  595. package/dist/lexical/ui/icons/IndentIncrease/index.d.ts.map +1 -1
  596. package/dist/lexical/ui/icons/IndentIncrease/index.js +28 -32
  597. package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
  598. package/dist/lexical/ui/icons/InlineBlocks/index.d.ts.map +1 -1
  599. package/dist/lexical/ui/icons/InlineBlocks/index.js +18 -17
  600. package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -1
  601. package/dist/lexical/ui/icons/Italic/index.d.ts.map +1 -1
  602. package/dist/lexical/ui/icons/Italic/index.js +16 -15
  603. package/dist/lexical/ui/icons/Italic/index.js.map +1 -1
  604. package/dist/lexical/ui/icons/Link/index.d.ts.map +1 -1
  605. package/dist/lexical/ui/icons/Link/index.js +17 -16
  606. package/dist/lexical/ui/icons/Link/index.js.map +1 -1
  607. package/dist/lexical/ui/icons/Meatballs/index.d.ts.map +1 -1
  608. package/dist/lexical/ui/icons/Meatballs/index.js +19 -22
  609. package/dist/lexical/ui/icons/Meatballs/index.js.map +1 -1
  610. package/dist/lexical/ui/icons/OrderedList/index.d.ts.map +1 -1
  611. package/dist/lexical/ui/icons/OrderedList/index.js +31 -36
  612. package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -1
  613. package/dist/lexical/ui/icons/Relationship/index.d.ts.map +1 -1
  614. package/dist/lexical/ui/icons/Relationship/index.js +31 -33
  615. package/dist/lexical/ui/icons/Relationship/index.js.map +1 -1
  616. package/dist/lexical/ui/icons/Strikethrough/index.d.ts.map +1 -1
  617. package/dist/lexical/ui/icons/Strikethrough/index.js +19 -21
  618. package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -1
  619. package/dist/lexical/ui/icons/Subscript/index.d.ts.map +1 -1
  620. package/dist/lexical/ui/icons/Subscript/index.js +16 -15
  621. package/dist/lexical/ui/icons/Subscript/index.js.map +1 -1
  622. package/dist/lexical/ui/icons/Superscript/index.d.ts.map +1 -1
  623. package/dist/lexical/ui/icons/Superscript/index.js +16 -15
  624. package/dist/lexical/ui/icons/Superscript/index.js.map +1 -1
  625. package/dist/lexical/ui/icons/Table/index.d.ts.map +1 -1
  626. package/dist/lexical/ui/icons/Table/index.js +17 -16
  627. package/dist/lexical/ui/icons/Table/index.js.map +1 -1
  628. package/dist/lexical/ui/icons/Text/index.d.ts.map +1 -1
  629. package/dist/lexical/ui/icons/Text/index.js +16 -15
  630. package/dist/lexical/ui/icons/Text/index.js.map +1 -1
  631. package/dist/lexical/ui/icons/Underline/index.d.ts.map +1 -1
  632. package/dist/lexical/ui/icons/Underline/index.js +19 -21
  633. package/dist/lexical/ui/icons/Underline/index.js.map +1 -1
  634. package/dist/lexical/ui/icons/UnorderedList/index.d.ts.map +1 -1
  635. package/dist/lexical/ui/icons/UnorderedList/index.js +46 -52
  636. package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -1
  637. package/dist/lexical/ui/icons/Upload/index.d.ts.map +1 -1
  638. package/dist/lexical/ui/icons/Upload/index.js +28 -31
  639. package/dist/lexical/ui/icons/Upload/index.js.map +1 -1
  640. package/dist/lexical/utils/canUseDOM.d.ts.map +1 -1
  641. package/dist/lexical/utils/canUseDOM.js +2 -1
  642. package/dist/lexical/utils/canUseDOM.js.map +1 -1
  643. package/dist/lexical/utils/environment.d.ts.map +1 -1
  644. package/dist/lexical/utils/environment.js +2 -1
  645. package/dist/lexical/utils/environment.js.map +1 -1
  646. package/dist/lexical/utils/getDOMRangeRect.d.ts.map +1 -1
  647. package/dist/lexical/utils/getDOMRangeRect.js +13 -12
  648. package/dist/lexical/utils/getDOMRangeRect.js.map +1 -1
  649. package/dist/lexical/utils/getSelectedNode.d.ts.map +1 -1
  650. package/dist/lexical/utils/getSelectedNode.js +18 -13
  651. package/dist/lexical/utils/getSelectedNode.js.map +1 -1
  652. package/dist/lexical/utils/guard.d.ts.map +1 -1
  653. package/dist/lexical/utils/guard.js +3 -2
  654. package/dist/lexical/utils/guard.js.map +1 -1
  655. package/dist/lexical/utils/joinClasses.d.ts.map +1 -1
  656. package/dist/lexical/utils/joinClasses.js +3 -2
  657. package/dist/lexical/utils/joinClasses.js.map +1 -1
  658. package/dist/lexical/utils/markdown/createBlockNode.js +9 -10
  659. package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
  660. package/dist/lexical/utils/nodeFormat.js +58 -59
  661. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  662. package/dist/lexical/utils/point.d.ts.map +1 -1
  663. package/dist/lexical/utils/point.js +40 -32
  664. package/dist/lexical/utils/point.js.map +1 -1
  665. package/dist/lexical/utils/rect.d.ts.map +1 -1
  666. package/dist/lexical/utils/rect.js +167 -134
  667. package/dist/lexical/utils/rect.js.map +1 -1
  668. package/dist/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
  669. package/dist/lexical/utils/setFloatingElemPosition.js +56 -45
  670. package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
  671. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts.map +1 -1
  672. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js +23 -22
  673. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -1
  674. package/dist/lexical/utils/swipe.d.ts.map +1 -1
  675. package/dist/lexical/utils/swipe.js +82 -83
  676. package/dist/lexical/utils/swipe.js.map +1 -1
  677. package/dist/lexical/utils/url.js +23 -22
  678. package/dist/lexical/utils/url.js.map +1 -1
  679. package/dist/nodeTypes.js +1 -2
  680. package/dist/nodeTypes.js.map +1 -1
  681. package/dist/populateGraphQL/defaultValue.js +24 -29
  682. package/dist/populateGraphQL/defaultValue.js.map +1 -1
  683. package/dist/populateGraphQL/populate.js +35 -25
  684. package/dist/populateGraphQL/populate.js.map +1 -1
  685. package/dist/populateGraphQL/populateLexicalPopulationPromises.js +47 -32
  686. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  687. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js +39 -25
  688. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  689. package/dist/types.js +1 -2
  690. package/dist/types.js.map +1 -1
  691. package/dist/utilities/createClientFeature.js +40 -36
  692. package/dist/utilities/createClientFeature.js.map +1 -1
  693. package/dist/utilities/createServerFeature.js +46 -35
  694. package/dist/utilities/createServerFeature.js.map +1 -1
  695. package/dist/utilities/fieldsDrawer/Drawer.js +28 -17
  696. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  697. package/dist/utilities/fieldsDrawer/DrawerContent.js +149 -78
  698. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  699. package/dist/utilities/forEachNodeRecursively.js +24 -19
  700. package/dist/utilities/forEachNodeRecursively.js.map +1 -1
  701. package/dist/utilities/generateComponentMap.js +90 -82
  702. package/dist/utilities/generateComponentMap.js.map +1 -1
  703. package/dist/utilities/generateImportMap.js +53 -47
  704. package/dist/utilities/generateImportMap.js.map +1 -1
  705. package/dist/utilities/generateSchemaMap.js +35 -30
  706. package/dist/utilities/generateSchemaMap.js.map +1 -1
  707. package/dist/utilities/migrateSlateToLexical/index.js +99 -86
  708. package/dist/utilities/migrateSlateToLexical/index.js.map +1 -1
  709. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +73 -66
  710. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
  711. package/dist/utilities/recurseNodeTree.js +25 -22
  712. package/dist/utilities/recurseNodeTree.js.map +1 -1
  713. package/dist/utilities/upgradeLexicalData/index.js +99 -86
  714. package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
  715. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +71 -66
  716. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  717. package/dist/utilities/useLexicalFeature.js +9 -8
  718. package/dist/utilities/useLexicalFeature.js.map +1 -1
  719. package/dist/validate/index.js +32 -26
  720. package/dist/validate/index.js.map +1 -1
  721. package/dist/validate/validateNodes.js +31 -28
  722. package/dist/validate/validateNodes.js.map +1 -1
  723. package/package.json +22 -11
  724. package/dist/exports/client/Component-7HS6FEJS.js +0 -2
  725. package/dist/exports/client/Component-7HS6FEJS.js.map +0 -7
  726. package/dist/exports/client/Component-LAKSCIDX.js +0 -2
  727. package/dist/exports/client/Component-LAKSCIDX.js.map +0 -7
  728. package/dist/exports/client/Field-BYB3WX7J.js +0 -2
  729. package/dist/exports/client/Field-BYB3WX7J.js.map +0 -7
  730. package/dist/exports/client/RelationshipComponent-GYUTPDNG.js +0 -2
  731. package/dist/exports/client/RelationshipComponent-GYUTPDNG.js.map +0 -7
  732. package/dist/exports/client/chunk-4EX7W4UX.js +0 -2
  733. package/dist/exports/client/chunk-4EX7W4UX.js.map +0 -7
  734. package/dist/exports/client/chunk-E4HH5PS6.js +0 -2
  735. package/dist/exports/client/chunk-E4HH5PS6.js.map +0 -7
  736. package/dist/exports/client/chunk-EBB2CEB6.js +0 -2
  737. package/dist/exports/client/chunk-EBB2CEB6.js.map +0 -7
  738. package/dist/exports/client/chunk-LTR7V74A.js +0 -2
  739. package/dist/exports/client/chunk-LTR7V74A.js.map +0 -7
  740. package/dist/exports/client/chunk-SQHN3N6E.js +0 -2
  741. package/dist/exports/client/chunk-VMCQSR3T.js +0 -3
  742. package/dist/exports/client/chunk-VMCQSR3T.js.map +0 -7
  743. package/dist/exports/client/component-6C5JERGA.js +0 -2
  744. package/dist/exports/client/component-6C5JERGA.js.map +0 -7
  745. package/dist/exports/client/component-GUWIGB77.js +0 -2
  746. package/dist/exports/client/component-GUWIGB77.js.map +0 -7
  747. package/dist/exports/client/component-UQ2BKD5X.js +0 -2
  748. package/dist/exports/client/component-UQ2BKD5X.js.map +0 -7
  749. package/dist/exports/client/componentInline-C2XIK5VZ.js +0 -2
  750. package/dist/exports/client/componentInline-C2XIK5VZ.js.map +0 -7
  751. package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.d.ts +0 -12
  752. package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.d.ts.map +0 -1
  753. package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.js +0 -181
  754. package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.js.map +0 -1
package/dist/index.js CHANGED
@@ -14,449 +14,516 @@ let defaultSanitizedServerEditorConfig = null;
14
14
  const filename = fileURLToPath(import.meta.url);
15
15
  const dirname = path.dirname(filename);
16
16
  export function lexicalEditor(props) {
17
- return async ({ config, isRoot })=>{
18
- if (process.env.NODE_ENV !== 'production' && process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true') {
19
- const resolvedDependencies = await getDependencies(dirname, [
20
- 'lexical',
21
- '@lexical/headless',
22
- '@lexical/link',
23
- '@lexical/list',
24
- '@lexical/mark',
25
- '@lexical/markdown',
26
- '@lexical/react',
27
- '@lexical/rich-text',
28
- '@lexical/selection',
29
- '@lexical/utils'
30
- ]);
31
- // Go through each resolved dependency. If any dependency has a mismatching version, throw an error
32
- const foundVersions = {};
33
- for (const [_pkg, { version }] of resolvedDependencies.resolved){
34
- if (!Object.keys(foundVersions).includes(version)) {
35
- foundVersions[version] = _pkg;
17
+ return async ({
18
+ config,
19
+ isRoot
20
+ }) => {
21
+ if (process.env.NODE_ENV !== 'production' && process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true') {
22
+ const resolvedDependencies = await getDependencies(dirname, ['lexical', '@lexical/headless', '@lexical/link', '@lexical/list', '@lexical/mark', '@lexical/markdown', '@lexical/react', '@lexical/rich-text', '@lexical/selection', '@lexical/utils']);
23
+ // Go through each resolved dependency. If any dependency has a mismatching version, throw an error
24
+ const foundVersions = {};
25
+ for (const [_pkg, {
26
+ version
27
+ }] of resolvedDependencies.resolved) {
28
+ if (!Object.keys(foundVersions).includes(version)) {
29
+ foundVersions[version] = _pkg;
30
+ }
31
+ }
32
+ if (Object.keys(foundVersions).length > 1) {
33
+ const formattedVersionsWithPackageNameString = Object.entries(foundVersions).map(([version, pkg]) => `${pkg}@${version}`).join(', ');
34
+ throw new Error(`Mismatching lexical dependency versions found: ${formattedVersionsWithPackageNameString}. All lexical and @lexical/* packages must have the same version. This is an error with your set-up, caused by you, not a bug in payload. Please go to your package.json and ensure all lexical and @lexical/* packages have the same version.`);
35
+ }
36
+ }
37
+ let features = [];
38
+ let resolvedFeatureMap;
39
+ let finalSanitizedEditorConfig // For server only
40
+ ;
41
+ if (!props || !props.features && !props.lexical) {
42
+ if (!defaultSanitizedServerEditorConfig) {
43
+ defaultSanitizedServerEditorConfig = await sanitizeServerEditorConfig(defaultEditorConfig, config);
44
+ features = deepCopyObject(defaultEditorFeatures);
45
+ }
46
+ finalSanitizedEditorConfig = deepCopyObject(defaultSanitizedServerEditorConfig);
47
+ resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap;
48
+ } else {
49
+ const rootEditor = config.editor;
50
+ let rootEditorFeatures = [];
51
+ if (typeof rootEditor === 'object' && 'features' in rootEditor) {
52
+ rootEditorFeatures = rootEditor.features;
53
+ }
54
+ features = props.features && typeof props.features === 'function' ? props.features({
55
+ defaultFeatures: deepCopyObject(defaultEditorFeatures),
56
+ rootFeatures: rootEditorFeatures
57
+ }) : props.features;
58
+ if (!features) {
59
+ features = deepCopyObject(defaultEditorFeatures);
60
+ }
61
+ const lexical = props.lexical ?? deepCopyObjectSimple(defaultEditorConfig.lexical);
62
+ resolvedFeatureMap = await loadFeatures({
63
+ config,
64
+ isRoot,
65
+ unSanitizedEditorConfig: {
66
+ features,
67
+ lexical
68
+ }
69
+ });
70
+ finalSanitizedEditorConfig = {
71
+ features: sanitizeServerFeatures(resolvedFeatureMap),
72
+ lexical,
73
+ resolvedFeatureMap
74
+ };
75
+ }
76
+ const featureI18n = finalSanitizedEditorConfig.features.i18n;
77
+ for (const lang in i18n) {
78
+ if (!featureI18n[lang]) {
79
+ featureI18n[lang] = {
80
+ lexical: {}
81
+ };
82
+ }
83
+ featureI18n[lang].lexical.general = i18n[lang];
84
+ }
85
+ return {
86
+ CellComponent: {
87
+ clientProps: {
88
+ admin: props?.admin,
89
+ lexicalEditorConfig: finalSanitizedEditorConfig.lexical
90
+ },
91
+ path: '@payloadcms/richtext-lexical/client#RichTextCell'
92
+ },
93
+ FieldComponent: {
94
+ clientProps: {
95
+ admin: props?.admin,
96
+ lexicalEditorConfig: finalSanitizedEditorConfig.lexical
97
+ },
98
+ path: '@payloadcms/richtext-lexical/client#RichTextField'
99
+ },
100
+ editorConfig: finalSanitizedEditorConfig,
101
+ features,
102
+ generateComponentMap: {
103
+ path: '@payloadcms/richtext-lexical/generateComponentMap#getGenerateComponentMap',
104
+ serverProps: {
105
+ resolvedFeatureMap
106
+ }
107
+ },
108
+ generateImportMap: getGenerateImportMap({
109
+ resolvedFeatureMap
110
+ }),
111
+ generateSchemaMap: getGenerateSchemaMap({
112
+ resolvedFeatureMap
113
+ }),
114
+ graphQLPopulationPromises({
115
+ context,
116
+ currentDepth,
117
+ depth,
118
+ draft,
119
+ field,
120
+ fieldPromises,
121
+ findMany,
122
+ flattenLocales,
123
+ overrideAccess,
124
+ populationPromises,
125
+ req,
126
+ showHiddenFields,
127
+ siblingDoc
128
+ }) {
129
+ // check if there are any features with nodes which have populationPromises for this field
130
+ if (finalSanitizedEditorConfig?.features?.graphQLPopulationPromises?.size) {
131
+ populateLexicalPopulationPromises({
132
+ context,
133
+ currentDepth: currentDepth ?? 0,
134
+ depth,
135
+ draft,
136
+ editorPopulationPromises: finalSanitizedEditorConfig.features.graphQLPopulationPromises,
137
+ field,
138
+ fieldPromises,
139
+ findMany,
140
+ flattenLocales,
141
+ overrideAccess,
142
+ populationPromises,
143
+ req,
144
+ showHiddenFields,
145
+ siblingDoc
146
+ });
147
+ }
148
+ },
149
+ hooks: {
150
+ afterChange: [async args => {
151
+ const {
152
+ collection,
153
+ context: _context,
154
+ global,
155
+ operation,
156
+ path,
157
+ req,
158
+ schemaPath
159
+ } = args;
160
+ let {
161
+ value
162
+ } = args;
163
+ if (finalSanitizedEditorConfig?.features?.hooks?.afterChange?.length) {
164
+ for (const hook of finalSanitizedEditorConfig.features.hooks.afterChange) {
165
+ value = await hook(args);
166
+ }
167
+ }
168
+ if (!finalSanitizedEditorConfig.features.nodeHooks.afterChange.size && !finalSanitizedEditorConfig.features.getSubFields.size) {
169
+ return value;
170
+ }
171
+ const context = _context;
172
+ const nodeIDMap = {};
173
+ /**
174
+ * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.
175
+ */
176
+ const originalNodeIDMap = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap;
177
+ if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {
178
+ return value;
179
+ }
180
+ recurseNodeTree({
181
+ nodeIDMap,
182
+ nodes: value?.root?.children ?? []
183
+ });
184
+ // eslint-disable-next-line prefer-const
185
+ for (let [id, node] of Object.entries(nodeIDMap)) {
186
+ const afterChangeHooks = finalSanitizedEditorConfig.features.nodeHooks.afterChange;
187
+ if (afterChangeHooks?.has(node.type)) {
188
+ for (const hook of afterChangeHooks.get(node.type)) {
189
+ if (!originalNodeIDMap[id]) {
190
+ console.warn('(afterChange) No original node found for node with id', id, 'node:', node, 'path', path.join('.'));
191
+ continue;
36
192
  }
193
+ node = await hook({
194
+ context,
195
+ node,
196
+ operation,
197
+ originalNode: originalNodeIDMap[id],
198
+ parentRichTextFieldPath: path,
199
+ parentRichTextFieldSchemaPath: schemaPath,
200
+ req
201
+ });
202
+ }
37
203
  }
38
- if (Object.keys(foundVersions).length > 1) {
39
- const formattedVersionsWithPackageNameString = Object.entries(foundVersions).map(([version, pkg])=>`${pkg}@${version}`).join(', ');
40
- throw new Error(`Mismatching lexical dependency versions found: ${formattedVersionsWithPackageNameString}. All lexical and @lexical/* packages must have the same version. This is an error with your set-up, caused by you, not a bug in payload. Please go to your package.json and ensure all lexical and @lexical/* packages have the same version.`);
204
+ const subFieldFn = finalSanitizedEditorConfig.features.getSubFields.get(node.type);
205
+ const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData.get(node.type);
206
+ if (subFieldFn) {
207
+ const subFields = subFieldFn({
208
+ node,
209
+ req
210
+ });
211
+ const data = subFieldDataFn({
212
+ node,
213
+ req
214
+ }) ?? {};
215
+ const originalData = subFieldDataFn({
216
+ node: originalNodeIDMap[id],
217
+ req
218
+ }) ?? {};
219
+ if (subFields?.length) {
220
+ await afterChangeTraverseFields({
221
+ collection,
222
+ context,
223
+ data: originalData,
224
+ doc: data,
225
+ fields: subFields,
226
+ global,
227
+ operation,
228
+ path,
229
+ previousDoc: data,
230
+ previousSiblingDoc: {
231
+ ...data
232
+ },
233
+ req,
234
+ schemaPath,
235
+ siblingData: originalData || {},
236
+ siblingDoc: {
237
+ ...data
238
+ }
239
+ });
240
+ }
41
241
  }
42
- }
43
- let features = [];
44
- let resolvedFeatureMap;
45
- let finalSanitizedEditorConfig// For server only
46
- ;
47
- if (!props || !props.features && !props.lexical) {
48
- if (!defaultSanitizedServerEditorConfig) {
49
- defaultSanitizedServerEditorConfig = await sanitizeServerEditorConfig(defaultEditorConfig, config);
50
- features = deepCopyObject(defaultEditorFeatures);
242
+ }
243
+ return value;
244
+ }],
245
+ afterRead: [
246
+ /**
247
+ * afterRead hooks do not receive the originalNode. Thus, they can run on all nodes, not just nodes with an ID.
248
+ */
249
+ async args => {
250
+ const {
251
+ collection,
252
+ context: context,
253
+ currentDepth,
254
+ depth,
255
+ draft,
256
+ fallbackLocale,
257
+ fieldPromises,
258
+ findMany,
259
+ flattenLocales,
260
+ global,
261
+ locale,
262
+ overrideAccess,
263
+ path,
264
+ populationPromises,
265
+ req,
266
+ schemaPath,
267
+ showHiddenFields,
268
+ triggerAccessControl,
269
+ triggerHooks
270
+ } = args;
271
+ let {
272
+ value
273
+ } = args;
274
+ if (finalSanitizedEditorConfig?.features?.hooks?.afterRead?.length) {
275
+ for (const hook of finalSanitizedEditorConfig.features.hooks.afterRead) {
276
+ value = await hook(args);
51
277
  }
52
- finalSanitizedEditorConfig = deepCopyObject(defaultSanitizedServerEditorConfig);
53
- resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap;
54
- } else {
55
- const rootEditor = config.editor;
56
- let rootEditorFeatures = [];
57
- if (typeof rootEditor === 'object' && 'features' in rootEditor) {
58
- rootEditorFeatures = rootEditor.features;
278
+ }
279
+ if (!finalSanitizedEditorConfig.features.nodeHooks.afterRead.size && !finalSanitizedEditorConfig.features.getSubFields.size) {
280
+ return value;
281
+ }
282
+ const flattenedNodes = [];
283
+ recurseNodeTree({
284
+ flattenedNodes,
285
+ nodes: value?.root?.children ?? []
286
+ });
287
+ for (let node of flattenedNodes) {
288
+ const afterReadHooks = finalSanitizedEditorConfig.features.nodeHooks.afterRead;
289
+ if (afterReadHooks?.has(node.type)) {
290
+ for (const hook of afterReadHooks.get(node.type)) {
291
+ node = await hook({
292
+ context,
293
+ currentDepth,
294
+ depth,
295
+ draft,
296
+ fallbackLocale,
297
+ fieldPromises,
298
+ findMany,
299
+ flattenLocales,
300
+ locale,
301
+ node,
302
+ overrideAccess,
303
+ parentRichTextFieldPath: path,
304
+ parentRichTextFieldSchemaPath: schemaPath,
305
+ populationPromises,
306
+ req,
307
+ showHiddenFields,
308
+ triggerAccessControl,
309
+ triggerHooks
310
+ });
311
+ }
59
312
  }
60
- features = props.features && typeof props.features === 'function' ? props.features({
61
- defaultFeatures: deepCopyObject(defaultEditorFeatures),
62
- rootFeatures: rootEditorFeatures
63
- }) : props.features;
64
- if (!features) {
65
- features = deepCopyObject(defaultEditorFeatures);
313
+ const subFieldFn = finalSanitizedEditorConfig.features.getSubFields.get(node.type);
314
+ const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData.get(node.type);
315
+ if (subFieldFn) {
316
+ const subFields = subFieldFn({
317
+ node,
318
+ req
319
+ });
320
+ const data = subFieldDataFn({
321
+ node,
322
+ req
323
+ }) ?? {};
324
+ if (subFields?.length) {
325
+ afterReadTraverseFields({
326
+ collection,
327
+ context,
328
+ currentDepth,
329
+ depth,
330
+ doc: data,
331
+ draft,
332
+ fallbackLocale,
333
+ fieldPromises,
334
+ fields: subFields,
335
+ findMany,
336
+ flattenLocales,
337
+ global,
338
+ locale,
339
+ overrideAccess,
340
+ path,
341
+ populationPromises,
342
+ req,
343
+ schemaPath,
344
+ showHiddenFields,
345
+ siblingDoc: data,
346
+ triggerAccessControl,
347
+ triggerHooks
348
+ });
349
+ }
66
350
  }
67
- const lexical = props.lexical ?? deepCopyObjectSimple(defaultEditorConfig.lexical);
68
- resolvedFeatureMap = await loadFeatures({
69
- config,
70
- isRoot,
71
- unSanitizedEditorConfig: {
72
- features,
73
- lexical
74
- }
75
- });
76
- finalSanitizedEditorConfig = {
77
- features: sanitizeServerFeatures(resolvedFeatureMap),
78
- lexical,
79
- resolvedFeatureMap
80
- };
81
- }
82
- const featureI18n = finalSanitizedEditorConfig.features.i18n;
83
- for(const lang in i18n){
84
- if (!featureI18n[lang]) {
85
- featureI18n[lang] = {
86
- lexical: {}
87
- };
351
+ }
352
+ return value;
353
+ }],
354
+ beforeChange: [async args => {
355
+ const {
356
+ collection,
357
+ context: _context,
358
+ duplicate,
359
+ errors,
360
+ field,
361
+ global,
362
+ mergeLocaleActions,
363
+ operation,
364
+ path,
365
+ req,
366
+ schemaPath,
367
+ siblingData,
368
+ siblingDocWithLocales,
369
+ skipValidation
370
+ } = args;
371
+ let {
372
+ value
373
+ } = args;
374
+ if (finalSanitizedEditorConfig?.features?.hooks?.beforeChange?.length) {
375
+ for (const hook of finalSanitizedEditorConfig.features.hooks.beforeChange) {
376
+ value = await hook(args);
88
377
  }
89
- featureI18n[lang].lexical.general = i18n[lang];
90
- }
91
- return {
92
- CellComponent: {
93
- clientProps: {
94
- admin: props?.admin,
95
- lexicalEditorConfig: finalSanitizedEditorConfig.lexical
96
- },
97
- path: '@payloadcms/richtext-lexical/client#RichTextCell'
98
- },
99
- FieldComponent: {
100
- clientProps: {
101
- admin: props?.admin,
102
- lexicalEditorConfig: finalSanitizedEditorConfig.lexical
103
- },
104
- path: '@payloadcms/richtext-lexical/client#RichTextField'
105
- },
106
- editorConfig: finalSanitizedEditorConfig,
107
- features,
108
- generateComponentMap: {
109
- path: '@payloadcms/richtext-lexical/generateComponentMap#getGenerateComponentMap',
110
- serverProps: {
111
- resolvedFeatureMap
112
- }
113
- },
114
- generateImportMap: getGenerateImportMap({
115
- resolvedFeatureMap
116
- }),
117
- generateSchemaMap: getGenerateSchemaMap({
118
- resolvedFeatureMap
119
- }),
120
- graphQLPopulationPromises ({ context, currentDepth, depth, draft, field, fieldPromises, findMany, flattenLocales, overrideAccess, populationPromises, req, showHiddenFields, siblingDoc }) {
121
- // check if there are any features with nodes which have populationPromises for this field
122
- if (finalSanitizedEditorConfig?.features?.graphQLPopulationPromises?.size) {
123
- populateLexicalPopulationPromises({
124
- context,
125
- currentDepth: currentDepth ?? 0,
126
- depth,
127
- draft,
128
- editorPopulationPromises: finalSanitizedEditorConfig.features.graphQLPopulationPromises,
129
- field,
130
- fieldPromises,
131
- findMany,
132
- flattenLocales,
133
- overrideAccess,
134
- populationPromises,
135
- req,
136
- showHiddenFields,
137
- siblingDoc
138
- });
378
+ }
379
+ if (!finalSanitizedEditorConfig.features.nodeHooks.beforeChange.size && !finalSanitizedEditorConfig.features.getSubFields.size) {
380
+ return value;
381
+ }
382
+ const context = _context;
383
+ const nodeIDMap = {};
384
+ /**
385
+ * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.
386
+ */
387
+ const originalNodeIDMap = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap;
388
+ if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {
389
+ return value;
390
+ }
391
+ const originalNodeWithLocalesIDMap = {};
392
+ recurseNodeTree({
393
+ nodeIDMap,
394
+ nodes: value?.root?.children ?? []
395
+ });
396
+ if (siblingDocWithLocales?.[field.name]) {
397
+ recurseNodeTree({
398
+ nodeIDMap: originalNodeWithLocalesIDMap,
399
+ nodes: siblingDocWithLocales[field.name]?.root?.children ?? []
400
+ });
401
+ }
402
+ // eslint-disable-next-line prefer-const
403
+ for (let [id, node] of Object.entries(nodeIDMap)) {
404
+ const beforeChangeHooks = finalSanitizedEditorConfig.features.nodeHooks.beforeChange;
405
+ if (beforeChangeHooks?.has(node.type)) {
406
+ for (const hook of beforeChangeHooks.get(node.type)) {
407
+ if (!originalNodeIDMap[id]) {
408
+ console.warn('(beforeChange) No original node found for node with id', id, 'node:', node, 'path', path.join('.'));
409
+ continue;
139
410
  }
140
- },
141
- hooks: {
142
- afterChange: [
143
- async (args)=>{
144
- const { collection, context: _context, global, operation, path, req, schemaPath } = args;
145
- let { value } = args;
146
- if (finalSanitizedEditorConfig?.features?.hooks?.afterChange?.length) {
147
- for (const hook of finalSanitizedEditorConfig.features.hooks.afterChange){
148
- value = await hook(args);
149
- }
150
- }
151
- if (!finalSanitizedEditorConfig.features.nodeHooks.afterChange.size && !finalSanitizedEditorConfig.features.getSubFields.size) {
152
- return value;
153
- }
154
- const context = _context;
155
- const nodeIDMap = {};
156
- /**
157
- * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.
158
- */ const originalNodeIDMap = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap;
159
- if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {
160
- return value;
161
- }
162
- recurseNodeTree({
163
- nodeIDMap,
164
- nodes: value?.root?.children ?? []
165
- });
166
- // eslint-disable-next-line prefer-const
167
- for (let [id, node] of Object.entries(nodeIDMap)){
168
- const afterChangeHooks = finalSanitizedEditorConfig.features.nodeHooks.afterChange;
169
- if (afterChangeHooks?.has(node.type)) {
170
- for (const hook of afterChangeHooks.get(node.type)){
171
- if (!originalNodeIDMap[id]) {
172
- console.warn('(afterChange) No original node found for node with id', id, 'node:', node, 'path', path.join('.'));
173
- continue;
174
- }
175
- node = await hook({
176
- context,
177
- node,
178
- operation,
179
- originalNode: originalNodeIDMap[id],
180
- parentRichTextFieldPath: path,
181
- parentRichTextFieldSchemaPath: schemaPath,
182
- req
183
- });
184
- }
185
- }
186
- const subFieldFn = finalSanitizedEditorConfig.features.getSubFields.get(node.type);
187
- const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData.get(node.type);
188
- if (subFieldFn) {
189
- const subFields = subFieldFn({
190
- node,
191
- req
192
- });
193
- const data = subFieldDataFn({
194
- node,
195
- req
196
- }) ?? {};
197
- const originalData = subFieldDataFn({
198
- node: originalNodeIDMap[id],
199
- req
200
- }) ?? {};
201
- if (subFields?.length) {
202
- await afterChangeTraverseFields({
203
- collection,
204
- context,
205
- data: originalData,
206
- doc: data,
207
- fields: subFields,
208
- global,
209
- operation,
210
- path,
211
- previousDoc: data,
212
- previousSiblingDoc: {
213
- ...data
214
- },
215
- req,
216
- schemaPath,
217
- siblingData: originalData || {},
218
- siblingDoc: {
219
- ...data
220
- }
221
- });
222
- }
223
- }
224
- }
225
- return value;
226
- }
227
- ],
228
- afterRead: [
229
- /**
230
- * afterRead hooks do not receive the originalNode. Thus, they can run on all nodes, not just nodes with an ID.
231
- */ async (args)=>{
232
- const { collection, context: context, currentDepth, depth, draft, fallbackLocale, fieldPromises, findMany, flattenLocales, global, locale, overrideAccess, path, populationPromises, req, schemaPath, showHiddenFields, triggerAccessControl, triggerHooks } = args;
233
- let { value } = args;
234
- if (finalSanitizedEditorConfig?.features?.hooks?.afterRead?.length) {
235
- for (const hook of finalSanitizedEditorConfig.features.hooks.afterRead){
236
- value = await hook(args);
237
- }
238
- }
239
- if (!finalSanitizedEditorConfig.features.nodeHooks.afterRead.size && !finalSanitizedEditorConfig.features.getSubFields.size) {
240
- return value;
241
- }
242
- const flattenedNodes = [];
243
- recurseNodeTree({
244
- flattenedNodes,
245
- nodes: value?.root?.children ?? []
246
- });
247
- for (let node of flattenedNodes){
248
- const afterReadHooks = finalSanitizedEditorConfig.features.nodeHooks.afterRead;
249
- if (afterReadHooks?.has(node.type)) {
250
- for (const hook of afterReadHooks.get(node.type)){
251
- node = await hook({
252
- context,
253
- currentDepth,
254
- depth,
255
- draft,
256
- fallbackLocale,
257
- fieldPromises,
258
- findMany,
259
- flattenLocales,
260
- locale,
261
- node,
262
- overrideAccess,
263
- parentRichTextFieldPath: path,
264
- parentRichTextFieldSchemaPath: schemaPath,
265
- populationPromises,
266
- req,
267
- showHiddenFields,
268
- triggerAccessControl,
269
- triggerHooks
270
- });
271
- }
272
- }
273
- const subFieldFn = finalSanitizedEditorConfig.features.getSubFields.get(node.type);
274
- const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData.get(node.type);
275
- if (subFieldFn) {
276
- const subFields = subFieldFn({
277
- node,
278
- req
279
- });
280
- const data = subFieldDataFn({
281
- node,
282
- req
283
- }) ?? {};
284
- if (subFields?.length) {
285
- afterReadTraverseFields({
286
- collection,
287
- context,
288
- currentDepth,
289
- depth,
290
- doc: data,
291
- draft,
292
- fallbackLocale,
293
- fieldPromises,
294
- fields: subFields,
295
- findMany,
296
- flattenLocales,
297
- global,
298
- locale,
299
- overrideAccess,
300
- path,
301
- populationPromises,
302
- req,
303
- schemaPath,
304
- showHiddenFields,
305
- siblingDoc: data,
306
- triggerAccessControl,
307
- triggerHooks
308
- });
309
- }
310
- }
311
- }
312
- return value;
313
- }
314
- ],
315
- beforeChange: [
316
- async (args)=>{
317
- const { collection, context: _context, duplicate, errors, field, global, mergeLocaleActions, operation, path, req, schemaPath, siblingData, siblingDocWithLocales, skipValidation } = args;
318
- let { value } = args;
319
- if (finalSanitizedEditorConfig?.features?.hooks?.beforeChange?.length) {
320
- for (const hook of finalSanitizedEditorConfig.features.hooks.beforeChange){
321
- value = await hook(args);
322
- }
323
- }
324
- if (!finalSanitizedEditorConfig.features.nodeHooks.beforeChange.size && !finalSanitizedEditorConfig.features.getSubFields.size) {
325
- return value;
326
- }
327
- const context = _context;
328
- const nodeIDMap = {};
329
- /**
330
- * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.
331
- */ const originalNodeIDMap = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap;
332
- if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {
333
- return value;
334
- }
335
- const originalNodeWithLocalesIDMap = {};
336
- recurseNodeTree({
337
- nodeIDMap,
338
- nodes: value?.root?.children ?? []
339
- });
340
- if (siblingDocWithLocales?.[field.name]) {
341
- recurseNodeTree({
342
- nodeIDMap: originalNodeWithLocalesIDMap,
343
- nodes: siblingDocWithLocales[field.name]?.root?.children ?? []
344
- });
345
- }
346
- // eslint-disable-next-line prefer-const
347
- for (let [id, node] of Object.entries(nodeIDMap)){
348
- const beforeChangeHooks = finalSanitizedEditorConfig.features.nodeHooks.beforeChange;
349
- if (beforeChangeHooks?.has(node.type)) {
350
- for (const hook of beforeChangeHooks.get(node.type)){
351
- if (!originalNodeIDMap[id]) {
352
- console.warn('(beforeChange) No original node found for node with id', id, 'node:', node, 'path', path.join('.'));
353
- continue;
354
- }
355
- node = await hook({
356
- context,
357
- duplicate,
358
- errors,
359
- mergeLocaleActions,
360
- node,
361
- operation,
362
- originalNode: originalNodeIDMap[id],
363
- originalNodeWithLocales: originalNodeWithLocalesIDMap[id],
364
- parentRichTextFieldPath: path,
365
- parentRichTextFieldSchemaPath: schemaPath,
366
- req,
367
- skipValidation
368
- });
369
- }
370
- }
371
- const subFieldFn = finalSanitizedEditorConfig.features.getSubFields.get(node.type);
372
- const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData.get(node.type);
373
- if (subFieldFn) {
374
- const subFields = subFieldFn({
375
- node,
376
- req
377
- });
378
- const data = subFieldDataFn({
379
- node,
380
- req
381
- }) ?? {};
382
- const originalData = subFieldDataFn({
383
- node: originalNodeIDMap[id],
384
- req
385
- }) ?? {};
386
- const originalDataWithLocales = subFieldDataFn({
387
- node: originalNodeWithLocalesIDMap[id],
388
- req
389
- }) ?? {};
390
- if (subFields?.length) {
391
- await beforeChangeTraverseFields({
392
- id,
393
- collection,
394
- context,
395
- data,
396
- doc: originalData,
397
- docWithLocales: originalDataWithLocales ?? {},
398
- duplicate,
399
- errors,
400
- fields: subFields,
401
- global,
402
- mergeLocaleActions,
403
- operation,
404
- path,
405
- req,
406
- schemaPath,
407
- siblingData: data,
408
- siblingDoc: originalData,
409
- siblingDocWithLocales: originalDataWithLocales ?? {},
410
- skipValidation
411
- });
412
- }
413
- }
414
- }
415
- /**
416
- * within the beforeChange hook, id's may be re-generated.
417
- * Example:
418
- * 1. Seed data contains IDs for block feature blocks.
419
- * 2. Those are used in beforeValidate
420
- * 3. in beforeChange, those IDs are regenerated, because you cannot provide IDs during document creation. See baseIDField beforeChange hook for reasoning
421
- * 4. Thus, in order for all post-beforeChange hooks to receive the correct ID, we need to update the originalNodeIDMap with the new ID's, by regenerating the nodeIDMap.
422
- * The reason this is not generated for every hook, is to save on performance. We know we only really have to generate it in beforeValidate, which is the first hook,
423
- * and in beforeChange, which is where modifications to the provided IDs can occur.
424
- */ const newOriginalNodeIDMap = {};
425
- const previousValue = siblingData[field.name];
426
- recurseNodeTree({
427
- nodeIDMap: newOriginalNodeIDMap,
428
- nodes: previousValue?.root?.children ?? []
429
- });
430
- if (!context.internal) {
431
- // Add to context, for other hooks to use
432
- context.internal = {};
433
- }
434
- if (!context.internal.richText) {
435
- context.internal.richText = {};
436
- }
437
- context.internal.richText[path.join('.')] = {
438
- originalNodeIDMap: newOriginalNodeIDMap
439
- };
440
- return value;
441
- }
442
- ],
443
- beforeValidate: [
444
- async (args)=>{
445
- const { collection, context, global, operation, overrideAccess, path, previousValue, req, schemaPath } = args;
446
- let { value } = args;
447
- if (finalSanitizedEditorConfig?.features?.hooks?.beforeValidate?.length) {
448
- for (const hook of finalSanitizedEditorConfig.features.hooks.beforeValidate){
449
- value = await hook(args);
450
- }
451
- }
452
- // return value if there are NO hooks
453
- if (!finalSanitizedEditorConfig.features.nodeHooks.beforeValidate.size && !finalSanitizedEditorConfig.features.nodeHooks.afterChange.size && !finalSanitizedEditorConfig.features.nodeHooks.beforeChange.size && !finalSanitizedEditorConfig.features.getSubFields.size) {
454
- return value;
455
- }
456
- /**
457
- * beforeValidate is the first field hook which runs. This is where we can create the node map, which can then be used in the other hooks.
458
- *
459
- */ /**
411
+ node = await hook({
412
+ context,
413
+ duplicate,
414
+ errors,
415
+ mergeLocaleActions,
416
+ node,
417
+ operation,
418
+ originalNode: originalNodeIDMap[id],
419
+ originalNodeWithLocales: originalNodeWithLocalesIDMap[id],
420
+ parentRichTextFieldPath: path,
421
+ parentRichTextFieldSchemaPath: schemaPath,
422
+ req,
423
+ skipValidation
424
+ });
425
+ }
426
+ }
427
+ const subFieldFn = finalSanitizedEditorConfig.features.getSubFields.get(node.type);
428
+ const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData.get(node.type);
429
+ if (subFieldFn) {
430
+ const subFields = subFieldFn({
431
+ node,
432
+ req
433
+ });
434
+ const data = subFieldDataFn({
435
+ node,
436
+ req
437
+ }) ?? {};
438
+ const originalData = subFieldDataFn({
439
+ node: originalNodeIDMap[id],
440
+ req
441
+ }) ?? {};
442
+ const originalDataWithLocales = subFieldDataFn({
443
+ node: originalNodeWithLocalesIDMap[id],
444
+ req
445
+ }) ?? {};
446
+ if (subFields?.length) {
447
+ await beforeChangeTraverseFields({
448
+ id,
449
+ collection,
450
+ context,
451
+ data,
452
+ doc: originalData,
453
+ docWithLocales: originalDataWithLocales ?? {},
454
+ duplicate,
455
+ errors,
456
+ fields: subFields,
457
+ global,
458
+ mergeLocaleActions,
459
+ operation,
460
+ path,
461
+ req,
462
+ schemaPath,
463
+ siblingData: data,
464
+ siblingDoc: originalData,
465
+ siblingDocWithLocales: originalDataWithLocales ?? {},
466
+ skipValidation
467
+ });
468
+ }
469
+ }
470
+ }
471
+ /**
472
+ * within the beforeChange hook, id's may be re-generated.
473
+ * Example:
474
+ * 1. Seed data contains IDs for block feature blocks.
475
+ * 2. Those are used in beforeValidate
476
+ * 3. in beforeChange, those IDs are regenerated, because you cannot provide IDs during document creation. See baseIDField beforeChange hook for reasoning
477
+ * 4. Thus, in order for all post-beforeChange hooks to receive the correct ID, we need to update the originalNodeIDMap with the new ID's, by regenerating the nodeIDMap.
478
+ * The reason this is not generated for every hook, is to save on performance. We know we only really have to generate it in beforeValidate, which is the first hook,
479
+ * and in beforeChange, which is where modifications to the provided IDs can occur.
480
+ */
481
+ const newOriginalNodeIDMap = {};
482
+ const previousValue = siblingData[field.name];
483
+ recurseNodeTree({
484
+ nodeIDMap: newOriginalNodeIDMap,
485
+ nodes: previousValue?.root?.children ?? []
486
+ });
487
+ if (!context.internal) {
488
+ // Add to context, for other hooks to use
489
+ context.internal = {};
490
+ }
491
+ if (!context.internal.richText) {
492
+ context.internal.richText = {};
493
+ }
494
+ context.internal.richText[path.join('.')] = {
495
+ originalNodeIDMap: newOriginalNodeIDMap
496
+ };
497
+ return value;
498
+ }],
499
+ beforeValidate: [async args => {
500
+ const {
501
+ collection,
502
+ context,
503
+ global,
504
+ operation,
505
+ overrideAccess,
506
+ path,
507
+ previousValue,
508
+ req,
509
+ schemaPath
510
+ } = args;
511
+ let {
512
+ value
513
+ } = args;
514
+ if (finalSanitizedEditorConfig?.features?.hooks?.beforeValidate?.length) {
515
+ for (const hook of finalSanitizedEditorConfig.features.hooks.beforeValidate) {
516
+ value = await hook(args);
517
+ }
518
+ }
519
+ // return value if there are NO hooks
520
+ if (!finalSanitizedEditorConfig.features.nodeHooks.beforeValidate.size && !finalSanitizedEditorConfig.features.nodeHooks.afterChange.size && !finalSanitizedEditorConfig.features.nodeHooks.beforeChange.size && !finalSanitizedEditorConfig.features.getSubFields.size) {
521
+ return value;
522
+ }
523
+ /**
524
+ * beforeValidate is the first field hook which runs. This is where we can create the node map, which can then be used in the other hooks.
525
+ *
526
+ */ /**
460
527
  * flattenedNodes contains all nodes in the editor, in the order they appear in the editor. They will be used for the following hooks:
461
528
  * - afterRead
462
529
  *
@@ -464,198 +531,179 @@ export function lexicalEditor(props) {
464
531
  * thus require a reliable way to match new node data to old node data. Given that node positions can change in between hooks, this is only reliably possible for nodes which are saved with
465
532
  * an ID.
466
533
  */ //const flattenedNodes: SerializedLexicalNode[] = []
467
- /**
468
- * Only nodes with id's (so, nodes with hooks added to them) will be added to the nodeIDMap. They will be used for the following hooks:
469
- * - afterChange
470
- * - beforeChange
471
- * - beforeValidate
472
- * - beforeDuplicate
473
- *
474
- * Other hooks are handled by the flattenedNodes. All nodes in the nodeIDMap are part of flattenedNodes.
475
- */ const originalNodeIDMap = {};
476
- recurseNodeTree({
477
- nodeIDMap: originalNodeIDMap,
478
- nodes: previousValue?.root?.children ?? []
479
- });
480
- if (!context.internal) {
481
- // Add to context, for other hooks to use
482
- context.internal = {};
483
- }
484
- if (!context.internal.richText) {
485
- context.internal.richText = {};
486
- }
487
- context.internal.richText[path.join('.')] = {
488
- originalNodeIDMap
489
- };
490
- /**
491
- * Now that the maps for all hooks are set up, we can run the validate hook
492
- */ if (!finalSanitizedEditorConfig.features.nodeHooks.beforeValidate.size) {
493
- return value;
494
- }
495
- const nodeIDMap = {};
496
- recurseNodeTree({
497
- //flattenedNodes,
498
- nodeIDMap,
499
- nodes: value?.root?.children ?? []
500
- });
501
- // eslint-disable-next-line prefer-const
502
- for (let [id, node] of Object.entries(nodeIDMap)){
503
- const beforeValidateHooks = finalSanitizedEditorConfig.features.nodeHooks.beforeValidate;
504
- if (beforeValidateHooks?.has(node.type)) {
505
- for (const hook of beforeValidateHooks.get(node.type)){
506
- if (!originalNodeIDMap[id]) {
507
- console.warn('(beforeValidate) No original node found for node with id', id, 'node:', node, 'path', path.join('.'));
508
- continue;
509
- }
510
- node = await hook({
511
- context,
512
- node,
513
- operation,
514
- originalNode: originalNodeIDMap[id],
515
- overrideAccess,
516
- parentRichTextFieldPath: path,
517
- parentRichTextFieldSchemaPath: schemaPath,
518
- req
519
- });
520
- }
521
- }
522
- const subFieldFn = finalSanitizedEditorConfig.features.getSubFields.get(node.type);
523
- const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData.get(node.type);
524
- if (subFieldFn) {
525
- const subFields = subFieldFn({
526
- node,
527
- req
528
- });
529
- const data = subFieldDataFn({
530
- node,
531
- req
532
- }) ?? {};
533
- const originalData = subFieldDataFn({
534
- node: originalNodeIDMap[id],
535
- req
536
- }) ?? {};
537
- if (subFields?.length) {
538
- await beforeValidateTraverseFields({
539
- id,
540
- collection,
541
- context,
542
- data,
543
- doc: originalData,
544
- fields: subFields,
545
- global,
546
- operation,
547
- overrideAccess,
548
- path,
549
- req,
550
- schemaPath,
551
- siblingData: data,
552
- siblingDoc: originalData
553
- });
554
- }
555
- }
556
- }
557
- return value;
558
- }
559
- ]
560
- },
561
- i18n: featureI18n,
562
- outputSchema: ({ collectionIDFieldTypes, config, field, interfaceNameDefinitions, isRequired })=>{
563
- let outputSchema = {
564
- // This schema matches the SerializedEditorState type so far, that it's possible to cast SerializedEditorState to this schema without any errors.
565
- // In the future, we should
566
- // 1) allow recursive children
567
- // 2) Pass in all the different types for every node added to the editorconfig. This can be done with refs in the schema.
568
- type: withNullableJSONSchemaType('object', isRequired),
534
+ /**
535
+ * Only nodes with id's (so, nodes with hooks added to them) will be added to the nodeIDMap. They will be used for the following hooks:
536
+ * - afterChange
537
+ * - beforeChange
538
+ * - beforeValidate
539
+ * - beforeDuplicate
540
+ *
541
+ * Other hooks are handled by the flattenedNodes. All nodes in the nodeIDMap are part of flattenedNodes.
542
+ */
543
+ const originalNodeIDMap = {};
544
+ recurseNodeTree({
545
+ nodeIDMap: originalNodeIDMap,
546
+ nodes: previousValue?.root?.children ?? []
547
+ });
548
+ if (!context.internal) {
549
+ // Add to context, for other hooks to use
550
+ context.internal = {};
551
+ }
552
+ if (!context.internal.richText) {
553
+ context.internal.richText = {};
554
+ }
555
+ context.internal.richText[path.join('.')] = {
556
+ originalNodeIDMap
557
+ };
558
+ /**
559
+ * Now that the maps for all hooks are set up, we can run the validate hook
560
+ */
561
+ if (!finalSanitizedEditorConfig.features.nodeHooks.beforeValidate.size) {
562
+ return value;
563
+ }
564
+ const nodeIDMap = {};
565
+ recurseNodeTree({
566
+ //flattenedNodes,
567
+ nodeIDMap,
568
+ nodes: value?.root?.children ?? []
569
+ });
570
+ // eslint-disable-next-line prefer-const
571
+ for (let [id, node] of Object.entries(nodeIDMap)) {
572
+ const beforeValidateHooks = finalSanitizedEditorConfig.features.nodeHooks.beforeValidate;
573
+ if (beforeValidateHooks?.has(node.type)) {
574
+ for (const hook of beforeValidateHooks.get(node.type)) {
575
+ if (!originalNodeIDMap[id]) {
576
+ console.warn('(beforeValidate) No original node found for node with id', id, 'node:', node, 'path', path.join('.'));
577
+ continue;
578
+ }
579
+ node = await hook({
580
+ context,
581
+ node,
582
+ operation,
583
+ originalNode: originalNodeIDMap[id],
584
+ overrideAccess,
585
+ parentRichTextFieldPath: path,
586
+ parentRichTextFieldSchemaPath: schemaPath,
587
+ req
588
+ });
589
+ }
590
+ }
591
+ const subFieldFn = finalSanitizedEditorConfig.features.getSubFields.get(node.type);
592
+ const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData.get(node.type);
593
+ if (subFieldFn) {
594
+ const subFields = subFieldFn({
595
+ node,
596
+ req
597
+ });
598
+ const data = subFieldDataFn({
599
+ node,
600
+ req
601
+ }) ?? {};
602
+ const originalData = subFieldDataFn({
603
+ node: originalNodeIDMap[id],
604
+ req
605
+ }) ?? {};
606
+ if (subFields?.length) {
607
+ await beforeValidateTraverseFields({
608
+ id,
609
+ collection,
610
+ context,
611
+ data,
612
+ doc: originalData,
613
+ fields: subFields,
614
+ global,
615
+ operation,
616
+ overrideAccess,
617
+ path,
618
+ req,
619
+ schemaPath,
620
+ siblingData: data,
621
+ siblingDoc: originalData
622
+ });
623
+ }
624
+ }
625
+ }
626
+ return value;
627
+ }]
628
+ },
629
+ i18n: featureI18n,
630
+ outputSchema: ({
631
+ collectionIDFieldTypes,
632
+ config,
633
+ field,
634
+ interfaceNameDefinitions,
635
+ isRequired
636
+ }) => {
637
+ let outputSchema = {
638
+ // This schema matches the SerializedEditorState type so far, that it's possible to cast SerializedEditorState to this schema without any errors.
639
+ // In the future, we should
640
+ // 1) allow recursive children
641
+ // 2) Pass in all the different types for every node added to the editorconfig. This can be done with refs in the schema.
642
+ type: withNullableJSONSchemaType('object', isRequired),
643
+ properties: {
644
+ root: {
645
+ type: 'object',
646
+ additionalProperties: false,
647
+ properties: {
648
+ type: {
649
+ type: 'string'
650
+ },
651
+ children: {
652
+ type: 'array',
653
+ items: {
654
+ type: 'object',
655
+ additionalProperties: true,
569
656
  properties: {
570
- root: {
571
- type: 'object',
572
- additionalProperties: false,
573
- properties: {
574
- type: {
575
- type: 'string'
576
- },
577
- children: {
578
- type: 'array',
579
- items: {
580
- type: 'object',
581
- additionalProperties: true,
582
- properties: {
583
- type: {
584
- type: 'string'
585
- },
586
- version: {
587
- type: 'integer'
588
- }
589
- },
590
- required: [
591
- 'type',
592
- 'version'
593
- ]
594
- }
595
- },
596
- direction: {
597
- oneOf: [
598
- {
599
- enum: [
600
- 'ltr',
601
- 'rtl'
602
- ]
603
- },
604
- {
605
- type: 'null'
606
- }
607
- ]
608
- },
609
- format: {
610
- type: 'string',
611
- enum: [
612
- 'left',
613
- 'start',
614
- 'center',
615
- 'right',
616
- 'end',
617
- 'justify',
618
- ''
619
- ]
620
- },
621
- indent: {
622
- type: 'integer'
623
- },
624
- version: {
625
- type: 'integer'
626
- }
627
- },
628
- required: [
629
- 'children',
630
- 'direction',
631
- 'format',
632
- 'indent',
633
- 'type',
634
- 'version'
635
- ]
636
- }
657
+ type: {
658
+ type: 'string'
659
+ },
660
+ version: {
661
+ type: 'integer'
662
+ }
637
663
  },
638
- required: [
639
- 'root'
640
- ]
641
- };
642
- for (const modifyOutputSchema of finalSanitizedEditorConfig.features.generatedTypes.modifyOutputSchemas){
643
- outputSchema = modifyOutputSchema({
644
- collectionIDFieldTypes,
645
- config,
646
- currentSchema: outputSchema,
647
- field,
648
- interfaceNameDefinitions,
649
- isRequired
650
- });
664
+ required: ['type', 'version']
665
+ }
666
+ },
667
+ direction: {
668
+ oneOf: [{
669
+ enum: ['ltr', 'rtl']
670
+ }, {
671
+ type: 'null'
672
+ }]
673
+ },
674
+ format: {
675
+ type: 'string',
676
+ enum: ['left', 'start', 'center', 'right', 'end', 'justify', '']
677
+ },
678
+ indent: {
679
+ type: 'integer'
680
+ },
681
+ version: {
682
+ type: 'integer'
651
683
  }
652
- return outputSchema;
653
- },
654
- validate: richTextValidateHOC({
655
- editorConfig: finalSanitizedEditorConfig
656
- })
684
+ },
685
+ required: ['children', 'direction', 'format', 'indent', 'type', 'version']
686
+ }
687
+ },
688
+ required: ['root']
657
689
  };
690
+ for (const modifyOutputSchema of finalSanitizedEditorConfig.features.generatedTypes.modifyOutputSchemas) {
691
+ outputSchema = modifyOutputSchema({
692
+ collectionIDFieldTypes,
693
+ config,
694
+ currentSchema: outputSchema,
695
+ field,
696
+ interfaceNameDefinitions,
697
+ isRequired
698
+ });
699
+ }
700
+ return outputSchema;
701
+ },
702
+ validate: richTextValidateHOC({
703
+ editorConfig: finalSanitizedEditorConfig
704
+ })
658
705
  };
706
+ };
659
707
  }
660
708
  export { AlignFeature } from './features/align/server/index.js';
661
709
  export { BlockquoteFeature } from './features/blockquote/server/index.js';
@@ -703,5 +751,4 @@ export { sanitizeUrl, validateUrl } from './lexical/utils/url.js';
703
751
  export { defaultRichTextValue } from './populateGraphQL/defaultValue.js';
704
752
  export { createServerFeature } from './utilities/createServerFeature.js';
705
753
  export { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js';
706
-
707
754
  //# sourceMappingURL=index.js.map