@gridsheet/react-core 1.4.0-alpha.2 → 1.4.0-alpha.3

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 (235) hide show
  1. package/dist/_virtual/_commonjsHelpers.js +7 -0
  2. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  3. package/dist/_virtual/dayjs.min.js +8 -0
  4. package/dist/_virtual/dayjs.min.js.map +1 -0
  5. package/dist/_virtual/dayjs.min2.js +5 -0
  6. package/dist/_virtual/dayjs.min2.js.map +1 -0
  7. package/dist/_virtual/jsx-runtime.js +6 -0
  8. package/dist/_virtual/jsx-runtime.js.map +1 -0
  9. package/dist/_virtual/jsx-runtime2.js +5 -0
  10. package/dist/_virtual/jsx-runtime2.js.map +1 -0
  11. package/dist/_virtual/react-jsx-runtime.development.js +5 -0
  12. package/dist/_virtual/react-jsx-runtime.development.js.map +1 -0
  13. package/dist/_virtual/react-jsx-runtime.production.js +5 -0
  14. package/dist/_virtual/react-jsx-runtime.production.js.map +1 -0
  15. package/dist/_virtual/timezone.js +8 -0
  16. package/dist/_virtual/timezone.js.map +1 -0
  17. package/dist/_virtual/timezone2.js +5 -0
  18. package/dist/_virtual/timezone2.js.map +1 -0
  19. package/dist/_virtual/utc.js +8 -0
  20. package/dist/_virtual/utc.js.map +1 -0
  21. package/dist/_virtual/utc2.js +5 -0
  22. package/dist/_virtual/utc2.js.map +1 -0
  23. package/dist/components/Cell.js +232 -0
  24. package/dist/components/Cell.js.map +1 -0
  25. package/dist/components/ContextMenu.js +297 -0
  26. package/dist/components/ContextMenu.js.map +1 -0
  27. package/dist/components/Editor.js +455 -0
  28. package/dist/components/Editor.js.map +1 -0
  29. package/dist/components/Emitter.js +26 -0
  30. package/dist/components/Emitter.js.map +1 -0
  31. package/dist/components/Fixed.js +17 -0
  32. package/dist/components/Fixed.js.map +1 -0
  33. package/dist/components/FormulaBar.js +149 -0
  34. package/dist/components/FormulaBar.js.map +1 -0
  35. package/dist/components/GridSheet.js +246 -0
  36. package/dist/components/GridSheet.js.map +1 -0
  37. package/dist/components/HeaderCellLeft.js +131 -0
  38. package/dist/components/HeaderCellLeft.js.map +1 -0
  39. package/dist/components/HeaderCellTop.js +132 -0
  40. package/dist/components/HeaderCellTop.js.map +1 -0
  41. package/dist/components/PluginBase.js +35 -0
  42. package/dist/components/PluginBase.js.map +1 -0
  43. package/dist/components/Resizer.js +98 -0
  44. package/dist/components/Resizer.js.map +1 -0
  45. package/dist/components/SearchBar.js +108 -0
  46. package/dist/components/SearchBar.js.map +1 -0
  47. package/dist/components/SheetProvider.js +56 -0
  48. package/dist/components/SheetProvider.js.map +1 -0
  49. package/dist/components/StoreInitializer.js +84 -0
  50. package/dist/components/StoreInitializer.js.map +1 -0
  51. package/dist/components/Tabular.js +308 -0
  52. package/dist/components/Tabular.js.map +1 -0
  53. package/dist/components/hooks.js +15 -0
  54. package/dist/components/hooks.js.map +1 -0
  55. package/dist/components/svg/Base.js +24 -0
  56. package/dist/components/svg/Base.js.map +1 -0
  57. package/dist/components/svg/CloseIcon.js +13 -0
  58. package/dist/components/svg/CloseIcon.js.map +1 -0
  59. package/dist/components/svg/SearchIcon.js +13 -0
  60. package/dist/components/svg/SearchIcon.js.map +1 -0
  61. package/dist/constants.js +43 -0
  62. package/dist/constants.js.map +1 -0
  63. package/dist/formula/evaluator.js +674 -0
  64. package/dist/formula/evaluator.js.map +1 -0
  65. package/dist/formula/functions/__base.js +19 -0
  66. package/dist/formula/functions/__base.js.map +1 -0
  67. package/dist/formula/functions/__utils.js +145 -0
  68. package/dist/formula/functions/__utils.js.map +1 -0
  69. package/dist/formula/functions/abs.js +24 -0
  70. package/dist/formula/functions/abs.js.map +1 -0
  71. package/dist/formula/functions/acos.js +32 -0
  72. package/dist/formula/functions/acos.js.map +1 -0
  73. package/dist/formula/functions/add.js +57 -0
  74. package/dist/formula/functions/add.js.map +1 -0
  75. package/dist/formula/functions/and.js +28 -0
  76. package/dist/formula/functions/and.js.map +1 -0
  77. package/dist/formula/functions/asin.js +32 -0
  78. package/dist/formula/functions/asin.js.map +1 -0
  79. package/dist/formula/functions/atan.js +29 -0
  80. package/dist/formula/functions/atan.js.map +1 -0
  81. package/dist/formula/functions/atan2.js +35 -0
  82. package/dist/formula/functions/atan2.js.map +1 -0
  83. package/dist/formula/functions/average.js +44 -0
  84. package/dist/formula/functions/average.js.map +1 -0
  85. package/dist/formula/functions/col.js +31 -0
  86. package/dist/formula/functions/col.js.map +1 -0
  87. package/dist/formula/functions/concat.js +27 -0
  88. package/dist/formula/functions/concat.js.map +1 -0
  89. package/dist/formula/functions/concatenate.js +28 -0
  90. package/dist/formula/functions/concatenate.js.map +1 -0
  91. package/dist/formula/functions/cos.js +29 -0
  92. package/dist/formula/functions/cos.js.map +1 -0
  93. package/dist/formula/functions/count.js +38 -0
  94. package/dist/formula/functions/count.js.map +1 -0
  95. package/dist/formula/functions/counta.js +38 -0
  96. package/dist/formula/functions/counta.js.map +1 -0
  97. package/dist/formula/functions/countif.js +32 -0
  98. package/dist/formula/functions/countif.js.map +1 -0
  99. package/dist/formula/functions/divide.js +33 -0
  100. package/dist/formula/functions/divide.js.map +1 -0
  101. package/dist/formula/functions/eq.js +29 -0
  102. package/dist/formula/functions/eq.js.map +1 -0
  103. package/dist/formula/functions/exp.js +29 -0
  104. package/dist/formula/functions/exp.js.map +1 -0
  105. package/dist/formula/functions/gt.js +29 -0
  106. package/dist/formula/functions/gt.js.map +1 -0
  107. package/dist/formula/functions/gte.js +29 -0
  108. package/dist/formula/functions/gte.js.map +1 -0
  109. package/dist/formula/functions/hlookup.js +75 -0
  110. package/dist/formula/functions/hlookup.js.map +1 -0
  111. package/dist/formula/functions/if.js +39 -0
  112. package/dist/formula/functions/if.js.map +1 -0
  113. package/dist/formula/functions/iferror.js +45 -0
  114. package/dist/formula/functions/iferror.js.map +1 -0
  115. package/dist/formula/functions/len.js +29 -0
  116. package/dist/formula/functions/len.js.map +1 -0
  117. package/dist/formula/functions/lenb.js +29 -0
  118. package/dist/formula/functions/lenb.js.map +1 -0
  119. package/dist/formula/functions/ln.js +32 -0
  120. package/dist/formula/functions/ln.js.map +1 -0
  121. package/dist/formula/functions/log.js +36 -0
  122. package/dist/formula/functions/log.js.map +1 -0
  123. package/dist/formula/functions/log10.js +32 -0
  124. package/dist/formula/functions/log10.js.map +1 -0
  125. package/dist/formula/functions/lt.js +29 -0
  126. package/dist/formula/functions/lt.js.map +1 -0
  127. package/dist/formula/functions/lte.js +29 -0
  128. package/dist/formula/functions/lte.js.map +1 -0
  129. package/dist/formula/functions/max.js +47 -0
  130. package/dist/formula/functions/max.js.map +1 -0
  131. package/dist/formula/functions/min.js +47 -0
  132. package/dist/formula/functions/min.js.map +1 -0
  133. package/dist/formula/functions/minus.js +57 -0
  134. package/dist/formula/functions/minus.js.map +1 -0
  135. package/dist/formula/functions/mod.js +33 -0
  136. package/dist/formula/functions/mod.js.map +1 -0
  137. package/dist/formula/functions/multiply.js +27 -0
  138. package/dist/formula/functions/multiply.js.map +1 -0
  139. package/dist/formula/functions/ne.js +29 -0
  140. package/dist/formula/functions/ne.js.map +1 -0
  141. package/dist/formula/functions/not.js +30 -0
  142. package/dist/formula/functions/not.js.map +1 -0
  143. package/dist/formula/functions/now.js +22 -0
  144. package/dist/formula/functions/now.js.map +1 -0
  145. package/dist/formula/functions/or.js +28 -0
  146. package/dist/formula/functions/or.js.map +1 -0
  147. package/dist/formula/functions/pi.js +22 -0
  148. package/dist/formula/functions/pi.js.map +1 -0
  149. package/dist/formula/functions/power.js +27 -0
  150. package/dist/formula/functions/power.js.map +1 -0
  151. package/dist/formula/functions/product.js +40 -0
  152. package/dist/formula/functions/product.js.map +1 -0
  153. package/dist/formula/functions/radians.js +29 -0
  154. package/dist/formula/functions/radians.js.map +1 -0
  155. package/dist/formula/functions/rand.js +22 -0
  156. package/dist/formula/functions/rand.js.map +1 -0
  157. package/dist/formula/functions/round.js +35 -0
  158. package/dist/formula/functions/round.js.map +1 -0
  159. package/dist/formula/functions/rounddown.js +35 -0
  160. package/dist/formula/functions/rounddown.js.map +1 -0
  161. package/dist/formula/functions/roundup.js +35 -0
  162. package/dist/formula/functions/roundup.js.map +1 -0
  163. package/dist/formula/functions/row.js +31 -0
  164. package/dist/formula/functions/row.js.map +1 -0
  165. package/dist/formula/functions/sin.js +29 -0
  166. package/dist/formula/functions/sin.js.map +1 -0
  167. package/dist/formula/functions/sqrt.js +32 -0
  168. package/dist/formula/functions/sqrt.js.map +1 -0
  169. package/dist/formula/functions/sum.js +47 -0
  170. package/dist/formula/functions/sum.js.map +1 -0
  171. package/dist/formula/functions/sumif.js +65 -0
  172. package/dist/formula/functions/sumif.js.map +1 -0
  173. package/dist/formula/functions/tan.js +29 -0
  174. package/dist/formula/functions/tan.js.map +1 -0
  175. package/dist/formula/functions/uminus.js +24 -0
  176. package/dist/formula/functions/uminus.js.map +1 -0
  177. package/dist/formula/functions/vlookup.js +75 -0
  178. package/dist/formula/functions/vlookup.js.map +1 -0
  179. package/dist/formula/mapping.js +118 -0
  180. package/dist/formula/mapping.js.map +1 -0
  181. package/dist/formula/solver.js +70 -0
  182. package/dist/formula/solver.js.map +1 -0
  183. package/dist/index.js +16 -9113
  184. package/dist/index.js.map +1 -1
  185. package/dist/lib/autofill.js +391 -0
  186. package/dist/lib/autofill.js.map +1 -0
  187. package/dist/lib/clipboard.js +46 -0
  188. package/dist/lib/clipboard.js.map +1 -0
  189. package/dist/lib/converters.js +141 -0
  190. package/dist/lib/converters.js.map +1 -0
  191. package/dist/lib/input.js +52 -0
  192. package/dist/lib/input.js.map +1 -0
  193. package/dist/lib/palette.js +24 -0
  194. package/dist/lib/palette.js.map +1 -0
  195. package/dist/lib/prevention.js +82 -0
  196. package/dist/lib/prevention.js.map +1 -0
  197. package/dist/lib/structs.js +276 -0
  198. package/dist/lib/structs.js.map +1 -0
  199. package/dist/lib/table.js +1248 -0
  200. package/dist/lib/table.js.map +1 -0
  201. package/dist/lib/time.js +79 -0
  202. package/dist/lib/time.js.map +1 -0
  203. package/dist/lib/virtualization.js +129 -0
  204. package/dist/lib/virtualization.js.map +1 -0
  205. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js +287 -0
  206. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +1 -0
  207. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/timezone.js +72 -0
  208. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/timezone.js.map +1 -0
  209. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/utc.js +85 -0
  210. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/utc.js.map +1 -0
  211. package/dist/node_modules/.pnpm/react@19.0.0/node_modules/react/cjs/react-jsx-runtime.development.js +454 -0
  212. package/dist/node_modules/.pnpm/react@19.0.0/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
  213. package/dist/node_modules/.pnpm/react@19.0.0/node_modules/react/cjs/react-jsx-runtime.production.js +42 -0
  214. package/dist/node_modules/.pnpm/react@19.0.0/node_modules/react/cjs/react-jsx-runtime.production.js.map +1 -0
  215. package/dist/node_modules/.pnpm/react@19.0.0/node_modules/react/jsx-runtime.js +18 -0
  216. package/dist/node_modules/.pnpm/react@19.0.0/node_modules/react/jsx-runtime.js.map +1 -0
  217. package/dist/parsers/core.js +139 -0
  218. package/dist/parsers/core.js.map +1 -0
  219. package/dist/renderers/checkbox.js +20 -0
  220. package/dist/renderers/checkbox.js.map +1 -0
  221. package/dist/renderers/core.js +147 -0
  222. package/dist/renderers/core.js.map +1 -0
  223. package/dist/renderers/thousand_separator.js +17 -0
  224. package/dist/renderers/thousand_separator.js.map +1 -0
  225. package/dist/store/actions.js +762 -0
  226. package/dist/store/actions.js.map +1 -0
  227. package/dist/store/helpers.js +88 -0
  228. package/dist/store/helpers.js.map +1 -0
  229. package/dist/store/index.js +8 -0
  230. package/dist/store/index.js.map +1 -0
  231. package/dist/styles/embedder.js +19 -0
  232. package/dist/styles/embedder.js.map +1 -0
  233. package/dist/styles/minified.js +7 -0
  234. package/dist/styles/minified.js.map +1 -0
  235. package/package.json +1 -7
@@ -0,0 +1,297 @@
1
+ import { j as jsxRuntimeExports } from "../_virtual/jsx-runtime.js";
2
+ import React__default from "react";
3
+ import { clip } from "../lib/clipboard.js";
4
+ import { cut, copy, paste, updateTable, undo, redo, setContextMenuPosition } from "../store/actions.js";
5
+ import { zoneToArea, zoneShape, areaToZone } from "../lib/structs.js";
6
+ import { Context } from "../store/index.js";
7
+ import { isPrevented, AddRowAbove, AddRowBelow, AddColLeft, AddColRight, DeleteRow, DeleteCol } from "../lib/prevention.js";
8
+ import { Fixed } from "./Fixed.js";
9
+ const ContextMenu = () => {
10
+ const { store, dispatch } = React__default.useContext(Context);
11
+ const { table, choosing, selectingZone, leftHeaderSelecting, topHeaderSelecting, editorRef, contextMenuPosition } = store;
12
+ const { y, x } = choosing;
13
+ let {
14
+ top: selectingTop,
15
+ left: selectingLeft,
16
+ bottom: selectingBottom,
17
+ right: selectingRight
18
+ } = zoneToArea(selectingZone);
19
+ if (selectingTop === -1) {
20
+ [selectingTop, selectingLeft, selectingBottom, selectingRight] = [y, x, y, x];
21
+ }
22
+ const [tableHeight, tableWidth] = [table.getNumRows(), table.getNumCols()];
23
+ const { height, width } = zoneShape({ ...selectingZone, base: 1 });
24
+ const { y: top, x: left } = contextMenuPosition;
25
+ if (top === -1) {
26
+ return null;
27
+ }
28
+ const selectingTopCell = table.getByPoint({ y: selectingTop, x: 0 });
29
+ const selectingLeftCell = table.getByPoint({ y: 0, x: selectingLeft });
30
+ const selectingBottomCell = table.getByPoint({ y: selectingBottom, x: 0 });
31
+ const selectingRightCell = table.getByPoint({ y: 0, x: selectingRight });
32
+ const historyIndex = table.getHistoryIndex();
33
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
34
+ Fixed,
35
+ {
36
+ className: "gs-contextmenu-modal",
37
+ onClick: (e) => {
38
+ e.preventDefault();
39
+ dispatch(setContextMenuPosition({ y: -1, x: -1 }));
40
+ return false;
41
+ },
42
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
43
+ "div",
44
+ {
45
+ className: "gs-contextmenu",
46
+ style: {
47
+ top,
48
+ left
49
+ },
50
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("ul", { children: [
51
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
52
+ "li",
53
+ {
54
+ className: "gs-enabled",
55
+ onClick: () => {
56
+ const area = clip(store);
57
+ dispatch(cut(areaToZone(area)));
58
+ },
59
+ children: [
60
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-name", children: "Cut" }),
61
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-shortcut", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "gs-menu-underline", children: "X" }) })
62
+ ]
63
+ }
64
+ ),
65
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
66
+ "li",
67
+ {
68
+ className: "gs-enabled",
69
+ onClick: () => {
70
+ const area = clip(store);
71
+ dispatch(copy(areaToZone(area)));
72
+ },
73
+ children: [
74
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-name", children: "Copy" }),
75
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-shortcut", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "gs-menu-underline", children: "C" }) })
76
+ ]
77
+ }
78
+ ),
79
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
80
+ "li",
81
+ {
82
+ className: "gs-enabled",
83
+ onClick: () => {
84
+ var _a;
85
+ const text = ((_a = editorRef.current) == null ? void 0 : _a.value) || "";
86
+ dispatch(paste({ text }));
87
+ },
88
+ children: [
89
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-name", children: "Paste" }),
90
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-shortcut", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "gs-menu-underline", children: "V" }) })
91
+ ]
92
+ }
93
+ ),
94
+ (leftHeaderSelecting || topHeaderSelecting) && /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "gs-menu-divider" }),
95
+ leftHeaderSelecting && /* @__PURE__ */ jsxRuntimeExports.jsx(
96
+ "li",
97
+ {
98
+ className: table.maxNumRows !== -1 && tableHeight + height > table.maxNumRows || isPrevented(selectingTopCell == null ? void 0 : selectingTopCell.prevention, AddRowAbove) ? "gs-disabled" : "gs-enabled",
99
+ onClick: () => {
100
+ const newTable = table.addRows({
101
+ y: selectingTop,
102
+ numRows: height,
103
+ baseY: selectingTop,
104
+ reflection: {
105
+ selectingZone,
106
+ choosing
107
+ }
108
+ });
109
+ dispatch(updateTable(newTable));
110
+ },
111
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "gs-menu-name", children: [
112
+ "Insert ",
113
+ height,
114
+ " row",
115
+ height > 1 && "s",
116
+ " above"
117
+ ] })
118
+ }
119
+ ),
120
+ leftHeaderSelecting && /* @__PURE__ */ jsxRuntimeExports.jsx(
121
+ "li",
122
+ {
123
+ className: table.maxNumRows !== -1 && tableHeight + height > table.maxNumRows || isPrevented(selectingBottomCell == null ? void 0 : selectingBottomCell.prevention, AddRowBelow) ? "gs-disabled" : "gs-enabled",
124
+ onClick: (e) => {
125
+ if (e.currentTarget.classList.contains("gs-disabled")) {
126
+ return;
127
+ }
128
+ selectingZone.startY += height;
129
+ selectingZone.endY += height;
130
+ choosing.y += height;
131
+ const newTable = table.addRows({
132
+ y: selectingBottom + 1,
133
+ numRows: height,
134
+ baseY: selectingBottom,
135
+ reflection: {
136
+ selectingZone,
137
+ choosing
138
+ }
139
+ });
140
+ dispatch(updateTable(newTable));
141
+ },
142
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "gs-menu-name", children: [
143
+ "Insert ",
144
+ height,
145
+ " row",
146
+ height > 1 && "s",
147
+ " below"
148
+ ] })
149
+ }
150
+ ),
151
+ topHeaderSelecting && /* @__PURE__ */ jsxRuntimeExports.jsx(
152
+ "li",
153
+ {
154
+ className: table.maxNumCols !== -1 && tableWidth + width > table.maxNumCols || isPrevented(selectingLeftCell == null ? void 0 : selectingLeftCell.prevention, AddColLeft) ? "gs-disabled" : "gs-enabled",
155
+ onClick: (e) => {
156
+ if (e.currentTarget.classList.contains("gs-disabled")) {
157
+ return;
158
+ }
159
+ const newTable = table.addCols({
160
+ x: selectingLeft,
161
+ numCols: width,
162
+ baseX: selectingLeft,
163
+ reflection: {
164
+ selectingZone,
165
+ choosing
166
+ }
167
+ });
168
+ dispatch(updateTable(newTable));
169
+ },
170
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "gs-menu-name", children: [
171
+ "Insert ",
172
+ width,
173
+ " column",
174
+ width > 1 && "s",
175
+ " left"
176
+ ] })
177
+ }
178
+ ),
179
+ topHeaderSelecting && /* @__PURE__ */ jsxRuntimeExports.jsx(
180
+ "li",
181
+ {
182
+ className: table.maxNumCols !== -1 && tableWidth + width > table.maxNumCols || isPrevented(selectingRightCell == null ? void 0 : selectingRightCell.prevention, AddColRight) ? "gs-disabled" : "gs-enabled",
183
+ onClick: (e) => {
184
+ if (e.currentTarget.classList.contains("gs-disabled")) {
185
+ return;
186
+ }
187
+ selectingZone.startX += width;
188
+ selectingZone.endX += width;
189
+ choosing.x += width;
190
+ const newTable = table.addCols({
191
+ x: selectingRight + 1,
192
+ numCols: width,
193
+ baseX: selectingRight,
194
+ reflection: {
195
+ selectingZone,
196
+ choosing
197
+ }
198
+ });
199
+ dispatch(updateTable(newTable));
200
+ },
201
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "gs-menu-name", children: [
202
+ "Insert ",
203
+ width,
204
+ " column",
205
+ width > 1 && "s",
206
+ " right"
207
+ ] })
208
+ }
209
+ ),
210
+ leftHeaderSelecting && /* @__PURE__ */ jsxRuntimeExports.jsx(
211
+ "li",
212
+ {
213
+ className: table.minNumRows !== -1 && tableHeight - height < table.minNumRows || isPrevented(selectingTopCell == null ? void 0 : selectingTopCell.prevention, DeleteRow) ? "gs-disabled" : "gs-enabled",
214
+ onClick: (e) => {
215
+ if (e.currentTarget.classList.contains("gs-disabled")) {
216
+ return;
217
+ }
218
+ const newTable = table.deleteRows({
219
+ y: selectingTop,
220
+ numRows: height,
221
+ operator: "USER",
222
+ reflection: {
223
+ selectingZone,
224
+ choosing
225
+ }
226
+ });
227
+ dispatch(updateTable(newTable));
228
+ },
229
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "gs-menu-name", children: [
230
+ "Delete ",
231
+ height,
232
+ " row",
233
+ height > 1 && "s"
234
+ ] })
235
+ }
236
+ ),
237
+ topHeaderSelecting && /* @__PURE__ */ jsxRuntimeExports.jsx(
238
+ "li",
239
+ {
240
+ className: table.minNumCols !== -1 && tableWidth - width < table.minNumCols || isPrevented(selectingRightCell == null ? void 0 : selectingRightCell.prevention, DeleteCol) ? "gs-disabled" : "gs-enabled",
241
+ onClick: () => {
242
+ const newTable = table.deleteCols({
243
+ x: selectingLeft,
244
+ numCols: width,
245
+ operator: "USER",
246
+ reflection: {
247
+ selectingZone,
248
+ choosing
249
+ }
250
+ });
251
+ dispatch(updateTable(newTable));
252
+ },
253
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "gs-menu-name", children: [
254
+ "Delete ",
255
+ width,
256
+ " column",
257
+ width > 0 && "s"
258
+ ] })
259
+ }
260
+ ),
261
+ (historyIndex > -1 || historyIndex < table.getHistorySize() - 1) && /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "gs-menu-divider" }),
262
+ historyIndex > -1 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
263
+ "li",
264
+ {
265
+ className: "gs-enabled",
266
+ onClick: () => {
267
+ dispatch(undo(null));
268
+ },
269
+ children: [
270
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-name", children: "Undo" }),
271
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-shortcut", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "gs-menu-underline", children: "Z" }) })
272
+ ]
273
+ }
274
+ ),
275
+ historyIndex < table.getHistorySize() - 1 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
276
+ "li",
277
+ {
278
+ className: "gs-enabled",
279
+ onClick: () => {
280
+ dispatch(redo(null));
281
+ },
282
+ children: [
283
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-name", children: "Redo" }),
284
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "gs-menu-shortcut", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "gs-menu-underline", children: "R" }) })
285
+ ]
286
+ }
287
+ )
288
+ ] })
289
+ }
290
+ )
291
+ }
292
+ );
293
+ };
294
+ export {
295
+ ContextMenu
296
+ };
297
+ //# sourceMappingURL=ContextMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMenu.js","sources":["../../components/ContextMenu.tsx"],"sourcesContent":["import React from 'react';\nimport { clip } from '../lib/clipboard';\n\nimport { undo, redo, copy, cut, paste, setContextMenuPosition, updateTable } from '../store/actions';\nimport { areaToZone, zoneShape, zoneToArea } from '../lib/structs';\n\nimport { Context } from '../store';\nimport * as prevention from '../lib/prevention';\nimport { Fixed } from './Fixed';\n\nexport const ContextMenu: React.FC = () => {\n const { store, dispatch } = React.useContext(Context);\n\n const { table, choosing, selectingZone, leftHeaderSelecting, topHeaderSelecting, editorRef, contextMenuPosition } =\n store;\n\n const { y, x } = choosing;\n let {\n top: selectingTop,\n left: selectingLeft,\n bottom: selectingBottom,\n right: selectingRight,\n } = zoneToArea(selectingZone);\n if (selectingTop === -1) {\n [selectingTop, selectingLeft, selectingBottom, selectingRight] = [y, x, y, x];\n }\n\n const [tableHeight, tableWidth] = [table.getNumRows(), table.getNumCols()];\n const { height, width } = zoneShape({ ...selectingZone, base: 1 });\n const { y: top, x: left } = contextMenuPosition;\n if (top === -1) {\n return null;\n }\n const selectingTopCell = table.getByPoint({ y: selectingTop, x: 0 });\n const selectingLeftCell = table.getByPoint({ y: 0, x: selectingLeft });\n const selectingBottomCell = table.getByPoint({ y: selectingBottom, x: 0 });\n const selectingRightCell = table.getByPoint({ y: 0, x: selectingRight });\n const historyIndex = table.getHistoryIndex();\n\n return (\n <Fixed\n className=\"gs-contextmenu-modal\"\n onClick={(e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n dispatch(setContextMenuPosition({ y: -1, x: -1 }));\n return false;\n }}\n >\n <div\n className={'gs-contextmenu'}\n style={{\n top: top,\n left: left,\n }}\n >\n <ul>\n <li\n className=\"gs-enabled\"\n onClick={() => {\n const area = clip(store);\n dispatch(cut(areaToZone(area)));\n }}\n >\n <div className=\"gs-menu-name\">Cut</div>\n <div className=\"gs-menu-shortcut\">\n <span className=\"gs-menu-underline\">X</span>\n </div>\n </li>\n <li\n className=\"gs-enabled\"\n onClick={() => {\n const area = clip(store);\n dispatch(copy(areaToZone(area)));\n }}\n >\n <div className=\"gs-menu-name\">Copy</div>\n <div className=\"gs-menu-shortcut\">\n <span className=\"gs-menu-underline\">C</span>\n </div>\n </li>\n <li\n className=\"gs-enabled\"\n onClick={() => {\n const text = editorRef.current?.value || '';\n dispatch(paste({ text }));\n }}\n >\n <div className=\"gs-menu-name\">Paste</div>\n <div className=\"gs-menu-shortcut\">\n <span className=\"gs-menu-underline\">V</span>\n </div>\n </li>\n\n {(leftHeaderSelecting || topHeaderSelecting) && <li className=\"gs-menu-divider\" />}\n\n {leftHeaderSelecting && (\n <li\n className={\n (table.maxNumRows !== -1 && tableHeight + height > table.maxNumRows) ||\n prevention.isPrevented(selectingTopCell?.prevention, prevention.AddRowAbove)\n ? 'gs-disabled'\n : 'gs-enabled'\n }\n onClick={() => {\n const newTable = table.addRows({\n y: selectingTop,\n numRows: height,\n baseY: selectingTop,\n reflection: {\n selectingZone,\n choosing,\n },\n });\n dispatch(updateTable(newTable));\n }}\n >\n <div className=\"gs-menu-name\">\n Insert {height} row{height > 1 && 's'} above\n </div>\n </li>\n )}\n {leftHeaderSelecting && (\n <li\n className={\n (table.maxNumRows !== -1 && tableHeight + height > table.maxNumRows) ||\n prevention.isPrevented(selectingBottomCell?.prevention, prevention.AddRowBelow)\n ? 'gs-disabled'\n : 'gs-enabled'\n }\n onClick={(e) => {\n if (e.currentTarget.classList.contains('gs-disabled')) {\n return;\n }\n selectingZone.startY += height;\n selectingZone.endY += height;\n choosing.y += height;\n const newTable = table.addRows({\n y: selectingBottom + 1,\n numRows: height,\n baseY: selectingBottom,\n reflection: {\n selectingZone,\n choosing,\n },\n });\n dispatch(updateTable(newTable));\n }}\n >\n <div className=\"gs-menu-name\">\n Insert {height} row{height > 1 && 's'} below\n </div>\n </li>\n )}\n {topHeaderSelecting && (\n <li\n className={\n (table.maxNumCols !== -1 && tableWidth + width > table.maxNumCols) ||\n prevention.isPrevented(selectingLeftCell?.prevention, prevention.AddColLeft)\n ? 'gs-disabled'\n : 'gs-enabled'\n }\n onClick={(e) => {\n if (e.currentTarget.classList.contains('gs-disabled')) {\n return;\n }\n const newTable = table.addCols({\n x: selectingLeft,\n numCols: width,\n baseX: selectingLeft,\n reflection: {\n selectingZone,\n choosing,\n },\n });\n dispatch(updateTable(newTable));\n }}\n >\n <div className=\"gs-menu-name\">\n Insert {width} column{width > 1 && 's'} left\n </div>\n </li>\n )}\n {topHeaderSelecting && (\n <li\n className={\n (table.maxNumCols !== -1 && tableWidth + width > table.maxNumCols) ||\n prevention.isPrevented(selectingRightCell?.prevention, prevention.AddColRight)\n ? 'gs-disabled'\n : 'gs-enabled'\n }\n onClick={(e) => {\n if (e.currentTarget.classList.contains('gs-disabled')) {\n return;\n }\n selectingZone.startX += width;\n selectingZone.endX += width;\n choosing.x += width;\n const newTable = table.addCols({\n x: selectingRight + 1,\n numCols: width,\n baseX: selectingRight,\n reflection: {\n selectingZone,\n choosing,\n },\n });\n dispatch(updateTable(newTable));\n }}\n >\n <div className=\"gs-menu-name\">\n Insert {width} column{width > 1 && 's'} right\n </div>\n </li>\n )}\n {leftHeaderSelecting && (\n <li\n className={\n (table.minNumRows !== -1 && tableHeight - height < table.minNumRows) ||\n prevention.isPrevented(selectingTopCell?.prevention, prevention.DeleteRow)\n ? 'gs-disabled'\n : 'gs-enabled'\n }\n onClick={(e) => {\n if (e.currentTarget.classList.contains('gs-disabled')) {\n return;\n }\n const newTable = table.deleteRows({\n y: selectingTop,\n numRows: height,\n operator: 'USER',\n reflection: {\n selectingZone,\n choosing,\n },\n });\n dispatch(updateTable(newTable));\n }}\n >\n <div className=\"gs-menu-name\">\n Delete {height} row{height > 1 && 's'}\n </div>\n </li>\n )}\n {topHeaderSelecting && (\n <li\n className={\n (table.minNumCols !== -1 && tableWidth - width < table.minNumCols) ||\n prevention.isPrevented(selectingRightCell?.prevention, prevention.DeleteCol)\n ? 'gs-disabled'\n : 'gs-enabled'\n }\n onClick={() => {\n const newTable = table.deleteCols({\n x: selectingLeft,\n numCols: width,\n operator: 'USER',\n reflection: {\n selectingZone,\n choosing,\n },\n });\n dispatch(updateTable(newTable));\n }}\n >\n <div className=\"gs-menu-name\">\n Delete {width} column{width > 0 && 's'}\n </div>\n </li>\n )}\n\n {(historyIndex > -1 || historyIndex < table.getHistorySize() - 1) && <li className=\"gs-menu-divider\" />}\n\n {historyIndex > -1 && (\n <li\n className=\"gs-enabled\"\n onClick={() => {\n dispatch(undo(null));\n }}\n >\n <div className=\"gs-menu-name\">Undo</div>\n <div className=\"gs-menu-shortcut\">\n <span className=\"gs-menu-underline\">Z</span>\n </div>\n </li>\n )}\n {historyIndex < table.getHistorySize() - 1 && (\n <li\n className=\"gs-enabled\"\n onClick={() => {\n dispatch(redo(null));\n }}\n >\n <div className=\"gs-menu-name\">Redo</div>\n <div className=\"gs-menu-shortcut\">\n <span className=\"gs-menu-underline\">R</span>\n </div>\n </li>\n )}\n </ul>\n </div>\n </Fixed>\n );\n};\n"],"names":["React","jsx","jsxs","prevention.isPrevented","prevention.AddRowAbove","prevention.AddRowBelow","prevention.AddColLeft","prevention.AddColRight","prevention.DeleteRow","prevention.DeleteCol"],"mappings":"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"}