novo-elements 10.15.0 → 10.16.0
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/elements/field/formats/date-format.d.ts +5 -3
- package/elements/field/formats/date-range-format.d.ts +5 -32
- package/elements/field/formats/date-time-format.d.ts +6 -4
- package/esm2022/elements/field/formats/date-format.mjs +22 -16
- package/esm2022/elements/field/formats/date-range-format.mjs +13 -41
- package/esm2022/elements/field/formats/date-time-format.mjs +29 -17
- package/esm2022/services/date-format/DateFormat.mjs +22 -1
- package/esm2022/utils/date/Date.mjs +31 -1
- package/esm2022/utils/date/legacy-parse.mjs +2 -2
- package/fesm2022/novo-elements-elements-field.mjs +59 -69
- package/fesm2022/novo-elements-elements-field.mjs.map +1 -1
- package/fesm2022/novo-elements-services.mjs +21 -0
- package/fesm2022/novo-elements-services.mjs.map +1 -1
- package/fesm2022/novo-elements-utils.mjs +31 -1
- package/fesm2022/novo-elements-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/services/date-format/DateFormat.d.ts +2 -0
- package/utils/date/Date.d.ts +6 -2
- package/utils/date/legacy-parse.d.ts +7 -0
|
@@ -81,7 +81,7 @@ export function legacyParse(argument, options = {}) {
|
|
|
81
81
|
return new Date(argument);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
function splitDateString(dateString) {
|
|
84
|
+
export function splitDateString(dateString) {
|
|
85
85
|
const array = dateString.split(parseTokenDateTimeDelimeter);
|
|
86
86
|
let timeString, date, time, timezone;
|
|
87
87
|
if (parseTokenPlainTime.test(array[0])) {
|
|
@@ -259,4 +259,4 @@ function getTimezoneOffsetInMilliseconds(dirtyDate) {
|
|
|
259
259
|
return (baseTimezoneOffset * MILLISECONDS_IN_MINUTE +
|
|
260
260
|
millisecondsPartOfTimezoneOffset);
|
|
261
261
|
}
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LXBhcnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvdXRpbHMvZGF0ZS9sZWdhY3ktcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztJQUdJO0FBRUosT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVqQyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQTtBQUNwQyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQTtBQUNwQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQTtBQUVuQyxNQUFNLDJCQUEyQixHQUFHLE1BQU0sQ0FBQTtBQUMxQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUUvQixjQUFjO0FBQ2QsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFBO0FBQ2hDLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLGVBQWUsRUFBRSxzQkFBc0I7SUFDdkMsZUFBZSxFQUFFLHFCQUFxQjtJQUN0QyxlQUFlLENBQUMsc0JBQXNCO0NBQ3ZDLENBQUE7QUFFRCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUE7QUFDakMsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixjQUFjLEVBQUUsc0JBQXNCO0lBQ3RDLGNBQWMsRUFBRSxxQkFBcUI7SUFDckMsY0FBYyxDQUFDLHNCQUFzQjtDQUN0QyxDQUFBO0FBRUQsY0FBYztBQUNkLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQTtBQUNqQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUE7QUFDbkMsTUFBTSxjQUFjLEdBQUcsc0JBQXNCLENBQUE7QUFDN0MsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFBO0FBQ3BDLE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFBO0FBRTlDLGNBQWM7QUFDZCxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQTtBQUMxQyxNQUFNLGNBQWMsR0FBRyw4QkFBOEIsQ0FBQTtBQUNy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QUFFLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUE7SUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7SUFDekMsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBUywrQkFBK0IsQ0FBQyxTQUFlO0lBQ3RELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7SUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDckIsTUFBTSxnQ0FBZ0MsR0FDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLHNCQUFzQixDQUFBO0lBRXpDLE9BQU8sQ0FDTCxrQkFBa0IsR0FBRyxzQkFBc0I7UUFDM0MsZ0NBQWdDLENBQ2pDLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFxuICogQ29weXJpZ2h0IMKpIDIwMjIgU2FzaGEgS29zc1xuICogaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGRhdGUtZm5zL3VwZ3JhZGVcbiAqKi9cblxuaW1wb3J0IHsgaXNEYXRlIH0gZnJvbSAnZGF0ZS1mbnMnXG5cbmNvbnN0IE1JTExJU0VDT05EU19JTl9IT1VSID0gMzYwMDAwMFxuY29uc3QgTUlMTElTRUNPTkRTX0lOX01JTlVURSA9IDYwMDAwXG5jb25zdCBERUZBVUxUX0FERElUSU9OQUxfRElHSVRTID0gMlxuXG5jb25zdCBwYXJzZVRva2VuRGF0ZVRpbWVEZWxpbWV0ZXIgPSAvW1QgXS9cbmNvbnN0IHBhcnNlVG9rZW5QbGFpblRpbWUgPSAvOi9cblxuLy8geWVhciB0b2tlbnNcbmNvbnN0IHBhcnNlVG9rZW5ZWSA9IC9eKFxcZHsyfSkkL1xuY29uc3QgcGFyc2VUb2tlbnNZWVkgPSBbXG4gIC9eKFsrLV1cXGR7Mn0pJC8sIC8vIDAgYWRkaXRpb25hbCBkaWdpdHNcbiAgL14oWystXVxcZHszfSkkLywgLy8gMSBhZGRpdGlvbmFsIGRpZ2l0XG4gIC9eKFsrLV1cXGR7NH0pJC8gLy8gMiBhZGRpdGlvbmFsIGRpZ2l0c1xuXVxuXG5jb25zdCBwYXJzZVRva2VuWVlZWSA9IC9eKFxcZHs0fSkvXG5jb25zdCBwYXJzZVRva2Vuc1lZWVlZID0gW1xuICAvXihbKy1dXFxkezR9KS8sIC8vIDAgYWRkaXRpb25hbCBkaWdpdHNcbiAgL14oWystXVxcZHs1fSkvLCAvLyAxIGFkZGl0aW9uYWwgZGlnaXRcbiAgL14oWystXVxcZHs2fSkvIC8vIDIgYWRkaXRpb25hbCBkaWdpdHNcbl1cblxuLy8gZGF0ZSB0b2tlbnNcbmNvbnN0IHBhcnNlVG9rZW5NTSA9IC9eLShcXGR7Mn0pJC9cbmNvbnN0IHBhcnNlVG9rZW5EREQgPSAvXi0/KFxcZHszfSkkL1xuY29uc3QgcGFyc2VUb2tlbk1NREQgPSAvXi0/KFxcZHsyfSktPyhcXGR7Mn0pJC9cbmNvbnN0IHBhcnNlVG9rZW5Xd3cgPSAvXi0/VyhcXGR7Mn0pJC9cbmNvbnN0IHBhcnNlVG9rZW5Xd3dEID0gL14tP1coXFxkezJ9KS0/KFxcZHsxfSkkL1xuXG4vLyB0aW1lIHRva2Vuc1xuY29uc3QgcGFyc2VUb2tlbkhIID0gL14oXFxkezJ9KFsuLF1cXGQqKT8pJC9cbmNvbnN0IHBhcnNlVG9rZW5ISE1NID0gL14oXFxkezJ9KTo/KFxcZHsyfShbLixdXFxkKik/KSQvXG5jb25zdCBwYXJzZVRva2VuSEhNTVNTID0gL14oXFxkezJ9KTo/KFxcZHsyfSk6PyhcXGR7Mn0oWy4sXVxcZCopPykkL1xuXG4vLyB0aW1lem9uZSB0b2tlbnNcbmNvbnN0IHBhcnNlVG9rZW5UaW1lem9uZSA9IC8oW1orLV0uKikkL1xuY29uc3QgcGFyc2VUb2tlblRpbWV6b25lWiA9IC9eKFopJC9cbmNvbnN0IHBhcnNlVG9rZW5UaW1lem9uZUhIID0gL14oWystXSkoXFxkezJ9KSQvXG5jb25zdCBwYXJzZVRva2VuVGltZXpvbmVISE1NID0gL14oWystXSkoXFxkezJ9KTo/KFxcZHsyfSkkL1xuXG5leHBvcnQgdHlwZSBMZWdhY3lQYXJzZU9wdGlvbnMgPSB7XG4gIGFkZGl0aW9uYWxEaWdpdHM/OiAwIHwgMSB8IDJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlZ2FjeVBhcnNlKFxuICBhcmd1bWVudDogYW55LFxuICBvcHRpb25zOiBMZWdhY3lQYXJzZU9wdGlvbnMgPSB7fVxuKTogRGF0ZSB7XG4gIGlmIChpc0RhdGUoYXJndW1lbnQpKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50LmdldFRpbWUoKSlcbiAgfSBlbHNlIGlmICh0eXBlb2YgYXJndW1lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KVxuICB9XG5cbiAgY29uc3QgYWRkaXRpb25hbERpZ2l0cyA9XG4gICAgb3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzID09IG51bGxcbiAgICAgID8gREVGQVVMVF9BRERJVElPTkFMX0RJR0lUU1xuICAgICAgOiBOdW1iZXIob3B0aW9ucy5hZGRpdGlvbmFsRGlnaXRzKVxuXG4gIGNvbnN0IGRhdGVTdHJpbmdzID0gc3BsaXREYXRlU3RyaW5nKGFyZ3VtZW50KVxuXG4gIGNvbnN0IHBhcnNlWWVhclJlc3VsdCA9IHBhcnNlWWVhcihkYXRlU3RyaW5ncy5kYXRlIHx8ICcnLCBhZGRpdGlvbmFsRGlnaXRzKVxuICBjb25zdCB5ZWFyID0gcGFyc2VZZWFyUmVzdWx0LnllYXJcbiAgY29uc3QgcmVzdERhdGVTdHJpbmcgPSBwYXJzZVllYXJSZXN1bHQucmVzdERhdGVTdHJpbmdcblxuICBjb25zdCBkYXRlID0gcGFyc2VEYXRlKHJlc3REYXRlU3RyaW5nIHx8ICcnLCB5ZWFyKVxuXG4gIGlmIChkYXRlKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gZGF0ZS5nZXRUaW1lKClcbiAgICBsZXQgdGltZSA9IDBcbiAgICBsZXQgb2Zmc2V0XG5cbiAgICBpZiAoZGF0ZVN0cmluZ3MudGltZSkge1xuICAgICAgdGltZSA9IHBhcnNlVGltZShkYXRlU3RyaW5ncy50aW1lKSB8fCAwXG4gICAgfVxuXG4gICAgaWYgKGRhdGVTdHJpbmdzLnRpbWV6b25lKSB7XG4gICAgICBvZmZzZXQgPSBwYXJzZVRpbWV6b25lKGRhdGVTdHJpbmdzLnRpbWV6b25lKSAqIE1JTExJU0VDT05EU19JTl9NSU5VVEVcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZnVsbFRpbWUgPSB0aW1lc3RhbXAgKyB0aW1lXG4gICAgICBjb25zdCBmdWxsVGltZURhdGUgPSBuZXcgRGF0ZShmdWxsVGltZSlcblxuICAgICAgb2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhmdWxsVGltZURhdGUpXG5cbiAgICAgIC8vIEFkanVzdCB0aW1lIHdoZW4gaXQncyBjb21pbmcgZnJvbSBEU1RcbiAgICAgIGNvbnN0IGZ1bGxUaW1lRGF0ZU5leHREYXkgPSBuZXcgRGF0ZShmdWxsVGltZSlcbiAgICAgIGZ1bGxUaW1lRGF0ZU5leHREYXkuc2V0RGF0ZShmdWxsVGltZURhdGUuZ2V0RGF0ZSgpICsgMSlcbiAgICAgIGNvbnN0IG9mZnNldERpZmYgPVxuICAgICAgICBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGZ1bGxUaW1lRGF0ZU5leHREYXkpIC1cbiAgICAgICAgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhmdWxsVGltZURhdGUpXG4gICAgICBpZiAob2Zmc2V0RGlmZiA+IDApIHtcbiAgICAgICAgb2Zmc2V0ICs9IG9mZnNldERpZmZcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUodGltZXN0YW1wICsgdGltZSArIG9mZnNldClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpXG4gIH1cbn1cblxudHlwZSBEYXRlU3RyaW5ncyA9IHtcbiAgZGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIHRpbWU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICB0aW1lem9uZTogc3RyaW5nIHwgdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHNwbGl0RGF0ZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlU3RyaW5ncyB7XG4gIGNvbnN0IGFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChwYXJzZVRva2VuRGF0ZVRpbWVEZWxpbWV0ZXIpXG4gIGxldCB0aW1lU3RyaW5nLCBkYXRlLCB0aW1lLCB0aW1lem9uZVxuXG4gIGlmIChwYXJzZVRva2VuUGxhaW5UaW1lLnRlc3QoYXJyYXlbMF0pKSB7XG4gICAgZGF0ZSA9IHVuZGVmaW5lZFxuICAgIHRpbWVTdHJpbmcgPSBhcnJheVswXVxuICB9IGVsc2Uge1xuICAgIGRhdGUgPSBhcnJheVswXVxuICAgIHRpbWVTdHJpbmcgPSBhcnJheVsxXVxuICB9XG5cbiAgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICBjb25zdCB0b2tlbiA9IHBhcnNlVG9rZW5UaW1lem9uZS5leGVjKHRpbWVTdHJpbmcpXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aW1lID0gdGltZVN0cmluZy5yZXBsYWNlKHRva2VuWzFdLCAnJylcbiAgICAgIHRpbWV6b25lID0gdG9rZW5bMV1cbiAgICB9IGVsc2Uge1xuICAgICAgdGltZSA9IHRpbWVTdHJpbmdcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhdGUsXG4gICAgdGltZSxcbiAgICB0aW1lem9uZVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlWWVhcihkYXRlU3RyaW5nOiBzdHJpbmcsIGFkZGl0aW9uYWxEaWdpdHM6IG51bWJlcikge1xuICBjb25zdCBwYXJzZVRva2VuWVlZID0gcGFyc2VUb2tlbnNZWVlbYWRkaXRpb25hbERpZ2l0c11cbiAgY29uc3QgcGFyc2VUb2tlbllZWVlZID0gcGFyc2VUb2tlbnNZWVlZWVthZGRpdGlvbmFsRGlnaXRzXVxuXG4gIGxldCB0b2tlblxuXG4gIC8vIFlZWVkgb3IgwrFZWVlZWVxuICB0b2tlbiA9IHBhcnNlVG9rZW5ZWVlZLmV4ZWMoZGF0ZVN0cmluZykgfHwgcGFyc2VUb2tlbllZWVlZLmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgY29uc3QgeWVhclN0cmluZyA9IHRva2VuWzFdXG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXI6IHBhcnNlSW50KHllYXJTdHJpbmcsIDEwKSxcbiAgICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKHllYXJTdHJpbmcubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIC8vIFlZIG9yIMKxWVlZXG4gIHRva2VuID0gcGFyc2VUb2tlbllZLmV4ZWMoZGF0ZVN0cmluZykgfHwgcGFyc2VUb2tlbllZWS5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGNvbnN0IGNlbnR1cnlTdHJpbmcgPSB0b2tlblsxXVxuICAgIHJldHVybiB7XG4gICAgICB5ZWFyOiBwYXJzZUludChjZW50dXJ5U3RyaW5nLCAxMCkgKiAxMDAsXG4gICAgICByZXN0RGF0ZVN0cmluZzogZGF0ZVN0cmluZy5zbGljZShjZW50dXJ5U3RyaW5nLmxlbmd0aClcbiAgICB9XG4gIH1cblxuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICByZXR1cm4ge1xuICAgIHllYXI6IG51bGxcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURhdGUoZGF0ZVN0cmluZzogc3RyaW5nLCB5ZWFyOiBudW1iZXIgfCBudWxsKSB7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIGlmICh5ZWFyID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGxldCB0b2tlblxuICBsZXQgZGF0ZVxuICBsZXQgbW9udGhcbiAgbGV0IHdlZWtcblxuICAvLyBZWVlZXG4gIGlmIChkYXRlU3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhcilcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1NTVxuICB0b2tlbiA9IHBhcnNlVG9rZW5NTS5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICAgIG1vbnRoID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKSAtIDFcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoKVxuICAgIHJldHVybiBkYXRlXG4gIH1cblxuICAvLyBZWVlZLURERCBvciBZWVlZREREXG4gIHRva2VuID0gcGFyc2VUb2tlbkRERC5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICAgIGNvbnN0IGRheU9mWWVhciA9IHBhcnNlSW50KHRva2VuWzFdLCAxMClcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIGRheU9mWWVhcilcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1NTS1ERCBvciBZWVlZTU1ERFxuICB0b2tlbiA9IHBhcnNlVG9rZW5NTURELmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKDApXG4gICAgbW9udGggPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMVxuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KHRva2VuWzJdLCAxMClcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkpXG4gICAgcmV0dXJuIGRhdGVcbiAgfVxuXG4gIC8vIFlZWVktV3d3IG9yIFlZWVlXd3dcbiAgdG9rZW4gPSBwYXJzZVRva2VuV3d3LmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgd2VlayA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCkgLSAxXG4gICAgcmV0dXJuIGRheU9mSVNPWWVhcih5ZWFyLCB3ZWVrKVxuICB9XG5cbiAgLy8gWVlZWS1Xd3ctRCBvciBZWVlZV3d3RFxuICB0b2tlbiA9IHBhcnNlVG9rZW5Xd3dELmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgd2VlayA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCkgLSAxXG4gICAgY29uc3QgZGF5T2ZXZWVrID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKSAtIDFcbiAgICByZXR1cm4gZGF5T2ZJU09ZZWFyKHllYXIsIHdlZWssIGRheU9mV2VlaylcbiAgfVxuXG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCBkYXRlXG4gIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIHBhcnNlVGltZSh0aW1lU3RyaW5nOiBzdHJpbmcpIHtcbiAgbGV0IHRva2VuXG4gIGxldCBob3Vyc1xuICBsZXQgbWludXRlc1xuXG4gIC8vIGhoXG4gIHRva2VuID0gcGFyc2VUb2tlbkhILmV4ZWModGltZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgaG91cnMgPSBwYXJzZUZsb2F0KHRva2VuWzFdLnJlcGxhY2UoJywnLCAnLicpKVxuICAgIHJldHVybiAoaG91cnMgJSAyNCkgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUlxuICB9XG5cbiAgLy8gaGg6bW0gb3IgaGhtbVxuICB0b2tlbiA9IHBhcnNlVG9rZW5ISE1NLmV4ZWModGltZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgaG91cnMgPSBwYXJzZUludCh0b2tlblsxXSwgMTApXG4gICAgbWludXRlcyA9IHBhcnNlRmxvYXQodG9rZW5bMl0ucmVwbGFjZSgnLCcsICcuJykpXG4gICAgcmV0dXJuIChcbiAgICAgIChob3VycyAlIDI0KSAqIE1JTExJU0VDT05EU19JTl9IT1VSICsgbWludXRlcyAqIE1JTExJU0VDT05EU19JTl9NSU5VVEVcbiAgICApXG4gIH1cblxuICAvLyBoaDptbTpzcyBvciBoaG1tc3NcbiAgdG9rZW4gPSBwYXJzZVRva2VuSEhNTVNTLmV4ZWModGltZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgaG91cnMgPSBwYXJzZUludCh0b2tlblsxXSwgMTApXG4gICAgbWludXRlcyA9IHBhcnNlSW50KHRva2VuWzJdLCAxMClcbiAgICBjb25zdCBzZWNvbmRzID0gcGFyc2VGbG9hdCh0b2tlblszXS5yZXBsYWNlKCcsJywgJy4nKSlcbiAgICByZXR1cm4gKFxuICAgICAgKGhvdXJzICUgMjQpICogTUlMTElTRUNPTkRTX0lOX0hPVVIgK1xuICAgICAgbWludXRlcyAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUgK1xuICAgICAgc2Vjb25kcyAqIDEwMDBcbiAgICApXG4gIH1cblxuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgdGltZVxuICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBwYXJzZVRpbWV6b25lKHRpbWV6b25lU3RyaW5nOiBzdHJpbmcpIHtcbiAgbGV0IHRva2VuXG4gIGxldCBhYnNvbHV0ZU9mZnNldFxuXG4gIC8vIFpcbiAgdG9rZW4gPSBwYXJzZVRva2VuVGltZXpvbmVaLmV4ZWModGltZXpvbmVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIHJldHVybiAwXG4gIH1cblxuICAvLyDCsWhoXG4gIHRva2VuID0gcGFyc2VUb2tlblRpbWV6b25lSEguZXhlYyh0aW1lem9uZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgYWJzb2x1dGVPZmZzZXQgPSBwYXJzZUludCh0b2tlblsyXSwgMTApICogNjBcbiAgICByZXR1cm4gdG9rZW5bMV0gPT09ICcrJyA/IC1hYnNvbHV0ZU9mZnNldCA6IGFic29sdXRlT2Zmc2V0XG4gIH1cblxuICAvLyDCsWhoOm1tIG9yIMKxaGhtbVxuICB0b2tlbiA9IHBhcnNlVG9rZW5UaW1lem9uZUhITU0uZXhlYyh0aW1lem9uZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgYWJzb2x1dGVPZmZzZXQgPSBwYXJzZUludCh0b2tlblsyXSwgMTApICogNjAgKyBwYXJzZUludCh0b2tlblszXSwgMTApXG4gICAgcmV0dXJuIHRva2VuWzFdID09PSAnKycgPyAtYWJzb2x1dGVPZmZzZXQgOiBhYnNvbHV0ZU9mZnNldFxuICB9XG5cbiAgcmV0dXJuIDBcbn1cblxuZnVuY3Rpb24gZGF5T2ZJU09ZZWFyKGlzb1llYXI6IG51bWJlciwgd2VlayA9IDAsIGRheSA9IDApIHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKDApXG4gIGRhdGUuc2V0VVRDRnVsbFllYXIoaXNvWWVhciwgMCwgNClcbiAgY29uc3QgZm91cnRoT2ZKYW51YXJ5RGF5ID0gZGF0ZS5nZXRVVENEYXkoKSB8fCA3XG4gIGNvbnN0IGRpZmYgPSB3ZWVrICogNyArIGRheSArIDEgLSBmb3VydGhPZkphbnVhcnlEYXlcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZilcbiAgcmV0dXJuIGRhdGVcbn1cblxuZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkaXJ0eURhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRpcnR5RGF0ZS5nZXRUaW1lKCkpXG4gIGNvbnN0IGJhc2VUaW1lem9uZU9mZnNldCA9IGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICBkYXRlLnNldFNlY29uZHMoMCwgMClcbiAgY29uc3QgbWlsbGlzZWNvbmRzUGFydE9mVGltZXpvbmVPZmZzZXQgPVxuICAgIGRhdGUuZ2V0VGltZSgpICUgTUlMTElTRUNPTkRTX0lOX01JTlVURVxuXG4gIHJldHVybiAoXG4gICAgYmFzZVRpbWV6b25lT2Zmc2V0ICogTUlMTElTRUNPTkRTX0lOX01JTlVURSArXG4gICAgbWlsbGlzZWNvbmRzUGFydE9mVGltZXpvbmVPZmZzZXRcbiAgKVxufSJdfQ==
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LXBhcnNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbm92by1lbGVtZW50cy9zcmMvdXRpbHMvZGF0ZS9sZWdhY3ktcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztJQUdJO0FBRUosT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVqQyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQTtBQUNwQyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQTtBQUNwQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBQTtBQUVuQyxNQUFNLDJCQUEyQixHQUFHLE1BQU0sQ0FBQTtBQUMxQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTtBQUUvQixjQUFjO0FBQ2QsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFBO0FBQ2hDLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLGVBQWUsRUFBRSxzQkFBc0I7SUFDdkMsZUFBZSxFQUFFLHFCQUFxQjtJQUN0QyxlQUFlLENBQUMsc0JBQXNCO0NBQ3ZDLENBQUE7QUFFRCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUE7QUFDakMsTUFBTSxnQkFBZ0IsR0FBRztJQUN2QixjQUFjLEVBQUUsc0JBQXNCO0lBQ3RDLGNBQWMsRUFBRSxxQkFBcUI7SUFDckMsY0FBYyxDQUFDLHNCQUFzQjtDQUN0QyxDQUFBO0FBRUQsY0FBYztBQUNkLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQTtBQUNqQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUE7QUFDbkMsTUFBTSxjQUFjLEdBQUcsc0JBQXNCLENBQUE7QUFDN0MsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFBO0FBQ3BDLE1BQU0sY0FBYyxHQUFHLHVCQUF1QixDQUFBO0FBRTlDLGNBQWM7QUFDZCxNQUFNLFlBQVksR0FBRyxxQkFBcUIsQ0FBQTtBQUMxQyxNQUFNLGNBQWMsR0FBRyw4QkFBOEIsQ0FBQTtBQUNy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QUFlLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxrQkFBa0IsQ0FBQTtJQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtJQUN6QyxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLCtCQUErQixDQUFDLFNBQWU7SUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDMUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyQixNQUFNLGdDQUFnQyxHQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsc0JBQXNCLENBQUE7SUFFekMsT0FBTyxDQUNMLGtCQUFrQixHQUFHLHNCQUFzQjtRQUMzQyxnQ0FBZ0MsQ0FDakMsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogXG4gKiBDb3B5cmlnaHQgwqkgMjAyMiBTYXNoYSBLb3NzXG4gKiBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AZGF0ZS1mbnMvdXBncmFkZVxuICoqL1xuXG5pbXBvcnQgeyBpc0RhdGUgfSBmcm9tICdkYXRlLWZucydcblxuY29uc3QgTUlMTElTRUNPTkRTX0lOX0hPVVIgPSAzNjAwMDAwXG5jb25zdCBNSUxMSVNFQ09ORFNfSU5fTUlOVVRFID0gNjAwMDBcbmNvbnN0IERFRkFVTFRfQURESVRJT05BTF9ESUdJVFMgPSAyXG5cbmNvbnN0IHBhcnNlVG9rZW5EYXRlVGltZURlbGltZXRlciA9IC9bVCBdL1xuY29uc3QgcGFyc2VUb2tlblBsYWluVGltZSA9IC86L1xuXG4vLyB5ZWFyIHRva2Vuc1xuY29uc3QgcGFyc2VUb2tlbllZID0gL14oXFxkezJ9KSQvXG5jb25zdCBwYXJzZVRva2Vuc1lZWSA9IFtcbiAgL14oWystXVxcZHsyfSkkLywgLy8gMCBhZGRpdGlvbmFsIGRpZ2l0c1xuICAvXihbKy1dXFxkezN9KSQvLCAvLyAxIGFkZGl0aW9uYWwgZGlnaXRcbiAgL14oWystXVxcZHs0fSkkLyAvLyAyIGFkZGl0aW9uYWwgZGlnaXRzXG5dXG5cbmNvbnN0IHBhcnNlVG9rZW5ZWVlZID0gL14oXFxkezR9KS9cbmNvbnN0IHBhcnNlVG9rZW5zWVlZWVkgPSBbXG4gIC9eKFsrLV1cXGR7NH0pLywgLy8gMCBhZGRpdGlvbmFsIGRpZ2l0c1xuICAvXihbKy1dXFxkezV9KS8sIC8vIDEgYWRkaXRpb25hbCBkaWdpdFxuICAvXihbKy1dXFxkezZ9KS8gLy8gMiBhZGRpdGlvbmFsIGRpZ2l0c1xuXVxuXG4vLyBkYXRlIHRva2Vuc1xuY29uc3QgcGFyc2VUb2tlbk1NID0gL14tKFxcZHsyfSkkL1xuY29uc3QgcGFyc2VUb2tlbkRERCA9IC9eLT8oXFxkezN9KSQvXG5jb25zdCBwYXJzZVRva2VuTU1ERCA9IC9eLT8oXFxkezJ9KS0/KFxcZHsyfSkkL1xuY29uc3QgcGFyc2VUb2tlbld3dyA9IC9eLT9XKFxcZHsyfSkkL1xuY29uc3QgcGFyc2VUb2tlbld3d0QgPSAvXi0/VyhcXGR7Mn0pLT8oXFxkezF9KSQvXG5cbi8vIHRpbWUgdG9rZW5zXG5jb25zdCBwYXJzZVRva2VuSEggPSAvXihcXGR7Mn0oWy4sXVxcZCopPykkL1xuY29uc3QgcGFyc2VUb2tlbkhITU0gPSAvXihcXGR7Mn0pOj8oXFxkezJ9KFsuLF1cXGQqKT8pJC9cbmNvbnN0IHBhcnNlVG9rZW5ISE1NU1MgPSAvXihcXGR7Mn0pOj8oXFxkezJ9KTo/KFxcZHsyfShbLixdXFxkKik/KSQvXG5cbi8vIHRpbWV6b25lIHRva2Vuc1xuY29uc3QgcGFyc2VUb2tlblRpbWV6b25lID0gLyhbWistXS4qKSQvXG5jb25zdCBwYXJzZVRva2VuVGltZXpvbmVaID0gL14oWikkL1xuY29uc3QgcGFyc2VUb2tlblRpbWV6b25lSEggPSAvXihbKy1dKShcXGR7Mn0pJC9cbmNvbnN0IHBhcnNlVG9rZW5UaW1lem9uZUhITU0gPSAvXihbKy1dKShcXGR7Mn0pOj8oXFxkezJ9KSQvXG5cbmV4cG9ydCB0eXBlIExlZ2FjeVBhcnNlT3B0aW9ucyA9IHtcbiAgYWRkaXRpb25hbERpZ2l0cz86IDAgfCAxIHwgMlxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGVnYWN5UGFyc2UoXG4gIGFyZ3VtZW50OiBhbnksXG4gIG9wdGlvbnM6IExlZ2FjeVBhcnNlT3B0aW9ucyA9IHt9XG4pOiBEYXRlIHtcbiAgaWYgKGlzRGF0ZShhcmd1bWVudCkpIHtcbiAgICAvLyBQcmV2ZW50IHRoZSBkYXRlIHRvIGxvc2UgdGhlIG1pbGxpc2Vjb25kcyB3aGVuIHBhc3NlZCB0byBuZXcgRGF0ZSgpIGluIElFMTBcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQuZ2V0VGltZSgpKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpXG4gIH1cblxuICBjb25zdCBhZGRpdGlvbmFsRGlnaXRzID1cbiAgICBvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHMgPT0gbnVsbFxuICAgICAgPyBERUZBVUxUX0FERElUSU9OQUxfRElHSVRTXG4gICAgICA6IE51bWJlcihvcHRpb25zLmFkZGl0aW9uYWxEaWdpdHMpXG5cbiAgY29uc3QgZGF0ZVN0cmluZ3MgPSBzcGxpdERhdGVTdHJpbmcoYXJndW1lbnQpXG5cbiAgY29uc3QgcGFyc2VZZWFyUmVzdWx0ID0gcGFyc2VZZWFyKGRhdGVTdHJpbmdzLmRhdGUgfHwgJycsIGFkZGl0aW9uYWxEaWdpdHMpXG4gIGNvbnN0IHllYXIgPSBwYXJzZVllYXJSZXN1bHQueWVhclxuICBjb25zdCByZXN0RGF0ZVN0cmluZyA9IHBhcnNlWWVhclJlc3VsdC5yZXN0RGF0ZVN0cmluZ1xuXG4gIGNvbnN0IGRhdGUgPSBwYXJzZURhdGUocmVzdERhdGVTdHJpbmcgfHwgJycsIHllYXIpXG5cbiAgaWYgKGRhdGUpIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKVxuICAgIGxldCB0aW1lID0gMFxuICAgIGxldCBvZmZzZXRcblxuICAgIGlmIChkYXRlU3RyaW5ncy50aW1lKSB7XG4gICAgICB0aW1lID0gcGFyc2VUaW1lKGRhdGVTdHJpbmdzLnRpbWUpIHx8IDBcbiAgICB9XG5cbiAgICBpZiAoZGF0ZVN0cmluZ3MudGltZXpvbmUpIHtcbiAgICAgIG9mZnNldCA9IHBhcnNlVGltZXpvbmUoZGF0ZVN0cmluZ3MudGltZXpvbmUpICogTUlMTElTRUNPTkRTX0lOX01JTlVURVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmdWxsVGltZSA9IHRpbWVzdGFtcCArIHRpbWVcbiAgICAgIGNvbnN0IGZ1bGxUaW1lRGF0ZSA9IG5ldyBEYXRlKGZ1bGxUaW1lKVxuXG4gICAgICBvZmZzZXQgPSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGZ1bGxUaW1lRGF0ZSlcblxuICAgICAgLy8gQWRqdXN0IHRpbWUgd2hlbiBpdCdzIGNvbWluZyBmcm9tIERTVFxuICAgICAgY29uc3QgZnVsbFRpbWVEYXRlTmV4dERheSA9IG5ldyBEYXRlKGZ1bGxUaW1lKVxuICAgICAgZnVsbFRpbWVEYXRlTmV4dERheS5zZXREYXRlKGZ1bGxUaW1lRGF0ZS5nZXREYXRlKCkgKyAxKVxuICAgICAgY29uc3Qgb2Zmc2V0RGlmZiA9XG4gICAgICAgIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZnVsbFRpbWVEYXRlTmV4dERheSkgLVxuICAgICAgICBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGZ1bGxUaW1lRGF0ZSlcbiAgICAgIGlmIChvZmZzZXREaWZmID4gMCkge1xuICAgICAgICBvZmZzZXQgKz0gb2Zmc2V0RGlmZlxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZSh0aW1lc3RhbXAgKyB0aW1lICsgb2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgRGF0ZShhcmd1bWVudClcbiAgfVxufVxuXG50eXBlIERhdGVTdHJpbmdzID0ge1xuICBkYXRlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgdGltZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIHRpbWV6b25lOiBzdHJpbmcgfCB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0RGF0ZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBEYXRlU3RyaW5ncyB7XG4gIGNvbnN0IGFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChwYXJzZVRva2VuRGF0ZVRpbWVEZWxpbWV0ZXIpXG4gIGxldCB0aW1lU3RyaW5nLCBkYXRlLCB0aW1lLCB0aW1lem9uZVxuXG4gIGlmIChwYXJzZVRva2VuUGxhaW5UaW1lLnRlc3QoYXJyYXlbMF0pKSB7XG4gICAgZGF0ZSA9IHVuZGVmaW5lZFxuICAgIHRpbWVTdHJpbmcgPSBhcnJheVswXVxuICB9IGVsc2Uge1xuICAgIGRhdGUgPSBhcnJheVswXVxuICAgIHRpbWVTdHJpbmcgPSBhcnJheVsxXVxuICB9XG5cbiAgaWYgKHRpbWVTdHJpbmcpIHtcbiAgICBjb25zdCB0b2tlbiA9IHBhcnNlVG9rZW5UaW1lem9uZS5leGVjKHRpbWVTdHJpbmcpXG4gICAgaWYgKHRva2VuKSB7XG4gICAgICB0aW1lID0gdGltZVN0cmluZy5yZXBsYWNlKHRva2VuWzFdLCAnJylcbiAgICAgIHRpbWV6b25lID0gdG9rZW5bMV1cbiAgICB9IGVsc2Uge1xuICAgICAgdGltZSA9IHRpbWVTdHJpbmdcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhdGUsXG4gICAgdGltZSxcbiAgICB0aW1lem9uZVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlWWVhcihkYXRlU3RyaW5nOiBzdHJpbmcsIGFkZGl0aW9uYWxEaWdpdHM6IG51bWJlcikge1xuICBjb25zdCBwYXJzZVRva2VuWVlZID0gcGFyc2VUb2tlbnNZWVlbYWRkaXRpb25hbERpZ2l0c11cbiAgY29uc3QgcGFyc2VUb2tlbllZWVlZID0gcGFyc2VUb2tlbnNZWVlZWVthZGRpdGlvbmFsRGlnaXRzXVxuXG4gIGxldCB0b2tlblxuXG4gIC8vIFlZWVkgb3IgwrFZWVlZWVxuICB0b2tlbiA9IHBhcnNlVG9rZW5ZWVlZLmV4ZWMoZGF0ZVN0cmluZykgfHwgcGFyc2VUb2tlbllZWVlZLmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgY29uc3QgeWVhclN0cmluZyA9IHRva2VuWzFdXG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXI6IHBhcnNlSW50KHllYXJTdHJpbmcsIDEwKSxcbiAgICAgIHJlc3REYXRlU3RyaW5nOiBkYXRlU3RyaW5nLnNsaWNlKHllYXJTdHJpbmcubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIC8vIFlZIG9yIMKxWVlZXG4gIHRva2VuID0gcGFyc2VUb2tlbllZLmV4ZWMoZGF0ZVN0cmluZykgfHwgcGFyc2VUb2tlbllZWS5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGNvbnN0IGNlbnR1cnlTdHJpbmcgPSB0b2tlblsxXVxuICAgIHJldHVybiB7XG4gICAgICB5ZWFyOiBwYXJzZUludChjZW50dXJ5U3RyaW5nLCAxMCkgKiAxMDAsXG4gICAgICByZXN0RGF0ZVN0cmluZzogZGF0ZVN0cmluZy5zbGljZShjZW50dXJ5U3RyaW5nLmxlbmd0aClcbiAgICB9XG4gIH1cblxuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgeWVhclxuICByZXR1cm4ge1xuICAgIHllYXI6IG51bGxcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZURhdGUoZGF0ZVN0cmluZzogc3RyaW5nLCB5ZWFyOiBudW1iZXIgfCBudWxsKSB7XG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCB5ZWFyXG4gIGlmICh5ZWFyID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGxldCB0b2tlblxuICBsZXQgZGF0ZVxuICBsZXQgbW9udGhcbiAgbGV0IHdlZWtcblxuICAvLyBZWVlZXG4gIGlmIChkYXRlU3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuICAgIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeWVhcilcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1NTVxuICB0b2tlbiA9IHBhcnNlVG9rZW5NTS5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICAgIG1vbnRoID0gcGFyc2VJbnQodG9rZW5bMV0sIDEwKSAtIDFcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoKVxuICAgIHJldHVybiBkYXRlXG4gIH1cblxuICAvLyBZWVlZLURERCBvciBZWVlZREREXG4gIHRva2VuID0gcGFyc2VUb2tlbkRERC5leGVjKGRhdGVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIGRhdGUgPSBuZXcgRGF0ZSgwKVxuICAgIGNvbnN0IGRheU9mWWVhciA9IHBhcnNlSW50KHRva2VuWzFdLCAxMClcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIGRheU9mWWVhcilcbiAgICByZXR1cm4gZGF0ZVxuICB9XG5cbiAgLy8gWVlZWS1NTS1ERCBvciBZWVlZTU1ERFxuICB0b2tlbiA9IHBhcnNlVG9rZW5NTURELmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgZGF0ZSA9IG5ldyBEYXRlKDApXG4gICAgbW9udGggPSBwYXJzZUludCh0b2tlblsxXSwgMTApIC0gMVxuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KHRva2VuWzJdLCAxMClcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIG1vbnRoLCBkYXkpXG4gICAgcmV0dXJuIGRhdGVcbiAgfVxuXG4gIC8vIFlZWVktV3d3IG9yIFlZWVlXd3dcbiAgdG9rZW4gPSBwYXJzZVRva2VuV3d3LmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgd2VlayA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCkgLSAxXG4gICAgcmV0dXJuIGRheU9mSVNPWWVhcih5ZWFyLCB3ZWVrKVxuICB9XG5cbiAgLy8gWVlZWS1Xd3ctRCBvciBZWVlZV3d3RFxuICB0b2tlbiA9IHBhcnNlVG9rZW5Xd3dELmV4ZWMoZGF0ZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgd2VlayA9IHBhcnNlSW50KHRva2VuWzFdLCAxMCkgLSAxXG4gICAgY29uc3QgZGF5T2ZXZWVrID0gcGFyc2VJbnQodG9rZW5bMl0sIDEwKSAtIDFcbiAgICByZXR1cm4gZGF5T2ZJU09ZZWFyKHllYXIsIHdlZWssIGRheU9mV2VlaylcbiAgfVxuXG4gIC8vIEludmFsaWQgSVNPLWZvcm1hdHRlZCBkYXRlXG4gIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIHBhcnNlVGltZSh0aW1lU3RyaW5nOiBzdHJpbmcpIHtcbiAgbGV0IHRva2VuXG4gIGxldCBob3Vyc1xuICBsZXQgbWludXRlc1xuXG4gIC8vIGhoXG4gIHRva2VuID0gcGFyc2VUb2tlbkhILmV4ZWModGltZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgaG91cnMgPSBwYXJzZUZsb2F0KHRva2VuWzFdLnJlcGxhY2UoJywnLCAnLicpKVxuICAgIHJldHVybiAoaG91cnMgJSAyNCkgKiBNSUxMSVNFQ09ORFNfSU5fSE9VUlxuICB9XG5cbiAgLy8gaGg6bW0gb3IgaGhtbVxuICB0b2tlbiA9IHBhcnNlVG9rZW5ISE1NLmV4ZWModGltZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgaG91cnMgPSBwYXJzZUludCh0b2tlblsxXSwgMTApXG4gICAgbWludXRlcyA9IHBhcnNlRmxvYXQodG9rZW5bMl0ucmVwbGFjZSgnLCcsICcuJykpXG4gICAgcmV0dXJuIChcbiAgICAgIChob3VycyAlIDI0KSAqIE1JTExJU0VDT05EU19JTl9IT1VSICsgbWludXRlcyAqIE1JTExJU0VDT05EU19JTl9NSU5VVEVcbiAgICApXG4gIH1cblxuICAvLyBoaDptbTpzcyBvciBoaG1tc3NcbiAgdG9rZW4gPSBwYXJzZVRva2VuSEhNTVNTLmV4ZWModGltZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgaG91cnMgPSBwYXJzZUludCh0b2tlblsxXSwgMTApXG4gICAgbWludXRlcyA9IHBhcnNlSW50KHRva2VuWzJdLCAxMClcbiAgICBjb25zdCBzZWNvbmRzID0gcGFyc2VGbG9hdCh0b2tlblszXS5yZXBsYWNlKCcsJywgJy4nKSlcbiAgICByZXR1cm4gKFxuICAgICAgKGhvdXJzICUgMjQpICogTUlMTElTRUNPTkRTX0lOX0hPVVIgK1xuICAgICAgbWludXRlcyAqIE1JTExJU0VDT05EU19JTl9NSU5VVEUgK1xuICAgICAgc2Vjb25kcyAqIDEwMDBcbiAgICApXG4gIH1cblxuICAvLyBJbnZhbGlkIElTTy1mb3JtYXR0ZWQgdGltZVxuICByZXR1cm4gbnVsbFxufVxuXG5mdW5jdGlvbiBwYXJzZVRpbWV6b25lKHRpbWV6b25lU3RyaW5nOiBzdHJpbmcpIHtcbiAgbGV0IHRva2VuXG4gIGxldCBhYnNvbHV0ZU9mZnNldFxuXG4gIC8vIFpcbiAgdG9rZW4gPSBwYXJzZVRva2VuVGltZXpvbmVaLmV4ZWModGltZXpvbmVTdHJpbmcpXG4gIGlmICh0b2tlbikge1xuICAgIHJldHVybiAwXG4gIH1cblxuICAvLyDCsWhoXG4gIHRva2VuID0gcGFyc2VUb2tlblRpbWV6b25lSEguZXhlYyh0aW1lem9uZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgYWJzb2x1dGVPZmZzZXQgPSBwYXJzZUludCh0b2tlblsyXSwgMTApICogNjBcbiAgICByZXR1cm4gdG9rZW5bMV0gPT09ICcrJyA/IC1hYnNvbHV0ZU9mZnNldCA6IGFic29sdXRlT2Zmc2V0XG4gIH1cblxuICAvLyDCsWhoOm1tIG9yIMKxaGhtbVxuICB0b2tlbiA9IHBhcnNlVG9rZW5UaW1lem9uZUhITU0uZXhlYyh0aW1lem9uZVN0cmluZylcbiAgaWYgKHRva2VuKSB7XG4gICAgYWJzb2x1dGVPZmZzZXQgPSBwYXJzZUludCh0b2tlblsyXSwgMTApICogNjAgKyBwYXJzZUludCh0b2tlblszXSwgMTApXG4gICAgcmV0dXJuIHRva2VuWzFdID09PSAnKycgPyAtYWJzb2x1dGVPZmZzZXQgOiBhYnNvbHV0ZU9mZnNldFxuICB9XG5cbiAgcmV0dXJuIDBcbn1cblxuZnVuY3Rpb24gZGF5T2ZJU09ZZWFyKGlzb1llYXI6IG51bWJlciwgd2VlayA9IDAsIGRheSA9IDApIHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKDApXG4gIGRhdGUuc2V0VVRDRnVsbFllYXIoaXNvWWVhciwgMCwgNClcbiAgY29uc3QgZm91cnRoT2ZKYW51YXJ5RGF5ID0gZGF0ZS5nZXRVVENEYXkoKSB8fCA3XG4gIGNvbnN0IGRpZmYgPSB3ZWVrICogNyArIGRheSArIDEgLSBmb3VydGhPZkphbnVhcnlEYXlcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZilcbiAgcmV0dXJuIGRhdGVcbn1cblxuZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkaXJ0eURhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRpcnR5RGF0ZS5nZXRUaW1lKCkpXG4gIGNvbnN0IGJhc2VUaW1lem9uZU9mZnNldCA9IGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICBkYXRlLnNldFNlY29uZHMoMCwgMClcbiAgY29uc3QgbWlsbGlzZWNvbmRzUGFydE9mVGltZXpvbmVPZmZzZXQgPVxuICAgIGRhdGUuZ2V0VGltZSgpICUgTUlMTElTRUNPTkRTX0lOX01JTlVURVxuXG4gIHJldHVybiAoXG4gICAgYmFzZVRpbWV6b25lT2Zmc2V0ICogTUlMTElTRUNPTkRTX0lOX01JTlVURSArXG4gICAgbWlsbGlzZWNvbmRzUGFydE9mVGltZXpvbmVPZmZzZXRcbiAgKVxufSJdfQ==
|
|
@@ -353,24 +353,24 @@ const DATEFORMAT_VALUE_ACCESSOR = {
|
|
|
353
353
|
multi: true,
|
|
354
354
|
};
|
|
355
355
|
class NovoDateFormatDirective extends IMaskDirective {
|
|
356
|
-
constructor(labels) {
|
|
356
|
+
constructor(labels, dateFormatService) {
|
|
357
357
|
super();
|
|
358
358
|
this.labels = labels;
|
|
359
|
+
this.dateFormatService = dateFormatService;
|
|
359
360
|
this.valueChange = new EventEmitter();
|
|
360
361
|
this.dateFormat = DATE_FORMATS.DATE;
|
|
361
|
-
const dateFormat = this.labels.dateFormat.toUpperCase();
|
|
362
362
|
this.unmask = 'typed'; // typing is to work around angular-imask bug
|
|
363
363
|
this.imask = {
|
|
364
364
|
mask: Date,
|
|
365
|
-
pattern:
|
|
365
|
+
pattern: this.dateFormatService.dateFormatAsImaskPattern,
|
|
366
366
|
overwrite: true,
|
|
367
367
|
autofix: true,
|
|
368
368
|
lazy: false,
|
|
369
369
|
min: new Date(1900, 0, 1),
|
|
370
370
|
max: new Date(2100, 0, 1),
|
|
371
371
|
prepare: (str) => str.toUpperCase(),
|
|
372
|
-
format: (date) => this.formatValue(date),
|
|
373
|
-
parse: (str) => DateUtil.parse(str),
|
|
372
|
+
format: (date) => this.formatValue(date, { userDateFormat: this.labels.dateFormatString() }),
|
|
373
|
+
parse: (str) => DateUtil.parse(str, { userDateFormat: this.labels.dateFormatString().toUpperCase() }),
|
|
374
374
|
blocks: {
|
|
375
375
|
d: {
|
|
376
376
|
mask: MaskedRange,
|
|
@@ -396,11 +396,11 @@ class NovoDateFormatDirective extends IMaskDirective {
|
|
|
396
396
|
};
|
|
397
397
|
}
|
|
398
398
|
normalize(value) {
|
|
399
|
-
const pattern = this.labels.
|
|
399
|
+
const pattern = this.labels.dateFormatString().toUpperCase();
|
|
400
400
|
if (!value) {
|
|
401
401
|
return "";
|
|
402
402
|
}
|
|
403
|
-
return DateUtil.format(DateUtil.parse(value), pattern);
|
|
403
|
+
return DateUtil.format(DateUtil.parse(value, { userDateFormat: this.labels.dateFormatString() }), pattern);
|
|
404
404
|
}
|
|
405
405
|
formatAsIso(date) {
|
|
406
406
|
if (date && isValid(date)) {
|
|
@@ -408,19 +408,25 @@ class NovoDateFormatDirective extends IMaskDirective {
|
|
|
408
408
|
}
|
|
409
409
|
return null;
|
|
410
410
|
}
|
|
411
|
-
formatValue(value) {
|
|
411
|
+
formatValue(value, options) {
|
|
412
412
|
if (value == null)
|
|
413
413
|
return '';
|
|
414
|
-
|
|
415
|
-
const date = DateUtil.parse(value);
|
|
414
|
+
const dateFormat = this.labels.dateFormatString().toUpperCase();
|
|
415
|
+
const date = DateUtil.parse(value, options);
|
|
416
416
|
if (isValid(date)) {
|
|
417
|
-
const dateFormat = this.labels.dateFormat.toUpperCase();
|
|
418
417
|
return DateUtil.format(date, dateFormat);
|
|
419
418
|
}
|
|
420
419
|
return this.normalize(value);
|
|
421
420
|
}
|
|
422
421
|
writeValue(value) {
|
|
423
|
-
|
|
422
|
+
const initialValue = this['_initialValue'];
|
|
423
|
+
if (initialValue != null && value === initialValue) {
|
|
424
|
+
// This value has already been formatted from the first call to writeValue, simply use it.
|
|
425
|
+
super.writeValue(initialValue);
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
super.writeValue(this.formatValue(value));
|
|
429
|
+
}
|
|
424
430
|
}
|
|
425
431
|
registerOnChange(fn) {
|
|
426
432
|
this.onChange = (date) => {
|
|
@@ -440,7 +446,7 @@ class NovoDateFormatDirective extends IMaskDirective {
|
|
|
440
446
|
fn(formatted);
|
|
441
447
|
};
|
|
442
448
|
}
|
|
443
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateFormatDirective, deps: [{ token: i1$2.NovoLabelService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
449
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateFormatDirective, deps: [{ token: i1$2.NovoLabelService }, { token: i1$2.DateFormatService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
444
450
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NovoDateFormatDirective, selector: "input[dateFormat]", inputs: { dateFormat: "dateFormat" }, host: { classAttribute: "novo-date-format" }, providers: [DATEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateFormatDirective }], usesInheritance: true, ngImport: i0 }); }
|
|
445
451
|
}
|
|
446
452
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateFormatDirective, decorators: [{
|
|
@@ -452,7 +458,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
452
458
|
},
|
|
453
459
|
providers: [DATEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateFormatDirective }],
|
|
454
460
|
}]
|
|
455
|
-
}], ctorParameters: () => [{ type: i1$2.NovoLabelService }], propDecorators: { dateFormat: [{
|
|
461
|
+
}], ctorParameters: () => [{ type: i1$2.NovoLabelService }, { type: i1$2.DateFormatService }], propDecorators: { dateFormat: [{
|
|
456
462
|
type: Input
|
|
457
463
|
}] } });
|
|
458
464
|
|
|
@@ -461,44 +467,16 @@ const DATERANGEFORMAT_VALUE_ACCESSOR = {
|
|
|
461
467
|
useExisting: forwardRef(() => NovoDateRangeFormatDirective),
|
|
462
468
|
multi: true,
|
|
463
469
|
};
|
|
464
|
-
const imaskHaha = {
|
|
465
|
-
mask: 'm{/}`d{/}`Y - m{/}`d{/}`Y',
|
|
466
|
-
overwrite: true,
|
|
467
|
-
autofix: true,
|
|
468
|
-
lazy: false,
|
|
469
|
-
blocks: {
|
|
470
|
-
d: {
|
|
471
|
-
mask: MaskedRange,
|
|
472
|
-
placeholderChar: 'D',
|
|
473
|
-
from: 1,
|
|
474
|
-
to: 31,
|
|
475
|
-
maxLength: 2,
|
|
476
|
-
},
|
|
477
|
-
m: {
|
|
478
|
-
mask: MaskedRange,
|
|
479
|
-
placeholderChar: 'M',
|
|
480
|
-
from: 1,
|
|
481
|
-
to: 12,
|
|
482
|
-
maxLength: 2,
|
|
483
|
-
},
|
|
484
|
-
Y: {
|
|
485
|
-
mask: MaskedRange,
|
|
486
|
-
placeholderChar: 'Y',
|
|
487
|
-
from: 1900,
|
|
488
|
-
to: 9999,
|
|
489
|
-
},
|
|
490
|
-
},
|
|
491
|
-
};
|
|
492
470
|
class NovoDateRangeFormatDirective extends IMaskDirective {
|
|
493
|
-
constructor(labels) {
|
|
471
|
+
constructor(labels, dateFormat) {
|
|
494
472
|
super();
|
|
495
473
|
this.labels = labels;
|
|
474
|
+
this.dateFormat = dateFormat;
|
|
496
475
|
this.valueChange = new EventEmitter();
|
|
497
476
|
this.dateRangeFormat = DATE_FORMATS.DATE;
|
|
498
|
-
const dateRangeFormat = this.labels.dateFormat.toUpperCase();
|
|
499
477
|
this.unmask = false;
|
|
500
478
|
this.imask = {
|
|
501
|
-
mask:
|
|
479
|
+
mask: `${this.dateFormat.dateFormatAsImaskPattern} - ${this.dateFormat.dateFormatAsImaskPattern}`,
|
|
502
480
|
overwrite: true,
|
|
503
481
|
autofix: true,
|
|
504
482
|
lazy: false,
|
|
@@ -526,9 +504,9 @@ class NovoDateRangeFormatDirective extends IMaskDirective {
|
|
|
526
504
|
},
|
|
527
505
|
};
|
|
528
506
|
}
|
|
529
|
-
normalize(value) {
|
|
530
|
-
const pattern = this.labels.
|
|
531
|
-
return DateUtil.format(value ? DateUtil.parse(value) : null, pattern);
|
|
507
|
+
normalize(value, options) {
|
|
508
|
+
const pattern = this.labels.dateFormatString().toUpperCase();
|
|
509
|
+
return DateUtil.format(value ? DateUtil.parse(value, options) : null, pattern);
|
|
532
510
|
}
|
|
533
511
|
formatAsIso(value) {
|
|
534
512
|
if (!value)
|
|
@@ -548,9 +526,9 @@ class NovoDateRangeFormatDirective extends IMaskDirective {
|
|
|
548
526
|
return `${this.formatDate(startDate)} - ${this.formatDate(endDate)}`;
|
|
549
527
|
}
|
|
550
528
|
formatDate(source) {
|
|
529
|
+
const dateRangeFormat = this.labels.dateFormatString().toUpperCase();
|
|
551
530
|
const date = DateUtil.parse(source);
|
|
552
531
|
if (isValid(date)) {
|
|
553
|
-
const dateRangeFormat = this.labels.dateFormat.toUpperCase();
|
|
554
532
|
return DateUtil.format(date, dateRangeFormat);
|
|
555
533
|
}
|
|
556
534
|
return this.normalize(source);
|
|
@@ -592,15 +570,15 @@ class NovoDateRangeFormatDirective extends IMaskDirective {
|
|
|
592
570
|
}
|
|
593
571
|
extractDatesFromInput(value) {
|
|
594
572
|
const [startStr, endStr] = value.split(' - ');
|
|
595
|
-
const startDate = DateUtil.parse(startStr);
|
|
596
|
-
const endDate = DateUtil.parse(endStr);
|
|
573
|
+
const startDate = DateUtil.parse(startStr, { userDateFormat: this.labels.dateFormatString() });
|
|
574
|
+
const endDate = DateUtil.parse(endStr, { userDateFormat: this.labels.dateFormatString() });
|
|
597
575
|
return { startDate, endDate };
|
|
598
576
|
}
|
|
599
577
|
validate(dateStr) {
|
|
600
578
|
const { startDate, endDate } = this.extractDatesFromInput(dateStr);
|
|
601
579
|
return isValid(startDate) && isValid(endDate);
|
|
602
580
|
}
|
|
603
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateRangeFormatDirective, deps: [{ token: i1$2.NovoLabelService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
581
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateRangeFormatDirective, deps: [{ token: i1$2.NovoLabelService }, { token: i1$2.DateFormatService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
604
582
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NovoDateRangeFormatDirective, selector: "input[dateRangeFormat]", inputs: { dateRangeFormat: "dateRangeFormat" }, host: { classAttribute: "novo-date-range-format" }, providers: [DATERANGEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateRangeFormatDirective }], usesInheritance: true, ngImport: i0 }); }
|
|
605
583
|
}
|
|
606
584
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateRangeFormatDirective, decorators: [{
|
|
@@ -612,7 +590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
612
590
|
},
|
|
613
591
|
providers: [DATERANGEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateRangeFormatDirective }],
|
|
614
592
|
}]
|
|
615
|
-
}], ctorParameters: () => [{ type: i1$2.NovoLabelService }], propDecorators: { dateRangeFormat: [{
|
|
593
|
+
}], ctorParameters: () => [{ type: i1$2.NovoLabelService }, { type: i1$2.DateFormatService }], propDecorators: { dateRangeFormat: [{
|
|
616
594
|
type: Input
|
|
617
595
|
}] } });
|
|
618
596
|
|
|
@@ -622,9 +600,10 @@ const DATETIMEFORMAT_VALUE_ACCESSOR = {
|
|
|
622
600
|
multi: true,
|
|
623
601
|
};
|
|
624
602
|
class NovoDateTimeFormatDirective extends IMaskDirective {
|
|
625
|
-
constructor(labels) {
|
|
603
|
+
constructor(labels, dateFormat) {
|
|
626
604
|
super();
|
|
627
605
|
this.labels = labels;
|
|
606
|
+
this.dateFormat = dateFormat;
|
|
628
607
|
this.valueChange = new EventEmitter();
|
|
629
608
|
this.military = false;
|
|
630
609
|
this.dateTimeFormat = DATE_FORMATS.DATE;
|
|
@@ -634,17 +613,21 @@ class NovoDateTimeFormatDirective extends IMaskDirective {
|
|
|
634
613
|
const amFormat = this.labels.timeFormatAM.toUpperCase();
|
|
635
614
|
const pmFormat = this.labels.timeFormatPM.toUpperCase();
|
|
636
615
|
this.unmask = 'typed'; // typing is to work around angular-imask bug
|
|
616
|
+
let pattern = `${this.dateFormat.dateFormatAsImaskPattern}, HH:mm`;
|
|
617
|
+
if (!this.military) {
|
|
618
|
+
pattern += ' aa';
|
|
619
|
+
}
|
|
637
620
|
this.imask = {
|
|
638
621
|
mask: Date,
|
|
639
|
-
pattern
|
|
622
|
+
pattern,
|
|
640
623
|
overwrite: true,
|
|
641
624
|
autofix: true,
|
|
642
625
|
lazy: false,
|
|
643
626
|
min: new Date(1900, 0, 1),
|
|
644
627
|
max: new Date(2100, 0, 1),
|
|
645
628
|
prepare: (str) => str.toUpperCase(),
|
|
646
|
-
format: (date) => this.formatValue(date),
|
|
647
|
-
parse: (str) => DateUtil.parse(str),
|
|
629
|
+
format: (date) => this.formatValue(date, { userDateFormat: this.labels.dateFormatString() }),
|
|
630
|
+
parse: (str) => DateUtil.parse(str, { userDateFormat: this.labels.dateFormatString().toUpperCase() }),
|
|
648
631
|
blocks: {
|
|
649
632
|
d: {
|
|
650
633
|
mask: MaskedRange,
|
|
@@ -764,9 +747,9 @@ class NovoDateTimeFormatDirective extends IMaskDirective {
|
|
|
764
747
|
input.setSelectionRange(14, 14);
|
|
765
748
|
}
|
|
766
749
|
}
|
|
767
|
-
normalize(value) {
|
|
768
|
-
const pattern = this.labels.
|
|
769
|
-
return DateUtil.format(value ? DateUtil.parse(value) : null, pattern);
|
|
750
|
+
normalize(value, options) {
|
|
751
|
+
const pattern = this.labels.dateFormatString().toUpperCase();
|
|
752
|
+
return DateUtil.format(value ? DateUtil.parse(value, options) : null, pattern);
|
|
770
753
|
}
|
|
771
754
|
formatAsIso(date) {
|
|
772
755
|
if (date && isValid(date)) {
|
|
@@ -793,23 +776,30 @@ class NovoDateTimeFormatDirective extends IMaskDirective {
|
|
|
793
776
|
}
|
|
794
777
|
return time24h;
|
|
795
778
|
}
|
|
796
|
-
formatValue(value) {
|
|
779
|
+
formatValue(value, options) {
|
|
797
780
|
if (value == null)
|
|
798
781
|
return '';
|
|
799
782
|
// Use `parse` because it keeps dates in locale
|
|
800
|
-
const date = DateUtil.parse(value);
|
|
783
|
+
const date = DateUtil.parse(value, options);
|
|
801
784
|
if (isValid(date)) {
|
|
802
|
-
const dateFormat = `${this.labels.
|
|
785
|
+
const dateFormat = `${this.labels.dateFormatString().toUpperCase()}, ${this.military ? 'HH:mm' : 'hh:mm A'}`;
|
|
803
786
|
return DateUtil.format(date, dateFormat);
|
|
804
787
|
}
|
|
805
|
-
return this.normalize(value);
|
|
788
|
+
return this.normalize(value, options);
|
|
806
789
|
}
|
|
807
790
|
writeValue(value) {
|
|
808
|
-
|
|
791
|
+
const initialValue = this['_initialValue'];
|
|
792
|
+
if (initialValue != null && value === initialValue) {
|
|
793
|
+
// This value has already been formatted from the first call to writeValue, simply use it.
|
|
794
|
+
super.writeValue(initialValue);
|
|
795
|
+
}
|
|
796
|
+
else {
|
|
797
|
+
super.writeValue(this.formatValue(value));
|
|
798
|
+
}
|
|
809
799
|
}
|
|
810
800
|
registerOnChange(fn) {
|
|
811
801
|
this.onChange = (date) => {
|
|
812
|
-
let formatted
|
|
802
|
+
let formatted;
|
|
813
803
|
switch (this.dateTimeFormat) {
|
|
814
804
|
case DATE_FORMATS.ISO8601:
|
|
815
805
|
formatted = this.formatAsIso(date);
|
|
@@ -828,7 +818,7 @@ class NovoDateTimeFormatDirective extends IMaskDirective {
|
|
|
828
818
|
hourOneFormatRequired(hourInput) {
|
|
829
819
|
return hourInput === '-1' || hourInput === '1-';
|
|
830
820
|
}
|
|
831
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateTimeFormatDirective, deps: [{ token: i1$2.NovoLabelService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
821
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateTimeFormatDirective, deps: [{ token: i1$2.NovoLabelService }, { token: i1$2.DateFormatService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
832
822
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NovoDateTimeFormatDirective, selector: "input[dateTimeFormat]", inputs: { military: "military", dateTimeFormat: "dateTimeFormat" }, host: { listeners: { "input": "_checkInput($event)", "blur": "_handleBlur($event)", "keydown": "_handleKeydown($event)" }, classAttribute: "novo-date-time-format" }, providers: [DATETIMEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateTimeFormatDirective }], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
833
823
|
}
|
|
834
824
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NovoDateTimeFormatDirective, decorators: [{
|
|
@@ -843,7 +833,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
843
833
|
},
|
|
844
834
|
providers: [DATETIMEFORMAT_VALUE_ACCESSOR, { provide: NOVO_INPUT_FORMAT, useExisting: NovoDateTimeFormatDirective }],
|
|
845
835
|
}]
|
|
846
|
-
}], ctorParameters: () => [{ type: i1$2.NovoLabelService }], propDecorators: { military: [{
|
|
836
|
+
}], ctorParameters: () => [{ type: i1$2.NovoLabelService }, { type: i1$2.DateFormatService }], propDecorators: { military: [{
|
|
847
837
|
type: Input
|
|
848
838
|
}], dateTimeFormat: [{
|
|
849
839
|
type: Input
|
|
@@ -1689,5 +1679,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
1689
1679
|
* Generated bundle index. Do not edit.
|
|
1690
1680
|
*/
|
|
1691
1681
|
|
|
1692
|
-
export { DATEFORMAT_VALUE_ACCESSOR, DATERANGEFORMAT_VALUE_ACCESSOR, DATETIMEFORMAT_VALUE_ACCESSOR, DATE_FORMATS, NOVO_FORM_FIELD, NOVO_INPUT_FORMAT, NOVO_INPUT_VALUE_ACCESSOR, NovoDateFormatDirective, NovoDateRangeFormatDirective, NovoDateTimeFormatDirective, NovoErrorElement, NovoFieldControl, NovoFieldElement, NovoFieldModule, NovoFieldPrefixDirective, NovoFieldSuffixDirective, NovoFieldsElement, NovoHintElement, NovoInput, NovoPickerDirective, NovoPickerToggleElement, NovoTimeFormatDirective, TIMEFORMAT_VALUE_ACCESSOR, TIME_FORMATS
|
|
1682
|
+
export { DATEFORMAT_VALUE_ACCESSOR, DATERANGEFORMAT_VALUE_ACCESSOR, DATETIMEFORMAT_VALUE_ACCESSOR, DATE_FORMATS, NOVO_FORM_FIELD, NOVO_INPUT_FORMAT, NOVO_INPUT_VALUE_ACCESSOR, NovoDateFormatDirective, NovoDateRangeFormatDirective, NovoDateTimeFormatDirective, NovoErrorElement, NovoFieldControl, NovoFieldElement, NovoFieldModule, NovoFieldPrefixDirective, NovoFieldSuffixDirective, NovoFieldsElement, NovoHintElement, NovoInput, NovoPickerDirective, NovoPickerToggleElement, NovoTimeFormatDirective, TIMEFORMAT_VALUE_ACCESSOR, TIME_FORMATS };
|
|
1693
1683
|
//# sourceMappingURL=novo-elements-elements-field.mjs.map
|