cx 23.5.2 → 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 +733 -727
- package/dist/ui.js +5 -9
- package/dist/util.js +75 -10
- package/dist/widgets.js +34 -39
- 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/Field.js +8 -15
- package/src/widgets/form/Label.js +86 -88
- package/src/widgets/form/MonthField.js +30 -30
- package/src/widgets/form/MonthPicker.js +17 -16
- package/src/widgets/form/ValidationGroup.d.ts +0 -3
- package/src/widgets/form/ValidationGroup.js +0 -3
- 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,
|
|
@@ -6517,8 +6518,7 @@ var Label = /*#__PURE__*/ (function (_HtmlElement) {
|
|
|
6517
6518
|
data._disabled,
|
|
6518
6519
|
context.parentDisabled
|
|
6519
6520
|
);
|
|
6520
|
-
|
|
6521
|
-
if (instance.cache("disabled", data.disabled) || instance.cache("asterisk", data.asterisk)) {
|
|
6521
|
+
if (instance.cache("disabled", data.disabled)) {
|
|
6522
6522
|
instance.markShouldUpdate(context);
|
|
6523
6523
|
this.prepareCSS(context, instance);
|
|
6524
6524
|
}
|
|
@@ -6545,7 +6545,7 @@ var Label = /*#__PURE__*/ (function (_HtmlElement) {
|
|
|
6545
6545
|
};
|
|
6546
6546
|
}
|
|
6547
6547
|
if (!props.id && data.htmlFor) props.id = data.htmlFor + "-label";
|
|
6548
|
-
if (
|
|
6548
|
+
if (this.asterisk && data.required) {
|
|
6549
6549
|
if (!isArray(props.children)) props.children = [props.children];
|
|
6550
6550
|
props.children.push(" ");
|
|
6551
6551
|
props.children.push(
|
|
@@ -8098,14 +8098,14 @@ var Calendar = /*#__PURE__*/ (function (_Field) {
|
|
|
8098
8098
|
disabled: data.disabled,
|
|
8099
8099
|
};
|
|
8100
8100
|
if (data.value) {
|
|
8101
|
-
var d =
|
|
8101
|
+
var d = parseDateInvariant(data.value);
|
|
8102
8102
|
if (!isNaN(d.getTime())) {
|
|
8103
8103
|
data.date = zeroTime(d);
|
|
8104
8104
|
}
|
|
8105
8105
|
}
|
|
8106
|
-
if (data.refDate) data.refDate = zeroTime(
|
|
8107
|
-
if (data.maxValue) data.maxValue = zeroTime(
|
|
8108
|
-
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));
|
|
8109
8109
|
_Field.prototype.prepareData.apply(this, arguments);
|
|
8110
8110
|
};
|
|
8111
8111
|
_proto.validate = function validate(context, instance) {
|
|
@@ -8130,7 +8130,7 @@ var Calendar = /*#__PURE__*/ (function (_Field) {
|
|
|
8130
8130
|
if (widget.disabledDaysOfWeek.includes(data.date.getDay())) data.error = this.disabledDaysOfWeekErrorText;
|
|
8131
8131
|
}
|
|
8132
8132
|
if (data.dayData) {
|
|
8133
|
-
var date =
|
|
8133
|
+
var date = parseDateInvariant(data.value);
|
|
8134
8134
|
var info = data.dayData[date.toDateString()];
|
|
8135
8135
|
if (info && info.disabled) data.error = this.disabledDaysOfWeekErrorText;
|
|
8136
8136
|
}
|
|
@@ -8158,7 +8158,7 @@ var Calendar = /*#__PURE__*/ (function (_Field) {
|
|
|
8158
8158
|
if (!validationCheck$1(date, data)) return;
|
|
8159
8159
|
if (this.onBeforeSelect && instance.invoke("onBeforeSelect", e, instance, date) === false) return;
|
|
8160
8160
|
if (widget.partial) {
|
|
8161
|
-
var mixed =
|
|
8161
|
+
var mixed = parseDateInvariant(data.value);
|
|
8162
8162
|
if (data.value && !isNaN(mixed)) {
|
|
8163
8163
|
mixed.setFullYear(date.getFullYear());
|
|
8164
8164
|
mixed.setMonth(date.getMonth());
|
|
@@ -10531,7 +10531,6 @@ var ValidationGroup = /*#__PURE__*/ (function (_PureContainer) {
|
|
|
10531
10531
|
isolated: undefined,
|
|
10532
10532
|
visited: undefined,
|
|
10533
10533
|
strict: undefined,
|
|
10534
|
-
asterisk: undefined,
|
|
10535
10534
|
},
|
|
10536
10535
|
])
|
|
10537
10536
|
);
|
|
@@ -10547,7 +10546,6 @@ var ValidationGroup = /*#__PURE__*/ (function (_PureContainer) {
|
|
|
10547
10546
|
context.push("parentViewMode", coalesce(instance.data.viewMode, context.parentViewMode));
|
|
10548
10547
|
context.push("parentTabOnEnterKey", coalesce(instance.data.tabOnEnterKey, context.parentTabOnEnterKey));
|
|
10549
10548
|
context.push("parentVisited", coalesce(instance.data.visited, context.parentVisited));
|
|
10550
|
-
context.push("parentAsterisk", coalesce(instance.data.asterisk, context.parentAsterisk));
|
|
10551
10549
|
context.push("validation", instance.validation);
|
|
10552
10550
|
_PureContainer.prototype.explore.call(this, context, instance);
|
|
10553
10551
|
};
|
|
@@ -10560,7 +10558,6 @@ var ValidationGroup = /*#__PURE__*/ (function (_PureContainer) {
|
|
|
10560
10558
|
context.pop("parentViewMode");
|
|
10561
10559
|
context.pop("parentTabOnEnterKey");
|
|
10562
10560
|
context.pop("parentStrict");
|
|
10563
|
-
context.pop("parentAsterisk");
|
|
10564
10561
|
instance.valid = instance.validation.errors.length == 0;
|
|
10565
10562
|
if (!instance.valid && !this.isolated && context.validation)
|
|
10566
10563
|
(_context$validation$e = context.validation.errors).push.apply(_context$validation$e, instance.validation.errors);
|
|
@@ -10691,14 +10688,14 @@ var MonthPicker = /*#__PURE__*/ (function (_Field) {
|
|
|
10691
10688
|
data.stateMods = {
|
|
10692
10689
|
disabled: data.disabled,
|
|
10693
10690
|
};
|
|
10694
|
-
if (!this.range && data.value) data.date = monthStart(
|
|
10691
|
+
if (!this.range && data.value) data.date = monthStart(parseDateInvariant(data.value));
|
|
10695
10692
|
if (this.range) {
|
|
10696
|
-
if (data.from) data.from = monthStart(
|
|
10697
|
-
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));
|
|
10698
10695
|
}
|
|
10699
|
-
if (data.refDate) data.refDate = monthStart(
|
|
10700
|
-
if (data.maxValue) data.maxValue = monthStart(
|
|
10701
|
-
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));
|
|
10702
10699
|
_Field.prototype.prepareData.apply(this, arguments);
|
|
10703
10700
|
};
|
|
10704
10701
|
_proto.validate = function validate(context, instance) {
|
|
@@ -11933,20 +11930,20 @@ var MonthField = /*#__PURE__*/ (function (_Field) {
|
|
|
11933
11930
|
month: "short",
|
|
11934
11931
|
};
|
|
11935
11932
|
if (!this.range && data.value) {
|
|
11936
|
-
data.date =
|
|
11933
|
+
data.date = parseDateInvariant(data.value);
|
|
11937
11934
|
data.formatted = this.culture.format(data.date, formatOptions);
|
|
11938
11935
|
} else if (this.range && data.from && data.to) {
|
|
11939
|
-
data.from =
|
|
11940
|
-
data.to =
|
|
11936
|
+
data.from = parseDateInvariant(data.from);
|
|
11937
|
+
data.to = parseDateInvariant(data.to);
|
|
11941
11938
|
data.to.setDate(data.to.getDate() - 1);
|
|
11942
11939
|
var fromStr = this.culture.format(data.from, formatOptions);
|
|
11943
11940
|
var toStr = this.culture.format(data.to, formatOptions);
|
|
11944
11941
|
if (fromStr != toStr) data.formatted = fromStr + " - " + toStr;
|
|
11945
11942
|
else data.formatted = fromStr;
|
|
11946
11943
|
}
|
|
11947
|
-
if (data.refDate) data.refDate = monthStart(
|
|
11948
|
-
if (data.maxValue) data.maxValue = monthStart(
|
|
11949
|
-
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));
|
|
11950
11947
|
instance.lastDropdown = context.lastDropdown;
|
|
11951
11948
|
};
|
|
11952
11949
|
_proto.validateRequired = function validateRequired(context, instance) {
|
|
@@ -13894,7 +13891,7 @@ var DateTimePickerComponent = /*#__PURE__*/ (function (_VDOM$Component) {
|
|
|
13894
13891
|
function DateTimePickerComponent(props) {
|
|
13895
13892
|
var _this;
|
|
13896
13893
|
_this = _VDOM$Component.call(this, props) || this;
|
|
13897
|
-
var date = props.data.value ?
|
|
13894
|
+
var date = props.data.value ? parseDateInvariant(props.data.value) : new Date();
|
|
13898
13895
|
if (isNaN(date.getTime())) date = new Date();
|
|
13899
13896
|
_this.state = {
|
|
13900
13897
|
date: date,
|
|
@@ -13920,7 +13917,7 @@ var DateTimePickerComponent = /*#__PURE__*/ (function (_VDOM$Component) {
|
|
|
13920
13917
|
}
|
|
13921
13918
|
var _proto2 = DateTimePickerComponent.prototype;
|
|
13922
13919
|
_proto2.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(props) {
|
|
13923
|
-
var date = props.data.value ?
|
|
13920
|
+
var date = props.data.value ? parseDateInvariant(props.data.value) : new Date();
|
|
13924
13921
|
if (isNaN(date.getTime())) date = new Date();
|
|
13925
13922
|
this.setState({
|
|
13926
13923
|
date: date,
|
|
@@ -14444,7 +14441,9 @@ var DateTimeField = /*#__PURE__*/ (function (_Field) {
|
|
|
14444
14441
|
_proto.prepareData = function prepareData(context, instance) {
|
|
14445
14442
|
var data = instance.data;
|
|
14446
14443
|
if (data.value) {
|
|
14447
|
-
var date =
|
|
14444
|
+
var date = parseDateInvariant(data.value);
|
|
14445
|
+
// let date = new Date(data.value);
|
|
14446
|
+
|
|
14448
14447
|
if (isNaN(date.getTime())) data.formatted = String(data.value);
|
|
14449
14448
|
else {
|
|
14450
14449
|
// handle utc edge cases
|
|
@@ -14453,9 +14452,9 @@ var DateTimeField = /*#__PURE__*/ (function (_Field) {
|
|
|
14453
14452
|
}
|
|
14454
14453
|
data.date = date;
|
|
14455
14454
|
} else data.formatted = "";
|
|
14456
|
-
if (data.refDate) data.refDate = zeroTime(
|
|
14457
|
-
if (data.maxValue) data.maxValue =
|
|
14458
|
-
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);
|
|
14459
14458
|
if (this.segment == "date") {
|
|
14460
14459
|
if (data.minValue) data.minValue = zeroTime(data.minValue);
|
|
14461
14460
|
if (data.maxValue) data.maxValue = zeroTime(data.maxValue);
|
|
@@ -14922,7 +14921,7 @@ var DateTimeInput = /*#__PURE__*/ (function (_VDOM$Component) {
|
|
|
14922
14921
|
inputError: isNaN(date) && widget.inputErrorText,
|
|
14923
14922
|
});
|
|
14924
14923
|
if (!isNaN(date)) {
|
|
14925
|
-
var mixed =
|
|
14924
|
+
var mixed = parseDateInvariant(baseValue);
|
|
14926
14925
|
if (date && baseValue && !isNaN(mixed) && widget.partial) {
|
|
14927
14926
|
switch (widget.segment) {
|
|
14928
14927
|
case "date":
|
|
@@ -17368,15 +17367,11 @@ var GridComponent = /*#__PURE__*/ (function (_VDOM$Component) {
|
|
|
17368
17367
|
var widget = instance.widget;
|
|
17369
17368
|
if (widget.scrollable)
|
|
17370
17369
|
this.offResize = ResizeManager.trackElement(this.dom.scroller, function () {
|
|
17371
|
-
//ignore changes if the element is not visible on the page
|
|
17372
|
-
if (_this10.dom.scroller.offsetWidth == 0) return;
|
|
17373
17370
|
//update fixed header/footer
|
|
17374
|
-
|
|
17375
|
-
|
|
17376
|
-
instance.
|
|
17377
|
-
|
|
17378
|
-
lockedColWidth: {},
|
|
17379
|
-
});
|
|
17371
|
+
_this10.componentDidUpdate();
|
|
17372
|
+
instance.setState({
|
|
17373
|
+
dimensionsVersion: instance.state.dimensionsVersion + 1,
|
|
17374
|
+
lockedColWidth: {},
|
|
17380
17375
|
});
|
|
17381
17376
|
});
|
|
17382
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
|
|