@fileverse-dev/fortune-core 1.3.5 → 1.3.6-right
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/es/api/sheet.js +41 -6
- package/es/canvas.js +1 -1
- package/es/events/keyboard.js +3 -3
- package/es/events/mouse.js +1 -1
- package/es/events/paste.js +34 -18
- package/es/modules/cell.js +10 -6
- package/es/modules/cursor.d.ts +1 -0
- package/es/modules/cursor.js +35 -0
- package/es/modules/format.js +29 -38
- package/es/modules/hyperlink.d.ts +2 -2
- package/es/modules/hyperlink.js +6 -2
- package/es/modules/selection.js +215 -7
- package/es/modules/ssf.js +1 -1
- package/es/modules/toolbar.js +34 -13
- package/es/modules/validation.d.ts +10 -0
- package/es/modules/validation.js +283 -20
- package/es/paste-table-helpers.js +11 -11
- package/lib/api/sheet.js +41 -6
- package/lib/canvas.js +1 -1
- package/lib/events/keyboard.js +3 -3
- package/lib/events/mouse.js +1 -1
- package/lib/events/paste.js +32 -16
- package/lib/modules/cell.js +10 -6
- package/lib/modules/cursor.d.ts +1 -0
- package/lib/modules/cursor.js +36 -0
- package/lib/modules/format.js +28 -37
- package/lib/modules/hyperlink.d.ts +2 -2
- package/lib/modules/hyperlink.js +6 -2
- package/lib/modules/selection.js +215 -7
- package/lib/modules/ssf.js +1 -1
- package/lib/modules/toolbar.js +33 -12
- package/lib/modules/validation.d.ts +10 -0
- package/lib/modules/validation.js +284 -20
- package/lib/paste-table-helpers.js +11 -11
- package/package.json +1 -1
package/es/api/sheet.js
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
var __assign = this && this.__assign || function () {
|
|
3
|
+
__assign = Object.assign || function (t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
import _ from "lodash";
|
|
2
13
|
import { v4 as uuidv4 } from "uuid";
|
|
3
14
|
import { dataToCelldata, getSheet } from "./common";
|
|
@@ -135,6 +146,7 @@ function generateCopySheetName(ctx, sheetId) {
|
|
|
135
146
|
return sheetCopyName;
|
|
136
147
|
}
|
|
137
148
|
export function copySheet(ctx, sheetId) {
|
|
149
|
+
var _a, _b, _c;
|
|
138
150
|
var index = getSheetIndex(ctx, sheetId);
|
|
139
151
|
var order = ctx.luckysheetfile[index].order + 1;
|
|
140
152
|
var sheetName = generateCopySheetName(ctx, sheetId);
|
|
@@ -144,8 +156,32 @@ export function copySheet(ctx, sheetId) {
|
|
|
144
156
|
sheetData.celldata = dataToCelldata(sheetData.data);
|
|
145
157
|
delete sheetData.data;
|
|
146
158
|
api.addSheet(ctx, undefined, uuidv4(), ctx.luckysheetfile[index].isPivotTable, sheetName, sheetData);
|
|
159
|
+
var newSheetIndex = ctx.luckysheetfile.length - 1;
|
|
160
|
+
var newSheet = ctx.luckysheetfile[newSheetIndex];
|
|
161
|
+
var newSheetId = newSheet.id;
|
|
162
|
+
if ((_a = newSheet.calcChain) === null || _a === void 0 ? void 0 : _a.length) {
|
|
163
|
+
newSheet.calcChain = newSheet.calcChain.map(function (entry) {
|
|
164
|
+
return __assign(__assign({}, entry), {
|
|
165
|
+
id: newSheetId
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
if ((_b = newSheet.dynamicArray) === null || _b === void 0 ? void 0 : _b.length) {
|
|
170
|
+
newSheet.dynamicArray = newSheet.dynamicArray.map(function (entry) {
|
|
171
|
+
return entry && _typeof(entry) === "object" && "id" in entry ? __assign(__assign({}, entry), {
|
|
172
|
+
id: newSheetId
|
|
173
|
+
}) : entry;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if ((_c = newSheet.dynamicArray_compute) === null || _c === void 0 ? void 0 : _c.length) {
|
|
177
|
+
newSheet.dynamicArray_compute = newSheet.dynamicArray_compute.map(function (entry) {
|
|
178
|
+
return entry && _typeof(entry) === "object" && "id" in entry ? __assign(__assign({}, entry), {
|
|
179
|
+
id: newSheetId
|
|
180
|
+
}) : entry;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
147
183
|
var sheetOrderList = {};
|
|
148
|
-
sheetOrderList[
|
|
184
|
+
sheetOrderList[newSheetId] = order;
|
|
149
185
|
api.setSheetOrder(ctx, sheetOrderList);
|
|
150
186
|
}
|
|
151
187
|
export function calculateSheetFromula(ctx, id) {
|
|
@@ -173,23 +209,22 @@ export function calculateSheetFromula(ctx, id) {
|
|
|
173
209
|
}
|
|
174
210
|
}
|
|
175
211
|
export function calculateReferencedCellSheetFromula(ctx, id, refCell) {
|
|
176
|
-
var _a, _b, _c, _d, _e
|
|
212
|
+
var _a, _b, _c, _d, _e;
|
|
177
213
|
var index = getSheetIndex(ctx, id);
|
|
178
214
|
if (!ctx.luckysheetfile[index].data) return;
|
|
179
215
|
var _loop_1 = function _loop_1(r) {
|
|
180
216
|
var _loop_2 = function _loop_2(c) {
|
|
181
|
-
console.log(refCell, (_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f);
|
|
182
217
|
var isRef = false;
|
|
183
|
-
if (refCell && ((
|
|
218
|
+
if (refCell && ((_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f) && !((_b = ctx.luckysheetfile[index].data[r][c]) === null || _b === void 0 ? void 0 : _b.isDataBlockFormula)) {
|
|
184
219
|
isRef = refCell.some(function (cell) {
|
|
185
220
|
var _a;
|
|
186
221
|
return isCellReferenced((_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f, cell);
|
|
187
222
|
});
|
|
188
223
|
}
|
|
189
|
-
if (!isRef || !((
|
|
224
|
+
if (!isRef || !((_c = ctx.luckysheetfile[index].data[r][c]) === null || _c === void 0 ? void 0 : _c.f) || ((_d = ctx.luckysheetfile[index].data[r][c]) === null || _d === void 0 ? void 0 : _d.isDataBlockFormula)) {
|
|
190
225
|
return "continue";
|
|
191
226
|
}
|
|
192
|
-
var result = execfunction(ctx, (
|
|
227
|
+
var result = execfunction(ctx, (_e = ctx.luckysheetfile[index].data[r][c]) === null || _e === void 0 ? void 0 : _e.f, r, c, id);
|
|
193
228
|
var isValueArray = Array.isArray(result[1]);
|
|
194
229
|
if (isValueArray) {
|
|
195
230
|
var value = {
|
package/es/canvas.js
CHANGED
|
@@ -1012,7 +1012,7 @@ var Canvas = function () {
|
|
|
1012
1012
|
renderCtx.clip();
|
|
1013
1013
|
renderCtx.scale(this.sheetCtx.zoomRatio, this.sheetCtx.zoomRatio);
|
|
1014
1014
|
var measureText = getMeasureText(value, renderCtx, this.sheetCtx);
|
|
1015
|
-
var textMetrics = measureText.width +
|
|
1015
|
+
var textMetrics = measureText.width + 18;
|
|
1016
1016
|
var oneLineTextHeight = measureText.actualBoundingBoxDescent + measureText.actualBoundingBoxAscent;
|
|
1017
1017
|
var horizonAlignPos = pos_x + space_width;
|
|
1018
1018
|
if (horizonAlign === 0) {
|
package/es/events/keyboard.js
CHANGED
|
@@ -139,7 +139,7 @@ export function handleGlobalEnter(ctx, cellInput, e, canvas) {
|
|
|
139
139
|
row_focus: lastCellUpdate[0],
|
|
140
140
|
column_focus: lastCellUpdate[1]
|
|
141
141
|
}];
|
|
142
|
-
moveHighlightCell(ctx, "down",
|
|
142
|
+
moveHighlightCell(ctx, "down", hideCRCount(ctx, "ArrowDown"), "rangeOfSelect");
|
|
143
143
|
e.preventDefault();
|
|
144
144
|
} else {
|
|
145
145
|
if (((_c = (_b = ctx.luckysheet_select_save) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0) {
|
|
@@ -434,9 +434,9 @@ export function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUnd
|
|
|
434
434
|
updateCell(ctx, ctx.luckysheetCellUpdate[0], ctx.luckysheetCellUpdate[1], cellInput, undefined, canvas);
|
|
435
435
|
}
|
|
436
436
|
if (e.shiftKey) {
|
|
437
|
-
moveHighlightCell(ctx, "right", -
|
|
437
|
+
moveHighlightCell(ctx, "right", -hideCRCount(ctx, "ArrowLeft"), "rangeOfSelect");
|
|
438
438
|
} else {
|
|
439
|
-
moveHighlightCell(ctx, "right",
|
|
439
|
+
moveHighlightCell(ctx, "right", hideCRCount(ctx, "ArrowRight"), "rangeOfSelect");
|
|
440
440
|
}
|
|
441
441
|
e.preventDefault();
|
|
442
442
|
} else if (kstr === "F2") {
|
package/es/events/mouse.js
CHANGED
|
@@ -145,7 +145,7 @@ export function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, containe
|
|
|
145
145
|
_a = margeset.row, row_pre = _a[0], row = _a[1], row_index = _a[2], row_index_ed = _a[3];
|
|
146
146
|
_b = margeset.column, col_pre = _b[0], col = _b[1], col_index = _b[2], col_index_ed = _b[3];
|
|
147
147
|
}
|
|
148
|
-
showLinkCard(ctx, row_index, col_index, false, true);
|
|
148
|
+
showLinkCard(ctx, row_index, col_index, undefined, false, true);
|
|
149
149
|
if (((_e = (_d = ctx.hooks).beforeCellMouseDown) === null || _e === void 0 ? void 0 : _e.call(_d, (_f = flowdata[row_index]) === null || _f === void 0 ? void 0 : _f[col_index], {
|
|
150
150
|
row: row_index,
|
|
151
151
|
column: col_index,
|
package/es/events/paste.js
CHANGED
|
@@ -34,10 +34,10 @@ import { handlePastedTable } from "../paste-table-helpers";
|
|
|
34
34
|
import { getFlowdata } from "../context";
|
|
35
35
|
import { execfunction } from "../modules/formula";
|
|
36
36
|
import { getdatabyselection } from "../modules/cell";
|
|
37
|
-
import {
|
|
37
|
+
import { update, datenum_local } from "../modules/format";
|
|
38
38
|
import { normalizeSelection, selectionCache } from "../modules/selection";
|
|
39
39
|
import { getSheetIndex, isAllowEdit } from "../utils";
|
|
40
|
-
import { hasPartMC, isRealNum } from "../modules/validation";
|
|
40
|
+
import { hasPartMC, isRealNum, detectDateFormat } from "../modules/validation";
|
|
41
41
|
import { getBorderInfoCompute } from "../modules/border";
|
|
42
42
|
import { expandRowsAndColumns, storeSheetParamALL } from "../modules/sheet";
|
|
43
43
|
import { jfrefreshgrid } from "../modules/refresh";
|
|
@@ -78,11 +78,9 @@ export function adjustFormulaForPaste(formula, srcCol, srcRow, destCol, destRow)
|
|
|
78
78
|
var rowOffset = destRow - srcRow;
|
|
79
79
|
var hadInvalid = false;
|
|
80
80
|
var cellRefRegex = /\b(\$?)([A-Z]+)(\$?)(\d+)\b/g;
|
|
81
|
-
var stringOrCellRef = /"(?:\\.|[^"])*"|(
|
|
81
|
+
var stringOrCellRef = /"(?:\\.|[^"])*"|(\$?[A-Z]+\$?\d+)(?!\s*!)\b/g;
|
|
82
82
|
var result = formula.replace(stringOrCellRef, function (m, cellRef) {
|
|
83
83
|
if (!cellRef) return m;
|
|
84
|
-
if (cellRef.startsWith("$")) return m;
|
|
85
|
-
console.log(m, "cellRef", cellRef);
|
|
86
84
|
return cellRef.replace(cellRefRegex, function (__, absCol, colLetters, absRow, rowNum) {
|
|
87
85
|
var colIndex = columnLabelIndex(colLetters);
|
|
88
86
|
var rowIndex = parseInt(rowNum, 10);
|
|
@@ -209,14 +207,13 @@ var handleFormulaOnPaste = function handleFormulaOnPaste(ctx, d) {
|
|
|
209
207
|
}
|
|
210
208
|
};
|
|
211
209
|
function pasteHandler(ctx, data, borderInfo) {
|
|
212
|
-
var _a;
|
|
213
|
-
var _b, _c, _d, _e, _f, _g;
|
|
210
|
+
var _a, _b, _c, _d, _e, _f;
|
|
214
211
|
if (ctx.luckysheet_selection_range) {
|
|
215
212
|
ctx.luckysheet_selection_range = [];
|
|
216
213
|
}
|
|
217
214
|
var allowEdit = isAllowEdit(ctx);
|
|
218
215
|
if (!allowEdit || ctx.isFlvReadOnly) return;
|
|
219
|
-
if (((
|
|
216
|
+
if (((_b = (_a = ctx.luckysheet_select_save) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) !== 1) {
|
|
220
217
|
return;
|
|
221
218
|
}
|
|
222
219
|
if (_typeof(data) === "object") {
|
|
@@ -265,7 +262,7 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
265
262
|
currentRowLen = cfg.rowlen[h];
|
|
266
263
|
}
|
|
267
264
|
for (var c = minc; c <= maxc; c += 1) {
|
|
268
|
-
if ((
|
|
265
|
+
if ((_c = x === null || x === void 0 ? void 0 : x[c]) === null || _c === void 0 ? void 0 : _c.mc) {
|
|
269
266
|
if ("rs" in x[c].mc) {
|
|
270
267
|
delete cfg.merge["".concat(x[c].mc.r, "_").concat(x[c].mc.c)];
|
|
271
268
|
}
|
|
@@ -276,7 +273,7 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
276
273
|
value = data[h - minh][c - minc];
|
|
277
274
|
}
|
|
278
275
|
x[c] = value;
|
|
279
|
-
if (value != null && ((
|
|
276
|
+
if (value != null && ((_d = x === null || x === void 0 ? void 0 : x[c]) === null || _d === void 0 ? void 0 : _d.mc)) {
|
|
280
277
|
if (x[c].mc.rs != null) {
|
|
281
278
|
x[c].mc.r = h;
|
|
282
279
|
x[c].mc.c = c;
|
|
@@ -303,7 +300,7 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
303
300
|
b: borderInfo["".concat(h - minh, "_").concat(c - minc)].b
|
|
304
301
|
}
|
|
305
302
|
};
|
|
306
|
-
(
|
|
303
|
+
(_e = cfg.borderInfo) === null || _e === void 0 ? void 0 : _e.push(bd_obj);
|
|
307
304
|
}
|
|
308
305
|
}
|
|
309
306
|
d[h] = x;
|
|
@@ -335,7 +332,7 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
335
332
|
}
|
|
336
333
|
var d = getFlowdata(ctx);
|
|
337
334
|
if (!d) return;
|
|
338
|
-
var last = (
|
|
335
|
+
var last = (_f = ctx.luckysheet_select_save) === null || _f === void 0 ? void 0 : _f[ctx.luckysheet_select_save.length - 1];
|
|
339
336
|
if (!last) return;
|
|
340
337
|
var curR = last.row == null ? 0 : last.row[0];
|
|
341
338
|
var curC = last.column == null ? 0 : last.column[0];
|
|
@@ -376,9 +373,23 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
376
373
|
}
|
|
377
374
|
}
|
|
378
375
|
if (originCell) {
|
|
379
|
-
originCell.
|
|
376
|
+
if (originCell.ct && originCell.ct.t === "d" && !isUrl) {
|
|
377
|
+
var df = detectDateFormat(originalValueStr);
|
|
378
|
+
if (df) {
|
|
379
|
+
var dateObj = new Date(df.year, df.month - 1, df.day, df.hours, df.minutes, df.seconds);
|
|
380
|
+
originCell.v = datenum_local(dateObj);
|
|
381
|
+
} else {
|
|
382
|
+
originCell.v = originalValueStr;
|
|
383
|
+
}
|
|
384
|
+
} else {
|
|
385
|
+
originCell.v = isUrl ? originalValueStr : value;
|
|
386
|
+
}
|
|
380
387
|
if (originCell.ct != null && originCell.ct.fa != null) {
|
|
381
|
-
|
|
388
|
+
if (originCell.ct.t === "d" && typeof originCell.v !== "number") {
|
|
389
|
+
originCell.m = String(originCell.v);
|
|
390
|
+
} else {
|
|
391
|
+
originCell.m = update(originCell.ct.fa, originCell.v);
|
|
392
|
+
}
|
|
382
393
|
} else {
|
|
383
394
|
originCell.m = typeof originCell.v === "boolean" ? String(originCell.v) : originCell.v;
|
|
384
395
|
}
|
|
@@ -407,8 +418,12 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
407
418
|
t: "s"
|
|
408
419
|
};
|
|
409
420
|
} else {
|
|
410
|
-
|
|
411
|
-
|
|
421
|
+
cell.v = originalValueStr;
|
|
422
|
+
cell.m = originalValueStr;
|
|
423
|
+
cell.ct = {
|
|
424
|
+
fa: "General",
|
|
425
|
+
t: "g"
|
|
426
|
+
};
|
|
412
427
|
if (/^0x?[a-fA-F0-9]+$/.test(value)) {
|
|
413
428
|
cell.m = value;
|
|
414
429
|
cell.ct = {
|
|
@@ -1011,9 +1026,10 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
|
|
|
1011
1026
|
if (!_.isNil(value) && !_.isNil(value.f)) {
|
|
1012
1027
|
var adjustedFormula = value.f;
|
|
1013
1028
|
var isError = false;
|
|
1029
|
+
var srcRow = c_r1 + (h - mth);
|
|
1030
|
+
var srcCol = c_c1 + (c - mtc);
|
|
1014
1031
|
try {
|
|
1015
|
-
adjustedFormula = adjustFormulaForPaste(value.f,
|
|
1016
|
-
console.log("adjustedFormula", adjustedFormula);
|
|
1032
|
+
adjustedFormula = adjustFormulaForPaste(value.f, srcCol, srcRow, c, h);
|
|
1017
1033
|
} catch (error) {
|
|
1018
1034
|
isError = true;
|
|
1019
1035
|
value.error = {
|
package/es/modules/cell.js
CHANGED
|
@@ -110,7 +110,7 @@ export function getCellValue(r, c, data, attr) {
|
|
|
110
110
|
return retv;
|
|
111
111
|
}
|
|
112
112
|
export function setCellValue(ctx, r, c, d, v) {
|
|
113
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
113
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
114
114
|
if (ctx.allowEdit === false || ctx.isFlvReadOnly) return;
|
|
115
115
|
if (_.isNil(d)) {
|
|
116
116
|
d = getFlowdata(ctx);
|
|
@@ -135,6 +135,9 @@ export function setCellValue(ctx, r, c, d, v) {
|
|
|
135
135
|
if (!_.isNil(v.ct)) {
|
|
136
136
|
cell.ct = v.ct;
|
|
137
137
|
}
|
|
138
|
+
if (!_.isNil(v.ht)) {
|
|
139
|
+
cell.ht = v.ht;
|
|
140
|
+
}
|
|
138
141
|
}
|
|
139
142
|
if (_.isPlainObject(v.v)) {
|
|
140
143
|
vupdate = v.v.v;
|
|
@@ -276,10 +279,7 @@ export function setCellValue(ctx, r, c, d, v) {
|
|
|
276
279
|
} else if (!_.isNil(cell.ct) && !_.isNil(cell.ct.fa) && cell.ct.fa !== "General") {
|
|
277
280
|
var fa = cell.ct.fa;
|
|
278
281
|
if (isRealNum(vupdate)) {
|
|
279
|
-
if (commaPresent && !fa.includes(",")
|
|
280
|
-
if (fa.includes(",") !== String(vupdate).includes(",")) {
|
|
281
|
-
commaPresent = true;
|
|
282
|
-
}
|
|
282
|
+
if (commaPresent && !fa.includes(",")) {
|
|
283
283
|
fa = getNumberFormat(String(vupdate), commaPresent);
|
|
284
284
|
}
|
|
285
285
|
vupdate = parseFloat(vupdate);
|
|
@@ -289,12 +289,16 @@ export function setCellValue(ctx, r, c, d, v) {
|
|
|
289
289
|
t: "n"
|
|
290
290
|
});
|
|
291
291
|
}
|
|
292
|
+
cell.ht = 2;
|
|
292
293
|
}
|
|
293
294
|
var mask = update(fa, vupdate);
|
|
294
295
|
if (mask === vupdate) {
|
|
295
296
|
mask = genarate(vupdate);
|
|
296
297
|
cell.m = mask[0].toString();
|
|
297
298
|
cell.ct = mask[1], cell.v = mask[2];
|
|
299
|
+
if (isRealNum(vupdate)) {
|
|
300
|
+
cell.ht = 2;
|
|
301
|
+
}
|
|
298
302
|
} else {
|
|
299
303
|
if (v.m) {
|
|
300
304
|
cell.m = v.m;
|
|
@@ -317,7 +321,7 @@ export function setCellValue(ctx, r, c, d, v) {
|
|
|
317
321
|
var strValue = String(vupdate);
|
|
318
322
|
var format = getNumberFormat(strValue, commaPresent);
|
|
319
323
|
cell.m = v.m ? v.m : update(format, cell.v);
|
|
320
|
-
cell.ht =
|
|
324
|
+
cell.ht = 2;
|
|
321
325
|
cell.ct = {
|
|
322
326
|
fa: format,
|
|
323
327
|
t: "n"
|
package/es/modules/cursor.d.ts
CHANGED
|
@@ -6,3 +6,4 @@ export declare function getSelectionCharacterOffsets(element: Node): {
|
|
|
6
6
|
end: number;
|
|
7
7
|
} | null;
|
|
8
8
|
export declare function setSelectionByCharacterOffset(element: HTMLDivElement, start: number, end: number): void;
|
|
9
|
+
export declare function getRangeRectsByCharacterOffset(element: HTMLDivElement, start: number, end: number): DOMRect[];
|
package/es/modules/cursor.js
CHANGED
|
@@ -114,4 +114,39 @@ export function setSelectionByCharacterOffset(element, start, end) {
|
|
|
114
114
|
sel.removeAllRanges();
|
|
115
115
|
sel.addRange(range);
|
|
116
116
|
}
|
|
117
|
+
}
|
|
118
|
+
export function getRangeRectsByCharacterOffset(element, start, end) {
|
|
119
|
+
if (start >= end) return [];
|
|
120
|
+
var charIndex = 0;
|
|
121
|
+
var startNode = null;
|
|
122
|
+
var startOffset = 0;
|
|
123
|
+
var endNode = null;
|
|
124
|
+
var endOffset = 0;
|
|
125
|
+
function walk(node) {
|
|
126
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
127
|
+
var len = (node.textContent || "").length;
|
|
128
|
+
if (startNode == null && charIndex + len > start) {
|
|
129
|
+
startNode = node;
|
|
130
|
+
startOffset = start - charIndex;
|
|
131
|
+
}
|
|
132
|
+
if (endNode == null && charIndex + len >= end) {
|
|
133
|
+
endNode = node;
|
|
134
|
+
endOffset = end - charIndex;
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
charIndex += len;
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
for (var i = 0; i < node.childNodes.length; i += 1) {
|
|
141
|
+
if (walk(node.childNodes[i])) return true;
|
|
142
|
+
}
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
walk(element);
|
|
146
|
+
if (!startNode || !endNode) return [];
|
|
147
|
+
var range = document.createRange();
|
|
148
|
+
range.setStart(startNode, startOffset);
|
|
149
|
+
range.setEnd(endNode, endOffset);
|
|
150
|
+
var rects = range.getClientRects();
|
|
151
|
+
return Array.from(rects);
|
|
117
152
|
}
|
package/es/modules/format.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import numeral from "numeral";
|
|
2
2
|
import _ from "lodash";
|
|
3
|
-
import { isRealNum, valueIsError,
|
|
3
|
+
import { isRealNum, valueIsError, detectDateFormat } from "./validation";
|
|
4
4
|
import SSF from "./ssf";
|
|
5
5
|
import { getCellValue } from "./cell";
|
|
6
6
|
var base1904 = new Date(1900, 2, 1, 0, 0, 0);
|
|
@@ -10,29 +10,6 @@ export function datenum_local(v, date1904) {
|
|
|
10
10
|
if (date1904) epoch -= 1461 * 24 * 60 * 60 * 1000;else if (v >= base1904) epoch += 24 * 60 * 60 * 1000;
|
|
11
11
|
return (epoch - dnthresh_utc) / (24 * 60 * 60 * 1000);
|
|
12
12
|
}
|
|
13
|
-
var good_pd_date = new Date("2017-02-19T19:06:09.000Z");
|
|
14
|
-
if (Number.isNaN(good_pd_date.getFullYear())) good_pd_date = new Date("2/19/17");
|
|
15
|
-
var good_pd = good_pd_date.getFullYear() === 2017;
|
|
16
|
-
function parseDate(str, fixdate) {
|
|
17
|
-
var d = new Date(str);
|
|
18
|
-
if (good_pd) {
|
|
19
|
-
if (!_.isNil(fixdate)) {
|
|
20
|
-
if (fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);else if (fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);
|
|
21
|
-
}
|
|
22
|
-
return d;
|
|
23
|
-
}
|
|
24
|
-
if (str instanceof Date) return str;
|
|
25
|
-
if (good_pd_date.getFullYear() === 1917 && !Number.isNaN(d.getFullYear())) {
|
|
26
|
-
var s = d.getFullYear();
|
|
27
|
-
if (str.indexOf("".concat(s)) > -1) return d;
|
|
28
|
-
d.setFullYear(d.getFullYear() + 100);
|
|
29
|
-
return d;
|
|
30
|
-
}
|
|
31
|
-
var n = str.match(/\d+/g) || ["2017", "2", "19", "0", "0", "0"];
|
|
32
|
-
var out = new Date(+n[0], +n[1] - 1, +n[2], +n[3] || 0, +n[4] || 0, +n[5] || 0);
|
|
33
|
-
if (str.indexOf("Z") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);
|
|
34
|
-
return out;
|
|
35
|
-
}
|
|
36
13
|
export function genarate(value) {
|
|
37
14
|
var m = null;
|
|
38
15
|
var ct = {};
|
|
@@ -256,23 +233,37 @@ export function genarate(value) {
|
|
|
256
233
|
t: "n"
|
|
257
234
|
};
|
|
258
235
|
v = parseFloat(value);
|
|
259
|
-
} else if (
|
|
260
|
-
|
|
261
|
-
if (
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
236
|
+
} else if (typeof value === "string") {
|
|
237
|
+
var df = detectDateFormat(value.toString());
|
|
238
|
+
if (df) {
|
|
239
|
+
var dateObj = new Date(df.year, df.month - 1, df.day, df.hours, df.minutes, df.seconds);
|
|
240
|
+
v = datenum_local(dateObj);
|
|
241
|
+
ct.t = "d";
|
|
242
|
+
var map = {
|
|
243
|
+
"yyyy-MM-dd": "dd/MM/yyyy",
|
|
244
|
+
"yyyy-MM-dd HH:mm": "dd/MM/yyyy",
|
|
245
|
+
"yyyy-MM-ddTHH:mm": "dd/MM/yyyy",
|
|
246
|
+
"yyyy/MM/dd": "dd/MM/yyyy",
|
|
247
|
+
"yyyy/MM/dd HH:mm": "dd/MM/yyyy",
|
|
248
|
+
"yyyy.MM.dd": "yyyy.MM.dd",
|
|
249
|
+
"MM/dd/yyyy h:mm AM/PM": "MM/dd/yyyy h:mm AM/PM",
|
|
250
|
+
"MM/dd/yyyy": "MM/dd/yyyy",
|
|
251
|
+
"M/d/yyyy": "M/d/yyyy",
|
|
252
|
+
"MM/dd/yy": "MM/dd/yy",
|
|
253
|
+
"dd/MM/yyyy": "dd/MM/yyyy",
|
|
254
|
+
"dd-MM-yyyy": "dd/MM/yyyy",
|
|
255
|
+
"dd.MM.yyyy": "dd.MM.yyyy",
|
|
256
|
+
named: "dd/MM/yyyy"
|
|
257
|
+
};
|
|
258
|
+
ct.fa = map[df.formatType] || "dd/MM/yyyy";
|
|
259
|
+
m = SSF.format(ct.fa, v);
|
|
269
260
|
} else {
|
|
270
|
-
|
|
261
|
+
m = String(value);
|
|
262
|
+
ct.fa = "General";
|
|
263
|
+
ct.t = "g";
|
|
271
264
|
}
|
|
272
|
-
ct.t = "d";
|
|
273
|
-
m = SSF.format(ct.fa, v);
|
|
274
265
|
} else {
|
|
275
|
-
m = value;
|
|
266
|
+
m = String(value);
|
|
276
267
|
ct.fa = "General";
|
|
277
268
|
ct.t = "g";
|
|
278
269
|
}
|
|
@@ -13,14 +13,14 @@ export declare function saveHyperlink(ctx: Context, r: number, c: number, linkTe
|
|
|
13
13
|
cellInput?: HTMLDivElement | null;
|
|
14
14
|
}): void;
|
|
15
15
|
export declare function removeHyperlink(ctx: Context, r: number, c: number): void;
|
|
16
|
-
export declare function showLinkCard(ctx: Context, r: number, c: number,
|
|
16
|
+
export declare function showLinkCard(ctx: Context, r: number, c: number, options?: {
|
|
17
17
|
applyToSelection?: boolean;
|
|
18
18
|
originText?: string;
|
|
19
19
|
selectionOffsets?: {
|
|
20
20
|
start: number;
|
|
21
21
|
end: number;
|
|
22
22
|
};
|
|
23
|
-
}): void;
|
|
23
|
+
}, isEditing?: boolean, isMouseDown?: boolean): void;
|
|
24
24
|
export declare function goToLink(ctx: Context, r: number, c: number, linkType: string, linkAddress: string, scrollbarX: HTMLDivElement, scrollbarY: HTMLDivElement): void;
|
|
25
25
|
export declare function isLinkValid(ctx: Context, linkType: string, linkAddress: string): {
|
|
26
26
|
isValid: boolean;
|
package/es/modules/hyperlink.js
CHANGED
|
@@ -111,7 +111,7 @@ export function removeHyperlink(ctx, r, c) {
|
|
|
111
111
|
}
|
|
112
112
|
ctx.linkCard = undefined;
|
|
113
113
|
}
|
|
114
|
-
export function showLinkCard(ctx, r, c, isEditing, isMouseDown
|
|
114
|
+
export function showLinkCard(ctx, r, c, options, isEditing, isMouseDown) {
|
|
115
115
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
116
116
|
if (isEditing === void 0) {
|
|
117
117
|
isEditing = false;
|
|
@@ -130,7 +130,11 @@ export function showLinkCard(ctx, r, c, isEditing, isMouseDown, options) {
|
|
|
130
130
|
if (isEditing || link != null && (!((_f = ctx.linkCard) === null || _f === void 0 ? void 0 : _f.isEditing) || isMouseDown) || ((_g = ctx.linkCard) === null || _g === void 0 ? void 0 : _g.sheetId) !== ctx.currentSheetId) {
|
|
131
131
|
var col_pre = c - 1 === -1 ? 0 : ctx.visibledatacolumn[c - 1];
|
|
132
132
|
var row = ctx.visibledatarow[r];
|
|
133
|
-
var originText =
|
|
133
|
+
var originText = function () {
|
|
134
|
+
if ((options === null || options === void 0 ? void 0 : options.originText) !== undefined) return options.originText;
|
|
135
|
+
if ((cell === null || cell === void 0 ? void 0 : cell.v) == null) return "";
|
|
136
|
+
return "".concat(cell.v);
|
|
137
|
+
}();
|
|
134
138
|
ctx.linkCard = {
|
|
135
139
|
sheetId: ctx.currentSheetId,
|
|
136
140
|
r: r,
|