@payloadcms/richtext-lexical 3.0.0-canary.a5aaf21 → 3.0.0-canary.a7293f6

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 (277) hide show
  1. package/dist/cell/index.js +1 -1
  2. package/dist/cell/index.js.map +1 -1
  3. package/dist/exports/client/Field-ETCEVZLL.js +2 -0
  4. package/dist/exports/client/Field-ETCEVZLL.js.map +7 -0
  5. package/dist/exports/client/RelationshipComponent-FTWR5YDX.js +2 -0
  6. package/dist/exports/client/RelationshipComponent-FTWR5YDX.js.map +7 -0
  7. package/dist/exports/client/bundled.css +1 -1
  8. package/dist/exports/client/{chunk-PY6JO5OH.js → chunk-32KXGBIQ.js} +2 -2
  9. package/dist/exports/client/{chunk-PY6JO5OH.js.map → chunk-32KXGBIQ.js.map} +2 -2
  10. package/dist/exports/client/chunk-6LZZDOEO.js +2 -0
  11. package/dist/exports/client/chunk-6LZZDOEO.js.map +7 -0
  12. package/dist/exports/client/{chunk-TXEIKM77.js → chunk-GD6LBQBJ.js} +2 -2
  13. package/dist/exports/client/chunk-GD6LBQBJ.js.map +7 -0
  14. package/dist/exports/client/{chunk-GK7ZKYHL.js → chunk-IIWHHN4J.js} +2 -2
  15. package/dist/exports/client/chunk-IIWHHN4J.js.map +7 -0
  16. package/dist/exports/client/{chunk-GTKNWSQW.js → chunk-QZNJUROL.js} +2 -2
  17. package/dist/exports/client/{chunk-GTKNWSQW.js.map → chunk-QZNJUROL.js.map} +2 -2
  18. package/dist/exports/client/chunk-WAMTSCVM.js +2 -0
  19. package/dist/exports/client/{chunk-F5DIILW3.js.map → chunk-WAMTSCVM.js.map} +2 -2
  20. package/dist/exports/client/{chunk-PECDZEZY.js → chunk-XCEM47RI.js} +2 -2
  21. package/dist/exports/client/{chunk-PECDZEZY.js.map → chunk-XCEM47RI.js.map} +2 -2
  22. package/dist/exports/client/component-6PBZ2U3Z.js +2 -0
  23. package/dist/exports/client/component-6PBZ2U3Z.js.map +7 -0
  24. package/dist/exports/client/component-6Y2K2RNP.js +2 -0
  25. package/dist/exports/client/component-6Y2K2RNP.js.map +7 -0
  26. package/dist/exports/client/component-ANB7VZLA.js +2 -0
  27. package/dist/exports/client/component-ANB7VZLA.js.map +7 -0
  28. package/dist/exports/client/componentInline-NUDJIIQ4.js +2 -0
  29. package/dist/exports/client/componentInline-NUDJIIQ4.js.map +7 -0
  30. package/dist/exports/client/index.d.ts +1 -0
  31. package/dist/exports/client/index.d.ts.map +1 -1
  32. package/dist/exports/client/index.js +7 -7
  33. package/dist/exports/client/index.js.map +4 -4
  34. package/dist/features/blockquote/markdownTransformer.js.map +1 -1
  35. package/dist/features/blockquote/server/index.d.ts +1 -1
  36. package/dist/features/blockquote/server/index.d.ts.map +1 -1
  37. package/dist/features/blocks/client/component/BlockContent.js +5 -4
  38. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  39. package/dist/features/blocks/client/component/index.d.ts +1 -1
  40. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  41. package/dist/features/blocks/client/component/index.js +3 -3
  42. package/dist/features/blocks/client/component/index.js.map +1 -1
  43. package/dist/features/blocks/client/componentInline/index.d.ts +1 -1
  44. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  45. package/dist/features/blocks/client/componentInline/index.js +14 -11
  46. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  47. package/dist/features/blocks/client/index.d.ts +1 -1
  48. package/dist/features/blocks/client/index.d.ts.map +1 -1
  49. package/dist/features/blocks/client/index.js +21 -11
  50. package/dist/features/blocks/client/index.js.map +1 -1
  51. package/dist/features/blocks/client/nodes/BlocksNode.d.ts +2 -2
  52. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  53. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  54. package/dist/features/blocks/client/plugin/index.d.ts +2 -2
  55. package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
  56. package/dist/features/blocks/client/plugin/index.js +4 -4
  57. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  58. package/dist/features/blocks/server/index.d.ts.map +1 -1
  59. package/dist/features/blocks/server/index.js +4 -2
  60. package/dist/features/blocks/server/index.js.map +1 -1
  61. package/dist/features/blocks/server/nodes/BlocksNode.d.ts +10 -4
  62. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  63. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  64. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +2 -2
  65. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  66. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  67. package/dist/features/blocks/server/validate.js.map +1 -1
  68. package/dist/features/converters/html/converter/index.js +2 -2
  69. package/dist/features/converters/html/converter/index.js.map +1 -1
  70. package/dist/features/converters/html/field/index.js.map +1 -1
  71. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  72. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -1
  73. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +29 -43
  74. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  75. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -1
  76. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +39 -39
  77. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  78. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +19 -18
  79. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  80. package/dist/features/experimental_table/server/index.js +2 -2
  81. package/dist/features/experimental_table/server/index.js.map +1 -1
  82. package/dist/features/horizontalRule/client/component/index.d.ts +1 -1
  83. package/dist/features/horizontalRule/client/component/index.d.ts.map +1 -1
  84. package/dist/features/horizontalRule/client/component/index.js +12 -9
  85. package/dist/features/horizontalRule/client/component/index.js.map +1 -1
  86. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +2 -2
  87. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  88. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  89. package/dist/features/indent/client/index.d.ts.map +1 -1
  90. package/dist/features/indent/client/index.js +2 -1
  91. package/dist/features/indent/client/index.js.map +1 -1
  92. package/dist/features/link/client/index.js +1 -1
  93. package/dist/features/link/client/index.js.map +1 -1
  94. package/dist/features/link/client/plugins/autoLink/index.d.ts +1 -1
  95. package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
  96. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  97. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  98. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +3 -7
  99. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  100. package/dist/features/link/nodes/AutoLinkNode.js +2 -2
  101. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  102. package/dist/features/link/nodes/LinkNode.js +11 -7
  103. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  104. package/dist/features/link/nodes/types.d.ts +3 -3
  105. package/dist/features/link/nodes/types.d.ts.map +1 -1
  106. package/dist/features/link/nodes/types.js.map +1 -1
  107. package/dist/features/link/server/baseFields.d.ts +1 -1
  108. package/dist/features/link/server/baseFields.d.ts.map +1 -1
  109. package/dist/features/link/server/baseFields.js +3 -1
  110. package/dist/features/link/server/baseFields.js.map +1 -1
  111. package/dist/features/link/server/index.d.ts.map +1 -1
  112. package/dist/features/link/server/index.js +2 -2
  113. package/dist/features/link/server/index.js.map +1 -1
  114. package/dist/features/link/server/transformExtraFields.d.ts +1 -1
  115. package/dist/features/link/server/transformExtraFields.d.ts.map +1 -1
  116. package/dist/features/link/server/transformExtraFields.js.map +1 -1
  117. package/dist/features/link/server/validate.js.map +1 -1
  118. package/dist/features/lists/shared/markdown.js.map +1 -1
  119. package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +1 -1
  120. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +1 -0
  121. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
  122. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
  123. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  124. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  125. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
  126. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
  127. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
  128. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
  129. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
  130. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
  131. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
  132. package/dist/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
  133. package/dist/features/migrations/slateToLexical/converter/index.js +1 -0
  134. package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
  135. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
  136. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  137. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  138. package/dist/features/paragraph/server/index.d.ts +1 -1
  139. package/dist/features/paragraph/server/index.d.ts.map +1 -1
  140. package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
  141. package/dist/features/relationship/client/components/RelationshipComponent.js +18 -13
  142. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  143. package/dist/features/relationship/client/drawer/index.js +3 -3
  144. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  145. package/dist/features/relationship/client/plugins/index.js +1 -1
  146. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  147. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +1 -1
  148. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
  149. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +1 -1
  150. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  151. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  152. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  153. package/dist/features/toolbars/fixed/client/Toolbar/index.js +40 -41
  154. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  155. package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -1
  156. package/dist/features/toolbars/inline/client/Toolbar/index.js +33 -34
  157. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  158. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  159. package/dist/features/toolbars/shared/ToolbarButton/index.js +4 -1
  160. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  161. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +1 -1
  162. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  163. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +3 -4
  164. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  165. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +82 -64
  166. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  167. package/dist/features/toolbars/types.d.ts +21 -11
  168. package/dist/features/toolbars/types.d.ts.map +1 -1
  169. package/dist/features/toolbars/types.js.map +1 -1
  170. package/dist/features/typesServer.d.ts.map +1 -1
  171. package/dist/features/typesServer.js.map +1 -1
  172. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  173. package/dist/features/upload/client/component/index.js +11 -8
  174. package/dist/features/upload/client/component/index.js.map +1 -1
  175. package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
  176. package/dist/features/upload/client/drawer/index.js +2 -0
  177. package/dist/features/upload/client/drawer/index.js.map +1 -1
  178. package/dist/features/upload/client/plugin/index.js +1 -1
  179. package/dist/features/upload/client/plugin/index.js.map +1 -1
  180. package/dist/features/upload/server/feature.server.js +3 -4
  181. package/dist/features/upload/server/feature.server.js.map +1 -1
  182. package/dist/features/upload/server/validate.js.map +1 -1
  183. package/dist/field/Field.d.ts.map +1 -1
  184. package/dist/field/Field.js +11 -11
  185. package/dist/field/Field.js.map +1 -1
  186. package/dist/field/bundled.css +1 -1
  187. package/dist/field/index.js +1 -1
  188. package/dist/field/index.js.map +1 -1
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +67 -63
  191. package/dist/index.js.map +1 -1
  192. package/dist/lexical/EditorPlugin.d.ts.map +1 -1
  193. package/dist/lexical/EditorPlugin.js +2 -1
  194. package/dist/lexical/EditorPlugin.js.map +1 -1
  195. package/dist/lexical/LexicalEditor.d.ts +1 -1
  196. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  197. package/dist/lexical/LexicalEditor.js +5 -5
  198. package/dist/lexical/LexicalEditor.js.map +1 -1
  199. package/dist/lexical/config/client/EditorConfigProvider.d.ts +1 -1
  200. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  201. package/dist/lexical/config/client/EditorConfigProvider.js +8 -7
  202. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  203. package/dist/lexical/config/client/sanitize.js +2 -2
  204. package/dist/lexical/config/client/sanitize.js.map +1 -1
  205. package/dist/lexical/config/server/loader.js.map +1 -1
  206. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  207. package/dist/lexical/config/server/sanitize.js +11 -11
  208. package/dist/lexical/config/server/sanitize.js.map +1 -1
  209. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +2 -2
  210. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  211. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +1 -1
  212. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  213. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  214. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  215. package/dist/lexical/plugins/SlashMenu/index.js +9 -6
  216. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  217. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
  218. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +5 -5
  219. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  220. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts +1 -1
  221. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
  222. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +1 -1
  223. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
  224. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +1 -1
  225. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
  226. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  227. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +9 -4
  228. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  229. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -1
  230. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +3 -4
  231. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  232. package/dist/lexical/theme/EditorTheme.d.ts.map +1 -1
  233. package/dist/lexical/theme/EditorTheme.js +1 -0
  234. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  235. package/dist/lexical/utils/rect.d.ts +4 -4
  236. package/dist/lexical/utils/setFloatingElemPosition.d.ts +1 -1
  237. package/dist/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
  238. package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
  239. package/dist/populateGraphQL/populate.js +1 -1
  240. package/dist/populateGraphQL/populate.js.map +1 -1
  241. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts +1 -1
  242. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  243. package/dist/populateGraphQL/populateLexicalPopulationPromises.js +5 -4
  244. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  245. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  246. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  247. package/dist/utilities/fieldsDrawer/DrawerContent.js +1 -1
  248. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  249. package/dist/utilities/generateComponentMap.d.ts.map +1 -1
  250. package/dist/utilities/generateComponentMap.js +1 -0
  251. package/dist/utilities/generateComponentMap.js.map +1 -1
  252. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts +1 -1
  253. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts.map +1 -1
  254. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +1 -1
  255. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
  256. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts +1 -1
  257. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
  258. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  259. package/dist/validate/validateNodes.d.ts.map +1 -1
  260. package/dist/validate/validateNodes.js +2 -2
  261. package/dist/validate/validateNodes.js.map +1 -1
  262. package/package.json +30 -30
  263. package/dist/exports/client/Field-EL5TNVZW.js +0 -2
  264. package/dist/exports/client/Field-EL5TNVZW.js.map +0 -7
  265. package/dist/exports/client/RelationshipComponent-Z5SZ5FFT.js +0 -2
  266. package/dist/exports/client/RelationshipComponent-Z5SZ5FFT.js.map +0 -7
  267. package/dist/exports/client/chunk-F5DIILW3.js +0 -2
  268. package/dist/exports/client/chunk-GK7ZKYHL.js.map +0 -7
  269. package/dist/exports/client/chunk-TXEIKM77.js.map +0 -7
  270. package/dist/exports/client/component-ATPITPNI.js +0 -2
  271. package/dist/exports/client/component-ATPITPNI.js.map +0 -7
  272. package/dist/exports/client/component-GAX6BHKZ.js +0 -2
  273. package/dist/exports/client/component-GAX6BHKZ.js.map +0 -7
  274. package/dist/exports/client/component-M3ZCPXEG.js +0 -2
  275. package/dist/exports/client/component-M3ZCPXEG.js.map +0 -7
  276. package/dist/exports/client/componentInline-HAGGWKA7.js +0 -2
  277. package/dist/exports/client/componentInline-HAGGWKA7.js.map +0 -7
@@ -3,7 +3,7 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
5
5
  import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
6
- import { $computeTableMapSkipCellCheck, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $isTableCellNode, $isTableRowNode, getDOMCellFromTarget } from '@lexical/table';
6
+ import { $computeTableMapSkipCellCheck, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $isTableCellNode, $isTableRowNode, getDOMCellFromTarget, TableNode } from '@lexical/table';
7
7
  import { calculateZoomLevel } from '@lexical/utils';
8
8
  import { $getNearestNodeFromDOMNode } from 'lexical';
9
9
  import * as React from 'react';
@@ -11,7 +11,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
11
11
  import { createPortal } from 'react-dom';
12
12
  import { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js';
13
13
  const MIN_ROW_HEIGHT = 33;
14
- const MIN_COLUMN_WIDTH = 50;
14
+ const MIN_COLUMN_WIDTH = 92;
15
15
  function TableCellResizer({
16
16
  editor
17
17
  }) {
@@ -34,6 +34,17 @@ function TableCellResizer({
34
34
  const isMouseDownOnEvent = event => {
35
35
  return (event.buttons & 1) === 1;
36
36
  };
37
+ useEffect(() => {
38
+ return editor.registerNodeTransform(TableNode, tableNode => {
39
+ if (tableNode.getColWidths()) {
40
+ return tableNode;
41
+ }
42
+ const numColumns = tableNode.getColumnCount();
43
+ const columnWidth = MIN_COLUMN_WIDTH;
44
+ tableNode.setColWidths(Array(numColumns).fill(columnWidth));
45
+ return tableNode;
46
+ });
47
+ }, [editor]);
37
48
  useEffect(() => {
38
49
  const onMouseMove = event_0 => {
39
50
  setTimeout(() => {
@@ -58,8 +69,8 @@ function TableCellResizer({
58
69
  if (!tableCellNode) {
59
70
  throw new Error('TableCellResizer: Table cell node not found.');
60
71
  }
61
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
62
- const tableElement = editor.getElementByKey(tableNode.getKey());
72
+ const tableNode_0 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
73
+ const tableElement = editor.getElementByKey(tableNode_0.getKey());
63
74
  if (!tableElement) {
64
75
  throw new Error('TableCellResizer: Table element not found.');
65
76
  }
@@ -84,12 +95,12 @@ function TableCellResizer({
84
95
  }, 0);
85
96
  };
86
97
  const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {
87
- rootElement?.addEventListener('mousemove', onMouseMove);
88
- rootElement?.addEventListener('mousedown', onMouseDown);
89
- rootElement?.addEventListener('mouseup', onMouseUp);
90
98
  prevRootElement?.removeEventListener('mousemove', onMouseMove);
91
99
  prevRootElement?.removeEventListener('mousedown', onMouseDown);
92
100
  prevRootElement?.removeEventListener('mouseup', onMouseUp);
101
+ rootElement?.addEventListener('mousemove', onMouseMove);
102
+ rootElement?.addEventListener('mousedown', onMouseDown);
103
+ rootElement?.addEventListener('mouseup', onMouseUp);
93
104
  });
94
105
  return () => {
95
106
  removeRootListener();
@@ -110,9 +121,9 @@ function TableCellResizer({
110
121
  if (!$isTableCellNode(tableCellNode_0)) {
111
122
  throw new Error('TableCellResizer: Table cell node not found.');
112
123
  }
113
- const tableNode_0 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_0);
114
- const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode_0);
115
- const tableRows = tableNode_0.getChildren();
124
+ const tableNode_1 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_0);
125
+ const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode_0) + tableCellNode_0.getRowSpan() - 1;
126
+ const tableRows = tableNode_1.getChildren();
116
127
  if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {
117
128
  throw new Error('Expected table cell to be inside of table row.');
118
129
  }
@@ -131,21 +142,9 @@ function TableCellResizer({
131
142
  tag: 'skip-scroll-into-view'
132
143
  });
133
144
  }, [activeCell, editor]);
134
- const getCellNodeWidth = (cell_1, activeEditor) => {
135
- const width = cell_1.getWidth();
136
- if (width !== undefined) {
137
- return width;
138
- }
145
+ const getCellNodeHeight = (cell_1, activeEditor) => {
139
146
  const domCellNode = activeEditor.getElementByKey(cell_1.getKey());
140
- if (domCellNode == null) {
141
- return undefined;
142
- }
143
- const computedStyle = getComputedStyle(domCellNode);
144
- return domCellNode.clientWidth - parseFloat(computedStyle.paddingLeft) - parseFloat(computedStyle.paddingRight);
145
- };
146
- const getCellNodeHeight = (cell_2, activeEditor_0) => {
147
- const domCellNode_0 = activeEditor_0.getElementByKey(cell_2.getKey());
148
- return domCellNode_0?.clientHeight;
147
+ return domCellNode?.clientHeight;
149
148
  };
150
149
  const getCellColumnIndex = (tableCellNode_1, tableMap) => {
151
150
  for (let row = 0; row < tableMap.length; row++) {
@@ -165,23 +164,24 @@ function TableCellResizer({
165
164
  if (!$isTableCellNode(tableCellNode_2)) {
166
165
  throw new Error('TableCellResizer: Table cell node not found.');
167
166
  }
168
- const tableNode_1 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_2);
169
- const [tableMap_0] = $computeTableMapSkipCellCheck(tableNode_1, null, null);
167
+ const tableNode_2 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_2);
168
+ const [tableMap_0] = $computeTableMapSkipCellCheck(tableNode_2, null, null);
170
169
  const columnIndex = getCellColumnIndex(tableCellNode_2, tableMap_0);
171
170
  if (columnIndex === undefined) {
172
171
  throw new Error('TableCellResizer: Table column not found.');
173
172
  }
174
- for (let row_0 = 0; row_0 < tableMap_0.length; row_0++) {
175
- const cell_3 = tableMap_0[row_0][columnIndex];
176
- if (cell_3.startRow === row_0 && (columnIndex === tableMap_0[row_0].length - 1 || tableMap_0[row_0][columnIndex].cell !== tableMap_0[row_0][columnIndex + 1].cell)) {
177
- const width_0 = getCellNodeWidth(cell_3.cell, editor);
178
- if (width_0 === undefined) {
179
- continue;
180
- }
181
- const newWidth = Math.max(width_0 + widthChange, MIN_COLUMN_WIDTH);
182
- cell_3.cell.setWidth(newWidth);
183
- }
173
+ const colWidths = tableNode_2.getColWidths();
174
+ if (!colWidths) {
175
+ return;
176
+ }
177
+ const width = colWidths[columnIndex];
178
+ if (width === undefined) {
179
+ return;
184
180
  }
181
+ const newColWidths = [...colWidths];
182
+ const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH);
183
+ newColWidths[columnIndex] = newWidth;
184
+ tableNode_2.setColWidths(newColWidths);
185
185
  }, {
186
186
  tag: 'skip-scroll-into-view'
187
187
  });
@@ -235,7 +235,7 @@ function TableCellResizer({
235
235
  height: height_0,
236
236
  left,
237
237
  top,
238
- width: width_1
238
+ width: width_0
239
239
  } = activeCell.elem.getBoundingClientRect();
240
240
  const zoom_0 = calculateZoomLevel(activeCell.elem);
241
241
  const zoneWidth = 10 // Pixel width of the zone where you can drag the edge
@@ -247,13 +247,13 @@ function TableCellResizer({
247
247
  height: `${zoneWidth}px`,
248
248
  left: `${window.pageXOffset + left}px`,
249
249
  top: `${window.pageYOffset + top + height_0 - zoneWidth / 2}px`,
250
- width: `${width_1}px`
250
+ width: `${width_0}px`
251
251
  },
252
252
  right: {
253
253
  backgroundColor: 'none',
254
254
  cursor: 'col-resize',
255
255
  height: `${height_0}px`,
256
- left: `${window.pageXOffset + left + width_1 - zoneWidth / 2}px`,
256
+ left: `${window.pageXOffset + left + width_0 - zoneWidth / 2}px`,
257
257
  top: `${window.pageYOffset + top}px`,
258
258
  width: `${zoneWidth}px`
259
259
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$isTableCellNode","$isTableRowNode","getDOMCellFromTarget","calculateZoomLevel","$getNearestNodeFromDOMNode","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","useEditorConfigContext","MIN_ROW_HEIGHT","MIN_COLUMN_WIDTH","TableCellResizer","editor","targetRef","resizerRef","tableRectRef","editorConfig","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","current","isMouseDownOnEvent","event","buttons","onMouseMove","setTimeout","target","x","clientX","y","clientY","contains","cell","update","tableCellNode","elem","Error","tableNode","tableElement","getElementByKey","getKey","getBoundingClientRect","onMouseDown","onMouseUp","removeRootListener","registerRootListener","rootElement","prevRootElement","addEventListener","removeEventListener","isHeightChanging","direction","updateRowHeight","heightChange","tableRowIndex","tableRows","getChildren","length","tableRow","height","getHeight","undefined","rowCells","Math","min","map","getCellNodeHeight","Infinity","newHeight","max","setHeight","tag","getCellNodeWidth","activeEditor","width","getWidth","domCellNode","computedStyle","getComputedStyle","clientWidth","parseFloat","paddingLeft","paddingRight","clientHeight","getCellColumnIndex","tableMap","row","column","updateColumnWidth","widthChange","columnIndex","startRow","newWidth","setWidth","mouseUpHandler","handler","preventDefault","stopPropagation","zoom","document","toggleResize","getResizers","left","top","zoneWidth","styles","bottom","backgroundColor","cursor","window","pageXOffset","pageYOffset","right","tableRect","resizerStyles","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","isEditable","body"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableCellNode, TableDOMCell, TableMapType, TableMapValueType } from '@lexical/table'\nimport type { LexicalEditor } from 'lexical'\nimport type { JSX, MouseEventHandler } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n getDOMCellFromTarget,\n} from '@lexical/table'\nimport { calculateZoomLevel } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\n\ntype MousePosition = {\n x: number\n y: number\n}\n\ntype MouseDraggingDirection = 'bottom' | 'right'\n\nconst MIN_ROW_HEIGHT = 33\nconst MIN_COLUMN_WIDTH = 50\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null)\n const resizerRef = useRef<HTMLDivElement | null>(null)\n const tableRectRef = useRef<ClientRect | null>(null)\n const editorConfig = useEditorConfigContext()\n\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<null | TableDOMCell>(null)\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false)\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null)\n\n const resetState = useCallback(() => {\n updateActiveCell(null)\n targetRef.current = null\n updateDraggingDirection(null)\n mouseStartPosRef.current = null\n tableRectRef.current = null\n }, [])\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1\n }\n\n useEffect(() => {\n const onMouseMove = (event: MouseEvent) => {\n setTimeout(() => {\n const target = event.target\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n })\n return\n }\n updateIsMouseDown(isMouseDownOnEvent(event))\n if (resizerRef.current && resizerRef.current.contains(target as Node)) {\n return\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target as HTMLElement\n const cell = getDOMCellFromTarget(target as HTMLElement)\n\n if (cell && activeCell !== cell) {\n editor.update(() => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem)\n\n if (!tableCellNode) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(tableNode.getKey())\n\n if (!tableElement) {\n throw new Error('TableCellResizer: Table element not found.')\n }\n\n targetRef.current = target as HTMLElement\n tableRectRef.current = tableElement.getBoundingClientRect()\n updateActiveCell(cell)\n })\n } else if (cell == null) {\n resetState()\n }\n }\n }, 0)\n }\n\n const onMouseDown = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(true)\n }, 0)\n }\n\n const onMouseUp = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(false)\n }, 0)\n }\n\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\n rootElement?.addEventListener('mousemove', onMouseMove)\n rootElement?.addEventListener('mousedown', onMouseDown)\n rootElement?.addEventListener('mouseup', onMouseUp)\n\n prevRootElement?.removeEventListener('mousemove', onMouseMove)\n prevRootElement?.removeEventListener('mousedown', onMouseDown)\n prevRootElement?.removeEventListener('mouseup', onMouseUp)\n })\n\n return () => {\n removeRootListener()\n }\n }, [activeCell, draggingDirection, editor, resetState])\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === 'bottom') {\n return true\n }\n return false\n }\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n let height = tableRow.getHeight()\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>()\n height = Math.min(\n ...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity),\n )\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT)\n tableRow.setHeight(newHeight)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const getCellNodeWidth = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const width = cell.getWidth()\n if (width !== undefined) {\n return width\n }\n\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n if (domCellNode == null) {\n return undefined\n }\n const computedStyle = getComputedStyle(domCellNode)\n return (\n domCellNode.clientWidth -\n parseFloat(computedStyle.paddingLeft) -\n parseFloat(computedStyle.paddingRight)\n )\n }\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n return domCellNode?.clientHeight\n }\n\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\n for (let row = 0; row < tableMap.length; row++) {\n for (let column = 0; column < tableMap[row].length; column++) {\n if (tableMap[row][column].cell === tableCellNode) {\n return column\n }\n }\n }\n }\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap)\n if (columnIndex === undefined) {\n throw new Error('TableCellResizer: Table column not found.')\n }\n\n for (let row = 0; row < tableMap.length; row++) {\n const cell: TableMapValueType = tableMap[row][columnIndex]\n if (\n cell.startRow === row &&\n (columnIndex === tableMap[row].length - 1 ||\n tableMap[row][columnIndex].cell !== tableMap[row][columnIndex + 1].cell)\n ) {\n const width = getCellNodeWidth(cell.cell, editor)\n if (width === undefined) {\n continue\n }\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n cell.cell.setWidth(newWidth)\n }\n }\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current\n\n if (activeCell === null) {\n return\n }\n const zoom = calculateZoomLevel(event.target as Element)\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom\n updateRowHeight(heightChange)\n } else {\n const widthChange = (event.clientX - x) / zoom\n updateColumnWidth(widthChange)\n }\n\n resetState()\n document.removeEventListener('mouseup', handler)\n }\n }\n return handler\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight],\n )\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n }\n updateMouseCurrentPos(mouseStartPosRef.current)\n updateDraggingDirection(direction)\n\n document.addEventListener('mouseup', mouseUpHandler(direction))\n },\n [activeCell, mouseUpHandler],\n )\n\n const getResizers = useCallback(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.pageXOffset + left}px`,\n top: `${window.pageYOffset + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.pageXOffset + left + width - zoneWidth / 2}px`,\n top: `${window.pageYOffset + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.pageXOffset + tableRect.left}px`\n styles[draggingDirection].top = `${window.pageYOffset + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.pageYOffset + tableRect.top}px`\n styles[draggingDirection].left = `${window.pageXOffset + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n return styles\n }\n\n return {\n bottom: null,\n left: null,\n right: null,\n top: null,\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n const resizerStyles = getResizers()\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$isTableCellNode","$isTableRowNode","getDOMCellFromTarget","TableNode","calculateZoomLevel","$getNearestNodeFromDOMNode","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","useEditorConfigContext","MIN_ROW_HEIGHT","MIN_COLUMN_WIDTH","TableCellResizer","editor","targetRef","resizerRef","tableRectRef","editorConfig","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","current","isMouseDownOnEvent","event","buttons","registerNodeTransform","tableNode","getColWidths","numColumns","getColumnCount","columnWidth","setColWidths","Array","fill","onMouseMove","setTimeout","target","x","clientX","y","clientY","contains","cell","update","tableCellNode","elem","Error","tableElement","getElementByKey","getKey","getBoundingClientRect","onMouseDown","onMouseUp","removeRootListener","registerRootListener","rootElement","prevRootElement","removeEventListener","addEventListener","isHeightChanging","direction","updateRowHeight","heightChange","tableRowIndex","getRowSpan","tableRows","getChildren","length","tableRow","height","getHeight","undefined","rowCells","Math","min","map","getCellNodeHeight","Infinity","newHeight","max","setHeight","tag","activeEditor","domCellNode","clientHeight","getCellColumnIndex","tableMap","row","column","updateColumnWidth","widthChange","columnIndex","colWidths","width","newColWidths","newWidth","mouseUpHandler","handler","preventDefault","stopPropagation","zoom","document","toggleResize","getResizers","left","top","zoneWidth","styles","bottom","backgroundColor","cursor","window","pageXOffset","pageYOffset","right","tableRect","resizerStyles","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","isEditable","body"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableCellNode, TableDOMCell, TableMapType } from '@lexical/table'\nimport type { LexicalEditor } from 'lexical'\nimport type { JSX, MouseEventHandler } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n getDOMCellFromTarget,\n TableNode,\n} from '@lexical/table'\nimport { calculateZoomLevel } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\n\ntype MousePosition = {\n x: number\n y: number\n}\n\ntype MouseDraggingDirection = 'bottom' | 'right'\n\nconst MIN_ROW_HEIGHT = 33\nconst MIN_COLUMN_WIDTH = 92\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null)\n const resizerRef = useRef<HTMLDivElement | null>(null)\n const tableRectRef = useRef<ClientRect | null>(null)\n const editorConfig = useEditorConfigContext()\n\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<null | TableDOMCell>(null)\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false)\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null)\n\n const resetState = useCallback(() => {\n updateActiveCell(null)\n targetRef.current = null\n updateDraggingDirection(null)\n mouseStartPosRef.current = null\n tableRectRef.current = null\n }, [])\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1\n }\n\n useEffect(() => {\n return editor.registerNodeTransform(TableNode, (tableNode) => {\n if (tableNode.getColWidths()) {\n return tableNode\n }\n\n const numColumns = tableNode.getColumnCount()\n const columnWidth = MIN_COLUMN_WIDTH\n\n tableNode.setColWidths(Array(numColumns).fill(columnWidth))\n return tableNode\n })\n }, [editor])\n\n useEffect(() => {\n const onMouseMove = (event: MouseEvent) => {\n setTimeout(() => {\n const target = event.target\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n })\n return\n }\n updateIsMouseDown(isMouseDownOnEvent(event))\n if (resizerRef.current && resizerRef.current.contains(target as Node)) {\n return\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target as HTMLElement\n const cell = getDOMCellFromTarget(target as HTMLElement)\n\n if (cell && activeCell !== cell) {\n editor.update(() => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem)\n\n if (!tableCellNode) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(tableNode.getKey())\n\n if (!tableElement) {\n throw new Error('TableCellResizer: Table element not found.')\n }\n\n targetRef.current = target as HTMLElement\n tableRectRef.current = tableElement.getBoundingClientRect()\n updateActiveCell(cell)\n })\n } else if (cell == null) {\n resetState()\n }\n }\n }, 0)\n }\n\n const onMouseDown = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(true)\n }, 0)\n }\n\n const onMouseUp = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(false)\n }, 0)\n }\n\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\n prevRootElement?.removeEventListener('mousemove', onMouseMove)\n prevRootElement?.removeEventListener('mousedown', onMouseDown)\n prevRootElement?.removeEventListener('mouseup', onMouseUp)\n rootElement?.addEventListener('mousemove', onMouseMove)\n rootElement?.addEventListener('mousedown', onMouseDown)\n rootElement?.addEventListener('mouseup', onMouseUp)\n })\n\n return () => {\n removeRootListener()\n }\n }, [activeCell, draggingDirection, editor, resetState])\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === 'bottom') {\n return true\n }\n return false\n }\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex =\n $getTableRowIndexFromTableCellNode(tableCellNode) + tableCellNode.getRowSpan() - 1\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n let height = tableRow.getHeight()\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>()\n height = Math.min(\n ...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity),\n )\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT)\n tableRow.setHeight(newHeight)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n return domCellNode?.clientHeight\n }\n\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\n for (let row = 0; row < tableMap.length; row++) {\n for (let column = 0; column < tableMap[row].length; column++) {\n if (tableMap[row][column].cell === tableCellNode) {\n return column\n }\n }\n }\n }\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap)\n if (columnIndex === undefined) {\n throw new Error('TableCellResizer: Table column not found.')\n }\n\n const colWidths = tableNode.getColWidths()\n if (!colWidths) {\n return\n }\n const width = colWidths[columnIndex]\n if (width === undefined) {\n return\n }\n const newColWidths = [...colWidths]\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n newColWidths[columnIndex] = newWidth\n tableNode.setColWidths(newColWidths)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current\n\n if (activeCell === null) {\n return\n }\n const zoom = calculateZoomLevel(event.target as Element)\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom\n updateRowHeight(heightChange)\n } else {\n const widthChange = (event.clientX - x) / zoom\n updateColumnWidth(widthChange)\n }\n\n resetState()\n document.removeEventListener('mouseup', handler)\n }\n }\n return handler\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight],\n )\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n }\n updateMouseCurrentPos(mouseStartPosRef.current)\n updateDraggingDirection(direction)\n\n document.addEventListener('mouseup', mouseUpHandler(direction))\n },\n [activeCell, mouseUpHandler],\n )\n\n const getResizers = useCallback(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.pageXOffset + left}px`,\n top: `${window.pageYOffset + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.pageXOffset + left + width - zoneWidth / 2}px`,\n top: `${window.pageYOffset + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.pageXOffset + tableRect.left}px`\n styles[draggingDirection].top = `${window.pageYOffset + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.pageYOffset + tableRect.top}px`\n styles[draggingDirection].left = `${window.pageXOffset + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n return styles\n }\n\n return {\n bottom: null,\n left: null,\n right: null,\n top: null,\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n const resizerStyles = getResizers()\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -42,7 +42,7 @@ export function TableContext({
42
42
  });
43
43
  }
44
44
  export const TablePlugin = () => {
45
- const $ = _c(18);
45
+ const $ = _c(19);
46
46
  const [editor] = useLexicalComposerContext();
47
47
  const cellContext = useContext(CellContext);
48
48
  const {
@@ -96,18 +96,19 @@ export const TablePlugin = () => {
96
96
  t2 = $[6];
97
97
  }
98
98
  let t3;
99
- if ($[7] !== cellContext || $[8] !== editor || $[9] !== toggleModal) {
100
- t3 = [cellContext, editor, toggleModal];
99
+ if ($[7] !== cellContext || $[8] !== drawerSlug || $[9] !== editor || $[10] !== toggleModal) {
100
+ t3 = [cellContext, drawerSlug, editor, toggleModal];
101
101
  $[7] = cellContext;
102
- $[8] = editor;
103
- $[9] = toggleModal;
104
- $[10] = t3;
102
+ $[8] = drawerSlug;
103
+ $[9] = editor;
104
+ $[10] = toggleModal;
105
+ $[11] = t3;
105
106
  } else {
106
- t3 = $[10];
107
+ t3 = $[11];
107
108
  }
108
109
  useEffect(t2, t3);
109
110
  let t4;
110
- if ($[11] !== closeModal || $[12] !== drawerSlug || $[13] !== editor) {
111
+ if ($[12] !== closeModal || $[13] !== drawerSlug || $[14] !== editor) {
111
112
  t4 = (_fields, data) => {
112
113
  closeModal(drawerSlug);
113
114
  if (!data.columns || !data.rows) {
@@ -118,15 +119,15 @@ export const TablePlugin = () => {
118
119
  rows: String(data.rows)
119
120
  });
120
121
  };
121
- $[11] = closeModal;
122
- $[12] = drawerSlug;
123
- $[13] = editor;
124
- $[14] = t4;
122
+ $[12] = closeModal;
123
+ $[13] = drawerSlug;
124
+ $[14] = editor;
125
+ $[15] = t4;
125
126
  } else {
126
- t4 = $[14];
127
+ t4 = $[15];
127
128
  }
128
129
  let t5;
129
- if ($[15] !== drawerSlug || $[16] !== t4) {
130
+ if ($[16] !== drawerSlug || $[17] !== t4) {
130
131
  t5 = _jsxs(React.Fragment, {
131
132
  children: [_jsx(FieldsDrawer, {
132
133
  drawerSlug,
@@ -139,11 +140,11 @@ export const TablePlugin = () => {
139
140
  hasCellMerge: true
140
141
  })]
141
142
  });
142
- $[15] = drawerSlug;
143
- $[16] = t4;
144
- $[17] = t5;
143
+ $[16] = drawerSlug;
144
+ $[17] = t4;
145
+ $[18] = t5;
145
146
  } else {
146
- t5 = $[17];
147
+ t5 = $[18];
147
148
  }
148
149
  return t5;
149
150
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","useModal","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","closeModal","toggleModal","editDepth","uuid","t0","t1","slug","depth","drawerSlug","t2","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t3","t4","_fields","data","columns","rows","dispatchCommand","String","t5","_jsxs","Fragment","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","hasCellBackgroundColor","hasCellMerge"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth, useModal } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n const { closeModal, toggleModal } = useModal()\n const editDepth = useEditDepth()\n const { uuid } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n throw new Error('TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleModal(drawerSlug)\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleModal])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n closeModal(drawerSlug)\n\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","useModal","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","closeModal","toggleModal","editDepth","uuid","t0","t1","slug","depth","drawerSlug","t2","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t3","t4","_fields","data","columns","rows","dispatchCommand","String","t5","_jsxs","Fragment","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","hasCellBackgroundColor","hasCellMerge"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth, useModal } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n const { closeModal, toggleModal } = useModal()\n const editDepth = useEditDepth()\n const { uuid } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n throw new Error('TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleModal(drawerSlug)\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, drawerSlug, editor, toggleModal])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n closeModal(drawerSlug)\n\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -100,8 +100,8 @@ export const EXPERIMENTAL_TableFeature = createServerFeature({
100
100
  const tagName = node.headerState > 0 ? 'th' : 'td';
101
101
  const headerStateClass = `lexical-table-cell-header-${node.headerState}`;
102
102
  const backgroundColor = node.backgroundColor ? `background-color: ${node.backgroundColor};` : '';
103
- const colSpan = node.colSpan > 1 ? `colspan="${node.colSpan}"` : '';
104
- const rowSpan = node.rowSpan > 1 ? `rowspan="${node.rowSpan}"` : '';
103
+ const colSpan = node.colSpan && node.colSpan > 1 ? `colspan="${node.colSpan}"` : '';
104
+ const rowSpan = node.rowSpan && node.rowSpan > 1 ? `rowspan="${node.rowSpan}"` : '';
105
105
  return `<${tagName} class="lexical-table-cell ${headerStateClass}" style="border: 1px solid #ccc; padding: 8px; ${backgroundColor}" ${colSpan} ${rowSpan}>${childrenText}</${tagName}>`;
106
106
  },
107
107
  nodeTypes: [TableCellNode.getType()]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["TableCellNode","TableNode","TableRowNode","sanitizeFields","createServerFeature","convertLexicalNodesToHTML","createNode","fields","name","type","defaultValue","required","EXPERIMENTAL_TableFeature","feature","config","isRoot","parentIsLocalized","validRelationships","collections","map","c","slug","sanitizedFields","requireFieldLevelRichTextEditor","ClientFeature","generateSchemaMap","schemaMap","Map","set","nodes","converters","html","converter","currentDepth","depth","draft","node","overrideAccess","parent","req","showHiddenFields","childrenText","lexicalNodes","children","nodeTypes","getType","tagName","headerState","headerStateClass","backgroundColor","colSpan","rowSpan","key"],"sources":["../../../../src/features/experimental_table/server/index.ts"],"sourcesContent":["import type {\n SerializedTableCellNode as _SerializedTableCellNode,\n SerializedTableNode as _SerializedTableNode,\n SerializedTableRowNode as _SerializedTableRowNode,\n} from '@lexical/table'\nimport type { Spread } from 'lexical'\nimport type { Config, Field } from 'payload'\n\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\nimport { sanitizeFields } from 'payload'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { convertLexicalNodesToHTML } from '../../converters/html/converter/index.js'\nimport { createNode } from '../../typeUtilities.js'\n\nconst fields: Field[] = [\n {\n name: 'rows',\n type: 'number',\n defaultValue: 5,\n required: true,\n },\n {\n name: 'columns',\n type: 'number',\n defaultValue: 5,\n required: true,\n },\n]\n\nexport type SerializedTableCellNode = Spread<\n {\n type: 'tablecell'\n },\n _SerializedTableCellNode\n>\n\nexport type SerializedTableNode = Spread<\n {\n type: 'table'\n },\n _SerializedTableNode\n>\n\nexport type SerializedTableRowNode = Spread<\n {\n type: 'tablerow'\n },\n _SerializedTableRowNode\n>\nexport const EXPERIMENTAL_TableFeature = createServerFeature({\n feature: async ({ config, isRoot, parentIsLocalized }) => {\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n const sanitizedFields = await sanitizeFields({\n config: config as unknown as Config,\n fields,\n parentIsLocalized,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#TableFeatureClient',\n generateSchemaMap: () => {\n const schemaMap = new Map<string, Field[]>()\n\n schemaMap.set('fields', sanitizedFields)\n\n return schemaMap\n },\n nodes: [\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n return `<table class=\"lexical-table\" style=\"border-collapse: collapse;\">${childrenText}</table>`\n },\n nodeTypes: [TableNode.getType()],\n },\n },\n node: TableNode,\n }),\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n\n const tagName = node.headerState > 0 ? 'th' : 'td'\n const headerStateClass = `lexical-table-cell-header-${node.headerState}`\n const backgroundColor = node.backgroundColor\n ? `background-color: ${node.backgroundColor};`\n : ''\n const colSpan = node.colSpan > 1 ? `colspan=\"${node.colSpan}\"` : ''\n const rowSpan = node.rowSpan > 1 ? `rowspan=\"${node.rowSpan}\"` : ''\n\n return `<${tagName} class=\"lexical-table-cell ${headerStateClass}\" style=\"border: 1px solid #ccc; padding: 8px; ${backgroundColor}\" ${colSpan} ${rowSpan}>${childrenText}</${tagName}>`\n },\n nodeTypes: [TableCellNode.getType()],\n },\n },\n node: TableCellNode,\n }),\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n return `<tr class=\"lexical-table-row\">${childrenText}</tr>`\n },\n nodeTypes: [TableRowNode.getType()],\n },\n },\n node: TableRowNode,\n }),\n ],\n }\n },\n key: 'experimental_table',\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["TableCellNode","TableNode","TableRowNode","sanitizeFields","createServerFeature","convertLexicalNodesToHTML","createNode","fields","name","type","defaultValue","required","EXPERIMENTAL_TableFeature","feature","config","isRoot","parentIsLocalized","validRelationships","collections","map","c","slug","sanitizedFields","requireFieldLevelRichTextEditor","ClientFeature","generateSchemaMap","schemaMap","Map","set","nodes","converters","html","converter","currentDepth","depth","draft","node","overrideAccess","parent","req","showHiddenFields","childrenText","lexicalNodes","children","nodeTypes","getType","tagName","headerState","headerStateClass","backgroundColor","colSpan","rowSpan","key"],"sources":["../../../../src/features/experimental_table/server/index.ts"],"sourcesContent":["import type {\n SerializedTableCellNode as _SerializedTableCellNode,\n SerializedTableNode as _SerializedTableNode,\n SerializedTableRowNode as _SerializedTableRowNode,\n} from '@lexical/table'\nimport type { Spread } from 'lexical'\nimport type { Config, Field } from 'payload'\n\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\nimport { sanitizeFields } from 'payload'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { convertLexicalNodesToHTML } from '../../converters/html/converter/index.js'\nimport { createNode } from '../../typeUtilities.js'\n\nconst fields: Field[] = [\n {\n name: 'rows',\n type: 'number',\n defaultValue: 5,\n required: true,\n },\n {\n name: 'columns',\n type: 'number',\n defaultValue: 5,\n required: true,\n },\n]\n\nexport type SerializedTableCellNode = Spread<\n {\n type: 'tablecell'\n },\n _SerializedTableCellNode\n>\n\nexport type SerializedTableNode = Spread<\n {\n type: 'table'\n },\n _SerializedTableNode\n>\n\nexport type SerializedTableRowNode = Spread<\n {\n type: 'tablerow'\n },\n _SerializedTableRowNode\n>\nexport const EXPERIMENTAL_TableFeature = createServerFeature({\n feature: async ({ config, isRoot, parentIsLocalized }) => {\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n const sanitizedFields = await sanitizeFields({\n config: config as unknown as Config,\n fields,\n parentIsLocalized,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#TableFeatureClient',\n generateSchemaMap: () => {\n const schemaMap = new Map<string, Field[]>()\n\n schemaMap.set('fields', sanitizedFields)\n\n return schemaMap\n },\n nodes: [\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n return `<table class=\"lexical-table\" style=\"border-collapse: collapse;\">${childrenText}</table>`\n },\n nodeTypes: [TableNode.getType()],\n },\n },\n node: TableNode,\n }),\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n\n const tagName = node.headerState > 0 ? 'th' : 'td'\n const headerStateClass = `lexical-table-cell-header-${node.headerState}`\n const backgroundColor = node.backgroundColor\n ? `background-color: ${node.backgroundColor};`\n : ''\n const colSpan = node.colSpan && node.colSpan > 1 ? `colspan=\"${node.colSpan}\"` : ''\n const rowSpan = node.rowSpan && node.rowSpan > 1 ? `rowspan=\"${node.rowSpan}\"` : ''\n\n return `<${tagName} class=\"lexical-table-cell ${headerStateClass}\" style=\"border: 1px solid #ccc; padding: 8px; ${backgroundColor}\" ${colSpan} ${rowSpan}>${childrenText}</${tagName}>`\n },\n nodeTypes: [TableCellNode.getType()],\n },\n },\n node: TableCellNode,\n }),\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n return `<tr class=\"lexical-table-row\">${childrenText}</tr>`\n },\n nodeTypes: [TableRowNode.getType()],\n },\n },\n node: TableRowNode,\n }),\n ],\n }\n },\n key: 'experimental_table',\n})\n"],"mappings":"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","ignoreList":[]}
@@ -6,5 +6,5 @@ import type { NodeKey } from 'lexical';
6
6
  */
7
7
  export declare function HorizontalRuleComponent({ nodeKey }: {
8
8
  nodeKey: NodeKey;
9
- }): any;
9
+ }): null;
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/horizontalRule/client/component/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAoBtC;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,OAuDxE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/horizontalRule/client/component/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAmBtC;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,QA0DxE"}
@@ -4,7 +4,7 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
5
5
  import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js';
6
6
  import { addClassNamesToElement, mergeRegister, removeClassNamesFromElement } from '@lexical/utils';
7
- import { $getNodeByKey, $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND } from 'lexical';
7
+ import { $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND } from 'lexical';
8
8
  import { useCallback, useEffect } from 'react';
9
9
  import { $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js';
10
10
  const isSelectedClassName = 'selected';
@@ -21,20 +21,23 @@ export function HorizontalRuleComponent(t0) {
21
21
  const [editor] = useLexicalComposerContext();
22
22
  const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
23
23
  let t1;
24
- if ($[0] !== isSelected || $[1] !== nodeKey) {
24
+ if ($[0] !== isSelected || $[1] !== editor) {
25
25
  t1 = event => {
26
- if (isSelected && $isNodeSelection($getSelection())) {
26
+ const deleteSelection = $getSelection();
27
+ if (isSelected && $isNodeSelection(deleteSelection)) {
27
28
  event.preventDefault();
28
- const node = $getNodeByKey(nodeKey);
29
- if ($isHorizontalRuleNode(node)) {
30
- node.remove();
31
- return true;
32
- }
29
+ editor.update(() => {
30
+ deleteSelection.getNodes().forEach(node => {
31
+ if ($isHorizontalRuleNode(node)) {
32
+ node.remove();
33
+ }
34
+ });
35
+ });
33
36
  }
34
37
  return false;
35
38
  };
36
39
  $[0] = isSelected;
37
- $[1] = nodeKey;
40
+ $[1] = editor;
38
41
  $[2] = t1;
39
42
  } else {
40
43
  t1 = $[2];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalNodeSelection","addClassNamesToElement","mergeRegister","removeClassNamesFromElement","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","useCallback","useEffect","$isHorizontalRuleNode","isSelectedClassName","HorizontalRuleComponent","t0","$","nodeKey","editor","isSelected","setSelected","clearSelection","t1","event","preventDefault","node","remove","$onDelete","t2","t3","registerCommand","event_0","hrElem","getElementByKey","target","shiftKey","t4","t5","hrElem_0"],"sources":["../../../../../src/features/horizontalRule/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport type { NodeKey } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { addClassNamesToElement, mergeRegister, removeClassNamesFromElement } from '@lexical/utils'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect } from 'react'\n\nimport { $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\n\nconst isSelectedClassName = 'selected'\n\n/**\n * React component rendered in the lexical editor, WITHIN the hr element created by createDOM of the HorizontalRuleNode.\n *\n * @param nodeKey every node has a unique key (this key is not saved to the database and thus may differ between sessions). It's useful for working with the CURRENT lexical editor state\n */\nexport function HorizontalRuleComponent({ nodeKey }: { nodeKey: NodeKey }) {\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n event.preventDefault()\n const node = $getNodeByKey(nodeKey)\n if ($isHorizontalRuleNode(node)) {\n node.remove()\n return true\n }\n }\n return false\n },\n [isSelected, nodeKey],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event: MouseEvent) => {\n const hrElem = editor.getElementByKey(nodeKey)\n\n if (event.target === hrElem) {\n if (!event.shiftKey) {\n clearSelection()\n }\n setSelected(!isSelected)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected])\n\n useEffect(() => {\n const hrElem = editor.getElementByKey(nodeKey)\n if (hrElem !== null) {\n if (isSelected) {\n addClassNamesToElement(hrElem, isSelectedClassName)\n } else {\n removeClassNamesFromElement(hrElem, isSelectedClassName)\n }\n }\n }, [editor, isSelected, nodeKey])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalNodeSelection","addClassNamesToElement","mergeRegister","removeClassNamesFromElement","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","useCallback","useEffect","$isHorizontalRuleNode","isSelectedClassName","HorizontalRuleComponent","t0","$","nodeKey","editor","isSelected","setSelected","clearSelection","t1","event","deleteSelection","preventDefault","update","getNodes","forEach","node","remove","$onDelete","t2","t3","registerCommand","event_0","hrElem","getElementByKey","target","shiftKey","t4","t5","hrElem_0"],"sources":["../../../../../src/features/horizontalRule/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport type { NodeKey } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { addClassNamesToElement, mergeRegister, removeClassNamesFromElement } from '@lexical/utils'\nimport {\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect } from 'react'\n\nimport { $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\n\nconst isSelectedClassName = 'selected'\n\n/**\n * React component rendered in the lexical editor, WITHIN the hr element created by createDOM of the HorizontalRuleNode.\n *\n * @param nodeKey every node has a unique key (this key is not saved to the database and thus may differ between sessions). It's useful for working with the CURRENT lexical editor state\n */\nexport function HorizontalRuleComponent({ nodeKey }: { nodeKey: NodeKey }) {\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isHorizontalRuleNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event: MouseEvent) => {\n const hrElem = editor.getElementByKey(nodeKey)\n\n if (event.target === hrElem) {\n if (!event.shiftKey) {\n clearSelection()\n }\n setSelected(!isSelected)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected])\n\n useEffect(() => {\n const hrElem = editor.getElementByKey(nodeKey)\n if (hrElem !== null) {\n if (isSelected) {\n addClassNamesToElement(hrElem, isSelectedClassName)\n } else {\n removeClassNamesFromElement(hrElem, isSelectedClassName)\n }\n }\n }, [editor, isSelected, nodeKey])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export declare const INSERT_HORIZONTAL_RULE_COMMAND: LexicalCommand<void>;
16
16
  *
17
17
  * If we used DecoratorBlockNode instead, we would only need a decorate method
18
18
  */
19
- export declare class HorizontalRuleServerNode extends DecoratorNode<React.ReactElement> {
19
+ export declare class HorizontalRuleServerNode extends DecoratorNode<null | React.ReactElement> {
20
20
  static clone(node: HorizontalRuleServerNode): HorizontalRuleServerNode;
21
21
  static getType(): string;
22
22
  /**
@@ -33,7 +33,7 @@ export declare class HorizontalRuleServerNode extends DecoratorNode<React.ReactE
33
33
  * Determines how the hr element is rendered in the lexical editor. This is only the "initial" / "outer" HTML element.
34
34
  */
35
35
  createDOM(config: EditorConfig): HTMLElement;
36
- decorate(): any;
36
+ decorate(): null | React.ReactElement;
37
37
  /**
38
38
  * Opposite of importDOM, this function defines what happens when you copy an hr element from the lexical editor and paste it into another page.
39
39
  *
@@ -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,EACrB,MAAM,EACP,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,OAAO,EAAwC,aAAa,EAAE,MAAM,SAAS,CAAA;AAE7E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAC/C;IACE,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,IAAI,EAAE,gBAAgB,CAAA;CACvB,EACD,qBAAqB,CACtB,CAAA;AAED,eAAO,MAAM,8BAA8B,EAAE,cAAc,CAAC,IAAI,CAE/D,CAAA;AAED;;;;;;GAMG;AACH,qBAAa,wBAAyB,SAAQ,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;IAC7E,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,wBAAwB,GAAG,wBAAwB;IAItE,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB;;;;OAIG;IACH,MAAM,CAAC,SAAS,IAAI,gBAAgB,GAAG,IAAI;IAS3C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,4BAA4B,GAAG,wBAAwB;IAIzF;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW;IAM5C,QAAQ;IAIR;;;;OAIG;IACH,SAAS,IAAI,eAAe;IAG5B;;OAEG;IACH,UAAU,IAAI,qBAAqB;IAOnC,cAAc,IAAI,MAAM;IAIxB,QAAQ,IAAI,KAAK;IAIjB,SAAS,IAAI,OAAO;CAGrB;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,EACrB,MAAM,EACP,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,OAAO,EAAwC,aAAa,EAAE,MAAM,SAAS,CAAA;AAE7E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAC/C;IACE,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,IAAI,EAAE,gBAAgB,CAAA;CACvB,EACD,qBAAqB,CACtB,CAAA;AAED,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,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,wBAAwB,GAAG,wBAAwB;IAItE,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB;;;;OAIG;IACH,MAAM,CAAC,SAAS,IAAI,gBAAgB,GAAG,IAAI;IAS3C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,4BAA4B,GAAG,wBAAwB;IAIzF;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW;IAM5C,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY;IAIrC;;;;OAIG;IACH,SAAS,IAAI,eAAe;IAG5B;;OAEG;IACH,UAAU,IAAI,qBAAqB;IAOnC,cAAc,IAAI,MAAM;IAIxB,QAAQ,IAAI,KAAK;IAIjB,SAAS,IAAI,OAAO;CAGrB;AAMD,wBAAgB,+BAA+B,IAAI,wBAAwB,CAE1E;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,wBAAwB,CAElC"}