@payloadcms/richtext-lexical 4.0.0-internal.4804abd → 4.0.0-internal.4c2ee12

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 (602) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/exports/client/Field-MT4FK3IP.js +2 -0
  3. package/dist/exports/client/Field-MT4FK3IP.js.map +7 -0
  4. package/dist/exports/client/chunk-3LRZDIIG.js +2 -0
  5. package/dist/exports/client/{chunk-X3D4LZS7.js.map → chunk-3LRZDIIG.js.map} +4 -4
  6. package/dist/exports/client/chunk-E6LSRRP2.js +2 -0
  7. package/dist/exports/client/chunk-E6LSRRP2.js.map +7 -0
  8. package/dist/exports/client/chunk-ZQX5HXUL.js +2 -0
  9. package/dist/exports/client/chunk-ZQX5HXUL.js.map +7 -0
  10. package/dist/exports/client/component-6DQLENIE.js +2 -0
  11. package/dist/exports/client/component-6DQLENIE.js.map +7 -0
  12. package/dist/exports/client/componentInline-HNE5G4TE.js +2 -0
  13. package/dist/exports/client/index.d.ts +1 -2
  14. package/dist/exports/client/index.d.ts.map +1 -1
  15. package/dist/exports/client/index.js +28 -28
  16. package/dist/exports/client/index.js.map +4 -4
  17. package/dist/features/align/client/toolbarAlignGroup.d.ts.map +1 -1
  18. package/dist/features/blocks/client/component/BlockReordering/index.d.ts +11 -0
  19. package/dist/features/blocks/client/component/BlockReordering/index.d.ts.map +1 -0
  20. package/dist/features/blocks/client/component/BlockReordering/index.js +18 -0
  21. package/dist/features/blocks/client/component/BlockReordering/index.js.map +1 -0
  22. package/dist/features/blocks/client/component/index.d.ts +0 -6
  23. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  24. package/dist/features/blocks/client/component/index.js +169 -101
  25. package/dist/features/blocks/client/component/index.js.map +1 -1
  26. package/dist/features/blocks/client/component/useBlockReordering.d.ts +16 -0
  27. package/dist/features/blocks/client/component/useBlockReordering.d.ts.map +1 -0
  28. package/dist/features/blocks/client/component/useBlockReordering.js +178 -0
  29. package/dist/features/blocks/client/component/useBlockReordering.js.map +1 -0
  30. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.d.ts.map +1 -1
  31. package/dist/features/blocks/client/componentInline/index.css +0 -1
  32. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  33. package/dist/features/blocks/client/componentInline/index.js +30 -22
  34. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  35. package/dist/features/blocks/client/getBlockImageComponent.d.ts +1 -1
  36. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts +9 -0
  37. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts.map +1 -0
  38. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js +95 -0
  39. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js.map +1 -0
  40. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts.map +1 -1
  41. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  42. package/dist/features/blocks/client/nodes/BlocksNode.js +0 -10
  43. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  44. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
  45. package/dist/features/blocks/server/graphQLPopulationPromise.d.ts.map +1 -1
  46. package/dist/features/blocks/server/index.js +2 -2
  47. package/dist/features/blocks/server/index.js.map +1 -1
  48. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts.map +1 -1
  49. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  50. package/dist/features/blocks/server/nodes/BlocksNode.js +1 -12
  51. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  52. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  53. package/dist/features/blocks/server/nodes/InlineBlocksNode.js +2 -2
  54. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  55. package/dist/features/blocks/server/schema.d.ts +2 -0
  56. package/dist/features/blocks/server/schema.d.ts.map +1 -1
  57. package/dist/features/blocks/server/schema.js +7 -9
  58. package/dist/features/blocks/server/schema.js.map +1 -1
  59. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  60. package/dist/features/blocks/server/validate.js +1 -1
  61. package/dist/features/blocks/server/validate.js.map +1 -1
  62. package/dist/features/converters/htmlToLexical/index.d.ts.map +1 -1
  63. package/dist/features/converters/lexicalToHtml/async/converters/heading.js +1 -1
  64. package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -1
  65. package/dist/features/converters/lexicalToHtml/async/converters/list.d.ts.map +1 -1
  66. package/dist/features/converters/lexicalToHtml/async/converters/list.js +4 -3
  67. package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -1
  68. package/dist/features/converters/lexicalToHtml/async/converters/upload.js +3 -3
  69. package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
  70. package/dist/features/converters/lexicalToHtml/shared/cssColors.d.ts.map +1 -1
  71. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.d.ts.map +1 -1
  72. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js +3 -2
  73. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js.map +1 -1
  74. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js +1 -1
  75. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -1
  76. package/dist/features/converters/lexicalToHtml/sync/converters/list.d.ts.map +1 -1
  77. package/dist/features/converters/lexicalToHtml/sync/converters/list.js +4 -3
  78. package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -1
  79. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js +3 -3
  80. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -1
  81. package/dist/features/converters/lexicalToJSX/converter/converters/heading.d.ts.map +1 -1
  82. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +2 -1
  83. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
  84. package/dist/features/converters/lexicalToJSX/converter/converters/list.d.ts.map +1 -1
  85. package/dist/features/converters/lexicalToJSX/converter/converters/list.js +2 -1
  86. package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
  87. package/dist/features/converters/lexicalToJSX/converter/converters/upload.d.ts.map +1 -1
  88. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js +4 -5
  89. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
  90. package/dist/features/converters/lexicalToMarkdown/index.d.ts.map +1 -1
  91. package/dist/features/converters/markdownToLexical/index.d.ts.map +1 -1
  92. package/dist/features/converters/utilities/payloadPopulateFn.d.ts.map +1 -1
  93. package/dist/features/converters/utilities/payloadPopulateFn.js +4 -2
  94. package/dist/features/converters/utilities/payloadPopulateFn.js.map +1 -1
  95. package/dist/features/debug/testRecorder/client/plugin/index.css +0 -1
  96. package/dist/features/format/shared/toolbarFormatGroup.d.ts.map +1 -1
  97. package/dist/features/heading/constants.d.ts +2 -0
  98. package/dist/features/heading/constants.d.ts.map +1 -0
  99. package/dist/features/heading/constants.js +2 -0
  100. package/dist/features/heading/constants.js.map +1 -0
  101. package/dist/features/heading/server/index.d.ts.map +1 -1
  102. package/dist/features/heading/server/index.js +5 -1
  103. package/dist/features/heading/server/index.js.map +1 -1
  104. package/dist/features/heading/server/schema.d.ts.map +1 -1
  105. package/dist/features/heading/server/validate.d.ts +6 -0
  106. package/dist/features/heading/server/validate.d.ts.map +1 -0
  107. package/dist/features/heading/server/validate.js +15 -0
  108. package/dist/features/heading/server/validate.js.map +1 -0
  109. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +12 -2
  110. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
  111. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +18 -1
  112. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  113. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +1 -1
  114. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  115. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +3 -3
  116. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  117. package/dist/features/horizontalRule/server/schema.d.ts +1 -0
  118. package/dist/features/horizontalRule/server/schema.d.ts.map +1 -1
  119. package/dist/features/horizontalRule/server/schema.js +6 -5
  120. package/dist/features/horizontalRule/server/schema.js.map +1 -1
  121. package/dist/features/indent/client/IndentPlugin.d.ts.map +1 -1
  122. package/dist/features/indent/client/IndentPlugin.js +122 -1
  123. package/dist/features/indent/client/IndentPlugin.js.map +1 -1
  124. package/dist/features/indent/client/toolbarIndentGroup.d.ts.map +1 -1
  125. package/dist/features/indent/server/i18n.d.ts.map +1 -1
  126. package/dist/features/indent/server/i18n.js +74 -37
  127. package/dist/features/indent/server/i18n.js.map +1 -1
  128. package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
  129. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  130. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +8 -5
  131. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  132. package/dist/features/link/client/plugins/floatingLinkEditor/index.css +0 -2
  133. package/dist/features/link/markdownTransformer.d.ts.map +1 -1
  134. package/dist/features/link/nodes/AutoLinkNode.d.ts +1 -1
  135. package/dist/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  136. package/dist/features/link/nodes/AutoLinkNode.js +2 -10
  137. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  138. package/dist/features/link/nodes/LinkNode.d.ts +1 -1
  139. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  140. package/dist/features/link/nodes/LinkNode.js +2 -15
  141. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  142. package/dist/features/link/server/baseFields.d.ts.map +1 -1
  143. package/dist/features/link/server/baseFields.js.map +1 -1
  144. package/dist/features/link/server/graphQLPopulationPromise.d.ts.map +1 -1
  145. package/dist/features/link/server/index.js +2 -2
  146. package/dist/features/link/server/index.js.map +1 -1
  147. package/dist/features/link/server/schema.d.ts.map +1 -1
  148. package/dist/features/link/server/validate.d.ts.map +1 -1
  149. package/dist/features/link/server/validate.js +1 -1
  150. package/dist/features/link/server/validate.js.map +1 -1
  151. package/dist/features/lists/checklist/server/index.d.ts.map +1 -1
  152. package/dist/features/lists/checklist/server/index.js +5 -2
  153. package/dist/features/lists/checklist/server/index.js.map +1 -1
  154. package/dist/features/lists/orderedList/server/index.d.ts.map +1 -1
  155. package/dist/features/lists/orderedList/server/index.js +5 -2
  156. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  157. package/dist/features/lists/shared/constants.d.ts +2 -0
  158. package/dist/features/lists/shared/constants.d.ts.map +1 -0
  159. package/dist/features/lists/shared/constants.js +2 -0
  160. package/dist/features/lists/shared/constants.js.map +1 -0
  161. package/dist/features/lists/shared/validate.d.ts +5 -0
  162. package/dist/features/lists/shared/validate.d.ts.map +1 -0
  163. package/dist/features/lists/shared/validate.js +15 -0
  164. package/dist/features/lists/shared/validate.js.map +1 -0
  165. package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -1
  166. package/dist/features/lists/unorderedList/server/index.js +5 -2
  167. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  168. package/dist/features/relationship/client/components/index.css +3 -6
  169. package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
  170. package/dist/features/relationship/client/index.d.ts +2 -2
  171. package/dist/features/relationship/client/index.d.ts.map +1 -1
  172. package/dist/features/relationship/client/index.js.map +1 -1
  173. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  174. package/dist/features/relationship/client/nodes/RelationshipNode.js +0 -3
  175. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  176. package/dist/features/relationship/client/plugins/index.d.ts +2 -2
  177. package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
  178. package/dist/features/relationship/client/plugins/index.js +27 -31
  179. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  180. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts +2 -4
  181. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
  182. package/dist/features/relationship/client/utils/useEnabledRelationships.js +53 -20
  183. package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
  184. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +2 -2
  185. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
  186. package/dist/features/relationship/server/graphQLPopulationPromise.js +2 -2
  187. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  188. package/dist/features/relationship/server/index.d.ts +8 -1
  189. package/dist/features/relationship/server/index.d.ts.map +1 -1
  190. package/dist/features/relationship/server/index.js +28 -11
  191. package/dist/features/relationship/server/index.js.map +1 -1
  192. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  193. package/dist/features/relationship/server/nodes/RelationshipNode.js +1 -5
  194. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  195. package/dist/features/relationship/server/schema.d.ts +3 -2
  196. package/dist/features/relationship/server/schema.d.ts.map +1 -1
  197. package/dist/features/relationship/server/schema.js +9 -12
  198. package/dist/features/relationship/server/schema.js.map +1 -1
  199. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts +1 -6
  200. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -1
  201. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js +1 -5
  202. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js.map +1 -1
  203. package/dist/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -1
  204. package/dist/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -1
  205. package/dist/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -1
  206. package/dist/features/table/client/index.d.ts.map +1 -0
  207. package/dist/features/table/client/index.js.map +1 -0
  208. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts +8 -0
  209. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts.map +1 -0
  210. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js +19 -0
  211. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js.map +1 -0
  212. package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.css +0 -1
  213. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -0
  214. package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.js +17 -44
  215. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js.map +1 -0
  216. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -0
  217. package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.js +41 -18
  218. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js.map +1 -0
  219. package/dist/features/table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -0
  220. package/dist/features/table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -0
  221. package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.css +0 -3
  222. package/dist/features/table/client/plugins/TablePlugin/TableGridPopup/index.d.ts.map +1 -0
  223. package/dist/features/table/client/plugins/TablePlugin/TableGridPopup/index.js.map +1 -0
  224. package/dist/features/table/client/plugins/TablePlugin/index.d.ts.map +1 -0
  225. package/dist/features/table/client/plugins/TablePlugin/index.js.map +1 -0
  226. package/dist/features/table/client/utils/debounce.d.ts.map +1 -0
  227. package/dist/features/table/client/utils/debounce.js.map +1 -0
  228. package/dist/features/table/client/utils/useDebounce.d.ts.map +1 -0
  229. package/dist/features/table/client/utils/useDebounce.js.map +1 -0
  230. package/dist/features/table/markdownTransformer.d.ts.map +1 -0
  231. package/dist/features/table/markdownTransformer.js.map +1 -0
  232. package/dist/features/table/server/index.d.ts +3 -0
  233. package/dist/features/table/server/index.d.ts.map +1 -0
  234. package/dist/features/{experimental_table → table}/server/index.js +4 -4
  235. package/dist/features/table/server/index.js.map +1 -0
  236. package/dist/features/table/server/schema.d.ts.map +1 -0
  237. package/dist/features/table/server/schema.js.map +1 -0
  238. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.d.ts +8 -0
  239. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.d.ts.map +1 -0
  240. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js +80 -0
  241. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js.map +1 -0
  242. package/dist/features/toolbars/fixed/client/Toolbar/index.css +78 -6
  243. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  244. package/dist/features/toolbars/fixed/client/Toolbar/index.js +19 -1
  245. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  246. package/dist/features/toolbars/inline/client/Toolbar/index.css +0 -1
  247. package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -1
  248. package/dist/features/toolbars/inline/client/Toolbar/index.js +17 -2
  249. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  250. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  251. package/dist/features/toolbars/shared/ToolbarButton/index.js +1 -0
  252. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  253. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  254. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +85 -32
  255. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  256. package/dist/features/toolbars/shared/ToolbarDropdown/index.css +16 -14
  257. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  258. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.d.ts +5 -0
  259. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.d.ts.map +1 -0
  260. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js +79 -0
  261. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js.map +1 -0
  262. package/dist/features/typesServer.d.ts +17 -12
  263. package/dist/features/typesServer.d.ts.map +1 -1
  264. package/dist/features/typesServer.js.map +1 -1
  265. package/dist/features/upload/client/component/index.css +0 -2
  266. package/dist/features/upload/client/component/index.js +2 -1
  267. package/dist/features/upload/client/component/index.js.map +1 -1
  268. package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
  269. package/dist/features/upload/client/index.d.ts +3 -2
  270. package/dist/features/upload/client/index.d.ts.map +1 -1
  271. package/dist/features/upload/client/index.js.map +1 -1
  272. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  273. package/dist/features/upload/client/nodes/UploadNode.js +0 -7
  274. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  275. package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
  276. package/dist/features/upload/client/plugin/index.js +50 -53
  277. package/dist/features/upload/client/plugin/index.js.map +1 -1
  278. package/dist/features/upload/server/graphQLPopulationPromise.d.ts +2 -2
  279. package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
  280. package/dist/features/upload/server/graphQLPopulationPromise.js +1 -1
  281. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  282. package/dist/features/upload/server/index.d.ts +7 -3
  283. package/dist/features/upload/server/index.d.ts.map +1 -1
  284. package/dist/features/upload/server/index.js +20 -16
  285. package/dist/features/upload/server/index.js.map +1 -1
  286. package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
  287. package/dist/features/upload/server/nodes/UploadNode.js +1 -9
  288. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  289. package/dist/features/upload/server/schema.d.ts +4 -16
  290. package/dist/features/upload/server/schema.d.ts.map +1 -1
  291. package/dist/features/upload/server/schema.js +8 -10
  292. package/dist/features/upload/server/schema.js.map +1 -1
  293. package/dist/features/upload/server/validate.d.ts +2 -2
  294. package/dist/features/upload/server/validate.d.ts.map +1 -1
  295. package/dist/features/upload/server/validate.js +4 -1
  296. package/dist/features/upload/server/validate.js.map +1 -1
  297. package/dist/field/Diff/converters/listitem/index.d.ts.map +1 -1
  298. package/dist/field/Diff/converters/listitem/index.js +2 -1
  299. package/dist/field/Diff/converters/listitem/index.js.map +1 -1
  300. package/dist/field/Diff/converters/relationship/index.css +0 -1
  301. package/dist/field/Diff/converters/unknown/index.css +0 -1
  302. package/dist/field/Diff/converters/upload/index.css +0 -1
  303. package/dist/field/Diff/converters/upload/index.js.map +1 -1
  304. package/dist/field/Diff/index.css +0 -2
  305. package/dist/field/Diff/index.d.ts +3 -2
  306. package/dist/field/Diff/index.d.ts.map +1 -1
  307. package/dist/field/Diff/index.js +3 -2
  308. package/dist/field/Diff/index.js.map +1 -1
  309. package/dist/field/Field.d.ts.map +1 -1
  310. package/dist/field/Field.js +26 -16
  311. package/dist/field/Field.js.map +1 -1
  312. package/dist/field/RenderLexical/index.d.ts +3 -1
  313. package/dist/field/RenderLexical/index.d.ts.map +1 -1
  314. package/dist/field/RenderLexical/index.js +23 -23
  315. package/dist/field/RenderLexical/index.js.map +1 -1
  316. package/dist/field/ViewSelector.d.ts.map +1 -1
  317. package/dist/field/ViewSelector.js +1 -0
  318. package/dist/field/ViewSelector.js.map +1 -1
  319. package/dist/field/bundled.css +1 -1
  320. package/dist/field/index.css +2 -3
  321. package/dist/field/rscEntry.d.ts +2 -2
  322. package/dist/field/rscEntry.d.ts.map +1 -1
  323. package/dist/field/rscEntry.js.map +1 -1
  324. package/dist/i18n.d.ts.map +1 -1
  325. package/dist/i18n.js +68 -0
  326. package/dist/i18n.js.map +1 -1
  327. package/dist/index.d.ts +5 -5
  328. package/dist/index.d.ts.map +1 -1
  329. package/dist/index.js +31 -52
  330. package/dist/index.js.map +1 -1
  331. package/dist/lexical/LexicalEditor.css +30 -19
  332. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  333. package/dist/lexical/LexicalEditor.js +62 -99
  334. package/dist/lexical/LexicalEditor.js.map +1 -1
  335. package/dist/lexical/LexicalProvider.d.ts.map +1 -1
  336. package/dist/lexical/LexicalProvider.js +7 -22
  337. package/dist/lexical/LexicalProvider.js.map +1 -1
  338. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  339. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  340. package/dist/lexical/config/server/loader.d.ts +1 -1
  341. package/dist/lexical/config/server/loader.d.ts.map +1 -1
  342. package/dist/lexical/config/server/loader.js +2 -2
  343. package/dist/lexical/config/server/loader.js.map +1 -1
  344. package/dist/lexical/config/server/sanitize.d.ts +1 -1
  345. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  346. package/dist/lexical/config/server/sanitize.js +2 -2
  347. package/dist/lexical/config/server/sanitize.js.map +1 -1
  348. package/dist/lexical/plugins/DecoratorPlugin/index.d.ts.map +1 -1
  349. package/dist/lexical/plugins/DecoratorPlugin/index.js +24 -21
  350. package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
  351. package/dist/lexical/plugins/InsertParagraphAtEnd/index.css +18 -25
  352. package/dist/lexical/plugins/InsertParagraphAtEnd/index.d.ts.map +1 -1
  353. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js +27 -14
  354. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
  355. package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts.map +1 -1
  356. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js +21 -0
  357. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js.map +1 -1
  358. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +0 -1
  359. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  360. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +2 -21
  361. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  362. package/dist/lexical/plugins/SlashMenu/index.css +0 -2
  363. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.css +1 -0
  364. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +2 -2
  365. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  366. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
  367. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +2 -0
  368. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  369. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +16 -2
  370. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  371. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts +7 -0
  372. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts.map +1 -0
  373. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js +65 -0
  374. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js.map +1 -0
  375. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -1
  376. package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  377. package/dist/lexical/plugins/handles/utils/setHandlePosition.js +2 -0
  378. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  379. package/dist/lexical/theme/EditorTheme.css +0 -2
  380. package/dist/lexical/ui/ContentEditable.css +19 -14
  381. package/dist/lexical/ui/ContentEditable.d.ts +2 -1
  382. package/dist/lexical/ui/ContentEditable.d.ts.map +1 -1
  383. package/dist/lexical/ui/ContentEditable.js +21 -7
  384. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  385. package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
  386. package/dist/lexical/ui/icons/H3/index.js +13 -6
  387. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  388. package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -1
  389. package/dist/lexical/ui/icons/H4/index.js +13 -6
  390. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  391. package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -1
  392. package/dist/lexical/ui/icons/H5/index.js +13 -6
  393. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  394. package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -1
  395. package/dist/lexical/ui/icons/H6/index.js +13 -6
  396. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  397. package/dist/lexical/utils/markdown/createBlockNode.d.ts +1 -1
  398. package/dist/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
  399. package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
  400. package/dist/lexical/utils/point.d.ts.map +1 -1
  401. package/dist/lexical/utils/rect.d.ts.map +1 -1
  402. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.d.ts +2 -0
  403. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.d.ts.map +1 -0
  404. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.js +2 -0
  405. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.js.map +1 -0
  406. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.d.ts +2 -0
  407. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.d.ts.map +1 -0
  408. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.js +2 -0
  409. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.js.map +1 -0
  410. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.d.ts +2 -0
  411. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.d.ts.map +1 -0
  412. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.js +2 -0
  413. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.js.map +1 -0
  414. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.d.ts +2 -0
  415. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.d.ts.map +1 -0
  416. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.js +2 -0
  417. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.js.map +1 -0
  418. package/dist/lexical-proxy/@lexical-react/ReactExtension.d.ts +2 -0
  419. package/dist/lexical-proxy/@lexical-react/ReactExtension.d.ts.map +1 -0
  420. package/dist/lexical-proxy/@lexical-react/ReactExtension.js +2 -0
  421. package/dist/lexical-proxy/@lexical-react/ReactExtension.js.map +1 -0
  422. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.d.ts +2 -0
  423. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.d.ts.map +1 -0
  424. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.js +2 -0
  425. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.js.map +1 -0
  426. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.d.ts +2 -0
  427. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.d.ts.map +1 -0
  428. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.js +2 -0
  429. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.js.map +1 -0
  430. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.d.ts +2 -0
  431. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.d.ts.map +1 -0
  432. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.js +2 -0
  433. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.js.map +1 -0
  434. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.d.ts +2 -0
  435. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.d.ts.map +1 -0
  436. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.js +2 -0
  437. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.js.map +1 -0
  438. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.d.ts +2 -0
  439. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.d.ts.map +1 -0
  440. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.js +2 -0
  441. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.js.map +1 -0
  442. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.d.ts +2 -0
  443. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.d.ts.map +1 -0
  444. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.js +2 -0
  445. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.js.map +1 -0
  446. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.d.ts +2 -0
  447. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.d.ts.map +1 -0
  448. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.js +2 -0
  449. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.js.map +1 -0
  450. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.d.ts +2 -0
  451. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.d.ts.map +1 -0
  452. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.js +2 -0
  453. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.js.map +1 -0
  454. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.d.ts +2 -0
  455. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.d.ts.map +1 -0
  456. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.js +2 -0
  457. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.js.map +1 -0
  458. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.d.ts +2 -0
  459. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.d.ts.map +1 -0
  460. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.js +2 -0
  461. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.js.map +1 -0
  462. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  463. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts.map +1 -1
  464. package/dist/presets/llmInstructions.d.ts +2 -0
  465. package/dist/presets/llmInstructions.d.ts.map +1 -0
  466. package/dist/presets/llmInstructions.js +13 -0
  467. package/dist/presets/llmInstructions.js.map +1 -0
  468. package/dist/types/builtInNodes.d.ts +1 -1
  469. package/dist/types/builtInNodes.d.ts.map +1 -1
  470. package/dist/types/builtInNodes.js +8 -3
  471. package/dist/types/builtInNodes.js.map +1 -1
  472. package/dist/types/index.d.ts +4 -7
  473. package/dist/types/index.d.ts.map +1 -1
  474. package/dist/types/index.js.map +1 -1
  475. package/dist/types/jsonSchemaHelpers.d.ts +5 -1
  476. package/dist/types/jsonSchemaHelpers.d.ts.map +1 -1
  477. package/dist/types/jsonSchemaHelpers.js +7 -2
  478. package/dist/types/jsonSchemaHelpers.js.map +1 -1
  479. package/dist/types/nodeTypes.d.ts +6 -1
  480. package/dist/types/nodeTypes.d.ts.map +1 -1
  481. package/dist/types/nodeTypes.js.map +1 -1
  482. package/dist/utilities/applyBaseFilterToFields.d.ts.map +1 -1
  483. package/dist/utilities/applyBaseFilterToFields.js.map +1 -1
  484. package/dist/utilities/buildInitialState.d.ts +3 -2
  485. package/dist/utilities/buildInitialState.d.ts.map +1 -1
  486. package/dist/utilities/buildInitialState.js +1 -0
  487. package/dist/utilities/buildInitialState.js.map +1 -1
  488. package/dist/utilities/createServerFeature.d.ts +1 -1
  489. package/dist/utilities/createServerFeature.d.ts.map +1 -1
  490. package/dist/utilities/createServerFeature.js +2 -2
  491. package/dist/utilities/createServerFeature.js.map +1 -1
  492. package/dist/utilities/editorConfigFactory.d.ts +6 -6
  493. package/dist/utilities/editorConfigFactory.d.ts.map +1 -1
  494. package/dist/utilities/editorConfigFactory.js +9 -9
  495. package/dist/utilities/editorConfigFactory.js.map +1 -1
  496. package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts +1 -1
  497. package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts.map +1 -1
  498. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -1
  499. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -1
  500. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -1
  501. package/dist/utilities/generateImportMap.d.ts +3 -3
  502. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  503. package/dist/utilities/generateImportMap.js +3 -7
  504. package/dist/utilities/generateImportMap.js.map +1 -1
  505. package/dist/utilities/generateSchemaMap.d.ts +1 -1
  506. package/dist/utilities/generateSchemaMap.d.ts.map +1 -1
  507. package/dist/utilities/getDefaultSanitizedEditorConfig.d.ts +2 -2
  508. package/dist/utilities/getDefaultSanitizedEditorConfig.d.ts.map +1 -1
  509. package/dist/utilities/getDefaultSanitizedEditorConfig.js +6 -17
  510. package/dist/utilities/getDefaultSanitizedEditorConfig.js.map +1 -1
  511. package/dist/utilities/recurseNodeTree.d.ts.map +1 -1
  512. package/dist/utilities/upgradeLexicalData/index.js +6 -3
  513. package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
  514. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
  515. package/dist/utilities/useLexicalFeature.d.ts.map +1 -1
  516. package/dist/validate/hasText.d.ts +2 -2
  517. package/dist/validate/hasText.d.ts.map +1 -1
  518. package/dist/validate/hasText.js.map +1 -1
  519. package/dist/validate/index.d.ts +1 -1
  520. package/dist/validate/index.d.ts.map +1 -1
  521. package/package.json +99 -27
  522. package/dist/@types/assets.d.js +0 -2
  523. package/dist/@types/assets.d.js.map +0 -1
  524. package/dist/dependencyChecker.spec.js +0 -16
  525. package/dist/dependencyChecker.spec.js.map +0 -1
  526. package/dist/exports/client/Field-DXKR3OGV.js +0 -2
  527. package/dist/exports/client/Field-DXKR3OGV.js.map +0 -7
  528. package/dist/exports/client/bundled.css +0 -1
  529. package/dist/exports/client/chunk-ESITTE3C.js +0 -2
  530. package/dist/exports/client/chunk-ESITTE3C.js.map +0 -7
  531. package/dist/exports/client/chunk-UD4DQ4AK.js +0 -2
  532. package/dist/exports/client/chunk-UD4DQ4AK.js.map +0 -7
  533. package/dist/exports/client/chunk-X3D4LZS7.js +0 -2
  534. package/dist/exports/client/component-PHZQBOJE.js +0 -2
  535. package/dist/exports/client/component-PHZQBOJE.js.map +0 -7
  536. package/dist/exports/client/componentInline-H24N7GUG.js +0 -2
  537. package/dist/exports/server/rsc.browser.d.ts +0 -11
  538. package/dist/exports/server/rsc.browser.d.ts.map +0 -1
  539. package/dist/exports/server/rsc.browser.js +0 -10
  540. package/dist/exports/server/rsc.browser.js.map +0 -1
  541. package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts +0 -11
  542. package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts.map +0 -1
  543. package/dist/features/blocks/client/component/removeEmptyArrayValues.js +0 -20
  544. package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +0 -1
  545. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js +0 -180
  546. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js.map +0 -1
  547. package/dist/features/experimental_table/client/index.d.ts.map +0 -1
  548. package/dist/features/experimental_table/client/index.js.map +0 -1
  549. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +0 -1
  550. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +0 -1
  551. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +0 -1
  552. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +0 -1
  553. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +0 -1
  554. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +0 -1
  555. package/dist/features/experimental_table/client/plugins/TablePlugin/TableGridPopup/index.d.ts.map +0 -1
  556. package/dist/features/experimental_table/client/plugins/TablePlugin/TableGridPopup/index.js.map +0 -1
  557. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +0 -1
  558. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +0 -1
  559. package/dist/features/experimental_table/client/utils/debounce.d.ts.map +0 -1
  560. package/dist/features/experimental_table/client/utils/debounce.js.map +0 -1
  561. package/dist/features/experimental_table/client/utils/useDebounce.d.ts.map +0 -1
  562. package/dist/features/experimental_table/client/utils/useDebounce.js.map +0 -1
  563. package/dist/features/experimental_table/markdownTransformer.d.ts.map +0 -1
  564. package/dist/features/experimental_table/markdownTransformer.js.map +0 -1
  565. package/dist/features/experimental_table/server/index.d.ts +0 -3
  566. package/dist/features/experimental_table/server/index.d.ts.map +0 -1
  567. package/dist/features/experimental_table/server/index.js.map +0 -1
  568. package/dist/features/experimental_table/server/schema.d.ts.map +0 -1
  569. package/dist/features/experimental_table/server/schema.js.map +0 -1
  570. package/dist/features/link/markdownTransformer.spec.js +0 -195
  571. package/dist/features/link/markdownTransformer.spec.js.map +0 -1
  572. package/dist/field/clientEntry.d.ts +0 -29
  573. package/dist/field/clientEntry.d.ts.map +0 -1
  574. package/dist/field/clientEntry.js +0 -86
  575. package/dist/field/clientEntry.js.map +0 -1
  576. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +0 -88
  577. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +0 -1
  578. package/dist/lexical/utils/url.spec.js +0 -114
  579. package/dist/lexical/utils/url.spec.js.map +0 -1
  580. package/dist/utilities/jsx/jsx.spec.js +0 -178
  581. package/dist/utilities/jsx/jsx.spec.js.map +0 -1
  582. /package/dist/exports/client/{componentInline-H24N7GUG.js.map → componentInline-HNE5G4TE.js.map} +0 -0
  583. /package/dist/features/{experimental_table → table}/client/index.d.ts +0 -0
  584. /package/dist/features/{experimental_table → table}/client/index.js +0 -0
  585. /package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.d.ts +0 -0
  586. /package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.css +0 -0
  587. /package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.d.ts +0 -0
  588. /package/dist/features/{experimental_table → table}/client/plugins/TableHoverActionsPlugin/index.d.ts +0 -0
  589. /package/dist/features/{experimental_table → table}/client/plugins/TableHoverActionsPlugin/index.js +0 -0
  590. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.d.ts +0 -0
  591. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.js +0 -0
  592. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.css +0 -0
  593. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.d.ts +0 -0
  594. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.js +0 -0
  595. /package/dist/features/{experimental_table → table}/client/utils/debounce.d.ts +0 -0
  596. /package/dist/features/{experimental_table → table}/client/utils/debounce.js +0 -0
  597. /package/dist/features/{experimental_table → table}/client/utils/useDebounce.d.ts +0 -0
  598. /package/dist/features/{experimental_table → table}/client/utils/useDebounce.js +0 -0
  599. /package/dist/features/{experimental_table → table}/markdownTransformer.d.ts +0 -0
  600. /package/dist/features/{experimental_table → table}/markdownTransformer.js +0 -0
  601. /package/dist/features/{experimental_table → table}/server/schema.d.ts +0 -0
  602. /package/dist/features/{experimental_table → table}/server/schema.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalEditor.js","names":["c","_c","useLexicalComposerContext","LexicalErrorBoundary","HistoryPlugin","OnChangePlugin","RichTextPlugin","useLexicalEditable","BLUR_COMMAND","COMMAND_PRIORITY_LOW","FOCUS_COMMAND","React","useCallback","useEffect","useState","useEditorConfigContext","EditorPlugin","ClipboardPlugin","DecoratorPlugin","AddBlockHandlePlugin","DraggableBlockPlugin","InsertParagraphAtEndPlugin","MarkdownShortcutPlugin","NodeViewOverridePlugin","NormalizeSelectionPlugin","SelectAllPlugin","SlashMenuPlugin","TextPlugin","LexicalContentEditable","EditorReadyPlugin","$","editor","t0","t1","root","getRootElement","dataset","lexicalEditable","String","isEditable","registerEditableListener","editable","el","LexicalEditor","props","editorConfig","editorContainerRef","isSmallWidthViewport","onChange","rtl","editorConfigContext","floatingAnchorElem","setFloatingAnchorElem","Symbol","for","_floatingAnchorElem","onRef","t2","uuid","console","error","parentEditor","registerChild","handleFocus","focusEditor","handleBlur","blurEditor","unregisterFocus","registerCommand","unregisterBlur","unregisterChild","t3","_jsxs","Fragment","children","features","plugins","map","_temp","className","dir","undefined","ref","_temp2","_jsx","contentEditable","ignoreSelectionChange","editorState","editor_0","tags","has","size","admin","hideDraggableBlockElement","anchorElem","hideAddBlockButton","plugin_1","plugin","position","desktopOnly","clientProps","key","markdownTransformers","length","_temp3","_temp4","_temp5","plugin_0","plugin_2","plugin_3","plugin_4"],"sources":["../../src/lexical/LexicalEditor.tsx"],"sourcesContent":["'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary.js'\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin.js'\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin.js'\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin.js'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { BLUR_COMMAND, COMMAND_PRIORITY_LOW, FOCUS_COMMAND } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useState } from 'react'\n\nimport type { LexicalProviderProps } from './LexicalProvider.js'\n\nimport { useEditorConfigContext } from './config/client/EditorConfigProvider.js'\nimport './LexicalEditor.css'\nimport { EditorPlugin } from './EditorPlugin.js'\nimport { ClipboardPlugin } from './plugins/ClipboardPlugin/index.js'\nimport { DecoratorPlugin } from './plugins/DecoratorPlugin/index.js'\nimport { AddBlockHandlePlugin } from './plugins/handles/AddBlockHandlePlugin/index.js'\nimport { DraggableBlockPlugin } from './plugins/handles/DraggableBlockPlugin/index.js'\nimport { InsertParagraphAtEndPlugin } from './plugins/InsertParagraphAtEnd/index.js'\nimport { MarkdownShortcutPlugin } from './plugins/MarkdownShortcut/index.js'\nimport { NodeViewOverridePlugin } from './plugins/NodeViewOverridePlugin/index.js'\nimport { NormalizeSelectionPlugin } from './plugins/NormalizeSelection/index.js'\nimport { SelectAllPlugin } from './plugins/SelectAllPlugin/index.js'\nimport { SlashMenuPlugin } from './plugins/SlashMenu/index.js'\nimport { TextPlugin } from './plugins/TextPlugin/index.js'\nimport { LexicalContentEditable } from './ui/ContentEditable.js'\n\n/**\n * Marks the Lexical root element with `data-lexical-editable` once the editor\n * is mounted and interactive. Tests can query this attribute to confirm that\n * React event handlers are attached and keyboard input will be processed.\n */\nfunction EditorReadyPlugin() {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n const root = editor.getRootElement()\n if (root) {\n root.dataset.lexicalEditable = String(editor.isEditable())\n }\n return editor.registerEditableListener((editable) => {\n const el = editor.getRootElement()\n if (el) {\n el.dataset.lexicalEditable = String(editable)\n }\n })\n }, [editor])\n\n return null\n}\n\nexport const LexicalEditor: React.FC<\n {\n editorContainerRef: React.RefObject<HTMLDivElement | null>\n isSmallWidthViewport: boolean\n } & Pick<LexicalProviderProps, 'editorConfig' | 'onChange' | 'rtl'>\n> = (props) => {\n const { editorConfig, editorContainerRef, isSmallWidthViewport, onChange, rtl } = props\n const editorConfigContext = useEditorConfigContext()\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n const [floatingAnchorElem, setFloatingAnchorElem] = useState<HTMLDivElement | null>(null)\n const onRef = useCallback((_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem)\n }\n }, [])\n\n useEffect(() => {\n if (!editorConfigContext?.uuid) {\n console.error('Lexical Editor must be used within an EditorConfigProvider')\n return\n }\n if (editorConfigContext?.parentEditor?.uuid) {\n editorConfigContext.parentEditor?.registerChild(editorConfigContext.uuid, editorConfigContext)\n }\n\n const handleFocus = () => {\n editorConfigContext.focusEditor(editorConfigContext)\n }\n\n const handleBlur = () => {\n editorConfigContext.blurEditor(editorConfigContext)\n }\n\n const unregisterFocus = editor.registerCommand<MouseEvent>(\n FOCUS_COMMAND,\n () => {\n handleFocus()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n const unregisterBlur = editor.registerCommand<MouseEvent>(\n BLUR_COMMAND,\n () => {\n handleBlur()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n return () => {\n unregisterFocus()\n unregisterBlur()\n editorConfigContext.parentEditor?.unregisterChild?.(editorConfigContext.uuid)\n }\n }, [editor, editorConfigContext])\n\n return (\n <React.Fragment>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'aboveContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n <div className=\"editor-container\" dir={rtl ? 'rtl' : undefined} ref={editorContainerRef}>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'top') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n <RichTextPlugin\n contentEditable={\n <div className=\"editor-scroller\">\n <div className=\"editor\" ref={onRef}>\n <LexicalContentEditable editorConfig={editorConfig} />\n </div>\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n <EditorReadyPlugin />\n <NormalizeSelectionPlugin />\n {isEditable && <InsertParagraphAtEndPlugin />}\n <DecoratorPlugin />\n <ClipboardPlugin />\n <TextPlugin features={editorConfig.features} />\n <SelectAllPlugin />\n <NodeViewOverridePlugin />\n {isEditable && (\n <OnChangePlugin\n // Selection changes can be ignored here, reducing the\n // frequency that the FieldComponent and Payload receive updates.\n // Selection changes are only needed if you are saving selection state\n ignoreSelectionChange\n onChange={(editorState, editor, tags) => {\n // Ignore any onChange event triggered by focus only\n if (!tags.has('focus') || tags.size > 1) {\n if (onChange != null) {\n onChange(editorState, editor, tags)\n }\n }\n }}\n />\n )}\n {floatingAnchorElem && (\n <React.Fragment>\n {!isSmallWidthViewport && isEditable && (\n <React.Fragment>\n {editorConfig.admin?.hideDraggableBlockElement ? null : (\n <DraggableBlockPlugin anchorElem={floatingAnchorElem} />\n )}\n {editorConfig.admin?.hideAddBlockButton ? null : (\n <AddBlockHandlePlugin anchorElem={floatingAnchorElem} />\n )}\n </React.Fragment>\n )}\n {editorConfig.features.plugins?.map((plugin) => {\n if (\n plugin.position === 'floatingAnchorElem' &&\n !(plugin.desktopOnly === true && isSmallWidthViewport)\n ) {\n return (\n <EditorPlugin\n anchorElem={floatingAnchorElem}\n clientProps={plugin.clientProps}\n key={plugin.key}\n plugin={plugin}\n />\n )\n }\n })}\n {isEditable && (\n <React.Fragment>\n <SlashMenuPlugin anchorElem={floatingAnchorElem} />\n </React.Fragment>\n )}\n </React.Fragment>\n )}\n {isEditable && (\n <React.Fragment>\n <HistoryPlugin />\n {editorConfig?.features?.markdownTransformers?.length > 0 && <MarkdownShortcutPlugin />}\n </React.Fragment>\n )}\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'normal') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'bottom') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n </div>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'belowContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LexicalEditor.js","names":["c","_c","useLexicalComposerContext","LexicalErrorBoundary","HistoryPlugin","OnChangePlugin","RichTextPlugin","useLexicalEditable","useTranslation","BLUR_COMMAND","COMMAND_PRIORITY_LOW","FOCUS_COMMAND","React","useEffect","useState","useEditorConfigContext","EditorPlugin","ClipboardPlugin","DecoratorPlugin","AddBlockHandlePlugin","DraggableBlockPlugin","InsertParagraphAtEndPlugin","MarkdownShortcutPlugin","NodeViewOverridePlugin","NormalizeSelectionPlugin","SelectAllPlugin","SlashMenuPlugin","TextPlugin","LexicalContentEditable","LexicalEditor","props","$","editorConfig","editorContainerRef","isSmallWidthViewport","onChange","rtl","editorConfigContext","editor","isEditable","t","instructionsID","useId","hasTabIndentation","features","enabledFeatures","includes","floatingAnchorElem","setFloatingAnchorElem","t0","Symbol","for","_floatingAnchorElem","onRef","t1","t2","uuid","console","error","parentEditor","registerChild","handleFocus","focusEditor","handleBlur","blurEditor","unregisterFocus","registerCommand","unregisterBlur","unregisterChild","_jsxs","Fragment","children","plugins","map","_temp","className","dir","undefined","ref","_temp2","_jsx","contentEditable","ignoreSelectionChange","editorState","editor_0","tags","has","size","admin","hideDraggableBlockElement","anchorElem","hideAddBlockButton","plugin_1","plugin","position","desktopOnly","clientProps","key","markdownTransformers","length","_temp3","_temp4","id","_temp5","plugin_0","plugin_2","plugin_3","plugin_4"],"sources":["../../src/lexical/LexicalEditor.tsx"],"sourcesContent":["'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary.js'\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin.js'\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin.js'\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin.js'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { useTranslation } from '@payloadcms/ui'\nimport { BLUR_COMMAND, COMMAND_PRIORITY_LOW, FOCUS_COMMAND } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useState } from 'react'\n\nimport type { LexicalProviderProps } from './LexicalProvider.js'\n\nimport { useEditorConfigContext } from './config/client/EditorConfigProvider.js'\nimport './LexicalEditor.css'\nimport { EditorPlugin } from './EditorPlugin.js'\nimport { ClipboardPlugin } from './plugins/ClipboardPlugin/index.js'\nimport { DecoratorPlugin } from './plugins/DecoratorPlugin/index.js'\nimport { AddBlockHandlePlugin } from './plugins/handles/AddBlockHandlePlugin/index.js'\nimport { DraggableBlockPlugin } from './plugins/handles/DraggableBlockPlugin/index.js'\nimport { InsertParagraphAtEndPlugin } from './plugins/InsertParagraphAtEnd/index.js'\nimport { MarkdownShortcutPlugin } from './plugins/MarkdownShortcut/index.js'\nimport { NodeViewOverridePlugin } from './plugins/NodeViewOverridePlugin/index.js'\nimport { NormalizeSelectionPlugin } from './plugins/NormalizeSelection/index.js'\nimport { SelectAllPlugin } from './plugins/SelectAllPlugin/index.js'\nimport { SlashMenuPlugin } from './plugins/SlashMenu/index.js'\nimport { TextPlugin } from './plugins/TextPlugin/index.js'\nimport { LexicalContentEditable } from './ui/ContentEditable.js'\n\nexport const LexicalEditor: React.FC<\n {\n editorContainerRef: React.RefObject<HTMLDivElement | null>\n isSmallWidthViewport: boolean\n } & Pick<LexicalProviderProps, 'editorConfig' | 'onChange' | 'rtl'>\n> = (props) => {\n const { editorConfig, editorContainerRef, isSmallWidthViewport, onChange, rtl } = props\n const editorConfigContext = useEditorConfigContext()\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n const { t } = useTranslation<Record<string, never>, string>()\n const instructionsID = React.useId()\n const hasTabIndentation = isEditable && editorConfig.features.enabledFeatures.includes('indent')\n\n const [floatingAnchorElem, setFloatingAnchorElem] = useState<HTMLDivElement | null>(null)\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem)\n }\n }\n\n useEffect(() => {\n if (!editorConfigContext?.uuid) {\n console.error('Lexical Editor must be used within an EditorConfigProvider')\n return\n }\n if (editorConfigContext?.parentEditor?.uuid) {\n editorConfigContext.parentEditor?.registerChild(editorConfigContext.uuid, editorConfigContext)\n }\n\n const handleFocus = () => {\n editorConfigContext.focusEditor(editorConfigContext)\n }\n\n const handleBlur = () => {\n editorConfigContext.blurEditor(editorConfigContext)\n }\n\n const unregisterFocus = editor.registerCommand(\n FOCUS_COMMAND,\n () => {\n handleFocus()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n const unregisterBlur = editor.registerCommand(\n BLUR_COMMAND,\n () => {\n handleBlur()\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n\n return () => {\n unregisterFocus()\n unregisterBlur()\n editorConfigContext.parentEditor?.unregisterChild?.(editorConfigContext.uuid)\n }\n }, [editor, editorConfigContext])\n\n return (\n <React.Fragment>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'aboveContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n <div className=\"editor-container\" dir={rtl ? 'rtl' : undefined} ref={editorContainerRef}>\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'top') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n <RichTextPlugin\n contentEditable={\n <div className=\"editor-scroller\">\n <div className=\"editor\" ref={onRef}>\n <LexicalContentEditable\n editorConfig={editorConfig}\n instructionsID={hasTabIndentation ? instructionsID : undefined}\n />\n </div>\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n <NormalizeSelectionPlugin />\n {isEditable && <InsertParagraphAtEndPlugin />}\n <DecoratorPlugin />\n <ClipboardPlugin />\n <TextPlugin features={editorConfig.features} />\n <SelectAllPlugin />\n <NodeViewOverridePlugin />\n {isEditable && (\n <OnChangePlugin\n // Selection changes can be ignored here, reducing the\n // frequency that the FieldComponent and Payload receive updates.\n // Selection changes are only needed if you are saving selection state\n ignoreSelectionChange\n onChange={(editorState, editor, tags) => {\n // Ignore any onChange event triggered by focus only\n if (!tags.has('focus') || tags.size > 1) {\n if (onChange != null) {\n onChange(editorState, editor, tags)\n }\n }\n }}\n />\n )}\n {floatingAnchorElem && (\n <React.Fragment>\n {!isSmallWidthViewport && isEditable && (\n <React.Fragment>\n {editorConfig.admin?.hideDraggableBlockElement ? null : (\n <DraggableBlockPlugin anchorElem={floatingAnchorElem} />\n )}\n {editorConfig.admin?.hideAddBlockButton ? null : (\n <AddBlockHandlePlugin anchorElem={floatingAnchorElem} />\n )}\n </React.Fragment>\n )}\n {editorConfig.features.plugins?.map((plugin) => {\n if (\n plugin.position === 'floatingAnchorElem' &&\n !(plugin.desktopOnly === true && isSmallWidthViewport)\n ) {\n return (\n <EditorPlugin\n anchorElem={floatingAnchorElem}\n clientProps={plugin.clientProps}\n key={plugin.key}\n plugin={plugin}\n />\n )\n }\n })}\n {isEditable && (\n <React.Fragment>\n <SlashMenuPlugin anchorElem={floatingAnchorElem} />\n </React.Fragment>\n )}\n </React.Fragment>\n )}\n {isEditable && (\n <React.Fragment>\n <HistoryPlugin />\n {editorConfig?.features?.markdownTransformers?.length > 0 && <MarkdownShortcutPlugin />}\n </React.Fragment>\n )}\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'normal') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'bottom') {\n return (\n <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n )\n }\n })}\n </div>\n {hasTabIndentation && (\n <p className=\"ContentEditable__keyboard-hint\" id={instructionsID}>\n {t('lexical:indent:keyboardHint')}\n </p>\n )}\n {editorConfig.features.plugins?.map((plugin) => {\n if (plugin.position === 'belowContainer') {\n return <EditorPlugin clientProps={plugin.clientProps} key={plugin.key} plugin={plugin} />\n }\n })}\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,oBAAoB,QAAQ;AACrC,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,YAAY,EAAEC,oBAAoB,EAAEC,aAAa,QAAQ;AAClE,YAAYC,KAAA,MAAW;AACvB,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAIpC,SAASC,sBAAsB,QAAQ;AACvC,OAAO;AACP,SAASC,YAAY,QAAQ;AAC7B,SAASC,eAAe,QAAQ;AAChC,SAASC,eAAe,QAAQ;AAChC,SAASC,oBAAoB,QAAQ;AACrC,SAASC,oBAAoB,QAAQ;AACrC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,sBAAsB,QAAQ;AACvC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,wBAAwB,QAAQ;AACzC,SAASC,eAAe,QAAQ;AAChC,SAASC,eAAe,QAAQ;AAChC,SAASC,UAAU,QAAQ;AAC3B,SAASC,sBAAsB,QAAQ;AAEvC,OAAO,MAAMC,aAAA,GAKTC,KAAA;EAAA,MAAAC,CAAA,GAAA9B,EAAA;EACF;IAAA+B,YAAA;IAAAC,kBAAA;IAAAC,oBAAA;IAAAC,QAAA;IAAAC;EAAA,IAAkFN,KAAA;EAClF,MAAAO,mBAAA,GAA4BtB,sBAAA;EAC5B,OAAAuB,MAAA,IAAiBpC,yBAAA;EACjB,MAAAqC,UAAA,GAAmBhC,kBAAA;EACnB;IAAAiC;EAAA,IAAchC,cAAA;EACd,MAAAiC,cAAA,GAAuB7B,KAAA,CAAA8B,KAAA,CAAW;EAClC,MAAAC,iBAAA,GAA0BJ,UAAA,IAAcP,YAAA,CAAAY,QAAA,CAAAC,eAAA,CAAAC,QAAA,CAA+C;EAEvF,OAAAC,kBAAA,EAAAC,qBAAA,IAAoDlC,QAAA,KAAgC;EAAA,IAAAmC,EAAA;EAAA,IAAAlB,CAAA,QAAAmB,MAAA,CAAAC,GAAA;IACtEF,EAAA,GAAAG,mBAAA;MAAA,IACRA,mBAAA,SAAwB;QAC1BJ,qBAAA,CAAsBI,mBAAA;MAAA;IAAA;IAE1BrB,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAJA,MAAAsB,KAAA,GAAcJ,EAId;EAAA,IAAAK,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAxB,CAAA,QAAAO,MAAA,IAAAP,CAAA,QAAAM,mBAAA;IAEUiB,EAAA,GAAAA,CAAA;MAAA,KACHjB,mBAAA,EAAAmB,IAAA;QACHC,OAAA,CAAAC,KAAA,CAAc;QAAA;MAAA;MAAA,IAGZrB,mBAAA,EAAAsB,YAAA,EAAAH,IAAA;QACFnB,mBAAA,CAAAsB,YAAA,EAAAC,aAAA,CAAgDvB,mBAAA,CAAAmB,IAAA,EAA0BnB,mBAAA;MAAA;MAG5E,MAAAwB,WAAA,GAAAA,CAAA;QACExB,mBAAA,CAAAyB,WAAA,CAAgCzB,mBAAA;MAAA;MAGlC,MAAA0B,UAAA,GAAAA,CAAA;QACE1B,mBAAA,CAAA2B,UAAA,CAA+B3B,mBAAA;MAAA;MAGjC,MAAA4B,eAAA,GAAwB3B,MAAA,CAAA4B,eAAA,CAAAvD,aAAA;QAGpBkD,WAAA;QAAA;MAAA,GAAAnD,oBAGF;MAGF,MAAAyD,cAAA,GAAuB7B,MAAA,CAAA4B,eAAA,CAAAzD,YAAA;QAGnBsD,UAAA;QAAA;MAAA,GAAArD,oBAGF;MAAA;QAIAuD,eAAA;QACAE,cAAA;QACA9B,mBAAA,CAAAsB,YAAA,EAAAS,eAAA,GAAoD/B,mBAAA,CAAAmB,IAAA;MAAA;IAAA;IAErDD,EAAA,IAACjB,MAAA,EAAQD,mBAAA;IAAoBN,CAAA,MAAAO,MAAA;IAAAP,CAAA,MAAAM,mBAAA;IAAAN,CAAA,MAAAuB,EAAA;IAAAvB,CAAA,MAAAwB,EAAA;EAAA;IAAAD,EAAA,GAAAvB,CAAA;IAAAwB,EAAA,GAAAxB,CAAA;EAAA;EAxChClB,SAAA,CAAUyC,EAwCV,EAAGC,EAA6B;EAAA,OAG9Bc,KAAA,CAAAzD,KAAA,CAAA0D,QAAA;IAAAC,QAAA,GACGvC,YAAA,CAAAY,QAAA,CAAA4B,OAAA,EAAAC,GAAA,CAAAC,KAAA,GAKDL,KAAA,CAAC;MAAAM,SAAA,EAAc;MAAAC,GAAA,EAAwBxC,GAAA,GAAM,QAAAyC,SAAQ;MAAAC,GAAA,EAAgB7C,kBAAA;MAAAsC,QAAA,GAClEvC,YAAA,CAAAY,QAAA,CAAA4B,OAAA,EAAAC,GAAA,CAAAM,MAAA,GAODC,IAAA,CAAA1E,cAAA;QAAA2E,eAAA,EAEID,IAAA,CAAC;UAAAL,SAAA,EAAc;UAAAJ,QAAA,EACbS,IAAA,CAAC;YAAAL,SAAA,EAAc;YAAAG,GAAA,EAAczB,KAAA;YAAAkB,QAAA,EAC3BS,IAAA,CAAApD,sBAAA;cAAAI,YAAA;cAAAS,cAAA,EAEkBE,iBAAA,GAAoBF,cAAA,GAAAoC;YAAiB,C;;;;UAO/DG,IAAA,CAAAxD,wBAAA,IAAC,GACAe,UAAA,IAAcyC,IAAA,CAAA3D,0BAAA,IAAC,GAChB2D,IAAA,CAAA9D,eAAA,IAAC,GACD8D,IAAA,CAAA/D,eAAA,IAAC,GACD+D,IAAA,CAAArD,UAAA;QAAAiB,QAAA,EAAsBZ,YAAA,CAAAY;MAAA,C,GACtBoC,IAAA,CAAAvD,eAAA,IAAC,GACDuD,IAAA,CAAAzD,sBAAA,IAAC,GACAgB,UAAA,IACCyC,IAAA,CAAA3E,cAAA;QAAA6E,qBAAA;QAAA/C,QAAA,EAAAA,CAAAgD,WAAA,EAAAC,QAAA,EAAAC,IAAA;UAAA,IAOQ,CAACA,IAAA,CAAAC,GAAA,CAAS,YAAYD,IAAA,CAAAE,IAAA,IAAY;YAAA,IAChCpD,QAAA,QAAY;cACdA,QAAA,CAASgD,WAAA,EAAa7C,QAAA,EAAQ+C,IAAA;YAAA;UAAA;QAAA;MAAA,C,GAMvCtC,kBAAA,IACCsB,KAAA,CAAAzD,KAAA,CAAA0D,QAAA;QAAAC,QAAA,GACG,CAACrC,oBAAA,IAAwBK,UAAA,IACxB8B,KAAA,CAAAzD,KAAA,CAAA0D,QAAA;UAAAC,QAAA,GACGvC,YAAA,CAAAwD,KAAA,EAAAC,yBAAA,UACCT,IAAA,CAAA5D,oBAAA;YAAAsE,UAAA,EAAkC3C;UAAA,C,GAEnCf,YAAA,CAAAwD,KAAA,EAAAG,kBAAA,UACCX,IAAA,CAAA7D,oBAAA;YAAAuE,UAAA,EAAkC3C;UAAA,C;YAIvCf,YAAA,CAAAY,QAAA,CAAA4B,OAAA,EAAAC,GAAA,CAAAmB,QAAA;UAAA,IAEGC,QAAA,CAAAC,QAAA,KAAoB,0BAClBD,QAAA,CAAAE,WAAA,SAAuB,IAAQ7D,oBAAmB;YAAA,OAGlD8C,IAAA,CAAAhE,YAAA;cAAA0E,UAAA,EACc3C,kBAAA;cAAAiD,WAAA,EACCH,QAAA,CAAAG,WAAA;cAAAH,MAAA,EAELA;YAAA,GADHA,QAAA,CAAAI,GAAU;UAAA;QAAA,IAMtB1D,UAAA,IACCyC,IAAA,CAAApE,KAAA,CAAA0D,QAAA;UAAAC,QAAA,EACES,IAAA,CAAAtD,eAAA;YAAAgE,UAAA,EAA6B3C;UAAA,C;;UAKpCR,UAAA,IACC8B,KAAA,CAAAzD,KAAA,CAAA0D,QAAA;QAAAC,QAAA,GACES,IAAA,CAAA5E,aAAA,IAAC,GACA4B,YAAA,EAAAY,QAAA,EAAAsD,oBAAA,EAAAC,MAAA,IAAuD,IAAKnB,IAAA,CAAA1D,sBAAA,IAAC;MAAA,C,GAGjEU,YAAA,CAAAY,QAAA,CAAA4B,OAAA,EAAAC,GAAA,CAAA2B,MAAA,GAOApE,YAAA,CAAAY,QAAA,CAAA4B,OAAA,EAAAC,GAAA,CAAA4B,MAAA;IAAA,C,GAQF1D,iBAAA,IACCqC,IAAA,CAAC;MAAAL,SAAA,EAAY;MAAA2B,EAAA,EAAqC7D,cAAA;MAAA8B,QAAA,EAC/C/B,CAAA,CAAE;IAAA,C,GAGNR,YAAA,CAAAY,QAAA,CAAA4B,OAAA,EAAAC,GAAA,CAAA8B,MAAA;EAAA,C;CAOP;AAhLI,SAAA7B,MAAAmB,MAAA;EAAA,IA6DQA,MAAA,CAAAC,QAAA,KAAoB;IAAA,OACfd,IAAA,CAAAhE,YAAA;MAAAgF,WAAA,EAA2BH,MAAA,CAAAG,WAAA;MAAAH;IAAA,GAAyBA,MAAA,CAAAI,GAAU;EAAA;AAAA;AA9D3E,SAAAlB,OAAAyB,QAAA;EAAA,IAmEUX,QAAA,CAAAC,QAAA,KAAoB;IAAA,OAEpBd,IAAA,CAAAhE,YAAA;MAAAgF,WAAA,EAA2BH,QAAA,CAAAG,WAAA;MAAAH,MAAA,EAA6CA;IAAA,GAApBA,QAAA,CAAAI,GAAU;EAAA;AAAA;AArExE,SAAAG,OAAAK,QAAA;EAAA,IAsJUZ,QAAA,CAAAC,QAAA,KAAoB;IAAA,OAEpBd,IAAA,CAAAhE,YAAA;MAAAgF,WAAA,EAA2BH,QAAA,CAAAG,WAAA;MAAAH,MAAA,EAA6CA;IAAA,GAApBA,QAAA,CAAAI,GAAU;EAAA;AAAA;AAxJxE,SAAAI,OAAAK,QAAA;EAAA,IA6JUb,QAAA,CAAAC,QAAA,KAAoB;IAAA,OAEpBd,IAAA,CAAAhE,YAAA;MAAAgF,WAAA,EAA2BH,QAAA,CAAAG,WAAA;MAAAH,MAAA,EAA6CA;IAAA,GAApBA,QAAA,CAAAI,GAAU;EAAA;AAAA;AA/JxE,SAAAM,OAAAI,QAAA;EAAA,IA0KQd,QAAA,CAAAC,QAAA,KAAoB;IAAA,OACfd,IAAA,CAAAhE,YAAA;MAAAgF,WAAA,EAA2BH,QAAA,CAAAG,WAAA;MAAAH,MAAA,EAA6CA;IAAA,GAApBA,QAAA,CAAAI,GAAU;EAAA;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalProvider.d.ts","sourceRoot":"","sources":["../../src/lexical/LexicalProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAUpE,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,2BAA2B,CAAA;IACzC,UAAU,EAAE,yBAAyB,CAAA;IACrC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACtF,QAAQ,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,qBAAqB,CAAA;CAC7B,CAAA;AAwBD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAgH1D,CAAA"}
1
+ {"version":3,"file":"LexicalProvider.d.ts","sourceRoot":"","sources":["../../src/lexical/LexicalProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AAUpE,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,2BAA2B,CAAA;IACzC,UAAU,EAAE,yBAAyB,CAAA;IACrC,oBAAoB,EAAE,OAAO,CAAA;IAC7B,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACtF,QAAQ,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,qBAAqB,CAAA;CAC7B,CAAA;AAwBD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA8F1D,CAAA"}
@@ -47,8 +47,7 @@ export const LexicalProvider = props => {
47
47
  const parentContext = useEditorConfigContext();
48
48
  const editDepth = useEditDepth();
49
49
  const editorContainerRef = React.useRef(null);
50
- // useMemo for the initialConfig. `readOnly` and `value` are intentionally excluded from deps
51
- // to avoid full remounts on every save (which would destroy cursor position and undo history).
50
+ // useMemo for the initialConfig that depends on readOnly and value
52
51
  const initialConfig = useMemo(() => {
53
52
  if (value && typeof value !== 'object') {
54
53
  throw new Error('The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: ' + JSON.stringify(value));
@@ -77,30 +76,16 @@ export const LexicalProvider = props => {
77
76
  // Important: do not add readOnly and value to the dependencies array. This will cause the entire lexical editor to re-render if the document is saved, which will
78
77
  // cause the editor to lose focus.
79
78
  }, [editorConfig, views, currentView]);
80
- // Track whether the editor has ever been editable. Once it transitions to editable,
81
- // we never remount due to transient readOnly changes (e.g. during form save processing).
82
- const hasBeenEditable = React.useRef(readOnly !== true);
83
- if (readOnly !== true) {
84
- hasBeenEditable.current = true;
85
- }
86
- // Compute the effective editable state for the config.
87
- // Override the memoized config's editable value to reflect the current readOnly prop.
88
- const effectiveConfig = useMemo(() => ({
89
- ...initialConfig,
90
- editable: readOnly !== true
91
- }), [initialConfig, readOnly]);
92
- if (!effectiveConfig) {
79
+ if (!initialConfig) {
93
80
  return /*#__PURE__*/_jsx("p", {
94
81
  children: "Loading..."
95
82
  });
96
83
  }
97
- // Use `hasBeenEditable` to build the key: only force a remount when the editor has NEVER
98
- // been editable and transitions to editable for the first time. After that, LexicalComposer
99
- // stays mounted (preserving cursor/focus/undo) and we rely on Lexical's internal
100
- // `editor.setEditable()` for transient readOnly changes during saves.
101
- const editableKey = hasBeenEditable.current ? 'editable' : 'readonly';
84
+ // We need to add initialConfig.editable to the key to force a re-render when the readOnly prop changes.
85
+ // Without it, there were cases where lexical editors inside drawers turn readOnly initially - a few miliseconds later they turn editable, but the editor does not re-render and stays readOnly.
86
+ // We also add currentView to force re-render when the view changes.
102
87
  return /*#__PURE__*/_jsx(LexicalComposer, {
103
- initialConfig: effectiveConfig,
88
+ initialConfig: initialConfig,
104
89
  children: /*#__PURE__*/_jsx(EditorConfigProvider, {
105
90
  editorConfig: editorConfig,
106
91
  editorContainerRef: editorContainerRef,
@@ -120,6 +105,6 @@ export const LexicalProvider = props => {
120
105
  })
121
106
  })
122
107
  })
123
- }, composerKey + editableKey + currentView);
108
+ }, composerKey + initialConfig.editable + currentView);
124
109
  };
125
110
  //# sourceMappingURL=LexicalProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LexicalProvider.js","names":["LexicalComposer","useEditDepth","React","useMemo","useRichTextView","EditorConfigProvider","useEditorConfigContext","LexicalEditor","LexicalEditorComponent","getEnabledNodes","NestProviders","children","providers","length","Component","_jsx","slice","LexicalProvider","props","composerKey","editorConfig","fieldProps","isSmallWidthViewport","onChange","readOnly","rtl","value","currentView","views","parentContext","editDepth","editorContainerRef","useRef","initialConfig","Error","JSON","stringify","Array","isArray","nodeViews","nodes","editable","editorState","undefined","namespace","lexical","onError","error","theme","hasBeenEditable","current","effectiveConfig","editableKey","features"],"sources":["../../src/lexical/LexicalProvider.tsx"],"sourcesContent":["'use client'\nimport type { InitialConfigType } from '@lexical/react/LexicalComposer.js'\nimport type { EditorState, LexicalEditor, SerializedEditorState } from 'lexical'\n\nimport { LexicalComposer } from '@lexical/react/LexicalComposer.js'\nimport { useEditDepth } from '@payloadcms/ui'\nimport * as React from 'react'\nimport { useMemo } from 'react'\n\nimport type { LexicalRichTextFieldProps } from '../types/index.js'\nimport type { SanitizedClientEditorConfig } from './config/types.js'\n\nimport { useRichTextView } from '../field/RichTextViewProvider.js'\nimport {\n EditorConfigProvider,\n useEditorConfigContext,\n} from './config/client/EditorConfigProvider.js'\nimport { LexicalEditor as LexicalEditorComponent } from './LexicalEditor.js'\nimport { getEnabledNodes } from './nodes/index.js'\n\nexport type LexicalProviderProps = {\n composerKey: string\n editorConfig: SanitizedClientEditorConfig\n fieldProps: LexicalRichTextFieldProps\n isSmallWidthViewport: boolean\n onChange: (editorState: EditorState, editor: LexicalEditor, tags: Set<string>) => void\n readOnly: boolean\n rtl?: boolean\n value: SerializedEditorState\n}\n\nconst NestProviders = ({\n children,\n providers,\n}: {\n children: React.ReactNode\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n providers: any[]\n}) => {\n if (!providers?.length) {\n return children\n }\n const Component = providers[0]\n if (providers.length > 1) {\n return (\n <Component>\n <NestProviders providers={providers.slice(1)}>{children}</NestProviders>\n </Component>\n )\n }\n return <Component>{children}</Component>\n}\n\nexport const LexicalProvider: React.FC<LexicalProviderProps> = (props) => {\n const {\n composerKey,\n editorConfig,\n fieldProps,\n isSmallWidthViewport,\n onChange,\n readOnly,\n rtl,\n value,\n } = props\n\n const { currentView, views } = useRichTextView()\n\n const parentContext = useEditorConfigContext()\n\n const editDepth = useEditDepth()\n\n const editorContainerRef = React.useRef<HTMLDivElement>(null)\n\n // useMemo for the initialConfig. `readOnly` and `value` are intentionally excluded from deps\n // to avoid full remounts on every save (which would destroy cursor position and undo history).\n const initialConfig = useMemo<InitialConfigType>(() => {\n if (value && typeof value !== 'object') {\n throw new Error(\n 'The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: ' +\n JSON.stringify(value),\n )\n }\n\n if (value && Array.isArray(value) && !('root' in value)) {\n throw new Error(\n 'You have tried to pass in data from the old Slate editor to the new Lexical editor. The data structure is different, thus you will have to migrate your data. We offer a one-line migration script which migrates all your rich text fields: https://payloadcms.com/docs/lexical/migration#migration-via-migration-script-recommended',\n )\n }\n\n if (value && 'jsonContent' in value) {\n throw new Error(\n 'You have tried to pass in data from payload-plugin-lexical. The data structure is different, thus you will have to migrate your data. Migration guide: https://payloadcms.com/docs/lexical/migration#migrating-from-payload-plugin-lexical',\n )\n }\n\n // Use the 'default' view if available, otherwise undefined\n const nodeViews = views?.[currentView]?.nodes\n\n return {\n editable: readOnly !== true,\n editorState: value != null ? JSON.stringify(value) : undefined,\n namespace: editorConfig.lexical.namespace,\n nodes: getEnabledNodes({\n editorConfig,\n nodeViews,\n }),\n onError: (error: Error) => {\n throw error\n },\n theme: editorConfig.lexical.theme,\n }\n // Important: do not add readOnly and value to the dependencies array. This will cause the entire lexical editor to re-render if the document is saved, which will\n // cause the editor to lose focus.\n }, [editorConfig, views, currentView])\n\n // Track whether the editor has ever been editable. Once it transitions to editable,\n // we never remount due to transient readOnly changes (e.g. during form save processing).\n const hasBeenEditable = React.useRef(readOnly !== true)\n if (readOnly !== true) {\n hasBeenEditable.current = true\n }\n\n // Compute the effective editable state for the config.\n // Override the memoized config's editable value to reflect the current readOnly prop.\n const effectiveConfig = useMemo<InitialConfigType>(\n () => ({\n ...initialConfig,\n editable: readOnly !== true,\n }),\n\n [initialConfig, readOnly],\n )\n\n if (!effectiveConfig) {\n return <p>Loading...</p>\n }\n\n // Use `hasBeenEditable` to build the key: only force a remount when the editor has NEVER\n // been editable and transitions to editable for the first time. After that, LexicalComposer\n // stays mounted (preserving cursor/focus/undo) and we rely on Lexical's internal\n // `editor.setEditable()` for transient readOnly changes during saves.\n const editableKey = hasBeenEditable.current ? 'editable' : 'readonly'\n return (\n <LexicalComposer initialConfig={effectiveConfig} key={composerKey + editableKey + currentView}>\n <EditorConfigProvider\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n fieldProps={fieldProps}\n /**\n * Parent editor is not truly the parent editor, if the current editor is part of a drawer and the parent editor is the main editor.\n */\n parentContext={parentContext?.editDepth === editDepth ? parentContext : undefined}\n >\n <NestProviders providers={editorConfig.features.providers}>\n <LexicalEditorComponent\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n isSmallWidthViewport={isSmallWidthViewport}\n onChange={onChange}\n rtl={rtl}\n />\n </NestProviders>\n </EditorConfigProvider>\n </LexicalComposer>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LexicalProvider.js","names":["LexicalComposer","useEditDepth","React","useMemo","useRichTextView","EditorConfigProvider","useEditorConfigContext","LexicalEditor","LexicalEditorComponent","getEnabledNodes","NestProviders","children","providers","length","Component","_jsx","slice","LexicalProvider","props","composerKey","editorConfig","fieldProps","isSmallWidthViewport","onChange","readOnly","rtl","value","currentView","views","parentContext","editDepth","editorContainerRef","useRef","initialConfig","Error","JSON","stringify","Array","isArray","nodeViews","nodes","editable","editorState","undefined","namespace","lexical","onError","error","theme","features"],"sources":["../../src/lexical/LexicalProvider.tsx"],"sourcesContent":["'use client'\nimport type { InitialConfigType } from '@lexical/react/LexicalComposer.js'\nimport type { EditorState, LexicalEditor, SerializedEditorState } from 'lexical'\n\nimport { LexicalComposer } from '@lexical/react/LexicalComposer.js'\nimport { useEditDepth } from '@payloadcms/ui'\nimport * as React from 'react'\nimport { useMemo } from 'react'\n\nimport type { LexicalRichTextFieldProps } from '../types/index.js'\nimport type { SanitizedClientEditorConfig } from './config/types.js'\n\nimport { useRichTextView } from '../field/RichTextViewProvider.js'\nimport {\n EditorConfigProvider,\n useEditorConfigContext,\n} from './config/client/EditorConfigProvider.js'\nimport { LexicalEditor as LexicalEditorComponent } from './LexicalEditor.js'\nimport { getEnabledNodes } from './nodes/index.js'\n\nexport type LexicalProviderProps = {\n composerKey: string\n editorConfig: SanitizedClientEditorConfig\n fieldProps: LexicalRichTextFieldProps\n isSmallWidthViewport: boolean\n onChange: (editorState: EditorState, editor: LexicalEditor, tags: Set<string>) => void\n readOnly: boolean\n rtl?: boolean\n value: SerializedEditorState\n}\n\nconst NestProviders = ({\n children,\n providers,\n}: {\n children: React.ReactNode\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n providers: any[]\n}) => {\n if (!providers?.length) {\n return children\n }\n const Component = providers[0]\n if (providers.length > 1) {\n return (\n <Component>\n <NestProviders providers={providers.slice(1)}>{children}</NestProviders>\n </Component>\n )\n }\n return <Component>{children}</Component>\n}\n\nexport const LexicalProvider: React.FC<LexicalProviderProps> = (props) => {\n const {\n composerKey,\n editorConfig,\n fieldProps,\n isSmallWidthViewport,\n onChange,\n readOnly,\n rtl,\n value,\n } = props\n\n const { currentView, views } = useRichTextView()\n\n const parentContext = useEditorConfigContext()\n\n const editDepth = useEditDepth()\n\n const editorContainerRef = React.useRef<HTMLDivElement>(null)\n\n // useMemo for the initialConfig that depends on readOnly and value\n const initialConfig = useMemo<InitialConfigType>(() => {\n if (value && typeof value !== 'object') {\n throw new Error(\n 'The value passed to the Lexical editor is not an object. This is not supported. Please remove the data from the field and start again. This is the value that was passed in: ' +\n JSON.stringify(value),\n )\n }\n\n if (value && Array.isArray(value) && !('root' in value)) {\n throw new Error(\n 'You have tried to pass in data from the old Slate editor to the new Lexical editor. The data structure is different, thus you will have to migrate your data. We offer a one-line migration script which migrates all your rich text fields: https://payloadcms.com/docs/lexical/migration#migration-via-migration-script-recommended',\n )\n }\n\n if (value && 'jsonContent' in value) {\n throw new Error(\n 'You have tried to pass in data from payload-plugin-lexical. The data structure is different, thus you will have to migrate your data. Migration guide: https://payloadcms.com/docs/lexical/migration#migrating-from-payload-plugin-lexical',\n )\n }\n\n // Use the 'default' view if available, otherwise undefined\n const nodeViews = views?.[currentView]?.nodes\n\n return {\n editable: readOnly !== true,\n editorState: value != null ? JSON.stringify(value) : undefined,\n namespace: editorConfig.lexical.namespace,\n nodes: getEnabledNodes({\n editorConfig,\n nodeViews,\n }),\n onError: (error: Error) => {\n throw error\n },\n theme: editorConfig.lexical.theme,\n }\n // Important: do not add readOnly and value to the dependencies array. This will cause the entire lexical editor to re-render if the document is saved, which will\n // cause the editor to lose focus.\n }, [editorConfig, views, currentView])\n\n if (!initialConfig) {\n return <p>Loading...</p>\n }\n\n // We need to add initialConfig.editable to the key to force a re-render when the readOnly prop changes.\n // Without it, there were cases where lexical editors inside drawers turn readOnly initially - a few miliseconds later they turn editable, but the editor does not re-render and stays readOnly.\n // We also add currentView to force re-render when the view changes.\n return (\n <LexicalComposer\n initialConfig={initialConfig}\n key={composerKey + initialConfig.editable + currentView}\n >\n <EditorConfigProvider\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n fieldProps={fieldProps}\n /**\n * Parent editor is not truly the parent editor, if the current editor is part of a drawer and the parent editor is the main editor.\n */\n parentContext={parentContext?.editDepth === editDepth ? parentContext : undefined}\n >\n <NestProviders providers={editorConfig.features.providers}>\n <LexicalEditorComponent\n editorConfig={editorConfig}\n editorContainerRef={editorContainerRef}\n isSmallWidthViewport={isSmallWidthViewport}\n onChange={onChange}\n rtl={rtl}\n />\n </NestProviders>\n </EditorConfigProvider>\n </LexicalComposer>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"EditorConfigProvider.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/client/EditorConfigProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAIjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAA;AAChG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAO9D,MAAM,WAAW,uBAAuB;IAEtC,UAAU,EAAE,CAAC,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC5D,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAA;IACtE,kBAAkB,CAAC,EAAE,eAAe,CAAA;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,aAAa,CAAA;IACrB,YAAY,EAAE,2BAA2B,CAAA;IACzC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IACnD,UAAU,EAAE,YAAY,CAAC,yBAAyB,EAAE,MAAM,GAAG,YAAY,CAAC,CAAA;IAC1E,aAAa,EAAE,uBAAuB,GAAG,IAAI,CAAA;IAE7C,WAAW,EAAE,CAAC,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC7D,YAAY,EAAE,uBAAuB,CAAA;IACrC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC7E,qBAAqB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAA;IACzF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,IAAI,EAAE,MAAM,CAAA;CACb;AASD,eAAO,MAAM,oBAAoB,GAAI,4EAMlC;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,EAAE,2BAA2B,CAAA;IACzC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAE1D,UAAU,EAAE,yBAAyB,CAAA;IACrC,aAAa,CAAC,EAAE,uBAAuB,CAAA;CACxC,KAAG,KAAK,CAAC,SAoFT,CAAA;AAED,eAAO,MAAM,sBAAsB,QAAO,uBAMzC,CAAA"}
1
+ {"version":3,"file":"EditorConfigProvider.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/client/EditorConfigProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAIjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAA;AAChG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAO9D,MAAM,WAAW,uBAAuB;IAEtC,UAAU,EAAE,CAAC,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC5D,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAA;IACtE,kBAAkB,CAAC,EAAE,eAAe,CAAA;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,aAAa,CAAA;IACrB,YAAY,EAAE,2BAA2B,CAAA;IACzC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IACnD,UAAU,EAAE,YAAY,CAAC,yBAAyB,EAAE,MAAM,GAAG,YAAY,CAAC,CAAA;IAC1E,aAAa,EAAE,uBAAuB,GAAG,IAAI,CAAA;IAE7C,WAAW,EAAE,CAAC,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC7D,YAAY,EAAE,uBAAuB,CAAA;IACrC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,uBAAuB,KAAK,IAAI,CAAA;IAC7E,qBAAqB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAA;IACzF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,IAAI,EAAE,MAAM,CAAA;CACb;AASD,eAAO,MAAM,oBAAoB,+EAM9B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,YAAY,EAAE,2BAA2B,CAAA;IACzC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAA;IAE1D,UAAU,EAAE,yBAAyB,CAAA;IACrC,aAAa,CAAC,EAAE,uBAAuB,CAAA;CACxC,KAAG,KAAK,CAAC,SAoFT,CAAA;AAED,eAAO,MAAM,sBAAsB,QAAO,uBAMzC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/client/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKlE,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAE9D,eAAO,MAAM,sBAAsB,GACjC,UAAU,wBAAwB,KACjC,uBAiOF,CAAA;AAED,wBAAgB,0BAA0B,CACxC,wBAAwB,EAAE,wBAAwB,EAClD,OAAO,CAAC,EAAE,mBAAmB,EAC7B,KAAK,CAAC,EAAE,4BAA4B,EACpC,IAAI,CAAC,EAAE,MAAM,GACZ,2BAA2B,CAQ7B"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/client/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAKlE,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAE9D,eAAO,MAAM,sBAAsB,aACvB,wBAAwB,KACjC,uBAiOF,CAAA;AAED,wBAAgB,0BAA0B,CACxC,wBAAwB,EAAE,wBAAwB,EAClD,OAAO,CAAC,EAAE,mBAAmB,EAC7B,KAAK,CAAC,EAAE,4BAA4B,EACpC,IAAI,CAAC,EAAE,MAAM,GACZ,2BAA2B,CAQ7B"}
@@ -7,5 +7,5 @@ export declare function loadFeatures({ config, isRoot, parentIsLocalized, unSani
7
7
  isRoot?: boolean;
8
8
  parentIsLocalized: boolean;
9
9
  unSanitizedEditorConfig: ServerEditorConfig;
10
- }): Promise<ResolvedServerFeatureMap>;
10
+ }): ResolvedServerFeatureMap;
11
11
  //# sourceMappingURL=loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/server/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EACV,qBAAqB,EAErB,wBAAwB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AA8FrD,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GACnE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAEpD;AAED,wBAAsB,YAAY,CAAC,EACjC,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,uBAAuB,GACxB,EAAE;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,uBAAuB,EAAE,kBAAkB,CAAA;CAC5C,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAyFpC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/server/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EACV,qBAAqB,EAErB,wBAAwB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AA8FrD,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GACnE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAEpD;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,uBAAuB,GACxB,EAAE;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,uBAAuB,EAAE,kBAAkB,CAAA;CAC5C,GAAG,wBAAwB,CAyF3B"}
@@ -57,7 +57,7 @@ function visit(graph, key, visited, stack, currentPath = []) {
57
57
  export function sortFeaturesForOptimalLoading(featureProviders) {
58
58
  return topologicallySortFeatures(featureProviders);
59
59
  }
60
- export async function loadFeatures({
60
+ export function loadFeatures({
61
61
  config,
62
62
  isRoot,
63
63
  parentIsLocalized,
@@ -102,7 +102,7 @@ export async function loadFeatures({
102
102
  }
103
103
  }
104
104
  }
105
- const feature = typeof featureProvider.feature === 'function' ? await featureProvider.feature({
105
+ const feature = typeof featureProvider.feature === 'function' ? featureProvider.feature({
106
106
  config,
107
107
  featureProviderMap,
108
108
  isRoot,
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","names":["createDependencyGraph","featureProviders","graph","fp","key","dependencies","dependenciesPriority","dependenciesSoft","featureProvider","topologicallySortFeatures","visited","stack","visit","reverse","currentPath","Error","includes","join","push","dep","pop","sortFeaturesForOptimalLoading","loadFeatures","config","isRoot","parentIsLocalized","unSanitizedEditorConfig","dedupedByKey","Map","f","features","has","delete","set","Array","from","values","featureProviderMap","map","resolvedFeatures","loaded","length","dependencyKey","priorityDependencyKey","found","get","feature","resolvedFeature","order"],"sources":["../../../../src/lexical/config/server/loader.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport type {\n FeatureProviderServer,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n ServerFeatureProviderMap,\n} from '../../../features/typesServer.js'\nimport type { ServerEditorConfig } from '../types.js'\n\ntype DependencyGraph = {\n [key: string]: {\n dependencies: string[]\n dependenciesPriority: string[]\n dependenciesSoft: string[]\n featureProvider: FeatureProviderServer<unknown, unknown, unknown>\n }\n}\n\nfunction createDependencyGraph(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): DependencyGraph {\n const graph: DependencyGraph = {}\n for (const fp of featureProviders) {\n graph[fp.key] = {\n dependencies: fp.dependencies || [],\n dependenciesPriority: fp.dependenciesPriority || [],\n dependenciesSoft: fp.dependenciesSoft || [],\n featureProvider: fp,\n }\n }\n return graph\n}\n\nfunction topologicallySortFeatures(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown, unknown>[] {\n const graph = createDependencyGraph(featureProviders)\n const visited: { [key: string]: boolean } = {}\n const stack: FeatureProviderServer<unknown, unknown, unknown>[] = []\n\n for (const key in graph) {\n if (!visited[key]) {\n visit(graph, key, visited, stack)\n }\n }\n\n return stack.reverse()\n}\n\nfunction visit(\n graph: DependencyGraph,\n key: string,\n visited: { [key: string]: boolean },\n stack: FeatureProviderServer<unknown, unknown, unknown>[],\n currentPath: string[] = [],\n) {\n if (!graph[key]) {\n throw new Error(`Feature key ${key} is not present in the dependency graph.`)\n }\n\n if (currentPath.includes(key)) {\n throw new Error(`Circular dependency detected: ${currentPath.join(' -> ')} -> ${key}`)\n }\n\n if (visited[key]) {\n return\n }\n\n visited[key] = true\n currentPath.push(key)\n\n // First process the hard priority dependencies\n for (const dep of graph[key].dependenciesPriority) {\n if (!visited[dep]) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the normal dependencies, but make sure to not violate hard dependencies\n for (const dep of graph[key].dependencies) {\n if (!visited[dep] && !graph[key].dependenciesPriority.includes(dep)) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the soft dependencies. Make sure to not violate hard and normal dependencies.\n for (const dep of graph[key].dependenciesSoft) {\n if (\n graph[dep] &&\n !visited[dep] &&\n !graph[key].dependenciesPriority.includes(dep) &&\n !graph[key].dependencies.includes(dep)\n ) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n stack.push(graph[key].featureProvider)\n currentPath.pop()\n}\n\nexport function sortFeaturesForOptimalLoading(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown, unknown>[] {\n return topologicallySortFeatures(featureProviders)\n}\n\nexport async function loadFeatures({\n config,\n isRoot,\n parentIsLocalized,\n unSanitizedEditorConfig,\n}: {\n config: SanitizedConfig\n isRoot?: boolean\n parentIsLocalized: boolean\n unSanitizedEditorConfig: ServerEditorConfig\n}): Promise<ResolvedServerFeatureMap> {\n // First remove all duplicate features. The LAST feature with a given key wins,\n // and keeps the position of its last occurrence (matching the prior reverse/filter/reverse semantics).\n const dedupedByKey = new Map<string, FeatureProviderServer<unknown, unknown, unknown>>()\n for (const f of unSanitizedEditorConfig.features) {\n if (dedupedByKey.has(f.key)) {\n dedupedByKey.delete(f.key)\n }\n dedupedByKey.set(f.key, f)\n }\n unSanitizedEditorConfig.features = Array.from(dedupedByKey.values())\n\n unSanitizedEditorConfig.features = sortFeaturesForOptimalLoading(unSanitizedEditorConfig.features)\n\n const featureProviderMap: ServerFeatureProviderMap = new Map(\n unSanitizedEditorConfig.features.map(\n (f) => [f.key, f] as [string, FeatureProviderServer<unknown, unknown, unknown>],\n ),\n )\n\n const resolvedFeatures: ResolvedServerFeatureMap = new Map()\n\n // Make sure all dependencies declared in the respective features exist\n let loaded = 0\n for (const featureProvider of unSanitizedEditorConfig.features) {\n if (!featureProvider.key) {\n throw new Error(\n `A Feature you've added does not have a key. Please add a key to the feature. This is used to uniquely identify the feature.`,\n )\n }\n if (featureProvider.dependencies?.length) {\n for (const dependencyKey of featureProvider.dependencies) {\n if (!featureProviderMap.has(dependencyKey)) {\n throw new Error(\n `Feature ${featureProvider.key} has a dependency ${dependencyKey} which does not exist.`,\n )\n }\n }\n }\n\n if (featureProvider.dependenciesPriority?.length) {\n for (const priorityDependencyKey of featureProvider.dependenciesPriority) {\n // look in the resolved features instead of the editorConfig.features, as a dependency requires the feature to be loaded before it, contrary to a soft-dependency\n const found = resolvedFeatures.get(priorityDependencyKey)\n if (!found) {\n if (!featureProviderMap.has(priorityDependencyKey)) {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which does not exist.`,\n )\n } else {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which is not loaded before it.`,\n )\n }\n }\n }\n }\n\n const feature =\n typeof featureProvider.feature === 'function'\n ? await featureProvider.feature({\n config,\n featureProviderMap,\n isRoot,\n parentIsLocalized,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n : featureProvider.feature\n\n const resolvedFeature: ResolvedServerFeature<any, any> = feature as ResolvedServerFeature<\n any,\n any\n >\n\n // All these new properties would be added to the feature, as it's mutated. However, this does not cause any damage and allows\n // us to prevent an unnecessary spread operation.\n resolvedFeature.key = featureProvider.key\n resolvedFeature.order = loaded\n resolvedFeature.dependencies = featureProvider.dependencies!\n resolvedFeature.dependenciesPriority = featureProvider.dependenciesPriority!\n resolvedFeature.dependenciesSoft = featureProvider.dependenciesSoft!\n\n resolvedFeatures.set(featureProvider.key, resolvedFeature)\n\n loaded++\n }\n\n return resolvedFeatures\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"loader.js","names":["createDependencyGraph","featureProviders","graph","fp","key","dependencies","dependenciesPriority","dependenciesSoft","featureProvider","topologicallySortFeatures","visited","stack","visit","reverse","currentPath","Error","includes","join","push","dep","pop","sortFeaturesForOptimalLoading","loadFeatures","config","isRoot","parentIsLocalized","unSanitizedEditorConfig","dedupedByKey","Map","f","features","has","delete","set","Array","from","values","featureProviderMap","map","resolvedFeatures","loaded","length","dependencyKey","priorityDependencyKey","found","get","feature","resolvedFeature","order"],"sources":["../../../../src/lexical/config/server/loader.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport type {\n FeatureProviderServer,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n ServerFeatureProviderMap,\n} from '../../../features/typesServer.js'\nimport type { ServerEditorConfig } from '../types.js'\n\ntype DependencyGraph = {\n [key: string]: {\n dependencies: string[]\n dependenciesPriority: string[]\n dependenciesSoft: string[]\n featureProvider: FeatureProviderServer<unknown, unknown, unknown>\n }\n}\n\nfunction createDependencyGraph(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): DependencyGraph {\n const graph: DependencyGraph = {}\n for (const fp of featureProviders) {\n graph[fp.key] = {\n dependencies: fp.dependencies || [],\n dependenciesPriority: fp.dependenciesPriority || [],\n dependenciesSoft: fp.dependenciesSoft || [],\n featureProvider: fp,\n }\n }\n return graph\n}\n\nfunction topologicallySortFeatures(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown, unknown>[] {\n const graph = createDependencyGraph(featureProviders)\n const visited: { [key: string]: boolean } = {}\n const stack: FeatureProviderServer<unknown, unknown, unknown>[] = []\n\n for (const key in graph) {\n if (!visited[key]) {\n visit(graph, key, visited, stack)\n }\n }\n\n return stack.reverse()\n}\n\nfunction visit(\n graph: DependencyGraph,\n key: string,\n visited: { [key: string]: boolean },\n stack: FeatureProviderServer<unknown, unknown, unknown>[],\n currentPath: string[] = [],\n) {\n if (!graph[key]) {\n throw new Error(`Feature key ${key} is not present in the dependency graph.`)\n }\n\n if (currentPath.includes(key)) {\n throw new Error(`Circular dependency detected: ${currentPath.join(' -> ')} -> ${key}`)\n }\n\n if (visited[key]) {\n return\n }\n\n visited[key] = true\n currentPath.push(key)\n\n // First process the hard priority dependencies\n for (const dep of graph[key].dependenciesPriority) {\n if (!visited[dep]) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the normal dependencies, but make sure to not violate hard dependencies\n for (const dep of graph[key].dependencies) {\n if (!visited[dep] && !graph[key].dependenciesPriority.includes(dep)) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the soft dependencies. Make sure to not violate hard and normal dependencies.\n for (const dep of graph[key].dependenciesSoft) {\n if (\n graph[dep] &&\n !visited[dep] &&\n !graph[key].dependenciesPriority.includes(dep) &&\n !graph[key].dependencies.includes(dep)\n ) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n stack.push(graph[key].featureProvider)\n currentPath.pop()\n}\n\nexport function sortFeaturesForOptimalLoading(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown, unknown>[] {\n return topologicallySortFeatures(featureProviders)\n}\n\nexport function loadFeatures({\n config,\n isRoot,\n parentIsLocalized,\n unSanitizedEditorConfig,\n}: {\n config: SanitizedConfig\n isRoot?: boolean\n parentIsLocalized: boolean\n unSanitizedEditorConfig: ServerEditorConfig\n}): ResolvedServerFeatureMap {\n // First remove all duplicate features. The LAST feature with a given key wins,\n // and keeps the position of its last occurrence (matching the prior reverse/filter/reverse semantics).\n const dedupedByKey = new Map<string, FeatureProviderServer<unknown, unknown, unknown>>()\n for (const f of unSanitizedEditorConfig.features) {\n if (dedupedByKey.has(f.key)) {\n dedupedByKey.delete(f.key)\n }\n dedupedByKey.set(f.key, f)\n }\n unSanitizedEditorConfig.features = Array.from(dedupedByKey.values())\n\n unSanitizedEditorConfig.features = sortFeaturesForOptimalLoading(unSanitizedEditorConfig.features)\n\n const featureProviderMap: ServerFeatureProviderMap = new Map(\n unSanitizedEditorConfig.features.map(\n (f) => [f.key, f] as [string, FeatureProviderServer<unknown, unknown, unknown>],\n ),\n )\n\n const resolvedFeatures: ResolvedServerFeatureMap = new Map()\n\n // Make sure all dependencies declared in the respective features exist\n let loaded = 0\n for (const featureProvider of unSanitizedEditorConfig.features) {\n if (!featureProvider.key) {\n throw new Error(\n `A Feature you've added does not have a key. Please add a key to the feature. This is used to uniquely identify the feature.`,\n )\n }\n if (featureProvider.dependencies?.length) {\n for (const dependencyKey of featureProvider.dependencies) {\n if (!featureProviderMap.has(dependencyKey)) {\n throw new Error(\n `Feature ${featureProvider.key} has a dependency ${dependencyKey} which does not exist.`,\n )\n }\n }\n }\n\n if (featureProvider.dependenciesPriority?.length) {\n for (const priorityDependencyKey of featureProvider.dependenciesPriority) {\n // look in the resolved features instead of the editorConfig.features, as a dependency requires the feature to be loaded before it, contrary to a soft-dependency\n const found = resolvedFeatures.get(priorityDependencyKey)\n if (!found) {\n if (!featureProviderMap.has(priorityDependencyKey)) {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which does not exist.`,\n )\n } else {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which is not loaded before it.`,\n )\n }\n }\n }\n }\n\n const feature =\n typeof featureProvider.feature === 'function'\n ? featureProvider.feature({\n config,\n featureProviderMap,\n isRoot,\n parentIsLocalized,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n : featureProvider.feature\n\n const resolvedFeature: ResolvedServerFeature<any, any> = feature as ResolvedServerFeature<\n any,\n any\n >\n\n // All these new properties would be added to the feature, as it's mutated. However, this does not cause any damage and allows\n // us to prevent an unnecessary spread operation.\n resolvedFeature.key = featureProvider.key\n resolvedFeature.order = loaded\n resolvedFeature.dependencies = featureProvider.dependencies!\n resolvedFeature.dependenciesPriority = featureProvider.dependenciesPriority!\n resolvedFeature.dependenciesSoft = featureProvider.dependenciesSoft!\n\n resolvedFeatures.set(featureProvider.key, resolvedFeature)\n\n loaded++\n }\n\n return resolvedFeatures\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,5 +2,5 @@ import type { SanitizedConfig } from 'payload';
2
2
  import type { ResolvedServerFeatureMap, SanitizedServerFeatures } from '../../../features/typesServer.js';
3
3
  import type { SanitizedServerEditorConfig, ServerEditorConfig } from '../types.js';
4
4
  export declare const sanitizeServerFeatures: (features: ResolvedServerFeatureMap) => SanitizedServerFeatures;
5
- export declare function sanitizeServerEditorConfig(editorConfig: ServerEditorConfig, config: SanitizedConfig, parentIsLocalized?: boolean): Promise<SanitizedServerEditorConfig>;
5
+ export declare function sanitizeServerEditorConfig(editorConfig: ServerEditorConfig, config: SanitizedConfig, parentIsLocalized?: boolean): SanitizedServerEditorConfig;
6
6
  //# sourceMappingURL=sanitize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/server/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIlF,eAAO,MAAM,sBAAsB,GACjC,UAAU,wBAAwB,KACjC,uBA0HF,CAAA;AAED,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,eAAe,EACvB,iBAAiB,CAAC,EAAE,OAAO,GAC1B,OAAO,CAAC,2BAA2B,CAAC,CAYtC"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/server/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIlF,eAAO,MAAM,sBAAsB,aACvB,wBAAwB,KACjC,uBA0HF,CAAA;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,eAAe,EACvB,iBAAiB,CAAC,EAAE,OAAO,GAC1B,2BAA2B,CAY7B"}
@@ -104,8 +104,8 @@ export const sanitizeServerFeatures = features => {
104
104
  });
105
105
  return sanitized;
106
106
  };
107
- export async function sanitizeServerEditorConfig(editorConfig, config, parentIsLocalized) {
108
- const resolvedFeatureMap = await loadFeatures({
107
+ export function sanitizeServerEditorConfig(editorConfig, config, parentIsLocalized) {
108
+ const resolvedFeatureMap = loadFeatures({
109
109
  config,
110
110
  parentIsLocalized: parentIsLocalized,
111
111
  unSanitizedEditorConfig: editorConfig
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","names":["loadFeatures","sanitizeServerFeatures","features","sanitized","enabledFeatures","getSubFields","Map","getSubFieldsData","graphQLPopulationPromises","hooks","afterChange","afterRead","beforeChange","beforeValidate","i18n","markdownTransformers","nodeHooks","nodes","validations","size","forEach","feature","length","concat","lang","lexical","key","node","nodeType","replace","getType","alreadyRegistered","some","existing","existingType","Error","push","set","transformer","allNodes","allTransformers","sanitizeServerEditorConfig","editorConfig","config","parentIsLocalized","resolvedFeatureMap","unSanitizedEditorConfig"],"sources":["../../../../src/lexical/config/server/sanitize.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport type {\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n} from '../../../features/typesServer.js'\nimport type { SanitizedServerEditorConfig, ServerEditorConfig } from '../types.js'\n\nimport { loadFeatures } from './loader.js'\n\nexport const sanitizeServerFeatures = (\n features: ResolvedServerFeatureMap,\n): SanitizedServerFeatures => {\n const sanitized: SanitizedServerFeatures = {\n enabledFeatures: [],\n getSubFields: new Map(),\n getSubFieldsData: new Map(),\n graphQLPopulationPromises: new Map(),\n hooks: {\n afterChange: [],\n afterRead: [],\n beforeChange: [],\n beforeValidate: [],\n },\n i18n: {},\n markdownTransformers: [],\n nodeHooks: {\n afterChange: new Map(),\n afterRead: new Map(),\n beforeChange: new Map(),\n beforeValidate: new Map(),\n },\n nodes: [],\n\n validations: new Map(),\n }\n\n if (!features?.size) {\n return sanitized\n }\n\n features.forEach((feature) => {\n if (feature?.hooks?.beforeValidate?.length) {\n sanitized.hooks.beforeValidate = sanitized.hooks.beforeValidate?.concat(\n feature.hooks.beforeValidate,\n )\n }\n if (feature?.hooks?.beforeChange?.length) {\n sanitized.hooks.beforeChange = sanitized.hooks.beforeChange?.concat(\n feature.hooks.beforeChange,\n )\n }\n if (feature?.hooks?.afterRead?.length) {\n sanitized.hooks.afterRead = sanitized.hooks.afterRead?.concat(feature.hooks.afterRead)\n }\n if (feature?.hooks?.afterChange?.length) {\n sanitized.hooks.afterChange = sanitized.hooks.afterChange?.concat(feature.hooks.afterChange)\n }\n\n if (feature?.i18n) {\n for (const lang in feature.i18n) {\n if (!sanitized.i18n[lang as keyof typeof sanitized.i18n]) {\n sanitized.i18n[lang as keyof typeof sanitized.i18n] = {\n lexical: {},\n }\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n sanitized.i18n[lang].lexical[feature.key] = feature.i18n[lang]\n }\n }\n\n if (feature.nodes?.length) {\n // Do not concat here. We need to keep the object reference of sanitized.nodes so that function markdown transformers of features automatically get the updated nodes\n for (const node of feature.nodes) {\n const nodeType = 'with' in node.node ? node.node.replace.getType() : node.node.getType()\n const alreadyRegistered = sanitized.nodes.some((existing) => {\n const existingType =\n 'with' in existing.node ? existing.node.replace.getType() : existing.node.getType()\n return existingType === nodeType\n })\n if (alreadyRegistered) {\n throw new Error(\n `Lexical editor config: node type \"${nodeType}\" was registered more than once (feature \"${feature.key}\"). Each lexical node type may only be registered by a single feature.`,\n )\n }\n sanitized.nodes.push(node)\n if (node?.graphQLPopulationPromises?.length) {\n sanitized.graphQLPopulationPromises.set(nodeType, node.graphQLPopulationPromises)\n }\n if (node?.validations?.length) {\n sanitized.validations.set(nodeType, node.validations)\n }\n if (node?.hooks?.afterChange) {\n sanitized.nodeHooks?.afterChange?.set(nodeType, node.hooks.afterChange)\n }\n if (node?.hooks?.afterRead) {\n sanitized.nodeHooks?.afterRead?.set(nodeType, node.hooks.afterRead)\n }\n if (node?.hooks?.beforeChange) {\n sanitized.nodeHooks?.beforeChange?.set(nodeType, node.hooks.beforeChange)\n }\n if (node?.hooks?.beforeValidate) {\n sanitized.nodeHooks?.beforeValidate?.set(nodeType, node.hooks.beforeValidate)\n }\n if (node?.getSubFields) {\n sanitized.getSubFields?.set(nodeType, node.getSubFields)\n }\n if (node?.getSubFieldsData) {\n sanitized.getSubFieldsData?.set(nodeType, node.getSubFieldsData)\n }\n }\n }\n\n if (feature.markdownTransformers?.length) {\n // Do not concat here. We need to keep the object reference of feature.markdownTransformers\n\n for (const transformer of feature.markdownTransformers) {\n if (typeof transformer === 'function') {\n sanitized.markdownTransformers.push(\n transformer({\n allNodes: sanitized.nodes,\n allTransformers: sanitized.markdownTransformers,\n }),\n )\n } else {\n sanitized.markdownTransformers.push(transformer)\n }\n }\n }\n\n sanitized.enabledFeatures.push(feature.key)\n })\n\n return sanitized\n}\n\nexport async function sanitizeServerEditorConfig(\n editorConfig: ServerEditorConfig,\n config: SanitizedConfig,\n parentIsLocalized?: boolean,\n): Promise<SanitizedServerEditorConfig> {\n const resolvedFeatureMap = await loadFeatures({\n config,\n parentIsLocalized: parentIsLocalized!,\n unSanitizedEditorConfig: editorConfig,\n })\n\n return {\n features: sanitizeServerFeatures(resolvedFeatureMap),\n lexical: editorConfig.lexical!,\n resolvedFeatureMap,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"sanitize.js","names":["loadFeatures","sanitizeServerFeatures","features","sanitized","enabledFeatures","getSubFields","Map","getSubFieldsData","graphQLPopulationPromises","hooks","afterChange","afterRead","beforeChange","beforeValidate","i18n","markdownTransformers","nodeHooks","nodes","validations","size","forEach","feature","length","concat","lang","lexical","key","node","nodeType","replace","getType","alreadyRegistered","some","existing","existingType","Error","push","set","transformer","allNodes","allTransformers","sanitizeServerEditorConfig","editorConfig","config","parentIsLocalized","resolvedFeatureMap","unSanitizedEditorConfig"],"sources":["../../../../src/lexical/config/server/sanitize.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport type {\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n} from '../../../features/typesServer.js'\nimport type { SanitizedServerEditorConfig, ServerEditorConfig } from '../types.js'\n\nimport { loadFeatures } from './loader.js'\n\nexport const sanitizeServerFeatures = (\n features: ResolvedServerFeatureMap,\n): SanitizedServerFeatures => {\n const sanitized: SanitizedServerFeatures = {\n enabledFeatures: [],\n getSubFields: new Map(),\n getSubFieldsData: new Map(),\n graphQLPopulationPromises: new Map(),\n hooks: {\n afterChange: [],\n afterRead: [],\n beforeChange: [],\n beforeValidate: [],\n },\n i18n: {},\n markdownTransformers: [],\n nodeHooks: {\n afterChange: new Map(),\n afterRead: new Map(),\n beforeChange: new Map(),\n beforeValidate: new Map(),\n },\n nodes: [],\n\n validations: new Map(),\n }\n\n if (!features?.size) {\n return sanitized\n }\n\n features.forEach((feature) => {\n if (feature?.hooks?.beforeValidate?.length) {\n sanitized.hooks.beforeValidate = sanitized.hooks.beforeValidate?.concat(\n feature.hooks.beforeValidate,\n )\n }\n if (feature?.hooks?.beforeChange?.length) {\n sanitized.hooks.beforeChange = sanitized.hooks.beforeChange?.concat(\n feature.hooks.beforeChange,\n )\n }\n if (feature?.hooks?.afterRead?.length) {\n sanitized.hooks.afterRead = sanitized.hooks.afterRead?.concat(feature.hooks.afterRead)\n }\n if (feature?.hooks?.afterChange?.length) {\n sanitized.hooks.afterChange = sanitized.hooks.afterChange?.concat(feature.hooks.afterChange)\n }\n\n if (feature?.i18n) {\n for (const lang in feature.i18n) {\n if (!sanitized.i18n[lang as keyof typeof sanitized.i18n]) {\n sanitized.i18n[lang as keyof typeof sanitized.i18n] = {\n lexical: {},\n }\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n sanitized.i18n[lang].lexical[feature.key] = feature.i18n[lang]\n }\n }\n\n if (feature.nodes?.length) {\n // Do not concat here. We need to keep the object reference of sanitized.nodes so that function markdown transformers of features automatically get the updated nodes\n for (const node of feature.nodes) {\n const nodeType = 'with' in node.node ? node.node.replace.getType() : node.node.getType()\n const alreadyRegistered = sanitized.nodes.some((existing) => {\n const existingType =\n 'with' in existing.node ? existing.node.replace.getType() : existing.node.getType()\n return existingType === nodeType\n })\n if (alreadyRegistered) {\n throw new Error(\n `Lexical editor config: node type \"${nodeType}\" was registered more than once (feature \"${feature.key}\"). Each lexical node type may only be registered by a single feature.`,\n )\n }\n sanitized.nodes.push(node)\n if (node?.graphQLPopulationPromises?.length) {\n sanitized.graphQLPopulationPromises.set(nodeType, node.graphQLPopulationPromises)\n }\n if (node?.validations?.length) {\n sanitized.validations.set(nodeType, node.validations)\n }\n if (node?.hooks?.afterChange) {\n sanitized.nodeHooks?.afterChange?.set(nodeType, node.hooks.afterChange)\n }\n if (node?.hooks?.afterRead) {\n sanitized.nodeHooks?.afterRead?.set(nodeType, node.hooks.afterRead)\n }\n if (node?.hooks?.beforeChange) {\n sanitized.nodeHooks?.beforeChange?.set(nodeType, node.hooks.beforeChange)\n }\n if (node?.hooks?.beforeValidate) {\n sanitized.nodeHooks?.beforeValidate?.set(nodeType, node.hooks.beforeValidate)\n }\n if (node?.getSubFields) {\n sanitized.getSubFields?.set(nodeType, node.getSubFields)\n }\n if (node?.getSubFieldsData) {\n sanitized.getSubFieldsData?.set(nodeType, node.getSubFieldsData)\n }\n }\n }\n\n if (feature.markdownTransformers?.length) {\n // Do not concat here. We need to keep the object reference of feature.markdownTransformers\n\n for (const transformer of feature.markdownTransformers) {\n if (typeof transformer === 'function') {\n sanitized.markdownTransformers.push(\n transformer({\n allNodes: sanitized.nodes,\n allTransformers: sanitized.markdownTransformers,\n }),\n )\n } else {\n sanitized.markdownTransformers.push(transformer)\n }\n }\n }\n\n sanitized.enabledFeatures.push(feature.key)\n })\n\n return sanitized\n}\n\nexport function sanitizeServerEditorConfig(\n editorConfig: ServerEditorConfig,\n config: SanitizedConfig,\n parentIsLocalized?: boolean,\n): SanitizedServerEditorConfig {\n const resolvedFeatureMap = loadFeatures({\n config,\n parentIsLocalized: parentIsLocalized!,\n unSanitizedEditorConfig: editorConfig,\n })\n\n return {\n features: sanitizeServerFeatures(resolvedFeatureMap),\n lexical: editorConfig.lexical!,\n resolvedFeatureMap,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lexical/plugins/DecoratorPlugin/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AA2BtE,OAAO,aAAa,CAAA;AAIpB,wBAAgB,eAAe,SA6K9B;AAiDD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,WAAW,CAgBjG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lexical/plugins/DecoratorPlugin/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AA4BtE,OAAO,aAAa,CAAA;AAIpB,wBAAgB,eAAe,SAuL9B;AA4CD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,WAAW,CAgBjG"}
@@ -3,7 +3,7 @@
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
5
5
  import { $findMatchingParent, mergeRegister } from '@lexical/utils';
6
- import { $createNodeSelection, $getEditor, $getNearestNodeFromDOMNode, $getSelection, $isDecoratorNode, $isElementNode, $isLineBreakNode, $isNodeSelection, $isRangeSelection, $isRootOrShadowRoot, $isTextNode, $setSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, SELECTION_CHANGE_COMMAND } from 'lexical';
6
+ import { $createNodeSelection, $getEditor, $getNearestNodeFromDOMNode, $getSelection, $isDecoratorNode, $isElementNode, $isLineBreakNode, $isNodeSelection, $isRangeSelection, $isRootOrShadowRoot, $isTextNode, $onUpdate, $setSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, SELECTION_CHANGE_COMMAND } from 'lexical';
7
7
  import { useEffect } from 'react';
8
8
  import './index.css';
9
9
  // TODO: This should ideally be fixed in Lexical. See
@@ -15,7 +15,22 @@ export function DecoratorPlugin() {
15
15
  let t0;
16
16
  let t1;
17
17
  if ($[0] !== editor) {
18
- t0 = () => mergeRegister(editor.registerCommand(CLICK_COMMAND, _temp3, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(SELECTION_CHANGE_COMMAND, _temp4, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_UP_COMMAND, _temp6, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_DOWN_COMMAND, _temp8, COMMAND_PRIORITY_LOW));
18
+ t0 = () => mergeRegister(editor.registerCommand(CLICK_COMMAND, _temp3, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(SELECTION_CHANGE_COMMAND, (_, activeEditor) => {
19
+ if (activeEditor !== editor) {
20
+ return false;
21
+ }
22
+ const hasSelectedDecorator = Boolean($getSelectedDecorator());
23
+ $onUpdate(() => {
24
+ activeEditor.read("latest", () => {
25
+ const decorator_0 = $getSelectedDecorator();
26
+ document.querySelector(".decorator-selected")?.classList.remove("decorator-selected");
27
+ if (decorator_0) {
28
+ activeEditor.getElementByKey(decorator_0.getKey())?.classList.add("decorator-selected");
29
+ }
30
+ });
31
+ });
32
+ return hasSelectedDecorator;
33
+ }, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_UP_COMMAND, _temp5, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_DOWN_COMMAND, _temp7, COMMAND_PRIORITY_LOW));
19
34
  t1 = [editor];
20
35
  $[0] = editor;
21
36
  $[1] = t0;
@@ -27,7 +42,7 @@ export function DecoratorPlugin() {
27
42
  useEffect(t0, t1);
28
43
  return null;
29
44
  }
30
- function _temp8(event_2) {
45
+ function _temp7(event_2) {
31
46
  const selection_1 = $getSelection();
32
47
  if ($isNodeSelection(selection_1)) {
33
48
  event_2.preventDefault();
@@ -59,7 +74,7 @@ function _temp8(event_2) {
59
74
  }
60
75
  const lastPoint = selection_1.isBackward() ? selection_1.anchor : selection_1.focus;
61
76
  const lastNode = lastPoint.getNode();
62
- const lastSelectedBlock = $findMatchingParent(lastNode, _temp7);
77
+ const lastSelectedBlock = $findMatchingParent(lastNode, _temp6);
63
78
  const nextBlock = lastSelectedBlock?.getNextSibling();
64
79
  if (!lastSelectedBlock || nextBlock !== findLaterSiblingBlock(lastSelectedBlock)) {
65
80
  return false;
@@ -77,10 +92,10 @@ function _temp8(event_2) {
77
92
  }
78
93
  return false;
79
94
  }
80
- function _temp7(node_1) {
95
+ function _temp6(node_1) {
81
96
  return findLaterSiblingBlock(node_1) !== null;
82
97
  }
83
- function _temp6(event_1) {
98
+ function _temp5(event_1) {
84
99
  const selection_0 = $getSelection();
85
100
  if ($isNodeSelection(selection_0)) {
86
101
  const prevSibling = selection_0.getNodes()[0]?.getPreviousSibling();
@@ -113,7 +128,7 @@ function _temp6(event_1) {
113
128
  }
114
129
  const firstPoint = selection_0.isBackward() ? selection_0.anchor : selection_0.focus;
115
130
  const firstNode = firstPoint.getNode();
116
- const firstSelectedBlock = $findMatchingParent(firstNode, _temp5);
131
+ const firstSelectedBlock = $findMatchingParent(firstNode, _temp4);
117
132
  const prevBlock = firstSelectedBlock?.getPreviousSibling();
118
133
  if (!firstSelectedBlock || prevBlock !== findFirstSiblingBlock(firstSelectedBlock)) {
119
134
  return false;
@@ -131,18 +146,9 @@ function _temp6(event_1) {
131
146
  }
132
147
  return false;
133
148
  }
134
- function _temp5(node_0) {
149
+ function _temp4(node_0) {
135
150
  return findFirstSiblingBlock(node_0) !== null;
136
151
  }
137
- function _temp4() {
138
- const decorator_0 = $getSelectedDecorator();
139
- document.querySelector(".decorator-selected")?.classList.remove("decorator-selected");
140
- if (decorator_0) {
141
- decorator_0.element?.classList.add("decorator-selected");
142
- return true;
143
- }
144
- return false;
145
- }
146
152
  function _temp3(event_0) {
147
153
  document.querySelector(".decorator-selected")?.classList.remove("decorator-selected");
148
154
  const decorator = $getDecoratorByMouseEvent(event_0);
@@ -196,10 +202,7 @@ function $getSelectedDecorator() {
196
202
  return undefined;
197
203
  }
198
204
  const node = nodes[0];
199
- return $isDecoratorNode(node) ? {
200
- decorator: node,
201
- element: $getEditor().getElementByKey(node.getKey())
202
- } : undefined;
205
+ return $isDecoratorNode(node) ? node : undefined;
203
206
  }
204
207
  function $selectDecorator({
205
208
  element,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$findMatchingParent","mergeRegister","$createNodeSelection","$getEditor","$getNearestNodeFromDOMNode","$getSelection","$isDecoratorNode","$isElementNode","$isLineBreakNode","$isNodeSelection","$isRangeSelection","$isRootOrShadowRoot","$isTextNode","$setSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","SELECTION_CHANGE_COMMAND","useEffect","DecoratorPlugin","$","editor","$onDelete","_temp2","t0","t1","registerCommand","_temp3","_temp4","_temp6","_temp8","event_2","selection_1","selection","event","preventDefault","nextSibling","getNodes","getNextSibling","element_0","getElementByKey","getKey","element","$selectDecorator","firstDescendant","getFirstDescendant","block_0","INTERNAL_$isBlock","block","selectEnd","lastPoint","isBackward","anchor","focus","lastNode","getNode","lastSelectedBlock","_temp7","nextBlock","findLaterSiblingBlock","nextBlockElement","node","node_1","event_1","selection_0","prevSibling","getPreviousSibling","lastDescendant","getLastDescendant","selectStart","firstPoint","firstNode","firstSelectedBlock","_temp5","prevBlock","findFirstSiblingBlock","prevBlockElement","node_0","decorator_0","$getSelectedDecorator","document","querySelector","classList","remove","decorator","add","event_0","$getDecoratorByMouseEvent","target","isInteractive","HTMLElement","isContentEditable","closest","forEach","_temp","undefined","nodes","length","scrollIntoView","behavior","isInline","firstChild","getFirstChild","isLeafElement","canBeEmpty","current"],"sources":["../../../../src/lexical/plugins/DecoratorPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { DecoratorNode, ElementNode, LexicalNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport {\n $createNodeSelection,\n $getEditor,\n $getNearestNodeFromDOMNode,\n $getSelection,\n $isDecoratorNode,\n $isElementNode,\n $isLineBreakNode,\n $isNodeSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n $isTextNode,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport './index.css'\n\n// TODO: This should ideally be fixed in Lexical. See\n// https://github.com/facebook/lexical/pull/7072\nexport function DecoratorPlugin() {\n const [editor] = useLexicalComposerContext()\n\n const $onDelete = (event: KeyboardEvent) => {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return false\n }\n event.preventDefault()\n selection.getNodes().forEach((node) => {\n node.remove()\n })\n return true\n }\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event) => {\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n const decorator = $getDecoratorByMouseEvent(event)\n if (!decorator) {\n return true\n }\n const { target } = event\n const isInteractive =\n !(target instanceof HTMLElement) ||\n target.isContentEditable ||\n target.closest(\n 'button, textarea, input, .react-select, .code-editor, .no-select-decorator, [role=\"button\"]',\n )\n if (isInteractive) {\n $setSelection(null)\n } else {\n $selectDecorator(decorator)\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const decorator = $getSelectedDecorator()\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n if (decorator) {\n decorator.element?.classList.add('decorator-selected')\n return true\n }\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ARROW_UP_COMMAND,\n (event) => {\n // CASE 1: Node selection\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n const prevSibling = selection.getNodes()[0]?.getPreviousSibling()\n if ($isDecoratorNode(prevSibling)) {\n const element = $getEditor().getElementByKey(prevSibling.getKey())\n if (element) {\n $selectDecorator({ element, node: prevSibling })\n event.preventDefault()\n return true\n }\n return false\n }\n if (!$isElementNode(prevSibling)) {\n return false\n }\n const lastDescendant = prevSibling.getLastDescendant() ?? prevSibling\n if (!lastDescendant) {\n return false\n }\n const block = $findMatchingParent(lastDescendant, INTERNAL_$isBlock)\n block?.selectStart()\n event.preventDefault()\n return true\n }\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n // CASE 2: Range selection\n // Get first selected block\n const firstPoint = selection.isBackward() ? selection.anchor : selection.focus\n const firstNode = firstPoint.getNode()\n const firstSelectedBlock = $findMatchingParent(firstNode, (node) => {\n return findFirstSiblingBlock(node) !== null\n })\n const prevBlock = firstSelectedBlock?.getPreviousSibling()\n if (!firstSelectedBlock || prevBlock !== findFirstSiblingBlock(firstSelectedBlock)) {\n return false\n }\n\n if ($isDecoratorNode(prevBlock)) {\n const prevBlockElement = $getEditor().getElementByKey(prevBlock.getKey())\n if (prevBlockElement) {\n $selectDecorator({ element: prevBlockElement, node: prevBlock })\n event.preventDefault()\n return true\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ARROW_DOWN_COMMAND,\n (event) => {\n // CASE 1: Node selection\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n event.preventDefault()\n const nextSibling = selection.getNodes()[0]?.getNextSibling()\n if ($isDecoratorNode(nextSibling)) {\n const element = $getEditor().getElementByKey(nextSibling.getKey())\n if (element) {\n $selectDecorator({ element, node: nextSibling })\n }\n return true\n }\n if (!$isElementNode(nextSibling)) {\n return true\n }\n const firstDescendant = nextSibling.getFirstDescendant() ?? nextSibling\n if (!firstDescendant) {\n return true\n }\n const block = $findMatchingParent(firstDescendant, INTERNAL_$isBlock)\n block?.selectEnd()\n event.preventDefault()\n return true\n }\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n // CASE 2: Range selection\n // Get last selected block\n const lastPoint = selection.isBackward() ? selection.anchor : selection.focus\n const lastNode = lastPoint.getNode()\n const lastSelectedBlock = $findMatchingParent(lastNode, (node) => {\n return findLaterSiblingBlock(node) !== null\n })\n const nextBlock = lastSelectedBlock?.getNextSibling()\n if (!lastSelectedBlock || nextBlock !== findLaterSiblingBlock(lastSelectedBlock)) {\n return false\n }\n\n if ($isDecoratorNode(nextBlock)) {\n const nextBlockElement = $getEditor().getElementByKey(nextBlock.getKey())\n if (nextBlockElement) {\n $selectDecorator({ element: nextBlockElement, node: nextBlock })\n event.preventDefault()\n return true\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor])\n\n return null\n}\n\nfunction $getDecoratorByMouseEvent(\n event: MouseEvent,\n): { element: HTMLElement; node: DecoratorNode<unknown> } | undefined {\n if (!(event.target instanceof HTMLElement)) {\n return undefined\n }\n const element = event.target.closest('[data-lexical-decorator=\"true\"]')\n if (!(element instanceof HTMLElement)) {\n return undefined\n }\n const node = $getNearestNodeFromDOMNode(element)\n return $isDecoratorNode(node) ? { element, node } : undefined\n}\n\nfunction $getSelectedDecorator() {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return undefined\n }\n const nodes = selection.getNodes()\n if (nodes.length !== 1) {\n return undefined\n }\n const node = nodes[0]\n return $isDecoratorNode(node)\n ? {\n decorator: node,\n element: $getEditor().getElementByKey(node.getKey()),\n }\n : undefined\n}\n\nfunction $selectDecorator({\n element,\n node,\n}: {\n element: HTMLElement\n node: DecoratorNode<unknown>\n}) {\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n const selection = $createNodeSelection()\n selection.add(node.getKey())\n $setSelection(selection)\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n element.classList.add('decorator-selected')\n}\n\n/**\n * Copied from https://github.com/facebook/lexical/blob/main/packages/lexical/src/LexicalUtils.ts\n *\n * This function returns true for a DecoratorNode that is not inline OR\n * an ElementNode that is:\n * - not a root or shadow root\n * - not inline\n * - can't be empty\n * - has no children or an inline first child\n */\nexport function INTERNAL_$isBlock(node: LexicalNode): node is DecoratorNode<unknown> | ElementNode {\n if ($isDecoratorNode(node) && !node.isInline()) {\n return true\n }\n if (!$isElementNode(node) || $isRootOrShadowRoot(node)) {\n return false\n }\n\n const firstChild = node.getFirstChild()\n const isLeafElement =\n firstChild === null ||\n $isLineBreakNode(firstChild) ||\n $isTextNode(firstChild) ||\n firstChild.isInline()\n\n return !node.isInline() && node.canBeEmpty() !== false && isLeafElement\n}\n\nfunction findLaterSiblingBlock(node: LexicalNode): LexicalNode | null {\n let current = node.getNextSibling()\n while (current !== null) {\n if (INTERNAL_$isBlock(current)) {\n return current\n }\n current = current.getNextSibling()\n }\n return null\n}\n\nfunction findFirstSiblingBlock(node: LexicalNode): LexicalNode | null {\n let current = node.getPreviousSibling()\n while (current !== null) {\n if (INTERNAL_$isBlock(current)) {\n return current\n }\n current = current.getPreviousSibling()\n }\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$findMatchingParent","mergeRegister","$createNodeSelection","$getEditor","$getNearestNodeFromDOMNode","$getSelection","$isDecoratorNode","$isElementNode","$isLineBreakNode","$isNodeSelection","$isRangeSelection","$isRootOrShadowRoot","$isTextNode","$onUpdate","$setSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","SELECTION_CHANGE_COMMAND","useEffect","DecoratorPlugin","$","editor","$onDelete","_temp2","t0","t1","registerCommand","_temp3","_","activeEditor","hasSelectedDecorator","Boolean","$getSelectedDecorator","read","decorator_0","document","querySelector","classList","remove","decorator","getElementByKey","getKey","add","_temp5","_temp7","event_2","selection_1","selection","event","preventDefault","nextSibling","getNodes","getNextSibling","element_0","element","$selectDecorator","firstDescendant","getFirstDescendant","block_0","INTERNAL_$isBlock","block","selectEnd","lastPoint","isBackward","anchor","focus","lastNode","getNode","lastSelectedBlock","_temp6","nextBlock","findLaterSiblingBlock","nextBlockElement","node","node_1","event_1","selection_0","prevSibling","getPreviousSibling","lastDescendant","getLastDescendant","selectStart","firstPoint","firstNode","firstSelectedBlock","_temp4","prevBlock","findFirstSiblingBlock","prevBlockElement","node_0","event_0","$getDecoratorByMouseEvent","target","isInteractive","HTMLElement","isContentEditable","closest","forEach","_temp","undefined","nodes","length","scrollIntoView","behavior","isInline","firstChild","getFirstChild","isLeafElement","canBeEmpty","current"],"sources":["../../../../src/lexical/plugins/DecoratorPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { DecoratorNode, ElementNode, LexicalNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport {\n $createNodeSelection,\n $getEditor,\n $getNearestNodeFromDOMNode,\n $getSelection,\n $isDecoratorNode,\n $isElementNode,\n $isLineBreakNode,\n $isNodeSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n $isTextNode,\n $onUpdate,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport './index.css'\n\n// TODO: This should ideally be fixed in Lexical. See\n// https://github.com/facebook/lexical/pull/7072\nexport function DecoratorPlugin() {\n const [editor] = useLexicalComposerContext()\n\n const $onDelete = (event: KeyboardEvent) => {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return false\n }\n event.preventDefault()\n selection.getNodes().forEach((node) => {\n node.remove()\n })\n return true\n }\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event) => {\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n const decorator = $getDecoratorByMouseEvent(event)\n if (!decorator) {\n return true\n }\n const { target } = event\n const isInteractive =\n !(target instanceof HTMLElement) ||\n target.isContentEditable ||\n target.closest(\n 'button, textarea, input, .react-select, .code-editor, .no-select-decorator, [role=\"button\"]',\n )\n if (isInteractive) {\n $setSelection(null)\n } else {\n $selectDecorator(decorator)\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_, activeEditor) => {\n // Nested editors reconcile independently and update their own highlight.\n if (activeEditor !== editor) {\n return false\n }\n const hasSelectedDecorator = Boolean($getSelectedDecorator())\n $onUpdate(() => {\n activeEditor.read('latest', () => {\n const decorator = $getSelectedDecorator()\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n if (decorator) {\n activeEditor\n .getElementByKey(decorator.getKey())\n ?.classList.add('decorator-selected')\n }\n })\n })\n return hasSelectedDecorator\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ARROW_UP_COMMAND,\n (event) => {\n // CASE 1: Node selection\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n const prevSibling = selection.getNodes()[0]?.getPreviousSibling()\n if ($isDecoratorNode(prevSibling)) {\n const element = $getEditor().getElementByKey(prevSibling.getKey())\n if (element) {\n $selectDecorator({ element, node: prevSibling })\n event.preventDefault()\n return true\n }\n return false\n }\n if (!$isElementNode(prevSibling)) {\n return false\n }\n const lastDescendant = prevSibling.getLastDescendant() ?? prevSibling\n if (!lastDescendant) {\n return false\n }\n const block = $findMatchingParent(lastDescendant, INTERNAL_$isBlock)\n block?.selectStart()\n event.preventDefault()\n return true\n }\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n // CASE 2: Range selection\n // Get first selected block\n const firstPoint = selection.isBackward() ? selection.anchor : selection.focus\n const firstNode = firstPoint.getNode()\n const firstSelectedBlock = $findMatchingParent(firstNode, (node) => {\n return findFirstSiblingBlock(node) !== null\n })\n const prevBlock = firstSelectedBlock?.getPreviousSibling()\n if (!firstSelectedBlock || prevBlock !== findFirstSiblingBlock(firstSelectedBlock)) {\n return false\n }\n\n if ($isDecoratorNode(prevBlock)) {\n const prevBlockElement = $getEditor().getElementByKey(prevBlock.getKey())\n if (prevBlockElement) {\n $selectDecorator({ element: prevBlockElement, node: prevBlock })\n event.preventDefault()\n return true\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ARROW_DOWN_COMMAND,\n (event) => {\n // CASE 1: Node selection\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n event.preventDefault()\n const nextSibling = selection.getNodes()[0]?.getNextSibling()\n if ($isDecoratorNode(nextSibling)) {\n const element = $getEditor().getElementByKey(nextSibling.getKey())\n if (element) {\n $selectDecorator({ element, node: nextSibling })\n }\n return true\n }\n if (!$isElementNode(nextSibling)) {\n return true\n }\n const firstDescendant = nextSibling.getFirstDescendant() ?? nextSibling\n if (!firstDescendant) {\n return true\n }\n const block = $findMatchingParent(firstDescendant, INTERNAL_$isBlock)\n block?.selectEnd()\n event.preventDefault()\n return true\n }\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n // CASE 2: Range selection\n // Get last selected block\n const lastPoint = selection.isBackward() ? selection.anchor : selection.focus\n const lastNode = lastPoint.getNode()\n const lastSelectedBlock = $findMatchingParent(lastNode, (node) => {\n return findLaterSiblingBlock(node) !== null\n })\n const nextBlock = lastSelectedBlock?.getNextSibling()\n if (!lastSelectedBlock || nextBlock !== findLaterSiblingBlock(lastSelectedBlock)) {\n return false\n }\n\n if ($isDecoratorNode(nextBlock)) {\n const nextBlockElement = $getEditor().getElementByKey(nextBlock.getKey())\n if (nextBlockElement) {\n $selectDecorator({ element: nextBlockElement, node: nextBlock })\n event.preventDefault()\n return true\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor])\n\n return null\n}\n\nfunction $getDecoratorByMouseEvent(\n event: MouseEvent,\n): { element: HTMLElement; node: DecoratorNode<unknown> } | undefined {\n if (!(event.target instanceof HTMLElement)) {\n return undefined\n }\n const element = event.target.closest('[data-lexical-decorator=\"true\"]')\n if (!(element instanceof HTMLElement)) {\n return undefined\n }\n const node = $getNearestNodeFromDOMNode(element)\n return $isDecoratorNode(node) ? { element, node } : undefined\n}\n\nfunction $getSelectedDecorator() {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return undefined\n }\n const nodes = selection.getNodes()\n if (nodes.length !== 1) {\n return undefined\n }\n const node = nodes[0]\n return $isDecoratorNode(node) ? node : undefined\n}\n\nfunction $selectDecorator({\n element,\n node,\n}: {\n element: HTMLElement\n node: DecoratorNode<unknown>\n}) {\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n const selection = $createNodeSelection()\n selection.add(node.getKey())\n $setSelection(selection)\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n element.classList.add('decorator-selected')\n}\n\n/**\n * Copied from https://github.com/facebook/lexical/blob/main/packages/lexical/src/LexicalUtils.ts\n *\n * This function returns true for a DecoratorNode that is not inline OR\n * an ElementNode that is:\n * - not a root or shadow root\n * - not inline\n * - can't be empty\n * - has no children or an inline first child\n */\nexport function INTERNAL_$isBlock(node: LexicalNode): node is DecoratorNode<unknown> | ElementNode {\n if ($isDecoratorNode(node) && !node.isInline()) {\n return true\n }\n if (!$isElementNode(node) || $isRootOrShadowRoot(node)) {\n return false\n }\n\n const firstChild = node.getFirstChild()\n const isLeafElement =\n firstChild === null ||\n $isLineBreakNode(firstChild) ||\n $isTextNode(firstChild) ||\n firstChild.isInline()\n\n return !node.isInline() && node.canBeEmpty() !== false && isLeafElement\n}\n\nfunction findLaterSiblingBlock(node: LexicalNode): LexicalNode | null {\n let current = node.getNextSibling()\n while (current !== null) {\n if (INTERNAL_$isBlock(current)) {\n return current\n }\n current = current.getNextSibling()\n }\n return null\n}\n\nfunction findFirstSiblingBlock(node: LexicalNode): LexicalNode | null {\n let current = node.getPreviousSibling()\n while (current !== null) {\n if (INTERNAL_$isBlock(current)) {\n return current\n }\n current = current.getPreviousSibling()\n }\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,mBAAmB,EAAEC,aAAa,QAAQ;AACnD,SACEC,oBAAoB,EACpBC,UAAU,EACVC,0BAA0B,EAC1BC,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,gBAAgB,EAChBC,gBAAgB,EAChBC,iBAAiB,EACjBC,mBAAmB,EACnBC,WAAW,EACXC,SAAS,EACTC,aAAa,EACbC,aAAa,EACbC,oBAAoB,EACpBC,sBAAsB,EACtBC,oBAAoB,EACpBC,qBAAqB,EACrBC,kBAAkB,EAClBC,wBAAwB,QACnB;AACP,SAASC,SAAS,QAAQ;AAE1B,OAAO;AAEP;AACA;AACA,OAAO,SAAAC,gBAAA;EAAA,MAAAC,CAAA,GAAA1B,EAAA;EACL,OAAA2B,MAAA,IAAiB1B,yBAAA;EAEjB,MAAA2B,SAAA,GAAAC,MAAA;EAUA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAC,MAAA;IAEUG,EAAA,GAAAA,CAAA,KACD3B,aAAA,CACLwB,MAAA,CAAAK,eAAA,CAAAf,aAAA,EAAAgB,MAAA,EAAAf,oBAsBE,GAEFS,MAAA,CAAAK,eAAA,CAAAV,kBAAA,EAA2CM,SAAA,EAAAV,oBAAW,GACtDS,MAAA,CAAAK,eAAA,CAAAX,qBAAA,EAA8CO,SAAA,EAAAV,oBAAW,GACzDS,MAAA,CAAAK,eAAA,CAAAT,wBAAA,GAAAW,CAAA,EAAAC,YAAA;MAAA,IAIQA,YAAA,KAAiBR,MAAA;QAAA;MAAA;MAGrB,MAAAS,oBAAA,GAA6BC,OAAA,CAAQC,qBAAA;MACrCvB,SAAA;QACEoB,YAAA,CAAAI,IAAA,CAAkB;UAChB,MAAAC,WAAA,GAAkBF,qBAAA;UAClBG,QAAA,CAAAC,aAAA,CAAuB,wBAAAC,SAAA,CAAAC,MAAA,CAAyC;UAAA,IAC5DC,WAAA;YACFV,YAAA,CAAAW,eAAA,CACmBD,WAAA,CAAAE,MAAA,CAAgB,IAAAJ,SAAA,CAAAK,GAAA,CACjB;UAAA;QAAA,CAEtB;MAAA,CACF;MAAA,OACOZ,oBAAA;IAAA,GAAAlB,oBAET,GAEFS,MAAA,CAAAK,eAAA,CAAAZ,oBAAA,EAAA6B,MAAA,EAAA/B,oBAuDE,GAEFS,MAAA,CAAAK,eAAA,CAAAb,sBAAA,EAAA+B,MAAA,EAAAhC,oBAsDE;IAGHa,EAAA,IAACJ,MAAA;IAAOD,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EArKXF,SAAA,CAAUM,EAqKV,EAAGC,EAAQ;EAAA;AAAA;AApLN,SAAAmB,OAAAC,OAAA;EA+HG,MAAAC,WAAA,GAAkB7C,aAAA;EAAA,IACdI,gBAAA,CAAiB0C,WAAA;IACnBC,OAAA,CAAAC,cAAA,CAAoB;IACpB,MAAAC,WAAA,GAAoBH,WAAA,CAAAI,QAAA,CAAkB,CAAE,KAAAC,cAAA;IAAK,IACzClD,gBAAA,CAAiBgD,WAAA;MACnB,MAAAG,SAAA,GAAgBtD,UAAA,GAAAyC,eAAA,CAA6BU,WAAA,CAAAT,MAAA,CAAkB;MAAA,IAC3Da,SAAA;QACFC,gBAAA;UAAAD,OAAA,EAAmBA,SAAA;UAAAA,IAAA,EAAeJ;QAAA,CAAY;MAAA;MAAA;IAAA;IAAA,KAI7C/C,cAAA,CAAe+C,WAAA;MAAA;IAAA;IAGpB,MAAAM,eAAA,GAAwBN,WAAA,CAAAO,kBAAA,CAA8B,KAAMP,WAAA;IAAA,KACvDM,eAAA;MAAA;IAAA;IAGL,MAAAE,OAAA,GAAc9D,mBAAA,CAAoB4D,eAAA,EAAAG,iBAAiB;IACnDC,OAAA,EAAAC,SAAA;IACAb,OAAA,CAAAC,cAAA,CAAoB;IAAA;EAAA;EAAA,KAGjB3C,iBAAA,CAAkByC,WAAA;IAAA;EAAA;EAMvB,MAAAe,SAAA,GAAkBf,WAAA,CAAAgB,UAAA,CAAoB,IAAKhB,WAAA,CAAAiB,MAAA,GAAmBjB,WAAA,CAAAkB,KAAe;EAC7E,MAAAC,QAAA,GAAiBJ,SAAA,CAAAK,OAAA,CAAiB;EAClC,MAAAC,iBAAA,GAA0BxE,mBAAA,CAAoBsE,QAAA,EAAAG,MAE9C;EACA,MAAAC,SAAA,GAAkBF,iBAAA,EAAAhB,cAAA;EAAmB,IACjC,CAACgB,iBAAA,IAAqBE,SAAA,KAAcC,qBAAA,CAAsBH,iBAAA;IAAA;EAAA;EAAA,IAI1DlE,gBAAA,CAAiBoE,SAAA;IACnB,MAAAE,gBAAA,GAAyBzE,UAAA,GAAAyC,eAAA,CAA6B8B,SAAA,CAAA7B,MAAA,CAAgB;IAAA,IAClE+B,gBAAA;MACFjB,gBAAA;QAAAD,OAAA,EAA4BkB,gBAAA;QAAAC,IAAA,EAAwBH;MAAA,CAAU;MAC9DtB,OAAA,CAAAC,cAAA,CAAoB;MAAA;IAAA;EAAA;EAAA;AAAA;AA1K3B,SAAAoB,OAAAK,MAAA;EAAA,OA+JYH,qBAAA,CAAsBE,MAAA,UAAU;AAAA;AA/J5C,SAAA9B,OAAAgC,OAAA;EAsEG,MAAAC,WAAA,GAAkB3E,aAAA;EAAA,IACdI,gBAAA,CAAiB0C,WAAA;IACnB,MAAA8B,WAAA,GAAoB9B,WAAA,CAAAI,QAAA,CAAkB,CAAE,KAAA2B,kBAAA;IAAK,IACzC5E,gBAAA,CAAiB2E,WAAA;MACnB,MAAAvB,OAAA,GAAgBvD,UAAA,GAAAyC,eAAA,CAA6BqC,WAAA,CAAApC,MAAA,CAAkB;MAAA,IAC3Da,OAAA;QACFC,gBAAA;UAAAD,OAAA;UAAAmB,IAAA,EAAkCI;QAAA,CAAY;QAC9C7B,OAAA,CAAAC,cAAA,CAAoB;QAAA;MAAA;MAAA;IAAA;IAAA,KAKnB9C,cAAA,CAAe0E,WAAA;MAAA;IAAA;IAGpB,MAAAE,cAAA,GAAuBF,WAAA,CAAAG,iBAAA,CAA6B,KAAMH,WAAA;IAAA,KACrDE,cAAA;MAAA;IAAA;IAGL,MAAAnB,KAAA,GAAchE,mBAAA,CAAoBmF,cAAA,EAAApB,iBAAgB;IAClDC,KAAA,EAAAqB,WAAA;IACAjC,OAAA,CAAAC,cAAA,CAAoB;IAAA;EAAA;EAAA,KAGjB3C,iBAAA,CAAkByC,WAAA;IAAA;EAAA;EAMvB,MAAAmC,UAAA,GAAmBnC,WAAA,CAAAgB,UAAA,CAAoB,IAAKhB,WAAA,CAAAiB,MAAA,GAAmBjB,WAAA,CAAAkB,KAAe;EAC9E,MAAAkB,SAAA,GAAkBD,UAAA,CAAAf,OAAA,CAAkB;EACpC,MAAAiB,kBAAA,GAA2BxF,mBAAA,CAAoBuF,SAAA,EAAAE,MAE/C;EACA,MAAAC,SAAA,GAAkBF,kBAAA,EAAAN,kBAAA;EAAoB,IAClC,CAACM,kBAAA,IAAsBE,SAAA,KAAcC,qBAAA,CAAsBH,kBAAA;IAAA;EAAA;EAAA,IAI3DlF,gBAAA,CAAiBoF,SAAA;IACnB,MAAAE,gBAAA,GAAyBzF,UAAA,GAAAyC,eAAA,CAA6B8C,SAAA,CAAA7C,MAAA,CAAgB;IAAA,IAClE+C,gBAAA;MACFjC,gBAAA;QAAAD,OAAA,EAA4BkC,gBAAA;QAAAf,IAAA,EAAwBa;MAAA,CAAU;MAC9DtC,OAAA,CAAAC,cAAA,CAAoB;MAAA;IAAA;EAAA;EAAA;AAAA;AAlH3B,SAAAoC,OAAAI,MAAA;EAAA,OAuGYF,qBAAA,CAAsBd,MAAA,UAAU;AAAA;AAvG5C,SAAA9C,OAAA+D,OAAA;EAoBGvD,QAAA,CAAAC,aAAA,CAAuB,wBAAAC,SAAA,CAAAC,MAAA,CAAyC;EAChE,MAAAC,SAAA,GAAkBoD,yBAAA,CAA0B3C,OAAA;EAAA,KACvCT,SAAA;IAAA;EAAA;EAGL;IAAAqD;EAAA,IAAmB5C,OAAA;EACnB,MAAA6C,aAAA,GACE,EAAED,MAAA,YAAAE,WAA4B,KAC9BF,MAAA,CAAAG,iBAAwB,IACxBH,MAAA,CAAAI,OAAA,CACE;EAAA,IAEAH,aAAA;IACFnF,aAAA,KAAc;EAAA;IAEd6C,gBAAA,CAAiBhB,SAAA;EAAA;EAAA;AAAA;AAnCtB,SAAAhB,OAAAyB,KAAA;EAIH,MAAAD,SAAA,GAAkB9C,aAAA;EAAA,KACbI,gBAAA,CAAiB0C,SAAA;IAAA;EAAA;EAGtBC,KAAA,CAAAC,cAAA,CAAoB;EACpBF,SAAA,CAAAI,QAAA,CAAkB,EAAA8C,OAAA,CAAAC,KAElB;EAAA;AAAA;AAXG,SAAAA,MAAAzB,IAAA;EAUDA,IAAA,CAAAnC,MAAA,CAAW;AAAA;AA+KjB,SAASqD,0BACP3C,KAAiB;EAEjB,IAAI,EAAEA,KAAA,CAAM4C,MAAM,YAAYE,WAAU,GAAI;IAC1C,OAAOK,SAAA;EACT;EACA,MAAM7C,OAAA,GAAUN,KAAA,CAAM4C,MAAM,CAACI,OAAO,CAAC;EACrC,IAAI,EAAE1C,OAAA,YAAmBwC,WAAU,GAAI;IACrC,OAAOK,SAAA;EACT;EACA,MAAM1B,IAAA,GAAOzE,0BAAA,CAA2BsD,OAAA;EACxC,OAAOpD,gBAAA,CAAiBuE,IAAA,IAAQ;IAAEnB,OAAA;IAASmB;EAAK,IAAI0B,SAAA;AACtD;AAEA,SAASnE,sBAAA;EACP,MAAMe,SAAA,GAAY9C,aAAA;EAClB,IAAI,CAACI,gBAAA,CAAiB0C,SAAA,GAAY;IAChC,OAAOoD,SAAA;EACT;EACA,MAAMC,KAAA,GAAQrD,SAAA,CAAUI,QAAQ;EAChC,IAAIiD,KAAA,CAAMC,MAAM,KAAK,GAAG;IACtB,OAAOF,SAAA;EACT;EACA,MAAM1B,IAAA,GAAO2B,KAAK,CAAC,EAAE;EACrB,OAAOlG,gBAAA,CAAiBuE,IAAA,IAAQA,IAAA,GAAO0B,SAAA;AACzC;AAEA,SAAS5C,iBAAiB;EACxBD,OAAO;EACPmB;AAAI,CAIL;EACCtC,QAAA,CAASC,aAAa,CAAC,wBAAwBC,SAAA,CAAUC,MAAA,CAAO;EAChE,MAAMS,SAAA,GAAYjD,oBAAA;EAClBiD,SAAA,CAAUL,GAAG,CAAC+B,IAAA,CAAKhC,MAAM;EACzB/B,aAAA,CAAcqC,SAAA;EACdO,OAAA,CAAQgD,cAAc,CAAC;IAAEC,QAAA,EAAU;IAAU3C,KAAA,EAAO;EAAU;EAC9DN,OAAA,CAAQjB,SAAS,CAACK,GAAG,CAAC;AACxB;AAEA;;;;;;;;;;AAUA,OAAO,SAASiB,kBAAkBc,IAAiB;EACjD,IAAIvE,gBAAA,CAAiBuE,IAAA,KAAS,CAACA,IAAA,CAAK+B,QAAQ,IAAI;IAC9C,OAAO;EACT;EACA,IAAI,CAACrG,cAAA,CAAesE,IAAA,KAASlE,mBAAA,CAAoBkE,IAAA,GAAO;IACtD,OAAO;EACT;EAEA,MAAMgC,UAAA,GAAahC,IAAA,CAAKiC,aAAa;EACrC,MAAMC,aAAA,GACJF,UAAA,KAAe,QACfrG,gBAAA,CAAiBqG,UAAA,KACjBjG,WAAA,CAAYiG,UAAA,KACZA,UAAA,CAAWD,QAAQ;EAErB,OAAO,CAAC/B,IAAA,CAAK+B,QAAQ,MAAM/B,IAAA,CAAKmC,UAAU,OAAO,SAASD,aAAA;AAC5D;AAEA,SAASpC,sBAAsBE,IAAiB;EAC9C,IAAIoC,OAAA,GAAUpC,IAAA,CAAKrB,cAAc;EACjC,OAAOyD,OAAA,KAAY,MAAM;IACvB,IAAIlD,iBAAA,CAAkBkD,OAAA,GAAU;MAC9B,OAAOA,OAAA;IACT;IACAA,OAAA,GAAUA,OAAA,CAAQzD,cAAc;EAClC;EACA,OAAO;AACT;AAEA,SAASmC,sBAAsBd,IAAiB;EAC9C,IAAIoC,OAAA,GAAUpC,IAAA,CAAKK,kBAAkB;EACrC,OAAO+B,OAAA,KAAY,MAAM;IACvB,IAAIlD,iBAAA,CAAkBkD,OAAA,GAAU;MAC9B,OAAOA,OAAA;IACT;IACAA,OAAA,GAAUA,OAAA,CAAQ/B,kBAAkB;EACtC;EACA,OAAO;AACT","ignoreList":[]}