@kopexa/extension-table 17.0.46 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/dist/chunk-2NBDRVYL.mjs +428 -0
  2. package/dist/chunk-3SWV7BGP.mjs +638 -0
  3. package/dist/chunk-4QSZXHZO.mjs +276 -0
  4. package/dist/chunk-5B5XIL2G.mjs +457 -0
  5. package/dist/chunk-62B2LU2Q.mjs +603 -0
  6. package/dist/chunk-6FHFDGJO.mjs +251 -0
  7. package/dist/chunk-CD62W5C3.mjs +165 -0
  8. package/dist/chunk-CN73TYHV.mjs +190 -0
  9. package/dist/chunk-CPDSPBS6.mjs +276 -0
  10. package/dist/chunk-E7W2KRZG.mjs +49 -0
  11. package/dist/chunk-G6GHC2WO.mjs +276 -0
  12. package/dist/chunk-GBTQVIN5.mjs +174 -0
  13. package/dist/chunk-GDEXPEW5.mjs +52 -0
  14. package/dist/chunk-GQLZBIWF.mjs +198 -0
  15. package/dist/chunk-IRJ6RAVQ.mjs +116 -0
  16. package/dist/chunk-J4VOSZCZ.mjs +59 -0
  17. package/dist/chunk-KIYFW7MP.mjs +122 -0
  18. package/dist/chunk-KTRZVXJC.mjs +306 -0
  19. package/dist/chunk-LUA32VH4.mjs +35 -0
  20. package/dist/{chunk-2L3HZWWG.mjs → chunk-MB52MZQ4.mjs} +7 -8
  21. package/dist/chunk-PTX5UYV6.mjs +10 -0
  22. package/dist/chunk-TEGO6KUS.mjs +96 -0
  23. package/dist/chunk-VIBVRWS4.mjs +197 -0
  24. package/dist/chunk-VQV757EG.mjs +113 -0
  25. package/dist/chunk-XRNQXADK.mjs +149 -0
  26. package/dist/chunk-ZVPJDJBO.mjs +134 -0
  27. package/dist/{kit.d.mts → extensions/kit.d.mts} +1 -3
  28. package/dist/{kit.d.ts → extensions/kit.d.ts} +1 -3
  29. package/dist/extensions/kit.js +1041 -0
  30. package/dist/extensions/kit.mjs +15 -0
  31. package/dist/extensions/table-cell.d.mts +6 -0
  32. package/dist/extensions/table-cell.d.ts +6 -0
  33. package/dist/extensions/table-cell.js +70 -0
  34. package/dist/extensions/table-cell.mjs +8 -0
  35. package/dist/extensions/table-handle-plugin.d.mts +46 -0
  36. package/dist/extensions/table-handle-plugin.d.ts +46 -0
  37. package/dist/extensions/table-handle-plugin.js +1100 -0
  38. package/dist/extensions/table-handle-plugin.mjs +18 -0
  39. package/dist/extensions/table-handle.d.mts +19 -0
  40. package/dist/extensions/table-handle.d.ts +19 -0
  41. package/dist/extensions/table-handle.js +865 -0
  42. package/dist/extensions/table-handle.mjs +11 -0
  43. package/dist/{table → extensions}/table.d.mts +2 -2
  44. package/dist/{table → extensions}/table.d.ts +2 -2
  45. package/dist/extensions/table.js +138 -0
  46. package/dist/extensions/table.mjs +9 -0
  47. package/dist/hooks/use-resize-overlay.d.mts +5 -0
  48. package/dist/hooks/use-resize-overlay.d.ts +5 -0
  49. package/dist/hooks/use-resize-overlay.js +83 -0
  50. package/dist/hooks/use-resize-overlay.mjs +9 -0
  51. package/dist/hooks/use-table-add-row-column.d.mts +57 -0
  52. package/dist/hooks/use-table-add-row-column.d.ts +57 -0
  53. package/dist/hooks/use-table-add-row-column.js +551 -0
  54. package/dist/hooks/use-table-add-row-column.mjs +11 -0
  55. package/dist/hooks/use-table-align-cell.d.mts +148 -0
  56. package/dist/hooks/use-table-align-cell.d.ts +148 -0
  57. package/dist/hooks/use-table-align-cell.js +655 -0
  58. package/dist/hooks/use-table-align-cell.mjs +13 -0
  59. package/dist/hooks/use-table-clear-row-column-content.d.mts +103 -0
  60. package/dist/hooks/use-table-clear-row-column-content.d.ts +103 -0
  61. package/dist/hooks/use-table-clear-row-column-content.js +681 -0
  62. package/dist/hooks/use-table-clear-row-column-content.mjs +11 -0
  63. package/dist/hooks/use-table-delete-row-column.d.mts +87 -0
  64. package/dist/hooks/use-table-delete-row-column.d.ts +87 -0
  65. package/dist/hooks/use-table-delete-row-column.js +459 -0
  66. package/dist/hooks/use-table-delete-row-column.mjs +11 -0
  67. package/dist/hooks/use-table-duplicate-row-column.d.mts +49 -0
  68. package/dist/hooks/use-table-duplicate-row-column.d.ts +49 -0
  69. package/dist/hooks/use-table-duplicate-row-column.js +758 -0
  70. package/dist/hooks/use-table-duplicate-row-column.mjs +11 -0
  71. package/dist/hooks/use-table-handle-positioning.d.mts +42 -0
  72. package/dist/hooks/use-table-handle-positioning.d.ts +42 -0
  73. package/dist/hooks/use-table-handle-positioning.js +190 -0
  74. package/dist/hooks/use-table-handle-positioning.mjs +10 -0
  75. package/dist/hooks/use-table-handle-state.d.mts +28 -0
  76. package/dist/hooks/use-table-handle-state.d.ts +28 -0
  77. package/dist/hooks/use-table-handle-state.js +76 -0
  78. package/dist/hooks/use-table-handle-state.mjs +9 -0
  79. package/dist/hooks/use-table-header-row-column.d.mts +58 -0
  80. package/dist/hooks/use-table-header-row-column.d.ts +58 -0
  81. package/dist/hooks/use-table-header-row-column.js +603 -0
  82. package/dist/hooks/use-table-header-row-column.mjs +13 -0
  83. package/dist/hooks/use-table-merge-split-cell.d.mts +123 -0
  84. package/dist/hooks/use-table-merge-split-cell.d.ts +123 -0
  85. package/dist/hooks/use-table-merge-split-cell.js +331 -0
  86. package/dist/hooks/use-table-merge-split-cell.mjs +12 -0
  87. package/dist/hooks/use-table-move-row-column.d.mts +101 -0
  88. package/dist/hooks/use-table-move-row-column.d.ts +101 -0
  89. package/dist/hooks/use-table-move-row-column.js +621 -0
  90. package/dist/hooks/use-table-move-row-column.mjs +13 -0
  91. package/dist/hooks/use-table-sort-row-column.d.mts +118 -0
  92. package/dist/hooks/use-table-sort-row-column.d.ts +118 -0
  93. package/dist/hooks/use-table-sort-row-column.js +623 -0
  94. package/dist/hooks/use-table-sort-row-column.mjs +13 -0
  95. package/dist/index.d.mts +17 -6
  96. package/dist/index.d.ts +17 -6
  97. package/dist/index.js +4947 -660
  98. package/dist/index.mjs +43 -21
  99. package/dist/lib/constants.d.mts +4 -0
  100. package/dist/lib/constants.d.ts +4 -0
  101. package/dist/{table/lib/is-cell-selection.js → lib/constants.js} +10 -10
  102. package/dist/lib/constants.mjs +10 -0
  103. package/dist/lib/create-image.d.mts +12 -0
  104. package/dist/lib/create-image.d.ts +12 -0
  105. package/dist/lib/create-image.js +221 -0
  106. package/dist/lib/create-image.mjs +8 -0
  107. package/dist/lib/table-utils.d.mts +263 -0
  108. package/dist/lib/table-utils.d.ts +263 -0
  109. package/dist/lib/table-utils.js +488 -0
  110. package/dist/lib/table-utils.mjs +40 -0
  111. package/dist/messages.d.mts +174 -0
  112. package/dist/messages.d.ts +174 -0
  113. package/dist/messages.js +213 -0
  114. package/dist/{table-row.mjs → messages.mjs} +3 -3
  115. package/dist/ui/table-alignment-menu.d.mts +25 -0
  116. package/dist/ui/table-alignment-menu.d.ts +25 -0
  117. package/dist/ui/table-alignment-menu.js +758 -0
  118. package/dist/ui/table-alignment-menu.mjs +14 -0
  119. package/dist/ui/table-cell-handle-menu.d.mts +12 -0
  120. package/dist/ui/table-cell-handle-menu.d.ts +12 -0
  121. package/dist/ui/table-cell-handle-menu.js +1317 -0
  122. package/dist/ui/table-cell-handle-menu.mjs +17 -0
  123. package/dist/ui/table-handle-menu.d.mts +23 -0
  124. package/dist/ui/table-handle-menu.d.ts +23 -0
  125. package/dist/ui/table-handle-menu.js +2598 -0
  126. package/dist/ui/table-handle-menu.mjs +21 -0
  127. package/dist/ui/table-handle.d.mts +48 -0
  128. package/dist/ui/table-handle.d.ts +48 -0
  129. package/dist/ui/table-handle.js +3126 -0
  130. package/dist/ui/table-handle.mjs +22 -0
  131. package/dist/ui/table-selection-overlay.d.mts +14 -0
  132. package/dist/ui/table-selection-overlay.d.ts +14 -0
  133. package/dist/ui/table-selection-overlay.js +553 -0
  134. package/dist/ui/table-selection-overlay.mjs +11 -0
  135. package/package.json +12 -7
  136. package/dist/chunk-3XEOCAHB.mjs +0 -41
  137. package/dist/chunk-5W5ARI64.mjs +0 -11
  138. package/dist/chunk-BTJ3DCGC.mjs +0 -113
  139. package/dist/chunk-DR2GZJH6.mjs +0 -70
  140. package/dist/chunk-GHOJLOCF.mjs +0 -247
  141. package/dist/chunk-HWVA6DOK.mjs +0 -20
  142. package/dist/chunk-KLUH6EZS.mjs +0 -40
  143. package/dist/chunk-KNOMCS6F.mjs +0 -57
  144. package/dist/chunk-LPHCE6EI.mjs +0 -92
  145. package/dist/chunk-POJFNXG7.mjs +0 -44
  146. package/dist/chunk-QHD3QTD2.mjs +0 -61
  147. package/dist/chunk-RPPUD4R5.mjs +0 -1
  148. package/dist/kit.js +0 -764
  149. package/dist/kit.mjs +0 -19
  150. package/dist/table/index.d.mts +0 -6
  151. package/dist/table/index.d.ts +0 -6
  152. package/dist/table/index.js +0 -625
  153. package/dist/table/index.mjs +0 -18
  154. package/dist/table/lib/col-style.d.mts +0 -3
  155. package/dist/table/lib/col-style.d.ts +0 -3
  156. package/dist/table/lib/col-style.js +0 -36
  157. package/dist/table/lib/col-style.mjs +0 -13
  158. package/dist/table/lib/delete-table-when-all-cells-selected.d.mts +0 -5
  159. package/dist/table/lib/delete-table-when-all-cells-selected.d.ts +0 -5
  160. package/dist/table/lib/delete-table-when-all-cells-selected.js +0 -66
  161. package/dist/table/lib/delete-table-when-all-cells-selected.mjs +0 -40
  162. package/dist/table/lib/get-table-node-types.d.mts +0 -7
  163. package/dist/table/lib/get-table-node-types.d.ts +0 -7
  164. package/dist/table/lib/get-table-node-types.js +0 -44
  165. package/dist/table/lib/get-table-node-types.mjs +0 -21
  166. package/dist/table/lib/icons.d.mts +0 -13
  167. package/dist/table/lib/icons.d.ts +0 -13
  168. package/dist/table/lib/icons.js +0 -81
  169. package/dist/table/lib/icons.mjs +0 -58
  170. package/dist/table/lib/insert-line-above-table-action.d.mts +0 -5
  171. package/dist/table/lib/insert-line-above-table-action.d.ts +0 -5
  172. package/dist/table/lib/insert-line-above-table-action.js +0 -64
  173. package/dist/table/lib/insert-line-above-table-action.mjs +0 -8
  174. package/dist/table/lib/insert-line-below-table-action.d.mts +0 -5
  175. package/dist/table/lib/insert-line-below-table-action.d.ts +0 -5
  176. package/dist/table/lib/insert-line-below-table-action.js +0 -63
  177. package/dist/table/lib/insert-line-below-table-action.mjs +0 -8
  178. package/dist/table/lib/is-cell-selection.d.mts +0 -5
  179. package/dist/table/lib/is-cell-selection.d.ts +0 -5
  180. package/dist/table/lib/is-cell-selection.mjs +0 -8
  181. package/dist/table/lib/table-controls.d.mts +0 -15
  182. package/dist/table/lib/table-controls.d.ts +0 -15
  183. package/dist/table/lib/table-controls.js +0 -131
  184. package/dist/table/lib/table-controls.mjs +0 -8
  185. package/dist/table/table.js +0 -621
  186. package/dist/table/table.mjs +0 -14
  187. package/dist/table/views/table-column-menu.d.mts +0 -11
  188. package/dist/table/views/table-column-menu.d.ts +0 -11
  189. package/dist/table/views/table-column-menu.js +0 -84
  190. package/dist/table/views/table-column-menu.mjs +0 -8
  191. package/dist/table/views/table-node-view.d.mts +0 -25
  192. package/dist/table/views/table-node-view.d.ts +0 -25
  193. package/dist/table/views/table-node-view.js +0 -370
  194. package/dist/table/views/table-node-view.mjs +0 -10
  195. package/dist/table/views/table-row-menu.d.mts +0 -11
  196. package/dist/table/views/table-row-menu.d.ts +0 -11
  197. package/dist/table/views/table-row-menu.js +0 -80
  198. package/dist/table/views/table-row-menu.mjs +0 -8
  199. package/dist/table-cell.d.mts +0 -8
  200. package/dist/table-cell.d.ts +0 -8
  201. package/dist/table-cell.js +0 -93
  202. package/dist/table-cell.mjs +0 -8
  203. package/dist/table-header.d.mts +0 -6
  204. package/dist/table-header.d.ts +0 -6
  205. package/dist/table-header.js +0 -67
  206. package/dist/table-header.mjs +0 -8
  207. package/dist/table-row.d.mts +0 -6
  208. package/dist/table-row.d.ts +0 -6
  209. package/dist/table-row.js +0 -43
@@ -0,0 +1,603 @@
1
+ "use client";
2
+ import {
3
+ useTableMoveRowColumn
4
+ } from "./chunk-G6GHC2WO.mjs";
5
+ import {
6
+ useTableSortRowColumn
7
+ } from "./chunk-6FHFDGJO.mjs";
8
+ import {
9
+ useTableAddRowColumn
10
+ } from "./chunk-VIBVRWS4.mjs";
11
+ import {
12
+ useTableClearRowColumnContent
13
+ } from "./chunk-4QSZXHZO.mjs";
14
+ import {
15
+ useTableDeleteRowColumn
16
+ } from "./chunk-ZVPJDJBO.mjs";
17
+ import {
18
+ useTableDuplicateRowColumn
19
+ } from "./chunk-CPDSPBS6.mjs";
20
+ import {
21
+ useTableHeaderRowColumn
22
+ } from "./chunk-CD62W5C3.mjs";
23
+ import {
24
+ messages
25
+ } from "./chunk-CN73TYHV.mjs";
26
+ import {
27
+ dragEnd
28
+ } from "./chunk-3SWV7BGP.mjs";
29
+ import {
30
+ selectCellsByCoords
31
+ } from "./chunk-5B5XIL2G.mjs";
32
+
33
+ // src/ui/table-handle-menu.tsx
34
+ import {
35
+ DropdownMenu
36
+ } from "@kopexa/dropdown-menu";
37
+ import { isValidPosition, useTiptapEditor } from "@kopexa/editor-utils";
38
+ import { useSafeIntl } from "@kopexa/i18n";
39
+ import { createContext } from "@kopexa/react-utils";
40
+ import { cn } from "@kopexa/shared-utils";
41
+ import { extensionTableHandleMenuContent } from "@kopexa/theme";
42
+ import { TableMap } from "@tiptap/pm/tables";
43
+ import { useCallback, useMemo, useState } from "react";
44
+
45
+ // ../../utilities/icons/src/check.tsx
46
+ import { jsx, jsxs } from "react/jsx-runtime";
47
+ var CheckIcon = (props) => {
48
+ return /* @__PURE__ */ jsxs(
49
+ "svg",
50
+ {
51
+ xmlns: "http://www.w3.org/2000/svg",
52
+ width: "24",
53
+ height: "24",
54
+ viewBox: "0 0 24 24",
55
+ fill: "none",
56
+ stroke: "currentColor",
57
+ strokeWidth: "2",
58
+ strokeLinecap: "round",
59
+ strokeLinejoin: "round",
60
+ ...props,
61
+ children: [
62
+ /* @__PURE__ */ jsx("title", { children: "Check Icon" }),
63
+ /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" })
64
+ ]
65
+ }
66
+ );
67
+ };
68
+
69
+ // ../../utilities/icons/src/more-vertical-icon.tsx
70
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
71
+ var MoreVerticalIcon = ({ size = 24, ...props }) => {
72
+ return /* @__PURE__ */ jsxs2(
73
+ "svg",
74
+ {
75
+ width: size,
76
+ height: size,
77
+ viewBox: "0 0 24 24",
78
+ fill: "currentColor",
79
+ xmlns: "http://www.w3.org/2000/svg",
80
+ ...props,
81
+ children: [
82
+ /* @__PURE__ */ jsx2("title", { children: "More Vertical Icon" }),
83
+ /* @__PURE__ */ jsx2(
84
+ "path",
85
+ {
86
+ fillRule: "evenodd",
87
+ clipRule: "evenodd",
88
+ d: "M10 12C10 10.8954 10.8954 10 12 10C13.1046 10 14 10.8954 14 12C14 13.1046 13.1046 14 12 14C10.8954 14 10 13.1046 10 12Z",
89
+ fill: "currentColor"
90
+ }
91
+ ),
92
+ /* @__PURE__ */ jsx2(
93
+ "path",
94
+ {
95
+ fillRule: "evenodd",
96
+ clipRule: "evenodd",
97
+ d: "M10 5C10 3.89543 10.8954 3 12 3C13.1046 3 14 3.89543 14 5C14 6.10457 13.1046 7 12 7C10.8954 7 10 6.10457 10 5Z",
98
+ fill: "currentColor"
99
+ }
100
+ ),
101
+ /* @__PURE__ */ jsx2(
102
+ "path",
103
+ {
104
+ fillRule: "evenodd",
105
+ clipRule: "evenodd",
106
+ d: "M10 19C10 17.8954 10.8954 17 12 17C13.1046 17 14 17.8954 14 19C14 20.1046 13.1046 21 12 21C10.8954 21 10 20.1046 10 19Z",
107
+ fill: "currentColor"
108
+ }
109
+ )
110
+ ]
111
+ }
112
+ );
113
+ };
114
+
115
+ // src/ui/table-handle-menu.tsx
116
+ import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
117
+ var [TableHandleContextProvider, useTableHandleContext] = createContext({
118
+ strict: true
119
+ });
120
+ var TableHandleMenu = ({
121
+ editor: providedEditor,
122
+ orientation,
123
+ index,
124
+ tableNode,
125
+ tablePos,
126
+ onToggleOtherHandle,
127
+ onOpenChange,
128
+ dragStart
129
+ }) => {
130
+ const { editor } = useTiptapEditor(providedEditor);
131
+ const contextValue = useMemo(
132
+ () => ({
133
+ editor,
134
+ orientation,
135
+ index,
136
+ tableNode,
137
+ tablePos
138
+ }),
139
+ [editor, orientation, index, tableNode, tablePos]
140
+ );
141
+ return /* @__PURE__ */ jsx3(TableHandleContextProvider, { value: contextValue, children: /* @__PURE__ */ jsx3(
142
+ TableHandleMenuContent,
143
+ {
144
+ onToggleOtherHandle,
145
+ onOpenChange,
146
+ dragStart
147
+ }
148
+ ) });
149
+ };
150
+ var ariaLabelMessageKeys = {
151
+ row: messages.row_actions,
152
+ column: messages.column_actions
153
+ };
154
+ var TableHandleMenuContent = ({
155
+ onToggleOtherHandle,
156
+ onOpenChange,
157
+ dragStart
158
+ }) => {
159
+ const { editor, orientation } = useTableHandleContext();
160
+ const intl = useSafeIntl();
161
+ const {
162
+ isMenuOpen,
163
+ isDragging,
164
+ setIsDragging,
165
+ menuPlacement,
166
+ handleMenuToggle
167
+ } = useTableHandleMenu(onToggleOtherHandle, onOpenChange);
168
+ const ariaLabel = intl.formatMessage(ariaLabelMessageKeys[orientation]);
169
+ const styles = extensionTableHandleMenuContent();
170
+ const handleDragStart = useCallback(
171
+ (e) => {
172
+ setIsDragging(true);
173
+ dragStart == null ? void 0 : dragStart(e);
174
+ },
175
+ [dragStart, setIsDragging]
176
+ );
177
+ const handleDragEnd = useCallback(() => {
178
+ setIsDragging(false);
179
+ if (editor) dragEnd(editor);
180
+ }, [setIsDragging, editor]);
181
+ return /* @__PURE__ */ jsxs3(DropdownMenu.Root, { open: isMenuOpen, onOpenChange: handleMenuToggle, children: [
182
+ /* @__PURE__ */ jsx3(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsx3(
183
+ "button",
184
+ {
185
+ type: "button",
186
+ "data-dragging": isDragging ? "true" : "false",
187
+ "data-orientation": orientation,
188
+ "data-open": isMenuOpen ? "true" : "false",
189
+ className: styles.root(),
190
+ draggable: true,
191
+ "aria-label": ariaLabel,
192
+ "aria-haspopup": "menu",
193
+ "aria-expanded": isMenuOpen,
194
+ onDragStart: handleDragStart,
195
+ onDragEnd: handleDragEnd,
196
+ children: /* @__PURE__ */ jsx3(
197
+ MoreVerticalIcon,
198
+ {
199
+ "data-orientation": orientation,
200
+ className: styles.icon()
201
+ }
202
+ )
203
+ }
204
+ ) }),
205
+ /* @__PURE__ */ jsx3(DropdownMenu.Content, { side: menuPlacement, children: /* @__PURE__ */ jsx3(TableActionGroup, {}) })
206
+ ] });
207
+ };
208
+ var MENU_PLACEMENT_MAP = {
209
+ row: "top",
210
+ column: "bottom"
211
+ };
212
+ function useTableHandleMenu(onToggleOtherHandle, onOpenChange) {
213
+ const { editor, orientation, index, tableNode, tablePos } = useTableHandleContext();
214
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
215
+ const [isDragging, setIsDragging] = useState(false);
216
+ const menuPlacement = useMemo(
217
+ () => MENU_PLACEMENT_MAP[orientation],
218
+ [orientation]
219
+ );
220
+ const selectRowOrColumn = useCallback(() => {
221
+ if (!editor || !tableNode || !isValidPosition(tablePos) || !isValidPosition(index))
222
+ return;
223
+ try {
224
+ const { width, height } = TableMap.get(tableNode);
225
+ const start = orientation === "row" ? { row: index, col: 0 } : { row: 0, col: index };
226
+ const end = orientation === "row" ? { row: index, col: width - 1 } : { row: height - 1, col: index };
227
+ selectCellsByCoords(editor, tablePos, [start, end], {
228
+ mode: "dispatch",
229
+ dispatch: editor.view.dispatch.bind(editor.view)
230
+ });
231
+ } catch (error) {
232
+ console.warn("Failed to select row/column:", error);
233
+ }
234
+ }, [editor, tableNode, tablePos, orientation, index]);
235
+ const handleMenuToggle = useCallback(
236
+ (isOpen) => {
237
+ if (!editor) return;
238
+ setIsMenuOpen(isOpen);
239
+ onOpenChange == null ? void 0 : onOpenChange(isOpen);
240
+ if (isOpen) {
241
+ editor.commands.freezeHandles();
242
+ selectRowOrColumn();
243
+ onToggleOtherHandle == null ? void 0 : onToggleOtherHandle(false);
244
+ } else {
245
+ editor.commands.unfreezeHandles();
246
+ onToggleOtherHandle == null ? void 0 : onToggleOtherHandle(true);
247
+ }
248
+ },
249
+ [editor, onOpenChange, onToggleOtherHandle, selectRowOrColumn]
250
+ );
251
+ const resetMenu = useCallback(() => {
252
+ if (!editor) return;
253
+ setIsMenuOpen(false);
254
+ onOpenChange == null ? void 0 : onOpenChange(false);
255
+ editor.commands.unfreezeHandles();
256
+ onToggleOtherHandle == null ? void 0 : onToggleOtherHandle(true);
257
+ }, [editor, onOpenChange, onToggleOtherHandle]);
258
+ return {
259
+ isMenuOpen,
260
+ isDragging,
261
+ setIsDragging,
262
+ menuPlacement,
263
+ handleMenuToggle,
264
+ resetMenu
265
+ };
266
+ }
267
+ var TableActionGroup = () => {
268
+ const { index } = useTableHandleContext();
269
+ const {
270
+ deleteAction,
271
+ duplicateAction,
272
+ clearContentAction,
273
+ headerAction,
274
+ addItems,
275
+ moveItems,
276
+ sortItems
277
+ } = useTableActionItems();
278
+ const hasActions = deleteAction.isVisible || duplicateAction.isVisible || clearContentAction.isVisible;
279
+ const hasAddItems = addItems.length > 0;
280
+ const hasMoveItems = moveItems.length > 0;
281
+ const hasSortItems = sortItems.length > 0;
282
+ const hasHeaderAction = headerAction.isVisible && index === 0;
283
+ if (!hasActions && !hasAddItems && !hasMoveItems && !hasSortItems && !hasHeaderAction) {
284
+ return null;
285
+ }
286
+ return /* @__PURE__ */ jsxs3(Fragment, { children: [
287
+ hasHeaderAction && /* @__PURE__ */ jsxs3(DropdownMenu.Group, { children: [
288
+ /* @__PURE__ */ jsx3(
289
+ TableActionItem,
290
+ {
291
+ icon: headerAction.Icon,
292
+ label: headerAction.label,
293
+ disabled: !headerAction.canToggleHeader,
294
+ isActive: headerAction.isActive,
295
+ onClick: headerAction.handleToggle
296
+ }
297
+ ),
298
+ /* @__PURE__ */ jsx3(DropdownMenu.Separator, {})
299
+ ] }),
300
+ hasMoveItems && /* @__PURE__ */ jsxs3(Fragment, { children: [
301
+ /* @__PURE__ */ jsx3(DropdownMenu.Group, { children: moveItems.map((item, i) => /* @__PURE__ */ jsx3(TableActionItem, { ...item }, `move-${i.toString()}`)) }),
302
+ /* @__PURE__ */ jsx3(DropdownMenu.Separator, {})
303
+ ] }),
304
+ hasAddItems && /* @__PURE__ */ jsxs3(Fragment, { children: [
305
+ /* @__PURE__ */ jsx3(DropdownMenu.Group, { children: addItems.map((item, i) => /* @__PURE__ */ jsx3(TableActionItem, { ...item }, `add-${i.toString()}`)) }),
306
+ /* @__PURE__ */ jsx3(DropdownMenu.Separator, {})
307
+ ] }),
308
+ hasSortItems && /* @__PURE__ */ jsxs3(Fragment, { children: [
309
+ /* @__PURE__ */ jsx3(DropdownMenu.Group, { children: sortItems.map((item, i) => /* @__PURE__ */ jsx3(TableActionItem, { ...item }, `sort-${i.toString()}`)) }),
310
+ /* @__PURE__ */ jsx3(DropdownMenu.Separator, {})
311
+ ] }),
312
+ hasActions && /* @__PURE__ */ jsxs3(DropdownMenu.Group, { children: [
313
+ duplicateAction.isVisible && /* @__PURE__ */ jsx3(
314
+ TableActionItem,
315
+ {
316
+ icon: duplicateAction.Icon,
317
+ label: duplicateAction.label,
318
+ disabled: !duplicateAction.canDuplicateRowColumn,
319
+ onClick: duplicateAction.handleDuplicate
320
+ }
321
+ ),
322
+ deleteAction.isVisible && /* @__PURE__ */ jsx3(
323
+ TableActionItem,
324
+ {
325
+ icon: deleteAction.Icon,
326
+ label: deleteAction.label,
327
+ disabled: !deleteAction.canDeleteRowColumn,
328
+ onClick: deleteAction.handleDelete
329
+ }
330
+ )
331
+ ] })
332
+ ] });
333
+ };
334
+ var TableActionItem = ({
335
+ icon: Icon,
336
+ label,
337
+ onClick,
338
+ disabled = false,
339
+ isActive = false,
340
+ shortcutBadge
341
+ }) => /* @__PURE__ */ jsxs3(DropdownMenu.Item, { disabled, onSelect: onClick, children: [
342
+ /* @__PURE__ */ jsx3(Icon, {}),
343
+ /* @__PURE__ */ jsx3("span", { children: label }),
344
+ shortcutBadge,
345
+ /* @__PURE__ */ jsx3(
346
+ "span",
347
+ {
348
+ className: cn(
349
+ "ml-auto",
350
+ isActive && "opacity-100",
351
+ !isActive && "opacity-0"
352
+ ),
353
+ children: /* @__PURE__ */ jsx3(CheckIcon, {})
354
+ }
355
+ )
356
+ ] });
357
+ function useTableActionItems() {
358
+ const { editor, index, orientation, tablePos } = useTableHandleContext();
359
+ const deleteAction = useTableDeleteRowColumn({
360
+ editor,
361
+ index,
362
+ orientation,
363
+ tablePos
364
+ });
365
+ const duplicateAction = useTableDuplicateRowColumn({
366
+ editor,
367
+ index,
368
+ orientation,
369
+ tablePos
370
+ });
371
+ const sortAscAction = useTableSortRowColumn({
372
+ editor,
373
+ tablePos,
374
+ index,
375
+ orientation,
376
+ direction: "asc",
377
+ hideWhenUnavailable: true
378
+ });
379
+ const sortDescAction = useTableSortRowColumn({
380
+ editor,
381
+ tablePos,
382
+ index,
383
+ orientation,
384
+ direction: "desc",
385
+ hideWhenUnavailable: true
386
+ });
387
+ const clearContentAction = useTableClearRowColumnContent({
388
+ editor,
389
+ index,
390
+ orientation,
391
+ tablePos,
392
+ resetAttrs: true,
393
+ hideWhenUnavailable: true
394
+ });
395
+ const headerAction = useTableHeaderRowColumn({
396
+ editor,
397
+ index,
398
+ orientation,
399
+ tablePos,
400
+ hideWhenUnavailable: true
401
+ });
402
+ const moveUpAction = useTableMoveRowColumn({
403
+ editor,
404
+ index,
405
+ tablePos,
406
+ orientation: "row",
407
+ direction: "up",
408
+ hideWhenUnavailable: true
409
+ });
410
+ const moveDownAction = useTableMoveRowColumn({
411
+ editor,
412
+ index,
413
+ tablePos,
414
+ orientation: "row",
415
+ direction: "down",
416
+ hideWhenUnavailable: true
417
+ });
418
+ const moveLeftAction = useTableMoveRowColumn({
419
+ editor,
420
+ index,
421
+ tablePos,
422
+ orientation: "column",
423
+ direction: "left",
424
+ hideWhenUnavailable: true
425
+ });
426
+ const moveRightAction = useTableMoveRowColumn({
427
+ editor,
428
+ index,
429
+ tablePos,
430
+ orientation: "column",
431
+ direction: "right",
432
+ hideWhenUnavailable: true
433
+ });
434
+ const addAbove = useTableAddRowColumn({
435
+ editor,
436
+ index,
437
+ tablePos,
438
+ orientation: "row",
439
+ side: "above",
440
+ hideWhenUnavailable: true
441
+ });
442
+ const addBelow = useTableAddRowColumn({
443
+ editor,
444
+ index,
445
+ tablePos,
446
+ orientation: "row",
447
+ side: "below",
448
+ hideWhenUnavailable: true
449
+ });
450
+ const addLeft = useTableAddRowColumn({
451
+ editor,
452
+ index,
453
+ tablePos,
454
+ orientation: "column",
455
+ side: "left",
456
+ hideWhenUnavailable: true
457
+ });
458
+ const addRight = useTableAddRowColumn({
459
+ editor,
460
+ index,
461
+ tablePos,
462
+ orientation: "column",
463
+ side: "right",
464
+ hideWhenUnavailable: true
465
+ });
466
+ const moveActions = useMemo(
467
+ () => ({
468
+ moveUp: moveUpAction,
469
+ moveDown: moveDownAction,
470
+ moveLeft: moveLeftAction,
471
+ moveRight: moveRightAction
472
+ }),
473
+ [moveUpAction, moveDownAction, moveLeftAction, moveRightAction]
474
+ );
475
+ const addActions = useMemo(
476
+ () => ({
477
+ addAbove,
478
+ addBelow,
479
+ addLeft,
480
+ addRight
481
+ }),
482
+ [addAbove, addBelow, addLeft, addRight]
483
+ );
484
+ const sortActions = useMemo(
485
+ () => ({
486
+ sortAsc: sortAscAction,
487
+ sortDesc: sortDescAction
488
+ }),
489
+ [sortAscAction, sortDescAction]
490
+ );
491
+ const getSortItems = useCallback(() => {
492
+ const items = [];
493
+ if (sortActions.sortAsc.isVisible) {
494
+ items.push({
495
+ icon: sortActions.sortAsc.Icon,
496
+ label: sortActions.sortAsc.label,
497
+ disabled: !sortActions.sortAsc.canSortRowColumn,
498
+ onClick: sortActions.sortAsc.handleSort
499
+ });
500
+ }
501
+ if (sortActions.sortDesc.isVisible) {
502
+ items.push({
503
+ icon: sortActions.sortDesc.Icon,
504
+ label: sortActions.sortDesc.label,
505
+ disabled: !sortActions.sortDesc.canSortRowColumn,
506
+ onClick: sortActions.sortDesc.handleSort
507
+ });
508
+ }
509
+ return items;
510
+ }, [sortActions]);
511
+ const getActionItems = useCallback(() => {
512
+ const items = [];
513
+ if (orientation === "row") {
514
+ if (addActions.addAbove.isVisible) {
515
+ items.push({
516
+ icon: addActions.addAbove.Icon,
517
+ label: addActions.addAbove.label,
518
+ disabled: !addActions.addAbove.canAddRowColumn,
519
+ onClick: addActions.addAbove.handleAdd
520
+ });
521
+ }
522
+ if (addActions.addBelow.isVisible) {
523
+ items.push({
524
+ icon: addActions.addBelow.Icon,
525
+ label: addActions.addBelow.label,
526
+ disabled: !addActions.addBelow.canAddRowColumn,
527
+ onClick: addActions.addBelow.handleAdd
528
+ });
529
+ }
530
+ } else {
531
+ if (addActions.addLeft.isVisible) {
532
+ items.push({
533
+ icon: addActions.addLeft.Icon,
534
+ label: addActions.addLeft.label,
535
+ disabled: !addActions.addLeft.canAddRowColumn,
536
+ onClick: addActions.addLeft.handleAdd
537
+ });
538
+ }
539
+ if (addActions.addRight.isVisible) {
540
+ items.push({
541
+ icon: addActions.addRight.Icon,
542
+ label: addActions.addRight.label,
543
+ disabled: !addActions.addRight.canAddRowColumn,
544
+ onClick: addActions.addRight.handleAdd
545
+ });
546
+ }
547
+ }
548
+ return items;
549
+ }, [orientation, addActions]);
550
+ const getMoveItems = useCallback(() => {
551
+ const items = [];
552
+ if (orientation === "row") {
553
+ if (moveActions.moveUp.isVisible) {
554
+ items.push({
555
+ icon: moveActions.moveUp.Icon,
556
+ label: moveActions.moveUp.label,
557
+ disabled: !moveActions.moveUp.canMoveRowColumn,
558
+ onClick: moveActions.moveUp.handleMove
559
+ });
560
+ }
561
+ if (moveActions.moveDown.isVisible) {
562
+ items.push({
563
+ icon: moveActions.moveDown.Icon,
564
+ label: moveActions.moveDown.label,
565
+ disabled: !moveActions.moveDown.canMoveRowColumn,
566
+ onClick: moveActions.moveDown.handleMove
567
+ });
568
+ }
569
+ } else {
570
+ if (moveActions.moveLeft.isVisible) {
571
+ items.push({
572
+ icon: moveActions.moveLeft.Icon,
573
+ label: moveActions.moveLeft.label,
574
+ disabled: !moveActions.moveLeft.canMoveRowColumn,
575
+ onClick: moveActions.moveLeft.handleMove
576
+ });
577
+ }
578
+ if (moveActions.moveRight.isVisible) {
579
+ items.push({
580
+ icon: moveActions.moveRight.Icon,
581
+ label: moveActions.moveRight.label,
582
+ disabled: !moveActions.moveRight.canMoveRowColumn,
583
+ onClick: moveActions.moveRight.handleMove
584
+ });
585
+ }
586
+ }
587
+ return items;
588
+ }, [orientation, moveActions]);
589
+ return {
590
+ deleteAction,
591
+ duplicateAction,
592
+ clearContentAction,
593
+ headerAction,
594
+ addItems: getActionItems(),
595
+ moveItems: getMoveItems(),
596
+ sortItems: getSortItems()
597
+ };
598
+ }
599
+
600
+ export {
601
+ TableHandleMenu,
602
+ TableActionGroup
603
+ };