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.
@@ -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: 'm{/}`d{/}`Y',
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.dateFormat.toUpperCase();
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
- // Use `parse` because it keeps dates in locale
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
- super.writeValue(this.formatValue(value));
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: 'm{/}`d{/}`Y - m{/}`d{/}`Y',
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.dateFormat.toUpperCase();
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: this.military ? 'm{/}`d{/}`Y, HH:mm' : 'm{/}`d{/}`Y, HH:mm aa',
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.dateFormat.toUpperCase();
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.dateFormat.toUpperCase()}, ${this.military ? 'HH:mm' : 'hh:mm A'}`;
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
- super.writeValue(this.formatValue(value));
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 = date;
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, imaskHaha };
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