sheet-happens 0.0.56 → 0.0.58
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.
- package/dist/clipboard.d.ts +6 -10
- package/dist/index.js +144 -70
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +144 -70
- package/dist/index.modern.js.map +1 -1
- package/dist/mouse.d.ts +1 -1
- package/dist/sheet.d.ts +7 -6
- package/dist/types.d.ts +15 -3
- package/package.json +1 -1
package/dist/clipboard.d.ts
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
payload?: ClipboardPayload<T>;
|
|
5
|
-
};
|
|
6
|
-
export declare const useClipboardTable: () => {
|
|
7
|
-
peek: ClipboardTable<any> | null | undefined;
|
|
1
|
+
import { ClipboardTable, ClipboardTableCells, CellPropertyFunction, Change, Rectangle } from './types';
|
|
2
|
+
export declare const useClipboardTable: <T extends ClipboardTableCells>(clipboardOrigin: string) => {
|
|
3
|
+
peek: ClipboardTable<T> | null | undefined;
|
|
8
4
|
canPaste: () => boolean;
|
|
9
|
-
copyTable: (rows
|
|
10
|
-
pasteTable: () => Promise<ClipboardTable<
|
|
5
|
+
copyTable: ({ rows, ...rest }: ClipboardTable<T>) => Promise<void>;
|
|
6
|
+
pasteTable: () => Promise<ClipboardTable<T> | null>;
|
|
11
7
|
};
|
|
12
|
-
export declare const useClipboardAPI: <T =
|
|
8
|
+
export declare const useClipboardAPI: <T extends ClipboardTableCells = ClipboardTableCells>(selection: Rectangle, editData: CellPropertyFunction<string>, sourceData: CellPropertyFunction<object | string | number | null>, cellReadOnly: CellPropertyFunction<boolean>, addListener: boolean, onSelectionChange?: ((selection: Rectangle) => void) | undefined, onChange?: ((changes: Change[]) => void) | undefined, onCopy?: ((selection: Rectangle, cut: boolean) => ClipboardTable<T> | null | undefined) | undefined, onPaste?: ((selection: Rectangle, table?: ClipboardTable<T> | undefined) => boolean | null | undefined | Promise<boolean | null | undefined>) | undefined, clipboardOrigin?: string) => {
|
|
13
9
|
clipboardApi: {
|
|
14
10
|
copySelection: (selection: Rectangle, cut?: boolean) => Promise<void>;
|
|
15
11
|
pasteSelection: (selection: Rectangle) => Promise<void>;
|
package/dist/index.js
CHANGED
|
@@ -38,6 +38,15 @@ function _extends() {
|
|
|
38
38
|
return n;
|
|
39
39
|
}, _extends.apply(null, arguments);
|
|
40
40
|
}
|
|
41
|
+
function _objectWithoutPropertiesLoose(r, e) {
|
|
42
|
+
if (null == r) return {};
|
|
43
|
+
var t = {};
|
|
44
|
+
for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
|
|
45
|
+
if (e.includes(n)) continue;
|
|
46
|
+
t[n] = r[n];
|
|
47
|
+
}
|
|
48
|
+
return t;
|
|
49
|
+
}
|
|
41
50
|
function _unsupportedIterableToArray(r, a) {
|
|
42
51
|
if (r) {
|
|
43
52
|
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
@@ -972,7 +981,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
|
|
|
972
981
|
pixelToRow = _ref$current2$cellLay.pixelToRow;
|
|
973
982
|
onFocusChange === null || onFocusChange === void 0 ? void 0 : onFocusChange(true);
|
|
974
983
|
if (knobArea && draggingKnob) {
|
|
975
|
-
var changes = parseKnobOperation(knobArea, selection,
|
|
984
|
+
var changes = parseKnobOperation(knobArea, selection, editData, sourceData, cellReadOnly);
|
|
976
985
|
onChange === null || onChange === void 0 ? void 0 : onChange(changes);
|
|
977
986
|
onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(knobArea, true, true);
|
|
978
987
|
onKnobAreaChange === null || onKnobAreaChange === void 0 ? void 0 : onKnobAreaChange(null);
|
|
@@ -1409,7 +1418,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
|
|
|
1409
1418
|
mouseHandlers: mouseHandlers
|
|
1410
1419
|
};
|
|
1411
1420
|
};
|
|
1412
|
-
var parseKnobOperation = function parseKnobOperation(knobArea, selection,
|
|
1421
|
+
var parseKnobOperation = function parseKnobOperation(knobArea, selection, editData, sourceData, cellReadOnly) {
|
|
1413
1422
|
var _normalizeSelection7 = normalizeSelection(knobArea),
|
|
1414
1423
|
_normalizeSelection7$ = _normalizeSelection7[0],
|
|
1415
1424
|
kx1 = _normalizeSelection7$[0],
|
|
@@ -1444,12 +1453,14 @@ var parseKnobOperation = function parseKnobOperation(knobArea, selection, source
|
|
|
1444
1453
|
var srcY = sy1;
|
|
1445
1454
|
for (var y = fy1; y <= fy2; y++) {
|
|
1446
1455
|
for (var x = fx1; x <= fx2; x++) {
|
|
1447
|
-
var value =
|
|
1456
|
+
var value = editData(x, srcY);
|
|
1457
|
+
var data = sourceData(x, srcY);
|
|
1448
1458
|
if (!cellReadOnly(x, y)) {
|
|
1449
1459
|
changes.push({
|
|
1450
1460
|
x: x,
|
|
1451
1461
|
y: y,
|
|
1452
1462
|
value: value,
|
|
1463
|
+
data: data,
|
|
1453
1464
|
source: {
|
|
1454
1465
|
x: x,
|
|
1455
1466
|
y: srcY
|
|
@@ -1477,12 +1488,14 @@ var parseKnobOperation = function parseKnobOperation(knobArea, selection, source
|
|
|
1477
1488
|
var srcX = sx1;
|
|
1478
1489
|
for (var _x2 = fx1; _x2 <= fx2; _x2++) {
|
|
1479
1490
|
for (var _y2 = fy1; _y2 <= fy2; _y2++) {
|
|
1480
|
-
var _value =
|
|
1491
|
+
var _value = editData(srcX, _y2);
|
|
1492
|
+
var _data = sourceData(srcX, _y2);
|
|
1481
1493
|
if (!cellReadOnly(_x2, _y2)) {
|
|
1482
1494
|
changes.push({
|
|
1483
1495
|
x: _x2,
|
|
1484
1496
|
y: _y2,
|
|
1485
1497
|
value: _value,
|
|
1498
|
+
data: _data,
|
|
1486
1499
|
source: {
|
|
1487
1500
|
x: srcX,
|
|
1488
1501
|
y: _y2
|
|
@@ -2176,11 +2189,13 @@ function _catch(body, recover) {
|
|
|
2176
2189
|
return result;
|
|
2177
2190
|
}
|
|
2178
2191
|
|
|
2192
|
+
var _excluded = ["rows"],
|
|
2193
|
+
_excluded2 = ["origin"];
|
|
2179
2194
|
var NON_BREAKING_SPACE = ' ';
|
|
2180
2195
|
var EMPTY_TABLE = {
|
|
2181
2196
|
rows: []
|
|
2182
2197
|
};
|
|
2183
|
-
var useClipboardTable = function useClipboardTable() {
|
|
2198
|
+
var useClipboardTable = function useClipboardTable(clipboardOrigin) {
|
|
2184
2199
|
var _useState = React.useState(),
|
|
2185
2200
|
peek = _useState[0],
|
|
2186
2201
|
setPeek = _useState[1];
|
|
@@ -2197,22 +2212,17 @@ var useClipboardTable = function useClipboardTable() {
|
|
|
2197
2212
|
};
|
|
2198
2213
|
var hardRefresh = function hardRefresh() {
|
|
2199
2214
|
try {
|
|
2200
|
-
var
|
|
2201
|
-
return Promise.resolve(
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
} else {
|
|
2209
|
-
setPeek(EMPTY_TABLE);
|
|
2210
|
-
}
|
|
2211
|
-
}();
|
|
2212
|
-
if (_temp && _temp.then) return _temp.then(function () {});
|
|
2215
|
+
var _temp = _catch(function () {
|
|
2216
|
+
return Promise.resolve(pasteClipboardTable()).then(function (pasted) {
|
|
2217
|
+
if (pasted) {
|
|
2218
|
+
var _peek = validateClipboardTable(pasted, clipboardOrigin);
|
|
2219
|
+
setPeek(_peek);
|
|
2220
|
+
} else {
|
|
2221
|
+
setPeek(EMPTY_TABLE);
|
|
2222
|
+
}
|
|
2213
2223
|
});
|
|
2214
2224
|
}, function () {});
|
|
2215
|
-
return Promise.resolve(
|
|
2225
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
|
|
2216
2226
|
} catch (e) {
|
|
2217
2227
|
return Promise.reject(e);
|
|
2218
2228
|
}
|
|
@@ -2237,19 +2247,36 @@ var useClipboardTable = function useClipboardTable() {
|
|
|
2237
2247
|
return {
|
|
2238
2248
|
peek: peek,
|
|
2239
2249
|
canPaste: canPaste,
|
|
2240
|
-
copyTable:
|
|
2241
|
-
|
|
2250
|
+
copyTable: function copyTable(_ref) {
|
|
2251
|
+
var rows = _ref.rows,
|
|
2252
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
2253
|
+
return copyClipboardTable(rows, _extends({
|
|
2254
|
+
origin: clipboardOrigin
|
|
2255
|
+
}, rest));
|
|
2256
|
+
},
|
|
2257
|
+
pasteTable: function () {
|
|
2258
|
+
try {
|
|
2259
|
+
return Promise.resolve(pasteClipboardTable()).then(function (pasted) {
|
|
2260
|
+
return pasted ? validateClipboardTable(pasted, clipboardOrigin) : null;
|
|
2261
|
+
});
|
|
2262
|
+
} catch (e) {
|
|
2263
|
+
return Promise.reject(e);
|
|
2264
|
+
}
|
|
2265
|
+
}
|
|
2242
2266
|
};
|
|
2243
2267
|
};
|
|
2244
|
-
var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly, addListener, onSelectionChange, onChange, onCopy, onPaste) {
|
|
2245
|
-
|
|
2268
|
+
var useClipboardAPI = function useClipboardAPI(selection, editData, sourceData, cellReadOnly, addListener, onSelectionChange, onChange, onCopy, onPaste, clipboardOrigin) {
|
|
2269
|
+
if (clipboardOrigin === void 0) {
|
|
2270
|
+
clipboardOrigin = '';
|
|
2271
|
+
}
|
|
2272
|
+
var _useClipboardTable = useClipboardTable(clipboardOrigin),
|
|
2246
2273
|
canPaste = _useClipboardTable.canPaste,
|
|
2247
2274
|
copyTable = _useClipboardTable.copyTable,
|
|
2248
2275
|
pasteTable = _useClipboardTable.pasteTable;
|
|
2249
2276
|
var pasteIntoSelection = React.useCallback(function (selection, table) {
|
|
2250
2277
|
try {
|
|
2251
2278
|
var rows = table.rows,
|
|
2252
|
-
|
|
2279
|
+
data = table.data;
|
|
2253
2280
|
var _normalizeSelection = normalizeSelection(selection),
|
|
2254
2281
|
min = _normalizeSelection[0],
|
|
2255
2282
|
max = _normalizeSelection[1];
|
|
@@ -2265,19 +2292,22 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
|
|
|
2265
2292
|
var repeatX = Math.max(1, Math.floor(selectionSize[0]));
|
|
2266
2293
|
var repeatY = Math.max(1, Math.floor(selectionSize[1]));
|
|
2267
2294
|
var newSelection = [min, addXY(min, [width * repeatX - 1, height * repeatY - 1])];
|
|
2268
|
-
return Promise.resolve(onPaste === null || onPaste === void 0 ? void 0 : onPaste(newSelection,
|
|
2295
|
+
return Promise.resolve(onPaste === null || onPaste === void 0 ? void 0 : onPaste(newSelection, table)).then(function (shouldPaste) {
|
|
2269
2296
|
if (shouldPaste !== false) {
|
|
2270
2297
|
var changes = rows.flatMap(function (row, j) {
|
|
2271
2298
|
return row.flatMap(function (value, i) {
|
|
2272
2299
|
var cells = [];
|
|
2273
2300
|
for (var rx = 0; rx < repeatX; ++rx) {
|
|
2274
2301
|
for (var ry = 0; ry < repeatY; ++ry) {
|
|
2302
|
+
var _data$cells, _data$cells$j;
|
|
2275
2303
|
var x = left + i + rx * width;
|
|
2276
2304
|
var y = top + j + ry * height;
|
|
2305
|
+
var v = data === null || data === void 0 ? void 0 : (_data$cells = data.cells) === null || _data$cells === void 0 ? void 0 : (_data$cells$j = _data$cells[j]) === null || _data$cells$j === void 0 ? void 0 : _data$cells$j[i];
|
|
2277
2306
|
if (!(cellReadOnly !== null && cellReadOnly !== void 0 && cellReadOnly(x, y))) cells.push({
|
|
2278
2307
|
x: x,
|
|
2279
2308
|
y: y,
|
|
2280
|
-
value: value
|
|
2309
|
+
value: value,
|
|
2310
|
+
data: v
|
|
2281
2311
|
});
|
|
2282
2312
|
}
|
|
2283
2313
|
}
|
|
@@ -2299,11 +2329,10 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
|
|
|
2299
2329
|
cut = false;
|
|
2300
2330
|
}
|
|
2301
2331
|
try {
|
|
2302
|
-
var
|
|
2303
|
-
var
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
if ((_payload$cut = payload === null || payload === void 0 ? void 0 : payload.cut) != null ? _payload$cut : cut) {
|
|
2332
|
+
var _onCopy, _table$cut;
|
|
2333
|
+
var table = (_onCopy = onCopy === null || onCopy === void 0 ? void 0 : onCopy(selection, cut)) != null ? _onCopy : formatSelectionAsRows(selection, editData, sourceData);
|
|
2334
|
+
copyTable(table);
|
|
2335
|
+
if ((_table$cut = table === null || table === void 0 ? void 0 : table.cut) != null ? _table$cut : cut) {
|
|
2307
2336
|
var changes = [];
|
|
2308
2337
|
forSelectionRows(selection)(function (y) {
|
|
2309
2338
|
forSelectionColumns(selection)(function (x) {
|
|
@@ -2311,7 +2340,8 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
|
|
|
2311
2340
|
var change = {
|
|
2312
2341
|
x: x,
|
|
2313
2342
|
y: y,
|
|
2314
|
-
value: ''
|
|
2343
|
+
value: '',
|
|
2344
|
+
data: null
|
|
2315
2345
|
};
|
|
2316
2346
|
changes.push(change);
|
|
2317
2347
|
}
|
|
@@ -2341,8 +2371,11 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
|
|
|
2341
2371
|
try {
|
|
2342
2372
|
e.preventDefault();
|
|
2343
2373
|
var clipboardData = e.clipboardData || window.clipboardData;
|
|
2344
|
-
return Promise.resolve(parseClipboardTable(clipboardData)).then(function (
|
|
2345
|
-
if (
|
|
2374
|
+
return Promise.resolve(parseClipboardTable(clipboardData)).then(function (parsed) {
|
|
2375
|
+
if (parsed) {
|
|
2376
|
+
var table = validateClipboardTable(parsed, clipboardOrigin);
|
|
2377
|
+
if (table) pasteIntoSelection(selection, table);
|
|
2378
|
+
}
|
|
2346
2379
|
});
|
|
2347
2380
|
} catch (e) {
|
|
2348
2381
|
return Promise.reject(e);
|
|
@@ -2368,6 +2401,21 @@ var useClipboardAPI = function useClipboardAPI(selection, editData, cellReadOnly
|
|
|
2368
2401
|
onClipboardPaste: onClipboardPaste
|
|
2369
2402
|
};
|
|
2370
2403
|
};
|
|
2404
|
+
var validateClipboardTable = function validateClipboardTable(parsed, clipboardOrigin) {
|
|
2405
|
+
var rows = parsed.rows,
|
|
2406
|
+
payload = parsed.payload;
|
|
2407
|
+
if (!payload) return {
|
|
2408
|
+
rows: rows
|
|
2409
|
+
};
|
|
2410
|
+
var origin = payload.origin,
|
|
2411
|
+
rest = _objectWithoutPropertiesLoose(payload, _excluded2);
|
|
2412
|
+
if (origin === clipboardOrigin) return _extends({
|
|
2413
|
+
rows: rows
|
|
2414
|
+
}, rest);
|
|
2415
|
+
return {
|
|
2416
|
+
rows: rows
|
|
2417
|
+
};
|
|
2418
|
+
};
|
|
2371
2419
|
var copyClipboardTable = function copyClipboardTable(rows, payload) {
|
|
2372
2420
|
try {
|
|
2373
2421
|
var text = formatRowsAsTSV(rows);
|
|
@@ -2391,8 +2439,7 @@ var pasteClipboardTable = function pasteClipboardTable() {
|
|
|
2391
2439
|
try {
|
|
2392
2440
|
return Promise.resolve(navigator.clipboard.read()).then(function (items) {
|
|
2393
2441
|
var item = items[0];
|
|
2394
|
-
|
|
2395
|
-
return parseClipboardTable(item);
|
|
2442
|
+
return item ? Promise.resolve(parseClipboardTable(item)) : null;
|
|
2396
2443
|
});
|
|
2397
2444
|
} catch (e) {
|
|
2398
2445
|
return Promise.reject(e);
|
|
@@ -2400,7 +2447,7 @@ var pasteClipboardTable = function pasteClipboardTable() {
|
|
|
2400
2447
|
};
|
|
2401
2448
|
var parseClipboardTable = function parseClipboardTable(item) {
|
|
2402
2449
|
try {
|
|
2403
|
-
var
|
|
2450
|
+
var _temp4 = function _temp4() {
|
|
2404
2451
|
return rows ? {
|
|
2405
2452
|
rows: rows,
|
|
2406
2453
|
payload: payload
|
|
@@ -2418,7 +2465,7 @@ var parseClipboardTable = function parseClipboardTable(item) {
|
|
|
2418
2465
|
return '';
|
|
2419
2466
|
};
|
|
2420
2467
|
var rows, payload;
|
|
2421
|
-
var
|
|
2468
|
+
var _temp3 = function () {
|
|
2422
2469
|
if (has('text/html')) {
|
|
2423
2470
|
return Promise.resolve(get('text/html')).then(function (pastedHtml) {
|
|
2424
2471
|
var _parsePastedHtml = parsePastedHtml(pastedHtml);
|
|
@@ -2426,17 +2473,17 @@ var parseClipboardTable = function parseClipboardTable(item) {
|
|
|
2426
2473
|
payload = _parsePastedHtml.payload;
|
|
2427
2474
|
});
|
|
2428
2475
|
} else {
|
|
2429
|
-
var
|
|
2476
|
+
var _temp5 = function () {
|
|
2430
2477
|
if (has('text/plain')) {
|
|
2431
2478
|
return Promise.resolve(get('text/plain')).then(function (text) {
|
|
2432
2479
|
rows = parsePastedText(text);
|
|
2433
2480
|
});
|
|
2434
2481
|
}
|
|
2435
2482
|
}();
|
|
2436
|
-
if (
|
|
2483
|
+
if (_temp5 && _temp5.then) return _temp5.then(function () {});
|
|
2437
2484
|
}
|
|
2438
2485
|
}();
|
|
2439
|
-
return Promise.resolve(
|
|
2486
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
|
|
2440
2487
|
} catch (e) {
|
|
2441
2488
|
return Promise.reject(e);
|
|
2442
2489
|
}
|
|
@@ -2465,12 +2512,15 @@ var formatRowsAsHTML = function formatRowsAsHTML(rows, payload) {
|
|
|
2465
2512
|
return table;
|
|
2466
2513
|
};
|
|
2467
2514
|
var formatTextAsHTML = function formatTextAsHTML(s) {
|
|
2468
|
-
|
|
2515
|
+
var _s$toString$replace;
|
|
2516
|
+
return (_s$toString$replace = s === null || s === void 0 ? void 0 : s.toString().replace(/[&"'<>]/g, function (i) {
|
|
2469
2517
|
return "&#" + i.charCodeAt(0) + ";";
|
|
2470
|
-
});
|
|
2518
|
+
})) != null ? _s$toString$replace : '';
|
|
2471
2519
|
};
|
|
2472
|
-
var formatSelectionAsRows = function formatSelectionAsRows(selection, editData) {
|
|
2473
|
-
if (isEmptySelection(selection)) return
|
|
2520
|
+
var formatSelectionAsRows = function formatSelectionAsRows(selection, editData, sourceData) {
|
|
2521
|
+
if (isEmptySelection(selection)) return {
|
|
2522
|
+
rows: []
|
|
2523
|
+
};
|
|
2474
2524
|
var _normalizeSelection2 = normalizeSelection(selection),
|
|
2475
2525
|
_normalizeSelection2$ = _normalizeSelection2[0],
|
|
2476
2526
|
minX = _normalizeSelection2$[0],
|
|
@@ -2490,18 +2540,27 @@ var formatSelectionAsRows = function formatSelectionAsRows(selection, editData)
|
|
|
2490
2540
|
minY = 0;
|
|
2491
2541
|
maxY = cellY;
|
|
2492
2542
|
}
|
|
2493
|
-
var
|
|
2543
|
+
var texts = [];
|
|
2544
|
+
var datas = {};
|
|
2494
2545
|
for (var y = minY; y <= maxY; y++) {
|
|
2495
|
-
var
|
|
2546
|
+
var textRow = [];
|
|
2547
|
+
var dataRow = {};
|
|
2496
2548
|
for (var x = minX; x <= maxX; x++) {
|
|
2497
|
-
var
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2549
|
+
var _editData, _sourceData;
|
|
2550
|
+
var value = (_editData = editData(x, y)) != null ? _editData : '';
|
|
2551
|
+
var data = (_sourceData = sourceData(x, y)) != null ? _sourceData : null;
|
|
2552
|
+
dataRow[textRow.length] = data;
|
|
2553
|
+
textRow.push(value);
|
|
2501
2554
|
}
|
|
2502
|
-
|
|
2555
|
+
datas[texts.length] = dataRow;
|
|
2556
|
+
texts.push(textRow);
|
|
2503
2557
|
}
|
|
2504
|
-
return
|
|
2558
|
+
return {
|
|
2559
|
+
rows: texts,
|
|
2560
|
+
data: {
|
|
2561
|
+
cells: datas
|
|
2562
|
+
}
|
|
2563
|
+
};
|
|
2505
2564
|
};
|
|
2506
2565
|
var _findTag = function findTag(element, tagName) {
|
|
2507
2566
|
for (var _iterator = _createForOfIteratorHelperLoose(element.children), _step; !(_step = _iterator()).done;) {
|
|
@@ -2525,6 +2584,7 @@ var parsePastedHtml = function parsePastedHtml(html) {
|
|
|
2525
2584
|
var json = sheetNode.getAttribute('payload');
|
|
2526
2585
|
try {
|
|
2527
2586
|
payload = JSON.parse(json);
|
|
2587
|
+
if (!payload || typeof payload !== 'object') payload = null;
|
|
2528
2588
|
} catch (e) {}
|
|
2529
2589
|
}
|
|
2530
2590
|
var tableNode = _findTag(div, 'TABLE');
|
|
@@ -3430,7 +3490,7 @@ var resolveSheetStyle = function resolveSheetStyle(sheetStyle) {
|
|
|
3430
3490
|
};
|
|
3431
3491
|
|
|
3432
3492
|
var Sheet = React.forwardRef(function (props, ref) {
|
|
3433
|
-
var _props$selection, _props$secondarySelec, _props$cacheLayout, _props$
|
|
3493
|
+
var _props$selection, _props$secondarySelec, _props$cacheLayout, _props$clipboardOrigi, _props$inputComponent2;
|
|
3434
3494
|
var canvasRef = React.useRef(null);
|
|
3435
3495
|
var overlayRef = React.useRef(null);
|
|
3436
3496
|
var _useState = React.useState(INITIAL_MAX_SCROLL),
|
|
@@ -3471,9 +3531,12 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3471
3531
|
var _useState11 = React.useState(''),
|
|
3472
3532
|
editValue = _useState11[0],
|
|
3473
3533
|
setEditValue = _useState11[1];
|
|
3474
|
-
var _useState12 = React.useState(
|
|
3475
|
-
|
|
3476
|
-
|
|
3534
|
+
var _useState12 = React.useState(null),
|
|
3535
|
+
sourceValue = _useState12[0],
|
|
3536
|
+
setSourceValue = _useState12[1];
|
|
3537
|
+
var _useState13 = React.useState(false),
|
|
3538
|
+
arrowKeyCommitMode = _useState13[0],
|
|
3539
|
+
setArrowKeyCommitMode = _useState13[1];
|
|
3477
3540
|
var _useResizeObserver = useResizeObserver({
|
|
3478
3541
|
ref: overlayRef
|
|
3479
3542
|
}),
|
|
@@ -3633,16 +3696,21 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3633
3696
|
if (props.onChange) {
|
|
3634
3697
|
var cellX = editCell[0],
|
|
3635
3698
|
cellY = editCell[1];
|
|
3699
|
+
var hasData = !!input;
|
|
3700
|
+
var v = hasData ? null : value;
|
|
3701
|
+
var d = hasData ? value : null;
|
|
3636
3702
|
props.onChange([{
|
|
3637
3703
|
x: cellX,
|
|
3638
3704
|
y: cellY,
|
|
3639
|
-
value: value !== undefined ?
|
|
3705
|
+
value: value !== undefined ? v : editValue,
|
|
3706
|
+
data: value !== undefined ? d : sourceValue
|
|
3640
3707
|
}]);
|
|
3641
3708
|
}
|
|
3642
3709
|
setEditCell(NO_CELL);
|
|
3643
3710
|
setFocused(true);
|
|
3644
3711
|
};
|
|
3645
3712
|
var startEditingCell = function startEditingCell(editCell, arrowKeyCommitMode) {
|
|
3713
|
+
var _props$inputComponent, _editData, _sourceData;
|
|
3646
3714
|
if (arrowKeyCommitMode === void 0) {
|
|
3647
3715
|
arrowKeyCommitMode = false;
|
|
3648
3716
|
}
|
|
@@ -3651,13 +3719,19 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3651
3719
|
if (cellReadOnly(cellX, cellY)) {
|
|
3652
3720
|
return;
|
|
3653
3721
|
}
|
|
3654
|
-
var
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
|
|
3722
|
+
var hasCustomComponent = !!((_props$inputComponent = props.inputComponent) !== null && _props$inputComponent !== void 0 && _props$inputComponent.call(props, cellX, cellY, _extends({}, inputProps, {
|
|
3723
|
+
onChange: function onChange() {}
|
|
3724
|
+
}), function () {}));
|
|
3725
|
+
var editValue = (_editData = editData(cellX, cellY)) != null ? _editData : '';
|
|
3726
|
+
var sourceValue = (_sourceData = sourceData(cellX, cellY)) != null ? _sourceData : null;
|
|
3727
|
+
if (hasCustomComponent) {
|
|
3728
|
+
setEditValue(null);
|
|
3729
|
+
setSourceValue(sourceValue);
|
|
3730
|
+
} else {
|
|
3731
|
+
setEditValue(editValue);
|
|
3732
|
+
setSourceValue(null);
|
|
3658
3733
|
}
|
|
3659
3734
|
setEditCell(editCell);
|
|
3660
|
-
setEditValue(val);
|
|
3661
3735
|
setArrowKeyCommitMode(arrowKeyCommitMode);
|
|
3662
3736
|
setLastEditKey(editKeys.apply(void 0, editCell));
|
|
3663
3737
|
};
|
|
@@ -3676,7 +3750,7 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3676
3750
|
}, [maxRows, maxColumns]);
|
|
3677
3751
|
var hitmapRef = React.useRef(NO_CLICKABLES);
|
|
3678
3752
|
var isFocused = focused || editMode;
|
|
3679
|
-
var _useClipboardAPI = useClipboardAPI(selection, editData, cellReadOnly, isFocused && !editMode, changeSelection, props.onChange, props.onCopy, props.onPaste),
|
|
3753
|
+
var _useClipboardAPI = useClipboardAPI(selection, editData, sourceData, cellReadOnly, isFocused && !editMode, changeSelection, props.onChange, props.onCopy, props.onPaste, (_props$clipboardOrigi = props.clipboardOrigin) != null ? _props$clipboardOrigi : location.origin),
|
|
3680
3754
|
clipboardApi = _useClipboardAPI.clipboardApi,
|
|
3681
3755
|
onClipboardCopy = _useClipboardAPI.onClipboardCopy;
|
|
3682
3756
|
var onScroll = useScroll(dataOffset, maxScroll, cellLayout, setDataOffset, setMaxScroll);
|
|
@@ -3707,9 +3781,9 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3707
3781
|
window.cancelAnimationFrame(animationFrameId);
|
|
3708
3782
|
};
|
|
3709
3783
|
}, [cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, isFocused, knobPosition, knobArea, dragOffset, dropTarget, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset]);
|
|
3710
|
-
var
|
|
3711
|
-
lastEditKey =
|
|
3712
|
-
setLastEditKey =
|
|
3784
|
+
var _useState14 = React.useState(''),
|
|
3785
|
+
lastEditKey = _useState14[0],
|
|
3786
|
+
setLastEditKey = _useState14[1];
|
|
3713
3787
|
var editTextPosition = ORIGIN;
|
|
3714
3788
|
var editTextWidth = 0;
|
|
3715
3789
|
var editTextHeight = 0;
|
|
@@ -3742,7 +3816,7 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3742
3816
|
textX = _editTextPosition[0],
|
|
3743
3817
|
textY = _editTextPosition[1];
|
|
3744
3818
|
var inputProps = {
|
|
3745
|
-
value: editValue,
|
|
3819
|
+
value: editValue != null ? editValue : '',
|
|
3746
3820
|
autoFocus: true,
|
|
3747
3821
|
onKeyDown: onInputKeyDown,
|
|
3748
3822
|
style: {
|
|
@@ -3763,8 +3837,8 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3763
3837
|
resize: 'none'
|
|
3764
3838
|
}
|
|
3765
3839
|
};
|
|
3766
|
-
var input = (_props$
|
|
3767
|
-
onChange:
|
|
3840
|
+
var input = (_props$inputComponent2 = props.inputComponent) === null || _props$inputComponent2 === void 0 ? void 0 : _props$inputComponent2.call(props, editCellX, editCellY, _extends({}, inputProps, {
|
|
3841
|
+
onChange: setSourceValue
|
|
3768
3842
|
}), commitEditingCell);
|
|
3769
3843
|
var overlayDivClassName = styles.sheetscroll;
|
|
3770
3844
|
var overlayDivStyles = {
|