@payloadcms/richtext-lexical 3.0.0-canary.b8dd0db → 3.0.0-canary.bb00d64

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 (512) hide show
  1. package/dist/cell/rscEntry.d.ts +12 -0
  2. package/dist/cell/rscEntry.d.ts.map +1 -0
  3. package/dist/cell/rscEntry.js +82 -0
  4. package/dist/cell/rscEntry.js.map +1 -0
  5. package/dist/exports/client/Field-LKCJPU2R.js +2 -0
  6. package/dist/exports/client/Field-LKCJPU2R.js.map +7 -0
  7. package/dist/exports/client/RelationshipComponent-IMM4CFBE.js +2 -0
  8. package/dist/exports/client/RelationshipComponent-IMM4CFBE.js.map +7 -0
  9. package/dist/exports/client/bundled.css +1 -1
  10. package/dist/exports/client/chunk-5PBXL4HT.js +2 -0
  11. package/dist/exports/client/chunk-5PBXL4HT.js.map +7 -0
  12. package/dist/exports/client/chunk-NNE6RSU5.js +2 -0
  13. package/dist/exports/client/chunk-NNE6RSU5.js.map +7 -0
  14. package/dist/exports/client/{chunk-LGUXX2QH.js → chunk-O4IOO4EU.js} +2 -2
  15. package/dist/exports/client/{chunk-LGUXX2QH.js.map → chunk-O4IOO4EU.js.map} +2 -2
  16. package/dist/exports/client/chunk-PDAZFJVO.js +2 -0
  17. package/dist/exports/client/chunk-PDAZFJVO.js.map +7 -0
  18. package/dist/exports/client/chunk-PSABE6CO.js +2 -0
  19. package/dist/exports/client/chunk-PSABE6CO.js.map +7 -0
  20. package/dist/exports/client/{chunk-V2LKLT2F.js → chunk-XCEM47RI.js} +3 -3
  21. package/dist/exports/client/{chunk-V2LKLT2F.js.map → chunk-XCEM47RI.js.map} +3 -3
  22. package/dist/exports/client/chunk-ZFVIUTHB.js +2 -0
  23. package/dist/exports/client/chunk-ZFVIUTHB.js.map +7 -0
  24. package/dist/exports/client/{chunk-OKMIHD2R.js → chunk-ZOYGBIAN.js} +2 -2
  25. package/dist/exports/client/{chunk-OKMIHD2R.js.map → chunk-ZOYGBIAN.js.map} +2 -2
  26. package/dist/exports/client/component-4OBXHYCD.js +2 -0
  27. package/dist/exports/client/component-4OBXHYCD.js.map +7 -0
  28. package/dist/exports/client/component-ANB7VZLA.js +2 -0
  29. package/dist/exports/client/component-ANB7VZLA.js.map +7 -0
  30. package/dist/exports/client/component-P25AKAUU.js +2 -0
  31. package/dist/exports/client/component-P25AKAUU.js.map +7 -0
  32. package/dist/exports/client/componentInline-N5LJ2LY2.js +2 -0
  33. package/dist/exports/client/componentInline-N5LJ2LY2.js.map +7 -0
  34. package/dist/exports/client/index.d.ts +3 -4
  35. package/dist/exports/client/index.d.ts.map +1 -1
  36. package/dist/exports/client/index.js +7 -7
  37. package/dist/exports/client/index.js.map +4 -4
  38. package/dist/exports/server/rsc.d.ts +3 -0
  39. package/dist/exports/server/rsc.d.ts.map +1 -0
  40. package/dist/exports/server/rsc.js +3 -0
  41. package/dist/exports/server/rsc.js.map +1 -0
  42. package/dist/features/align/client/index.d.ts +1 -4
  43. package/dist/features/align/client/index.d.ts.map +1 -1
  44. package/dist/features/blockquote/client/index.d.ts +1 -4
  45. package/dist/features/blockquote/client/index.d.ts.map +1 -1
  46. package/dist/features/blockquote/markdownTransformer.js.map +1 -1
  47. package/dist/features/blockquote/server/index.d.ts +1 -1
  48. package/dist/features/blockquote/server/index.d.ts.map +1 -1
  49. package/dist/features/blockquote/server/index.js +5 -1
  50. package/dist/features/blockquote/server/index.js.map +1 -1
  51. package/dist/features/blocks/client/component/BlockContent.d.ts +1 -0
  52. package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
  53. package/dist/features/blocks/client/component/BlockContent.js +28 -28
  54. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  55. package/dist/features/blocks/client/component/index.d.ts +1 -1
  56. package/dist/features/blocks/client/component/index.d.ts.map +1 -1
  57. package/dist/features/blocks/client/component/index.js +94 -55
  58. package/dist/features/blocks/client/component/index.js.map +1 -1
  59. package/dist/features/blocks/client/componentInline/index.d.ts +1 -1
  60. package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
  61. package/dist/features/blocks/client/componentInline/index.js +27 -29
  62. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  63. package/dist/features/blocks/client/index.d.ts +1 -4
  64. package/dist/features/blocks/client/index.d.ts.map +1 -1
  65. package/dist/features/blocks/client/index.js +35 -23
  66. package/dist/features/blocks/client/index.js.map +1 -1
  67. package/dist/features/blocks/client/nodes/BlocksNode.d.ts +2 -2
  68. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  69. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  70. package/dist/features/blocks/client/plugin/index.d.ts +2 -2
  71. package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
  72. package/dist/features/blocks/client/plugin/index.js +96 -93
  73. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  74. package/dist/features/blocks/server/index.d.ts.map +1 -1
  75. package/dist/features/blocks/server/index.js +41 -27
  76. package/dist/features/blocks/server/index.js.map +1 -1
  77. package/dist/features/blocks/server/nodes/BlocksNode.d.ts +11 -5
  78. package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
  79. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  80. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +3 -3
  81. package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
  82. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  83. package/dist/features/blocks/server/validate.d.ts.map +1 -1
  84. package/dist/features/blocks/server/validate.js +8 -5
  85. package/dist/features/blocks/server/validate.js.map +1 -1
  86. package/dist/features/converters/html/converter/converters/paragraph.d.ts.map +1 -1
  87. package/dist/features/converters/html/converter/converters/paragraph.js +4 -0
  88. package/dist/features/converters/html/converter/converters/paragraph.js.map +1 -1
  89. package/dist/features/converters/html/converter/converters/text.d.ts.map +1 -1
  90. package/dist/features/converters/html/converter/converters/text.js +2 -1
  91. package/dist/features/converters/html/converter/converters/text.js.map +1 -1
  92. package/dist/features/converters/html/converter/index.d.ts +11 -7
  93. package/dist/features/converters/html/converter/index.d.ts.map +1 -1
  94. package/dist/features/converters/html/converter/index.js +17 -1
  95. package/dist/features/converters/html/converter/index.js.map +1 -1
  96. package/dist/features/converters/html/converter/types.d.ts +3 -1
  97. package/dist/features/converters/html/converter/types.d.ts.map +1 -1
  98. package/dist/features/converters/html/converter/types.js.map +1 -1
  99. package/dist/features/converters/html/field/index.d.ts.map +1 -1
  100. package/dist/features/converters/html/field/index.js +7 -1
  101. package/dist/features/converters/html/field/index.js.map +1 -1
  102. package/dist/features/debug/testRecorder/client/index.d.ts +1 -4
  103. package/dist/features/debug/testRecorder/client/index.d.ts.map +1 -1
  104. package/dist/features/debug/testRecorder/client/plugin/index.js +180 -345
  105. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  106. package/dist/features/debug/treeView/client/index.d.ts +1 -4
  107. package/dist/features/debug/treeView/client/index.d.ts.map +1 -1
  108. package/dist/features/experimental_table/client/index.d.ts +1 -1
  109. package/dist/features/experimental_table/client/index.d.ts.map +1 -1
  110. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -1
  111. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +250 -488
  112. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  113. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -1
  114. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +39 -39
  115. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  116. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +1 -1
  117. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  118. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +60 -124
  119. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  120. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
  121. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +52 -50
  122. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  123. package/dist/features/experimental_table/client/utils/debounce.js +4 -4
  124. package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
  125. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  126. package/dist/features/experimental_table/server/index.d.ts.map +1 -1
  127. package/dist/features/experimental_table/server/index.js +20 -4
  128. package/dist/features/experimental_table/server/index.js.map +1 -1
  129. package/dist/features/format/bold/feature.client.d.ts +1 -4
  130. package/dist/features/format/bold/feature.client.d.ts.map +1 -1
  131. package/dist/features/format/inlineCode/feature.client.d.ts +1 -4
  132. package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -1
  133. package/dist/features/format/italic/feature.client.d.ts +1 -4
  134. package/dist/features/format/italic/feature.client.d.ts.map +1 -1
  135. package/dist/features/format/strikethrough/feature.client.d.ts +1 -4
  136. package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -1
  137. package/dist/features/format/subscript/feature.client.d.ts +1 -4
  138. package/dist/features/format/subscript/feature.client.d.ts.map +1 -1
  139. package/dist/features/format/superscript/feature.client.d.ts +1 -4
  140. package/dist/features/format/superscript/feature.client.d.ts.map +1 -1
  141. package/dist/features/format/underline/feature.client.d.ts +1 -4
  142. package/dist/features/format/underline/feature.client.d.ts.map +1 -1
  143. package/dist/features/heading/client/index.d.ts +1 -4
  144. package/dist/features/heading/client/index.d.ts.map +1 -1
  145. package/dist/features/heading/server/index.d.ts.map +1 -1
  146. package/dist/features/heading/server/index.js +4 -0
  147. package/dist/features/heading/server/index.js.map +1 -1
  148. package/dist/features/horizontalRule/client/component/index.d.ts +1 -1
  149. package/dist/features/horizontalRule/client/component/index.d.ts.map +1 -1
  150. package/dist/features/horizontalRule/client/component/index.js +12 -9
  151. package/dist/features/horizontalRule/client/component/index.js.map +1 -1
  152. package/dist/features/horizontalRule/client/index.d.ts +1 -4
  153. package/dist/features/horizontalRule/client/index.d.ts.map +1 -1
  154. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +2 -2
  155. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
  156. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +1 -1
  157. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  158. package/dist/features/indent/client/index.d.ts +1 -4
  159. package/dist/features/indent/client/index.d.ts.map +1 -1
  160. package/dist/features/indent/client/index.js +2 -1
  161. package/dist/features/indent/client/index.js.map +1 -1
  162. package/dist/features/link/client/index.d.ts +1 -13
  163. package/dist/features/link/client/index.d.ts.map +1 -1
  164. package/dist/features/link/client/index.js +2 -2
  165. package/dist/features/link/client/index.js.map +1 -1
  166. package/dist/features/link/client/plugins/autoLink/index.d.ts +1 -1
  167. package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
  168. package/dist/features/link/client/plugins/autoLink/index.js +3 -1
  169. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  170. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  171. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +21 -20
  172. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  173. package/dist/features/link/client/plugins/floatingLinkEditor/index.d.ts.map +1 -1
  174. package/dist/features/link/client/plugins/floatingLinkEditor/index.js +1 -1
  175. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  176. package/dist/features/link/nodes/AutoLinkNode.js +2 -2
  177. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  178. package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
  179. package/dist/features/link/nodes/LinkNode.js +12 -7
  180. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  181. package/dist/features/link/nodes/types.d.ts +3 -3
  182. package/dist/features/link/nodes/types.d.ts.map +1 -1
  183. package/dist/features/link/nodes/types.js.map +1 -1
  184. package/dist/features/link/server/baseFields.d.ts +1 -1
  185. package/dist/features/link/server/baseFields.d.ts.map +1 -1
  186. package/dist/features/link/server/baseFields.js +15 -3
  187. package/dist/features/link/server/baseFields.js.map +1 -1
  188. package/dist/features/link/server/index.d.ts.map +1 -1
  189. package/dist/features/link/server/index.js +17 -4
  190. package/dist/features/link/server/index.js.map +1 -1
  191. package/dist/features/link/server/transformExtraFields.d.ts +1 -1
  192. package/dist/features/link/server/transformExtraFields.d.ts.map +1 -1
  193. package/dist/features/link/server/transformExtraFields.js.map +1 -1
  194. package/dist/features/link/server/validate.d.ts.map +1 -1
  195. package/dist/features/link/server/validate.js +8 -5
  196. package/dist/features/link/server/validate.js.map +1 -1
  197. package/dist/features/lists/checklist/client/index.d.ts +1 -4
  198. package/dist/features/lists/checklist/client/index.d.ts.map +1 -1
  199. package/dist/features/lists/htmlConverter.d.ts.map +1 -1
  200. package/dist/features/lists/htmlConverter.js +8 -0
  201. package/dist/features/lists/htmlConverter.js.map +1 -1
  202. package/dist/features/lists/orderedList/client/index.d.ts +1 -4
  203. package/dist/features/lists/orderedList/client/index.d.ts.map +1 -1
  204. package/dist/features/lists/shared/markdown.js.map +1 -1
  205. package/dist/features/lists/unorderedList/client/index.d.ts +1 -4
  206. package/dist/features/lists/unorderedList/client/index.d.ts.map +1 -1
  207. package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +1 -1
  208. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +1 -0
  209. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
  210. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +1 -4
  211. package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -1
  212. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
  213. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  214. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  215. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
  216. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
  217. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
  218. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
  219. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
  220. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
  221. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
  222. package/dist/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
  223. package/dist/features/migrations/slateToLexical/converter/index.js +1 -0
  224. package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
  225. package/dist/features/migrations/slateToLexical/feature.client.d.ts +1 -4
  226. package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +1 -1
  227. package/dist/features/migrations/slateToLexical/feature.client.js +1 -3
  228. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  229. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
  230. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
  231. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  232. package/dist/features/paragraph/client/index.d.ts +1 -4
  233. package/dist/features/paragraph/client/index.d.ts.map +1 -1
  234. package/dist/features/paragraph/server/index.d.ts +1 -1
  235. package/dist/features/paragraph/server/index.d.ts.map +1 -1
  236. package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
  237. package/dist/features/relationship/client/components/RelationshipComponent.js +42 -29
  238. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  239. package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
  240. package/dist/features/relationship/client/drawer/index.js +27 -26
  241. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  242. package/dist/features/relationship/client/index.d.ts +2 -17
  243. package/dist/features/relationship/client/index.d.ts.map +1 -1
  244. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts +1 -1
  245. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  246. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  247. package/dist/features/relationship/client/plugins/index.js +1 -1
  248. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  249. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +1 -1
  250. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
  251. package/dist/features/relationship/server/index.d.ts +1 -1
  252. package/dist/features/relationship/server/index.d.ts.map +1 -1
  253. package/dist/features/relationship/server/index.js +50 -40
  254. package/dist/features/relationship/server/index.js.map +1 -1
  255. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +8 -6
  256. package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
  257. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  258. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  259. package/dist/features/toolbars/fixed/client/Toolbar/index.js +93 -66
  260. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  261. package/dist/features/toolbars/fixed/client/index.d.ts +1 -4
  262. package/dist/features/toolbars/fixed/client/index.d.ts.map +1 -1
  263. package/dist/features/toolbars/inline/client/Toolbar/index.js +43 -46
  264. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  265. package/dist/features/toolbars/inline/client/index.d.ts +1 -4
  266. package/dist/features/toolbars/inline/client/index.d.ts.map +1 -1
  267. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  268. package/dist/features/toolbars/shared/ToolbarButton/index.js +4 -1
  269. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  270. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +2 -2
  271. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
  272. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +12 -6
  273. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  274. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +4 -5
  275. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  276. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +119 -116
  277. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  278. package/dist/features/toolbars/types.d.ts +23 -11
  279. package/dist/features/toolbars/types.d.ts.map +1 -1
  280. package/dist/features/toolbars/types.js.map +1 -1
  281. package/dist/features/typesClient.d.ts +10 -11
  282. package/dist/features/typesClient.d.ts.map +1 -1
  283. package/dist/features/typesClient.js.map +1 -1
  284. package/dist/features/typesServer.d.ts +17 -26
  285. package/dist/features/typesServer.d.ts.map +1 -1
  286. package/dist/features/typesServer.js.map +1 -1
  287. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  288. package/dist/features/upload/client/component/index.js +69 -58
  289. package/dist/features/upload/client/component/index.js.map +1 -1
  290. package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
  291. package/dist/features/upload/client/drawer/index.js +34 -32
  292. package/dist/features/upload/client/drawer/index.js.map +1 -1
  293. package/dist/features/upload/client/feature.client.d.ts +1 -4
  294. package/dist/features/upload/client/feature.client.d.ts.map +1 -1
  295. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  296. package/dist/features/upload/client/nodes/UploadNode.js +1 -1
  297. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  298. package/dist/features/upload/client/plugin/index.js +1 -1
  299. package/dist/features/upload/client/plugin/index.js.map +1 -1
  300. package/dist/features/upload/server/feature.server.d.ts.map +1 -1
  301. package/dist/features/upload/server/feature.server.js +17 -8
  302. package/dist/features/upload/server/feature.server.js.map +1 -1
  303. package/dist/features/upload/server/nodes/UploadNode.d.ts +9 -7
  304. package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
  305. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  306. package/dist/features/upload/server/validate.d.ts.map +1 -1
  307. package/dist/features/upload/server/validate.js +7 -4
  308. package/dist/features/upload/server/validate.js.map +1 -1
  309. package/dist/field/Field.d.ts.map +1 -1
  310. package/dist/field/Field.js +29 -44
  311. package/dist/field/Field.js.map +1 -1
  312. package/dist/field/bundled.css +1 -1
  313. package/dist/field/index.d.ts.map +1 -1
  314. package/dist/field/index.js +63 -73
  315. package/dist/field/index.js.map +1 -1
  316. package/dist/field/rscEntry.d.ts +9 -0
  317. package/dist/field/rscEntry.d.ts.map +1 -0
  318. package/dist/field/rscEntry.js +37 -0
  319. package/dist/field/rscEntry.js.map +1 -0
  320. package/dist/index.d.ts +4 -3
  321. package/dist/index.d.ts.map +1 -1
  322. package/dist/index.js +94 -103
  323. package/dist/index.js.map +1 -1
  324. package/dist/lexical/EditorPlugin.d.ts.map +1 -1
  325. package/dist/lexical/EditorPlugin.js +2 -1
  326. package/dist/lexical/EditorPlugin.js.map +1 -1
  327. package/dist/lexical/LexicalEditor.d.ts +1 -1
  328. package/dist/lexical/LexicalEditor.d.ts.map +1 -1
  329. package/dist/lexical/LexicalEditor.js +10 -10
  330. package/dist/lexical/LexicalEditor.js.map +1 -1
  331. package/dist/lexical/LexicalProvider.d.ts +2 -2
  332. package/dist/lexical/LexicalProvider.d.ts.map +1 -1
  333. package/dist/lexical/LexicalProvider.js +9 -7
  334. package/dist/lexical/LexicalProvider.js.map +1 -1
  335. package/dist/lexical/config/client/EditorConfigProvider.d.ts +6 -5
  336. package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
  337. package/dist/lexical/config/client/EditorConfigProvider.js +13 -12
  338. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  339. package/dist/lexical/config/client/loader.d.ts +1 -3
  340. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  341. package/dist/lexical/config/client/loader.js +7 -19
  342. package/dist/lexical/config/client/loader.js.map +1 -1
  343. package/dist/lexical/config/client/sanitize.d.ts +1 -1
  344. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  345. package/dist/lexical/config/client/sanitize.js +4 -4
  346. package/dist/lexical/config/client/sanitize.js.map +1 -1
  347. package/dist/lexical/config/server/loader.d.ts +2 -1
  348. package/dist/lexical/config/server/loader.d.ts.map +1 -1
  349. package/dist/lexical/config/server/loader.js +2 -0
  350. package/dist/lexical/config/server/loader.js.map +1 -1
  351. package/dist/lexical/config/server/sanitize.d.ts +1 -1
  352. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  353. package/dist/lexical/config/server/sanitize.js +12 -11
  354. package/dist/lexical/config/server/sanitize.js.map +1 -1
  355. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +4 -4
  356. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
  357. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +82 -113
  358. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  359. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +2 -2
  360. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
  361. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +2 -2
  362. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  363. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +3 -2
  364. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
  365. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  366. package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
  367. package/dist/lexical/plugins/SlashMenu/index.js +24 -30
  368. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  369. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
  370. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +93 -130
  371. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  372. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts +1 -1
  373. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
  374. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +1 -1
  375. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
  376. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +1 -1
  377. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
  378. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
  379. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +119 -137
  380. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  381. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
  382. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +16 -32
  383. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  384. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -1
  385. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +3 -1
  386. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
  387. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -1
  388. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +3 -4
  389. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  390. package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  391. package/dist/lexical/plugins/handles/utils/setHandlePosition.js +4 -6
  392. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  393. package/dist/lexical/theme/EditorTheme.d.ts.map +1 -1
  394. package/dist/lexical/theme/EditorTheme.js +1 -2
  395. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  396. package/dist/lexical/ui/icons/Caret/index.svg +2 -2
  397. package/dist/lexical/utils/nodeFormat.d.ts +2 -2
  398. package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
  399. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  400. package/dist/lexical/utils/rect.d.ts +4 -4
  401. package/dist/lexical/utils/rect.d.ts.map +1 -1
  402. package/dist/lexical/utils/rect.js.map +1 -1
  403. package/dist/lexical/utils/setFloatingElemPosition.d.ts +1 -1
  404. package/dist/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
  405. package/dist/lexical/utils/setFloatingElemPosition.js +1 -1
  406. package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
  407. package/dist/lexical/utils/url.d.ts +5 -0
  408. package/dist/lexical/utils/url.d.ts.map +1 -1
  409. package/dist/lexical/utils/url.js +25 -5
  410. package/dist/lexical/utils/url.js.map +1 -1
  411. package/dist/populateGraphQL/populate.d.ts +3 -2
  412. package/dist/populateGraphQL/populate.d.ts.map +1 -1
  413. package/dist/populateGraphQL/populate.js +3 -1
  414. package/dist/populateGraphQL/populate.js.map +1 -1
  415. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts +1 -1
  416. package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
  417. package/dist/populateGraphQL/populateLexicalPopulationPromises.js +5 -4
  418. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  419. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  420. package/dist/types.d.ts +20 -7
  421. package/dist/types.d.ts.map +1 -1
  422. package/dist/types.js.map +1 -1
  423. package/dist/utilities/createClientFeature.d.ts +3 -5
  424. package/dist/utilities/createClientFeature.d.ts.map +1 -1
  425. package/dist/utilities/createClientFeature.js +1 -4
  426. package/dist/utilities/createClientFeature.js.map +1 -1
  427. package/dist/utilities/createServerFeature.d.ts +1 -0
  428. package/dist/utilities/createServerFeature.d.ts.map +1 -1
  429. package/dist/utilities/createServerFeature.js +2 -0
  430. package/dist/utilities/createServerFeature.js.map +1 -1
  431. package/dist/utilities/fieldsDrawer/Drawer.d.ts +1 -0
  432. package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
  433. package/dist/utilities/fieldsDrawer/Drawer.js +68 -27
  434. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  435. package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
  436. package/dist/utilities/fieldsDrawer/DrawerContent.js +115 -139
  437. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  438. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts +13 -0
  439. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -0
  440. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +129 -0
  441. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -0
  442. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts +10 -0
  443. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -0
  444. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +136 -0
  445. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -0
  446. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts +16 -0
  447. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -0
  448. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +144 -0
  449. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -0
  450. package/dist/utilities/generateImportMap.d.ts.map +1 -1
  451. package/dist/utilities/generateImportMap.js +2 -3
  452. package/dist/utilities/generateImportMap.js.map +1 -1
  453. package/dist/utilities/generateSchemaMap.d.ts.map +1 -1
  454. package/dist/utilities/generateSchemaMap.js +13 -10
  455. package/dist/utilities/generateSchemaMap.js.map +1 -1
  456. package/dist/utilities/initLexicalFeatures.d.ts +18 -0
  457. package/dist/utilities/initLexicalFeatures.d.ts.map +1 -0
  458. package/dist/utilities/initLexicalFeatures.js +95 -0
  459. package/dist/utilities/initLexicalFeatures.js.map +1 -0
  460. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts +1 -1
  461. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts.map +1 -1
  462. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +1 -1
  463. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
  464. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts +1 -1
  465. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
  466. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +5 -1
  467. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  468. package/dist/utilities/useLexicalFeature.d.ts.map +1 -1
  469. package/dist/utilities/useLexicalFeature.js +12 -4
  470. package/dist/utilities/useLexicalFeature.js.map +1 -1
  471. package/dist/validate/index.d.ts.map +1 -1
  472. package/dist/validate/index.js +2 -2
  473. package/dist/validate/index.js.map +1 -1
  474. package/dist/validate/validateNodes.d.ts +2 -2
  475. package/dist/validate/validateNodes.d.ts.map +1 -1
  476. package/dist/validate/validateNodes.js +4 -4
  477. package/dist/validate/validateNodes.js.map +1 -1
  478. package/package.json +51 -49
  479. package/dist/cell/index.d.ts +0 -9
  480. package/dist/cell/index.d.ts.map +0 -1
  481. package/dist/cell/index.js +0 -135
  482. package/dist/cell/index.js.map +0 -1
  483. package/dist/exports/client/Field-63NGLPJB.js +0 -2
  484. package/dist/exports/client/Field-63NGLPJB.js.map +0 -7
  485. package/dist/exports/client/RelationshipComponent-3QWBV4GT.js +0 -2
  486. package/dist/exports/client/RelationshipComponent-3QWBV4GT.js.map +0 -7
  487. package/dist/exports/client/chunk-G5DTIOPI.js +0 -2
  488. package/dist/exports/client/chunk-G5DTIOPI.js.map +0 -7
  489. package/dist/exports/client/chunk-NI6Z4GBD.js +0 -2
  490. package/dist/exports/client/chunk-NI6Z4GBD.js.map +0 -7
  491. package/dist/exports/client/chunk-TO2W7Q2G.js +0 -2
  492. package/dist/exports/client/chunk-TO2W7Q2G.js.map +0 -7
  493. package/dist/exports/client/component-3OFD6Q4Z.js +0 -2
  494. package/dist/exports/client/component-3OFD6Q4Z.js.map +0 -7
  495. package/dist/exports/client/component-LCAAX56T.js +0 -2
  496. package/dist/exports/client/component-LCAAX56T.js.map +0 -7
  497. package/dist/exports/client/component-LLWMZU6K.js +0 -2
  498. package/dist/exports/client/component-LLWMZU6K.js.map +0 -7
  499. package/dist/exports/client/componentInline-72VZAAHP.js +0 -2
  500. package/dist/exports/client/componentInline-72VZAAHP.js.map +0 -7
  501. package/dist/features/createClientComponent.d.ts +0 -7
  502. package/dist/features/createClientComponent.d.ts.map +0 -1
  503. package/dist/features/createClientComponent.js +0 -13
  504. package/dist/features/createClientComponent.js.map +0 -1
  505. package/dist/features/createFeaturePropComponent.d.ts +0 -6
  506. package/dist/features/createFeaturePropComponent.d.ts.map +0 -1
  507. package/dist/features/createFeaturePropComponent.js +0 -19
  508. package/dist/features/createFeaturePropComponent.js.map +0 -1
  509. package/dist/utilities/generateComponentMap.d.ts +0 -6
  510. package/dist/utilities/generateComponentMap.d.ts.map +0 -1
  511. package/dist/utilities/generateComponentMap.js +0 -99
  512. package/dist/utilities/generateComponentMap.js.map +0 -1
@@ -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","TableCellHeaderStates","TableCellNode","getTableObserverFromTableElement","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","isTableSelectionRectangular","nodes","getNodes","currentRows","currentRow","expectedColumns","currentColumns","i","length","node","row","getParentOrThrow","Error","colSpan","__colSpan","j","undefined","__rowSpan","every","v","$canUnmerge","isCollapsed","anchor","is","focus","cell","$cellContainsEmptyParagraph","getChildrenSize","firstChild","getFirstChildOrThrow","isEmpty","$selectLastDescendant","lastDescendant","getLastDescendant","select","selectEnd","selectNext","TableActionMenu","t0","$","cellMerge","contextRef","onClose","setIsMenuOpen","tableCellNode","_tableCellNode","editor","dropDownRef","updateTableCellNode","t1","Symbol","for","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","y","t2","t3","registerMutationListener","nodeMutations","nodeUpdated","get","getKey","getEditorState","read","getLatest","skipInitialization","t4","t5","currentSelectionCounts","menuButtonElement","current","dropDownElement","rootElement","getRootElement","rootEleRect","getBoundingClientRect","menuButtonRect","style","opacity","dropDownElementRect","leftPosition","right","width","window","innerWidth","position","left","pageXOffset","topPosition","top","height","innerHeight","position_0","bottom","pageYOffset","t6","handleClickOutside","event","contains","target","addEventListener","removeEventListener","t7","update","isAttached","tableNode","tableElement","getElementByKey","tableSelection","clearHighlight","markDirty","rootNode","selectStart","clearTableSelection","t8","selection_0","firstCell","setColSpan","setRowSpan","getFirstChild","remove","isEmpty_0","append","getChildren","mergeTableCellsAtSelection","t9","unmergeTableCellsAtSelection","t10","shouldInsertAfter","insertTableRowAtSelection","t11","shouldInsertAfter_0","i_0","insertTableColumnAtSelection","t12","deleteTableRowAtSelection","t13","tableNode_0","deleteTableAtSelection","t14","deleteTableColumnAtSelection","t15","tableNode_1","tableRowIndex","tableRows","tableRow","forEach","tableCell","toggleHeaderStyle","ROW","toggleTableRowIsHeader","t16","tableNode_2","tableColumnIndex","tableRows_0","maxRowsLength","Math","max","map","r","tableRow_0","tableCells","tableCell_0","COLUMN","toggleTableColumnIsHeader","mergeCellButton","t17","t18","t19","t20","t21","t22","t23","t24","t25","_jsxs","className","onClick","_temp","ref","children","Fragment","_jsx","type","__headerState","e","stopPropagation","TableCellActionMenuContainer","anchorElem","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","nativeSelection","getSelection","activeElement","document","anchorNode","tableCellNodeFromSelection","getNode","tableCellParentNodeDOM","registerUpdateListener","menuButtonDOM","tableCellNodeDOM","tableCellRect","menuRect","anchorRect","transform","prevTableCellDOM","TableActionMenuPlugin","isEditable","body"],"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 TableCellHeaderStates,\n TableCellNode,\n getTableObserverFromTableElement,\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\n// This is important when merging cells as there is no good way to re-merge weird shapes (a result\n// of selecting merged cells and non-merged)\nfunction isTableSelectionRectangular(selection: TableSelection): boolean {\n const nodes = selection.getNodes()\n const currentRows: Array<number> = []\n let currentRow = null\n let expectedColumns = null\n let currentColumns = 0\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n const row = node.getParentOrThrow()\n if ($isTableRowNode(row)) {\n throw new Error('Expected CellNode to have a RowNode parent')\n }\n if (currentRow !== row) {\n if (expectedColumns !== null && currentColumns !== expectedColumns) {\n return false\n }\n if (currentRow !== null) {\n expectedColumns = currentColumns\n }\n currentRow = row\n currentColumns = 0\n }\n const colSpan = node.__colSpan\n for (let j = 0; j < colSpan; j++) {\n if (currentRows[currentColumns + j] === undefined) {\n currentRows[currentColumns + j] = 0\n }\n currentRows[currentColumns + j] += node.__rowSpan\n }\n currentColumns += colSpan\n }\n }\n return (\n (expectedColumns === null || currentColumns === expectedColumns) &&\n currentRows.every((v) => v === currentRows[0])\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 setCanMergeCells(\n isTableSelectionRectangular(selection) &&\n (currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1),\n )\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 tableSelection = getTableObserverFromTableElement(tableElement)\n if (tableSelection !== null) {\n tableSelection.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: TableCellNode | null = 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 tableRow.getChildren().forEach((tableCell) => {\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.toggleHeaderStyle(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 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.toggleHeaderStyle(TableCellHeaderStates.COLUMN)\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-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<TableCellNode | null>(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":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AA0XjE,eAAO,MAAM,sBAAsB,EAAE,eAQpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAgXjE,eAAO,MAAM,sBAAsB,EAAE,eAQpC,CAAA"}
@@ -4,7 +4,7 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
6
6
  import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
7
- import { $computeTableMapSkipCellCheck, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $isTableCellNode, $isTableRowNode, getDOMCellFromTarget } from '@lexical/table';
7
+ import { $computeTableMapSkipCellCheck, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $isTableCellNode, $isTableRowNode, getDOMCellFromTarget, TableNode } from '@lexical/table';
8
8
  import { calculateZoomLevel } from '@lexical/utils';
9
9
  import { $getNearestNodeFromDOMNode } from 'lexical';
10
10
  import * as React from 'react';
@@ -12,7 +12,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
12
12
  import { createPortal } from 'react-dom';
13
13
  import { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js';
14
14
  const MIN_ROW_HEIGHT = 33;
15
- const MIN_COLUMN_WIDTH = 50;
15
+ const MIN_COLUMN_WIDTH = 92;
16
16
  function TableCellResizer({
17
17
  editor
18
18
  }) {
@@ -35,6 +35,17 @@ function TableCellResizer({
35
35
  const isMouseDownOnEvent = event => {
36
36
  return (event.buttons & 1) === 1;
37
37
  };
38
+ useEffect(() => {
39
+ return editor.registerNodeTransform(TableNode, tableNode => {
40
+ if (tableNode.getColWidths()) {
41
+ return tableNode;
42
+ }
43
+ const numColumns = tableNode.getColumnCount();
44
+ const columnWidth = MIN_COLUMN_WIDTH;
45
+ tableNode.setColWidths(Array(numColumns).fill(columnWidth));
46
+ return tableNode;
47
+ });
48
+ }, [editor]);
38
49
  useEffect(() => {
39
50
  const onMouseMove = event_0 => {
40
51
  setTimeout(() => {
@@ -59,8 +70,8 @@ function TableCellResizer({
59
70
  if (!tableCellNode) {
60
71
  throw new Error('TableCellResizer: Table cell node not found.');
61
72
  }
62
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
63
- const tableElement = editor.getElementByKey(tableNode.getKey());
73
+ const tableNode_0 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
74
+ const tableElement = editor.getElementByKey(tableNode_0.getKey());
64
75
  if (!tableElement) {
65
76
  throw new Error('TableCellResizer: Table element not found.');
66
77
  }
@@ -85,12 +96,12 @@ function TableCellResizer({
85
96
  }, 0);
86
97
  };
87
98
  const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {
88
- rootElement?.addEventListener('mousemove', onMouseMove);
89
- rootElement?.addEventListener('mousedown', onMouseDown);
90
- rootElement?.addEventListener('mouseup', onMouseUp);
91
99
  prevRootElement?.removeEventListener('mousemove', onMouseMove);
92
100
  prevRootElement?.removeEventListener('mousedown', onMouseDown);
93
101
  prevRootElement?.removeEventListener('mouseup', onMouseUp);
102
+ rootElement?.addEventListener('mousemove', onMouseMove);
103
+ rootElement?.addEventListener('mousedown', onMouseDown);
104
+ rootElement?.addEventListener('mouseup', onMouseUp);
94
105
  });
95
106
  return () => {
96
107
  removeRootListener();
@@ -111,9 +122,9 @@ function TableCellResizer({
111
122
  if (!$isTableCellNode(tableCellNode_0)) {
112
123
  throw new Error('TableCellResizer: Table cell node not found.');
113
124
  }
114
- const tableNode_0 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_0);
115
- const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode_0);
116
- const tableRows = tableNode_0.getChildren();
125
+ const tableNode_1 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_0);
126
+ const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode_0) + tableCellNode_0.getRowSpan() - 1;
127
+ const tableRows = tableNode_1.getChildren();
117
128
  if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {
118
129
  throw new Error('Expected table cell to be inside of table row.');
119
130
  }
@@ -132,21 +143,9 @@ function TableCellResizer({
132
143
  tag: 'skip-scroll-into-view'
133
144
  });
134
145
  }, [activeCell, editor]);
135
- const getCellNodeWidth = (cell_1, activeEditor) => {
136
- const width = cell_1.getWidth();
137
- if (width !== undefined) {
138
- return width;
139
- }
146
+ const getCellNodeHeight = (cell_1, activeEditor) => {
140
147
  const domCellNode = activeEditor.getElementByKey(cell_1.getKey());
141
- if (domCellNode == null) {
142
- return undefined;
143
- }
144
- const computedStyle = getComputedStyle(domCellNode);
145
- return domCellNode.clientWidth - parseFloat(computedStyle.paddingLeft) - parseFloat(computedStyle.paddingRight);
146
- };
147
- const getCellNodeHeight = (cell_2, activeEditor_0) => {
148
- const domCellNode_0 = activeEditor_0.getElementByKey(cell_2.getKey());
149
- return domCellNode_0?.clientHeight;
148
+ return domCellNode?.clientHeight;
150
149
  };
151
150
  const getCellColumnIndex = (tableCellNode_1, tableMap) => {
152
151
  for (let row = 0; row < tableMap.length; row++) {
@@ -166,23 +165,24 @@ function TableCellResizer({
166
165
  if (!$isTableCellNode(tableCellNode_2)) {
167
166
  throw new Error('TableCellResizer: Table cell node not found.');
168
167
  }
169
- const tableNode_1 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_2);
170
- const [tableMap_0] = $computeTableMapSkipCellCheck(tableNode_1, null, null);
168
+ const tableNode_2 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_2);
169
+ const [tableMap_0] = $computeTableMapSkipCellCheck(tableNode_2, null, null);
171
170
  const columnIndex = getCellColumnIndex(tableCellNode_2, tableMap_0);
172
171
  if (columnIndex === undefined) {
173
172
  throw new Error('TableCellResizer: Table column not found.');
174
173
  }
175
- for (let row_0 = 0; row_0 < tableMap_0.length; row_0++) {
176
- const cell_3 = tableMap_0[row_0][columnIndex];
177
- if (cell_3.startRow === row_0 && (columnIndex === tableMap_0[row_0].length - 1 || tableMap_0[row_0][columnIndex].cell !== tableMap_0[row_0][columnIndex + 1].cell)) {
178
- const width_0 = getCellNodeWidth(cell_3.cell, editor);
179
- if (width_0 === undefined) {
180
- continue;
181
- }
182
- const newWidth = Math.max(width_0 + widthChange, MIN_COLUMN_WIDTH);
183
- cell_3.cell.setWidth(newWidth);
184
- }
174
+ const colWidths = tableNode_2.getColWidths();
175
+ if (!colWidths) {
176
+ return;
177
+ }
178
+ const width = colWidths[columnIndex];
179
+ if (width === undefined) {
180
+ return;
185
181
  }
182
+ const newColWidths = [...colWidths];
183
+ const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH);
184
+ newColWidths[columnIndex] = newWidth;
185
+ tableNode_2.setColWidths(newColWidths);
186
186
  }, {
187
187
  tag: 'skip-scroll-into-view'
188
188
  });
@@ -236,7 +236,7 @@ function TableCellResizer({
236
236
  height: height_0,
237
237
  left,
238
238
  top,
239
- width: width_1
239
+ width: width_0
240
240
  } = activeCell.elem.getBoundingClientRect();
241
241
  const zoom_0 = calculateZoomLevel(activeCell.elem);
242
242
  const zoneWidth = 10 // Pixel width of the zone where you can drag the edge
@@ -248,13 +248,13 @@ function TableCellResizer({
248
248
  height: `${zoneWidth}px`,
249
249
  left: `${window.pageXOffset + left}px`,
250
250
  top: `${window.pageYOffset + top + height_0 - zoneWidth / 2}px`,
251
- width: `${width_1}px`
251
+ width: `${width_0}px`
252
252
  },
253
253
  right: {
254
254
  backgroundColor: 'none',
255
255
  cursor: 'col-resize',
256
256
  height: `${height_0}px`,
257
- left: `${window.pageXOffset + left + width_1 - zoneWidth / 2}px`,
257
+ left: `${window.pageXOffset + left + width_0 - zoneWidth / 2}px`,
258
258
  top: `${window.pageYOffset + top}px`,
259
259
  width: `${zoneWidth}px`
260
260
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$isTableCellNode","$isTableRowNode","getDOMCellFromTarget","calculateZoomLevel","$getNearestNodeFromDOMNode","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","useEditorConfigContext","MIN_ROW_HEIGHT","MIN_COLUMN_WIDTH","TableCellResizer","editor","targetRef","resizerRef","tableRectRef","editorConfig","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","current","isMouseDownOnEvent","event","buttons","onMouseMove","setTimeout","target","x","clientX","y","clientY","contains","cell","update","tableCellNode","elem","Error","tableNode","tableElement","getElementByKey","getKey","getBoundingClientRect","onMouseDown","onMouseUp","removeRootListener","registerRootListener","rootElement","prevRootElement","addEventListener","removeEventListener","isHeightChanging","direction","updateRowHeight","heightChange","tableRowIndex","tableRows","getChildren","length","tableRow","height","getHeight","undefined","rowCells","Math","min","map","getCellNodeHeight","Infinity","newHeight","max","setHeight","tag","getCellNodeWidth","activeEditor","width","getWidth","domCellNode","computedStyle","getComputedStyle","clientWidth","parseFloat","paddingLeft","paddingRight","clientHeight","getCellColumnIndex","tableMap","row","column","updateColumnWidth","widthChange","columnIndex","startRow","newWidth","setWidth","mouseUpHandler","handler","preventDefault","stopPropagation","zoom","document","toggleResize","getResizers","left","top","zoneWidth","styles","bottom","backgroundColor","cursor","window","pageXOffset","pageYOffset","right","tableRect","resizerStyles","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","$","isEditable","t0","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableCellNode, TableDOMCell, TableMapType, TableMapValueType } from '@lexical/table'\nimport type { LexicalEditor } from 'lexical'\nimport type { JSX, MouseEventHandler } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n getDOMCellFromTarget,\n} from '@lexical/table'\nimport { calculateZoomLevel } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\n\ntype MousePosition = {\n x: number\n y: number\n}\n\ntype MouseDraggingDirection = 'bottom' | 'right'\n\nconst MIN_ROW_HEIGHT = 33\nconst MIN_COLUMN_WIDTH = 50\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null)\n const resizerRef = useRef<HTMLDivElement | null>(null)\n const tableRectRef = useRef<ClientRect | null>(null)\n const editorConfig = useEditorConfigContext()\n\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<TableDOMCell | null>(null)\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false)\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null)\n\n const resetState = useCallback(() => {\n updateActiveCell(null)\n targetRef.current = null\n updateDraggingDirection(null)\n mouseStartPosRef.current = null\n tableRectRef.current = null\n }, [])\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1\n }\n\n useEffect(() => {\n const onMouseMove = (event: MouseEvent) => {\n setTimeout(() => {\n const target = event.target\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n })\n return\n }\n updateIsMouseDown(isMouseDownOnEvent(event))\n if (resizerRef.current && resizerRef.current.contains(target as Node)) {\n return\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target as HTMLElement\n const cell = getDOMCellFromTarget(target as HTMLElement)\n\n if (cell && activeCell !== cell) {\n editor.update(() => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem)\n\n if (!tableCellNode) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(tableNode.getKey())\n\n if (!tableElement) {\n throw new Error('TableCellResizer: Table element not found.')\n }\n\n targetRef.current = target as HTMLElement\n tableRectRef.current = tableElement.getBoundingClientRect()\n updateActiveCell(cell)\n })\n } else if (cell == null) {\n resetState()\n }\n }\n }, 0)\n }\n\n const onMouseDown = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(true)\n }, 0)\n }\n\n const onMouseUp = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(false)\n }, 0)\n }\n\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\n rootElement?.addEventListener('mousemove', onMouseMove)\n rootElement?.addEventListener('mousedown', onMouseDown)\n rootElement?.addEventListener('mouseup', onMouseUp)\n\n prevRootElement?.removeEventListener('mousemove', onMouseMove)\n prevRootElement?.removeEventListener('mousedown', onMouseDown)\n prevRootElement?.removeEventListener('mouseup', onMouseUp)\n })\n\n return () => {\n removeRootListener()\n }\n }, [activeCell, draggingDirection, editor, resetState])\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === 'bottom') {\n return true\n }\n return false\n }\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n let height = tableRow.getHeight()\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>()\n height = Math.min(\n ...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity),\n )\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT)\n tableRow.setHeight(newHeight)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const getCellNodeWidth = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const width = cell.getWidth()\n if (width !== undefined) {\n return width\n }\n\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n if (domCellNode == null) {\n return undefined\n }\n const computedStyle = getComputedStyle(domCellNode)\n return (\n domCellNode.clientWidth -\n parseFloat(computedStyle.paddingLeft) -\n parseFloat(computedStyle.paddingRight)\n )\n }\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n return domCellNode?.clientHeight\n }\n\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\n for (let row = 0; row < tableMap.length; row++) {\n for (let column = 0; column < tableMap[row].length; column++) {\n if (tableMap[row][column].cell === tableCellNode) {\n return column\n }\n }\n }\n }\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap)\n if (columnIndex === undefined) {\n throw new Error('TableCellResizer: Table column not found.')\n }\n\n for (let row = 0; row < tableMap.length; row++) {\n const cell: TableMapValueType = tableMap[row][columnIndex]\n if (\n cell.startRow === row &&\n (columnIndex === tableMap[row].length - 1 ||\n tableMap[row][columnIndex].cell !== tableMap[row][columnIndex + 1].cell)\n ) {\n const width = getCellNodeWidth(cell.cell, editor)\n if (width === undefined) {\n continue\n }\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n cell.cell.setWidth(newWidth)\n }\n }\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current\n\n if (activeCell === null) {\n return\n }\n const zoom = calculateZoomLevel(event.target as Element)\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom\n updateRowHeight(heightChange)\n } else {\n const widthChange = (event.clientX - x) / zoom\n updateColumnWidth(widthChange)\n }\n\n resetState()\n document.removeEventListener('mouseup', handler)\n }\n }\n return handler\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight],\n )\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n }\n updateMouseCurrentPos(mouseStartPosRef.current)\n updateDraggingDirection(direction)\n\n document.addEventListener('mouseup', mouseUpHandler(direction))\n },\n [activeCell, mouseUpHandler],\n )\n\n const getResizers = useCallback(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.pageXOffset + left}px`,\n top: `${window.pageYOffset + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.pageXOffset + left + width - zoneWidth / 2}px`,\n top: `${window.pageYOffset + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.pageXOffset + tableRect.left}px`\n styles[draggingDirection].top = `${window.pageYOffset + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.pageYOffset + tableRect.top}px`\n styles[draggingDirection].left = `${window.pageXOffset + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n return styles\n }\n\n return {\n bottom: null,\n left: null,\n right: null,\n top: null,\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n const resizerStyles = getResizers()\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["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","getResizers","left","top","zoneWidth","styles","bottom","backgroundColor","cursor","window","pageXOffset","pageYOffset","right","tableRect","resizerStyles","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","$","isEditable","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 getResizers = useCallback(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.pageXOffset + left}px`,\n top: `${window.pageYOffset + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.pageXOffset + left + width - zoneWidth / 2}px`,\n top: `${window.pageYOffset + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.pageXOffset + tableRect.left}px`\n styles[draggingDirection].top = `${window.pageYOffset + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.pageYOffset + tableRect.top}px`\n styles[draggingDirection].left = `${window.pageXOffset + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n return styles\n }\n\n return {\n bottom: null,\n left: null,\n right: null,\n top: null,\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n const resizerStyles = getResizers()\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
2
  export declare function TableHoverActionsPlugin({ anchorElem, }: {
3
3
  anchorElem?: HTMLElement;
4
- }): React.ReactPortal | null;
4
+ }): null | React.ReactPortal;
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAmN9B,wBAAgB,uBAAuB,CAAC,EACtC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAE3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAmN9B,wBAAgB,uBAAuB,CAAC,EACtC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,IAAI,GAAG,KAAK,CAAC,WAAW,CAE3B"}