cx 23.5.1 → 23.5.3
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/charts.js +5 -4
- package/dist/manifest.js +686 -680
- package/dist/ui.js +5 -9
- package/dist/util.js +75 -10
- package/dist/widgets.js +32 -33
- package/package.json +1 -1
- package/src/charts/axis/TimeAxis.js +7 -6
- package/src/data/StringTemplate.spec.js +95 -105
- package/src/ui/FocusManager.js +171 -171
- package/src/ui/Format.js +53 -69
- package/src/util/Format.js +73 -86
- package/src/util/date/index.d.ts +10 -9
- package/src/util/date/index.js +10 -9
- package/src/util/date/parseDateInvariant.d.ts +3 -0
- package/src/util/date/parseDateInvariant.js +20 -0
- package/src/widgets/form/Calendar.js +27 -26
- package/src/widgets/form/DateTimeField.d.ts +86 -86
- package/src/widgets/form/DateTimeField.js +575 -572
- package/src/widgets/form/DateTimePicker.js +9 -8
- package/src/widgets/form/MonthField.js +30 -30
- package/src/widgets/form/MonthPicker.js +17 -16
- package/src/widgets/grid/Grid.js +3266 -3273
package/dist/ui.js
CHANGED
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
closestParent,
|
|
42
42
|
Format as Format$1,
|
|
43
43
|
resolveMinMaxFractionDigits,
|
|
44
|
+
parseDateInvariant,
|
|
44
45
|
isNonEmptyArray,
|
|
45
46
|
debug,
|
|
46
47
|
processDataFlag,
|
|
@@ -1403,19 +1404,14 @@ function unfocusElement(target, unfocusParentOverlay) {
|
|
|
1403
1404
|
if (!target) target = activeElement;
|
|
1404
1405
|
if (unfocusParentOverlay) {
|
|
1405
1406
|
var focusableOverlayContainer = closestParent(target, function (el) {
|
|
1406
|
-
|
|
1407
|
-
return (_el$dataset = el.dataset) == null ? void 0 : _el$dataset.focusableOverlayContainer;
|
|
1407
|
+
return el.dataset.focusableOverlayContainer;
|
|
1408
1408
|
});
|
|
1409
1409
|
if (focusableOverlayContainer) target = focusableOverlayContainer;
|
|
1410
1410
|
}
|
|
1411
1411
|
|
|
1412
1412
|
//find the closest focusable parent of the target element and focus it instead
|
|
1413
1413
|
var focusableParent = closestParent(target, function (el) {
|
|
1414
|
-
|
|
1415
|
-
return (
|
|
1416
|
-
isFocusable(el) &&
|
|
1417
|
-
(!unfocusParentOverlay || ((_el$dataset2 = el.dataset) == null ? void 0 : _el$dataset2.focusableOverlayContainer))
|
|
1418
|
-
);
|
|
1414
|
+
return isFocusable(el) && (!unfocusParentOverlay || el.dataset.focusableOverlayContainer);
|
|
1419
1415
|
});
|
|
1420
1416
|
if (focusableParent && focusableParent !== document.body) focusableParent.focus();
|
|
1421
1417
|
else activeElement.blur();
|
|
@@ -1523,7 +1519,7 @@ function enableCultureSensitiveFormatting() {
|
|
|
1523
1519
|
var culture = Culture.getDateTimeCulture();
|
|
1524
1520
|
var formatter = culture.getFormatter(format);
|
|
1525
1521
|
return function (value) {
|
|
1526
|
-
return formatter.format(
|
|
1522
|
+
return formatter.format(parseDateInvariant(value));
|
|
1527
1523
|
};
|
|
1528
1524
|
});
|
|
1529
1525
|
Format$1.registerFactory(["time", "t"], function (fmt, format) {
|
|
@@ -1533,7 +1529,7 @@ function enableCultureSensitiveFormatting() {
|
|
|
1533
1529
|
var culture = Culture.getDateTimeCulture();
|
|
1534
1530
|
var formatter = culture.getFormatter(format);
|
|
1535
1531
|
return function (value) {
|
|
1536
|
-
return formatter.format(
|
|
1532
|
+
return formatter.format(parseDateInvariant(value));
|
|
1537
1533
|
};
|
|
1538
1534
|
});
|
|
1539
1535
|
Format$1.registerFactory(["datetime", "dt"], function (fmt, format) {
|
package/dist/util.js
CHANGED
|
@@ -120,6 +120,11 @@ function isArray(a) {
|
|
|
120
120
|
return Array.isArray(a);
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
+
function capitalize(str) {
|
|
124
|
+
if (typeof str != "string") return str;
|
|
125
|
+
return str.charAt(0).toUpperCase() + str.substring(1);
|
|
126
|
+
}
|
|
127
|
+
|
|
123
128
|
//Culture dependent formatters are defined in the ui package.
|
|
124
129
|
|
|
125
130
|
var defaultFormatter = function defaultFormatter(v) {
|
|
@@ -244,6 +249,32 @@ var formatFactory = {
|
|
|
244
249
|
};
|
|
245
250
|
}
|
|
246
251
|
},
|
|
252
|
+
zeroPad: function zeroPad(part0, length) {
|
|
253
|
+
return function (value) {
|
|
254
|
+
var s = String(value);
|
|
255
|
+
return s.padStart(length, "0");
|
|
256
|
+
};
|
|
257
|
+
},
|
|
258
|
+
leftPad: function leftPad(part0, length, _char) {
|
|
259
|
+
return function (value) {
|
|
260
|
+
var s = String(value);
|
|
261
|
+
return s.padStart(length, _char != null ? _char : " ");
|
|
262
|
+
};
|
|
263
|
+
},
|
|
264
|
+
capitalize: function capitalize$1() {
|
|
265
|
+
return function (value) {
|
|
266
|
+
var s = String(value);
|
|
267
|
+
return capitalize(s);
|
|
268
|
+
};
|
|
269
|
+
},
|
|
270
|
+
titleCase: function titleCase() {
|
|
271
|
+
return function (value) {
|
|
272
|
+
var s = String(value);
|
|
273
|
+
return s.replace(/\w\S*/g, function (word) {
|
|
274
|
+
return capitalize(word.toLowerCase());
|
|
275
|
+
});
|
|
276
|
+
};
|
|
277
|
+
},
|
|
247
278
|
};
|
|
248
279
|
formatFactory.s = formatFactory.str = formatFactory.string;
|
|
249
280
|
formatFactory.f = formatFactory.fixed;
|
|
@@ -253,6 +284,10 @@ formatFactory.ps = formatFactory.percentageSign;
|
|
|
253
284
|
formatFactory.d = formatFactory.date;
|
|
254
285
|
formatFactory.t = formatFactory.time;
|
|
255
286
|
formatFactory.dt = formatFactory.datetime;
|
|
287
|
+
formatFactory.zeropad = formatFactory.zeroPad;
|
|
288
|
+
formatFactory.leftpad = formatFactory.leftPad;
|
|
289
|
+
formatFactory.capitalize = formatFactory.capitalize;
|
|
290
|
+
formatFactory.titlecase = formatFactory.titleCase;
|
|
256
291
|
function buildFormatter(format) {
|
|
257
292
|
var formatter = defaultFormatter,
|
|
258
293
|
nullText = "";
|
|
@@ -284,7 +319,7 @@ function buildFormatter(format) {
|
|
|
284
319
|
var format = {
|
|
285
320
|
cache: {},
|
|
286
321
|
};
|
|
287
|
-
function
|
|
322
|
+
function getDefaultFormatCache() {
|
|
288
323
|
if (format.cacheIdentifier != GlobalCacheIdentifier.get()) {
|
|
289
324
|
format = {
|
|
290
325
|
cache: {},
|
|
@@ -293,6 +328,10 @@ function getFormatCache() {
|
|
|
293
328
|
}
|
|
294
329
|
return format.cache;
|
|
295
330
|
}
|
|
331
|
+
var getFormatCache = getDefaultFormatCache;
|
|
332
|
+
function setGetFormatCacheCallback(callback) {
|
|
333
|
+
getFormatCache = callback;
|
|
334
|
+
}
|
|
296
335
|
function getFormatter(format) {
|
|
297
336
|
if (!format) format = "";
|
|
298
337
|
var formatCache = getFormatCache();
|
|
@@ -402,7 +441,6 @@ function expandFatArrows(code) {
|
|
|
402
441
|
}
|
|
403
442
|
return expandFatArrows(code); //recursive call
|
|
404
443
|
}
|
|
405
|
-
|
|
406
444
|
return code;
|
|
407
445
|
}
|
|
408
446
|
function getSingeLineBodyEnd(bodyCode, startI) {
|
|
@@ -547,10 +585,12 @@ function findScrollableParent(sourceEl, horizontal) {
|
|
|
547
585
|
}
|
|
548
586
|
|
|
549
587
|
function getParentFrameBoundingClientRect(el) {
|
|
550
|
-
if
|
|
588
|
+
// if the ownerDocument is null, the element itself is the document
|
|
589
|
+
var ownerDocument = el.ownerDocument || el;
|
|
590
|
+
if (ownerDocument != document) {
|
|
551
591
|
var frames = document.getElementsByTagName("iframe");
|
|
552
592
|
for (var i = 0; i < frames.length; i++) {
|
|
553
|
-
if (frames[i].contentDocument ==
|
|
593
|
+
if (frames[i].contentDocument == ownerDocument) {
|
|
554
594
|
return frames[i].getBoundingClientRect();
|
|
555
595
|
}
|
|
556
596
|
}
|
|
@@ -785,6 +825,16 @@ function encodeDateWithTimezoneOffset(date) {
|
|
|
785
825
|
);
|
|
786
826
|
}
|
|
787
827
|
|
|
828
|
+
var impl = function impl(input) {
|
|
829
|
+
return new Date(input);
|
|
830
|
+
};
|
|
831
|
+
function invariantParseDate(input) {
|
|
832
|
+
return impl(input);
|
|
833
|
+
}
|
|
834
|
+
function registerInvariantParseDateImpl(newImpl) {
|
|
835
|
+
impl = newImpl;
|
|
836
|
+
}
|
|
837
|
+
|
|
788
838
|
function hue2rgb(p, q, t) {
|
|
789
839
|
if (t < 0) t += 1;
|
|
790
840
|
if (t > 1) t -= 1;
|
|
@@ -1024,6 +1074,7 @@ function getSearchQueryHighlighter(query, options) {
|
|
|
1024
1074
|
};
|
|
1025
1075
|
if (highlighterCache[query]) return highlighterCache[query];
|
|
1026
1076
|
var result = function result(query) {
|
|
1077
|
+
query = new String(query);
|
|
1027
1078
|
var chunks = [query];
|
|
1028
1079
|
for (var i = 0; i < regexes.length; i++) {
|
|
1029
1080
|
var newChunks = [];
|
|
@@ -1046,9 +1097,12 @@ function getSearchQueryHighlighter(query, options) {
|
|
|
1046
1097
|
};
|
|
1047
1098
|
if (options != null && options.cache) {
|
|
1048
1099
|
highlighterCache[query] = result;
|
|
1049
|
-
setTimeout(
|
|
1050
|
-
|
|
1051
|
-
|
|
1100
|
+
setTimeout(
|
|
1101
|
+
function () {
|
|
1102
|
+
delete highlighterCache[query];
|
|
1103
|
+
},
|
|
1104
|
+
(options == null ? void 0 : options.cachePeriod) || 5000,
|
|
1105
|
+
);
|
|
1052
1106
|
}
|
|
1053
1107
|
return result;
|
|
1054
1108
|
}
|
|
@@ -1086,7 +1140,7 @@ function enableTouchEventDetection() {
|
|
|
1086
1140
|
//console.log('TOUCHSTART');
|
|
1087
1141
|
lastTouchEvent = Date.now();
|
|
1088
1142
|
},
|
|
1089
|
-
options
|
|
1143
|
+
options,
|
|
1090
1144
|
);
|
|
1091
1145
|
document.addEventListener(
|
|
1092
1146
|
"touchmove",
|
|
@@ -1094,7 +1148,7 @@ function enableTouchEventDetection() {
|
|
|
1094
1148
|
//console.log('TOUCHMOVE');
|
|
1095
1149
|
lastTouchEvent = Date.now();
|
|
1096
1150
|
},
|
|
1097
|
-
options
|
|
1151
|
+
options,
|
|
1098
1152
|
);
|
|
1099
1153
|
document.addEventListener(
|
|
1100
1154
|
"touchend",
|
|
@@ -1102,7 +1156,7 @@ function enableTouchEventDetection() {
|
|
|
1102
1156
|
lastTouchEvent = Date.now();
|
|
1103
1157
|
//console.log('TOUCHEND');
|
|
1104
1158
|
},
|
|
1105
|
-
options
|
|
1159
|
+
options,
|
|
1106
1160
|
);
|
|
1107
1161
|
isTouchDetectionEnabled = true;
|
|
1108
1162
|
}
|
|
@@ -1400,6 +1454,12 @@ function isTextInputElement(el) {
|
|
|
1400
1454
|
return el.tagName == "INPUT" || el.tagName == "TEXTAREA";
|
|
1401
1455
|
}
|
|
1402
1456
|
|
|
1457
|
+
var regex =
|
|
1458
|
+
/^(?:[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[\$0-9A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u0870-\u0887\u0889-\u088E\u0898-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3C-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1-\u0CF3\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECE\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1715\u171F-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B4C\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA827\uA82C\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDEFD-\uDF1C\uDF27\uDF30-\uDF50\uDF70-\uDF85\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC75\uDC7F-\uDCBA\uDCC2\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD47\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E-\uDE41\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E-\uDC61\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39\uDF40-\uDF46]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B-\uDD43\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6\uDF00-\uDF10\uDF12-\uDF3A\uDF3E-\uDF42\uDF50-\uDF59\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC40-\uDC55]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFE4\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD833[\uDF00-\uDF2D\uDF30-\uDF46]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDC30-\uDC6D\uDC8F\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAE\uDEC0-\uDEF9]|\uD839[\uDCD0-\uDCF9\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF]|\uDB40[\uDD00-\uDDEF])*$/;
|
|
1459
|
+
function isValidIdentifierName(name) {
|
|
1460
|
+
return regex.test(name);
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1403
1463
|
var TraversalStack = /*#__PURE__*/ (function () {
|
|
1404
1464
|
function TraversalStack() {
|
|
1405
1465
|
this.data = [];
|
|
@@ -1452,6 +1512,7 @@ export {
|
|
|
1452
1512
|
appLoopFlag,
|
|
1453
1513
|
browserSupportsPassiveEventHandlers,
|
|
1454
1514
|
calculateNaturalElementHeight,
|
|
1515
|
+
capitalize,
|
|
1455
1516
|
cleanupFlag,
|
|
1456
1517
|
closest,
|
|
1457
1518
|
closestParent,
|
|
@@ -1482,6 +1543,7 @@ export {
|
|
|
1482
1543
|
hslToRgb,
|
|
1483
1544
|
innerTextTrim,
|
|
1484
1545
|
internalFlag,
|
|
1546
|
+
invariantParseDate,
|
|
1485
1547
|
isArray,
|
|
1486
1548
|
isComponentFactory,
|
|
1487
1549
|
isDefined,
|
|
@@ -1501,6 +1563,7 @@ export {
|
|
|
1501
1563
|
isTouchDevice,
|
|
1502
1564
|
isTouchEvent,
|
|
1503
1565
|
isUndefined,
|
|
1566
|
+
isValidIdentifierName,
|
|
1504
1567
|
lowerBoundCheck,
|
|
1505
1568
|
maxDate,
|
|
1506
1569
|
menuFlag,
|
|
@@ -1517,6 +1580,7 @@ export {
|
|
|
1517
1580
|
preventDefault,
|
|
1518
1581
|
processDataFlag,
|
|
1519
1582
|
quoteStr,
|
|
1583
|
+
registerInvariantParseDateImpl,
|
|
1520
1584
|
renderFlag,
|
|
1521
1585
|
resolveMinMaxFractionDigits,
|
|
1522
1586
|
reverseSlice,
|
|
@@ -1525,6 +1589,7 @@ export {
|
|
|
1525
1589
|
routeAppend,
|
|
1526
1590
|
sameDate,
|
|
1527
1591
|
scrollElementIntoView,
|
|
1592
|
+
setGetFormatCacheCallback,
|
|
1528
1593
|
shallowEquals,
|
|
1529
1594
|
shouldUpdateFlag,
|
|
1530
1595
|
stopPropagation,
|
package/dist/widgets.js
CHANGED
|
@@ -107,6 +107,7 @@ import {
|
|
|
107
107
|
monthStart,
|
|
108
108
|
zeroTime,
|
|
109
109
|
sameDate,
|
|
110
|
+
parseDateInvariant,
|
|
110
111
|
dateDiff,
|
|
111
112
|
upperBoundCheck,
|
|
112
113
|
lowerBoundCheck,
|
|
@@ -8097,14 +8098,14 @@ var Calendar = /*#__PURE__*/ (function (_Field) {
|
|
|
8097
8098
|
disabled: data.disabled,
|
|
8098
8099
|
};
|
|
8099
8100
|
if (data.value) {
|
|
8100
|
-
var d =
|
|
8101
|
+
var d = parseDateInvariant(data.value);
|
|
8101
8102
|
if (!isNaN(d.getTime())) {
|
|
8102
8103
|
data.date = zeroTime(d);
|
|
8103
8104
|
}
|
|
8104
8105
|
}
|
|
8105
|
-
if (data.refDate) data.refDate = zeroTime(
|
|
8106
|
-
if (data.maxValue) data.maxValue = zeroTime(
|
|
8107
|
-
if (data.minValue) data.minValue = zeroTime(
|
|
8106
|
+
if (data.refDate) data.refDate = zeroTime(parseDateInvariant(data.refDate));
|
|
8107
|
+
if (data.maxValue) data.maxValue = zeroTime(parseDateInvariant(data.maxValue));
|
|
8108
|
+
if (data.minValue) data.minValue = zeroTime(parseDateInvariant(data.minValue));
|
|
8108
8109
|
_Field.prototype.prepareData.apply(this, arguments);
|
|
8109
8110
|
};
|
|
8110
8111
|
_proto.validate = function validate(context, instance) {
|
|
@@ -8129,7 +8130,7 @@ var Calendar = /*#__PURE__*/ (function (_Field) {
|
|
|
8129
8130
|
if (widget.disabledDaysOfWeek.includes(data.date.getDay())) data.error = this.disabledDaysOfWeekErrorText;
|
|
8130
8131
|
}
|
|
8131
8132
|
if (data.dayData) {
|
|
8132
|
-
var date =
|
|
8133
|
+
var date = parseDateInvariant(data.value);
|
|
8133
8134
|
var info = data.dayData[date.toDateString()];
|
|
8134
8135
|
if (info && info.disabled) data.error = this.disabledDaysOfWeekErrorText;
|
|
8135
8136
|
}
|
|
@@ -8157,7 +8158,7 @@ var Calendar = /*#__PURE__*/ (function (_Field) {
|
|
|
8157
8158
|
if (!validationCheck$1(date, data)) return;
|
|
8158
8159
|
if (this.onBeforeSelect && instance.invoke("onBeforeSelect", e, instance, date) === false) return;
|
|
8159
8160
|
if (widget.partial) {
|
|
8160
|
-
var mixed =
|
|
8161
|
+
var mixed = parseDateInvariant(data.value);
|
|
8161
8162
|
if (data.value && !isNaN(mixed)) {
|
|
8162
8163
|
mixed.setFullYear(date.getFullYear());
|
|
8163
8164
|
mixed.setMonth(date.getMonth());
|
|
@@ -10687,14 +10688,14 @@ var MonthPicker = /*#__PURE__*/ (function (_Field) {
|
|
|
10687
10688
|
data.stateMods = {
|
|
10688
10689
|
disabled: data.disabled,
|
|
10689
10690
|
};
|
|
10690
|
-
if (!this.range && data.value) data.date = monthStart(
|
|
10691
|
+
if (!this.range && data.value) data.date = monthStart(parseDateInvariant(data.value));
|
|
10691
10692
|
if (this.range) {
|
|
10692
|
-
if (data.from) data.from = monthStart(
|
|
10693
|
-
if (data.to) data.to = monthStart(
|
|
10693
|
+
if (data.from) data.from = monthStart(parseDateInvariant(data.from));
|
|
10694
|
+
if (data.to) data.to = monthStart(parseDateInvariant(data.to));
|
|
10694
10695
|
}
|
|
10695
|
-
if (data.refDate) data.refDate = monthStart(
|
|
10696
|
-
if (data.maxValue) data.maxValue = monthStart(
|
|
10697
|
-
if (data.minValue) data.minValue = monthStart(
|
|
10696
|
+
if (data.refDate) data.refDate = monthStart(parseDateInvariant(data.refDate));
|
|
10697
|
+
if (data.maxValue) data.maxValue = monthStart(parseDateInvariant(data.maxValue));
|
|
10698
|
+
if (data.minValue) data.minValue = monthStart(parseDateInvariant(data.minValue));
|
|
10698
10699
|
_Field.prototype.prepareData.apply(this, arguments);
|
|
10699
10700
|
};
|
|
10700
10701
|
_proto.validate = function validate(context, instance) {
|
|
@@ -11929,20 +11930,20 @@ var MonthField = /*#__PURE__*/ (function (_Field) {
|
|
|
11929
11930
|
month: "short",
|
|
11930
11931
|
};
|
|
11931
11932
|
if (!this.range && data.value) {
|
|
11932
|
-
data.date =
|
|
11933
|
+
data.date = parseDateInvariant(data.value);
|
|
11933
11934
|
data.formatted = this.culture.format(data.date, formatOptions);
|
|
11934
11935
|
} else if (this.range && data.from && data.to) {
|
|
11935
|
-
data.from =
|
|
11936
|
-
data.to =
|
|
11936
|
+
data.from = parseDateInvariant(data.from);
|
|
11937
|
+
data.to = parseDateInvariant(data.to);
|
|
11937
11938
|
data.to.setDate(data.to.getDate() - 1);
|
|
11938
11939
|
var fromStr = this.culture.format(data.from, formatOptions);
|
|
11939
11940
|
var toStr = this.culture.format(data.to, formatOptions);
|
|
11940
11941
|
if (fromStr != toStr) data.formatted = fromStr + " - " + toStr;
|
|
11941
11942
|
else data.formatted = fromStr;
|
|
11942
11943
|
}
|
|
11943
|
-
if (data.refDate) data.refDate = monthStart(
|
|
11944
|
-
if (data.maxValue) data.maxValue = monthStart(
|
|
11945
|
-
if (data.minValue) data.minValue = monthStart(
|
|
11944
|
+
if (data.refDate) data.refDate = monthStart(parseDateInvariant(data.refDate));
|
|
11945
|
+
if (data.maxValue) data.maxValue = monthStart(parseDateInvariant(data.maxValue));
|
|
11946
|
+
if (data.minValue) data.minValue = monthStart(parseDateInvariant(data.minValue));
|
|
11946
11947
|
instance.lastDropdown = context.lastDropdown;
|
|
11947
11948
|
};
|
|
11948
11949
|
_proto.validateRequired = function validateRequired(context, instance) {
|
|
@@ -13890,7 +13891,7 @@ var DateTimePickerComponent = /*#__PURE__*/ (function (_VDOM$Component) {
|
|
|
13890
13891
|
function DateTimePickerComponent(props) {
|
|
13891
13892
|
var _this;
|
|
13892
13893
|
_this = _VDOM$Component.call(this, props) || this;
|
|
13893
|
-
var date = props.data.value ?
|
|
13894
|
+
var date = props.data.value ? parseDateInvariant(props.data.value) : new Date();
|
|
13894
13895
|
if (isNaN(date.getTime())) date = new Date();
|
|
13895
13896
|
_this.state = {
|
|
13896
13897
|
date: date,
|
|
@@ -13916,7 +13917,7 @@ var DateTimePickerComponent = /*#__PURE__*/ (function (_VDOM$Component) {
|
|
|
13916
13917
|
}
|
|
13917
13918
|
var _proto2 = DateTimePickerComponent.prototype;
|
|
13918
13919
|
_proto2.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(props) {
|
|
13919
|
-
var date = props.data.value ?
|
|
13920
|
+
var date = props.data.value ? parseDateInvariant(props.data.value) : new Date();
|
|
13920
13921
|
if (isNaN(date.getTime())) date = new Date();
|
|
13921
13922
|
this.setState({
|
|
13922
13923
|
date: date,
|
|
@@ -14440,7 +14441,9 @@ var DateTimeField = /*#__PURE__*/ (function (_Field) {
|
|
|
14440
14441
|
_proto.prepareData = function prepareData(context, instance) {
|
|
14441
14442
|
var data = instance.data;
|
|
14442
14443
|
if (data.value) {
|
|
14443
|
-
var date =
|
|
14444
|
+
var date = parseDateInvariant(data.value);
|
|
14445
|
+
// let date = new Date(data.value);
|
|
14446
|
+
|
|
14444
14447
|
if (isNaN(date.getTime())) data.formatted = String(data.value);
|
|
14445
14448
|
else {
|
|
14446
14449
|
// handle utc edge cases
|
|
@@ -14449,9 +14452,9 @@ var DateTimeField = /*#__PURE__*/ (function (_Field) {
|
|
|
14449
14452
|
}
|
|
14450
14453
|
data.date = date;
|
|
14451
14454
|
} else data.formatted = "";
|
|
14452
|
-
if (data.refDate) data.refDate = zeroTime(
|
|
14453
|
-
if (data.maxValue) data.maxValue =
|
|
14454
|
-
if (data.minValue) data.minValue =
|
|
14455
|
+
if (data.refDate) data.refDate = zeroTime(parseDateInvariant(data.refDate));
|
|
14456
|
+
if (data.maxValue) data.maxValue = parseDateInvariant(data.maxValue);
|
|
14457
|
+
if (data.minValue) data.minValue = parseDateInvariant(data.minValue);
|
|
14455
14458
|
if (this.segment == "date") {
|
|
14456
14459
|
if (data.minValue) data.minValue = zeroTime(data.minValue);
|
|
14457
14460
|
if (data.maxValue) data.maxValue = zeroTime(data.maxValue);
|
|
@@ -14918,7 +14921,7 @@ var DateTimeInput = /*#__PURE__*/ (function (_VDOM$Component) {
|
|
|
14918
14921
|
inputError: isNaN(date) && widget.inputErrorText,
|
|
14919
14922
|
});
|
|
14920
14923
|
if (!isNaN(date)) {
|
|
14921
|
-
var mixed =
|
|
14924
|
+
var mixed = parseDateInvariant(baseValue);
|
|
14922
14925
|
if (date && baseValue && !isNaN(mixed) && widget.partial) {
|
|
14923
14926
|
switch (widget.segment) {
|
|
14924
14927
|
case "date":
|
|
@@ -17364,15 +17367,11 @@ var GridComponent = /*#__PURE__*/ (function (_VDOM$Component) {
|
|
|
17364
17367
|
var widget = instance.widget;
|
|
17365
17368
|
if (widget.scrollable)
|
|
17366
17369
|
this.offResize = ResizeManager.trackElement(this.dom.scroller, function () {
|
|
17367
|
-
//ignore changes if the element is not visible on the page
|
|
17368
|
-
if (_this10.dom.scroller.offsetWidth == 0) return;
|
|
17369
17370
|
//update fixed header/footer
|
|
17370
|
-
|
|
17371
|
-
|
|
17372
|
-
instance.
|
|
17373
|
-
|
|
17374
|
-
lockedColWidth: {},
|
|
17375
|
-
});
|
|
17371
|
+
_this10.componentDidUpdate();
|
|
17372
|
+
instance.setState({
|
|
17373
|
+
dimensionsVersion: instance.state.dimensionsVersion + 1,
|
|
17374
|
+
lockedColWidth: {},
|
|
17376
17375
|
});
|
|
17377
17376
|
});
|
|
17378
17377
|
if (widget.pipeKeyDown) instance.invoke("pipeKeyDown", this.handleKeyDown.bind(this), instance);
|
package/package.json
CHANGED
|
@@ -4,12 +4,13 @@ import { Stack } from "./Stack";
|
|
|
4
4
|
import { Format } from "../../ui/Format";
|
|
5
5
|
import { isNumber } from "../../util/isNumber";
|
|
6
6
|
import { zeroTime } from "../../util/date/zeroTime";
|
|
7
|
+
import { parseDateInvariant } from "../../util";
|
|
7
8
|
|
|
8
9
|
Format.registerFactory("yearOrMonth", (format) => {
|
|
9
10
|
let year = Format.parse("datetime;yyyy");
|
|
10
11
|
let month = Format.parse("datetime;MMM");
|
|
11
12
|
return function (date) {
|
|
12
|
-
let d =
|
|
13
|
+
let d = parseDateInvariant(date);
|
|
13
14
|
if (d.getMonth() == 0) return year(d);
|
|
14
15
|
else return month(d);
|
|
15
16
|
};
|
|
@@ -19,7 +20,7 @@ Format.registerFactory("monthOrDay", (format) => {
|
|
|
19
20
|
let month = Format.parse("datetime;MMM");
|
|
20
21
|
let day = Format.parse("datetime;dd");
|
|
21
22
|
return function (date) {
|
|
22
|
-
let d =
|
|
23
|
+
let d = parseDateInvariant(date);
|
|
23
24
|
if (d.getDate() == 1) return month(d);
|
|
24
25
|
else return day(d);
|
|
25
26
|
};
|
|
@@ -69,7 +70,7 @@ export class TimeAxis extends Axis {
|
|
|
69
70
|
this.minTickUnit,
|
|
70
71
|
lowerDeadZone,
|
|
71
72
|
upperDeadZone,
|
|
72
|
-
this.decode
|
|
73
|
+
this.decode,
|
|
73
74
|
);
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -149,7 +150,7 @@ class TimeScale {
|
|
|
149
150
|
minTickUnit,
|
|
150
151
|
lowerDeadZone,
|
|
151
152
|
upperDeadZone,
|
|
152
|
-
decode
|
|
153
|
+
decode,
|
|
153
154
|
) {
|
|
154
155
|
this.dateCache = {};
|
|
155
156
|
this.min = min != null ? this.decodeValue(min) : null;
|
|
@@ -180,12 +181,12 @@ class TimeScale {
|
|
|
180
181
|
let v = this.dateCache[date];
|
|
181
182
|
if (!v) {
|
|
182
183
|
if (this.decode) date = this.decode(date);
|
|
183
|
-
v = this.dateCache[date] =
|
|
184
|
+
v = this.dateCache[date] = parseDateInvariant(date).getTime();
|
|
184
185
|
}
|
|
185
186
|
return v;
|
|
186
187
|
|
|
187
188
|
case "number":
|
|
188
|
-
return date;
|
|
189
|
+
return parseDateInvariant(date).getTime();
|
|
189
190
|
}
|
|
190
191
|
}
|
|
191
192
|
|