@rowsncolumns/grid 9.0.3 → 13.2.32

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 (208) hide show
  1. package/LICENSE.md +100 -0
  2. package/Readme.md +53 -59
  3. package/dist/cjs/Cell.d.ts +35 -0
  4. package/dist/cjs/Cell.d.ts.map +1 -0
  5. package/dist/cjs/Cell.js +29 -0
  6. package/dist/{CellOverlay.d.ts → cjs/CellOverlay.d.ts} +5 -5
  7. package/dist/cjs/CellOverlay.d.ts.map +1 -0
  8. package/dist/cjs/CellOverlay.js +126 -0
  9. package/dist/cjs/Context.d.ts +8 -0
  10. package/dist/cjs/Context.d.ts.map +1 -0
  11. package/dist/cjs/Context.js +13 -0
  12. package/dist/{FillHandle.d.ts → cjs/FillHandle.d.ts} +2 -1
  13. package/dist/cjs/FillHandle.d.ts.map +1 -0
  14. package/dist/cjs/FillHandle.js +26 -0
  15. package/dist/cjs/Grid.d.ts +558 -0
  16. package/dist/cjs/Grid.d.ts.map +1 -0
  17. package/dist/cjs/Grid.js +2446 -0
  18. package/dist/{GridLine.d.ts → cjs/GridLine.d.ts} +2 -1
  19. package/dist/cjs/GridLine.d.ts.map +1 -0
  20. package/dist/cjs/GridLine.js +10 -0
  21. package/dist/cjs/Image.d.ts +11 -0
  22. package/dist/cjs/Image.d.ts.map +1 -0
  23. package/dist/cjs/Image.js +57 -0
  24. package/dist/cjs/MemoizedGrid.d.ts +49 -0
  25. package/dist/cjs/MemoizedGrid.d.ts.map +1 -0
  26. package/dist/cjs/MemoizedGrid.js +105 -0
  27. package/dist/cjs/Selection.d.ts +5 -0
  28. package/dist/cjs/Selection.d.ts.map +1 -0
  29. package/dist/cjs/Selection.js +10 -0
  30. package/dist/{helpers.d.ts → cjs/helpers.d.ts} +59 -39
  31. package/dist/cjs/helpers.d.ts.map +1 -0
  32. package/dist/cjs/helpers.js +1409 -0
  33. package/dist/{hooks → cjs/hooks}/useCopyPaste.d.ts +3 -2
  34. package/dist/cjs/hooks/useCopyPaste.d.ts.map +1 -0
  35. package/dist/cjs/hooks/useCopyPaste.js +230 -0
  36. package/dist/{hooks → cjs/hooks}/useEditable.d.ts +21 -8
  37. package/dist/cjs/hooks/useEditable.d.ts.map +1 -0
  38. package/dist/cjs/hooks/useEditable.js +491 -0
  39. package/dist/{hooks → cjs/hooks}/useFilter.d.ts +3 -2
  40. package/dist/cjs/hooks/useFilter.d.ts.map +1 -0
  41. package/dist/cjs/hooks/useFilter.js +97 -0
  42. package/dist/{hooks → cjs/hooks}/useImage.d.ts +1 -0
  43. package/dist/cjs/hooks/useImage.d.ts.map +1 -0
  44. package/dist/cjs/hooks/useImage.js +80 -0
  45. package/dist/{hooks → cjs/hooks}/usePagination.d.ts +3 -2
  46. package/dist/cjs/hooks/usePagination.d.ts.map +1 -0
  47. package/dist/cjs/hooks/usePagination.js +53 -0
  48. package/dist/{hooks → cjs/hooks}/useSizer.d.ts +28 -29
  49. package/dist/cjs/hooks/useSizer.d.ts.map +1 -0
  50. package/dist/cjs/hooks/useSizer.js +176 -0
  51. package/dist/{hooks → cjs/hooks}/useTooltip.d.ts +2 -1
  52. package/dist/cjs/hooks/useTooltip.d.ts.map +1 -0
  53. package/dist/cjs/hooks/useTooltip.js +82 -0
  54. package/dist/{hooks → cjs/hooks}/useUndo.d.ts +2 -1
  55. package/dist/cjs/hooks/useUndo.d.ts.map +1 -0
  56. package/dist/cjs/hooks/useUndo.js +87 -0
  57. package/dist/cjs/index.d.ts +19 -0
  58. package/dist/cjs/index.d.ts.map +1 -0
  59. package/dist/cjs/index.js +29 -0
  60. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  61. package/dist/{types.d.ts → cjs/types.d.ts} +8 -3
  62. package/dist/cjs/types.d.ts.map +1 -0
  63. package/dist/{types.js → cjs/types.js} +7 -8
  64. package/dist/cjs/utils.d.ts +9 -0
  65. package/dist/cjs/utils.d.ts.map +1 -0
  66. package/dist/cjs/utils.js +58 -0
  67. package/dist/cjs/vitest.config.d.ts +3 -0
  68. package/dist/cjs/vitest.config.d.ts.map +1 -0
  69. package/dist/cjs/vitest.config.js +24 -0
  70. package/dist/esm/Cell.d.ts +35 -0
  71. package/dist/esm/Cell.d.ts.map +1 -0
  72. package/dist/esm/Cell.js +24 -0
  73. package/dist/esm/CellOverlay.d.ts +21 -0
  74. package/dist/esm/CellOverlay.d.ts.map +1 -0
  75. package/dist/esm/CellOverlay.js +120 -0
  76. package/dist/esm/Context.d.ts +8 -0
  77. package/dist/esm/Context.d.ts.map +1 -0
  78. package/dist/esm/Context.js +9 -0
  79. package/dist/esm/FillHandle.d.ts +8 -0
  80. package/dist/esm/FillHandle.d.ts.map +1 -0
  81. package/dist/{FillHandle.js → esm/FillHandle.js} +5 -11
  82. package/dist/esm/Grid.d.ts +558 -0
  83. package/dist/esm/Grid.d.ts.map +1 -0
  84. package/dist/esm/Grid.js +2451 -0
  85. package/dist/esm/GridLine.d.ts +5 -0
  86. package/dist/esm/GridLine.d.ts.map +1 -0
  87. package/dist/esm/GridLine.js +7 -0
  88. package/dist/esm/Image.d.ts +11 -0
  89. package/dist/esm/Image.d.ts.map +1 -0
  90. package/dist/esm/Image.js +53 -0
  91. package/dist/esm/MemoizedGrid.d.ts +49 -0
  92. package/dist/esm/MemoizedGrid.d.ts.map +1 -0
  93. package/dist/esm/MemoizedGrid.js +98 -0
  94. package/dist/esm/Selection.d.ts +5 -0
  95. package/dist/esm/Selection.d.ts.map +1 -0
  96. package/dist/esm/Selection.js +7 -0
  97. package/dist/esm/helpers.d.ts +281 -0
  98. package/dist/esm/helpers.d.ts.map +1 -0
  99. package/dist/esm/helpers.js +1260 -0
  100. package/dist/esm/hooks/useCopyPaste.d.ts +53 -0
  101. package/dist/esm/hooks/useCopyPaste.d.ts.map +1 -0
  102. package/dist/{hooks → esm/hooks}/useCopyPaste.js +40 -46
  103. package/dist/esm/hooks/useEditable.d.ts +253 -0
  104. package/dist/esm/hooks/useEditable.d.ts.map +1 -0
  105. package/dist/esm/hooks/useEditable.js +482 -0
  106. package/dist/esm/hooks/useFilter.d.ts +69 -0
  107. package/dist/esm/hooks/useFilter.d.ts.map +1 -0
  108. package/dist/{hooks → esm/hooks}/useFilter.js +22 -42
  109. package/dist/esm/hooks/useImage.d.ts +13 -0
  110. package/dist/esm/hooks/useImage.d.ts.map +1 -0
  111. package/dist/esm/hooks/useImage.js +76 -0
  112. package/dist/esm/hooks/usePagination.d.ts +69 -0
  113. package/dist/esm/hooks/usePagination.d.ts.map +1 -0
  114. package/dist/esm/hooks/usePagination.js +47 -0
  115. package/dist/esm/hooks/useSizer.d.ts +114 -0
  116. package/dist/esm/hooks/useSizer.d.ts.map +1 -0
  117. package/dist/esm/hooks/useSizer.js +176 -0
  118. package/dist/esm/hooks/useTooltip.d.ts +43 -0
  119. package/dist/esm/hooks/useTooltip.d.ts.map +1 -0
  120. package/dist/esm/hooks/useTooltip.js +80 -0
  121. package/dist/esm/hooks/useUndo.d.ts +36 -0
  122. package/dist/esm/hooks/useUndo.d.ts.map +1 -0
  123. package/dist/{hooks → esm/hooks}/useUndo.js +16 -25
  124. package/dist/esm/index.d.ts +19 -0
  125. package/dist/esm/index.d.ts.map +1 -0
  126. package/dist/esm/index.js +17 -0
  127. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  128. package/dist/esm/types.d.ts +70 -0
  129. package/dist/esm/types.d.ts.map +1 -0
  130. package/dist/esm/types.js +68 -0
  131. package/dist/esm/utils.d.ts +9 -0
  132. package/dist/esm/utils.d.ts.map +1 -0
  133. package/dist/esm/utils.js +104 -0
  134. package/dist/esm/vitest.config.d.ts +3 -0
  135. package/dist/esm/vitest.config.d.ts.map +1 -0
  136. package/dist/esm/vitest.config.js +22 -0
  137. package/package.json +28 -29
  138. package/dist/Cell.d.ts +0 -23
  139. package/dist/Cell.js +0 -55
  140. package/dist/Cell.js.map +0 -1
  141. package/dist/CellOverlay.js +0 -116
  142. package/dist/CellOverlay.js.map +0 -1
  143. package/dist/FillHandle.js.map +0 -1
  144. package/dist/Grid.d.ts +0 -385
  145. package/dist/Grid.js +0 -1684
  146. package/dist/Grid.js.map +0 -1
  147. package/dist/GridLine.js +0 -13
  148. package/dist/GridLine.js.map +0 -1
  149. package/dist/Image.d.ts +0 -8
  150. package/dist/Image.js +0 -50
  151. package/dist/Image.js.map +0 -1
  152. package/dist/Selection.d.ts +0 -4
  153. package/dist/Selection.js +0 -9
  154. package/dist/Selection.js.map +0 -1
  155. package/dist/helpers.js +0 -1033
  156. package/dist/helpers.js.map +0 -1
  157. package/dist/hooks/useCopyPaste.js.map +0 -1
  158. package/dist/hooks/useEditable.js +0 -477
  159. package/dist/hooks/useEditable.js.map +0 -1
  160. package/dist/hooks/useFilter.js.map +0 -1
  161. package/dist/hooks/useImage.js +0 -42
  162. package/dist/hooks/useImage.js.map +0 -1
  163. package/dist/hooks/usePagination.js +0 -73
  164. package/dist/hooks/usePagination.js.map +0 -1
  165. package/dist/hooks/useSelection.d.ts +0 -175
  166. package/dist/hooks/useSelection.js +0 -980
  167. package/dist/hooks/useSelection.js.map +0 -1
  168. package/dist/hooks/useSizer.js +0 -150
  169. package/dist/hooks/useSizer.js.map +0 -1
  170. package/dist/hooks/useTooltip.js +0 -106
  171. package/dist/hooks/useTooltip.js.map +0 -1
  172. package/dist/hooks/useTouch.d.ts +0 -21
  173. package/dist/hooks/useTouch.js +0 -73
  174. package/dist/hooks/useTouch.js.map +0 -1
  175. package/dist/hooks/useUndo.js.map +0 -1
  176. package/dist/index.d.ts +0 -25
  177. package/dist/index.js +0 -61
  178. package/dist/index.js.map +0 -1
  179. package/dist/types.js.map +0 -1
  180. package/dist/utils.d.ts +0 -8
  181. package/dist/utils.js +0 -153
  182. package/dist/utils.js.map +0 -1
  183. package/src/Cell.tsx +0 -100
  184. package/src/CellOverlay.tsx +0 -191
  185. package/src/FillHandle.tsx +0 -37
  186. package/src/Grid.tsx +0 -2677
  187. package/src/GridLine.tsx +0 -23
  188. package/src/Image.tsx +0 -43
  189. package/src/Selection.tsx +0 -9
  190. package/src/helpers.ts +0 -1455
  191. package/src/hooks/useCopyPaste.ts +0 -265
  192. package/src/hooks/useEditable.tsx +0 -945
  193. package/src/hooks/useFilter.tsx +0 -233
  194. package/src/hooks/useImage.ts +0 -57
  195. package/src/hooks/usePagination.tsx +0 -153
  196. package/src/hooks/useSelection.ts +0 -1437
  197. package/src/hooks/useSizer.ts +0 -312
  198. package/src/hooks/useTooltip.tsx +0 -172
  199. package/src/hooks/useTouch.ts +0 -116
  200. package/src/hooks/useUndo.ts +0 -134
  201. package/src/index.tsx +0 -46
  202. package/src/tests/Grid.spec.tsx +0 -47
  203. package/src/tests/helpers.test.ts +0 -292
  204. package/src/tests/usePagination.test.ts +0 -28
  205. package/src/tests/useSelection.test.ts +0 -27
  206. package/src/tests/useUndo.test.ts +0 -73
  207. package/src/types.ts +0 -69
  208. package/src/utils.tsx +0 -287
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- import { CellInterface, GridRef, SelectionArea } from "../Grid";
1
+ import type React from "react";
2
+ import type { CellInterface, GridRef, SelectionArea } from "../Grid";
3
3
  export interface CopyProps {
4
4
  /**
5
5
  * Selection bounds
@@ -50,3 +50,4 @@ export interface CopyResults {
50
50
  */
51
51
  declare const useCopyPaste: ({ selections, activeCell, getValue, gridRef, onPaste, onCut, onCopy, getText, }: CopyProps) => CopyResults;
52
52
  export default useCopyPaste;
53
+ //# sourceMappingURL=useCopyPaste.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyPaste.d.ts","sourceRoot":"","sources":["../../../hooks/useCopyPaste.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIrE,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAClC;;OAEG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,GAAG,CAAC;IACvC;;OAEG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7C;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAChD;;OAEG;IACH,OAAO,CAAC,EAAE,CACR,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,EACzB,UAAU,EAAE,aAAa,GAAG,IAAI,EAChC,aAAa,EAAE,aAAa,EAAE,EAE9B,SAAS,CAAC,EAAE,aAAa,KACtB,IAAI,CAAC;IACV;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3C;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB;AAWD;;;;;;;;GAQG;AACH,QAAA,MAAM,YAAY,GAAI,iFASnB,SAAS,KAAG,WA4Ld,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var react_1 = require("react");
5
+ var types_1 = require("../types");
6
+ var helpers_1 = require("./../helpers");
7
+ var defaultGetText = function (text) { return text; };
8
+ /**
9
+ * Copy paste hook
10
+ * Usage
11
+ *
12
+ * useCopyPaste ({
13
+ * onPaste: (text) => {
14
+ * }
15
+ * })
16
+ */
17
+ var useCopyPaste = function (_a) {
18
+ var _b = _a.selections, selections = _b === void 0 ? [] : _b, _c = _a.activeCell, activeCell = _c === void 0 ? null : _c, getValue = _a.getValue, gridRef = _a.gridRef, onPaste = _a.onPaste, onCut = _a.onCut, onCopy = _a.onCopy, _d = _a.getText, getText = _d === void 0 ? defaultGetText : _d;
19
+ var selectionRef = (0, react_1.useRef)({ selections: selections, activeCell: activeCell, getValue: getValue });
20
+ var cutSelections = (0, react_1.useRef)(undefined);
21
+ /* Keep selections and activeCell upto date */
22
+ (0, react_1.useEffect)(function () {
23
+ selectionRef.current = { selections: selections, activeCell: activeCell, getValue: getValue };
24
+ }, [selections, activeCell, getValue]);
25
+ var currentSelections = function () {
26
+ var sel = selectionRef.current.selections.length
27
+ ? selectionRef.current.selections
28
+ : (0, helpers_1.selectionFromActiveCell)(selectionRef.current.activeCell);
29
+ return sel[sel.length - 1];
30
+ };
31
+ (0, react_1.useEffect)(function () {
32
+ if (!gridRef.current)
33
+ return;
34
+ document.addEventListener("copy", handleCopy);
35
+ document.addEventListener("paste", handlePaste);
36
+ document.addEventListener("cut", handleCut);
37
+ return function () {
38
+ document.removeEventListener("copy", handleCopy);
39
+ document.removeEventListener("paste", handlePaste);
40
+ document.removeEventListener("cut", handleCut);
41
+ };
42
+ }, []);
43
+ var handleCut = (0, react_1.useCallback)(function () {
44
+ var _a;
45
+ if (document.activeElement !== ((_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.container)) {
46
+ return;
47
+ }
48
+ cutSelections.current = currentSelections();
49
+ handleProgramaticCopy();
50
+ }, []);
51
+ var handleCopy = (0, react_1.useCallback)(function (e) {
52
+ var _a, _b, _c, _d, _e;
53
+ if (document.activeElement !== ((_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.container)) {
54
+ return;
55
+ }
56
+ /* Only copy the last selection */
57
+ var selection = currentSelections();
58
+ var range = selection.range;
59
+ var top = range.startRowIndex, left = range.startColumnIndex, right = range.endColumnIndex, bottom = range.endRowIndex;
60
+ var rows = [];
61
+ var cells = [];
62
+ for (var i = top; i <= bottom; i++) {
63
+ var row = [];
64
+ var cell = [];
65
+ for (var j = left; j <= right; j++) {
66
+ var coords = {
67
+ rowIndex: i,
68
+ columnIndex: j,
69
+ };
70
+ var config = tslib_1.__assign(tslib_1.__assign({}, selectionRef.current.getValue(coords)), { sourceCell: coords });
71
+ var value = getText(config);
72
+ cell.push(config);
73
+ row.push(value);
74
+ }
75
+ rows.push(row);
76
+ cells.push(cell);
77
+ }
78
+ var _f = tslib_1.__read((0, helpers_1.prepareClipboardData)(rows), 2), html = _f[0], csv = _f[1];
79
+ (_b = e.clipboardData) === null || _b === void 0 ? void 0 : _b.setData(types_1.MimeType.html, html);
80
+ (_c = e.clipboardData) === null || _c === void 0 ? void 0 : _c.setData(types_1.MimeType.plain, csv);
81
+ (_d = e.clipboardData) === null || _d === void 0 ? void 0 : _d.setData(types_1.MimeType.csv, csv);
82
+ (_e = e.clipboardData) === null || _e === void 0 ? void 0 : _e.setData(types_1.MimeType.json, JSON.stringify(cells));
83
+ e.preventDefault();
84
+ onCopy === null || onCopy === void 0 ? void 0 : onCopy([selection]);
85
+ }, [currentSelections]);
86
+ var handlePaste = function (e) {
87
+ var e_1, _a, e_2, _b, e_3, _c;
88
+ var _d, _e, _f, _g;
89
+ if (document.activeElement !== ((_d = gridRef.current) === null || _d === void 0 ? void 0 : _d.container)) {
90
+ return;
91
+ }
92
+ var items = (_e = e.clipboardData) === null || _e === void 0 ? void 0 : _e.items;
93
+ if (!items)
94
+ return;
95
+ var mimeTypes = [
96
+ types_1.MimeType.json,
97
+ types_1.MimeType.html,
98
+ types_1.MimeType.csv,
99
+ types_1.MimeType.plain,
100
+ ];
101
+ var type;
102
+ var value;
103
+ var plainTextValue = (_f = e.clipboardData) === null || _f === void 0 ? void 0 : _f.getData(types_1.MimeType.plain);
104
+ try {
105
+ for (var mimeTypes_1 = tslib_1.__values(mimeTypes), mimeTypes_1_1 = mimeTypes_1.next(); !mimeTypes_1_1.done; mimeTypes_1_1 = mimeTypes_1.next()) {
106
+ type = mimeTypes_1_1.value;
107
+ value = (_g = e.clipboardData) === null || _g === void 0 ? void 0 : _g.getData(type);
108
+ if (value)
109
+ break;
110
+ }
111
+ }
112
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
113
+ finally {
114
+ try {
115
+ if (mimeTypes_1_1 && !mimeTypes_1_1.done && (_a = mimeTypes_1.return)) _a.call(mimeTypes_1);
116
+ }
117
+ finally { if (e_1) throw e_1.error; }
118
+ }
119
+ if (!type || !value) {
120
+ console.warn("No clipboard data to paste");
121
+ return;
122
+ }
123
+ var rows = [];
124
+ if (/^text\/html/.test(type)) {
125
+ var domparser = new DOMParser();
126
+ var doc = domparser.parseFromString(value, type);
127
+ var supportedNodes = "table, p, h1, h2, h3, h4, h5, h6";
128
+ var nodes = doc.querySelectorAll(supportedNodes);
129
+ if (nodes.length === 0) {
130
+ rows.push([plainTextValue]);
131
+ }
132
+ for (var i = 0; i < nodes.length; i++) {
133
+ var node = nodes[i];
134
+ if (node.nodeName === "TABLE") {
135
+ var tableRows = node.querySelectorAll("tr");
136
+ for (var i_1 = 0; i_1 < tableRows.length; i_1++) {
137
+ var tableRow = tableRows[i_1];
138
+ var row = [];
139
+ var cells = tableRow.querySelectorAll("td");
140
+ for (var j = 0; j < cells.length; j++) {
141
+ var cell = cells[j];
142
+ row.push(cell.textContent);
143
+ }
144
+ rows.push(row);
145
+ }
146
+ }
147
+ else {
148
+ // Single nodes
149
+ rows.push([node.textContent]);
150
+ }
151
+ }
152
+ }
153
+ else if (type === types_1.MimeType.json) {
154
+ rows = JSON.parse(value);
155
+ }
156
+ else if (type === types_1.MimeType.plain) {
157
+ rows = [[value]];
158
+ }
159
+ else {
160
+ var values = value.split("\n");
161
+ try {
162
+ for (var values_1 = tslib_1.__values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {
163
+ var val = values_1_1.value;
164
+ var row = [];
165
+ try {
166
+ for (var _h = (e_3 = void 0, tslib_1.__values(val.split(","))), _j = _h.next(); !_j.done; _j = _h.next()) {
167
+ var cell = _j.value;
168
+ row.push(cell.replace(/^"|"$/gi, ""));
169
+ }
170
+ }
171
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
172
+ finally {
173
+ try {
174
+ if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
175
+ }
176
+ finally { if (e_3) throw e_3.error; }
177
+ }
178
+ rows.push(row);
179
+ }
180
+ }
181
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
182
+ finally {
183
+ try {
184
+ if (values_1_1 && !values_1_1.done && (_b = values_1.return)) _b.call(values_1);
185
+ }
186
+ finally { if (e_2) throw e_2.error; }
187
+ }
188
+ }
189
+ onPaste &&
190
+ onPaste(rows, selectionRef.current.activeCell, selectionRef.current.selections, cutSelections.current);
191
+ cutSelections.current = undefined;
192
+ };
193
+ /**
194
+ * User is trying to copy from outisde the app
195
+ */
196
+ var handleProgramaticCopy = (0, react_1.useCallback)(function () {
197
+ if (!gridRef.current)
198
+ return;
199
+ gridRef.current.focus();
200
+ document.execCommand("copy");
201
+ }, [gridRef]);
202
+ /**
203
+ * User is trying to paste from outisde the app
204
+ */
205
+ var handleProgramaticPaste = (0, react_1.useCallback)(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
206
+ var text, clipboardData, event;
207
+ return tslib_1.__generator(this, function (_a) {
208
+ switch (_a.label) {
209
+ case 0:
210
+ if (!gridRef.current)
211
+ return [2 /*return*/];
212
+ gridRef.current.focus();
213
+ return [4 /*yield*/, navigator.clipboard.readText()];
214
+ case 1:
215
+ text = _a.sent();
216
+ clipboardData = new DataTransfer();
217
+ clipboardData.setData(types_1.MimeType.plain, text);
218
+ event = new ClipboardEvent("paste", { clipboardData: clipboardData });
219
+ handlePaste(event);
220
+ return [2 /*return*/];
221
+ }
222
+ });
223
+ }); }, [gridRef, handlePaste]);
224
+ return {
225
+ copy: handleProgramaticCopy,
226
+ paste: handleProgramaticPaste,
227
+ cut: handleCut,
228
+ };
229
+ };
230
+ exports.default = useCopyPaste;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import { CellInterface, ScrollCoords, CellPosition, GridRef, SelectionArea } from "../Grid";
2
+ import type { CellInterface, CellPosition, GridRef, ScrollCoords, SelectionArea } from "../Grid";
3
+ import type { HiddenType } from "../helpers";
3
4
  import { Direction } from "./../types";
4
- import { HiddenType } from "../helpers";
5
5
  export interface UseEditableOptions {
6
6
  editorProps?: () => any;
7
7
  /**
@@ -15,7 +15,7 @@ export interface UseEditableOptions {
15
15
  /**
16
16
  * Value getter
17
17
  */
18
- getValue: (cell: CellInterface) => any;
18
+ getValue?: (rowIndex: number, columnIndex: number) => any;
19
19
  /**
20
20
  * Callback when user cancels editing
21
21
  */
@@ -39,7 +39,7 @@ export interface UseEditableOptions {
39
39
  /**
40
40
  * Active selected cell. This can change, if the user is in formula mode
41
41
  */
42
- activeCell: CellInterface | null;
42
+ activeCell?: CellInterface | null;
43
43
  /**
44
44
  * Callback fired before editing. Can be used to prevent editing. Do not use it, Can be removed in next release.
45
45
  */
@@ -119,7 +119,7 @@ export interface EditableResults {
119
119
  /**
120
120
  * Get next focusable cell based on current activeCell and direction user is moving
121
121
  */
122
- nextFocusableCell: (currentCell: CellInterface, direction: Direction) => CellInterface | null;
122
+ getNextFocusableCell: (currentCell: CellInterface, direction: Direction) => CellInterface | null;
123
123
  /**
124
124
  * Is editing in progress
125
125
  */
@@ -131,7 +131,7 @@ export interface EditableResults {
131
131
  /**
132
132
  * Make a cell editable
133
133
  */
134
- makeEditable: (cell: CellInterface, value?: string) => void;
134
+ makeEditable: (cell: CellInterface, value?: string, autoFocus?: boolean) => void;
135
135
  /**
136
136
  * Set editable value imperatively
137
137
  */
@@ -165,7 +165,11 @@ export interface EditorProps {
165
165
  /**
166
166
  * Initial value of the cell
167
167
  */
168
- value?: string | number;
168
+ value?: string;
169
+ /**
170
+ * Is user entering a new value
171
+ */
172
+ isNewValue?: boolean;
169
173
  /**
170
174
  * Callback when a value has changed.
171
175
  */
@@ -197,7 +201,7 @@ export interface EditorProps {
197
201
  /**
198
202
  * Next cell that should receive focus
199
203
  */
200
- nextFocusableCell?: (activeCell: CellInterface, direction?: Direction) => CellInterface | null;
204
+ getNextFocusableCell?: (activeCell: CellInterface, direction?: Direction) => CellInterface | null;
201
205
  /**
202
206
  * Autofocus the editor when open
203
207
  */
@@ -235,6 +239,15 @@ export declare const getDefaultEditor: (cell: CellInterface | null) => React.FC<
235
239
  /**
236
240
  * Hook to make grid editable
237
241
  * @param param
242
+ *
243
+ * TODO:
244
+ * 1. Edit a cell
245
+ * 2. Tab to next cell
246
+ * 3. Enter a value
247
+ * 4. Press down key
248
+ *
249
+ * Moves to incorrect cell
238
250
  */
239
251
  declare const useEditable: ({ getEditor, gridRef, getValue, onChange, onSubmit, onCancel, onDelete, selections, activeCell, canEdit, frozenRows, frozenColumns, hideOnBlur, isHiddenRow, isHiddenColumn, rowCount, columnCount, selectionTopBound, selectionBottomBound, selectionLeftBound, selectionRightBound, editorProps, onBeforeEdit, onKeyDown, sticky, }: UseEditableOptions) => EditableResults;
240
252
  export default useEditable;
253
+ //# sourceMappingURL=useEditable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditable.d.ts","sourceRoot":"","sources":["../../../hooks/useEditable.tsx"],"names":[],"mappings":"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"}