@payloadcms/richtext-lexical 3.2.3-canary.673b4b5 → 3.3.0

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 (253) hide show
  1. package/dist/exports/client/{Field-JP7H7AZE.js → Field-KHGUSLMB.js} +2 -2
  2. package/dist/exports/client/{Field-JP7H7AZE.js.map → Field-KHGUSLMB.js.map} +2 -2
  3. package/dist/exports/client/{RelationshipComponent-XOQBVKA3.js → RelationshipComponent-F77EQHRG.js} +2 -2
  4. package/dist/exports/client/bundled.css +1 -1
  5. package/dist/exports/client/{chunk-H6YVKFZN.js → chunk-4J2ONJMB.js} +2 -2
  6. package/dist/exports/client/chunk-4J2ONJMB.js.map +7 -0
  7. package/dist/exports/client/{chunk-XCEM47RI.js → chunk-AXXPUMFU.js} +2 -2
  8. package/dist/exports/client/{chunk-5PBXL4HT.js → chunk-F26IQ5RE.js} +2 -2
  9. package/dist/exports/client/{chunk-5PBXL4HT.js.map → chunk-F26IQ5RE.js.map} +1 -1
  10. package/dist/exports/client/chunk-H3D3IU3G.js +2 -0
  11. package/dist/exports/client/{chunk-DOK5S7LE.js.map → chunk-H3D3IU3G.js.map} +2 -2
  12. package/dist/exports/client/{chunk-2CYU43GM.js → chunk-INBEEENE.js} +2 -2
  13. package/dist/exports/client/{chunk-2CYU43GM.js.map → chunk-INBEEENE.js.map} +1 -1
  14. package/dist/exports/client/{chunk-ZTAS32RX.js → chunk-PGMIO4IN.js} +2 -2
  15. package/dist/exports/client/{chunk-2L2Z4JHF.js → chunk-XOABLBHB.js} +2 -2
  16. package/dist/exports/client/{chunk-2L2Z4JHF.js.map → chunk-XOABLBHB.js.map} +1 -1
  17. package/dist/exports/client/{component-D6PKVJ2K.js → component-NSAU5Y76.js} +2 -2
  18. package/dist/exports/client/component-SX36AJXS.js +2 -0
  19. package/dist/exports/client/{component-ANB7VZLA.js.map → component-SX36AJXS.js.map} +2 -2
  20. package/dist/exports/client/componentInline-B5YNOX32.js +2 -0
  21. package/dist/exports/client/index.d.ts +0 -4
  22. package/dist/exports/client/index.d.ts.map +1 -1
  23. package/dist/exports/client/index.js +17 -17
  24. package/dist/exports/client/index.js.map +4 -4
  25. package/dist/features/align/server/i18n.d.ts.map +1 -1
  26. package/dist/features/align/server/i18n.js +0 -6
  27. package/dist/features/align/server/i18n.js.map +1 -1
  28. package/dist/features/blockquote/server/i18n.d.ts.map +1 -1
  29. package/dist/features/blockquote/server/i18n.js +0 -3
  30. package/dist/features/blockquote/server/i18n.js.map +1 -1
  31. package/dist/features/blocks/client/component/BlockContent.js +8 -8
  32. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  33. package/dist/features/blocks/client/component/components/BlockCollapsible.js +5 -5
  34. package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
  35. package/dist/features/blocks/client/component/index.d.ts +1 -1
  36. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  37. package/dist/features/blocks/client/component/index.js.map +1 -1
  38. package/dist/features/blocks/client/componentInline/index.d.ts +1 -1
  39. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  40. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  41. package/dist/features/blocks/client/index.d.ts.map +1 -1
  42. package/dist/features/blocks/client/index.js +4 -65
  43. package/dist/features/blocks/client/index.js.map +1 -1
  44. package/dist/features/blocks/client/nodes/BlocksNode.d.ts +2 -2
  45. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  46. package/dist/features/blocks/client/nodes/BlocksNode.js +1 -1
  47. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  48. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts +2 -2
  49. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
  50. package/dist/features/blocks/client/nodes/InlineBlocksNode.js +1 -1
  51. package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
  52. package/dist/features/blocks/client/plugin/commands.d.ts +1 -12
  53. package/dist/features/blocks/client/plugin/commands.d.ts.map +1 -1
  54. package/dist/features/blocks/client/plugin/commands.js +0 -2
  55. package/dist/features/blocks/client/plugin/commands.js.map +1 -1
  56. package/dist/features/blocks/client/plugin/index.d.ts +1 -1
  57. package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
  58. package/dist/features/blocks/client/plugin/index.js +41 -33
  59. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  60. package/dist/features/blocks/server/graphQLPopulationPromise.d.ts +3 -4
  61. package/dist/features/blocks/server/graphQLPopulationPromise.d.ts.map +1 -1
  62. package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
  63. package/dist/features/blocks/server/i18n.d.ts.map +1 -1
  64. package/dist/features/blocks/server/i18n.js +33 -144
  65. package/dist/features/blocks/server/i18n.js.map +1 -1
  66. package/dist/features/blocks/server/index.d.ts +1 -5
  67. package/dist/features/blocks/server/index.d.ts.map +1 -1
  68. package/dist/features/blocks/server/index.js +2 -82
  69. package/dist/features/blocks/server/index.js.map +1 -1
  70. package/dist/features/blocks/server/markdownTransformer.js +2 -2
  71. package/dist/features/blocks/server/markdownTransformer.js.map +1 -1
  72. package/dist/features/blocks/server/nodes/{BlockNode.d.ts → BlocksNode.d.ts} +2 -2
  73. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -0
  74. package/dist/features/blocks/server/nodes/{BlockNode.js → BlocksNode.js} +1 -1
  75. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -0
  76. package/dist/features/blocks/server/nodes/{InlineBlockNode.d.ts → InlineBlocksNode.d.ts} +1 -1
  77. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -0
  78. package/dist/features/blocks/server/nodes/{InlineBlockNode.js → InlineBlocksNode.js} +1 -1
  79. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -0
  80. package/dist/features/blocks/server/validate.d.ts +3 -4
  81. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  82. package/dist/features/blocks/server/validate.js.map +1 -1
  83. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +3 -3
  84. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  85. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +3 -3
  86. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  87. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +6 -6
  88. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  89. package/dist/features/experimental_table/client/utils/useDebounce.js +3 -3
  90. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  91. package/dist/features/heading/server/i18n.d.ts.map +1 -1
  92. package/dist/features/heading/server/i18n.js +0 -3
  93. package/dist/features/heading/server/i18n.js.map +1 -1
  94. package/dist/features/horizontalRule/client/component/index.js +19 -18
  95. package/dist/features/horizontalRule/client/component/index.js.map +1 -1
  96. package/dist/features/horizontalRule/client/plugin/index.js +13 -12
  97. package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
  98. package/dist/features/horizontalRule/server/i18n.d.ts.map +1 -1
  99. package/dist/features/horizontalRule/server/i18n.js +0 -3
  100. package/dist/features/horizontalRule/server/i18n.js.map +1 -1
  101. package/dist/features/indent/client/plugins/index.js +3 -3
  102. package/dist/features/indent/client/plugins/index.js.map +1 -1
  103. package/dist/features/indent/server/i18n.d.ts.map +1 -1
  104. package/dist/features/indent/server/i18n.js +0 -4
  105. package/dist/features/indent/server/i18n.js.map +1 -1
  106. package/dist/features/link/client/plugins/autoLink/index.js +3 -3
  107. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  108. package/dist/features/link/client/plugins/link/index.js +9 -5
  109. package/dist/features/link/client/plugins/link/index.js.map +1 -1
  110. package/dist/features/link/server/i18n.d.ts.map +1 -1
  111. package/dist/features/link/server/i18n.js +0 -4
  112. package/dist/features/link/server/i18n.js.map +1 -1
  113. package/dist/features/lists/checklist/server/i18n.d.ts.map +1 -1
  114. package/dist/features/lists/checklist/server/i18n.js +0 -3
  115. package/dist/features/lists/checklist/server/i18n.js.map +1 -1
  116. package/dist/features/lists/orderedList/server/i18n.d.ts.map +1 -1
  117. package/dist/features/lists/orderedList/server/i18n.js +0 -3
  118. package/dist/features/lists/orderedList/server/i18n.js.map +1 -1
  119. package/dist/features/lists/unorderedList/server/i18n.d.ts.map +1 -1
  120. package/dist/features/lists/unorderedList/server/i18n.js +0 -3
  121. package/dist/features/lists/unorderedList/server/i18n.js.map +1 -1
  122. package/dist/features/paragraph/server/i18n.d.ts.map +1 -1
  123. package/dist/features/paragraph/server/i18n.js +0 -4
  124. package/dist/features/paragraph/server/i18n.js.map +1 -1
  125. package/dist/features/relationship/client/drawer/index.js +13 -13
  126. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  127. package/dist/features/relationship/client/plugins/index.js +23 -19
  128. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  129. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +19 -18
  130. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
  131. package/dist/features/relationship/server/i18n.d.ts.map +1 -1
  132. package/dist/features/relationship/server/i18n.js +0 -3
  133. package/dist/features/relationship/server/i18n.js.map +1 -1
  134. package/dist/features/toolbars/fixed/client/Toolbar/index.js +39 -31
  135. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  136. package/dist/features/toolbars/inline/client/Toolbar/index.js +31 -23
  137. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  138. package/dist/features/toolbars/shared/ToolbarButton/index.js +27 -26
  139. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  140. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +36 -36
  141. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  142. package/dist/features/typesClient.d.ts +2 -3
  143. package/dist/features/typesClient.d.ts.map +1 -1
  144. package/dist/features/typesClient.js.map +1 -1
  145. package/dist/features/typesServer.d.ts +1 -8
  146. package/dist/features/typesServer.d.ts.map +1 -1
  147. package/dist/features/typesServer.js.map +1 -1
  148. package/dist/features/upload/client/drawer/index.js +3 -3
  149. package/dist/features/upload/client/drawer/index.js.map +1 -1
  150. package/dist/features/upload/client/plugin/index.js +6 -3
  151. package/dist/features/upload/client/plugin/index.js.map +1 -1
  152. package/dist/features/upload/server/i18n.d.ts.map +1 -1
  153. package/dist/features/upload/server/i18n.js +0 -3
  154. package/dist/features/upload/server/i18n.js.map +1 -1
  155. package/dist/field/bundled.css +1 -1
  156. package/dist/field/index.d.ts.map +1 -1
  157. package/dist/field/index.js +17 -20
  158. package/dist/field/index.js.map +1 -1
  159. package/dist/field/rscEntry.js +0 -2
  160. package/dist/field/rscEntry.js.map +1 -1
  161. package/dist/i18n.d.ts.map +1 -1
  162. package/dist/i18n.js +0 -6
  163. package/dist/i18n.js.map +1 -1
  164. package/dist/index.d.ts +2 -3
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js.map +1 -1
  167. package/dist/lexical/LexicalEditor.js +15 -15
  168. package/dist/lexical/LexicalEditor.js.map +1 -1
  169. package/dist/lexical/config/client/loader.d.ts +1 -2
  170. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  171. package/dist/lexical/config/client/loader.js +0 -2
  172. package/dist/lexical/config/client/loader.js.map +1 -1
  173. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +17 -17
  174. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  175. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +17 -17
  176. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  177. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +4 -4
  178. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  179. package/dist/lexical/plugins/TextPlugin/index.js +3 -3
  180. package/dist/lexical/plugins/TextPlugin/index.js.map +1 -1
  181. package/dist/lexical/ui/ContentEditable.js +3 -3
  182. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  183. package/dist/nodeTypes.d.ts +2 -2
  184. package/dist/nodeTypes.d.ts.map +1 -1
  185. package/dist/nodeTypes.js.map +1 -1
  186. package/dist/types.d.ts +0 -1
  187. package/dist/types.d.ts.map +1 -1
  188. package/dist/types.js.map +1 -1
  189. package/dist/utilities/createClientFeature.d.ts +0 -1
  190. package/dist/utilities/createClientFeature.d.ts.map +1 -1
  191. package/dist/utilities/createClientFeature.js +0 -2
  192. package/dist/utilities/createClientFeature.js.map +1 -1
  193. package/dist/utilities/fieldsDrawer/Drawer.js +11 -11
  194. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  195. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +10 -10
  196. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
  197. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +14 -14
  198. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
  199. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +11 -11
  200. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
  201. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  202. package/dist/utilities/generateImportMap.js +2 -5
  203. package/dist/utilities/generateImportMap.js.map +1 -1
  204. package/dist/utilities/initLexicalFeatures.d.ts +0 -1
  205. package/dist/utilities/initLexicalFeatures.d.ts.map +1 -1
  206. package/dist/utilities/initLexicalFeatures.js +1 -18
  207. package/dist/utilities/initLexicalFeatures.js.map +1 -1
  208. package/package.json +15 -15
  209. package/dist/exports/client/chunk-DOK5S7LE.js +0 -2
  210. package/dist/exports/client/chunk-H6YVKFZN.js.map +0 -7
  211. package/dist/exports/client/component-ANB7VZLA.js +0 -2
  212. package/dist/exports/client/componentInline-WMS3WMBA.js +0 -2
  213. package/dist/features/blocks/WrapperBlockNode.d.ts +0 -1151
  214. package/dist/features/blocks/WrapperBlockNode.d.ts.map +0 -1
  215. package/dist/features/blocks/WrapperBlockNode.js +0 -113
  216. package/dist/features/blocks/WrapperBlockNode.js.map +0 -1
  217. package/dist/features/blocks/client/plugin/wrapperBlocks/BlockEditor/index.d.ts +0 -23
  218. package/dist/features/blocks/client/plugin/wrapperBlocks/BlockEditor/index.d.ts.map +0 -1
  219. package/dist/features/blocks/client/plugin/wrapperBlocks/BlockEditor/index.js +0 -330
  220. package/dist/features/blocks/client/plugin/wrapperBlocks/BlockEditor/index.js.map +0 -1
  221. package/dist/features/blocks/client/plugin/wrapperBlocks/BlockEditor/useLexicalFormState.d.ts +0 -22
  222. package/dist/features/blocks/client/plugin/wrapperBlocks/BlockEditor/useLexicalFormState.d.ts.map +0 -1
  223. package/dist/features/blocks/client/plugin/wrapperBlocks/BlockEditor/useLexicalFormState.js +0 -169
  224. package/dist/features/blocks/client/plugin/wrapperBlocks/BlockEditor/useLexicalFormState.js.map +0 -1
  225. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockContainer.d.ts +0 -5
  226. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockContainer.d.ts.map +0 -1
  227. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockContainer.js +0 -28
  228. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockContainer.js.map +0 -1
  229. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockEditButton.d.ts +0 -3
  230. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockEditButton.d.ts.map +0 -1
  231. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockEditButton.js +0 -22
  232. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockEditButton.js.map +0 -1
  233. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockLabel.d.ts +0 -3
  234. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockLabel.d.ts.map +0 -1
  235. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockLabel.js +0 -22
  236. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockLabel.js.map +0 -1
  237. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockRemoveButton.d.ts +0 -3
  238. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockRemoveButton.d.ts.map +0 -1
  239. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockRemoveButton.js +0 -22
  240. package/dist/features/blocks/client/plugin/wrapperBlocks/components/WrapperBlockRemoveButton.js.map +0 -1
  241. package/dist/features/blocks/client/plugin/wrapperBlocks/index.d.ts +0 -9
  242. package/dist/features/blocks/client/plugin/wrapperBlocks/index.d.ts.map +0 -1
  243. package/dist/features/blocks/client/plugin/wrapperBlocks/index.js +0 -111
  244. package/dist/features/blocks/client/plugin/wrapperBlocks/index.js.map +0 -1
  245. package/dist/features/blocks/server/nodes/BlockNode.d.ts.map +0 -1
  246. package/dist/features/blocks/server/nodes/BlockNode.js.map +0 -1
  247. package/dist/features/blocks/server/nodes/InlineBlockNode.d.ts.map +0 -1
  248. package/dist/features/blocks/server/nodes/InlineBlockNode.js.map +0 -1
  249. /package/dist/exports/client/{RelationshipComponent-XOQBVKA3.js.map → RelationshipComponent-F77EQHRG.js.map} +0 -0
  250. /package/dist/exports/client/{chunk-XCEM47RI.js.map → chunk-AXXPUMFU.js.map} +0 -0
  251. /package/dist/exports/client/{chunk-ZTAS32RX.js.map → chunk-PGMIO4IN.js.map} +0 -0
  252. /package/dist/exports/client/{component-D6PKVJ2K.js.map → component-NSAU5Y76.js.map} +0 -0
  253. /package/dist/exports/client/{componentInline-WMS3WMBA.js.map → componentInline-B5YNOX32.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$deleteTableColumn__EXPERIMENTAL","$deleteTableRow__EXPERIMENTAL","$getNodeTriplet","$getTableCellNodeFromLexicalNode","$getTableColumnIndexFromTableCellNode","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$insertTableColumn__EXPERIMENTAL","$insertTableRow__EXPERIMENTAL","$isTableCellNode","$isTableRowNode","$isTableSelection","$unmergeCell","getTableObserverFromTableElement","TableCellHeaderStates","TableCellNode","useScrollInfo","$createParagraphNode","$getRoot","$getSelection","$isElementNode","$isParagraphNode","$isRangeSelection","$isTextNode","React","useCallback","useEffect","useRef","useState","createPortal","MeatballsIcon","computeSelectionCount","selection","selectionShape","getShape","columns","toX","fromX","rows","toY","fromY","$canUnmerge","isCollapsed","anchor","is","focus","cell","__colSpan","__rowSpan","$cellContainsEmptyParagraph","getChildrenSize","firstChild","getFirstChildOrThrow","isEmpty","$selectLastDescendant","node","lastDescendant","getLastDescendant","select","selectEnd","selectNext","TableActionMenu","cellMerge","contextRef","onClose","setIsMenuOpen","tableCellNode","_tableCellNode","editor","dropDownRef","updateTableCellNode","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","y","registerMutationListener","nodeMutations","nodeUpdated","get","getKey","getEditorState","read","getLatest","skipInitialization","currentSelectionCounts","menuButtonElement","current","dropDownElement","rootElement","getRootElement","rootEleRect","getBoundingClientRect","menuButtonRect","style","opacity","dropDownElementRect","margin","leftPosition","right","width","window","innerWidth","position","left","pageXOffset","topPosition","top","height","innerHeight","bottom","pageYOffset","handleClickOutside","event","contains","target","addEventListener","removeEventListener","clearTableSelection","update","isAttached","tableNode","tableElement","getElementByKey","Error","tableObserver","clearHighlight","markDirty","rootNode","selectStart","mergeTableCellsAtSelection","nodes","getNodes","firstCell","i","length","setColSpan","setRowSpan","getFirstChild","remove","append","getChildren","unmergeTableCellsAtSelection","insertTableRowAtSelection","shouldInsertAfter","insertTableColumnAtSelection","deleteTableRowAtSelection","deleteTableAtSelection","deleteTableColumnAtSelection","toggleTableRowIsHeader","tableRowIndex","tableRows","tableRow","newStyle","getHeaderStyles","ROW","forEach","tableCell","setHeaderStyles","toggleTableColumnIsHeader","tableColumnIndex","maxRowsLength","Math","max","map","row","COLUMN","r","tableCells","toggleRowStriping","setRowStriping","getRowStriping","mergeCellButton","_jsx","className","onClick","type","_jsxs","e","stopPropagation","ref","Fragment","__headerState","document","body","TableCellActionMenuContainer","anchorElem","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","nativeSelection","getSelection","activeElement","anchorNode","tableCellNodeFromSelection","getNode","tableCellParentNodeDOM","registerUpdateListener","menuButtonDOM","tableCellNodeDOM","tableCellRect","menuRect","anchorRect","transform","prevTableCellDOM","TableActionMenuPlugin","t0","$","isEditable","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n HTMLTableElementWithWithTableSelectionState,\n TableRowNode,\n TableSelection,\n} from '@lexical/table'\nimport type { ElementNode } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $deleteTableColumn__EXPERIMENTAL,\n $deleteTableRow__EXPERIMENTAL,\n $getNodeTriplet,\n $getTableCellNodeFromLexicalNode,\n $getTableColumnIndexFromTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableRowNode,\n $isTableSelection,\n $unmergeCell,\n getTableObserverFromTableElement,\n TableCellHeaderStates,\n TableCellNode,\n} from '@lexical/table'\nimport { useScrollInfo } from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getRoot,\n $getSelection,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n} from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\n\nimport { MeatballsIcon } from '../../../../../lexical/ui/icons/Meatballs/index.js'\nimport './index.scss'\n\nfunction computeSelectionCount(selection: TableSelection): {\n columns: number\n rows: number\n} {\n const selectionShape = selection.getShape()\n return {\n columns: selectionShape.toX - selectionShape.fromX + 1,\n rows: selectionShape.toY - selectionShape.fromY + 1,\n }\n}\n\nfunction $canUnmerge(): boolean {\n const selection = $getSelection()\n if (\n ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n (!$isRangeSelection(selection) && !$isTableSelection(selection))\n ) {\n return false\n }\n const [cell] = $getNodeTriplet(selection.anchor)\n return cell.__colSpan > 1 || cell.__rowSpan > 1\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n if (cell.getChildrenSize() !== 1) {\n return false\n }\n const firstChild = cell.getFirstChildOrThrow()\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false\n }\n return true\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n const lastDescendant = node.getLastDescendant()\n if ($isTextNode(lastDescendant)) {\n lastDescendant.select()\n } else if ($isElementNode(lastDescendant)) {\n lastDescendant.selectEnd()\n } else if (lastDescendant !== null) {\n lastDescendant.selectNext()\n }\n}\n\ntype TableCellActionMenuProps = Readonly<{\n cellMerge: boolean\n contextRef: { current: HTMLElement | null }\n onClose: () => void\n setIsMenuOpen: (isOpen: boolean) => void\n tableCellNode: TableCellNode\n}>\n\nfunction TableActionMenu({\n cellMerge,\n contextRef,\n onClose,\n setIsMenuOpen,\n tableCellNode: _tableCellNode,\n}: TableCellActionMenuProps) {\n const [editor] = useLexicalComposerContext()\n const dropDownRef = useRef<HTMLDivElement | null>(null)\n const [tableCellNode, updateTableCellNode] = useState(_tableCellNode)\n const [selectionCounts, updateSelectionCounts] = useState({\n columns: 1,\n rows: 1,\n })\n const [canMergeCells, setCanMergeCells] = useState(false)\n const [canUnmergeCell, setCanUnmergeCell] = useState(false)\n const { y } = useScrollInfo()\n\n useEffect(() => {\n return editor.registerMutationListener(\n TableCellNode,\n (nodeMutations) => {\n const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated'\n\n if (nodeUpdated) {\n editor.getEditorState().read(() => {\n updateTableCellNode(tableCellNode.getLatest())\n })\n }\n },\n { skipInitialization: true },\n )\n }, [editor, tableCellNode])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n // Merge cells\n if ($isTableSelection(selection)) {\n const currentSelectionCounts = computeSelectionCount(selection)\n updateSelectionCounts(computeSelectionCount(selection))\n\n setCanMergeCells(currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1)\n }\n // Unmerge cell\n setCanUnmergeCell($canUnmerge())\n })\n }, [editor])\n\n useEffect(() => {\n const menuButtonElement = contextRef.current\n const dropDownElement = dropDownRef.current\n const rootElement = editor.getRootElement()\n\n if (menuButtonElement != null && dropDownElement != null && rootElement != null) {\n const rootEleRect = rootElement.getBoundingClientRect()\n const menuButtonRect = menuButtonElement.getBoundingClientRect()\n dropDownElement.style.opacity = '1'\n const dropDownElementRect = dropDownElement.getBoundingClientRect()\n const margin = 5\n let leftPosition = menuButtonRect.right + margin\n if (\n leftPosition + dropDownElementRect.width > window.innerWidth ||\n leftPosition + dropDownElementRect.width > rootEleRect.right\n ) {\n const position = menuButtonRect.left - dropDownElementRect.width - margin\n leftPosition = (position < 0 ? margin : position) + window.pageXOffset\n }\n dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`\n\n let topPosition = menuButtonRect.top\n if (topPosition + dropDownElementRect.height > window.innerHeight) {\n const position = menuButtonRect.bottom - dropDownElementRect.height\n topPosition = (position < 0 ? margin : position) + window.pageYOffset\n }\n dropDownElement.style.top = `${topPosition}px`\n }\n }, [contextRef, dropDownRef, editor, y])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropDownRef.current != null &&\n contextRef.current != null &&\n !dropDownRef.current.contains(event.target as Node) &&\n !contextRef.current.contains(event.target as Node)\n ) {\n setIsMenuOpen(false)\n }\n }\n\n window.addEventListener('click', handleClickOutside)\n\n return () => window.removeEventListener('click', handleClickOutside)\n }, [setIsMenuOpen, contextRef])\n\n const clearTableSelection = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(\n tableNode.getKey(),\n ) as HTMLTableElementWithWithTableSelectionState\n\n if (!tableElement) {\n throw new Error('Expected to find tableElement in DOM')\n }\n\n const tableObserver = getTableObserverFromTableElement(tableElement)\n if (tableObserver !== null) {\n tableObserver.clearHighlight()\n }\n\n tableNode.markDirty()\n updateTableCellNode(tableCellNode.getLatest())\n }\n\n const rootNode = $getRoot()\n rootNode.selectStart()\n })\n }, [editor, tableCellNode])\n\n const mergeTableCellsAtSelection = () => {\n editor.update(() => {\n const selection = $getSelection()\n if ($isTableSelection(selection)) {\n const { columns, rows } = computeSelectionCount(selection)\n const nodes = selection.getNodes()\n let firstCell: null | TableCellNode = null\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n if (firstCell === null) {\n node.setColSpan(columns).setRowSpan(rows)\n firstCell = node\n const isEmpty = $cellContainsEmptyParagraph(node)\n let firstChild\n if (isEmpty && $isParagraphNode((firstChild = node.getFirstChild()))) {\n firstChild.remove()\n }\n } else if ($isTableCellNode(firstCell)) {\n const isEmpty = $cellContainsEmptyParagraph(node)\n if (!isEmpty) {\n firstCell.append(...node.getChildren())\n }\n node.remove()\n }\n }\n }\n if (firstCell !== null) {\n if (firstCell.getChildrenSize() === 0) {\n firstCell.append($createParagraphNode())\n }\n $selectLastDescendant(firstCell)\n }\n onClose()\n }\n })\n }\n\n const unmergeTableCellsAtSelection = () => {\n editor.update(() => {\n $unmergeCell()\n })\n }\n\n const insertTableRowAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n $insertTableRow__EXPERIMENTAL(shouldInsertAfter)\n onClose()\n })\n },\n [editor, onClose],\n )\n\n const insertTableColumnAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.columns; i++) {\n $insertTableColumn__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.columns],\n )\n\n const deleteTableRowAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableRow__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const deleteTableAtSelection = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n tableNode.remove()\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const deleteTableColumnAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableColumn__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const toggleTableRowIsHeader = useCallback(() => {\n editor.update(() => {\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 const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW\n tableRow.getChildren().forEach((tableCell) => {\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.setHeaderStyles(newStyle, TableCellHeaderStates.ROW)\n })\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleTableColumnIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren<TableRowNode>()\n const maxRowsLength = Math.max(...tableRows.map((row) => row.getChildren().length))\n\n if (tableColumnIndex >= maxRowsLength || tableColumnIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.COLUMN\n for (let r = 0; r < tableRows.length; r++) {\n const tableRow = tableRows[r]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n const tableCells = tableRow.getChildren()\n if (tableColumnIndex >= tableCells.length) {\n // if cell is outside of bounds for the current row (for example various merge cell cases) we shouldn't highlight it\n continue\n }\n\n const tableCell = tableCells[tableColumnIndex]\n\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.setHeaderStyles(newStyle, TableCellHeaderStates.COLUMN)\n }\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleRowStriping = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n if (tableNode) {\n tableNode.setRowStriping(!tableNode.getRowStriping())\n }\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n let mergeCellButton: JSX.Element | null = null\n if (cellMerge) {\n if (canMergeCells) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-merge-cells\"\n onClick={() => mergeTableCellsAtSelection()}\n type=\"button\"\n >\n Merge cells\n </button>\n )\n } else if (canUnmergeCell) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-unmerge-cells\"\n onClick={() => unmergeTableCellsAtSelection()}\n type=\"button\"\n >\n Unmerge cells\n </button>\n )\n }\n }\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events\n <div\n className=\"table-action-menu-dropdown\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n ref={dropDownRef}\n >\n {mergeCellButton ? (\n <React.Fragment>\n {mergeCellButton}\n <hr />\n </React.Fragment>\n ) : null}\n\n <button\n className=\"item\"\n data-test-id=\"table-row-striping\"\n onClick={() => toggleRowStriping()}\n type=\"button\"\n >\n <span className=\"text\">Toggle Row Striping</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-above\"\n onClick={() => insertTableRowAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} above\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-below\"\n onClick={() => insertTableRowAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} below\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-before\"\n onClick={() => insertTableColumnAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n left\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-after\"\n onClick={() => insertTableColumnAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n right\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-delete-columns\"\n onClick={() => deleteTableColumnAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete column</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete-rows\"\n onClick={() => deleteTableRowAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete row</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete\"\n onClick={() => deleteTableAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete table</span>\n </button>\n <hr />\n <button className=\"item\" onClick={() => toggleTableRowIsHeader()} type=\"button\">\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.ROW) === TableCellHeaderStates.ROW\n ? 'Remove'\n : 'Add'}{' '}\n row header\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-column-header\"\n onClick={() => toggleTableColumnIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n TableCellHeaderStates.COLUMN\n ? 'Remove'\n : 'Add'}{' '}\n column header\n </span>\n </button>\n </div>,\n document.body,\n )\n}\n\nfunction TableCellActionMenuContainer({\n anchorElem,\n cellMerge,\n}: {\n anchorElem: HTMLElement\n cellMerge: boolean\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const menuButtonRef = useRef(null)\n const menuRootRef = useRef(null)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n\n const [tableCellNode, setTableMenuCellNode] = useState<null | TableCellNode>(null)\n\n const $moveMenu = useCallback(() => {\n const menu = menuButtonRef.current\n const selection = $getSelection()\n const nativeSelection = window.getSelection()\n const activeElement = document.activeElement\n\n if (selection == null || menu == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n $isRangeSelection(selection) &&\n rootElement !== null &&\n nativeSelection !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n selection.anchor.getNode(),\n )\n\n if (tableCellNodeFromSelection == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey())\n\n if (tableCellParentNodeDOM == null) {\n setTableMenuCellNode(null)\n return\n }\n\n setTableMenuCellNode(tableCellNodeFromSelection)\n } else if (!activeElement) {\n setTableMenuCellNode(null)\n }\n }, [editor])\n\n useEffect(() => {\n return editor.registerUpdateListener(() => {\n editor.getEditorState().read(() => {\n $moveMenu()\n })\n })\n })\n\n useEffect(() => {\n const menuButtonDOM = menuButtonRef.current as HTMLButtonElement | null\n\n if (menuButtonDOM != null && tableCellNode != null) {\n const tableCellNodeDOM = editor.getElementByKey(tableCellNode.getKey())\n\n if (tableCellNodeDOM != null) {\n const tableCellRect = tableCellNodeDOM.getBoundingClientRect()\n const menuRect = menuButtonDOM.getBoundingClientRect()\n const anchorRect = anchorElem.getBoundingClientRect()\n\n const top = tableCellRect.top - anchorRect.top + 4\n const left = tableCellRect.right - menuRect.width - 10 - anchorRect.left\n\n menuButtonDOM.style.opacity = '1'\n menuButtonDOM.style.transform = `translate(${left}px, ${top}px)`\n } else {\n menuButtonDOM.style.opacity = '0'\n menuButtonDOM.style.transform = 'translate(-10000px, -10000px)'\n }\n }\n }, [menuButtonRef, tableCellNode, editor, anchorElem])\n\n const prevTableCellDOM = useRef(tableCellNode)\n\n useEffect(() => {\n if (prevTableCellDOM.current !== tableCellNode) {\n setIsMenuOpen(false)\n }\n\n prevTableCellDOM.current = tableCellNode\n }, [prevTableCellDOM, tableCellNode])\n\n return (\n <div className=\"table-cell-action-button-container\" ref={menuButtonRef}>\n {tableCellNode != null && (\n <React.Fragment>\n <button\n className=\"table-cell-action-button\"\n onClick={(e) => {\n e.stopPropagation()\n setIsMenuOpen(!isMenuOpen)\n }}\n ref={menuRootRef}\n type=\"button\"\n >\n <MeatballsIcon />\n </button>\n {isMenuOpen && (\n <TableActionMenu\n cellMerge={cellMerge}\n contextRef={menuRootRef}\n onClose={() => setIsMenuOpen(false)}\n setIsMenuOpen={setIsMenuOpen}\n tableCellNode={tableCellNode}\n />\n )}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableActionMenuPlugin: PluginComponentWithAnchor = ({ anchorElem }) => {\n const isEditable = useLexicalEditable()\n return createPortal(\n isEditable ? (\n <TableCellActionMenuContainer anchorElem={anchorElem ?? document.body} cellMerge />\n ) : null,\n anchorElem ?? document.body,\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$deleteTableColumn__EXPERIMENTAL","$deleteTableRow__EXPERIMENTAL","$getNodeTriplet","$getTableCellNodeFromLexicalNode","$getTableColumnIndexFromTableCellNode","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$insertTableColumn__EXPERIMENTAL","$insertTableRow__EXPERIMENTAL","$isTableCellNode","$isTableRowNode","$isTableSelection","$unmergeCell","getTableObserverFromTableElement","TableCellHeaderStates","TableCellNode","useScrollInfo","$createParagraphNode","$getRoot","$getSelection","$isElementNode","$isParagraphNode","$isRangeSelection","$isTextNode","React","useCallback","useEffect","useRef","useState","createPortal","MeatballsIcon","computeSelectionCount","selection","selectionShape","getShape","columns","toX","fromX","rows","toY","fromY","$canUnmerge","isCollapsed","anchor","is","focus","cell","__colSpan","__rowSpan","$cellContainsEmptyParagraph","getChildrenSize","firstChild","getFirstChildOrThrow","isEmpty","$selectLastDescendant","node","lastDescendant","getLastDescendant","select","selectEnd","selectNext","TableActionMenu","cellMerge","contextRef","onClose","setIsMenuOpen","tableCellNode","_tableCellNode","editor","dropDownRef","updateTableCellNode","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","y","registerMutationListener","nodeMutations","nodeUpdated","get","getKey","getEditorState","read","getLatest","skipInitialization","currentSelectionCounts","menuButtonElement","current","dropDownElement","rootElement","getRootElement","rootEleRect","getBoundingClientRect","menuButtonRect","style","opacity","dropDownElementRect","margin","leftPosition","right","width","window","innerWidth","position","left","pageXOffset","topPosition","top","height","innerHeight","bottom","pageYOffset","handleClickOutside","event","contains","target","addEventListener","removeEventListener","clearTableSelection","update","isAttached","tableNode","tableElement","getElementByKey","Error","tableObserver","clearHighlight","markDirty","rootNode","selectStart","mergeTableCellsAtSelection","nodes","getNodes","firstCell","i","length","setColSpan","setRowSpan","getFirstChild","remove","append","getChildren","unmergeTableCellsAtSelection","insertTableRowAtSelection","shouldInsertAfter","insertTableColumnAtSelection","deleteTableRowAtSelection","deleteTableAtSelection","deleteTableColumnAtSelection","toggleTableRowIsHeader","tableRowIndex","tableRows","tableRow","newStyle","getHeaderStyles","ROW","forEach","tableCell","setHeaderStyles","toggleTableColumnIsHeader","tableColumnIndex","maxRowsLength","Math","max","map","row","COLUMN","r","tableCells","toggleRowStriping","setRowStriping","getRowStriping","mergeCellButton","_jsx","className","onClick","type","_jsxs","e","stopPropagation","ref","Fragment","__headerState","document","body","TableCellActionMenuContainer","anchorElem","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","nativeSelection","getSelection","activeElement","anchorNode","tableCellNodeFromSelection","getNode","tableCellParentNodeDOM","registerUpdateListener","menuButtonDOM","tableCellNodeDOM","tableCellRect","menuRect","anchorRect","transform","prevTableCellDOM","TableActionMenuPlugin","t0","$","isEditable","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n HTMLTableElementWithWithTableSelectionState,\n TableRowNode,\n TableSelection,\n} from '@lexical/table'\nimport type { ElementNode } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $deleteTableColumn__EXPERIMENTAL,\n $deleteTableRow__EXPERIMENTAL,\n $getNodeTriplet,\n $getTableCellNodeFromLexicalNode,\n $getTableColumnIndexFromTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableRowNode,\n $isTableSelection,\n $unmergeCell,\n getTableObserverFromTableElement,\n TableCellHeaderStates,\n TableCellNode,\n} from '@lexical/table'\nimport { useScrollInfo } from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getRoot,\n $getSelection,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n} from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\n\nimport { MeatballsIcon } from '../../../../../lexical/ui/icons/Meatballs/index.js'\nimport './index.scss'\n\nfunction computeSelectionCount(selection: TableSelection): {\n columns: number\n rows: number\n} {\n const selectionShape = selection.getShape()\n return {\n columns: selectionShape.toX - selectionShape.fromX + 1,\n rows: selectionShape.toY - selectionShape.fromY + 1,\n }\n}\n\nfunction $canUnmerge(): boolean {\n const selection = $getSelection()\n if (\n ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n (!$isRangeSelection(selection) && !$isTableSelection(selection))\n ) {\n return false\n }\n const [cell] = $getNodeTriplet(selection.anchor)\n return cell.__colSpan > 1 || cell.__rowSpan > 1\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n if (cell.getChildrenSize() !== 1) {\n return false\n }\n const firstChild = cell.getFirstChildOrThrow()\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false\n }\n return true\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n const lastDescendant = node.getLastDescendant()\n if ($isTextNode(lastDescendant)) {\n lastDescendant.select()\n } else if ($isElementNode(lastDescendant)) {\n lastDescendant.selectEnd()\n } else if (lastDescendant !== null) {\n lastDescendant.selectNext()\n }\n}\n\ntype TableCellActionMenuProps = Readonly<{\n cellMerge: boolean\n contextRef: { current: HTMLElement | null }\n onClose: () => void\n setIsMenuOpen: (isOpen: boolean) => void\n tableCellNode: TableCellNode\n}>\n\nfunction TableActionMenu({\n cellMerge,\n contextRef,\n onClose,\n setIsMenuOpen,\n tableCellNode: _tableCellNode,\n}: TableCellActionMenuProps) {\n const [editor] = useLexicalComposerContext()\n const dropDownRef = useRef<HTMLDivElement | null>(null)\n const [tableCellNode, updateTableCellNode] = useState(_tableCellNode)\n const [selectionCounts, updateSelectionCounts] = useState({\n columns: 1,\n rows: 1,\n })\n const [canMergeCells, setCanMergeCells] = useState(false)\n const [canUnmergeCell, setCanUnmergeCell] = useState(false)\n const { y } = useScrollInfo()\n\n useEffect(() => {\n return editor.registerMutationListener(\n TableCellNode,\n (nodeMutations) => {\n const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated'\n\n if (nodeUpdated) {\n editor.getEditorState().read(() => {\n updateTableCellNode(tableCellNode.getLatest())\n })\n }\n },\n { skipInitialization: true },\n )\n }, [editor, tableCellNode])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n // Merge cells\n if ($isTableSelection(selection)) {\n const currentSelectionCounts = computeSelectionCount(selection)\n updateSelectionCounts(computeSelectionCount(selection))\n\n setCanMergeCells(currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1)\n }\n // Unmerge cell\n setCanUnmergeCell($canUnmerge())\n })\n }, [editor])\n\n useEffect(() => {\n const menuButtonElement = contextRef.current\n const dropDownElement = dropDownRef.current\n const rootElement = editor.getRootElement()\n\n if (menuButtonElement != null && dropDownElement != null && rootElement != null) {\n const rootEleRect = rootElement.getBoundingClientRect()\n const menuButtonRect = menuButtonElement.getBoundingClientRect()\n dropDownElement.style.opacity = '1'\n const dropDownElementRect = dropDownElement.getBoundingClientRect()\n const margin = 5\n let leftPosition = menuButtonRect.right + margin\n if (\n leftPosition + dropDownElementRect.width > window.innerWidth ||\n leftPosition + dropDownElementRect.width > rootEleRect.right\n ) {\n const position = menuButtonRect.left - dropDownElementRect.width - margin\n leftPosition = (position < 0 ? margin : position) + window.pageXOffset\n }\n dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`\n\n let topPosition = menuButtonRect.top\n if (topPosition + dropDownElementRect.height > window.innerHeight) {\n const position = menuButtonRect.bottom - dropDownElementRect.height\n topPosition = (position < 0 ? margin : position) + window.pageYOffset\n }\n dropDownElement.style.top = `${topPosition}px`\n }\n }, [contextRef, dropDownRef, editor, y])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropDownRef.current != null &&\n contextRef.current != null &&\n !dropDownRef.current.contains(event.target as Node) &&\n !contextRef.current.contains(event.target as Node)\n ) {\n setIsMenuOpen(false)\n }\n }\n\n window.addEventListener('click', handleClickOutside)\n\n return () => window.removeEventListener('click', handleClickOutside)\n }, [setIsMenuOpen, contextRef])\n\n const clearTableSelection = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(\n tableNode.getKey(),\n ) as HTMLTableElementWithWithTableSelectionState\n\n if (!tableElement) {\n throw new Error('Expected to find tableElement in DOM')\n }\n\n const tableObserver = getTableObserverFromTableElement(tableElement)\n if (tableObserver !== null) {\n tableObserver.clearHighlight()\n }\n\n tableNode.markDirty()\n updateTableCellNode(tableCellNode.getLatest())\n }\n\n const rootNode = $getRoot()\n rootNode.selectStart()\n })\n }, [editor, tableCellNode])\n\n const mergeTableCellsAtSelection = () => {\n editor.update(() => {\n const selection = $getSelection()\n if ($isTableSelection(selection)) {\n const { columns, rows } = computeSelectionCount(selection)\n const nodes = selection.getNodes()\n let firstCell: null | TableCellNode = null\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n if (firstCell === null) {\n node.setColSpan(columns).setRowSpan(rows)\n firstCell = node\n const isEmpty = $cellContainsEmptyParagraph(node)\n let firstChild\n if (isEmpty && $isParagraphNode((firstChild = node.getFirstChild()))) {\n firstChild.remove()\n }\n } else if ($isTableCellNode(firstCell)) {\n const isEmpty = $cellContainsEmptyParagraph(node)\n if (!isEmpty) {\n firstCell.append(...node.getChildren())\n }\n node.remove()\n }\n }\n }\n if (firstCell !== null) {\n if (firstCell.getChildrenSize() === 0) {\n firstCell.append($createParagraphNode())\n }\n $selectLastDescendant(firstCell)\n }\n onClose()\n }\n })\n }\n\n const unmergeTableCellsAtSelection = () => {\n editor.update(() => {\n $unmergeCell()\n })\n }\n\n const insertTableRowAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n $insertTableRow__EXPERIMENTAL(shouldInsertAfter)\n onClose()\n })\n },\n [editor, onClose],\n )\n\n const insertTableColumnAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.columns; i++) {\n $insertTableColumn__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.columns],\n )\n\n const deleteTableRowAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableRow__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const deleteTableAtSelection = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n tableNode.remove()\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const deleteTableColumnAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableColumn__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const toggleTableRowIsHeader = useCallback(() => {\n editor.update(() => {\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 const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW\n tableRow.getChildren().forEach((tableCell) => {\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.setHeaderStyles(newStyle, TableCellHeaderStates.ROW)\n })\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleTableColumnIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren<TableRowNode>()\n const maxRowsLength = Math.max(...tableRows.map((row) => row.getChildren().length))\n\n if (tableColumnIndex >= maxRowsLength || tableColumnIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.COLUMN\n for (let r = 0; r < tableRows.length; r++) {\n const tableRow = tableRows[r]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n const tableCells = tableRow.getChildren()\n if (tableColumnIndex >= tableCells.length) {\n // if cell is outside of bounds for the current row (for example various merge cell cases) we shouldn't highlight it\n continue\n }\n\n const tableCell = tableCells[tableColumnIndex]\n\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.setHeaderStyles(newStyle, TableCellHeaderStates.COLUMN)\n }\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleRowStriping = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n if (tableNode) {\n tableNode.setRowStriping(!tableNode.getRowStriping())\n }\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n let mergeCellButton: JSX.Element | null = null\n if (cellMerge) {\n if (canMergeCells) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-merge-cells\"\n onClick={() => mergeTableCellsAtSelection()}\n type=\"button\"\n >\n Merge cells\n </button>\n )\n } else if (canUnmergeCell) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-unmerge-cells\"\n onClick={() => unmergeTableCellsAtSelection()}\n type=\"button\"\n >\n Unmerge cells\n </button>\n )\n }\n }\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events\n <div\n className=\"table-action-menu-dropdown\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n ref={dropDownRef}\n >\n {mergeCellButton ? (\n <React.Fragment>\n {mergeCellButton}\n <hr />\n </React.Fragment>\n ) : null}\n\n <button\n className=\"item\"\n data-test-id=\"table-row-striping\"\n onClick={() => toggleRowStriping()}\n type=\"button\"\n >\n <span className=\"text\">Toggle Row Striping</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-above\"\n onClick={() => insertTableRowAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} above\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-below\"\n onClick={() => insertTableRowAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} below\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-before\"\n onClick={() => insertTableColumnAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n left\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-after\"\n onClick={() => insertTableColumnAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n right\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-delete-columns\"\n onClick={() => deleteTableColumnAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete column</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete-rows\"\n onClick={() => deleteTableRowAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete row</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete\"\n onClick={() => deleteTableAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete table</span>\n </button>\n <hr />\n <button className=\"item\" onClick={() => toggleTableRowIsHeader()} type=\"button\">\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.ROW) === TableCellHeaderStates.ROW\n ? 'Remove'\n : 'Add'}{' '}\n row header\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-column-header\"\n onClick={() => toggleTableColumnIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n TableCellHeaderStates.COLUMN\n ? 'Remove'\n : 'Add'}{' '}\n column header\n </span>\n </button>\n </div>,\n document.body,\n )\n}\n\nfunction TableCellActionMenuContainer({\n anchorElem,\n cellMerge,\n}: {\n anchorElem: HTMLElement\n cellMerge: boolean\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const menuButtonRef = useRef(null)\n const menuRootRef = useRef(null)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n\n const [tableCellNode, setTableMenuCellNode] = useState<null | TableCellNode>(null)\n\n const $moveMenu = useCallback(() => {\n const menu = menuButtonRef.current\n const selection = $getSelection()\n const nativeSelection = window.getSelection()\n const activeElement = document.activeElement\n\n if (selection == null || menu == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n $isRangeSelection(selection) &&\n rootElement !== null &&\n nativeSelection !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n selection.anchor.getNode(),\n )\n\n if (tableCellNodeFromSelection == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey())\n\n if (tableCellParentNodeDOM == null) {\n setTableMenuCellNode(null)\n return\n }\n\n setTableMenuCellNode(tableCellNodeFromSelection)\n } else if (!activeElement) {\n setTableMenuCellNode(null)\n }\n }, [editor])\n\n useEffect(() => {\n return editor.registerUpdateListener(() => {\n editor.getEditorState().read(() => {\n $moveMenu()\n })\n })\n })\n\n useEffect(() => {\n const menuButtonDOM = menuButtonRef.current as HTMLButtonElement | null\n\n if (menuButtonDOM != null && tableCellNode != null) {\n const tableCellNodeDOM = editor.getElementByKey(tableCellNode.getKey())\n\n if (tableCellNodeDOM != null) {\n const tableCellRect = tableCellNodeDOM.getBoundingClientRect()\n const menuRect = menuButtonDOM.getBoundingClientRect()\n const anchorRect = anchorElem.getBoundingClientRect()\n\n const top = tableCellRect.top - anchorRect.top + 4\n const left = tableCellRect.right - menuRect.width - 10 - anchorRect.left\n\n menuButtonDOM.style.opacity = '1'\n menuButtonDOM.style.transform = `translate(${left}px, ${top}px)`\n } else {\n menuButtonDOM.style.opacity = '0'\n menuButtonDOM.style.transform = 'translate(-10000px, -10000px)'\n }\n }\n }, [menuButtonRef, tableCellNode, editor, anchorElem])\n\n const prevTableCellDOM = useRef(tableCellNode)\n\n useEffect(() => {\n if (prevTableCellDOM.current !== tableCellNode) {\n setIsMenuOpen(false)\n }\n\n prevTableCellDOM.current = tableCellNode\n }, [prevTableCellDOM, tableCellNode])\n\n return (\n <div className=\"table-cell-action-button-container\" ref={menuButtonRef}>\n {tableCellNode != null && (\n <React.Fragment>\n <button\n className=\"table-cell-action-button\"\n onClick={(e) => {\n e.stopPropagation()\n setIsMenuOpen(!isMenuOpen)\n }}\n ref={menuRootRef}\n type=\"button\"\n >\n <MeatballsIcon />\n </button>\n {isMenuOpen && (\n <TableActionMenu\n cellMerge={cellMerge}\n contextRef={menuRootRef}\n onClose={() => setIsMenuOpen(false)}\n setIsMenuOpen={setIsMenuOpen}\n tableCellNode={tableCellNode}\n />\n )}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableActionMenuPlugin: PluginComponentWithAnchor = ({ anchorElem }) => {\n const isEditable = useLexicalEditable()\n return createPortal(\n isEditable ? (\n <TableCellActionMenuContainer anchorElem={anchorElem ?? document.body} cellMerge />\n ) : null,\n anchorElem ?? document.body,\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -311,12 +311,12 @@ export const TableCellResizerPlugin = () => {
311
311
  const isEditable = useLexicalEditable();
312
312
  let t0;
313
313
  let t1;
314
- if ($[0] !== isEditable || $[1] !== editor) {
314
+ if ($[0] !== editor || $[1] !== isEditable) {
315
315
  t1 = isEditable ? createPortal(_jsx(TableCellResizer, {
316
316
  editor
317
317
  }), document.body) : null;
318
- $[0] = isEditable;
319
- $[1] = editor;
318
+ $[0] = editor;
319
+ $[1] = isEditable;
320
320
  $[2] = t1;
321
321
  } else {
322
322
  t1 = $[2];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","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","resizerStyles","setResizerStyles","bottom","left","right","top","zoneWidth","styles","backgroundColor","cursor","window","scrollX","scrollY","tableRect","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","$","isEditable","t0","t1"],"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 [resizerStyles, setResizerStyles] = useState<{\n bottom?: null | React.CSSProperties\n left?: null | React.CSSProperties\n right?: null | React.CSSProperties\n top?: null | React.CSSProperties\n }>({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n\n useEffect(() => {\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.scrollX + left}px`,\n top: `${window.scrollY + 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.scrollX + left + width - zoneWidth / 2}px`,\n top: `${window.scrollY + 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.scrollX + tableRect.left}px`\n styles[draggingDirection].top = `${window.scrollY + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.scrollY + tableRect.top}px`\n styles[draggingDirection].left = `${window.scrollX + 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 setResizerStyles(styles)\n } else {\n setResizerStyles({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\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":["c","_c","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","resizerStyles","setResizerStyles","bottom","left","right","top","zoneWidth","styles","backgroundColor","cursor","window","scrollX","scrollY","tableRect","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","$","isEditable","t0","t1"],"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 [resizerStyles, setResizerStyles] = useState<{\n bottom?: null | React.CSSProperties\n left?: null | React.CSSProperties\n right?: null | React.CSSProperties\n top?: null | React.CSSProperties\n }>({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n\n useEffect(() => {\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.scrollX + left}px`,\n top: `${window.scrollY + 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.scrollX + left + width - zoneWidth / 2}px`,\n top: `${window.scrollY + 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.scrollX + tableRect.left}px`\n styles[draggingDirection].top = `${window.scrollY + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.scrollY + tableRect.top}px`\n styles[draggingDirection].left = `${window.scrollX + 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 setResizerStyles(styles)\n } else {\n setResizerStyles({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\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":[]}
@@ -56,13 +56,13 @@ export const TablePlugin = () => {
56
56
  } = t0;
57
57
  const t1 = "lexical-table-create-" + uuid;
58
58
  let t2;
59
- if ($[0] !== t1 || $[1] !== editDepth) {
59
+ if ($[0] !== editDepth || $[1] !== t1) {
60
60
  t2 = formatDrawerSlug({
61
61
  slug: t1,
62
62
  depth: editDepth
63
63
  });
64
- $[0] = t1;
65
- $[1] = editDepth;
64
+ $[0] = editDepth;
65
+ $[1] = t1;
66
66
  $[2] = t2;
67
67
  } else {
68
68
  t2 = $[2];
@@ -126,7 +126,7 @@ export const TablePlugin = () => {
126
126
  t5 = $[11];
127
127
  }
128
128
  let t6;
129
- if ($[12] !== drawerSlug || $[13] !== t5 || $[14] !== schemaPath) {
129
+ if ($[12] !== drawerSlug || $[13] !== schemaPath || $[14] !== t5) {
130
130
  t6 = _jsxs(React.Fragment, {
131
131
  children: [_jsx(FieldsDrawer, {
132
132
  drawerSlug,
@@ -141,8 +141,8 @@ export const TablePlugin = () => {
141
141
  })]
142
142
  });
143
143
  $[12] = drawerSlug;
144
- $[13] = t5;
145
- $[14] = schemaPath;
144
+ $[13] = schemaPath;
145
+ $[14] = t5;
146
146
  $[15] = t6;
147
147
  } else {
148
148
  t6 = $[15];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","useLexicalDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","editDepth","fieldProps","t0","uuid","schemaPath","t1","t2","slug","depth","drawerSlug","toggleDrawer","t3","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t4","t5","_fields","data","columns","rows","dispatchCommand","String","t6","_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 } 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 { useLexicalDrawer } from '../../../../../utilities/fieldsDrawer/useLexicalDrawer.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 editDepth = useEditDepth()\n const {\n fieldProps: { schemaPath },\n uuid,\n } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\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 toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleDrawer])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\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 schemaPath={schemaPath}\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","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","useLexicalDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","editDepth","fieldProps","t0","uuid","schemaPath","t1","t2","slug","depth","drawerSlug","toggleDrawer","t3","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t4","t5","_fields","data","columns","rows","dispatchCommand","String","t6","_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 } 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 { useLexicalDrawer } from '../../../../../utilities/fieldsDrawer/useLexicalDrawer.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 editDepth = useEditDepth()\n const {\n fieldProps: { schemaPath },\n uuid,\n } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\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 toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleDrawer])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\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 schemaPath={schemaPath}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,7 +8,7 @@ export function useDebounce(fn, ms, maxWait) {
8
8
  const debouncedRef = useRef(null);
9
9
  let t0;
10
10
  let t1;
11
- if ($[0] !== fn || $[1] !== ms || $[2] !== maxWait) {
11
+ if ($[0] !== fn || $[1] !== maxWait || $[2] !== ms) {
12
12
  t0 = () => {
13
13
  debouncedRef.current = debounce(fn, ms, {
14
14
  maxWait
@@ -19,8 +19,8 @@ export function useDebounce(fn, ms, maxWait) {
19
19
  };
20
20
  t1 = [fn, ms, maxWait];
21
21
  $[0] = fn;
22
- $[1] = ms;
23
- $[2] = maxWait;
22
+ $[1] = maxWait;
23
+ $[2] = ms;
24
24
  $[3] = t0;
25
25
  $[4] = t1;
26
26
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"useDebounce.js","names":["c","_c","useCallback","useEffect","useRef","debounce","useDebounce","fn","ms","maxWait","$","debouncedRef","t0","t1","current","cancel","t2","Symbol","for","t3","args","callback"],"sources":["../../../../../src/features/experimental_table/client/utils/useDebounce.ts"],"sourcesContent":["'use client'\nimport { useCallback, useEffect, useRef } from 'react'\n\nimport debounce from './debounce.js'\n\n// Define the type for debounced function that includes cancel method\ninterface DebouncedFunction<T extends (...args: any[]) => any> {\n (...args: Parameters<T>): ReturnType<T>\n cancel: () => void\n}\n\nexport function useDebounce<T extends (...args: never[]) => void>(\n fn: T,\n ms: number,\n maxWait?: number,\n) {\n // Update the ref type to include cancel method\n const debouncedRef = useRef<DebouncedFunction<T> | null>(null)\n\n useEffect(() => {\n debouncedRef.current = debounce(fn, ms, { maxWait }) as DebouncedFunction<T>\n\n return () => {\n debouncedRef.current?.cancel()\n }\n }, [fn, ms, maxWait])\n\n const callback = useCallback((...args: Parameters<T>) => {\n if (debouncedRef.current) {\n debouncedRef.current(...args)\n }\n }, [])\n\n return callback\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAE/C,OAAOC,QAAA,MAAc;AAQrB,OAAO,SAAAC,YAAAC,EAAA,EAAAC,EAAA,EAAAC,OAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAML,MAAAU,YAAA,GAAqBP,MAAA,KAAoC;EAAA,IAAAQ,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAH,EAAA,IAAAG,CAAA,QAAAF,EAAA,IAAAE,CAAA,QAAAD,OAAA;IAE/CG,EAAA,GAAAA,CAAA;MACRD,YAAA,CAAAG,OAAA,GAAuBT,QAAA,CAASE,EAAA,EAAIC,EAAA;QAAAC;MAAA,CAAc;MAAA;QAGhDE,YAAA,CAAAG,OAAA,EAAAC,MAAA;MAAA;IAAA;IAEDF,EAAA,IAACN,EAAA,EAAIC,EAAA,EAAIC,OAAA;IAAQC,CAAA,MAAAH,EAAA;IAAAG,CAAA,MAAAF,EAAA;IAAAE,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAE,EAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAD,EAAA,GAAAF,CAAA;IAAAG,EAAA,GAAAH,CAAA;EAAA;EANpBP,SAAA,CAAUS,EAMV,EAAGC,EAAiB;EAAA,IAAAG,EAAA;EAAA,IAAAN,CAAA,QAAAO,MAAA,CAAAC,GAAA;IAESF,EAAA,GAAAA,CAAA,GAAAG,EAAA;MAAC,MAAAC,IAAA,GAAAD,EAAG;MAAA,IAC3BR,YAAA,CAAAG,OAAA;QACFH,YAAA,CAAAG,OAAA,IAAwBM,IAAA;MAAA;IAAA;IAE5BV,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAJA,MAAAW,QAAA,GAAiBL,EAIZ;EAAA,OAEEK,QAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"useDebounce.js","names":["c","_c","useCallback","useEffect","useRef","debounce","useDebounce","fn","ms","maxWait","$","debouncedRef","t0","t1","current","cancel","t2","Symbol","for","t3","args","callback"],"sources":["../../../../../src/features/experimental_table/client/utils/useDebounce.ts"],"sourcesContent":["'use client'\nimport { useCallback, useEffect, useRef } from 'react'\n\nimport debounce from './debounce.js'\n\n// Define the type for debounced function that includes cancel method\ninterface DebouncedFunction<T extends (...args: any[]) => any> {\n (...args: Parameters<T>): ReturnType<T>\n cancel: () => void\n}\n\nexport function useDebounce<T extends (...args: never[]) => void>(\n fn: T,\n ms: number,\n maxWait?: number,\n) {\n // Update the ref type to include cancel method\n const debouncedRef = useRef<DebouncedFunction<T> | null>(null)\n\n useEffect(() => {\n debouncedRef.current = debounce(fn, ms, { maxWait }) as DebouncedFunction<T>\n\n return () => {\n debouncedRef.current?.cancel()\n }\n }, [fn, ms, maxWait])\n\n const callback = useCallback((...args: Parameters<T>) => {\n if (debouncedRef.current) {\n debouncedRef.current(...args)\n }\n }, [])\n\n return callback\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAE/C,OAAOC,QAAA,MAAc;AAQrB,OAAO,SAAAC,YAAAC,EAAA,EAAAC,EAAA,EAAAC,OAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAML,MAAAU,YAAA,GAAqBP,MAAA,KAAoC;EAAA,IAAAQ,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAH,EAAA,IAAAG,CAAA,QAAAD,OAAA,IAAAC,CAAA,QAAAF,EAAA;IAE/CI,EAAA,GAAAA,CAAA;MACRD,YAAA,CAAAG,OAAA,GAAuBT,QAAA,CAASE,EAAA,EAAIC,EAAA;QAAAC;MAAA,CAAc;MAAA;QAGhDE,YAAA,CAAAG,OAAA,EAAAC,MAAA;MAAA;IAAA;IAEDF,EAAA,IAACN,EAAA,EAAIC,EAAA,EAAIC,OAAA;IAAQC,CAAA,MAAAH,EAAA;IAAAG,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAF,EAAA;IAAAE,CAAA,MAAAE,EAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAD,EAAA,GAAAF,CAAA;IAAAG,EAAA,GAAAH,CAAA;EAAA;EANpBP,SAAA,CAAUS,EAMV,EAAGC,EAAiB;EAAA,IAAAG,EAAA;EAAA,IAAAN,CAAA,QAAAO,MAAA,CAAAC,GAAA;IAESF,EAAA,GAAAA,CAAA,GAAAG,EAAA;MAAC,MAAAC,IAAA,GAAAD,EAAG;MAAA,IAC3BR,YAAA,CAAAG,OAAA;QACFH,YAAA,CAAAG,OAAA,IAAwBM,IAAA;MAAA;IAAA;IAE5BV,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAJA,MAAAW,QAAA,GAAiBL,EAIZ;EAAA,OAEEK,QAAA;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/features/heading/server/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,eAAO,MAAM,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAuG1C,CAAA"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/features/heading/server/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,eAAO,MAAM,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAoG1C,CAAA"}
@@ -77,9 +77,6 @@ export const i18n = {
77
77
  sk: {
78
78
  label: 'Nadpis {{headingLevel}}'
79
79
  },
80
- sl: {
81
- label: 'Naslov {{headingLevel}}'
82
- },
83
80
  sv: {
84
81
  label: 'Rubrik {{headingLevel}}'
85
82
  },
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","names":["i18n","ar","label","az","bg","cs","da","de","en","es","fa","fr","he","hr","hu","it","ja","ko","my","nb","nl","pl","pt","ro","rs","ru","sk","sl","sv","th","tr","uk","vi","zh"],"sources":["../../../../src/features/heading/server/i18n.ts"],"sourcesContent":["import type { GenericLanguages } from '@payloadcms/translations'\n\nexport const i18n: Partial<GenericLanguages> = {\n ar: {\n label: 'العنوان {{headingLevel}}',\n },\n az: {\n label: 'Başlıq {{headingLevel}}',\n },\n bg: {\n label: 'Заглавие {{headingLevel}}',\n },\n cs: {\n label: 'Nadpis {{headingLevel}}',\n },\n da: {\n label: 'Overskrift {{overskriftNiveau}}',\n },\n de: {\n label: 'Überschrift {{headingLevel}}',\n },\n en: {\n label: 'Heading {{headingLevel}}',\n },\n es: {\n label: 'Encabezado {{headingLevel}}',\n },\n fa: {\n label: '[SKIPPED]',\n },\n fr: {\n label: 'En-tête {{headingLevel}}',\n },\n he: {\n label: 'כותרת {{רמת כותרת}}',\n },\n hr: {\n label: 'Naslov {{headingLevel}}',\n },\n hu: {\n label: 'Címsor {{headingLevel}}',\n },\n it: {\n label: 'Intestazione {{headingLevel}}',\n },\n ja: {\n label: '見出し{{headingLevel}}',\n },\n ko: {\n label: '제목 {{headingLevel}}',\n },\n my: {\n label: '[SURAT]\\n\\nKepala {{headingLevel}}',\n },\n nb: {\n label: 'Overskrift {{headingLevel}}',\n },\n nl: {\n label: 'Kop {{headingLevel}}',\n },\n pl: {\n label: 'Nagłówek {{headingLevel}}',\n },\n pt: {\n label: 'Cabeçalho {{headingLevel}}',\n },\n ro: {\n label: 'Titlu {{headingLevel}}',\n },\n rs: {\n label: 'Naslov {{headingLevel}}',\n },\n 'rs-latin': {\n label: 'Naslov {{headingLevel}}',\n },\n ru: {\n label: 'Заголовок {{headingLevel}}',\n },\n sk: {\n label: 'Nadpis {{headingLevel}}',\n },\n sl: {\n label: 'Naslov {{headingLevel}}',\n },\n sv: {\n label: 'Rubrik {{headingLevel}}',\n },\n th: {\n label: 'หัวข้อ {{headingLevel}}',\n },\n tr: {\n label: 'Başlık {{headingLevel}}',\n },\n uk: {\n label: 'Заголовок {{headingLevel}}',\n },\n vi: {\n label: 'Tiêu đề {{headingLevel}}',\n },\n zh: {\n label: '标题 {{headingLevel}}',\n },\n 'zh-TW': {\n label: '標題 {{headingLevel}}',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,IAAA,GAAkC;EAC7CC,EAAA,EAAI;IACFC,KAAA,EAAO;EACT;EACAC,EAAA,EAAI;IACFD,KAAA,EAAO;EACT;EACAE,EAAA,EAAI;IACFF,KAAA,EAAO;EACT;EACAG,EAAA,EAAI;IACFH,KAAA,EAAO;EACT;EACAI,EAAA,EAAI;IACFJ,KAAA,EAAO;EACT;EACAK,EAAA,EAAI;IACFL,KAAA,EAAO;EACT;EACAM,EAAA,EAAI;IACFN,KAAA,EAAO;EACT;EACAO,EAAA,EAAI;IACFP,KAAA,EAAO;EACT;EACAQ,EAAA,EAAI;IACFR,KAAA,EAAO;EACT;EACAS,EAAA,EAAI;IACFT,KAAA,EAAO;EACT;EACAU,EAAA,EAAI;IACFV,KAAA,EAAO;EACT;EACAW,EAAA,EAAI;IACFX,KAAA,EAAO;EACT;EACAY,EAAA,EAAI;IACFZ,KAAA,EAAO;EACT;EACAa,EAAA,EAAI;IACFb,KAAA,EAAO;EACT;EACAc,EAAA,EAAI;IACFd,KAAA,EAAO;EACT;EACAe,EAAA,EAAI;IACFf,KAAA,EAAO;EACT;EACAgB,EAAA,EAAI;IACFhB,KAAA,EAAO;EACT;EACAiB,EAAA,EAAI;IACFjB,KAAA,EAAO;EACT;EACAkB,EAAA,EAAI;IACFlB,KAAA,EAAO;EACT;EACAmB,EAAA,EAAI;IACFnB,KAAA,EAAO;EACT;EACAoB,EAAA,EAAI;IACFpB,KAAA,EAAO;EACT;EACAqB,EAAA,EAAI;IACFrB,KAAA,EAAO;EACT;EACAsB,EAAA,EAAI;IACFtB,KAAA,EAAO;EACT;EACA,YAAY;IACVA,KAAA,EAAO;EACT;EACAuB,EAAA,EAAI;IACFvB,KAAA,EAAO;EACT;EACAwB,EAAA,EAAI;IACFxB,KAAA,EAAO;EACT;EACAyB,EAAA,EAAI;IACFzB,KAAA,EAAO;EACT;EACA0B,EAAA,EAAI;IACF1B,KAAA,EAAO;EACT;EACA2B,EAAA,EAAI;IACF3B,KAAA,EAAO;EACT;EACA4B,EAAA,EAAI;IACF5B,KAAA,EAAO;EACT;EACA6B,EAAA,EAAI;IACF7B,KAAA,EAAO;EACT;EACA8B,EAAA,EAAI;IACF9B,KAAA,EAAO;EACT;EACA+B,EAAA,EAAI;IACF/B,KAAA,EAAO;EACT;EACA,SAAS;IACPA,KAAA,EAAO;EACT;AACF","ignoreList":[]}
1
+ {"version":3,"file":"i18n.js","names":["i18n","ar","label","az","bg","cs","da","de","en","es","fa","fr","he","hr","hu","it","ja","ko","my","nb","nl","pl","pt","ro","rs","ru","sk","sv","th","tr","uk","vi","zh"],"sources":["../../../../src/features/heading/server/i18n.ts"],"sourcesContent":["import type { GenericLanguages } from '@payloadcms/translations'\n\nexport const i18n: Partial<GenericLanguages> = {\n ar: {\n label: 'العنوان {{headingLevel}}',\n },\n az: {\n label: 'Başlıq {{headingLevel}}',\n },\n bg: {\n label: 'Заглавие {{headingLevel}}',\n },\n cs: {\n label: 'Nadpis {{headingLevel}}',\n },\n da: {\n label: 'Overskrift {{overskriftNiveau}}',\n },\n de: {\n label: 'Überschrift {{headingLevel}}',\n },\n en: {\n label: 'Heading {{headingLevel}}',\n },\n es: {\n label: 'Encabezado {{headingLevel}}',\n },\n fa: {\n label: '[SKIPPED]',\n },\n fr: {\n label: 'En-tête {{headingLevel}}',\n },\n he: {\n label: 'כותרת {{רמת כותרת}}',\n },\n hr: {\n label: 'Naslov {{headingLevel}}',\n },\n hu: {\n label: 'Címsor {{headingLevel}}',\n },\n it: {\n label: 'Intestazione {{headingLevel}}',\n },\n ja: {\n label: '見出し{{headingLevel}}',\n },\n ko: {\n label: '제목 {{headingLevel}}',\n },\n my: {\n label: '[SURAT]\\n\\nKepala {{headingLevel}}',\n },\n nb: {\n label: 'Overskrift {{headingLevel}}',\n },\n nl: {\n label: 'Kop {{headingLevel}}',\n },\n pl: {\n label: 'Nagłówek {{headingLevel}}',\n },\n pt: {\n label: 'Cabeçalho {{headingLevel}}',\n },\n ro: {\n label: 'Titlu {{headingLevel}}',\n },\n rs: {\n label: 'Naslov {{headingLevel}}',\n },\n 'rs-latin': {\n label: 'Naslov {{headingLevel}}',\n },\n ru: {\n label: 'Заголовок {{headingLevel}}',\n },\n sk: {\n label: 'Nadpis {{headingLevel}}',\n },\n sv: {\n label: 'Rubrik {{headingLevel}}',\n },\n th: {\n label: 'หัวข้อ {{headingLevel}}',\n },\n tr: {\n label: 'Başlık {{headingLevel}}',\n },\n uk: {\n label: 'Заголовок {{headingLevel}}',\n },\n vi: {\n label: 'Tiêu đề {{headingLevel}}',\n },\n zh: {\n label: '标题 {{headingLevel}}',\n },\n 'zh-TW': {\n label: '標題 {{headingLevel}}',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,IAAA,GAAkC;EAC7CC,EAAA,EAAI;IACFC,KAAA,EAAO;EACT;EACAC,EAAA,EAAI;IACFD,KAAA,EAAO;EACT;EACAE,EAAA,EAAI;IACFF,KAAA,EAAO;EACT;EACAG,EAAA,EAAI;IACFH,KAAA,EAAO;EACT;EACAI,EAAA,EAAI;IACFJ,KAAA,EAAO;EACT;EACAK,EAAA,EAAI;IACFL,KAAA,EAAO;EACT;EACAM,EAAA,EAAI;IACFN,KAAA,EAAO;EACT;EACAO,EAAA,EAAI;IACFP,KAAA,EAAO;EACT;EACAQ,EAAA,EAAI;IACFR,KAAA,EAAO;EACT;EACAS,EAAA,EAAI;IACFT,KAAA,EAAO;EACT;EACAU,EAAA,EAAI;IACFV,KAAA,EAAO;EACT;EACAW,EAAA,EAAI;IACFX,KAAA,EAAO;EACT;EACAY,EAAA,EAAI;IACFZ,KAAA,EAAO;EACT;EACAa,EAAA,EAAI;IACFb,KAAA,EAAO;EACT;EACAc,EAAA,EAAI;IACFd,KAAA,EAAO;EACT;EACAe,EAAA,EAAI;IACFf,KAAA,EAAO;EACT;EACAgB,EAAA,EAAI;IACFhB,KAAA,EAAO;EACT;EACAiB,EAAA,EAAI;IACFjB,KAAA,EAAO;EACT;EACAkB,EAAA,EAAI;IACFlB,KAAA,EAAO;EACT;EACAmB,EAAA,EAAI;IACFnB,KAAA,EAAO;EACT;EACAoB,EAAA,EAAI;IACFpB,KAAA,EAAO;EACT;EACAqB,EAAA,EAAI;IACFrB,KAAA,EAAO;EACT;EACAsB,EAAA,EAAI;IACFtB,KAAA,EAAO;EACT;EACA,YAAY;IACVA,KAAA,EAAO;EACT;EACAuB,EAAA,EAAI;IACFvB,KAAA,EAAO;EACT;EACAwB,EAAA,EAAI;IACFxB,KAAA,EAAO;EACT;EACAyB,EAAA,EAAI;IACFzB,KAAA,EAAO;EACT;EACA0B,EAAA,EAAI;IACF1B,KAAA,EAAO;EACT;EACA2B,EAAA,EAAI;IACF3B,KAAA,EAAO;EACT;EACA4B,EAAA,EAAI;IACF5B,KAAA,EAAO;EACT;EACA6B,EAAA,EAAI;IACF7B,KAAA,EAAO;EACT;EACA8B,EAAA,EAAI;IACF9B,KAAA,EAAO;EACT;EACA,SAAS;IACPA,KAAA,EAAO;EACT;AACF","ignoreList":[]}
@@ -21,23 +21,19 @@ 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] !== editor) {
24
+ if ($[0] !== editor || $[1] !== isSelected) {
25
25
  t1 = event => {
26
26
  const deleteSelection = $getSelection();
27
27
  if (isSelected && $isNodeSelection(deleteSelection)) {
28
28
  event.preventDefault();
29
29
  editor.update(() => {
30
- deleteSelection.getNodes().forEach(node => {
31
- if ($isHorizontalRuleNode(node)) {
32
- node.remove();
33
- }
34
- });
30
+ deleteSelection.getNodes().forEach(_temp);
35
31
  });
36
32
  }
37
33
  return false;
38
34
  };
39
- $[0] = isSelected;
40
- $[1] = editor;
35
+ $[0] = editor;
36
+ $[1] = isSelected;
41
37
  $[2] = t1;
42
38
  } else {
43
39
  t1 = $[2];
@@ -45,7 +41,7 @@ export function HorizontalRuleComponent(t0) {
45
41
  const $onDelete = t1;
46
42
  let t2;
47
43
  let t3;
48
- if ($[3] !== editor || $[4] !== nodeKey || $[5] !== clearSelection || $[6] !== setSelected || $[7] !== isSelected || $[8] !== $onDelete) {
44
+ if ($[3] !== $onDelete || $[4] !== clearSelection || $[5] !== editor || $[6] !== isSelected || $[7] !== nodeKey || $[8] !== setSelected) {
49
45
  t2 = () => mergeRegister(editor.registerCommand(CLICK_COMMAND, event_0 => {
50
46
  const hrElem = editor.getElementByKey(nodeKey);
51
47
  if (event_0.target === hrElem) {
@@ -58,12 +54,12 @@ export function HorizontalRuleComponent(t0) {
58
54
  return false;
59
55
  }, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW));
60
56
  t3 = [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected];
61
- $[3] = editor;
62
- $[4] = nodeKey;
63
- $[5] = clearSelection;
64
- $[6] = setSelected;
65
- $[7] = isSelected;
66
- $[8] = $onDelete;
57
+ $[3] = $onDelete;
58
+ $[4] = clearSelection;
59
+ $[5] = editor;
60
+ $[6] = isSelected;
61
+ $[7] = nodeKey;
62
+ $[8] = setSelected;
67
63
  $[9] = t2;
68
64
  $[10] = t3;
69
65
  } else {
@@ -73,7 +69,7 @@ export function HorizontalRuleComponent(t0) {
73
69
  useEffect(t2, t3);
74
70
  let t4;
75
71
  let t5;
76
- if ($[11] !== editor || $[12] !== nodeKey || $[13] !== isSelected) {
72
+ if ($[11] !== editor || $[12] !== isSelected || $[13] !== nodeKey) {
77
73
  t4 = () => {
78
74
  const hrElem_0 = editor.getElementByKey(nodeKey);
79
75
  if (hrElem_0 !== null) {
@@ -86,8 +82,8 @@ export function HorizontalRuleComponent(t0) {
86
82
  };
87
83
  t5 = [editor, isSelected, nodeKey];
88
84
  $[11] = editor;
89
- $[12] = nodeKey;
90
- $[13] = isSelected;
85
+ $[12] = isSelected;
86
+ $[13] = nodeKey;
91
87
  $[14] = t4;
92
88
  $[15] = t5;
93
89
  } else {
@@ -97,4 +93,9 @@ export function HorizontalRuleComponent(t0) {
97
93
  useEffect(t4, t5);
98
94
  return null;
99
95
  }
96
+ function _temp(node) {
97
+ if ($isHorizontalRuleNode(node)) {
98
+ node.remove();
99
+ }
100
+ }
100
101
  //# sourceMappingURL=index.js.map