@payloadcms/richtext-lexical 4.0.0-internal.fa345ef → 4.0.0-internal.ff27d6e

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 (662) hide show
  1. package/dist/exports/client/Field-334JNLRF.js +2 -0
  2. package/dist/exports/client/Field-334JNLRF.js.map +7 -0
  3. package/dist/exports/client/{RelationshipComponent-YCPAKOL7.js → RelationshipComponent-TVK6I4W4.js} +2 -2
  4. package/dist/exports/client/chunk-BEKGION5.js +2 -0
  5. package/dist/exports/client/chunk-BEKGION5.js.map +7 -0
  6. package/dist/exports/client/{chunk-WSAPGI3Z.js → chunk-EA5BHQ2T.js} +1 -1
  7. package/dist/exports/client/{chunk-WSAPGI3Z.js.map → chunk-EA5BHQ2T.js.map} +1 -1
  8. package/dist/exports/client/chunk-FAJJXXCW.js +2 -0
  9. package/dist/exports/client/chunk-FAJJXXCW.js.map +7 -0
  10. package/dist/exports/client/{chunk-5VIL27GI.js → chunk-IYBYNEKX.js} +1 -1
  11. package/dist/exports/client/{chunk-5VIL27GI.js.map → chunk-IYBYNEKX.js.map} +1 -1
  12. package/dist/exports/client/chunk-SE5IITBK.js +2 -0
  13. package/dist/exports/client/chunk-SE5IITBK.js.map +7 -0
  14. package/dist/exports/client/component-QENB4QTS.js +2 -0
  15. package/dist/exports/client/component-QENB4QTS.js.map +7 -0
  16. package/dist/exports/client/componentInline-AU7IBNY7.js +2 -0
  17. package/dist/exports/client/index.d.ts +1 -1
  18. package/dist/exports/client/index.d.ts.map +1 -1
  19. package/dist/exports/client/index.js +26 -26
  20. package/dist/exports/client/index.js.map +4 -4
  21. package/dist/features/align/client/index.js.map +1 -1
  22. package/dist/features/align/client/toolbarAlignGroup.d.ts.map +1 -1
  23. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  24. package/dist/features/blocks/client/component/BlockReordering/index.d.ts +11 -0
  25. package/dist/features/blocks/client/component/BlockReordering/index.d.ts.map +1 -0
  26. package/dist/features/blocks/client/component/BlockReordering/index.js +18 -0
  27. package/dist/features/blocks/client/component/BlockReordering/index.js.map +1 -0
  28. package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
  29. package/dist/features/blocks/client/component/components/BlockEditButton.js.map +1 -1
  30. package/dist/features/blocks/client/component/components/BlockRemoveButton.js.map +1 -1
  31. package/dist/features/blocks/client/component/index.d.ts +0 -6
  32. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  33. package/dist/features/blocks/client/component/index.js +199 -109
  34. package/dist/features/blocks/client/component/index.js.map +1 -1
  35. package/dist/features/blocks/client/component/useBlockReordering.d.ts +16 -0
  36. package/dist/features/blocks/client/component/useBlockReordering.d.ts.map +1 -0
  37. package/dist/features/blocks/client/component/useBlockReordering.js +178 -0
  38. package/dist/features/blocks/client/component/useBlockReordering.js.map +1 -0
  39. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.d.ts.map +1 -1
  40. package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js.map +1 -1
  41. package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js.map +1 -1
  42. package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js.map +1 -1
  43. package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js.map +1 -1
  44. package/dist/features/blocks/client/componentInline/index.css +0 -1
  45. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  46. package/dist/features/blocks/client/componentInline/index.js +32 -30
  47. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  48. package/dist/features/blocks/client/getBlockImageComponent.d.ts +1 -1
  49. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts +9 -0
  50. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts.map +1 -0
  51. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js +95 -0
  52. package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js.map +1 -0
  53. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts.map +1 -1
  54. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  55. package/dist/features/blocks/client/nodes/BlocksNode.js +0 -10
  56. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  57. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
  58. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  59. package/dist/features/blocks/premade/CodeBlock/Component/Block.js +121 -78
  60. package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
  61. package/dist/features/blocks/premade/CodeBlock/Component/Code.js +142 -87
  62. package/dist/features/blocks/premade/CodeBlock/Component/Code.js.map +1 -1
  63. package/dist/features/blocks/server/graphQLPopulationPromise.d.ts.map +1 -1
  64. package/dist/features/blocks/server/index.js +2 -2
  65. package/dist/features/blocks/server/index.js.map +1 -1
  66. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts.map +1 -1
  67. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  68. package/dist/features/blocks/server/nodes/BlocksNode.js +1 -12
  69. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  70. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  71. package/dist/features/blocks/server/nodes/InlineBlocksNode.js +2 -2
  72. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  73. package/dist/features/blocks/server/schema.d.ts +2 -0
  74. package/dist/features/blocks/server/schema.d.ts.map +1 -1
  75. package/dist/features/blocks/server/schema.js +7 -9
  76. package/dist/features/blocks/server/schema.js.map +1 -1
  77. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  78. package/dist/features/blocks/server/validate.js +1 -1
  79. package/dist/features/blocks/server/validate.js.map +1 -1
  80. package/dist/features/converters/htmlToLexical/index.d.ts.map +1 -1
  81. package/dist/features/converters/lexicalToHtml/async/converters/heading.js +1 -1
  82. package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -1
  83. package/dist/features/converters/lexicalToHtml/async/converters/list.d.ts.map +1 -1
  84. package/dist/features/converters/lexicalToHtml/async/converters/list.js +4 -3
  85. package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -1
  86. package/dist/features/converters/lexicalToHtml/async/converters/upload.js +3 -3
  87. package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
  88. package/dist/features/converters/lexicalToHtml/shared/cssColors.d.ts.map +1 -1
  89. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.d.ts.map +1 -1
  90. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js +3 -2
  91. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js.map +1 -1
  92. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js +1 -1
  93. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -1
  94. package/dist/features/converters/lexicalToHtml/sync/converters/list.d.ts.map +1 -1
  95. package/dist/features/converters/lexicalToHtml/sync/converters/list.js +4 -3
  96. package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -1
  97. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js +3 -3
  98. package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -1
  99. package/dist/features/converters/lexicalToHtml/sync/types.d.ts.map +1 -1
  100. package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -1
  101. package/dist/features/converters/lexicalToJSX/converter/converters/heading.d.ts.map +1 -1
  102. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +2 -1
  103. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
  104. package/dist/features/converters/lexicalToJSX/converter/converters/list.d.ts.map +1 -1
  105. package/dist/features/converters/lexicalToJSX/converter/converters/list.js +2 -1
  106. package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
  107. package/dist/features/converters/lexicalToJSX/converter/converters/upload.d.ts.map +1 -1
  108. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js +4 -5
  109. package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
  110. package/dist/features/converters/lexicalToMarkdown/index.d.ts.map +1 -1
  111. package/dist/features/converters/markdownToLexical/index.d.ts.map +1 -1
  112. package/dist/features/converters/utilities/payloadPopulateFn.d.ts.map +1 -1
  113. package/dist/features/converters/utilities/payloadPopulateFn.js +4 -2
  114. package/dist/features/converters/utilities/payloadPopulateFn.js.map +1 -1
  115. package/dist/features/debug/jsxConverter/client/plugin/index.js.map +1 -1
  116. package/dist/features/debug/testRecorder/client/plugin/index.css +0 -1
  117. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  118. package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
  119. package/dist/features/format/shared/toolbarFormatGroup.d.ts.map +1 -1
  120. package/dist/features/heading/client/index.js.map +1 -1
  121. package/dist/features/heading/constants.d.ts +2 -0
  122. package/dist/features/heading/constants.d.ts.map +1 -0
  123. package/dist/features/heading/constants.js +2 -0
  124. package/dist/features/heading/constants.js.map +1 -0
  125. package/dist/features/heading/server/index.d.ts.map +1 -1
  126. package/dist/features/heading/server/index.js +5 -1
  127. package/dist/features/heading/server/index.js.map +1 -1
  128. package/dist/features/heading/server/schema.d.ts.map +1 -1
  129. package/dist/features/heading/server/validate.d.ts +6 -0
  130. package/dist/features/heading/server/validate.d.ts.map +1 -0
  131. package/dist/features/heading/server/validate.js +15 -0
  132. package/dist/features/heading/server/validate.js.map +1 -0
  133. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +12 -2
  134. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
  135. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +18 -1
  136. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  137. package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
  138. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +1 -1
  139. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  140. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +3 -3
  141. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  142. package/dist/features/horizontalRule/server/schema.d.ts +1 -0
  143. package/dist/features/horizontalRule/server/schema.d.ts.map +1 -1
  144. package/dist/features/horizontalRule/server/schema.js +6 -5
  145. package/dist/features/horizontalRule/server/schema.js.map +1 -1
  146. package/dist/features/indent/client/IndentPlugin.d.ts.map +1 -1
  147. package/dist/features/indent/client/IndentPlugin.js +122 -1
  148. package/dist/features/indent/client/IndentPlugin.js.map +1 -1
  149. package/dist/features/indent/client/index.d.ts.map +1 -1
  150. package/dist/features/indent/client/index.js +0 -2
  151. package/dist/features/indent/client/index.js.map +1 -1
  152. package/dist/features/indent/client/toolbarIndentGroup.d.ts.map +1 -1
  153. package/dist/features/indent/server/i18n.d.ts.map +1 -1
  154. package/dist/features/indent/server/i18n.js +74 -37
  155. package/dist/features/indent/server/i18n.js.map +1 -1
  156. package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
  157. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  158. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  159. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +20 -9
  160. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  161. package/dist/features/link/client/plugins/floatingLinkEditor/index.css +0 -2
  162. package/dist/features/link/client/plugins/link/index.js.map +1 -1
  163. package/dist/features/link/markdownTransformer.d.ts.map +1 -1
  164. package/dist/features/link/markdownTransformer.js +2 -2
  165. package/dist/features/link/markdownTransformer.js.map +1 -1
  166. package/dist/features/link/nodes/AutoLinkNode.d.ts +1 -1
  167. package/dist/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
  168. package/dist/features/link/nodes/AutoLinkNode.js +2 -10
  169. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  170. package/dist/features/link/nodes/LinkNode.d.ts +1 -1
  171. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  172. package/dist/features/link/nodes/LinkNode.js +2 -15
  173. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  174. package/dist/features/link/server/baseFields.d.ts.map +1 -1
  175. package/dist/features/link/server/baseFields.js.map +1 -1
  176. package/dist/features/link/server/graphQLPopulationPromise.d.ts.map +1 -1
  177. package/dist/features/link/server/index.js +2 -2
  178. package/dist/features/link/server/index.js.map +1 -1
  179. package/dist/features/link/server/schema.d.ts.map +1 -1
  180. package/dist/features/link/server/validate.d.ts.map +1 -1
  181. package/dist/features/link/server/validate.js +1 -1
  182. package/dist/features/link/server/validate.js.map +1 -1
  183. package/dist/features/lists/checklist/server/index.d.ts.map +1 -1
  184. package/dist/features/lists/checklist/server/index.js +5 -2
  185. package/dist/features/lists/checklist/server/index.js.map +1 -1
  186. package/dist/features/lists/orderedList/server/index.d.ts.map +1 -1
  187. package/dist/features/lists/orderedList/server/index.js +5 -2
  188. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  189. package/dist/features/lists/shared/constants.d.ts +2 -0
  190. package/dist/features/lists/shared/constants.d.ts.map +1 -0
  191. package/dist/features/lists/shared/constants.js +2 -0
  192. package/dist/features/lists/shared/constants.js.map +1 -0
  193. package/dist/features/lists/shared/schema.d.ts.map +1 -1
  194. package/dist/features/lists/shared/schema.js.map +1 -1
  195. package/dist/features/lists/shared/validate.d.ts +5 -0
  196. package/dist/features/lists/shared/validate.d.ts.map +1 -0
  197. package/dist/features/lists/shared/validate.js +15 -0
  198. package/dist/features/lists/shared/validate.js.map +1 -0
  199. package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -1
  200. package/dist/features/lists/unorderedList/server/index.js +5 -2
  201. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  202. package/dist/features/relationship/client/components/index.css +3 -6
  203. package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
  204. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  205. package/dist/features/relationship/client/index.d.ts +2 -2
  206. package/dist/features/relationship/client/index.d.ts.map +1 -1
  207. package/dist/features/relationship/client/index.js.map +1 -1
  208. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  209. package/dist/features/relationship/client/nodes/RelationshipNode.js +0 -3
  210. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  211. package/dist/features/relationship/client/plugins/index.d.ts +2 -2
  212. package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
  213. package/dist/features/relationship/client/plugins/index.js +27 -31
  214. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  215. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts +2 -4
  216. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
  217. package/dist/features/relationship/client/utils/useEnabledRelationships.js +53 -20
  218. package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
  219. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +2 -2
  220. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
  221. package/dist/features/relationship/server/graphQLPopulationPromise.js +2 -2
  222. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  223. package/dist/features/relationship/server/index.d.ts +8 -1
  224. package/dist/features/relationship/server/index.d.ts.map +1 -1
  225. package/dist/features/relationship/server/index.js +28 -11
  226. package/dist/features/relationship/server/index.js.map +1 -1
  227. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  228. package/dist/features/relationship/server/nodes/RelationshipNode.js +1 -5
  229. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  230. package/dist/features/relationship/server/schema.d.ts +3 -2
  231. package/dist/features/relationship/server/schema.d.ts.map +1 -1
  232. package/dist/features/relationship/server/schema.js +9 -12
  233. package/dist/features/relationship/server/schema.js.map +1 -1
  234. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts +1 -6
  235. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -1
  236. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js +1 -5
  237. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js.map +1 -1
  238. package/dist/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -1
  239. package/dist/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -1
  240. package/dist/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -1
  241. package/dist/features/table/client/index.d.ts.map +1 -0
  242. package/dist/features/table/client/index.js.map +1 -0
  243. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts +8 -0
  244. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts.map +1 -0
  245. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js +19 -0
  246. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js.map +1 -0
  247. package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.css +1 -2
  248. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -0
  249. package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.js +17 -44
  250. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js.map +1 -0
  251. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -0
  252. package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.js +48 -25
  253. package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js.map +1 -0
  254. package/dist/features/table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -0
  255. package/dist/features/table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -0
  256. package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.css +0 -3
  257. package/dist/features/table/client/plugins/TablePlugin/TableGridPopup/index.d.ts.map +1 -0
  258. package/dist/features/table/client/plugins/TablePlugin/TableGridPopup/index.js.map +1 -0
  259. package/dist/features/table/client/plugins/TablePlugin/index.d.ts.map +1 -0
  260. package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.js +54 -18
  261. package/dist/features/table/client/plugins/TablePlugin/index.js.map +1 -0
  262. package/dist/features/table/client/utils/debounce.d.ts.map +1 -0
  263. package/dist/features/table/client/utils/debounce.js.map +1 -0
  264. package/dist/features/table/client/utils/useDebounce.d.ts.map +1 -0
  265. package/dist/features/table/client/utils/useDebounce.js.map +1 -0
  266. package/dist/features/table/markdownTransformer.d.ts.map +1 -0
  267. package/dist/features/table/markdownTransformer.js.map +1 -0
  268. package/dist/features/table/server/index.d.ts +3 -0
  269. package/dist/features/table/server/index.d.ts.map +1 -0
  270. package/dist/features/{experimental_table → table}/server/index.js +4 -4
  271. package/dist/features/table/server/index.js.map +1 -0
  272. package/dist/features/table/server/schema.d.ts.map +1 -0
  273. package/dist/features/table/server/schema.js.map +1 -0
  274. package/dist/features/textState/defaultColors.js +1 -1
  275. package/dist/features/textState/defaultColors.js.map +1 -1
  276. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.d.ts +8 -0
  277. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.d.ts.map +1 -0
  278. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js +80 -0
  279. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js.map +1 -0
  280. package/dist/features/toolbars/fixed/client/Toolbar/index.css +78 -6
  281. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  282. package/dist/features/toolbars/fixed/client/Toolbar/index.js +145 -71
  283. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  284. package/dist/features/toolbars/inline/client/Toolbar/index.css +0 -1
  285. package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -1
  286. package/dist/features/toolbars/inline/client/Toolbar/index.js +84 -37
  287. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  288. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  289. package/dist/features/toolbars/shared/ToolbarButton/index.js +27 -2
  290. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  291. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  292. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +199 -81
  293. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  294. package/dist/features/toolbars/shared/ToolbarDropdown/index.css +16 -14
  295. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  296. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +22 -6
  297. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  298. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.d.ts +5 -0
  299. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.d.ts.map +1 -0
  300. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js +109 -0
  301. package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js.map +1 -0
  302. package/dist/features/typesServer.d.ts +17 -12
  303. package/dist/features/typesServer.d.ts.map +1 -1
  304. package/dist/features/typesServer.js.map +1 -1
  305. package/dist/features/upload/client/component/index.css +0 -2
  306. package/dist/features/upload/client/component/index.js +2 -1
  307. package/dist/features/upload/client/component/index.js.map +1 -1
  308. package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
  309. package/dist/features/upload/client/drawer/index.js.map +1 -1
  310. package/dist/features/upload/client/index.d.ts +3 -2
  311. package/dist/features/upload/client/index.d.ts.map +1 -1
  312. package/dist/features/upload/client/index.js.map +1 -1
  313. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  314. package/dist/features/upload/client/nodes/UploadNode.js +0 -7
  315. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  316. package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
  317. package/dist/features/upload/client/plugin/index.js +50 -53
  318. package/dist/features/upload/client/plugin/index.js.map +1 -1
  319. package/dist/features/upload/server/graphQLPopulationPromise.d.ts +2 -2
  320. package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
  321. package/dist/features/upload/server/graphQLPopulationPromise.js +1 -1
  322. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  323. package/dist/features/upload/server/index.d.ts +7 -3
  324. package/dist/features/upload/server/index.d.ts.map +1 -1
  325. package/dist/features/upload/server/index.js +20 -16
  326. package/dist/features/upload/server/index.js.map +1 -1
  327. package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
  328. package/dist/features/upload/server/nodes/UploadNode.js +1 -9
  329. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  330. package/dist/features/upload/server/schema.d.ts +4 -16
  331. package/dist/features/upload/server/schema.d.ts.map +1 -1
  332. package/dist/features/upload/server/schema.js +8 -10
  333. package/dist/features/upload/server/schema.js.map +1 -1
  334. package/dist/features/upload/server/validate.d.ts +2 -2
  335. package/dist/features/upload/server/validate.d.ts.map +1 -1
  336. package/dist/features/upload/server/validate.js +4 -1
  337. package/dist/features/upload/server/validate.js.map +1 -1
  338. package/dist/field/Diff/converters/listitem/index.d.ts.map +1 -1
  339. package/dist/field/Diff/converters/listitem/index.js +2 -1
  340. package/dist/field/Diff/converters/listitem/index.js.map +1 -1
  341. package/dist/field/Diff/converters/relationship/index.css +0 -1
  342. package/dist/field/Diff/converters/unknown/index.css +0 -1
  343. package/dist/field/Diff/converters/upload/index.css +0 -1
  344. package/dist/field/Diff/converters/upload/index.js.map +1 -1
  345. package/dist/field/Diff/index.css +0 -2
  346. package/dist/field/Diff/index.d.ts +3 -2
  347. package/dist/field/Diff/index.d.ts.map +1 -1
  348. package/dist/field/Diff/index.js +3 -2
  349. package/dist/field/Diff/index.js.map +1 -1
  350. package/dist/field/Field.d.ts.map +1 -1
  351. package/dist/field/Field.js +26 -16
  352. package/dist/field/Field.js.map +1 -1
  353. package/dist/field/RenderLexical/index.d.ts +3 -1
  354. package/dist/field/RenderLexical/index.d.ts.map +1 -1
  355. package/dist/field/RenderLexical/index.js +23 -23
  356. package/dist/field/RenderLexical/index.js.map +1 -1
  357. package/dist/field/ViewSelector.d.ts.map +1 -1
  358. package/dist/field/ViewSelector.js +13 -4
  359. package/dist/field/ViewSelector.js.map +1 -1
  360. package/dist/field/bundled.css +1 -1
  361. package/dist/field/index.css +10 -11
  362. package/dist/field/index.js.map +1 -1
  363. package/dist/field/rscEntry.d.ts +2 -2
  364. package/dist/field/rscEntry.d.ts.map +1 -1
  365. package/dist/field/rscEntry.js.map +1 -1
  366. package/dist/i18n.d.ts.map +1 -1
  367. package/dist/i18n.js +112 -0
  368. package/dist/i18n.js.map +1 -1
  369. package/dist/index.d.ts +5 -5
  370. package/dist/index.d.ts.map +1 -1
  371. package/dist/index.js +27 -5
  372. package/dist/index.js.map +1 -1
  373. package/dist/lexical/LexicalEditor.css +30 -19
  374. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  375. package/dist/lexical/LexicalEditor.js +61 -64
  376. package/dist/lexical/LexicalEditor.js.map +1 -1
  377. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  378. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  379. package/dist/lexical/config/server/loader.d.ts +1 -1
  380. package/dist/lexical/config/server/loader.d.ts.map +1 -1
  381. package/dist/lexical/config/server/loader.js +2 -2
  382. package/dist/lexical/config/server/loader.js.map +1 -1
  383. package/dist/lexical/config/server/sanitize.d.ts +1 -1
  384. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  385. package/dist/lexical/config/server/sanitize.js +2 -2
  386. package/dist/lexical/config/server/sanitize.js.map +1 -1
  387. package/dist/lexical/plugins/ClipboardPlugin/index.js.map +1 -1
  388. package/dist/lexical/plugins/DecoratorPlugin/index.d.ts.map +1 -1
  389. package/dist/lexical/plugins/DecoratorPlugin/index.js +24 -21
  390. package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
  391. package/dist/lexical/plugins/InsertParagraphAtEnd/index.css +18 -25
  392. package/dist/lexical/plugins/InsertParagraphAtEnd/index.d.ts.map +1 -1
  393. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js +27 -14
  394. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
  395. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  396. package/dist/lexical/plugins/NodeViewOverridePlugin/index.d.ts.map +1 -1
  397. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js +21 -0
  398. package/dist/lexical/plugins/NodeViewOverridePlugin/index.js.map +1 -1
  399. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +0 -1
  400. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  401. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +236 -108
  402. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  403. package/dist/lexical/plugins/SlashMenu/index.css +0 -2
  404. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  405. package/dist/lexical/plugins/TextPlugin/index.js.map +1 -1
  406. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.css +1 -0
  407. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +2 -2
  408. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  409. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
  410. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +18 -0
  411. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  412. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +139 -37
  413. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  414. package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.d.ts +7 -0
  415. package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.d.ts.map +1 -0
  416. package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.js +15 -0
  417. package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.js.map +1 -0
  418. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts +7 -0
  419. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts.map +1 -0
  420. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js +62 -0
  421. package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js.map +1 -0
  422. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -1
  423. package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  424. package/dist/lexical/plugins/handles/utils/setHandlePosition.js +2 -0
  425. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  426. package/dist/lexical/theme/EditorTheme.css +0 -2
  427. package/dist/lexical/ui/ContentEditable.css +19 -14
  428. package/dist/lexical/ui/ContentEditable.d.ts +2 -1
  429. package/dist/lexical/ui/ContentEditable.d.ts.map +1 -1
  430. package/dist/lexical/ui/ContentEditable.js +32 -11
  431. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  432. package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
  433. package/dist/lexical/ui/icons/H3/index.js +13 -6
  434. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  435. package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -1
  436. package/dist/lexical/ui/icons/H4/index.js +13 -6
  437. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  438. package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -1
  439. package/dist/lexical/ui/icons/H5/index.js +13 -6
  440. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  441. package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -1
  442. package/dist/lexical/ui/icons/H6/index.js +13 -6
  443. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  444. package/dist/lexical/utils/markdown/createBlockNode.d.ts +1 -1
  445. package/dist/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
  446. package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
  447. package/dist/lexical/utils/nodeFormat.js +0 -2
  448. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  449. package/dist/lexical/utils/point.d.ts.map +1 -1
  450. package/dist/lexical/utils/rect.d.ts.map +1 -1
  451. package/dist/lexical/utils/url.d.ts.map +1 -1
  452. package/dist/lexical/utils/url.js +1 -1
  453. package/dist/lexical/utils/url.js.map +1 -1
  454. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.d.ts +2 -0
  455. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.d.ts.map +1 -0
  456. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.js +2 -0
  457. package/dist/lexical-proxy/@lexical-react/ExtensionComponent.js.map +1 -0
  458. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.d.ts +2 -0
  459. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.d.ts.map +1 -0
  460. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.js +2 -0
  461. package/dist/lexical-proxy/@lexical-react/LexicalExtensionComposer.js.map +1 -0
  462. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.d.ts +2 -0
  463. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.d.ts.map +1 -0
  464. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.js +2 -0
  465. package/dist/lexical-proxy/@lexical-react/LexicalExtensionEditorComposer.js.map +1 -0
  466. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.d.ts +2 -0
  467. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.d.ts.map +1 -0
  468. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.js +2 -0
  469. package/dist/lexical-proxy/@lexical-react/LexicalSelectionAlwaysOnDisplay.js.map +1 -0
  470. package/dist/lexical-proxy/@lexical-react/ReactExtension.d.ts +2 -0
  471. package/dist/lexical-proxy/@lexical-react/ReactExtension.d.ts.map +1 -0
  472. package/dist/lexical-proxy/@lexical-react/ReactExtension.js +2 -0
  473. package/dist/lexical-proxy/@lexical-react/ReactExtension.js.map +1 -0
  474. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.d.ts +2 -0
  475. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.d.ts.map +1 -0
  476. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.js +2 -0
  477. package/dist/lexical-proxy/@lexical-react/ReactPluginHostExtension.js.map +1 -0
  478. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.d.ts +2 -0
  479. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.d.ts.map +1 -0
  480. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.js +2 -0
  481. package/dist/lexical-proxy/@lexical-react/ReactProviderExtension.js.map +1 -0
  482. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.d.ts +2 -0
  483. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.d.ts.map +1 -0
  484. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.js +2 -0
  485. package/dist/lexical-proxy/@lexical-react/TreeViewExtension.js.map +1 -0
  486. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.d.ts +2 -0
  487. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.d.ts.map +1 -0
  488. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.js +2 -0
  489. package/dist/lexical-proxy/@lexical-react/useExtensionComponent.js.map +1 -0
  490. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.d.ts +2 -0
  491. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.d.ts.map +1 -0
  492. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.js +2 -0
  493. package/dist/lexical-proxy/@lexical-react/useExtensionSignalValue.js.map +1 -0
  494. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.d.ts +2 -0
  495. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.d.ts.map +1 -0
  496. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.js +2 -0
  497. package/dist/lexical-proxy/@lexical-react/useLexicalAriaLiveRegion.js.map +1 -0
  498. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.d.ts +2 -0
  499. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.d.ts.map +1 -0
  500. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.js +2 -0
  501. package/dist/lexical-proxy/@lexical-react/useLexicalFocusManagerRef.js.map +1 -0
  502. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.d.ts +2 -0
  503. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.d.ts.map +1 -0
  504. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.js +2 -0
  505. package/dist/lexical-proxy/@lexical-react/useLexicalFocusTrapRef.js.map +1 -0
  506. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.d.ts +2 -0
  507. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.d.ts.map +1 -0
  508. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.js +2 -0
  509. package/dist/lexical-proxy/@lexical-react/useLexicalRovingTabIndexRef.js.map +1 -0
  510. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.d.ts +2 -0
  511. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.d.ts.map +1 -0
  512. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.js +2 -0
  513. package/dist/lexical-proxy/@lexical-react/useLexicalSlotRef.js.map +1 -0
  514. package/dist/populateGraphQL/populate.d.ts.map +1 -1
  515. package/dist/populateGraphQL/populate.js +4 -1
  516. package/dist/populateGraphQL/populate.js.map +1 -1
  517. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  518. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts.map +1 -1
  519. package/dist/presets/llmInstructions.d.ts +2 -0
  520. package/dist/presets/llmInstructions.d.ts.map +1 -0
  521. package/dist/presets/llmInstructions.js +13 -0
  522. package/dist/presets/llmInstructions.js.map +1 -0
  523. package/dist/types/builtInNodes.d.ts +1 -1
  524. package/dist/types/builtInNodes.d.ts.map +1 -1
  525. package/dist/types/builtInNodes.js +8 -3
  526. package/dist/types/builtInNodes.js.map +1 -1
  527. package/dist/types/index.d.ts +4 -7
  528. package/dist/types/index.d.ts.map +1 -1
  529. package/dist/types/index.js.map +1 -1
  530. package/dist/types/jsonSchemaHelpers.d.ts +5 -1
  531. package/dist/types/jsonSchemaHelpers.d.ts.map +1 -1
  532. package/dist/types/jsonSchemaHelpers.js +7 -2
  533. package/dist/types/jsonSchemaHelpers.js.map +1 -1
  534. package/dist/types/nodeTypes.d.ts +6 -1
  535. package/dist/types/nodeTypes.d.ts.map +1 -1
  536. package/dist/types/nodeTypes.js.map +1 -1
  537. package/dist/utilities/buildEditorState.d.ts.map +1 -1
  538. package/dist/utilities/buildEditorState.js.map +1 -1
  539. package/dist/utilities/buildInitialState.d.ts +3 -2
  540. package/dist/utilities/buildInitialState.d.ts.map +1 -1
  541. package/dist/utilities/buildInitialState.js +1 -0
  542. package/dist/utilities/buildInitialState.js.map +1 -1
  543. package/dist/utilities/createServerFeature.d.ts +1 -1
  544. package/dist/utilities/createServerFeature.d.ts.map +1 -1
  545. package/dist/utilities/createServerFeature.js +2 -2
  546. package/dist/utilities/createServerFeature.js.map +1 -1
  547. package/dist/utilities/editorConfigFactory.d.ts +6 -6
  548. package/dist/utilities/editorConfigFactory.d.ts.map +1 -1
  549. package/dist/utilities/editorConfigFactory.js +9 -9
  550. package/dist/utilities/editorConfigFactory.js.map +1 -1
  551. package/dist/utilities/fieldsDrawer/Drawer.js +36 -36
  552. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  553. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  554. package/dist/utilities/fieldsDrawer/DrawerContent.js +6 -9
  555. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  556. package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts +1 -1
  557. package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts.map +1 -1
  558. package/dist/utilities/fieldsDrawer/useDrawerSubmit.js.map +1 -1
  559. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -1
  560. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
  561. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -1
  562. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
  563. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -1
  564. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
  565. package/dist/utilities/generateImportMap.d.ts +3 -3
  566. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  567. package/dist/utilities/generateImportMap.js.map +1 -1
  568. package/dist/utilities/generateSchemaMap.d.ts +1 -1
  569. package/dist/utilities/generateSchemaMap.d.ts.map +1 -1
  570. package/dist/utilities/getDefaultSanitizedEditorConfig.d.ts +2 -2
  571. package/dist/utilities/getDefaultSanitizedEditorConfig.d.ts.map +1 -1
  572. package/dist/utilities/getDefaultSanitizedEditorConfig.js +6 -17
  573. package/dist/utilities/getDefaultSanitizedEditorConfig.js.map +1 -1
  574. package/dist/utilities/initLexicalFeatures.d.ts.map +1 -1
  575. package/dist/utilities/initLexicalFeatures.js +38 -4
  576. package/dist/utilities/initLexicalFeatures.js.map +1 -1
  577. package/dist/utilities/recurseNodeTree.d.ts.map +1 -1
  578. package/dist/utilities/upgradeLexicalData/index.js +6 -3
  579. package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
  580. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
  581. package/dist/utilities/useLexicalFeature.d.ts.map +1 -1
  582. package/dist/utilities/useLexicalFeature.js +15 -6
  583. package/dist/utilities/useLexicalFeature.js.map +1 -1
  584. package/dist/utilities/useRunDeprioritized.js.map +1 -1
  585. package/dist/validate/hasText.d.ts +2 -2
  586. package/dist/validate/hasText.d.ts.map +1 -1
  587. package/dist/validate/hasText.js.map +1 -1
  588. package/dist/validate/index.d.ts +1 -1
  589. package/dist/validate/index.d.ts.map +1 -1
  590. package/package.json +125 -55
  591. package/dist/dependencyChecker.spec.js +0 -16
  592. package/dist/dependencyChecker.spec.js.map +0 -1
  593. package/dist/exports/client/Field-XH5C4HFU.js +0 -2
  594. package/dist/exports/client/Field-XH5C4HFU.js.map +0 -7
  595. package/dist/exports/client/bundled.css +0 -1
  596. package/dist/exports/client/chunk-ESITTE3C.js +0 -2
  597. package/dist/exports/client/chunk-ESITTE3C.js.map +0 -7
  598. package/dist/exports/client/chunk-UD4DQ4AK.js +0 -2
  599. package/dist/exports/client/chunk-UD4DQ4AK.js.map +0 -7
  600. package/dist/exports/client/chunk-X3D4LZS7.js +0 -2
  601. package/dist/exports/client/chunk-X3D4LZS7.js.map +0 -7
  602. package/dist/exports/client/component-PHZQBOJE.js +0 -2
  603. package/dist/exports/client/component-PHZQBOJE.js.map +0 -7
  604. package/dist/exports/client/componentInline-H24N7GUG.js +0 -2
  605. package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts +0 -11
  606. package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts.map +0 -1
  607. package/dist/features/blocks/client/component/removeEmptyArrayValues.js +0 -20
  608. package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +0 -1
  609. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js +0 -180
  610. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js.map +0 -1
  611. package/dist/features/experimental_table/client/index.d.ts.map +0 -1
  612. package/dist/features/experimental_table/client/index.js.map +0 -1
  613. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +0 -1
  614. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +0 -1
  615. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +0 -1
  616. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +0 -1
  617. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +0 -1
  618. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +0 -1
  619. package/dist/features/experimental_table/client/plugins/TablePlugin/TableGridPopup/index.d.ts.map +0 -1
  620. package/dist/features/experimental_table/client/plugins/TablePlugin/TableGridPopup/index.js.map +0 -1
  621. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +0 -1
  622. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +0 -1
  623. package/dist/features/experimental_table/client/utils/debounce.d.ts.map +0 -1
  624. package/dist/features/experimental_table/client/utils/debounce.js.map +0 -1
  625. package/dist/features/experimental_table/client/utils/useDebounce.d.ts.map +0 -1
  626. package/dist/features/experimental_table/client/utils/useDebounce.js.map +0 -1
  627. package/dist/features/experimental_table/markdownTransformer.d.ts.map +0 -1
  628. package/dist/features/experimental_table/markdownTransformer.js.map +0 -1
  629. package/dist/features/experimental_table/server/index.d.ts +0 -3
  630. package/dist/features/experimental_table/server/index.d.ts.map +0 -1
  631. package/dist/features/experimental_table/server/index.js.map +0 -1
  632. package/dist/features/experimental_table/server/schema.d.ts.map +0 -1
  633. package/dist/features/experimental_table/server/schema.js.map +0 -1
  634. package/dist/features/link/markdownTransformer.spec.js +0 -195
  635. package/dist/features/link/markdownTransformer.spec.js.map +0 -1
  636. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +0 -88
  637. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +0 -1
  638. package/dist/lexical/utils/url.spec.js +0 -114
  639. package/dist/lexical/utils/url.spec.js.map +0 -1
  640. package/dist/utilities/jsx/jsx.spec.js +0 -178
  641. package/dist/utilities/jsx/jsx.spec.js.map +0 -1
  642. /package/dist/exports/client/{RelationshipComponent-YCPAKOL7.js.map → RelationshipComponent-TVK6I4W4.js.map} +0 -0
  643. /package/dist/exports/client/{componentInline-H24N7GUG.js.map → componentInline-AU7IBNY7.js.map} +0 -0
  644. /package/dist/features/{experimental_table → table}/client/index.d.ts +0 -0
  645. /package/dist/features/{experimental_table → table}/client/index.js +0 -0
  646. /package/dist/features/{experimental_table → table}/client/plugins/TableActionMenuPlugin/index.d.ts +0 -0
  647. /package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.css +0 -0
  648. /package/dist/features/{experimental_table → table}/client/plugins/TableCellResizerPlugin/index.d.ts +0 -0
  649. /package/dist/features/{experimental_table → table}/client/plugins/TableHoverActionsPlugin/index.d.ts +0 -0
  650. /package/dist/features/{experimental_table → table}/client/plugins/TableHoverActionsPlugin/index.js +0 -0
  651. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.d.ts +0 -0
  652. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/TableGridPopup/index.js +0 -0
  653. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.css +0 -0
  654. /package/dist/features/{experimental_table → table}/client/plugins/TablePlugin/index.d.ts +0 -0
  655. /package/dist/features/{experimental_table → table}/client/utils/debounce.d.ts +0 -0
  656. /package/dist/features/{experimental_table → table}/client/utils/debounce.js +0 -0
  657. /package/dist/features/{experimental_table → table}/client/utils/useDebounce.d.ts +0 -0
  658. /package/dist/features/{experimental_table → table}/client/utils/useDebounce.js +0 -0
  659. /package/dist/features/{experimental_table → table}/markdownTransformer.d.ts +0 -0
  660. /package/dist/features/{experimental_table → table}/markdownTransformer.js +0 -0
  661. /package/dist/features/{experimental_table → table}/server/schema.d.ts +0 -0
  662. /package/dist/features/{experimental_table → table}/server/schema.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$createHeadingNode","$isHeadingNode","HeadingNode","$setBlocksType","$getSelection","$isRangeSelection","useEffect","H1Icon","H2Icon","H3Icon","H4Icon","H5Icon","H6Icon","createClientFeature","slashMenuBasicGroupWithItems","toolbarTextDropdownGroupWithItems","PAYLOAD_HEADING","$setHeading","headingSize","selection","iconImports","h1","h2","h3","h4","h5","h6","HeadingFeatureClient","props","enabledHeadingSizes","toolbarGroups","map","i","ChildComponent","isActive","node","getNodes","getTag","parent","getParent","key","label","i18n","t","headingLevel","charAt","onSelect","editor","update","order","markdownTransformers","nodes","plugins","Component","HeadingPlugin","position","sanitizedClientFeatureProps","slashMenu","groups","length","Icon","keywords","toolbarFixed","toolbarInline","t0","$","clientProps","t1","t2","undefined","t3","at","lowestAllowed","t4","t5","registerNodeTransform","includes","setTag"],"sources":["../../../../src/features/heading/client/index.tsx"],"sourcesContent":["'use client'\n\nimport type { HeadingTagType } from '@lexical/rich-text'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $createHeadingNode, $isHeadingNode, HeadingNode } from '@lexical/rich-text'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection, $isRangeSelection } from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\nimport type { PluginComponent } from '../../typesClient.js'\nimport type { HeadingFeatureProps } from '../server/index.js'\n\nimport { H1Icon } from '../../../lexical/ui/icons/H1/index.js'\nimport { H2Icon } from '../../../lexical/ui/icons/H2/index.js'\nimport { H3Icon } from '../../../lexical/ui/icons/H3/index.js'\nimport { H4Icon } from '../../../lexical/ui/icons/H4/index.js'\nimport { H5Icon } from '../../../lexical/ui/icons/H5/index.js'\nimport { H6Icon } from '../../../lexical/ui/icons/H6/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js'\nimport { PAYLOAD_HEADING } from '../markdownTransformer.js'\n\nconst $setHeading = (headingSize: HeadingTagType) => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createHeadingNode(headingSize))\n}\n\nconst iconImports = {\n h1: H1Icon,\n h2: H2Icon,\n h3: H3Icon,\n h4: H4Icon,\n h5: H5Icon,\n h6: H6Icon,\n}\n\nexport const HeadingFeatureClient = createClientFeature<HeadingFeatureProps>(({ props }) => {\n const { enabledHeadingSizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] } = props\n\n const toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems(\n enabledHeadingSizes.map((headingSize, i) => {\n return {\n ChildComponent: iconImports[headingSize],\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isHeadingNode(node) && node.getTag() === headingSize) {\n continue\n }\n\n const parent = node.getParent()\n if ($isHeadingNode(parent) && parent.getTag() === headingSize) {\n continue\n }\n\n return false\n }\n return true\n },\n key: headingSize,\n label: ({ i18n }) => {\n return i18n.t('lexical:heading:label', { headingLevel: headingSize.charAt(1) })\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n $setHeading(headingSize)\n })\n },\n order: i + 2,\n }\n }),\n ),\n ]\n\n return {\n markdownTransformers: [PAYLOAD_HEADING(enabledHeadingSizes)],\n nodes: [HeadingNode],\n plugins: [\n {\n Component: HeadingPlugin,\n position: 'normal',\n },\n ],\n sanitizedClientFeatureProps: props,\n slashMenu: {\n groups: enabledHeadingSizes?.length\n ? [\n slashMenuBasicGroupWithItems(\n enabledHeadingSizes.map((headingSize) => {\n return {\n Icon: iconImports[headingSize],\n key: `heading-${headingSize.charAt(1)}`,\n keywords: ['heading', headingSize],\n label: ({ i18n }) => {\n return i18n.t('lexical:heading:label', {\n headingLevel: headingSize.charAt(1),\n })\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n $setHeading(headingSize)\n })\n },\n }\n }),\n ),\n ]\n : [],\n },\n toolbarFixed: {\n groups: enabledHeadingSizes?.length ? toolbarGroups : [],\n },\n toolbarInline: {\n groups: enabledHeadingSizes?.length ? toolbarGroups : [],\n },\n }\n})\n\nconst HeadingPlugin: PluginComponent<HeadingFeatureProps> = ({ clientProps }) => {\n const { enabledHeadingSizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] } = clientProps\n const lowestAllowed = enabledHeadingSizes.at(-1)\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!lowestAllowed || enabledHeadingSizes.length === 6) {\n return\n }\n return editor.registerNodeTransform(HeadingNode, (node) => {\n if (!enabledHeadingSizes.includes(node.getTag())) {\n node.setTag(lowestAllowed)\n }\n })\n }, [editor, enabledHeadingSizes, lowestAllowed])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$createHeadingNode","$isHeadingNode","HeadingNode","$setBlocksType","$getSelection","$isRangeSelection","useEffect","H1Icon","H2Icon","H3Icon","H4Icon","H5Icon","H6Icon","createClientFeature","slashMenuBasicGroupWithItems","toolbarTextDropdownGroupWithItems","PAYLOAD_HEADING","$setHeading","headingSize","selection","iconImports","h1","h2","h3","h4","h5","h6","HeadingFeatureClient","props","enabledHeadingSizes","toolbarGroups","map","i","ChildComponent","isActive","node","getNodes","getTag","parent","getParent","key","label","i18n","t","headingLevel","charAt","onSelect","editor","update","order","markdownTransformers","nodes","plugins","Component","HeadingPlugin","position","sanitizedClientFeatureProps","slashMenu","groups","length","Icon","keywords","toolbarFixed","toolbarInline","t0","$","clientProps","t1","t2","undefined","t3","at","lowestAllowed","t4","t5","registerNodeTransform","includes","setTag"],"sources":["../../../../src/features/heading/client/index.tsx"],"sourcesContent":["'use client'\n\nimport type { HeadingTagType } from '@lexical/rich-text'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $createHeadingNode, $isHeadingNode, HeadingNode } from '@lexical/rich-text'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection, $isRangeSelection } from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\nimport type { PluginComponent } from '../../typesClient.js'\nimport type { HeadingFeatureProps } from '../server/index.js'\n\nimport { H1Icon } from '../../../lexical/ui/icons/H1/index.js'\nimport { H2Icon } from '../../../lexical/ui/icons/H2/index.js'\nimport { H3Icon } from '../../../lexical/ui/icons/H3/index.js'\nimport { H4Icon } from '../../../lexical/ui/icons/H4/index.js'\nimport { H5Icon } from '../../../lexical/ui/icons/H5/index.js'\nimport { H6Icon } from '../../../lexical/ui/icons/H6/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js'\nimport { PAYLOAD_HEADING } from '../markdownTransformer.js'\n\nconst $setHeading = (headingSize: HeadingTagType) => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createHeadingNode(headingSize))\n}\n\nconst iconImports = {\n h1: H1Icon,\n h2: H2Icon,\n h3: H3Icon,\n h4: H4Icon,\n h5: H5Icon,\n h6: H6Icon,\n}\n\nexport const HeadingFeatureClient = createClientFeature<HeadingFeatureProps>(({ props }) => {\n const { enabledHeadingSizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] } = props\n\n const toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems(\n enabledHeadingSizes.map((headingSize, i) => {\n return {\n ChildComponent: iconImports[headingSize],\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isHeadingNode(node) && node.getTag() === headingSize) {\n continue\n }\n\n const parent = node.getParent()\n if ($isHeadingNode(parent) && parent.getTag() === headingSize) {\n continue\n }\n\n return false\n }\n return true\n },\n key: headingSize,\n label: ({ i18n }) => {\n return i18n.t('lexical:heading:label', { headingLevel: headingSize.charAt(1) })\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n $setHeading(headingSize)\n })\n },\n order: i + 2,\n }\n }),\n ),\n ]\n\n return {\n markdownTransformers: [PAYLOAD_HEADING(enabledHeadingSizes)],\n nodes: [HeadingNode],\n plugins: [\n {\n Component: HeadingPlugin,\n position: 'normal',\n },\n ],\n sanitizedClientFeatureProps: props,\n slashMenu: {\n groups: enabledHeadingSizes?.length\n ? [\n slashMenuBasicGroupWithItems(\n enabledHeadingSizes.map((headingSize) => {\n return {\n Icon: iconImports[headingSize],\n key: `heading-${headingSize.charAt(1)}`,\n keywords: ['heading', headingSize],\n label: ({ i18n }) => {\n return i18n.t('lexical:heading:label', {\n headingLevel: headingSize.charAt(1),\n })\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n $setHeading(headingSize)\n })\n },\n }\n }),\n ),\n ]\n : [],\n },\n toolbarFixed: {\n groups: enabledHeadingSizes?.length ? toolbarGroups : [],\n },\n toolbarInline: {\n groups: enabledHeadingSizes?.length ? toolbarGroups : [],\n },\n }\n})\n\nconst HeadingPlugin: PluginComponent<HeadingFeatureProps> = ({ clientProps }) => {\n const { enabledHeadingSizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] } = clientProps\n const lowestAllowed = enabledHeadingSizes.at(-1)\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!lowestAllowed || enabledHeadingSizes.length === 6) {\n return\n }\n return editor.registerNodeTransform(HeadingNode, (node) => {\n if (!enabledHeadingSizes.includes(node.getTag())) {\n node.setTag(lowestAllowed)\n }\n })\n }, [editor, enabledHeadingSizes, lowestAllowed])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export declare const ALLOWED_HEADING_TAGS: Set<string>;
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/features/heading/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,aAAgD,CAAA"}
@@ -0,0 +1,2 @@
1
+ export const ALLOWED_HEADING_TAGS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']);
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["ALLOWED_HEADING_TAGS","Set"],"sources":["../../../src/features/heading/constants.ts"],"sourcesContent":["export const ALLOWED_HEADING_TAGS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'h6'])\n"],"mappings":"AAAA,OAAO,MAAMA,oBAAA,GAAuB,IAAIC,GAAA,CAAI,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/heading/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAUxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,cAAc,6HA8BzB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/heading/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAWxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAA;CACvC,CAAA;AAED,eAAO,MAAM,cAAc,6HA+BzB,CAAA"}
@@ -4,6 +4,7 @@ import { createNode } from '../../typeUtilities.js';
4
4
  import { PAYLOAD_HEADING } from '../markdownTransformer.js';
5
5
  import { i18n } from './i18n.js';
6
6
  import { createHeadingJSONSchema } from './schema.js';
7
+ import { headingValidation } from './validate.js';
7
8
  export const HeadingFeature = createServerFeature({
8
9
  feature: ({
9
10
  props
@@ -22,7 +23,10 @@ export const HeadingFeature = createServerFeature({
22
23
  markdownTransformers: enabledHeadingSizes.length > 0 ? [PAYLOAD_HEADING(enabledHeadingSizes)] : [],
23
24
  nodes: [createNode({
24
25
  jsonSchema: createHeadingJSONSchema(enabledHeadingSizes),
25
- node: HeadingNode
26
+ node: HeadingNode,
27
+ validations: [headingValidation({
28
+ enabledHeadingSizes
29
+ })]
26
30
  })],
27
31
  sanitizedServerFeatureProps: props
28
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["HeadingNode","createServerFeature","createNode","PAYLOAD_HEADING","i18n","createHeadingJSONSchema","HeadingFeature","feature","props","enabledHeadingSizes","sort","ClientFeature","clientFeatureProps","markdownTransformers","length","nodes","jsonSchema","node","sanitizedServerFeatureProps","key"],"sources":["../../../../src/features/heading/server/index.ts"],"sourcesContent":["import type { HeadingTagType } from '@lexical/rich-text'\n\nimport { HeadingNode } from '@lexical/rich-text'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { PAYLOAD_HEADING } from '../markdownTransformer.js'\nimport { i18n } from './i18n.js'\nimport { createHeadingJSONSchema } from './schema.js'\n\nexport type { SerializedHeadingNode } from './schema.js'\n\nexport type HeadingFeatureProps = {\n enabledHeadingSizes?: HeadingTagType[]\n}\n\nexport const HeadingFeature = createServerFeature<\n HeadingFeatureProps,\n HeadingFeatureProps,\n HeadingFeatureProps\n>({\n feature: ({ props }) => {\n if (!props) {\n props = {}\n }\n\n const { enabledHeadingSizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] } = props\n\n enabledHeadingSizes.sort()\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#HeadingFeatureClient',\n clientFeatureProps: props,\n i18n,\n markdownTransformers:\n enabledHeadingSizes.length > 0 ? [PAYLOAD_HEADING(enabledHeadingSizes)] : [],\n nodes: [\n createNode({\n jsonSchema: createHeadingJSONSchema(enabledHeadingSizes),\n node: HeadingNode,\n }),\n ],\n sanitizedServerFeatureProps: props,\n }\n },\n key: 'heading',\n})\n"],"mappings":"AAEA,SAASA,WAAW,QAAQ;AAE5B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,eAAe,QAAQ;AAChC,SAASC,IAAI,QAAQ;AACrB,SAASC,uBAAuB,QAAQ;AAQxC,OAAO,MAAMC,cAAA,GAAiBL,mBAAA,CAI5B;EACAM,OAAA,EAASA,CAAC;IAAEC;EAAK,CAAE;IACjB,IAAI,CAACA,KAAA,EAAO;MACVA,KAAA,GAAQ,CAAC;IACX;IAEA,MAAM;MAAEC,mBAAA,GAAsB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM;IAAK,CAAE,GAAGD,KAAA;IAEvEC,mBAAA,CAAoBC,IAAI;IAExB,OAAO;MACLC,aAAA,EAAe;MACfC,kBAAA,EAAoBJ,KAAA;MACpBJ,IAAA;MACAS,oBAAA,EACEJ,mBAAA,CAAoBK,MAAM,GAAG,IAAI,CAACX,eAAA,CAAgBM,mBAAA,EAAqB,GAAG,EAAE;MAC9EM,KAAA,EAAO,CACLb,UAAA,CAAW;QACTc,UAAA,EAAYX,uBAAA,CAAwBI,mBAAA;QACpCQ,IAAA,EAAMjB;MACR,GACD;MACDkB,2BAAA,EAA6BV;IAC/B;EACF;EACAW,GAAA,EAAK;AACP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["HeadingNode","createServerFeature","createNode","PAYLOAD_HEADING","i18n","createHeadingJSONSchema","headingValidation","HeadingFeature","feature","props","enabledHeadingSizes","sort","ClientFeature","clientFeatureProps","markdownTransformers","length","nodes","jsonSchema","node","validations","sanitizedServerFeatureProps","key"],"sources":["../../../../src/features/heading/server/index.ts"],"sourcesContent":["import type { HeadingTagType } from '@lexical/rich-text'\n\nimport { HeadingNode } from '@lexical/rich-text'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { PAYLOAD_HEADING } from '../markdownTransformer.js'\nimport { i18n } from './i18n.js'\nimport { createHeadingJSONSchema } from './schema.js'\nimport { headingValidation } from './validate.js'\n\nexport type { SerializedHeadingNode } from './schema.js'\n\nexport type HeadingFeatureProps = {\n enabledHeadingSizes?: HeadingTagType[]\n}\n\nexport const HeadingFeature = createServerFeature<\n HeadingFeatureProps,\n HeadingFeatureProps,\n HeadingFeatureProps\n>({\n feature: ({ props }) => {\n if (!props) {\n props = {}\n }\n\n const { enabledHeadingSizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] } = props\n\n enabledHeadingSizes.sort()\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#HeadingFeatureClient',\n clientFeatureProps: props,\n i18n,\n markdownTransformers:\n enabledHeadingSizes.length > 0 ? [PAYLOAD_HEADING(enabledHeadingSizes)] : [],\n nodes: [\n createNode({\n jsonSchema: createHeadingJSONSchema(enabledHeadingSizes),\n node: HeadingNode,\n validations: [headingValidation({ enabledHeadingSizes })],\n }),\n ],\n sanitizedServerFeatureProps: props,\n }\n },\n key: 'heading',\n})\n"],"mappings":"AAEA,SAASA,WAAW,QAAQ;AAE5B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,eAAe,QAAQ;AAChC,SAASC,IAAI,QAAQ;AACrB,SAASC,uBAAuB,QAAQ;AACxC,SAASC,iBAAiB,QAAQ;AAQlC,OAAO,MAAMC,cAAA,GAAiBN,mBAAA,CAI5B;EACAO,OAAA,EAASA,CAAC;IAAEC;EAAK,CAAE;IACjB,IAAI,CAACA,KAAA,EAAO;MACVA,KAAA,GAAQ,CAAC;IACX;IAEA,MAAM;MAAEC,mBAAA,GAAsB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM;IAAK,CAAE,GAAGD,KAAA;IAEvEC,mBAAA,CAAoBC,IAAI;IAExB,OAAO;MACLC,aAAA,EAAe;MACfC,kBAAA,EAAoBJ,KAAA;MACpBL,IAAA;MACAU,oBAAA,EACEJ,mBAAA,CAAoBK,MAAM,GAAG,IAAI,CAACZ,eAAA,CAAgBO,mBAAA,EAAqB,GAAG,EAAE;MAC9EM,KAAA,EAAO,CACLd,UAAA,CAAW;QACTe,UAAA,EAAYZ,uBAAA,CAAwBK,mBAAA;QACpCQ,IAAA,EAAMlB,WAAA;QACNmB,WAAA,EAAa,CAACb,iBAAA,CAAkB;UAAEI;QAAoB;MACxD,GACD;MACDU,2BAAA,EAA6BX;IAC/B;EACF;EACAY,GAAA,EAAK;AACP","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/heading/server/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,MAAM,WAAW,qBAAqB,CACpC,SAAS,SAAS,qBAAqB,GAAG,qBAAqB,EAC/D,IAAI,SAAS,cAAc,GAAG,cAAc,CAC5C,SAAQ,4BAA4B,CAAC,SAAS,CAAC;IAC/C,GAAG,EAAE,IAAI,CAAA;IACT,IAAI,EAAE,SAAS,CAAA;CAChB;AAaD,eAAO,MAAM,uBAAuB,GACjC,qBAAqB,cAAc,EAAE,KAAG,YAyBxC,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/heading/server/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,MAAM,WAAW,qBAAqB,CACpC,SAAS,SAAS,qBAAqB,GAAG,qBAAqB,EAC/D,IAAI,SAAS,cAAc,GAAG,cAAc,CAC5C,SAAQ,4BAA4B,CAAC,SAAS,CAAC;IAC/C,GAAG,EAAE,IAAI,CAAA;IACT,IAAI,EAAE,SAAS,CAAA;CAChB;AAaD,eAAO,MAAM,uBAAuB,wBACZ,cAAc,EAAE,KAAG,YAyBxC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { HeadingTagType, SerializedHeadingNode } from '@lexical/rich-text';
2
+ import type { NodeValidation } from '../../typesServer.js';
3
+ export declare const headingValidation: ({ enabledHeadingSizes, }: {
4
+ enabledHeadingSizes: HeadingTagType[];
5
+ }) => NodeValidation<SerializedHeadingNode>;
6
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/features/heading/server/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAI1D,eAAO,MAAM,iBAAiB,6BAE3B;IACD,mBAAmB,EAAE,cAAc,EAAE,CAAA;CACtC,KAAG,cAAc,CAAC,qBAAqB,CAcvC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { ALLOWED_HEADING_TAGS } from '../constants.js';
2
+ export const headingValidation = ({
3
+ enabledHeadingSizes
4
+ }) => {
5
+ const allowedHeadingTags = new Set(enabledHeadingSizes.filter(tag => ALLOWED_HEADING_TAGS.has(tag)));
6
+ return ({
7
+ node
8
+ }) => {
9
+ if (allowedHeadingTags.has(node.tag)) {
10
+ return true;
11
+ }
12
+ return allowedHeadingTags.size > 0 ? `Heading tag must be one of ${Array.from(allowedHeadingTags).join(', ')}.` : 'Headings are not enabled.';
13
+ };
14
+ };
15
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","names":["ALLOWED_HEADING_TAGS","headingValidation","enabledHeadingSizes","allowedHeadingTags","Set","filter","tag","has","node","size","Array","from","join"],"sources":["../../../../src/features/heading/server/validate.ts"],"sourcesContent":["import type { HeadingTagType, SerializedHeadingNode } from '@lexical/rich-text'\n\nimport type { NodeValidation } from '../../typesServer.js'\n\nimport { ALLOWED_HEADING_TAGS } from '../constants.js'\n\nexport const headingValidation = ({\n enabledHeadingSizes,\n}: {\n enabledHeadingSizes: HeadingTagType[]\n}): NodeValidation<SerializedHeadingNode> => {\n const allowedHeadingTags = new Set(\n enabledHeadingSizes.filter((tag) => ALLOWED_HEADING_TAGS.has(tag)),\n )\n\n return ({ node }) => {\n if (allowedHeadingTags.has(node.tag)) {\n return true\n }\n\n return allowedHeadingTags.size > 0\n ? `Heading tag must be one of ${Array.from(allowedHeadingTags).join(', ')}.`\n : 'Headings are not enabled.'\n }\n}\n"],"mappings":"AAIA,SAASA,oBAAoB,QAAQ;AAErC,OAAO,MAAMC,iBAAA,GAAoBA,CAAC;EAChCC;AAAmB,CAGpB;EACC,MAAMC,kBAAA,GAAqB,IAAIC,GAAA,CAC7BF,mBAAA,CAAoBG,MAAM,CAAEC,GAAA,IAAQN,oBAAA,CAAqBO,GAAG,CAACD,GAAA;EAG/D,OAAO,CAAC;IAAEE;EAAI,CAAE;IACd,IAAIL,kBAAA,CAAmBI,GAAG,CAACC,IAAA,CAAKF,GAAG,GAAG;MACpC,OAAO;IACT;IAEA,OAAOH,kBAAA,CAAmBM,IAAI,GAAG,IAC7B,8BAA8BC,KAAA,CAAMC,IAAI,CAACR,kBAAA,EAAoBS,IAAI,CAAC,QAAQ,GAC1E;EACN;AACF","ignoreList":[]}
@@ -1,13 +1,23 @@
1
- import type { LexicalNode, SerializedLexicalNode } from 'lexical';
1
+ import type { DOMConversionMap, LexicalNode, SerializedLexicalNode } from 'lexical';
2
2
  import type { SerializedHorizontalRuleNode } from '../../server/schema.js';
3
3
  import { HorizontalRuleServerNode } from '../../server/nodes/HorizontalRuleNode.js';
4
4
  export declare class HorizontalRuleNode extends HorizontalRuleServerNode {
5
5
  static clone(node: HorizontalRuleServerNode): HorizontalRuleServerNode;
6
6
  static getType(): string;
7
+ /**
8
+ * Defines what happens if you copy an hr element from another page and paste it into the lexical editor
9
+ *
10
+ * This also determines the behavior of lexical's internal HTML -> Lexical converter
11
+ *
12
+ * Overrides the server implementation so pasting an `<hr>` creates the client
13
+ * {@link HorizontalRuleNode} the editor registered, instead of the server-only
14
+ * `HorizontalRuleServerNode` (which fails lexical's node class identity check).
15
+ */
16
+ static importDOM(): DOMConversionMap | null;
7
17
  /**
8
18
  * The data for this node is stored serialized as JSON. This is the "load function" of that node: it takes the saved data and converts it into a node.
9
19
  */
10
- static importJSON(serializedNode: SerializedHorizontalRuleNode): HorizontalRuleNode;
20
+ static importJSON(_serializedNode: Record<string, unknown> & SerializedHorizontalRuleNode): HorizontalRuleNode;
11
21
  /**
12
22
  * Allows you to render a React component within whatever createDOM returns.
13
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalRuleNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/horizontalRule/client/nodes/HorizontalRuleNode.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAuB,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAKtF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAEnF,qBAAa,kBAAmB,SAAQ,wBAAwB;WAC9C,KAAK,CAAC,IAAI,EAAE,wBAAwB,GAAG,wBAAwB;WAI/D,OAAO,IAAI,MAAM;IAIjC;;OAEG;WACa,UAAU,CAAC,cAAc,EAAE,4BAA4B,GAAG,kBAAkB;IAI5F;;OAEG;IACM,QAAQ;IAIR,UAAU,IAAI,qBAAqB;CAG7C;AAMD,wBAAgB,yBAAyB,IAAI,kBAAkB,CAE9D;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,kBAAkB,CAE5B"}
1
+ {"version":3,"file":"HorizontalRuleNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/horizontalRule/client/nodes/HorizontalRuleNode.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAEhB,WAAW,EACX,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAA;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAEnF,qBAAa,kBAAmB,SAAQ,wBAAwB;IAC9D,OAAgB,KAAK,CAAC,IAAI,EAAE,wBAAwB,GAAG,wBAAwB,CAE9E;IAED,OAAgB,OAAO,IAAI,MAAM,CAEhC;IAED;;;;;;;;OAQG;IACH,OAAgB,SAAS,IAAI,gBAAgB,GAAG,IAAI,CAOnD;IAED;;OAEG;IACH,OAAgB,UAAU,CACxB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,4BAA4B,GACtE,kBAAkB,CAEpB;IAED;;OAEG;IACM,QAAQ,SAEhB;IAEQ,UAAU,IAAI,qBAAqB,CAE3C;CACF;AAMD,wBAAgB,yBAAyB,IAAI,kBAAkB,CAE9D;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,kBAAkB,CAE5B"}
@@ -11,9 +11,26 @@ export class HorizontalRuleNode extends HorizontalRuleServerNode {
11
11
  return super.getType();
12
12
  }
13
13
  /**
14
+ * Defines what happens if you copy an hr element from another page and paste it into the lexical editor
15
+ *
16
+ * This also determines the behavior of lexical's internal HTML -> Lexical converter
17
+ *
18
+ * Overrides the server implementation so pasting an `<hr>` creates the client
19
+ * {@link HorizontalRuleNode} the editor registered, instead of the server-only
20
+ * `HorizontalRuleServerNode` (which fails lexical's node class identity check).
21
+ */
22
+ static importDOM() {
23
+ return {
24
+ hr: () => ({
25
+ conversion: $convertHorizontalRuleElement,
26
+ priority: 0
27
+ })
28
+ };
29
+ }
30
+ /**
14
31
  * The data for this node is stored serialized as JSON. This is the "load function" of that node: it takes the saved data and converts it into a node.
15
32
  */
16
- static importJSON(serializedNode) {
33
+ static importJSON(_serializedNode) {
17
34
  return $createHorizontalRuleNode();
18
35
  }
19
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalRuleNode.js","names":["$applyNodeReplacement","React","HorizontalRuleServerNode","HorizontalRuleNode","clone","node","getType","importJSON","serializedNode","$createHorizontalRuleNode","decorate","exportJSON","$convertHorizontalRuleElement","$isHorizontalRuleNode"],"sources":["../../../../../src/features/horizontalRule/client/nodes/HorizontalRuleNode.tsx"],"sourcesContent":["'use client'\nimport type { DOMConversionOutput, LexicalNode, SerializedLexicalNode } from 'lexical'\n\nimport { $applyNodeReplacement } from 'lexical'\nimport * as React from 'react'\n\nimport type { SerializedHorizontalRuleNode } from '../../server/schema.js'\n\nimport { HorizontalRuleServerNode } from '../../server/nodes/HorizontalRuleNode.js'\n\nexport class HorizontalRuleNode extends HorizontalRuleServerNode {\n static override clone(node: HorizontalRuleServerNode): HorizontalRuleServerNode {\n return super.clone(node)\n }\n\n static override getType(): string {\n return super.getType()\n }\n\n /**\n * The data for this node is stored serialized as JSON. This is the \"load function\" of that node: it takes the saved data and converts it into a node.\n */\n static override importJSON(serializedNode: SerializedHorizontalRuleNode): HorizontalRuleNode {\n return $createHorizontalRuleNode()\n }\n\n /**\n * Allows you to render a React component within whatever createDOM returns.\n */\n override decorate() {\n return null\n }\n\n override exportJSON(): SerializedLexicalNode {\n return super.exportJSON()\n }\n}\n\nfunction $convertHorizontalRuleElement(): DOMConversionOutput {\n return { node: $createHorizontalRuleNode() }\n}\n\nexport function $createHorizontalRuleNode(): HorizontalRuleNode {\n return $applyNodeReplacement(new HorizontalRuleNode())\n}\n\nexport function $isHorizontalRuleNode(\n node: LexicalNode | null | undefined,\n): node is HorizontalRuleNode {\n return node instanceof HorizontalRuleNode\n}\n"],"mappings":"AAAA;;AAGA,SAASA,qBAAqB,QAAQ;AACtC,YAAYC,KAAA,MAAW;AAIvB,SAASC,wBAAwB,QAAQ;AAEzC,OAAO,MAAMC,kBAAA,SAA2BD,wBAAA;EACtC,OAAgBE,MAAMC,IAA8B,EAA4B;IAC9E,OAAO,KAAK,CAACD,KAAA,CAAMC,IAAA;EACrB;EAEA,OAAgBC,QAAA,EAAkB;IAChC,OAAO,KAAK,CAACA,OAAA;EACf;EAEA;;;EAGA,OAAgBC,WAAWC,cAA4C,EAAsB;IAC3F,OAAOC,yBAAA;EACT;EAEA;;;EAGAC,QAASA,CAAA,EAAW;IAClB,OAAO;EACT;EAESC,WAAA,EAAoC;IAC3C,OAAO,KAAK,CAACA,UAAA;EACf;AACF;AAEA,SAASC,8BAAA;EACP,OAAO;IAAEP,IAAA,EAAMI,yBAAA;EAA4B;AAC7C;AAEA,OAAO,SAASA,0BAAA;EACd,OAAOT,qBAAA,CAAsB,IAAIG,kBAAA;AACnC;AAEA,OAAO,SAASU,sBACdR,IAAoC;EAEpC,OAAOA,IAAA,YAAgBF,kBAAA;AACzB","ignoreList":[]}
1
+ {"version":3,"file":"HorizontalRuleNode.js","names":["$applyNodeReplacement","React","HorizontalRuleServerNode","HorizontalRuleNode","clone","node","getType","importDOM","hr","conversion","$convertHorizontalRuleElement","priority","importJSON","_serializedNode","$createHorizontalRuleNode","decorate","exportJSON","$isHorizontalRuleNode"],"sources":["../../../../../src/features/horizontalRule/client/nodes/HorizontalRuleNode.tsx"],"sourcesContent":["'use client'\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n LexicalNode,\n SerializedLexicalNode,\n} from 'lexical'\n\nimport { $applyNodeReplacement } from 'lexical'\nimport * as React from 'react'\n\nimport type { SerializedHorizontalRuleNode } from '../../server/schema.js'\n\nimport { HorizontalRuleServerNode } from '../../server/nodes/HorizontalRuleNode.js'\n\nexport class HorizontalRuleNode extends HorizontalRuleServerNode {\n static override clone(node: HorizontalRuleServerNode): HorizontalRuleServerNode {\n return super.clone(node)\n }\n\n static override getType(): string {\n return super.getType()\n }\n\n /**\n * Defines what happens if you copy an hr element from another page and paste it into the lexical editor\n *\n * This also determines the behavior of lexical's internal HTML -> Lexical converter\n *\n * Overrides the server implementation so pasting an `<hr>` creates the client\n * {@link HorizontalRuleNode} the editor registered, instead of the server-only\n * `HorizontalRuleServerNode` (which fails lexical's node class identity check).\n */\n static override importDOM(): DOMConversionMap | null {\n return {\n hr: () => ({\n conversion: $convertHorizontalRuleElement,\n priority: 0,\n }),\n }\n }\n\n /**\n * The data for this node is stored serialized as JSON. This is the \"load function\" of that node: it takes the saved data and converts it into a node.\n */\n static override importJSON(\n _serializedNode: Record<string, unknown> & SerializedHorizontalRuleNode,\n ): HorizontalRuleNode {\n return $createHorizontalRuleNode()\n }\n\n /**\n * Allows you to render a React component within whatever createDOM returns.\n */\n override decorate() {\n return null\n }\n\n override exportJSON(): SerializedLexicalNode {\n return super.exportJSON()\n }\n}\n\nfunction $convertHorizontalRuleElement(): DOMConversionOutput {\n return { node: $createHorizontalRuleNode() }\n}\n\nexport function $createHorizontalRuleNode(): HorizontalRuleNode {\n return $applyNodeReplacement(new HorizontalRuleNode())\n}\n\nexport function $isHorizontalRuleNode(\n node: LexicalNode | null | undefined,\n): node is HorizontalRuleNode {\n return node instanceof HorizontalRuleNode\n}\n"],"mappings":"AAAA;;AAQA,SAASA,qBAAqB,QAAQ;AACtC,YAAYC,KAAA,MAAW;AAIvB,SAASC,wBAAwB,QAAQ;AAEzC,OAAO,MAAMC,kBAAA,SAA2BD,wBAAA;EACtC,OAAgBE,MAAMC,IAA8B,EAA4B;IAC9E,OAAO,KAAK,CAACD,KAAA,CAAMC,IAAA;EACrB;EAEA,OAAgBC,QAAA,EAAkB;IAChC,OAAO,KAAK,CAACA,OAAA;EACf;EAEA;;;;;;;;;EASA,OAAgBC,UAAA,EAAqC;IACnD,OAAO;MACLC,EAAA,EAAIA,CAAA,MAAO;QACTC,UAAA,EAAYC,6BAAA;QACZC,QAAA,EAAU;MACZ;IACF;EACF;EAEA;;;EAGA,OAAgBC,WACdC,eAAuE,EACnD;IACpB,OAAOC,yBAAA;EACT;EAEA;;;EAGAC,QAASA,CAAA,EAAW;IAClB,OAAO;EACT;EAESC,WAAA,EAAoC;IAC3C,OAAO,KAAK,CAACA,UAAA;EACf;AACF;AAEA,SAASN,8BAAA;EACP,OAAO;IAAEL,IAAA,EAAMS,yBAAA;EAA4B;AAC7C;AAEA,OAAO,SAASA,0BAAA;EACd,OAAOd,qBAAA,CAAsB,IAAIG,kBAAA;AACnC;AAEA,OAAO,SAASc,sBACdZ,IAAoC;EAEpC,OAAOA,IAAA,YAAgBF,kBAAA;AACzB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$findMatchingParent","$insertNodeToNearestRoot","$getRoot","$getSelection","$isRangeSelection","$isRootOrShadowRoot","COMMAND_PRIORITY_EDITOR","useEffect","INSERT_HORIZONTAL_RULE_COMMAND","$createHorizontalRuleNode","$isHorizontalRuleNode","HR_SELECTED_CLASS","HorizontalRulePlugin","$","editor","t0","t1","unregisterCommand","registerCommand","_temp","unregisterUpdateListener","registerUpdateListener","t2","editorState","read","root","children","getChildren","selection_0","hrEntries","i","length","child","element","getElementByKey","getKey","push","index","selection","isCollapsed","element_0","classList","remove","anchorNode","anchor","getNode","focusNode_0","focus","anchorTopLevel","_temp2","focusTopLevel","focusNode","_temp3","anchorIdx","indexOf","focusIdx","startIdx","Math","min","endIdx","max","element_1","add","type","horizontalRuleNode","n","getParent","n_0"],"sources":["../../../../../src/features/horizontalRule/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, $insertNodeToNearestRoot } from '@lexical/utils'\nimport {\n $getRoot,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from '../../server/nodes/HorizontalRuleNode.js'\nimport { $createHorizontalRuleNode, $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\nimport './index.css'\n\nconst HR_SELECTED_CLASS = 'LexicalEditorTheme__hrSelected'\n\n/**\n * Registers the INSERT_HORIZONTAL_RULE_COMMAND lexical command and defines the behavior for when it is called.\n */\nexport const HorizontalRulePlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n const unregisterCommand = editor.registerCommand(\n INSERT_HORIZONTAL_RULE_COMMAND,\n (type) => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const focusNode = selection.focus.getNode()\n\n if (focusNode !== null) {\n const horizontalRuleNode = $createHorizontalRuleNode()\n $insertNodeToNearestRoot(horizontalRuleNode)\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n\n const unregisterUpdateListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const root = $getRoot()\n const children = root.getChildren()\n const selection = $getSelection()\n\n // Collect all HR nodes and their elements\n const hrEntries: Array<{ element: HTMLElement; index: number }> = []\n for (let i = 0; i < children.length; i++) {\n const child = children[i]\n if ($isHorizontalRuleNode(child)) {\n const element = editor.getElementByKey(child.getKey())\n if (element) {\n hrEntries.push({ element, index: i })\n }\n }\n }\n\n if (hrEntries.length === 0) {\n return\n }\n\n if (!$isRangeSelection(selection) || selection.isCollapsed()) {\n // Remove range-selection highlighting from all HRs\n for (const { element } of hrEntries) {\n element.classList.remove(HR_SELECTED_CLASS)\n }\n return\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n const anchorTopLevel =\n $findMatchingParent(anchorNode, (n) => $isRootOrShadowRoot(n.getParent())) || anchorNode\n const focusTopLevel =\n $findMatchingParent(focusNode, (n) => $isRootOrShadowRoot(n.getParent())) || focusNode\n\n const anchorIdx = children.indexOf(anchorTopLevel)\n const focusIdx = children.indexOf(focusTopLevel)\n\n if (anchorIdx === -1 || focusIdx === -1) {\n return\n }\n\n const startIdx = Math.min(anchorIdx, focusIdx)\n const endIdx = Math.max(anchorIdx, focusIdx)\n\n for (const { element, index } of hrEntries) {\n if (index >= startIdx && index <= endIdx) {\n element.classList.add(HR_SELECTED_CLASS)\n } else {\n element.classList.remove(HR_SELECTED_CLASS)\n }\n }\n })\n })\n\n return () => {\n unregisterCommand()\n unregisterUpdateListener()\n }\n }, [editor])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$findMatchingParent","$insertNodeToNearestRoot","$getRoot","$getSelection","$isRangeSelection","$isRootOrShadowRoot","COMMAND_PRIORITY_EDITOR","useEffect","INSERT_HORIZONTAL_RULE_COMMAND","$createHorizontalRuleNode","$isHorizontalRuleNode","HR_SELECTED_CLASS","HorizontalRulePlugin","$","editor","t0","t1","unregisterCommand","registerCommand","_temp","unregisterUpdateListener","registerUpdateListener","t2","editorState","read","root","children","getChildren","selection_0","hrEntries","i","length","child","element","getElementByKey","getKey","push","index","selection","isCollapsed","element_0","classList","remove","anchorNode","anchor","getNode","focusNode_0","focus","anchorTopLevel","_temp2","focusTopLevel","focusNode","_temp3","anchorIdx","indexOf","focusIdx","startIdx","Math","min","endIdx","max","element_1","add","type","horizontalRuleNode","n","getParent","n_0"],"sources":["../../../../../src/features/horizontalRule/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, $insertNodeToNearestRoot } from '@lexical/utils'\nimport {\n $getRoot,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from '../../server/nodes/HorizontalRuleNode.js'\nimport { $createHorizontalRuleNode, $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\nimport './index.css'\n\nconst HR_SELECTED_CLASS = 'LexicalEditorTheme__hrSelected'\n\n/**\n * Registers the INSERT_HORIZONTAL_RULE_COMMAND lexical command and defines the behavior for when it is called.\n */\nexport const HorizontalRulePlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n const unregisterCommand = editor.registerCommand(\n INSERT_HORIZONTAL_RULE_COMMAND,\n (type) => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const focusNode = selection.focus.getNode()\n\n if (focusNode !== null) {\n const horizontalRuleNode = $createHorizontalRuleNode()\n $insertNodeToNearestRoot(horizontalRuleNode)\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n\n const unregisterUpdateListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const root = $getRoot()\n const children = root.getChildren()\n const selection = $getSelection()\n\n // Collect all HR nodes and their elements\n const hrEntries: Array<{ element: HTMLElement; index: number }> = []\n for (let i = 0; i < children.length; i++) {\n const child = children[i]\n if ($isHorizontalRuleNode(child)) {\n const element = editor.getElementByKey(child.getKey())\n if (element) {\n hrEntries.push({ element, index: i })\n }\n }\n }\n\n if (hrEntries.length === 0) {\n return\n }\n\n if (!$isRangeSelection(selection) || selection.isCollapsed()) {\n // Remove range-selection highlighting from all HRs\n for (const { element } of hrEntries) {\n element.classList.remove(HR_SELECTED_CLASS)\n }\n return\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n const anchorTopLevel =\n $findMatchingParent(anchorNode, (n) => $isRootOrShadowRoot(n.getParent())) || anchorNode\n const focusTopLevel =\n $findMatchingParent(focusNode, (n) => $isRootOrShadowRoot(n.getParent())) || focusNode\n\n const anchorIdx = children.indexOf(anchorTopLevel)\n const focusIdx = children.indexOf(focusTopLevel)\n\n if (anchorIdx === -1 || focusIdx === -1) {\n return\n }\n\n const startIdx = Math.min(anchorIdx, focusIdx)\n const endIdx = Math.max(anchorIdx, focusIdx)\n\n for (const { element, index } of hrEntries) {\n if (index >= startIdx && index <= endIdx) {\n element.classList.add(HR_SELECTED_CLASS)\n } else {\n element.classList.remove(HR_SELECTED_CLASS)\n }\n }\n })\n })\n\n return () => {\n unregisterCommand()\n unregisterUpdateListener()\n }\n }, [editor])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -22,7 +22,7 @@ export declare class HorizontalRuleServerNode extends DecoratorNode<null | React
22
22
  /**
23
23
  * The data for this node is stored serialized as JSON. This is the "load function" of that node: it takes the saved data and converts it into a node.
24
24
  */
25
- static importJSON(serializedNode: SerializedHorizontalRuleNode): HorizontalRuleServerNode;
25
+ static importJSON(_serializedNode: Record<string, unknown> & SerializedHorizontalRuleNode): HorizontalRuleServerNode;
26
26
  /**
27
27
  * Determines how the hr element is rendered in the lexical editor. This is only the "initial" / "outer" HTML element.
28
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalRuleNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/horizontalRule/server/nodes/HorizontalRuleNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,OAAO,EAAwC,aAAa,EAAE,MAAM,SAAS,CAAA;AAE7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAA;AAEhE,eAAO,MAAM,8BAA8B,EAAE,cAAc,CAAC,IAAI,CAE/D,CAAA;AAED;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;WACpE,KAAK,CAAC,IAAI,EAAE,wBAAwB,GAAG,wBAAwB;WAI/D,OAAO,IAAI,MAAM;IAIjC;;;;OAIG;WACa,SAAS,IAAI,gBAAgB,GAAG,IAAI;IASpD;;OAEG;WACa,UAAU,CACxB,cAAc,EAAE,4BAA4B,GAC3C,wBAAwB;IAI3B;;OAEG;IACM,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW;IAM5C,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY;IAI9C;;;;OAIG;IACM,SAAS,IAAI,eAAe;IAGrC;;OAEG;IACM,UAAU,IAAI,qBAAqB;IAOnC,cAAc,IAAI,MAAM;IAIxB,QAAQ,IAAI,KAAK;IAIjB,SAAS,IAAI,OAAO;CAG9B;AAMD,wBAAgB,+BAA+B,IAAI,wBAAwB,CAE1E;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,wBAAwB,CAElC"}
1
+ {"version":3,"file":"HorizontalRuleNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/horizontalRule/server/nodes/HorizontalRuleNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAEhB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,OAAO,EAAwC,aAAa,EAAE,MAAM,SAAS,CAAA;AAE7E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAA;AAEhE,eAAO,MAAM,8BAA8B,EAAE,cAAc,CAAC,IAAI,CAE/D,CAAA;AAED;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;IACpF,OAAgB,KAAK,CAAC,IAAI,EAAE,wBAAwB,GAAG,wBAAwB,CAE9E;IAED,OAAgB,OAAO,IAAI,MAAM,CAEhC;IAED;;;;OAIG;IACH,OAAgB,SAAS,IAAI,gBAAgB,GAAG,IAAI,CAOnD;IAED;;OAEG;IACH,OAAgB,UAAU,CACxB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,4BAA4B,GACtE,wBAAwB,CAE1B;IAED;;OAEG;IACM,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CAIpD;IAEQ,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY,CAE7C;IAED;;;;OAIG;IACM,SAAS,IAAI,eAAe,CAEpC;IACD;;OAEG;IACM,UAAU,IAAI,qBAAqB,CAK3C;IAEQ,cAAc,IAAI,MAAM,CAEhC;IAEQ,QAAQ,IAAI,KAAK,CAEzB;IAEQ,SAAS,IAAI,OAAO,CAE5B;CACF;AAMD,wBAAgB,+BAA+B,IAAI,wBAAwB,CAE1E;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,wBAAwB,CAElC"}
@@ -31,7 +31,7 @@ export class HorizontalRuleServerNode extends DecoratorNode {
31
31
  /**
32
32
  * The data for this node is stored serialized as JSON. This is the "load function" of that node: it takes the saved data and converts it into a node.
33
33
  */
34
- static importJSON(serializedNode) {
34
+ static importJSON(_serializedNode) {
35
35
  return $createHorizontalRuleServerNode();
36
36
  }
37
37
  /**
@@ -60,8 +60,8 @@ export class HorizontalRuleServerNode extends DecoratorNode {
60
60
  */
61
61
  exportJSON() {
62
62
  return {
63
- type: 'horizontalrule',
64
- version: 1
63
+ ...super.exportJSON(),
64
+ type: 'horizontalrule'
65
65
  };
66
66
  }
67
67
  getTextContent() {
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalRuleNode.js","names":["addClassNamesToElement","$applyNodeReplacement","createCommand","DecoratorNode","INSERT_HORIZONTAL_RULE_COMMAND","HorizontalRuleServerNode","clone","node","__key","getType","importDOM","hr","conversion","$convertHorizontalRuleElement","priority","importJSON","serializedNode","$createHorizontalRuleServerNode","createDOM","config","element","document","createElement","theme","decorate","exportDOM","exportJSON","type","version","getTextContent","isInline","updateDOM","$isHorizontalRuleServerNode"],"sources":["../../../../../src/features/horizontalRule/server/nodes/HorizontalRuleNode.tsx"],"sourcesContent":["import type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalCommand,\n LexicalNode,\n SerializedLexicalNode,\n} from 'lexical'\nimport type * as React from 'react'\n\nimport { addClassNamesToElement } from '@lexical/utils'\nimport { $applyNodeReplacement, createCommand, DecoratorNode } from 'lexical'\n\nimport type { SerializedHorizontalRuleNode } from '../schema.js'\n\nexport const INSERT_HORIZONTAL_RULE_COMMAND: LexicalCommand<void> = createCommand(\n 'INSERT_HORIZONTAL_RULE_COMMAND',\n)\n\n/**\n * This node is a DecoratorNode. DecoratorNodes allow you to render React components in the editor.\n *\n * They need both createDom and decorate functions. createDom => outside of the html. decorate => React Component inside of the html.\n *\n * If we used DecoratorBlockNode instead, we would only need a decorate method\n */\nexport class HorizontalRuleServerNode extends DecoratorNode<null | React.ReactElement> {\n static override clone(node: HorizontalRuleServerNode): HorizontalRuleServerNode {\n return new this(node.__key)\n }\n\n static override getType(): string {\n return 'horizontalrule'\n }\n\n /**\n * Defines what happens if you copy an hr element from another page and paste it into the lexical editor\n *\n * This also determines the behavior of lexical's internal HTML -> Lexical converter\n */\n static override importDOM(): DOMConversionMap | null {\n return {\n hr: () => ({\n conversion: $convertHorizontalRuleElement,\n priority: 0,\n }),\n }\n }\n\n /**\n * The data for this node is stored serialized as JSON. This is the \"load function\" of that node: it takes the saved data and converts it into a node.\n */\n static override importJSON(\n serializedNode: SerializedHorizontalRuleNode,\n ): HorizontalRuleServerNode {\n return $createHorizontalRuleServerNode()\n }\n\n /**\n * Determines how the hr element is rendered in the lexical editor. This is only the \"initial\" / \"outer\" HTML element.\n */\n override createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement('hr')\n addClassNamesToElement(element, config.theme.hr)\n return element\n }\n\n override decorate(): null | React.ReactElement {\n return null\n }\n\n /**\n * Opposite of importDOM, this function defines what happens when you copy an hr element from the lexical editor and paste it into another page.\n *\n * This also determines the behavior of lexical's internal Lexical -> HTML converter\n */\n override exportDOM(): DOMExportOutput {\n return { element: document.createElement('hr') }\n }\n /**\n * Opposite of importJSON. This determines what data is saved in the database / in the lexical editor state.\n */\n override exportJSON(): SerializedLexicalNode {\n return {\n type: 'horizontalrule',\n version: 1,\n }\n }\n\n override getTextContent(): string {\n return '\\n'\n }\n\n override isInline(): false {\n return false\n }\n\n override updateDOM(): boolean {\n return false\n }\n}\n\nfunction $convertHorizontalRuleElement(): DOMConversionOutput {\n return { node: $createHorizontalRuleServerNode() }\n}\n\nexport function $createHorizontalRuleServerNode(): HorizontalRuleServerNode {\n return $applyNodeReplacement(new HorizontalRuleServerNode())\n}\n\nexport function $isHorizontalRuleServerNode(\n node: LexicalNode | null | undefined,\n): node is HorizontalRuleServerNode {\n return node instanceof HorizontalRuleServerNode\n}\n"],"mappings":"AAWA,SAASA,sBAAsB,QAAQ;AACvC,SAASC,qBAAqB,EAAEC,aAAa,EAAEC,aAAa,QAAQ;AAIpE,OAAO,MAAMC,8BAAA,GAAuDF,aAAA,CAClE;AAGF;;;;;;;AAOA,OAAO,MAAMG,wBAAA,SAAiCF,aAAA;EAC5C,OAAgBG,MAAMC,IAA8B,EAA4B;IAC9E,OAAO,IAAI,IAAI,CAACA,IAAA,CAAKC,KAAK;EAC5B;EAEA,OAAgBC,QAAA,EAAkB;IAChC,OAAO;EACT;EAEA;;;;;EAKA,OAAgBC,UAAA,EAAqC;IACnD,OAAO;MACLC,EAAA,EAAIA,CAAA,MAAO;QACTC,UAAA,EAAYC,6BAAA;QACZC,QAAA,EAAU;MACZ;IACF;EACF;EAEA;;;EAGA,OAAgBC,WACdC,cAA4C,EAClB;IAC1B,OAAOC,+BAAA;EACT;EAEA;;;EAGAC,SAASA,CAAUC,MAAoB,EAAe;IACpD,MAAMC,OAAA,GAAUC,QAAA,CAASC,aAAa,CAAC;IACvCtB,sBAAA,CAAuBoB,OAAA,EAASD,MAAA,CAAOI,KAAK,CAACZ,EAAE;IAC/C,OAAOS,OAAA;EACT;EAESI,SAAA,EAAsC;IAC7C,OAAO;EACT;EAEA;;;;;EAKAC,SAASA,CAAA,EAA6B;IACpC,OAAO;MAAEL,OAAA,EAASC,QAAA,CAASC,aAAa,CAAC;IAAM;EACjD;EACA;;;EAGAI,UAASA,CAAA,EAAoC;IAC3C,OAAO;MACLC,IAAA,EAAM;MACNC,OAAA,EAAS;IACX;EACF;EAESC,eAAA,EAAyB;IAChC,OAAO;EACT;EAESC,SAAA,EAAkB;IACzB,OAAO;EACT;EAESC,UAAA,EAAqB;IAC5B,OAAO;EACT;AACF;AAEA,SAASlB,8BAAA;EACP,OAAO;IAAEN,IAAA,EAAMU,+BAAA;EAAkC;AACnD;AAEA,OAAO,SAASA,gCAAA;EACd,OAAOhB,qBAAA,CAAsB,IAAII,wBAAA;AACnC;AAEA,OAAO,SAAS2B,4BACdzB,IAAoC;EAEpC,OAAOA,IAAA,YAAgBF,wBAAA;AACzB","ignoreList":[]}
1
+ {"version":3,"file":"HorizontalRuleNode.js","names":["addClassNamesToElement","$applyNodeReplacement","createCommand","DecoratorNode","INSERT_HORIZONTAL_RULE_COMMAND","HorizontalRuleServerNode","clone","node","__key","getType","importDOM","hr","conversion","$convertHorizontalRuleElement","priority","importJSON","_serializedNode","$createHorizontalRuleServerNode","createDOM","config","element","document","createElement","theme","decorate","exportDOM","exportJSON","type","getTextContent","isInline","updateDOM","$isHorizontalRuleServerNode"],"sources":["../../../../../src/features/horizontalRule/server/nodes/HorizontalRuleNode.tsx"],"sourcesContent":["import type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalCommand,\n LexicalNode,\n SerializedLexicalNode,\n} from 'lexical'\nimport type * as React from 'react'\n\nimport { addClassNamesToElement } from '@lexical/utils'\nimport { $applyNodeReplacement, createCommand, DecoratorNode } from 'lexical'\n\nimport type { SerializedHorizontalRuleNode } from '../schema.js'\n\nexport const INSERT_HORIZONTAL_RULE_COMMAND: LexicalCommand<void> = createCommand(\n 'INSERT_HORIZONTAL_RULE_COMMAND',\n)\n\n/**\n * This node is a DecoratorNode. DecoratorNodes allow you to render React components in the editor.\n *\n * They need both createDom and decorate functions. createDom => outside of the html. decorate => React Component inside of the html.\n *\n * If we used DecoratorBlockNode instead, we would only need a decorate method\n */\nexport class HorizontalRuleServerNode extends DecoratorNode<null | React.ReactElement> {\n static override clone(node: HorizontalRuleServerNode): HorizontalRuleServerNode {\n return new this(node.__key)\n }\n\n static override getType(): string {\n return 'horizontalrule'\n }\n\n /**\n * Defines what happens if you copy an hr element from another page and paste it into the lexical editor\n *\n * This also determines the behavior of lexical's internal HTML -> Lexical converter\n */\n static override importDOM(): DOMConversionMap | null {\n return {\n hr: () => ({\n conversion: $convertHorizontalRuleElement,\n priority: 0,\n }),\n }\n }\n\n /**\n * The data for this node is stored serialized as JSON. This is the \"load function\" of that node: it takes the saved data and converts it into a node.\n */\n static override importJSON(\n _serializedNode: Record<string, unknown> & SerializedHorizontalRuleNode,\n ): HorizontalRuleServerNode {\n return $createHorizontalRuleServerNode()\n }\n\n /**\n * Determines how the hr element is rendered in the lexical editor. This is only the \"initial\" / \"outer\" HTML element.\n */\n override createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement('hr')\n addClassNamesToElement(element, config.theme.hr)\n return element\n }\n\n override decorate(): null | React.ReactElement {\n return null\n }\n\n /**\n * Opposite of importDOM, this function defines what happens when you copy an hr element from the lexical editor and paste it into another page.\n *\n * This also determines the behavior of lexical's internal Lexical -> HTML converter\n */\n override exportDOM(): DOMExportOutput {\n return { element: document.createElement('hr') }\n }\n /**\n * Opposite of importJSON. This determines what data is saved in the database / in the lexical editor state.\n */\n override exportJSON(): SerializedLexicalNode {\n return {\n ...super.exportJSON(),\n type: 'horizontalrule',\n }\n }\n\n override getTextContent(): string {\n return '\\n'\n }\n\n override isInline(): false {\n return false\n }\n\n override updateDOM(): boolean {\n return false\n }\n}\n\nfunction $convertHorizontalRuleElement(): DOMConversionOutput {\n return { node: $createHorizontalRuleServerNode() }\n}\n\nexport function $createHorizontalRuleServerNode(): HorizontalRuleServerNode {\n return $applyNodeReplacement(new HorizontalRuleServerNode())\n}\n\nexport function $isHorizontalRuleServerNode(\n node: LexicalNode | null | undefined,\n): node is HorizontalRuleServerNode {\n return node instanceof HorizontalRuleServerNode\n}\n"],"mappings":"AAWA,SAASA,sBAAsB,QAAQ;AACvC,SAASC,qBAAqB,EAAEC,aAAa,EAAEC,aAAa,QAAQ;AAIpE,OAAO,MAAMC,8BAAA,GAAuDF,aAAA,CAClE;AAGF;;;;;;;AAOA,OAAO,MAAMG,wBAAA,SAAiCF,aAAA;EAC5C,OAAgBG,MAAMC,IAA8B,EAA4B;IAC9E,OAAO,IAAI,IAAI,CAACA,IAAA,CAAKC,KAAK;EAC5B;EAEA,OAAgBC,QAAA,EAAkB;IAChC,OAAO;EACT;EAEA;;;;;EAKA,OAAgBC,UAAA,EAAqC;IACnD,OAAO;MACLC,EAAA,EAAIA,CAAA,MAAO;QACTC,UAAA,EAAYC,6BAAA;QACZC,QAAA,EAAU;MACZ;IACF;EACF;EAEA;;;EAGA,OAAgBC,WACdC,eAAuE,EAC7C;IAC1B,OAAOC,+BAAA;EACT;EAEA;;;EAGAC,SAASA,CAAUC,MAAoB,EAAe;IACpD,MAAMC,OAAA,GAAUC,QAAA,CAASC,aAAa,CAAC;IACvCtB,sBAAA,CAAuBoB,OAAA,EAASD,MAAA,CAAOI,KAAK,CAACZ,EAAE;IAC/C,OAAOS,OAAA;EACT;EAESI,SAAA,EAAsC;IAC7C,OAAO;EACT;EAEA;;;;;EAKAC,SAASA,CAAA,EAA6B;IACpC,OAAO;MAAEL,OAAA,EAASC,QAAA,CAASC,aAAa,CAAC;IAAM;EACjD;EACA;;;EAGAI,UAASA,CAAA,EAAoC;IAC3C,OAAO;MACL,GAAG,KAAK,CAACA,UAAA,EAAY;MACrBC,IAAA,EAAM;IACR;EACF;EAESC,eAAA,EAAyB;IAChC,OAAO;EACT;EAESC,SAAA,EAAkB;IACzB,OAAO;EACT;EAESC,UAAA,EAAqB;IAC5B,OAAO;EACT;AACF;AAEA,SAASjB,8BAAA;EACP,OAAO;IAAEN,IAAA,EAAMU,+BAAA;EAAkC;AACnD;AAEA,OAAO,SAASA,gCAAA;EACd,OAAOhB,qBAAA,CAAsB,IAAII,wBAAA;AACnC;AAEA,OAAO,SAAS0B,4BACdxB,IAAoC;EAEpC,OAAOA,IAAA,YAAgBF,wBAAA;AACzB","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import type { JSONSchemaFn } from '../../typesServer.js';
2
2
  export interface SerializedHorizontalRuleNode {
3
3
  type: 'horizontalrule';
4
+ /** @deprecated Ignored when loading. Typed as required only to match Lexical's types: rich text sent through the API, CLI or MCP may not contain it. */
4
5
  version: number;
5
6
  }
6
7
  export declare const horizontalRuleNodeJSONSchema: JSONSchemaFn;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/horizontalRule/server/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAQD,eAAO,MAAM,4BAA4B,EAAE,YAY1C,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/horizontalRule/server/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAIxD,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,gBAAgB,CAAA;IACtB,wJAAwJ;IACxJ,OAAO,EAAE,MAAM,CAAA;CAChB;AASD,eAAO,MAAM,4BAA4B,EAAE,YAY1C,CAAA"}
@@ -1,5 +1,8 @@
1
- /** MUST stay byte-for-byte in sync with the runtime `SerializedHorizontalRuleNode` declared above. */const SERIALIZED_HORIZONTAL_RULE_NODE_TS = `export interface SerializedHorizontalRuleNode {
1
+ import { versionSchema } from '../../../types/jsonSchemaHelpers.js';
2
+ /** MUST stay byte-for-byte in sync with the runtime `SerializedHorizontalRuleNode` declared above. */
3
+ const SERIALIZED_HORIZONTAL_RULE_NODE_TS = `export interface SerializedHorizontalRuleNode {
2
4
  type: 'horizontalrule';
5
+ /** @deprecated Ignored when loading. Typed as required only to match Lexical's types: rich text sent through the API, CLI or MCP may not contain it. */
3
6
  version: number;
4
7
  }`;
5
8
  export const horizontalRuleNodeJSONSchema = ({
@@ -14,11 +17,9 @@ export const horizontalRuleNodeJSONSchema = ({
14
17
  type: 'string',
15
18
  const: 'horizontalrule'
16
19
  },
17
- version: {
18
- type: 'integer'
19
- }
20
+ version: versionSchema
20
21
  },
21
- required: ['type', 'version'],
22
+ required: ['type'],
22
23
  tsType: 'SerializedHorizontalRuleNode'
23
24
  };
24
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":["SERIALIZED_HORIZONTAL_RULE_NODE_TS","horizontalRuleNodeJSONSchema","typeStringDefinitions","add","type","additionalProperties","properties","const","version","required","tsType"],"sources":["../../../../src/features/horizontalRule/server/schema.ts"],"sourcesContent":["import type { JSONSchemaFn } from '../../typesServer.js'\n\nexport interface SerializedHorizontalRuleNode {\n type: 'horizontalrule'\n version: number\n}\n\n/** MUST stay byte-for-byte in sync with the runtime `SerializedHorizontalRuleNode` declared above. */\nconst SERIALIZED_HORIZONTAL_RULE_NODE_TS = `export interface SerializedHorizontalRuleNode {\n type: 'horizontalrule';\n version: number;\n}`\n\nexport const horizontalRuleNodeJSONSchema: JSONSchemaFn = ({ typeStringDefinitions }) => {\n typeStringDefinitions.add(SERIALIZED_HORIZONTAL_RULE_NODE_TS)\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: { type: 'string', const: 'horizontalrule' },\n version: { type: 'integer' },\n },\n required: ['type', 'version'],\n tsType: 'SerializedHorizontalRuleNode',\n }\n}\n"],"mappings":"AAOA,sGACA,MAAMA,kCAAA,GAAqC;;;EAGzC;AAEF,OAAO,MAAMC,4BAAA,GAA6CA,CAAC;EAAEC;AAAqB,CAAE;EAClFA,qBAAA,CAAsBC,GAAG,CAACH,kCAAA;EAC1B,OAAO;IACLI,IAAA,EAAM;IACNC,oBAAA,EAAsB;IACtBC,UAAA,EAAY;MACVF,IAAA,EAAM;QAAEA,IAAA,EAAM;QAAUG,KAAA,EAAO;MAAiB;MAChDC,OAAA,EAAS;QAAEJ,IAAA,EAAM;MAAU;IAC7B;IACAK,QAAA,EAAU,CAAC,QAAQ,UAAU;IAC7BC,MAAA,EAAQ;EACV;AACF","ignoreList":[]}
1
+ {"version":3,"file":"schema.js","names":["versionSchema","SERIALIZED_HORIZONTAL_RULE_NODE_TS","horizontalRuleNodeJSONSchema","typeStringDefinitions","add","type","additionalProperties","properties","const","version","required","tsType"],"sources":["../../../../src/features/horizontalRule/server/schema.ts"],"sourcesContent":["import type { JSONSchemaFn } from '../../typesServer.js'\n\nimport { versionSchema } from '../../../types/jsonSchemaHelpers.js'\n\nexport interface SerializedHorizontalRuleNode {\n type: 'horizontalrule'\n /** @deprecated Ignored when loading. Typed as required only to match Lexical's types: rich text sent through the API, CLI or MCP may not contain it. */\n version: number\n}\n\n/** MUST stay byte-for-byte in sync with the runtime `SerializedHorizontalRuleNode` declared above. */\nconst SERIALIZED_HORIZONTAL_RULE_NODE_TS = `export interface SerializedHorizontalRuleNode {\n type: 'horizontalrule';\n /** @deprecated Ignored when loading. Typed as required only to match Lexical's types: rich text sent through the API, CLI or MCP may not contain it. */\n version: number;\n}`\n\nexport const horizontalRuleNodeJSONSchema: JSONSchemaFn = ({ typeStringDefinitions }) => {\n typeStringDefinitions.add(SERIALIZED_HORIZONTAL_RULE_NODE_TS)\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: { type: 'string', const: 'horizontalrule' },\n version: versionSchema,\n },\n required: ['type'],\n tsType: 'SerializedHorizontalRuleNode',\n }\n}\n"],"mappings":"AAEA,SAASA,aAAa,QAAQ;AAQ9B;AACA,MAAMC,kCAAA,GAAqC;;;;EAIzC;AAEF,OAAO,MAAMC,4BAAA,GAA6CA,CAAC;EAAEC;AAAqB,CAAE;EAClFA,qBAAA,CAAsBC,GAAG,CAACH,kCAAA;EAC1B,OAAO;IACLI,IAAA,EAAM;IACNC,oBAAA,EAAsB;IACtBC,UAAA,EAAY;MACVF,IAAA,EAAM;QAAEA,IAAA,EAAM;QAAUG,KAAA,EAAO;MAAiB;MAChDC,OAAA,EAAST;IACX;IACAU,QAAA,EAAU,CAAC,OAAO;IAClBC,MAAA,EAAQ;EACV;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"IndentPlugin.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,kBAAkB,CAmE5D,CAAA"}
1
+ {"version":3,"file":"IndentPlugin.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,kBAAkB,CAmO5D,CAAA"}
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
3
  import { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin';
4
4
  import { $findMatchingParent, mergeRegister } from '@lexical/utils';
5
- import { $getSelection, $isElementNode, $isRangeSelection, COMMAND_PRIORITY_LOW, INDENT_CONTENT_COMMAND, KEY_TAB_COMMAND, OUTDENT_CONTENT_COMMAND, TabNode } from 'lexical';
5
+ import { $addUpdateTag, $getSelection, $isElementNode, $isRangeSelection, $isRootOrShadowRoot, BLUR_COMMAND, COMMAND_PRIORITY_HIGH, COMMAND_PRIORITY_LOW, FOCUS_COMMAND, INDENT_CONTENT_COMMAND, KEY_ESCAPE_COMMAND, KEY_TAB_COMMAND, OUTDENT_CONTENT_COMMAND, SELECTION_CHANGE_COMMAND, SKIP_DOM_SELECTION_TAG, TabNode } from 'lexical';
6
6
  import { useEffect } from 'react';
7
7
  export const IndentPlugin = ({
8
8
  clientProps
@@ -12,6 +12,127 @@ export const IndentPlugin = ({
12
12
  disabledNodes,
13
13
  disableTabNode
14
14
  } = clientProps;
15
+ useEffect(() => {
16
+ let canTabOut = false;
17
+ let hasTabbedOut = false;
18
+ const resetTabExit = () => {
19
+ canTabOut = false;
20
+ };
21
+ let restoreTabIndexes;
22
+ let restoreTabTimer;
23
+ let rootEvents;
24
+ function resetKeyboardExit() {
25
+ resetTabExit();
26
+ hasTabbedOut = false;
27
+ }
28
+ function handleKeyDownCapture(event) {
29
+ if (event.key !== 'Tab' || !canTabOut) {
30
+ if (!['Escape', 'Shift', 'Tab'].includes(event.key)) {
31
+ resetTabExit();
32
+ }
33
+ return;
34
+ }
35
+ const root = editor.getRootElement();
36
+ if (!root) {
37
+ return;
38
+ }
39
+ resetTabExit();
40
+ hasTabbedOut = true;
41
+ event.stopPropagation();
42
+ restoreTabIndexes?.();
43
+ clearTimeout(restoreTabTimer);
44
+ const container = root.closest('.rich-text-lexical') ?? root;
45
+ const tabStops = new Set([root, ...container.querySelectorAll('[tabindex], [contenteditable="true"], a[href], button, input, select, textarea, summary, iframe, audio[controls], video[controls]')]);
46
+ const tabIndexes = new Map();
47
+ // Let the browser take Tab outside the entire editor, including decorator controls.
48
+ // Restore its tab stops after the native focus move so ordinary Tab navigation is unchanged.
49
+ for (const element of tabStops) {
50
+ tabIndexes.set(element, element.getAttribute('tabindex'));
51
+ element.setAttribute('tabindex', '-1');
52
+ }
53
+ restoreTabIndexes = () => {
54
+ for (const [element, tabIndex] of tabIndexes) {
55
+ if (tabIndex === null) {
56
+ element.removeAttribute('tabindex');
57
+ } else {
58
+ element.setAttribute('tabindex', tabIndex);
59
+ }
60
+ }
61
+ restoreTabIndexes = undefined;
62
+ };
63
+ restoreTabTimer = setTimeout(() => restoreTabIndexes?.(), 0);
64
+ editor.update(() => $addUpdateTag(SKIP_DOM_SELECTION_TAG));
65
+ }
66
+ function handleKeyDown(event) {
67
+ if (event.key === 'Escape' && !event.defaultPrevented && editor.isEditable()) {
68
+ // A second press can dismiss the containing drawer; holding Escape must not.
69
+ if (canTabOut && !event.repeat) {
70
+ return;
71
+ }
72
+ // Menus handle Escape first. This also reaches inputs inside decorator blocks.
73
+ event.preventDefault();
74
+ event.stopPropagation();
75
+ canTabOut = true;
76
+ }
77
+ }
78
+ const unregisterRootListener = editor.registerRootListener(root => {
79
+ rootEvents?.abort();
80
+ rootEvents = new AbortController();
81
+ const {
82
+ signal
83
+ } = rootEvents;
84
+ /* eslint-disable @eslint-react/web-api/no-leaked-event-listener -- Aborted on root replacement and effect cleanup. */
85
+ root?.addEventListener('pointerdown', resetKeyboardExit, {
86
+ signal
87
+ });
88
+ root?.addEventListener('keydown', handleKeyDownCapture, {
89
+ capture: true,
90
+ signal
91
+ });
92
+ root?.addEventListener('keydown', handleKeyDown, {
93
+ signal
94
+ });
95
+ /* eslint-enable @eslint-react/web-api/no-leaked-event-listener */
96
+ });
97
+ const unregisterCommands = mergeRegister(editor.registerCommand(KEY_ESCAPE_COMMAND, event => {
98
+ if (!editor.isEditable()) {
99
+ return false;
100
+ }
101
+ handleKeyDown(event);
102
+ return true;
103
+ }, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_TAB_COMMAND, () => {
104
+ const selection = $getSelection();
105
+ const isRootSelection = $isRangeSelection(selection) && selection.isCollapsed() && $isRootOrShadowRoot(selection.anchor.getNode());
106
+ // A root selection between decorator blocks has no text block to indent.
107
+ if (!isRootSelection) {
108
+ return false;
109
+ }
110
+ resetTabExit();
111
+ hasTabbedOut = true;
112
+ $addUpdateTag(SKIP_DOM_SELECTION_TAG);
113
+ return true;
114
+ }, COMMAND_PRIORITY_HIGH), editor.registerCommand(BLUR_COMMAND, () => {
115
+ resetTabExit();
116
+ return false;
117
+ }, COMMAND_PRIORITY_HIGH), editor.registerCommand(FOCUS_COMMAND, () => {
118
+ resetKeyboardExit();
119
+ return false;
120
+ }, COMMAND_PRIORITY_HIGH), editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {
121
+ const root = editor.getRootElement();
122
+ // A delayed selectionchange must not reclaim focus after native Tab navigation.
123
+ if (hasTabbedOut && root?.ownerDocument.activeElement !== root) {
124
+ $addUpdateTag(SKIP_DOM_SELECTION_TAG);
125
+ }
126
+ return false;
127
+ }, COMMAND_PRIORITY_HIGH));
128
+ return () => {
129
+ unregisterCommands();
130
+ unregisterRootListener();
131
+ rootEvents?.abort();
132
+ clearTimeout(restoreTabTimer);
133
+ restoreTabIndexes?.();
134
+ };
135
+ }, [editor]);
15
136
  useEffect(() => {
16
137
  if (!editor || !disabledNodes?.length) {
17
138
  return;