@fileverse-dev/fortune-core 1.3.5-hyper-2 → 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/canvas.js +1 -1
- package/es/events/paste.js +30 -13
- package/es/modules/cell.js +10 -6
- package/es/modules/format.js +29 -38
- package/es/modules/selection.js +192 -6
- package/es/modules/ssf.js +1 -1
- package/es/modules/toolbar.js +32 -11
- 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/canvas.js +1 -1
- package/lib/events/paste.js +28 -11
- package/lib/modules/cell.js +10 -6
- package/lib/modules/format.js +28 -37
- package/lib/modules/selection.js +192 -6
- package/lib/modules/ssf.js +1 -1
- package/lib/modules/toolbar.js +31 -10
- 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/modules/validation.js
CHANGED
|
@@ -39,33 +39,296 @@ export function isRealNum(val) {
|
|
|
39
39
|
}
|
|
40
40
|
return !Number.isNaN(Number(val));
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
var MONTH_NAME_MAP = {
|
|
43
|
+
january: 1,
|
|
44
|
+
february: 2,
|
|
45
|
+
march: 3,
|
|
46
|
+
april: 4,
|
|
47
|
+
may: 5,
|
|
48
|
+
june: 6,
|
|
49
|
+
july: 7,
|
|
50
|
+
august: 8,
|
|
51
|
+
september: 9,
|
|
52
|
+
october: 10,
|
|
53
|
+
november: 11,
|
|
54
|
+
december: 12,
|
|
55
|
+
jan: 1,
|
|
56
|
+
feb: 2,
|
|
57
|
+
mar: 3,
|
|
58
|
+
apr: 4,
|
|
59
|
+
jun: 6,
|
|
60
|
+
jul: 7,
|
|
61
|
+
aug: 8,
|
|
62
|
+
sep: 9,
|
|
63
|
+
oct: 10,
|
|
64
|
+
nov: 11,
|
|
65
|
+
dec: 12
|
|
66
|
+
};
|
|
67
|
+
var MONTH_NAMES_RE = "january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|jun|jul|aug|sep|oct|nov|dec";
|
|
68
|
+
var MONTH_ABBR_RE = "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec";
|
|
69
|
+
function isValidDateParts(year, month, day) {
|
|
70
|
+
if (year < 1900) return false;
|
|
71
|
+
if (month < 1 || month > 12) return false;
|
|
72
|
+
if (day < 1 || day > 31) return false;
|
|
73
|
+
if (month === 2) {
|
|
74
|
+
var isLeap = new Date(year, 1, 29).getDate() === 29;
|
|
75
|
+
if (isLeap && day > 29) return false;
|
|
76
|
+
if (!isLeap && day > 28) return false;
|
|
47
77
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
78
|
+
if ([4, 6, 9, 11].includes(month) && day > 30) return false;
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
export function detectDateFormat(str) {
|
|
82
|
+
if (!str || str.toString().length < 5) return null;
|
|
83
|
+
var s = str.toString().trim();
|
|
84
|
+
var m;
|
|
85
|
+
m = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?$/.exec(s);
|
|
86
|
+
if (m) {
|
|
87
|
+
var y = +m[1];
|
|
88
|
+
var mo = +m[2];
|
|
89
|
+
var d = +m[3];
|
|
90
|
+
var h = +m[4];
|
|
91
|
+
var mi = +m[5];
|
|
92
|
+
var sec = m[6] != null ? +m[6] : 0;
|
|
93
|
+
if (isValidDateParts(y, mo, d)) {
|
|
94
|
+
return {
|
|
95
|
+
year: y,
|
|
96
|
+
month: mo,
|
|
97
|
+
day: d,
|
|
98
|
+
hours: h,
|
|
99
|
+
minutes: mi,
|
|
100
|
+
seconds: sec,
|
|
101
|
+
formatType: "yyyy-MM-ddTHH:mm"
|
|
102
|
+
};
|
|
103
|
+
}
|
|
53
104
|
}
|
|
54
|
-
|
|
55
|
-
|
|
105
|
+
m = /^(\d{4})-(\d{1,2})-(\d{1,2})(?:\s(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/.exec(s);
|
|
106
|
+
if (m) {
|
|
107
|
+
var y = +m[1];
|
|
108
|
+
var mo = +m[2];
|
|
109
|
+
var d = +m[3];
|
|
110
|
+
if (isValidDateParts(y, mo, d)) {
|
|
111
|
+
var h = m[4] != null ? +m[4] : 0;
|
|
112
|
+
var mi = m[5] != null ? +m[5] : 0;
|
|
113
|
+
var sec = m[6] != null ? +m[6] : 0;
|
|
114
|
+
return {
|
|
115
|
+
year: y,
|
|
116
|
+
month: mo,
|
|
117
|
+
day: d,
|
|
118
|
+
hours: h,
|
|
119
|
+
minutes: mi,
|
|
120
|
+
seconds: sec,
|
|
121
|
+
formatType: m[4] != null ? "yyyy-MM-dd HH:mm" : "yyyy-MM-dd"
|
|
122
|
+
};
|
|
123
|
+
}
|
|
56
124
|
}
|
|
57
|
-
|
|
58
|
-
|
|
125
|
+
m = /^(\d{4})\/(\d{1,2})\/(\d{1,2})(?:\s(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/.exec(s);
|
|
126
|
+
if (m) {
|
|
127
|
+
var y = +m[1];
|
|
128
|
+
var mo = +m[2];
|
|
129
|
+
var d = +m[3];
|
|
130
|
+
if (isValidDateParts(y, mo, d)) {
|
|
131
|
+
var h = m[4] != null ? +m[4] : 0;
|
|
132
|
+
var mi = m[5] != null ? +m[5] : 0;
|
|
133
|
+
var sec = m[6] != null ? +m[6] : 0;
|
|
134
|
+
return {
|
|
135
|
+
year: y,
|
|
136
|
+
month: mo,
|
|
137
|
+
day: d,
|
|
138
|
+
hours: h,
|
|
139
|
+
minutes: mi,
|
|
140
|
+
seconds: sec,
|
|
141
|
+
formatType: m[4] != null ? "yyyy/MM/dd HH:mm" : "yyyy/MM/dd"
|
|
142
|
+
};
|
|
143
|
+
}
|
|
59
144
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
145
|
+
m = /^(\d{4})\.(\d{1,2})\.(\d{1,2})$/.exec(s);
|
|
146
|
+
if (m) {
|
|
147
|
+
var y = +m[1];
|
|
148
|
+
var mo = +m[2];
|
|
149
|
+
var d = +m[3];
|
|
150
|
+
if (isValidDateParts(y, mo, d)) {
|
|
151
|
+
return {
|
|
152
|
+
year: y,
|
|
153
|
+
month: mo,
|
|
154
|
+
day: d,
|
|
155
|
+
hours: 0,
|
|
156
|
+
minutes: 0,
|
|
157
|
+
seconds: 0,
|
|
158
|
+
formatType: "yyyy.MM.dd"
|
|
159
|
+
};
|
|
63
160
|
}
|
|
64
|
-
|
|
65
|
-
|
|
161
|
+
}
|
|
162
|
+
m = /^(\d{1,2})\/(\d{1,2})\/(\d{4})\s(\d{1,2}):(\d{2})\s?(AM|PM)$/i.exec(s);
|
|
163
|
+
if (m) {
|
|
164
|
+
var p1 = +m[1];
|
|
165
|
+
var p2 = +m[2];
|
|
166
|
+
var y = +m[3];
|
|
167
|
+
var h = +m[4];
|
|
168
|
+
var mi = +m[5];
|
|
169
|
+
var ampm = m[6].toUpperCase();
|
|
170
|
+
if (p1 <= 12 && isValidDateParts(y, p1, p2)) {
|
|
171
|
+
var actualH = h;
|
|
172
|
+
if (ampm === "PM" && h !== 12) actualH = h + 12;
|
|
173
|
+
if (ampm === "AM" && h === 12) actualH = 0;
|
|
174
|
+
return {
|
|
175
|
+
year: y,
|
|
176
|
+
month: p1,
|
|
177
|
+
day: p2,
|
|
178
|
+
hours: actualH,
|
|
179
|
+
minutes: mi,
|
|
180
|
+
seconds: 0,
|
|
181
|
+
formatType: "MM/dd/yyyy h:mm AM/PM"
|
|
182
|
+
};
|
|
66
183
|
}
|
|
67
184
|
}
|
|
68
|
-
|
|
185
|
+
m = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(s);
|
|
186
|
+
if (m) {
|
|
187
|
+
var p1 = +m[1];
|
|
188
|
+
var p2 = +m[2];
|
|
189
|
+
var y = +m[3];
|
|
190
|
+
if (p1 > 12 && isValidDateParts(y, p2, p1)) {
|
|
191
|
+
return {
|
|
192
|
+
year: y,
|
|
193
|
+
month: p2,
|
|
194
|
+
day: p1,
|
|
195
|
+
hours: 0,
|
|
196
|
+
minutes: 0,
|
|
197
|
+
seconds: 0,
|
|
198
|
+
formatType: "dd/MM/yyyy"
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
if (p2 > 12 && p1 <= 12 && isValidDateParts(y, p1, p2)) {
|
|
202
|
+
var formatType = m[1].length === 1 ? "M/d/yyyy" : "MM/dd/yyyy";
|
|
203
|
+
return {
|
|
204
|
+
year: y,
|
|
205
|
+
month: p1,
|
|
206
|
+
day: p2,
|
|
207
|
+
hours: 0,
|
|
208
|
+
minutes: 0,
|
|
209
|
+
seconds: 0,
|
|
210
|
+
formatType: formatType
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
if (p1 <= 12 && p2 <= 31 && isValidDateParts(y, p1, p2)) {
|
|
214
|
+
var formatType = m[1].length === 1 ? "M/d/yyyy" : "MM/dd/yyyy";
|
|
215
|
+
return {
|
|
216
|
+
year: y,
|
|
217
|
+
month: p1,
|
|
218
|
+
day: p2,
|
|
219
|
+
hours: 0,
|
|
220
|
+
minutes: 0,
|
|
221
|
+
seconds: 0,
|
|
222
|
+
formatType: formatType
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
m = /^(\d{2})\/(\d{2})\/(\d{2})$/.exec(s);
|
|
227
|
+
if (m) {
|
|
228
|
+
var p1 = +m[1];
|
|
229
|
+
var p2 = +m[2];
|
|
230
|
+
var y = 2000 + +m[3];
|
|
231
|
+
if (p1 <= 12 && p2 <= 31 && isValidDateParts(y, p1, p2)) {
|
|
232
|
+
return {
|
|
233
|
+
year: y,
|
|
234
|
+
month: p1,
|
|
235
|
+
day: p2,
|
|
236
|
+
hours: 0,
|
|
237
|
+
minutes: 0,
|
|
238
|
+
seconds: 0,
|
|
239
|
+
formatType: "MM/dd/yy"
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
m = /^(\d{1,2})-(\d{1,2})-(\d{4})$/.exec(s);
|
|
244
|
+
if (m) {
|
|
245
|
+
var p1 = +m[1];
|
|
246
|
+
var p2 = +m[2];
|
|
247
|
+
var y = +m[3];
|
|
248
|
+
if (p1 > 12 && isValidDateParts(y, p2, p1)) {
|
|
249
|
+
return {
|
|
250
|
+
year: y,
|
|
251
|
+
month: p2,
|
|
252
|
+
day: p1,
|
|
253
|
+
hours: 0,
|
|
254
|
+
minutes: 0,
|
|
255
|
+
seconds: 0,
|
|
256
|
+
formatType: "dd-MM-yyyy"
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
m = /^(\d{1,2})\.(\d{1,2})\.(\d{4})$/.exec(s);
|
|
261
|
+
if (m) {
|
|
262
|
+
var p1 = +m[1];
|
|
263
|
+
var p2 = +m[2];
|
|
264
|
+
var y = +m[3];
|
|
265
|
+
if (p1 > 12 && isValidDateParts(y, p2, p1)) {
|
|
266
|
+
return {
|
|
267
|
+
year: y,
|
|
268
|
+
month: p2,
|
|
269
|
+
day: p1,
|
|
270
|
+
hours: 0,
|
|
271
|
+
minutes: 0,
|
|
272
|
+
seconds: 0,
|
|
273
|
+
formatType: "dd.MM.yyyy"
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
m = new RegExp("^(".concat(MONTH_NAMES_RE, ")\\s+(\\d{1,2}),?\\s+(\\d{4})$"), "i").exec(s);
|
|
278
|
+
if (m) {
|
|
279
|
+
var mo = MONTH_NAME_MAP[m[1].toLowerCase()];
|
|
280
|
+
var d = +m[2];
|
|
281
|
+
var y = +m[3];
|
|
282
|
+
if (mo && isValidDateParts(y, mo, d)) {
|
|
283
|
+
return {
|
|
284
|
+
year: y,
|
|
285
|
+
month: mo,
|
|
286
|
+
day: d,
|
|
287
|
+
hours: 0,
|
|
288
|
+
minutes: 0,
|
|
289
|
+
seconds: 0,
|
|
290
|
+
formatType: "named"
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
m = new RegExp("^(\\d{1,2})\\s+(".concat(MONTH_NAMES_RE, ")\\s+(\\d{4})$"), "i").exec(s);
|
|
295
|
+
if (m) {
|
|
296
|
+
var d = +m[1];
|
|
297
|
+
var mo = MONTH_NAME_MAP[m[2].toLowerCase()];
|
|
298
|
+
var y = +m[3];
|
|
299
|
+
if (mo && isValidDateParts(y, mo, d)) {
|
|
300
|
+
return {
|
|
301
|
+
year: y,
|
|
302
|
+
month: mo,
|
|
303
|
+
day: d,
|
|
304
|
+
hours: 0,
|
|
305
|
+
minutes: 0,
|
|
306
|
+
seconds: 0,
|
|
307
|
+
formatType: "named"
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
m = new RegExp("^(".concat(MONTH_ABBR_RE, ")-(\\d{1,2})-(\\d{4})$"), "i").exec(s);
|
|
312
|
+
if (m) {
|
|
313
|
+
var mo = MONTH_NAME_MAP[m[1].toLowerCase()];
|
|
314
|
+
var d = +m[2];
|
|
315
|
+
var y = +m[3];
|
|
316
|
+
if (mo && isValidDateParts(y, mo, d)) {
|
|
317
|
+
return {
|
|
318
|
+
year: y,
|
|
319
|
+
month: mo,
|
|
320
|
+
day: d,
|
|
321
|
+
hours: 0,
|
|
322
|
+
minutes: 0,
|
|
323
|
+
seconds: 0,
|
|
324
|
+
formatType: "named"
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
function checkDateTime(str) {
|
|
331
|
+
return detectDateFormat(str) !== null;
|
|
69
332
|
}
|
|
70
333
|
export function isdatetime(s) {
|
|
71
334
|
if (s === null || s.toString().length < 5) {
|
|
@@ -12,7 +12,6 @@ var __assign = this && this.__assign || function () {
|
|
|
12
12
|
import _ from "lodash";
|
|
13
13
|
import { locale } from "./locale";
|
|
14
14
|
import { getQKBorder, saveHyperlink } from "./modules";
|
|
15
|
-
import { genarate } from "./modules/format";
|
|
16
15
|
import { getSheetIndex } from "./utils";
|
|
17
16
|
import { setRowHeight, setColumnWidth } from "./api";
|
|
18
17
|
export var DEFAULT_FONT_SIZE = 12;
|
|
@@ -127,8 +126,7 @@ function brToNewline(str) {
|
|
|
127
126
|
return str.replace(/<br\s*\/?>/gi, "\n");
|
|
128
127
|
}
|
|
129
128
|
var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
|
|
130
|
-
var _a;
|
|
131
|
-
var _b, _c, _d, _e;
|
|
129
|
+
var _a, _b, _c, _d;
|
|
132
130
|
var cell = {};
|
|
133
131
|
var rawText = (td.innerText || td.innerHTML || "").trim();
|
|
134
132
|
var isLineBreak = rawText.includes("<br />");
|
|
@@ -146,22 +144,24 @@ var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
|
|
|
146
144
|
})
|
|
147
145
|
});
|
|
148
146
|
} else {
|
|
149
|
-
|
|
150
|
-
|
|
147
|
+
cell.v = rawText;
|
|
148
|
+
cell.m = rawText;
|
|
149
|
+
cell.ct = {
|
|
150
|
+
fa: "General",
|
|
151
|
+
t: "g"
|
|
152
|
+
};
|
|
151
153
|
if (HEX_REGEX.test(rawText)) {
|
|
152
154
|
cell.ct = {
|
|
153
155
|
fa: "@",
|
|
154
156
|
t: "s"
|
|
155
157
|
};
|
|
156
|
-
cell.m = rawText;
|
|
157
|
-
cell.v = rawText;
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
-
if (((
|
|
160
|
+
if (((_a = td.style) === null || _a === void 0 ? void 0 : _a.alignItems) === "center") {
|
|
161
161
|
cell.vt = 0;
|
|
162
|
-
} else if (((
|
|
162
|
+
} else if (((_b = td.style) === null || _b === void 0 ? void 0 : _b.alignItems) === "flex-end") {
|
|
163
163
|
cell.vt = 2;
|
|
164
|
-
} else if (((
|
|
164
|
+
} else if (((_c = td.style) === null || _c === void 0 ? void 0 : _c.alignItems) === "flex-start") {
|
|
165
165
|
cell.vt = 1;
|
|
166
166
|
}
|
|
167
167
|
var styleBlock = typeof classStyles[".".concat(td.className)] === "string" ? classStyles[".".concat(td.className)] : "";
|
|
@@ -188,7 +188,7 @@ var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
|
|
|
188
188
|
} else {
|
|
189
189
|
cell.ht = 1;
|
|
190
190
|
}
|
|
191
|
-
if (((
|
|
191
|
+
if (((_d = td === null || td === void 0 ? void 0 : td.style) === null || _d === void 0 ? void 0 : _d["overflow-wrap"]) === "anywhere") {
|
|
192
192
|
cell.tb = "2";
|
|
193
193
|
} else {
|
|
194
194
|
cell.tb = "2";
|
package/lib/canvas.js
CHANGED
|
@@ -1019,7 +1019,7 @@ var Canvas = exports.Canvas = function () {
|
|
|
1019
1019
|
renderCtx.clip();
|
|
1020
1020
|
renderCtx.scale(this.sheetCtx.zoomRatio, this.sheetCtx.zoomRatio);
|
|
1021
1021
|
var measureText = (0, _text.getMeasureText)(value, renderCtx, this.sheetCtx);
|
|
1022
|
-
var textMetrics = measureText.width +
|
|
1022
|
+
var textMetrics = measureText.width + 18;
|
|
1023
1023
|
var oneLineTextHeight = measureText.actualBoundingBoxDescent + measureText.actualBoundingBoxAscent;
|
|
1024
1024
|
var horizonAlignPos = pos_x + space_width;
|
|
1025
1025
|
if (horizonAlign === 0) {
|
package/lib/events/paste.js
CHANGED
|
@@ -220,14 +220,13 @@ var handleFormulaOnPaste = function handleFormulaOnPaste(ctx, d) {
|
|
|
220
220
|
}
|
|
221
221
|
};
|
|
222
222
|
function pasteHandler(ctx, data, borderInfo) {
|
|
223
|
-
var _a;
|
|
224
|
-
var _b, _c, _d, _e, _f, _g;
|
|
223
|
+
var _a, _b, _c, _d, _e, _f;
|
|
225
224
|
if (ctx.luckysheet_selection_range) {
|
|
226
225
|
ctx.luckysheet_selection_range = [];
|
|
227
226
|
}
|
|
228
227
|
var allowEdit = (0, _utils.isAllowEdit)(ctx);
|
|
229
228
|
if (!allowEdit || ctx.isFlvReadOnly) return;
|
|
230
|
-
if (((
|
|
229
|
+
if (((_b = (_a = ctx.luckysheet_select_save) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) !== 1) {
|
|
231
230
|
return;
|
|
232
231
|
}
|
|
233
232
|
if (_typeof(data) === "object") {
|
|
@@ -276,7 +275,7 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
276
275
|
currentRowLen = cfg.rowlen[h];
|
|
277
276
|
}
|
|
278
277
|
for (var c = minc; c <= maxc; c += 1) {
|
|
279
|
-
if ((
|
|
278
|
+
if ((_c = x === null || x === void 0 ? void 0 : x[c]) === null || _c === void 0 ? void 0 : _c.mc) {
|
|
280
279
|
if ("rs" in x[c].mc) {
|
|
281
280
|
delete cfg.merge["".concat(x[c].mc.r, "_").concat(x[c].mc.c)];
|
|
282
281
|
}
|
|
@@ -287,7 +286,7 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
287
286
|
value = data[h - minh][c - minc];
|
|
288
287
|
}
|
|
289
288
|
x[c] = value;
|
|
290
|
-
if (value != null && ((
|
|
289
|
+
if (value != null && ((_d = x === null || x === void 0 ? void 0 : x[c]) === null || _d === void 0 ? void 0 : _d.mc)) {
|
|
291
290
|
if (x[c].mc.rs != null) {
|
|
292
291
|
x[c].mc.r = h;
|
|
293
292
|
x[c].mc.c = c;
|
|
@@ -314,7 +313,7 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
314
313
|
b: borderInfo["".concat(h - minh, "_").concat(c - minc)].b
|
|
315
314
|
}
|
|
316
315
|
};
|
|
317
|
-
(
|
|
316
|
+
(_e = cfg.borderInfo) === null || _e === void 0 ? void 0 : _e.push(bd_obj);
|
|
318
317
|
}
|
|
319
318
|
}
|
|
320
319
|
d[h] = x;
|
|
@@ -346,7 +345,7 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
346
345
|
}
|
|
347
346
|
var d = (0, _context.getFlowdata)(ctx);
|
|
348
347
|
if (!d) return;
|
|
349
|
-
var last = (
|
|
348
|
+
var last = (_f = ctx.luckysheet_select_save) === null || _f === void 0 ? void 0 : _f[ctx.luckysheet_select_save.length - 1];
|
|
350
349
|
if (!last) return;
|
|
351
350
|
var curR = last.row == null ? 0 : last.row[0];
|
|
352
351
|
var curC = last.column == null ? 0 : last.column[0];
|
|
@@ -387,9 +386,23 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
387
386
|
}
|
|
388
387
|
}
|
|
389
388
|
if (originCell) {
|
|
390
|
-
originCell.
|
|
389
|
+
if (originCell.ct && originCell.ct.t === "d" && !isUrl) {
|
|
390
|
+
var df = (0, _validation.detectDateFormat)(originalValueStr);
|
|
391
|
+
if (df) {
|
|
392
|
+
var dateObj = new Date(df.year, df.month - 1, df.day, df.hours, df.minutes, df.seconds);
|
|
393
|
+
originCell.v = (0, _format.datenum_local)(dateObj);
|
|
394
|
+
} else {
|
|
395
|
+
originCell.v = originalValueStr;
|
|
396
|
+
}
|
|
397
|
+
} else {
|
|
398
|
+
originCell.v = isUrl ? originalValueStr : value;
|
|
399
|
+
}
|
|
391
400
|
if (originCell.ct != null && originCell.ct.fa != null) {
|
|
392
|
-
|
|
401
|
+
if (originCell.ct.t === "d" && typeof originCell.v !== "number") {
|
|
402
|
+
originCell.m = String(originCell.v);
|
|
403
|
+
} else {
|
|
404
|
+
originCell.m = (0, _format.update)(originCell.ct.fa, originCell.v);
|
|
405
|
+
}
|
|
393
406
|
} else {
|
|
394
407
|
originCell.m = typeof originCell.v === "boolean" ? String(originCell.v) : originCell.v;
|
|
395
408
|
}
|
|
@@ -418,8 +431,12 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
418
431
|
t: "s"
|
|
419
432
|
};
|
|
420
433
|
} else {
|
|
421
|
-
|
|
422
|
-
|
|
434
|
+
cell.v = originalValueStr;
|
|
435
|
+
cell.m = originalValueStr;
|
|
436
|
+
cell.ct = {
|
|
437
|
+
fa: "General",
|
|
438
|
+
t: "g"
|
|
439
|
+
};
|
|
423
440
|
if (/^0x?[a-fA-F0-9]+$/.test(value)) {
|
|
424
441
|
cell.m = value;
|
|
425
442
|
cell.ct = {
|
package/lib/modules/cell.js
CHANGED
|
@@ -143,7 +143,7 @@ function getCellValue(r, c, data, attr) {
|
|
|
143
143
|
return retv;
|
|
144
144
|
}
|
|
145
145
|
function setCellValue(ctx, r, c, d, v) {
|
|
146
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
146
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
147
147
|
if (ctx.allowEdit === false || ctx.isFlvReadOnly) return;
|
|
148
148
|
if (_lodash.default.isNil(d)) {
|
|
149
149
|
d = (0, _context.getFlowdata)(ctx);
|
|
@@ -168,6 +168,9 @@ function setCellValue(ctx, r, c, d, v) {
|
|
|
168
168
|
if (!_lodash.default.isNil(v.ct)) {
|
|
169
169
|
cell.ct = v.ct;
|
|
170
170
|
}
|
|
171
|
+
if (!_lodash.default.isNil(v.ht)) {
|
|
172
|
+
cell.ht = v.ht;
|
|
173
|
+
}
|
|
171
174
|
}
|
|
172
175
|
if (_lodash.default.isPlainObject(v.v)) {
|
|
173
176
|
vupdate = v.v.v;
|
|
@@ -309,10 +312,7 @@ function setCellValue(ctx, r, c, d, v) {
|
|
|
309
312
|
} else if (!_lodash.default.isNil(cell.ct) && !_lodash.default.isNil(cell.ct.fa) && cell.ct.fa !== "General") {
|
|
310
313
|
var fa = cell.ct.fa;
|
|
311
314
|
if ((0, _validation.isRealNum)(vupdate)) {
|
|
312
|
-
if (commaPresent && !fa.includes(",")
|
|
313
|
-
if (fa.includes(",") !== String(vupdate).includes(",")) {
|
|
314
|
-
commaPresent = true;
|
|
315
|
-
}
|
|
315
|
+
if (commaPresent && !fa.includes(",")) {
|
|
316
316
|
fa = (0, _utils.getNumberFormat)(String(vupdate), commaPresent);
|
|
317
317
|
}
|
|
318
318
|
vupdate = parseFloat(vupdate);
|
|
@@ -322,12 +322,16 @@ function setCellValue(ctx, r, c, d, v) {
|
|
|
322
322
|
t: "n"
|
|
323
323
|
});
|
|
324
324
|
}
|
|
325
|
+
cell.ht = 2;
|
|
325
326
|
}
|
|
326
327
|
var mask = (0, _format.update)(fa, vupdate);
|
|
327
328
|
if (mask === vupdate) {
|
|
328
329
|
mask = (0, _format.genarate)(vupdate);
|
|
329
330
|
cell.m = mask[0].toString();
|
|
330
331
|
cell.ct = mask[1], cell.v = mask[2];
|
|
332
|
+
if ((0, _validation.isRealNum)(vupdate)) {
|
|
333
|
+
cell.ht = 2;
|
|
334
|
+
}
|
|
331
335
|
} else {
|
|
332
336
|
if (v.m) {
|
|
333
337
|
cell.m = v.m;
|
|
@@ -350,7 +354,7 @@ function setCellValue(ctx, r, c, d, v) {
|
|
|
350
354
|
var strValue = String(vupdate);
|
|
351
355
|
var format = (0, _utils.getNumberFormat)(strValue, commaPresent);
|
|
352
356
|
cell.m = v.m ? v.m : (0, _format.update)(format, cell.v);
|
|
353
|
-
cell.ht =
|
|
357
|
+
cell.ht = 2;
|
|
354
358
|
cell.ct = {
|
|
355
359
|
fa: format,
|
|
356
360
|
t: "n"
|
package/lib/modules/format.js
CHANGED
|
@@ -21,29 +21,6 @@ function datenum_local(v, date1904) {
|
|
|
21
21
|
if (date1904) epoch -= 1461 * 24 * 60 * 60 * 1000;else if (v >= base1904) epoch += 24 * 60 * 60 * 1000;
|
|
22
22
|
return (epoch - dnthresh_utc) / (24 * 60 * 60 * 1000);
|
|
23
23
|
}
|
|
24
|
-
var good_pd_date = new Date("2017-02-19T19:06:09.000Z");
|
|
25
|
-
if (Number.isNaN(good_pd_date.getFullYear())) good_pd_date = new Date("2/19/17");
|
|
26
|
-
var good_pd = good_pd_date.getFullYear() === 2017;
|
|
27
|
-
function parseDate(str, fixdate) {
|
|
28
|
-
var d = new Date(str);
|
|
29
|
-
if (good_pd) {
|
|
30
|
-
if (!_lodash.default.isNil(fixdate)) {
|
|
31
|
-
if (fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);else if (fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);
|
|
32
|
-
}
|
|
33
|
-
return d;
|
|
34
|
-
}
|
|
35
|
-
if (str instanceof Date) return str;
|
|
36
|
-
if (good_pd_date.getFullYear() === 1917 && !Number.isNaN(d.getFullYear())) {
|
|
37
|
-
var s = d.getFullYear();
|
|
38
|
-
if (str.indexOf("".concat(s)) > -1) return d;
|
|
39
|
-
d.setFullYear(d.getFullYear() + 100);
|
|
40
|
-
return d;
|
|
41
|
-
}
|
|
42
|
-
var n = str.match(/\d+/g) || ["2017", "2", "19", "0", "0", "0"];
|
|
43
|
-
var out = new Date(+n[0], +n[1] - 1, +n[2], +n[3] || 0, +n[4] || 0, +n[5] || 0);
|
|
44
|
-
if (str.indexOf("Z") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);
|
|
45
|
-
return out;
|
|
46
|
-
}
|
|
47
24
|
function genarate(value) {
|
|
48
25
|
var m = null;
|
|
49
26
|
var ct = {};
|
|
@@ -267,23 +244,37 @@ function genarate(value) {
|
|
|
267
244
|
t: "n"
|
|
268
245
|
};
|
|
269
246
|
v = parseFloat(value);
|
|
270
|
-
} else if (
|
|
271
|
-
|
|
272
|
-
if (
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
247
|
+
} else if (typeof value === "string") {
|
|
248
|
+
var df = (0, _validation.detectDateFormat)(value.toString());
|
|
249
|
+
if (df) {
|
|
250
|
+
var dateObj = new Date(df.year, df.month - 1, df.day, df.hours, df.minutes, df.seconds);
|
|
251
|
+
v = datenum_local(dateObj);
|
|
252
|
+
ct.t = "d";
|
|
253
|
+
var map = {
|
|
254
|
+
"yyyy-MM-dd": "dd/MM/yyyy",
|
|
255
|
+
"yyyy-MM-dd HH:mm": "dd/MM/yyyy",
|
|
256
|
+
"yyyy-MM-ddTHH:mm": "dd/MM/yyyy",
|
|
257
|
+
"yyyy/MM/dd": "dd/MM/yyyy",
|
|
258
|
+
"yyyy/MM/dd HH:mm": "dd/MM/yyyy",
|
|
259
|
+
"yyyy.MM.dd": "yyyy.MM.dd",
|
|
260
|
+
"MM/dd/yyyy h:mm AM/PM": "MM/dd/yyyy h:mm AM/PM",
|
|
261
|
+
"MM/dd/yyyy": "MM/dd/yyyy",
|
|
262
|
+
"M/d/yyyy": "M/d/yyyy",
|
|
263
|
+
"MM/dd/yy": "MM/dd/yy",
|
|
264
|
+
"dd/MM/yyyy": "dd/MM/yyyy",
|
|
265
|
+
"dd-MM-yyyy": "dd/MM/yyyy",
|
|
266
|
+
"dd.MM.yyyy": "dd.MM.yyyy",
|
|
267
|
+
named: "dd/MM/yyyy"
|
|
268
|
+
};
|
|
269
|
+
ct.fa = map[df.formatType] || "dd/MM/yyyy";
|
|
270
|
+
m = _ssf.default.format(ct.fa, v);
|
|
280
271
|
} else {
|
|
281
|
-
|
|
272
|
+
m = String(value);
|
|
273
|
+
ct.fa = "General";
|
|
274
|
+
ct.t = "g";
|
|
282
275
|
}
|
|
283
|
-
ct.t = "d";
|
|
284
|
-
m = _ssf.default.format(ct.fa, v);
|
|
285
276
|
} else {
|
|
286
|
-
m = value;
|
|
277
|
+
m = String(value);
|
|
287
278
|
ct.fa = "General";
|
|
288
279
|
ct.t = "g";
|
|
289
280
|
}
|