@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
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.detectDateFormat = detectDateFormat;
|
|
6
7
|
exports.detectErrorFromValue = detectErrorFromValue;
|
|
7
8
|
exports.diff = diff;
|
|
8
9
|
exports.errorMessagesFromValue = exports.error = void 0;
|
|
@@ -56,33 +57,296 @@ function isRealNum(val) {
|
|
|
56
57
|
}
|
|
57
58
|
return !Number.isNaN(Number(val));
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
var MONTH_NAME_MAP = {
|
|
61
|
+
january: 1,
|
|
62
|
+
february: 2,
|
|
63
|
+
march: 3,
|
|
64
|
+
april: 4,
|
|
65
|
+
may: 5,
|
|
66
|
+
june: 6,
|
|
67
|
+
july: 7,
|
|
68
|
+
august: 8,
|
|
69
|
+
september: 9,
|
|
70
|
+
october: 10,
|
|
71
|
+
november: 11,
|
|
72
|
+
december: 12,
|
|
73
|
+
jan: 1,
|
|
74
|
+
feb: 2,
|
|
75
|
+
mar: 3,
|
|
76
|
+
apr: 4,
|
|
77
|
+
jun: 6,
|
|
78
|
+
jul: 7,
|
|
79
|
+
aug: 8,
|
|
80
|
+
sep: 9,
|
|
81
|
+
oct: 10,
|
|
82
|
+
nov: 11,
|
|
83
|
+
dec: 12
|
|
84
|
+
};
|
|
85
|
+
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";
|
|
86
|
+
var MONTH_ABBR_RE = "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec";
|
|
87
|
+
function isValidDateParts(year, month, day) {
|
|
88
|
+
if (year < 1900) return false;
|
|
89
|
+
if (month < 1 || month > 12) return false;
|
|
90
|
+
if (day < 1 || day > 31) return false;
|
|
91
|
+
if (month === 2) {
|
|
92
|
+
var isLeap = new Date(year, 1, 29).getDate() === 29;
|
|
93
|
+
if (isLeap && day > 29) return false;
|
|
94
|
+
if (!isLeap && day > 28) return false;
|
|
64
95
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
96
|
+
if ([4, 6, 9, 11].includes(month) && day > 30) return false;
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
function detectDateFormat(str) {
|
|
100
|
+
if (!str || str.toString().length < 5) return null;
|
|
101
|
+
var s = str.toString().trim();
|
|
102
|
+
var m;
|
|
103
|
+
m = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?$/.exec(s);
|
|
104
|
+
if (m) {
|
|
105
|
+
var y = +m[1];
|
|
106
|
+
var mo = +m[2];
|
|
107
|
+
var d = +m[3];
|
|
108
|
+
var h = +m[4];
|
|
109
|
+
var mi = +m[5];
|
|
110
|
+
var sec = m[6] != null ? +m[6] : 0;
|
|
111
|
+
if (isValidDateParts(y, mo, d)) {
|
|
112
|
+
return {
|
|
113
|
+
year: y,
|
|
114
|
+
month: mo,
|
|
115
|
+
day: d,
|
|
116
|
+
hours: h,
|
|
117
|
+
minutes: mi,
|
|
118
|
+
seconds: sec,
|
|
119
|
+
formatType: "yyyy-MM-ddTHH:mm"
|
|
120
|
+
};
|
|
121
|
+
}
|
|
70
122
|
}
|
|
71
|
-
|
|
72
|
-
|
|
123
|
+
m = /^(\d{4})-(\d{1,2})-(\d{1,2})(?:\s(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/.exec(s);
|
|
124
|
+
if (m) {
|
|
125
|
+
var y = +m[1];
|
|
126
|
+
var mo = +m[2];
|
|
127
|
+
var d = +m[3];
|
|
128
|
+
if (isValidDateParts(y, mo, d)) {
|
|
129
|
+
var h = m[4] != null ? +m[4] : 0;
|
|
130
|
+
var mi = m[5] != null ? +m[5] : 0;
|
|
131
|
+
var sec = m[6] != null ? +m[6] : 0;
|
|
132
|
+
return {
|
|
133
|
+
year: y,
|
|
134
|
+
month: mo,
|
|
135
|
+
day: d,
|
|
136
|
+
hours: h,
|
|
137
|
+
minutes: mi,
|
|
138
|
+
seconds: sec,
|
|
139
|
+
formatType: m[4] != null ? "yyyy-MM-dd HH:mm" : "yyyy-MM-dd"
|
|
140
|
+
};
|
|
141
|
+
}
|
|
73
142
|
}
|
|
74
|
-
|
|
75
|
-
|
|
143
|
+
m = /^(\d{4})\/(\d{1,2})\/(\d{1,2})(?:\s(\d{1,2}):(\d{2})(?::(\d{2}))?)?$/.exec(s);
|
|
144
|
+
if (m) {
|
|
145
|
+
var y = +m[1];
|
|
146
|
+
var mo = +m[2];
|
|
147
|
+
var d = +m[3];
|
|
148
|
+
if (isValidDateParts(y, mo, d)) {
|
|
149
|
+
var h = m[4] != null ? +m[4] : 0;
|
|
150
|
+
var mi = m[5] != null ? +m[5] : 0;
|
|
151
|
+
var sec = m[6] != null ? +m[6] : 0;
|
|
152
|
+
return {
|
|
153
|
+
year: y,
|
|
154
|
+
month: mo,
|
|
155
|
+
day: d,
|
|
156
|
+
hours: h,
|
|
157
|
+
minutes: mi,
|
|
158
|
+
seconds: sec,
|
|
159
|
+
formatType: m[4] != null ? "yyyy/MM/dd HH:mm" : "yyyy/MM/dd"
|
|
160
|
+
};
|
|
161
|
+
}
|
|
76
162
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
163
|
+
m = /^(\d{4})\.(\d{1,2})\.(\d{1,2})$/.exec(s);
|
|
164
|
+
if (m) {
|
|
165
|
+
var y = +m[1];
|
|
166
|
+
var mo = +m[2];
|
|
167
|
+
var d = +m[3];
|
|
168
|
+
if (isValidDateParts(y, mo, d)) {
|
|
169
|
+
return {
|
|
170
|
+
year: y,
|
|
171
|
+
month: mo,
|
|
172
|
+
day: d,
|
|
173
|
+
hours: 0,
|
|
174
|
+
minutes: 0,
|
|
175
|
+
seconds: 0,
|
|
176
|
+
formatType: "yyyy.MM.dd"
|
|
177
|
+
};
|
|
80
178
|
}
|
|
81
|
-
|
|
82
|
-
|
|
179
|
+
}
|
|
180
|
+
m = /^(\d{1,2})\/(\d{1,2})\/(\d{4})\s(\d{1,2}):(\d{2})\s?(AM|PM)$/i.exec(s);
|
|
181
|
+
if (m) {
|
|
182
|
+
var p1 = +m[1];
|
|
183
|
+
var p2 = +m[2];
|
|
184
|
+
var y = +m[3];
|
|
185
|
+
var h = +m[4];
|
|
186
|
+
var mi = +m[5];
|
|
187
|
+
var ampm = m[6].toUpperCase();
|
|
188
|
+
if (p1 <= 12 && isValidDateParts(y, p1, p2)) {
|
|
189
|
+
var actualH = h;
|
|
190
|
+
if (ampm === "PM" && h !== 12) actualH = h + 12;
|
|
191
|
+
if (ampm === "AM" && h === 12) actualH = 0;
|
|
192
|
+
return {
|
|
193
|
+
year: y,
|
|
194
|
+
month: p1,
|
|
195
|
+
day: p2,
|
|
196
|
+
hours: actualH,
|
|
197
|
+
minutes: mi,
|
|
198
|
+
seconds: 0,
|
|
199
|
+
formatType: "MM/dd/yyyy h:mm AM/PM"
|
|
200
|
+
};
|
|
83
201
|
}
|
|
84
202
|
}
|
|
85
|
-
|
|
203
|
+
m = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(s);
|
|
204
|
+
if (m) {
|
|
205
|
+
var p1 = +m[1];
|
|
206
|
+
var p2 = +m[2];
|
|
207
|
+
var y = +m[3];
|
|
208
|
+
if (p1 > 12 && isValidDateParts(y, p2, p1)) {
|
|
209
|
+
return {
|
|
210
|
+
year: y,
|
|
211
|
+
month: p2,
|
|
212
|
+
day: p1,
|
|
213
|
+
hours: 0,
|
|
214
|
+
minutes: 0,
|
|
215
|
+
seconds: 0,
|
|
216
|
+
formatType: "dd/MM/yyyy"
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
if (p2 > 12 && p1 <= 12 && isValidDateParts(y, p1, p2)) {
|
|
220
|
+
var formatType = m[1].length === 1 ? "M/d/yyyy" : "MM/dd/yyyy";
|
|
221
|
+
return {
|
|
222
|
+
year: y,
|
|
223
|
+
month: p1,
|
|
224
|
+
day: p2,
|
|
225
|
+
hours: 0,
|
|
226
|
+
minutes: 0,
|
|
227
|
+
seconds: 0,
|
|
228
|
+
formatType: formatType
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
if (p1 <= 12 && p2 <= 31 && isValidDateParts(y, p1, p2)) {
|
|
232
|
+
var formatType = m[1].length === 1 ? "M/d/yyyy" : "MM/dd/yyyy";
|
|
233
|
+
return {
|
|
234
|
+
year: y,
|
|
235
|
+
month: p1,
|
|
236
|
+
day: p2,
|
|
237
|
+
hours: 0,
|
|
238
|
+
minutes: 0,
|
|
239
|
+
seconds: 0,
|
|
240
|
+
formatType: formatType
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
m = /^(\d{2})\/(\d{2})\/(\d{2})$/.exec(s);
|
|
245
|
+
if (m) {
|
|
246
|
+
var p1 = +m[1];
|
|
247
|
+
var p2 = +m[2];
|
|
248
|
+
var y = 2000 + +m[3];
|
|
249
|
+
if (p1 <= 12 && p2 <= 31 && isValidDateParts(y, p1, p2)) {
|
|
250
|
+
return {
|
|
251
|
+
year: y,
|
|
252
|
+
month: p1,
|
|
253
|
+
day: p2,
|
|
254
|
+
hours: 0,
|
|
255
|
+
minutes: 0,
|
|
256
|
+
seconds: 0,
|
|
257
|
+
formatType: "MM/dd/yy"
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
m = /^(\d{1,2})-(\d{1,2})-(\d{4})$/.exec(s);
|
|
262
|
+
if (m) {
|
|
263
|
+
var p1 = +m[1];
|
|
264
|
+
var p2 = +m[2];
|
|
265
|
+
var y = +m[3];
|
|
266
|
+
if (p1 > 12 && isValidDateParts(y, p2, p1)) {
|
|
267
|
+
return {
|
|
268
|
+
year: y,
|
|
269
|
+
month: p2,
|
|
270
|
+
day: p1,
|
|
271
|
+
hours: 0,
|
|
272
|
+
minutes: 0,
|
|
273
|
+
seconds: 0,
|
|
274
|
+
formatType: "dd-MM-yyyy"
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
m = /^(\d{1,2})\.(\d{1,2})\.(\d{4})$/.exec(s);
|
|
279
|
+
if (m) {
|
|
280
|
+
var p1 = +m[1];
|
|
281
|
+
var p2 = +m[2];
|
|
282
|
+
var y = +m[3];
|
|
283
|
+
if (p1 > 12 && isValidDateParts(y, p2, p1)) {
|
|
284
|
+
return {
|
|
285
|
+
year: y,
|
|
286
|
+
month: p2,
|
|
287
|
+
day: p1,
|
|
288
|
+
hours: 0,
|
|
289
|
+
minutes: 0,
|
|
290
|
+
seconds: 0,
|
|
291
|
+
formatType: "dd.MM.yyyy"
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
m = new RegExp("^(".concat(MONTH_NAMES_RE, ")\\s+(\\d{1,2}),?\\s+(\\d{4})$"), "i").exec(s);
|
|
296
|
+
if (m) {
|
|
297
|
+
var mo = MONTH_NAME_MAP[m[1].toLowerCase()];
|
|
298
|
+
var d = +m[2];
|
|
299
|
+
var y = +m[3];
|
|
300
|
+
if (mo && isValidDateParts(y, mo, d)) {
|
|
301
|
+
return {
|
|
302
|
+
year: y,
|
|
303
|
+
month: mo,
|
|
304
|
+
day: d,
|
|
305
|
+
hours: 0,
|
|
306
|
+
minutes: 0,
|
|
307
|
+
seconds: 0,
|
|
308
|
+
formatType: "named"
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
m = new RegExp("^(\\d{1,2})\\s+(".concat(MONTH_NAMES_RE, ")\\s+(\\d{4})$"), "i").exec(s);
|
|
313
|
+
if (m) {
|
|
314
|
+
var d = +m[1];
|
|
315
|
+
var mo = MONTH_NAME_MAP[m[2].toLowerCase()];
|
|
316
|
+
var y = +m[3];
|
|
317
|
+
if (mo && isValidDateParts(y, mo, d)) {
|
|
318
|
+
return {
|
|
319
|
+
year: y,
|
|
320
|
+
month: mo,
|
|
321
|
+
day: d,
|
|
322
|
+
hours: 0,
|
|
323
|
+
minutes: 0,
|
|
324
|
+
seconds: 0,
|
|
325
|
+
formatType: "named"
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
m = new RegExp("^(".concat(MONTH_ABBR_RE, ")-(\\d{1,2})-(\\d{4})$"), "i").exec(s);
|
|
330
|
+
if (m) {
|
|
331
|
+
var mo = MONTH_NAME_MAP[m[1].toLowerCase()];
|
|
332
|
+
var d = +m[2];
|
|
333
|
+
var y = +m[3];
|
|
334
|
+
if (mo && isValidDateParts(y, mo, d)) {
|
|
335
|
+
return {
|
|
336
|
+
year: y,
|
|
337
|
+
month: mo,
|
|
338
|
+
day: d,
|
|
339
|
+
hours: 0,
|
|
340
|
+
minutes: 0,
|
|
341
|
+
seconds: 0,
|
|
342
|
+
formatType: "named"
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
function checkDateTime(str) {
|
|
349
|
+
return detectDateFormat(str) !== null;
|
|
86
350
|
}
|
|
87
351
|
function isdatetime(s) {
|
|
88
352
|
if (s === null || s.toString().length < 5) {
|
|
@@ -8,7 +8,6 @@ exports.handlePastedTable = handlePastedTable;
|
|
|
8
8
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
9
|
var _locale = require("./locale");
|
|
10
10
|
var _modules = require("./modules");
|
|
11
|
-
var _format = require("./modules/format");
|
|
12
11
|
var _utils = require("./utils");
|
|
13
12
|
var _api = require("./api");
|
|
14
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -135,8 +134,7 @@ function brToNewline(str) {
|
|
|
135
134
|
return str.replace(/<br\s*\/?>/gi, "\n");
|
|
136
135
|
}
|
|
137
136
|
var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
|
|
138
|
-
var _a;
|
|
139
|
-
var _b, _c, _d, _e;
|
|
137
|
+
var _a, _b, _c, _d;
|
|
140
138
|
var cell = {};
|
|
141
139
|
var rawText = (td.innerText || td.innerHTML || "").trim();
|
|
142
140
|
var isLineBreak = rawText.includes("<br />");
|
|
@@ -154,22 +152,24 @@ var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
|
|
|
154
152
|
})
|
|
155
153
|
});
|
|
156
154
|
} else {
|
|
157
|
-
|
|
158
|
-
|
|
155
|
+
cell.v = rawText;
|
|
156
|
+
cell.m = rawText;
|
|
157
|
+
cell.ct = {
|
|
158
|
+
fa: "General",
|
|
159
|
+
t: "g"
|
|
160
|
+
};
|
|
159
161
|
if (HEX_REGEX.test(rawText)) {
|
|
160
162
|
cell.ct = {
|
|
161
163
|
fa: "@",
|
|
162
164
|
t: "s"
|
|
163
165
|
};
|
|
164
|
-
cell.m = rawText;
|
|
165
|
-
cell.v = rawText;
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
if (((
|
|
168
|
+
if (((_a = td.style) === null || _a === void 0 ? void 0 : _a.alignItems) === "center") {
|
|
169
169
|
cell.vt = 0;
|
|
170
|
-
} else if (((
|
|
170
|
+
} else if (((_b = td.style) === null || _b === void 0 ? void 0 : _b.alignItems) === "flex-end") {
|
|
171
171
|
cell.vt = 2;
|
|
172
|
-
} else if (((
|
|
172
|
+
} else if (((_c = td.style) === null || _c === void 0 ? void 0 : _c.alignItems) === "flex-start") {
|
|
173
173
|
cell.vt = 1;
|
|
174
174
|
}
|
|
175
175
|
var styleBlock = typeof classStyles[".".concat(td.className)] === "string" ? classStyles[".".concat(td.className)] : "";
|
|
@@ -196,7 +196,7 @@ var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
|
|
|
196
196
|
} else {
|
|
197
197
|
cell.ht = 1;
|
|
198
198
|
}
|
|
199
|
-
if (((
|
|
199
|
+
if (((_d = td === null || td === void 0 ? void 0 : td.style) === null || _d === void 0 ? void 0 : _d["overflow-wrap"]) === "anywhere") {
|
|
200
200
|
cell.tb = "2";
|
|
201
201
|
} else {
|
|
202
202
|
cell.tb = "2";
|