{"version":3,"file":"tempusdominus-bootstrap-4-CEL7SY4C.js","sources":["../../../node_modules/tempusdominus-bootstrap-4/build/js/tempusdominus-bootstrap-4.js"],"sourcesContent":["/*!@preserve\r\n * Tempus Dominus Bootstrap4 v5.39.0 (https://tempusdominus.github.io/bootstrap-4/)\r\n * Copyright 2016-2020 Jonathan Peterson and contributors\r\n * Licensed under MIT (https://github.com/tempusdominus/bootstrap-3/blob/master/LICENSE)\r\n */\r\n\r\nif (typeof jQuery === 'undefined') {\r\n  throw new Error('Tempus Dominus Bootstrap4\\'s requires jQuery. jQuery must be included before Tempus Dominus Bootstrap4\\'s JavaScript.');\r\n}\r\n\r\n+function ($) {\r\n  var version = $.fn.jquery.split(' ')[0].split('.');\r\n  if ((version[0] < 2 && version[1] < 9) || (version[0] === 1 && version[1] === 9 && version[2] < 1) || (version[0] >= 4)) {\r\n    throw new Error('Tempus Dominus Bootstrap4\\'s requires at least jQuery v3.0.0 but less than v4.0.0');\r\n  }\r\n}(jQuery);\r\n\r\n\r\nif (typeof moment === 'undefined') {\r\n  throw new Error('Tempus Dominus Bootstrap4\\'s requires moment.js. Moment.js must be included before Tempus Dominus Bootstrap4\\'s JavaScript.');\r\n}\r\n\r\nvar version = moment.version.split('.')\r\nif ((version[0] <= 2 && version[1] < 17) || (version[0] >= 3)) {\r\n  throw new Error('Tempus Dominus Bootstrap4\\'s requires at least moment.js v2.17.0 but less than v3.0.0');\r\n}\r\n\r\n+function () {\r\n\r\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\r\n\r\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\r\n\r\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\r\n\r\n// ReSharper disable once InconsistentNaming\r\nvar DateTimePicker = function ($, moment) {\r\n  function escapeRegExp(text) {\r\n    return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n  }\r\n\r\n  function isValidDate(date) {\r\n    return Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());\r\n  }\r\n\r\n  function isValidDateTimeStr(str) {\r\n    return isValidDate(new Date(str));\r\n  } // ReSharper disable InconsistentNaming\r\n\r\n\r\n  var trim = function trim(str) {\r\n    return str.replace(/(^\\s+)|(\\s+$)/g, '');\r\n  },\r\n      NAME = 'datetimepicker',\r\n      DATA_KEY = \"\" + NAME,\r\n      EVENT_KEY = \".\" + DATA_KEY,\r\n      DATA_API_KEY = '.data-api',\r\n      Selector = {\r\n    DATA_TOGGLE: \"[data-toggle=\\\"\" + DATA_KEY + \"\\\"]\"\r\n  },\r\n      ClassName = {\r\n    INPUT: NAME + \"-input\"\r\n  },\r\n      Event = {\r\n    CHANGE: \"change\" + EVENT_KEY,\r\n    BLUR: \"blur\" + EVENT_KEY,\r\n    KEYUP: \"keyup\" + EVENT_KEY,\r\n    KEYDOWN: \"keydown\" + EVENT_KEY,\r\n    FOCUS: \"focus\" + EVENT_KEY,\r\n    CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY,\r\n    //emitted\r\n    UPDATE: \"update\" + EVENT_KEY,\r\n    ERROR: \"error\" + EVENT_KEY,\r\n    HIDE: \"hide\" + EVENT_KEY,\r\n    SHOW: \"show\" + EVENT_KEY\r\n  },\r\n      DatePickerModes = [{\r\n    CLASS_NAME: 'days',\r\n    NAV_FUNCTION: 'M',\r\n    NAV_STEP: 1\r\n  }, {\r\n    CLASS_NAME: 'months',\r\n    NAV_FUNCTION: 'y',\r\n    NAV_STEP: 1\r\n  }, {\r\n    CLASS_NAME: 'years',\r\n    NAV_FUNCTION: 'y',\r\n    NAV_STEP: 10\r\n  }, {\r\n    CLASS_NAME: 'decades',\r\n    NAV_FUNCTION: 'y',\r\n    NAV_STEP: 100\r\n  }],\r\n      KeyMap = {\r\n    'up': 38,\r\n    38: 'up',\r\n    'down': 40,\r\n    40: 'down',\r\n    'left': 37,\r\n    37: 'left',\r\n    'right': 39,\r\n    39: 'right',\r\n    'tab': 9,\r\n    9: 'tab',\r\n    'escape': 27,\r\n    27: 'escape',\r\n    'enter': 13,\r\n    13: 'enter',\r\n    'pageUp': 33,\r\n    33: 'pageUp',\r\n    'pageDown': 34,\r\n    34: 'pageDown',\r\n    'shift': 16,\r\n    16: 'shift',\r\n    'control': 17,\r\n    17: 'control',\r\n    'space': 32,\r\n    32: 'space',\r\n    't': 84,\r\n    84: 't',\r\n    'delete': 46,\r\n    46: 'delete'\r\n  },\r\n      ViewModes = ['times', 'days', 'months', 'years', 'decades'],\r\n      keyState = {},\r\n      keyPressHandled = {},\r\n      optionsSortMap = {\r\n    timeZone: -39,\r\n    format: -38,\r\n    dayViewHeaderFormat: -37,\r\n    extraFormats: -36,\r\n    stepping: -35,\r\n    minDate: -34,\r\n    maxDate: -33,\r\n    useCurrent: -32,\r\n    collapse: -31,\r\n    locale: -30,\r\n    defaultDate: -29,\r\n    disabledDates: -28,\r\n    enabledDates: -27,\r\n    icons: -26,\r\n    tooltips: -25,\r\n    useStrict: -24,\r\n    sideBySide: -23,\r\n    daysOfWeekDisabled: -22,\r\n    calendarWeeks: -21,\r\n    viewMode: -20,\r\n    toolbarPlacement: -19,\r\n    buttons: -18,\r\n    widgetPositioning: -17,\r\n    widgetParent: -16,\r\n    ignoreReadonly: -15,\r\n    keepOpen: -14,\r\n    focusOnShow: -13,\r\n    inline: -12,\r\n    keepInvalid: -11,\r\n    keyBinds: -10,\r\n    debug: -9,\r\n    allowInputToggle: -8,\r\n    disabledTimeIntervals: -7,\r\n    disabledHours: -6,\r\n    enabledHours: -5,\r\n    viewDate: -4,\r\n    allowMultidate: -3,\r\n    multidateSeparator: -2,\r\n    updateOnlyThroughDateOption: -1,\r\n    date: 1\r\n  },\r\n      defaultFeatherIcons = {\r\n    time: 'clock',\r\n    date: 'calendar',\r\n    up: 'arrow-up',\r\n    down: 'arrow-down',\r\n    previous: 'arrow-left',\r\n    next: 'arrow-right',\r\n    today: 'arrow-down-circle',\r\n    clear: 'trash-2',\r\n    close: 'x'\r\n  };\r\n\r\n  function optionsSortFn(optionKeyA, optionKeyB) {\r\n    if (optionsSortMap[optionKeyA] && optionsSortMap[optionKeyB]) {\r\n      if (optionsSortMap[optionKeyA] < 0 && optionsSortMap[optionKeyB] < 0) {\r\n        return Math.abs(optionsSortMap[optionKeyB]) - Math.abs(optionsSortMap[optionKeyA]);\r\n      } else if (optionsSortMap[optionKeyA] < 0) {\r\n        return -1;\r\n      } else if (optionsSortMap[optionKeyB] < 0) {\r\n        return 1;\r\n      }\r\n\r\n      return optionsSortMap[optionKeyA] - optionsSortMap[optionKeyB];\r\n    } else if (optionsSortMap[optionKeyA]) {\r\n      return optionsSortMap[optionKeyA];\r\n    } else if (optionsSortMap[optionKeyB]) {\r\n      return optionsSortMap[optionKeyB];\r\n    }\r\n\r\n    return 0;\r\n  }\r\n\r\n  var Default = {\r\n    timeZone: '',\r\n    format: false,\r\n    dayViewHeaderFormat: 'MMMM YYYY',\r\n    extraFormats: false,\r\n    stepping: 1,\r\n    minDate: false,\r\n    maxDate: false,\r\n    useCurrent: true,\r\n    collapse: true,\r\n    locale: moment.locale(),\r\n    defaultDate: false,\r\n    disabledDates: false,\r\n    enabledDates: false,\r\n    icons: {\r\n      type: 'class',\r\n      time: 'fa fa-clock-o',\r\n      date: 'fa fa-calendar',\r\n      up: 'fa fa-arrow-up',\r\n      down: 'fa fa-arrow-down',\r\n      previous: 'fa fa-chevron-left',\r\n      next: 'fa fa-chevron-right',\r\n      today: 'fa fa-calendar-check-o',\r\n      clear: 'fa fa-trash',\r\n      close: 'fa fa-times'\r\n    },\r\n    tooltips: {\r\n      today: 'Go to today',\r\n      clear: 'Clear selection',\r\n      close: 'Close the picker',\r\n      selectMonth: 'Select Month',\r\n      prevMonth: 'Previous Month',\r\n      nextMonth: 'Next Month',\r\n      selectYear: 'Select Year',\r\n      prevYear: 'Previous Year',\r\n      nextYear: 'Next Year',\r\n      selectDecade: 'Select Decade',\r\n      prevDecade: 'Previous Decade',\r\n      nextDecade: 'Next Decade',\r\n      prevCentury: 'Previous Century',\r\n      nextCentury: 'Next Century',\r\n      pickHour: 'Pick Hour',\r\n      incrementHour: 'Increment Hour',\r\n      decrementHour: 'Decrement Hour',\r\n      pickMinute: 'Pick Minute',\r\n      incrementMinute: 'Increment Minute',\r\n      decrementMinute: 'Decrement Minute',\r\n      pickSecond: 'Pick Second',\r\n      incrementSecond: 'Increment Second',\r\n      decrementSecond: 'Decrement Second',\r\n      togglePeriod: 'Toggle Period',\r\n      selectTime: 'Select Time',\r\n      selectDate: 'Select Date'\r\n    },\r\n    useStrict: false,\r\n    sideBySide: false,\r\n    daysOfWeekDisabled: false,\r\n    calendarWeeks: false,\r\n    viewMode: 'days',\r\n    toolbarPlacement: 'default',\r\n    buttons: {\r\n      showToday: false,\r\n      showClear: false,\r\n      showClose: false\r\n    },\r\n    widgetPositioning: {\r\n      horizontal: 'auto',\r\n      vertical: 'auto'\r\n    },\r\n    widgetParent: null,\r\n    readonly: false,\r\n    ignoreReadonly: false,\r\n    keepOpen: false,\r\n    focusOnShow: true,\r\n    inline: false,\r\n    keepInvalid: false,\r\n    keyBinds: {\r\n      up: function up() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        var d = this._dates[0] || this.getMoment();\r\n\r\n        if (this.widget.find('.datepicker').is(':visible')) {\r\n          this.date(d.clone().subtract(7, 'd'));\r\n        } else {\r\n          this.date(d.clone().add(this.stepping(), 'm'));\r\n        }\r\n\r\n        return true;\r\n      },\r\n      down: function down() {\r\n        if (!this.widget) {\r\n          this.show();\r\n          return false;\r\n        }\r\n\r\n        var d = this._dates[0] || this.getMoment();\r\n\r\n        if (this.widget.find('.datepicker').is(':visible')) {\r\n          this.date(d.clone().add(7, 'd'));\r\n        } else {\r\n          this.date(d.clone().subtract(this.stepping(), 'm'));\r\n        }\r\n\r\n        return true;\r\n      },\r\n      'control up': function controlUp() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        var d = this._dates[0] || this.getMoment();\r\n\r\n        if (this.widget.find('.datepicker').is(':visible')) {\r\n          this.date(d.clone().subtract(1, 'y'));\r\n        } else {\r\n          this.date(d.clone().add(1, 'h'));\r\n        }\r\n\r\n        return true;\r\n      },\r\n      'control down': function controlDown() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        var d = this._dates[0] || this.getMoment();\r\n\r\n        if (this.widget.find('.datepicker').is(':visible')) {\r\n          this.date(d.clone().add(1, 'y'));\r\n        } else {\r\n          this.date(d.clone().subtract(1, 'h'));\r\n        }\r\n\r\n        return true;\r\n      },\r\n      left: function left() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        var d = this._dates[0] || this.getMoment();\r\n\r\n        if (this.widget.find('.datepicker').is(':visible')) {\r\n          this.date(d.clone().subtract(1, 'd'));\r\n        }\r\n\r\n        return true;\r\n      },\r\n      right: function right() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        var d = this._dates[0] || this.getMoment();\r\n\r\n        if (this.widget.find('.datepicker').is(':visible')) {\r\n          this.date(d.clone().add(1, 'd'));\r\n        }\r\n\r\n        return true;\r\n      },\r\n      pageUp: function pageUp() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        var d = this._dates[0] || this.getMoment();\r\n\r\n        if (this.widget.find('.datepicker').is(':visible')) {\r\n          this.date(d.clone().subtract(1, 'M'));\r\n        }\r\n\r\n        return true;\r\n      },\r\n      pageDown: function pageDown() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        var d = this._dates[0] || this.getMoment();\r\n\r\n        if (this.widget.find('.datepicker').is(':visible')) {\r\n          this.date(d.clone().add(1, 'M'));\r\n        }\r\n\r\n        return true;\r\n      },\r\n      enter: function enter() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        this.hide();\r\n        return true;\r\n      },\r\n      escape: function escape() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        this.hide();\r\n        return true;\r\n      },\r\n      'control space': function controlSpace() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        if (this.widget.find('.timepicker').is(':visible')) {\r\n          this.widget.find('.btn[data-action=\"togglePeriod\"]').click();\r\n        }\r\n\r\n        return true;\r\n      },\r\n      t: function t() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        this.date(this.getMoment());\r\n        return true;\r\n      },\r\n      'delete': function _delete() {\r\n        if (!this.widget) {\r\n          return false;\r\n        }\r\n\r\n        this.clear();\r\n        return true;\r\n      }\r\n    },\r\n    debug: false,\r\n    allowInputToggle: false,\r\n    disabledTimeIntervals: false,\r\n    disabledHours: false,\r\n    enabledHours: false,\r\n    viewDate: false,\r\n    allowMultidate: false,\r\n    multidateSeparator: ', ',\r\n    updateOnlyThroughDateOption: false,\r\n    promptTimeOnDateChange: false,\r\n    promptTimeOnDateChangeTransitionDelay: 200\r\n  }; // ReSharper restore InconsistentNaming\r\n  // ReSharper disable once DeclarationHides\r\n  // ReSharper disable once InconsistentNaming\r\n\r\n  var DateTimePicker = /*#__PURE__*/function () {\r\n    /** @namespace eData.dateOptions */\r\n\r\n    /** @namespace moment.tz */\r\n    function DateTimePicker(element, options) {\r\n      this._options = this._getOptions(options);\r\n      this._element = element;\r\n      this._dates = [];\r\n      this._datesFormatted = [];\r\n      this._viewDate = null;\r\n      this.unset = true;\r\n      this.component = false;\r\n      this.widget = false;\r\n      this.use24Hours = null;\r\n      this.actualFormat = null;\r\n      this.parseFormats = null;\r\n      this.currentViewMode = null;\r\n      this.MinViewModeNumber = 0;\r\n      this.isInitFormatting = false;\r\n      this.isInit = false;\r\n      this.isDateUpdateThroughDateOptionFromClientCode = false;\r\n      this.hasInitDate = false;\r\n      this.initDate = void 0;\r\n      this._notifyChangeEventContext = void 0;\r\n      this._currentPromptTimeTimeout = null;\r\n\r\n      this._int();\r\n    }\r\n    /**\r\n     * @return {string}\r\n     */\r\n\r\n\r\n    var _proto = DateTimePicker.prototype;\r\n\r\n    //private\r\n    _proto._int = function _int() {\r\n      this.isInit = true;\r\n\r\n      var targetInput = this._element.data('target-input');\r\n\r\n      if (this._element.is('input')) {\r\n        this.input = this._element;\r\n      } else if (targetInput !== undefined) {\r\n        if (targetInput === 'nearest') {\r\n          this.input = this._element.find('input');\r\n        } else {\r\n          this.input = $(targetInput);\r\n        }\r\n      }\r\n\r\n      this._dates = [];\r\n      this._dates[0] = this.getMoment();\r\n      this._viewDate = this.getMoment().clone();\r\n      $.extend(true, this._options, this._dataToOptions());\r\n      this.hasInitDate = false;\r\n      this.initDate = void 0;\r\n      this.options(this._options);\r\n      this.isInitFormatting = true;\r\n\r\n      this._initFormatting();\r\n\r\n      this.isInitFormatting = false;\r\n\r\n      if (this.input !== undefined && this.input.is('input') && this.input.val().trim().length !== 0) {\r\n        this._setValue(this._parseInputDate(this.input.val().trim()), 0);\r\n      } else if (this._options.defaultDate && this.input !== undefined && this.input.attr('placeholder') === undefined) {\r\n        this._setValue(this._options.defaultDate, 0);\r\n      }\r\n\r\n      if (this.hasInitDate) {\r\n        this.date(this.initDate);\r\n      }\r\n\r\n      if (this._options.inline) {\r\n        this.show();\r\n      }\r\n\r\n      this.isInit = false;\r\n    };\r\n\r\n    _proto._update = function _update() {\r\n      if (!this.widget) {\r\n        return;\r\n      }\r\n\r\n      this._fillDate();\r\n\r\n      this._fillTime();\r\n    };\r\n\r\n    _proto._setValue = function _setValue(targetMoment, index) {\r\n      var noIndex = typeof index === 'undefined',\r\n          isClear = !targetMoment && noIndex,\r\n          isDateUpdateThroughDateOptionFromClientCode = this.isDateUpdateThroughDateOptionFromClientCode,\r\n          isNotAllowedProgrammaticUpdate = !this.isInit && this._options.updateOnlyThroughDateOption && !isDateUpdateThroughDateOptionFromClientCode;\r\n      var outpValue = '',\r\n          isInvalid = false,\r\n          oldDate = this.unset ? null : this._dates[index];\r\n\r\n      if (!oldDate && !this.unset && noIndex && isClear) {\r\n        oldDate = this._dates[this._dates.length - 1];\r\n      } // case of calling setValue(null or false)\r\n\r\n\r\n      if (!targetMoment) {\r\n        if (isNotAllowedProgrammaticUpdate) {\r\n          this._notifyEvent({\r\n            type: DateTimePicker.Event.CHANGE,\r\n            date: targetMoment,\r\n            oldDate: oldDate,\r\n            isClear: isClear,\r\n            isInvalid: isInvalid,\r\n            isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\r\n            isInit: this.isInit\r\n          });\r\n\r\n          return;\r\n        }\r\n\r\n        if (!this._options.allowMultidate || this._dates.length === 1 || isClear) {\r\n          this.unset = true;\r\n          this._dates = [];\r\n          this._datesFormatted = [];\r\n        } else {\r\n          outpValue = \"\" + this._element.data('date') + this._options.multidateSeparator;\r\n          outpValue = oldDate && outpValue.replace(\"\" + oldDate.format(this.actualFormat) + this._options.multidateSeparator, '').replace(\"\" + this._options.multidateSeparator + this._options.multidateSeparator, '').replace(new RegExp(escapeRegExp(this._options.multidateSeparator) + \"\\\\s*$\"), '') || '';\r\n\r\n          this._dates.splice(index, 1);\r\n\r\n          this._datesFormatted.splice(index, 1);\r\n        }\r\n\r\n        outpValue = trim(outpValue);\r\n\r\n        if (this.input !== undefined) {\r\n          this.input.val(outpValue);\r\n          this.input.trigger('input');\r\n        }\r\n\r\n        this._element.data('date', outpValue);\r\n\r\n        this._notifyEvent({\r\n          type: DateTimePicker.Event.CHANGE,\r\n          date: false,\r\n          oldDate: oldDate,\r\n          isClear: isClear,\r\n          isInvalid: isInvalid,\r\n          isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\r\n          isInit: this.isInit\r\n        });\r\n\r\n        this._update();\r\n\r\n        return;\r\n      }\r\n\r\n      targetMoment = targetMoment.clone().locale(this._options.locale);\r\n\r\n      if (this._hasTimeZone()) {\r\n        targetMoment.tz(this._options.timeZone);\r\n      }\r\n\r\n      if (this._options.stepping !== 1) {\r\n        targetMoment.minutes(Math.round(targetMoment.minutes() / this._options.stepping) * this._options.stepping).seconds(0);\r\n      }\r\n\r\n      if (this._isValid(targetMoment)) {\r\n        if (isNotAllowedProgrammaticUpdate) {\r\n          this._notifyEvent({\r\n            type: DateTimePicker.Event.CHANGE,\r\n            date: targetMoment.clone(),\r\n            oldDate: oldDate,\r\n            isClear: isClear,\r\n            isInvalid: isInvalid,\r\n            isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\r\n            isInit: this.isInit\r\n          });\r\n\r\n          return;\r\n        }\r\n\r\n        this._dates[index] = targetMoment;\r\n        this._datesFormatted[index] = targetMoment.format('YYYY-MM-DD');\r\n        this._viewDate = targetMoment.clone();\r\n\r\n        if (this._options.allowMultidate && this._dates.length > 1) {\r\n          for (var i = 0; i < this._dates.length; i++) {\r\n            outpValue += \"\" + this._dates[i].format(this.actualFormat) + this._options.multidateSeparator;\r\n          }\r\n\r\n          outpValue = outpValue.replace(new RegExp(this._options.multidateSeparator + \"\\\\s*$\"), '');\r\n        } else {\r\n          outpValue = this._dates[index].format(this.actualFormat);\r\n        }\r\n\r\n        outpValue = trim(outpValue);\r\n\r\n        if (this.input !== undefined) {\r\n          this.input.val(outpValue);\r\n          this.input.trigger('input');\r\n        }\r\n\r\n        this._element.data('date', outpValue);\r\n\r\n        this.unset = false;\r\n\r\n        this._update();\r\n\r\n        this._notifyEvent({\r\n          type: DateTimePicker.Event.CHANGE,\r\n          date: this._dates[index].clone(),\r\n          oldDate: oldDate,\r\n          isClear: isClear,\r\n          isInvalid: isInvalid,\r\n          isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\r\n          isInit: this.isInit\r\n        });\r\n      } else {\r\n        isInvalid = true;\r\n\r\n        if (!this._options.keepInvalid) {\r\n          if (this.input !== undefined) {\r\n            this.input.val(\"\" + (this.unset ? '' : this._dates[index].format(this.actualFormat)));\r\n            this.input.trigger('input');\r\n          }\r\n        } else {\r\n          this._notifyEvent({\r\n            type: DateTimePicker.Event.CHANGE,\r\n            date: targetMoment,\r\n            oldDate: oldDate,\r\n            isClear: isClear,\r\n            isInvalid: isInvalid,\r\n            isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\r\n            isInit: this.isInit\r\n          });\r\n        }\r\n\r\n        this._notifyEvent({\r\n          type: DateTimePicker.Event.ERROR,\r\n          date: targetMoment,\r\n          oldDate: oldDate\r\n        });\r\n      }\r\n    };\r\n\r\n    _proto._change = function _change(e) {\r\n      var val = $(e.target).val().trim(),\r\n          parsedDate = val ? this._parseInputDate(val) : null;\r\n\r\n      this._setValue(parsedDate, 0);\r\n\r\n      e.stopImmediatePropagation();\r\n      return false;\r\n    } //noinspection JSMethodCanBeStatic\r\n    ;\r\n\r\n    _proto._getOptions = function _getOptions(options) {\r\n      options = $.extend(true, {}, Default, options && options.icons && options.icons.type === 'feather' ? {\r\n        icons: defaultFeatherIcons\r\n      } : {}, options);\r\n      return options;\r\n    };\r\n\r\n    _proto._hasTimeZone = function _hasTimeZone() {\r\n      return moment.tz !== undefined && this._options.timeZone !== undefined && this._options.timeZone !== null && this._options.timeZone !== '';\r\n    };\r\n\r\n    _proto._isEnabled = function _isEnabled(granularity) {\r\n      if (typeof granularity !== 'string' || granularity.length > 1) {\r\n        throw new TypeError('isEnabled expects a single character string parameter');\r\n      }\r\n\r\n      switch (granularity) {\r\n        case 'y':\r\n          return this.actualFormat.indexOf('Y') !== -1;\r\n\r\n        case 'M':\r\n          return this.actualFormat.indexOf('M') !== -1;\r\n\r\n        case 'd':\r\n          return this.actualFormat.toLowerCase().indexOf('d') !== -1;\r\n\r\n        case 'h':\r\n        case 'H':\r\n          return this.actualFormat.toLowerCase().indexOf('h') !== -1;\r\n\r\n        case 'm':\r\n          return this.actualFormat.indexOf('m') !== -1;\r\n\r\n        case 's':\r\n          return this.actualFormat.indexOf('s') !== -1;\r\n\r\n        case 'a':\r\n        case 'A':\r\n          return this.actualFormat.toLowerCase().indexOf('a') !== -1;\r\n\r\n        default:\r\n          return false;\r\n      }\r\n    };\r\n\r\n    _proto._hasTime = function _hasTime() {\r\n      return this._isEnabled('h') || this._isEnabled('m') || this._isEnabled('s');\r\n    };\r\n\r\n    _proto._hasDate = function _hasDate() {\r\n      return this._isEnabled('y') || this._isEnabled('M') || this._isEnabled('d');\r\n    };\r\n\r\n    _proto._dataToOptions = function _dataToOptions() {\r\n      var eData = this._element.data();\r\n\r\n      var dataOptions = {};\r\n\r\n      if (eData.dateOptions && eData.dateOptions instanceof Object) {\r\n        dataOptions = $.extend(true, dataOptions, eData.dateOptions);\r\n      }\r\n\r\n      $.each(this._options, function (key) {\r\n        var attributeName = \"date\" + key.charAt(0).toUpperCase() + key.slice(1); //todo data api key\r\n\r\n        if (eData[attributeName] !== undefined) {\r\n          dataOptions[key] = eData[attributeName];\r\n        } else {\r\n          delete dataOptions[key];\r\n        }\r\n      });\r\n      return dataOptions;\r\n    };\r\n\r\n    _proto._format = function _format() {\r\n      return this._options.format || 'YYYY-MM-DD HH:mm';\r\n    };\r\n\r\n    _proto._areSameDates = function _areSameDates(a, b) {\r\n      var format = this._format();\r\n\r\n      return a && b && (a.isSame(b) || moment(a.format(format), format).isSame(moment(b.format(format), format)));\r\n    };\r\n\r\n    _proto._notifyEvent = function _notifyEvent(e) {\r\n      if (e.type === DateTimePicker.Event.CHANGE) {\r\n        this._notifyChangeEventContext = this._notifyChangeEventContext || 0;\r\n        this._notifyChangeEventContext++;\r\n\r\n        if (e.date && this._areSameDates(e.date, e.oldDate) || !e.isClear && !e.date && !e.oldDate || this._notifyChangeEventContext > 1) {\r\n          this._notifyChangeEventContext = void 0;\r\n          return;\r\n        }\r\n\r\n        this._handlePromptTimeIfNeeded(e);\r\n      }\r\n\r\n      this._element.trigger(e);\r\n\r\n      this._notifyChangeEventContext = void 0;\r\n    };\r\n\r\n    _proto._handlePromptTimeIfNeeded = function _handlePromptTimeIfNeeded(e) {\r\n      if (this._options.promptTimeOnDateChange) {\r\n        if (!e.oldDate && this._options.useCurrent) {\r\n          // First time ever. If useCurrent option is set to true (default), do nothing\r\n          // because the first date is selected automatically.\r\n          return;\r\n        } else if (e.oldDate && e.date && (e.oldDate.format('YYYY-MM-DD') === e.date.format('YYYY-MM-DD') || e.oldDate.format('YYYY-MM-DD') !== e.date.format('YYYY-MM-DD') && e.oldDate.format('HH:mm:ss') !== e.date.format('HH:mm:ss'))) {\r\n          // Date didn't change (time did) or date changed because time did.\r\n          return;\r\n        }\r\n\r\n        var that = this;\r\n        clearTimeout(this._currentPromptTimeTimeout);\r\n        this._currentPromptTimeTimeout = setTimeout(function () {\r\n          if (that.widget) {\r\n            that.widget.find('[data-action=\"togglePicker\"]').click();\r\n          }\r\n        }, this._options.promptTimeOnDateChangeTransitionDelay);\r\n      }\r\n    };\r\n\r\n    _proto._viewUpdate = function _viewUpdate(e) {\r\n      if (e === 'y') {\r\n        e = 'YYYY';\r\n      }\r\n\r\n      this._notifyEvent({\r\n        type: DateTimePicker.Event.UPDATE,\r\n        change: e,\r\n        viewDate: this._viewDate.clone()\r\n      });\r\n    };\r\n\r\n    _proto._showMode = function _showMode(dir) {\r\n      if (!this.widget) {\r\n        return;\r\n      }\r\n\r\n      if (dir) {\r\n        this.currentViewMode = Math.max(this.MinViewModeNumber, Math.min(3, this.currentViewMode + dir));\r\n      }\r\n\r\n      this.widget.find('.datepicker > div').hide().filter(\".datepicker-\" + DatePickerModes[this.currentViewMode].CLASS_NAME).show();\r\n    };\r\n\r\n    _proto._isInDisabledDates = function _isInDisabledDates(testDate) {\r\n      return this._options.disabledDates[testDate.format('YYYY-MM-DD')] === true;\r\n    };\r\n\r\n    _proto._isInEnabledDates = function _isInEnabledDates(testDate) {\r\n      return this._options.enabledDates[testDate.format('YYYY-MM-DD')] === true;\r\n    };\r\n\r\n    _proto._isInDisabledHours = function _isInDisabledHours(testDate) {\r\n      return this._options.disabledHours[testDate.format('H')] === true;\r\n    };\r\n\r\n    _proto._isInEnabledHours = function _isInEnabledHours(testDate) {\r\n      return this._options.enabledHours[testDate.format('H')] === true;\r\n    };\r\n\r\n    _proto._isValid = function _isValid(targetMoment, granularity) {\r\n      if (!targetMoment || !targetMoment.isValid()) {\r\n        return false;\r\n      }\r\n\r\n      if (this._options.disabledDates && granularity === 'd' && this._isInDisabledDates(targetMoment)) {\r\n        return false;\r\n      }\r\n\r\n      if (this._options.enabledDates && granularity === 'd' && !this._isInEnabledDates(targetMoment)) {\r\n        return false;\r\n      }\r\n\r\n      if (this._options.minDate && targetMoment.isBefore(this._options.minDate, granularity)) {\r\n        return false;\r\n      }\r\n\r\n      if (this._options.maxDate && targetMoment.isAfter(this._options.maxDate, granularity)) {\r\n        return false;\r\n      }\r\n\r\n      if (this._options.daysOfWeekDisabled && granularity === 'd' && this._options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1) {\r\n        return false;\r\n      }\r\n\r\n      if (this._options.disabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && this._isInDisabledHours(targetMoment)) {\r\n        return false;\r\n      }\r\n\r\n      if (this._options.enabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && !this._isInEnabledHours(targetMoment)) {\r\n        return false;\r\n      }\r\n\r\n      if (this._options.disabledTimeIntervals && (granularity === 'h' || granularity === 'm' || granularity === 's')) {\r\n        var found = false;\r\n        $.each(this._options.disabledTimeIntervals, function () {\r\n          if (targetMoment.isBetween(this[0], this[1])) {\r\n            found = true;\r\n            return false;\r\n          }\r\n        });\r\n\r\n        if (found) {\r\n          return false;\r\n        }\r\n      }\r\n\r\n      return true;\r\n    };\r\n\r\n    _proto._parseInputDate = function _parseInputDate(inputDate, _temp) {\r\n      var _ref = _temp === void 0 ? {} : _temp,\r\n          _ref$isPickerShow = _ref.isPickerShow,\r\n          isPickerShow = _ref$isPickerShow === void 0 ? false : _ref$isPickerShow;\r\n\r\n      if (this._options.parseInputDate === undefined || isPickerShow) {\r\n        if (!moment.isMoment(inputDate)) {\r\n          inputDate = this.getMoment(inputDate);\r\n        }\r\n      } else {\r\n        inputDate = this._options.parseInputDate(inputDate);\r\n      } //inputDate.locale(this.options.locale);\r\n\r\n\r\n      return inputDate;\r\n    };\r\n\r\n    _proto._keydown = function _keydown(e) {\r\n      var handler = null,\r\n          index,\r\n          index2,\r\n          keyBindKeys,\r\n          allModifiersPressed;\r\n      var pressedKeys = [],\r\n          pressedModifiers = {},\r\n          currentKey = e.which,\r\n          pressed = 'p';\r\n      keyState[currentKey] = pressed;\r\n\r\n      for (index in keyState) {\r\n        if (keyState.hasOwnProperty(index) && keyState[index] === pressed) {\r\n          pressedKeys.push(index);\r\n\r\n          if (parseInt(index, 10) !== currentKey) {\r\n            pressedModifiers[index] = true;\r\n          }\r\n        }\r\n      }\r\n\r\n      for (index in this._options.keyBinds) {\r\n        if (this._options.keyBinds.hasOwnProperty(index) && typeof this._options.keyBinds[index] === 'function') {\r\n          keyBindKeys = index.split(' ');\r\n\r\n          if (keyBindKeys.length === pressedKeys.length && KeyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1]) {\r\n            allModifiersPressed = true;\r\n\r\n            for (index2 = keyBindKeys.length - 2; index2 >= 0; index2--) {\r\n              if (!(KeyMap[keyBindKeys[index2]] in pressedModifiers)) {\r\n                allModifiersPressed = false;\r\n                break;\r\n              }\r\n            }\r\n\r\n            if (allModifiersPressed) {\r\n              handler = this._options.keyBinds[index];\r\n              break;\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      if (handler) {\r\n        if (handler.call(this)) {\r\n          e.stopPropagation();\r\n          e.preventDefault();\r\n        }\r\n      }\r\n    } //noinspection JSMethodCanBeStatic,SpellCheckingInspection\r\n    ;\r\n\r\n    _proto._keyup = function _keyup(e) {\r\n      keyState[e.which] = 'r';\r\n\r\n      if (keyPressHandled[e.which]) {\r\n        keyPressHandled[e.which] = false;\r\n        e.stopPropagation();\r\n        e.preventDefault();\r\n      }\r\n    };\r\n\r\n    _proto._indexGivenDates = function _indexGivenDates(givenDatesArray) {\r\n      // Store given enabledDates and disabledDates as keys.\r\n      // This way we can check their existence in O(1) time instead of looping through whole array.\r\n      // (for example: options.enabledDates['2014-02-27'] === true)\r\n      var givenDatesIndexed = {},\r\n          self = this;\r\n      $.each(givenDatesArray, function () {\r\n        var dDate = self._parseInputDate(this);\r\n\r\n        if (dDate.isValid()) {\r\n          givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true;\r\n        }\r\n      });\r\n      return Object.keys(givenDatesIndexed).length ? givenDatesIndexed : false;\r\n    };\r\n\r\n    _proto._indexGivenHours = function _indexGivenHours(givenHoursArray) {\r\n      // Store given enabledHours and disabledHours as keys.\r\n      // This way we can check their existence in O(1) time instead of looping through whole array.\r\n      // (for example: options.enabledHours['2014-02-27'] === true)\r\n      var givenHoursIndexed = {};\r\n      $.each(givenHoursArray, function () {\r\n        givenHoursIndexed[this] = true;\r\n      });\r\n      return Object.keys(givenHoursIndexed).length ? givenHoursIndexed : false;\r\n    };\r\n\r\n    _proto._initFormatting = function _initFormatting() {\r\n      var format = this._options.format || 'L LT',\r\n          self = this;\r\n      this.actualFormat = format.replace(/(\\[[^\\[]*])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput) {\r\n        return (self.isInitFormatting && self._options.date === null ? self.getMoment() : self._dates[0]).localeData().longDateFormat(formatInput) || formatInput; //todo taking the first date should be ok\r\n      });\r\n      this.parseFormats = this._options.extraFormats ? this._options.extraFormats.slice() : [];\r\n\r\n      if (this.parseFormats.indexOf(format) < 0 && this.parseFormats.indexOf(this.actualFormat) < 0) {\r\n        this.parseFormats.push(this.actualFormat);\r\n      }\r\n\r\n      this.use24Hours = this.actualFormat.toLowerCase().indexOf('a') < 1 && this.actualFormat.replace(/\\[.*?]/g, '').indexOf('h') < 1;\r\n\r\n      if (this._isEnabled('y')) {\r\n        this.MinViewModeNumber = 2;\r\n      }\r\n\r\n      if (this._isEnabled('M')) {\r\n        this.MinViewModeNumber = 1;\r\n      }\r\n\r\n      if (this._isEnabled('d')) {\r\n        this.MinViewModeNumber = 0;\r\n      }\r\n\r\n      this.currentViewMode = Math.max(this.MinViewModeNumber, this.currentViewMode);\r\n\r\n      if (!this.unset) {\r\n        this._setValue(this._dates[0], 0);\r\n      }\r\n    };\r\n\r\n    _proto._getLastPickedDate = function _getLastPickedDate() {\r\n      var lastPickedDate = this._dates[this._getLastPickedDateIndex()];\r\n\r\n      if (!lastPickedDate && this._options.allowMultidate) {\r\n        lastPickedDate = moment(new Date());\r\n      }\r\n\r\n      return lastPickedDate;\r\n    };\r\n\r\n    _proto._getLastPickedDateIndex = function _getLastPickedDateIndex() {\r\n      return this._dates.length - 1;\r\n    } //public\r\n    ;\r\n\r\n    _proto.getMoment = function getMoment(d) {\r\n      var returnMoment;\r\n\r\n      if (d === undefined || d === null) {\r\n        // TODO: Should this use format?\r\n        returnMoment = moment().clone().locale(this._options.locale);\r\n      } else if (this._hasTimeZone()) {\r\n        // There is a string to parse and a default time zone\r\n        // parse with the tz function which takes a default time zone if it is not in the format string\r\n        returnMoment = moment.tz(d, this.parseFormats, this._options.locale, this._options.useStrict, this._options.timeZone);\r\n      } else {\r\n        returnMoment = moment(d, this.parseFormats, this._options.locale, this._options.useStrict);\r\n      }\r\n\r\n      if (this._hasTimeZone()) {\r\n        returnMoment.tz(this._options.timeZone);\r\n      }\r\n\r\n      return returnMoment;\r\n    };\r\n\r\n    _proto.toggle = function toggle() {\r\n      return this.widget ? this.hide() : this.show();\r\n    };\r\n\r\n    _proto.readonly = function readonly(_readonly) {\r\n      if (arguments.length === 0) {\r\n        return this._options.readonly;\r\n      }\r\n\r\n      if (typeof _readonly !== 'boolean') {\r\n        throw new TypeError('readonly() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.readonly = _readonly;\r\n\r\n      if (this.input !== undefined) {\r\n        this.input.prop('readonly', this._options.readonly);\r\n      }\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto.ignoreReadonly = function ignoreReadonly(_ignoreReadonly) {\r\n      if (arguments.length === 0) {\r\n        return this._options.ignoreReadonly;\r\n      }\r\n\r\n      if (typeof _ignoreReadonly !== 'boolean') {\r\n        throw new TypeError('ignoreReadonly() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.ignoreReadonly = _ignoreReadonly;\r\n    };\r\n\r\n    _proto.options = function options(newOptions) {\r\n      if (arguments.length === 0) {\r\n        return $.extend(true, {}, this._options);\r\n      }\r\n\r\n      if (!(newOptions instanceof Object)) {\r\n        throw new TypeError('options() this.options parameter should be an object');\r\n      }\r\n\r\n      $.extend(true, this._options, newOptions);\r\n      var self = this,\r\n          optionsKeys = Object.keys(this._options).sort(optionsSortFn);\r\n      $.each(optionsKeys, function (i, key) {\r\n        var value = self._options[key];\r\n\r\n        if (self[key] !== undefined) {\r\n          if (self.isInit && key === 'date') {\r\n            self.hasInitDate = true;\r\n            self.initDate = value;\r\n            return;\r\n          }\r\n\r\n          self[key](value);\r\n        }\r\n      });\r\n    };\r\n\r\n    _proto.date = function date(newDate, index) {\r\n      index = index || 0;\r\n\r\n      if (arguments.length === 0) {\r\n        if (this.unset) {\r\n          return null;\r\n        }\r\n\r\n        if (this._options.allowMultidate) {\r\n          return this._dates.join(this._options.multidateSeparator);\r\n        } else {\r\n          return this._dates[index].clone();\r\n        }\r\n      }\r\n\r\n      if (newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\r\n        throw new TypeError('date() parameter must be one of [null, string, moment or Date]');\r\n      }\r\n\r\n      if (typeof newDate === 'string' && isValidDateTimeStr(newDate)) {\r\n        newDate = new Date(newDate);\r\n      }\r\n\r\n      this._setValue(newDate === null ? null : this._parseInputDate(newDate), index);\r\n    };\r\n\r\n    _proto.updateOnlyThroughDateOption = function updateOnlyThroughDateOption(_updateOnlyThroughDateOption) {\r\n      if (typeof _updateOnlyThroughDateOption !== 'boolean') {\r\n        throw new TypeError('updateOnlyThroughDateOption() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.updateOnlyThroughDateOption = _updateOnlyThroughDateOption;\r\n    };\r\n\r\n    _proto.format = function format(newFormat) {\r\n      if (arguments.length === 0) {\r\n        return this._options.format;\r\n      }\r\n\r\n      if (typeof newFormat !== 'string' && (typeof newFormat !== 'boolean' || newFormat !== false)) {\r\n        throw new TypeError(\"format() expects a string or boolean:false parameter \" + newFormat);\r\n      }\r\n\r\n      this._options.format = newFormat;\r\n\r\n      if (this.actualFormat) {\r\n        this._initFormatting(); // reinitialize formatting\r\n\r\n      }\r\n    };\r\n\r\n    _proto.timeZone = function timeZone(newZone) {\r\n      if (arguments.length === 0) {\r\n        return this._options.timeZone;\r\n      }\r\n\r\n      if (typeof newZone !== 'string') {\r\n        throw new TypeError('newZone() expects a string parameter');\r\n      }\r\n\r\n      this._options.timeZone = newZone;\r\n    };\r\n\r\n    _proto.dayViewHeaderFormat = function dayViewHeaderFormat(newFormat) {\r\n      if (arguments.length === 0) {\r\n        return this._options.dayViewHeaderFormat;\r\n      }\r\n\r\n      if (typeof newFormat !== 'string') {\r\n        throw new TypeError('dayViewHeaderFormat() expects a string parameter');\r\n      }\r\n\r\n      this._options.dayViewHeaderFormat = newFormat;\r\n    };\r\n\r\n    _proto.extraFormats = function extraFormats(formats) {\r\n      if (arguments.length === 0) {\r\n        return this._options.extraFormats;\r\n      }\r\n\r\n      if (formats !== false && !(formats instanceof Array)) {\r\n        throw new TypeError('extraFormats() expects an array or false parameter');\r\n      }\r\n\r\n      this._options.extraFormats = formats;\r\n\r\n      if (this.parseFormats) {\r\n        this._initFormatting(); // reinit formatting\r\n\r\n      }\r\n    };\r\n\r\n    _proto.disabledDates = function disabledDates(dates) {\r\n      if (arguments.length === 0) {\r\n        return this._options.disabledDates ? $.extend({}, this._options.disabledDates) : this._options.disabledDates;\r\n      }\r\n\r\n      if (!dates) {\r\n        this._options.disabledDates = false;\r\n\r\n        this._update();\r\n\r\n        return true;\r\n      }\r\n\r\n      if (!(dates instanceof Array)) {\r\n        throw new TypeError('disabledDates() expects an array parameter');\r\n      }\r\n\r\n      this._options.disabledDates = this._indexGivenDates(dates);\r\n      this._options.enabledDates = false;\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.enabledDates = function enabledDates(dates) {\r\n      if (arguments.length === 0) {\r\n        return this._options.enabledDates ? $.extend({}, this._options.enabledDates) : this._options.enabledDates;\r\n      }\r\n\r\n      if (!dates) {\r\n        this._options.enabledDates = false;\r\n\r\n        this._update();\r\n\r\n        return true;\r\n      }\r\n\r\n      if (!(dates instanceof Array)) {\r\n        throw new TypeError('enabledDates() expects an array parameter');\r\n      }\r\n\r\n      this._options.enabledDates = this._indexGivenDates(dates);\r\n      this._options.disabledDates = false;\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.daysOfWeekDisabled = function daysOfWeekDisabled(_daysOfWeekDisabled) {\r\n      if (arguments.length === 0) {\r\n        return this._options.daysOfWeekDisabled.splice(0);\r\n      }\r\n\r\n      if (typeof _daysOfWeekDisabled === 'boolean' && !_daysOfWeekDisabled) {\r\n        this._options.daysOfWeekDisabled = false;\r\n\r\n        this._update();\r\n\r\n        return true;\r\n      }\r\n\r\n      if (!(_daysOfWeekDisabled instanceof Array)) {\r\n        throw new TypeError('daysOfWeekDisabled() expects an array parameter');\r\n      }\r\n\r\n      this._options.daysOfWeekDisabled = _daysOfWeekDisabled.reduce(function (previousValue, currentValue) {\r\n        currentValue = parseInt(currentValue, 10);\r\n\r\n        if (currentValue > 6 || currentValue < 0 || isNaN(currentValue)) {\r\n          return previousValue;\r\n        }\r\n\r\n        if (previousValue.indexOf(currentValue) === -1) {\r\n          previousValue.push(currentValue);\r\n        }\r\n\r\n        return previousValue;\r\n      }, []).sort();\r\n\r\n      if (this._options.useCurrent && !this._options.keepInvalid) {\r\n        for (var i = 0; i < this._dates.length; i++) {\r\n          var tries = 0;\r\n\r\n          while (!this._isValid(this._dates[i], 'd')) {\r\n            this._dates[i].add(1, 'd');\r\n\r\n            if (tries === 31) {\r\n              throw 'Tried 31 times to find a valid date';\r\n            }\r\n\r\n            tries++;\r\n          }\r\n\r\n          this._setValue(this._dates[i], i);\r\n        }\r\n      }\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.maxDate = function maxDate(_maxDate) {\r\n      if (arguments.length === 0) {\r\n        return this._options.maxDate ? this._options.maxDate.clone() : this._options.maxDate;\r\n      }\r\n\r\n      if (typeof _maxDate === 'boolean' && _maxDate === false) {\r\n        this._options.maxDate = false;\r\n\r\n        this._update();\r\n\r\n        return true;\r\n      }\r\n\r\n      if (typeof _maxDate === 'string') {\r\n        if (_maxDate === 'now' || _maxDate === 'moment') {\r\n          _maxDate = this.getMoment();\r\n        }\r\n      }\r\n\r\n      var parsedDate = this._parseInputDate(_maxDate);\r\n\r\n      if (!parsedDate.isValid()) {\r\n        throw new TypeError(\"maxDate() Could not parse date parameter: \" + _maxDate);\r\n      }\r\n\r\n      if (this._options.minDate && parsedDate.isBefore(this._options.minDate)) {\r\n        throw new TypeError(\"maxDate() date parameter is before this.options.minDate: \" + parsedDate.format(this.actualFormat));\r\n      }\r\n\r\n      this._options.maxDate = parsedDate;\r\n\r\n      for (var i = 0; i < this._dates.length; i++) {\r\n        if (this._options.useCurrent && !this._options.keepInvalid && this._dates[i].isAfter(_maxDate)) {\r\n          this._setValue(this._options.maxDate, i);\r\n        }\r\n      }\r\n\r\n      if (this._viewDate.isAfter(parsedDate)) {\r\n        this._viewDate = parsedDate.clone().subtract(this._options.stepping, 'm');\r\n      }\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.minDate = function minDate(_minDate) {\r\n      if (arguments.length === 0) {\r\n        return this._options.minDate ? this._options.minDate.clone() : this._options.minDate;\r\n      }\r\n\r\n      if (typeof _minDate === 'boolean' && _minDate === false) {\r\n        this._options.minDate = false;\r\n\r\n        this._update();\r\n\r\n        return true;\r\n      }\r\n\r\n      if (typeof _minDate === 'string') {\r\n        if (_minDate === 'now' || _minDate === 'moment') {\r\n          _minDate = this.getMoment();\r\n        }\r\n      }\r\n\r\n      var parsedDate = this._parseInputDate(_minDate);\r\n\r\n      if (!parsedDate.isValid()) {\r\n        throw new TypeError(\"minDate() Could not parse date parameter: \" + _minDate);\r\n      }\r\n\r\n      if (this._options.maxDate && parsedDate.isAfter(this._options.maxDate)) {\r\n        throw new TypeError(\"minDate() date parameter is after this.options.maxDate: \" + parsedDate.format(this.actualFormat));\r\n      }\r\n\r\n      this._options.minDate = parsedDate;\r\n\r\n      for (var i = 0; i < this._dates.length; i++) {\r\n        if (this._options.useCurrent && !this._options.keepInvalid && this._dates[i].isBefore(_minDate)) {\r\n          this._setValue(this._options.minDate, i);\r\n        }\r\n      }\r\n\r\n      if (this._viewDate.isBefore(parsedDate)) {\r\n        this._viewDate = parsedDate.clone().add(this._options.stepping, 'm');\r\n      }\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.defaultDate = function defaultDate(_defaultDate) {\r\n      if (arguments.length === 0) {\r\n        return this._options.defaultDate ? this._options.defaultDate.clone() : this._options.defaultDate;\r\n      }\r\n\r\n      if (!_defaultDate) {\r\n        this._options.defaultDate = false;\r\n        return true;\r\n      }\r\n\r\n      if (typeof _defaultDate === 'string') {\r\n        if (_defaultDate === 'now' || _defaultDate === 'moment') {\r\n          _defaultDate = this.getMoment();\r\n        } else {\r\n          _defaultDate = this.getMoment(_defaultDate);\r\n        }\r\n      }\r\n\r\n      var parsedDate = this._parseInputDate(_defaultDate);\r\n\r\n      if (!parsedDate.isValid()) {\r\n        throw new TypeError(\"defaultDate() Could not parse date parameter: \" + _defaultDate);\r\n      }\r\n\r\n      if (!this._isValid(parsedDate)) {\r\n        throw new TypeError('defaultDate() date passed is invalid according to component setup validations');\r\n      }\r\n\r\n      this._options.defaultDate = parsedDate;\r\n\r\n      if (this._options.defaultDate && this._options.inline || this.input !== undefined && this.input.val().trim() === '') {\r\n        this._setValue(this._options.defaultDate, 0);\r\n      }\r\n    };\r\n\r\n    _proto.locale = function locale(_locale) {\r\n      if (arguments.length === 0) {\r\n        return this._options.locale;\r\n      }\r\n\r\n      if (!moment.localeData(_locale)) {\r\n        throw new TypeError(\"locale() locale \" + _locale + \" is not loaded from moment locales!\");\r\n      }\r\n\r\n      this._options.locale = _locale;\r\n\r\n      for (var i = 0; i < this._dates.length; i++) {\r\n        this._dates[i].locale(this._options.locale);\r\n      }\r\n\r\n      this._viewDate.locale(this._options.locale);\r\n\r\n      if (this.actualFormat) {\r\n        this._initFormatting(); // reinitialize formatting\r\n\r\n      }\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto.stepping = function stepping(_stepping) {\r\n      if (arguments.length === 0) {\r\n        return this._options.stepping;\r\n      }\r\n\r\n      _stepping = parseInt(_stepping, 10);\r\n\r\n      if (isNaN(_stepping) || _stepping < 1) {\r\n        _stepping = 1;\r\n      }\r\n\r\n      this._options.stepping = _stepping;\r\n    };\r\n\r\n    _proto.useCurrent = function useCurrent(_useCurrent) {\r\n      var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute'];\r\n\r\n      if (arguments.length === 0) {\r\n        return this._options.useCurrent;\r\n      }\r\n\r\n      if (typeof _useCurrent !== 'boolean' && typeof _useCurrent !== 'string') {\r\n        throw new TypeError('useCurrent() expects a boolean or string parameter');\r\n      }\r\n\r\n      if (typeof _useCurrent === 'string' && useCurrentOptions.indexOf(_useCurrent.toLowerCase()) === -1) {\r\n        throw new TypeError(\"useCurrent() expects a string parameter of \" + useCurrentOptions.join(', '));\r\n      }\r\n\r\n      this._options.useCurrent = _useCurrent;\r\n    };\r\n\r\n    _proto.collapse = function collapse(_collapse) {\r\n      if (arguments.length === 0) {\r\n        return this._options.collapse;\r\n      }\r\n\r\n      if (typeof _collapse !== 'boolean') {\r\n        throw new TypeError('collapse() expects a boolean parameter');\r\n      }\r\n\r\n      if (this._options.collapse === _collapse) {\r\n        return true;\r\n      }\r\n\r\n      this._options.collapse = _collapse;\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto.icons = function icons(_icons) {\r\n      if (arguments.length === 0) {\r\n        return $.extend({}, this._options.icons);\r\n      }\r\n\r\n      if (!(_icons instanceof Object)) {\r\n        throw new TypeError('icons() expects parameter to be an Object');\r\n      }\r\n\r\n      $.extend(this._options.icons, _icons);\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto.tooltips = function tooltips(_tooltips) {\r\n      if (arguments.length === 0) {\r\n        return $.extend({}, this._options.tooltips);\r\n      }\r\n\r\n      if (!(_tooltips instanceof Object)) {\r\n        throw new TypeError('tooltips() expects parameter to be an Object');\r\n      }\r\n\r\n      $.extend(this._options.tooltips, _tooltips);\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto.useStrict = function useStrict(_useStrict) {\r\n      if (arguments.length === 0) {\r\n        return this._options.useStrict;\r\n      }\r\n\r\n      if (typeof _useStrict !== 'boolean') {\r\n        throw new TypeError('useStrict() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.useStrict = _useStrict;\r\n    };\r\n\r\n    _proto.sideBySide = function sideBySide(_sideBySide) {\r\n      if (arguments.length === 0) {\r\n        return this._options.sideBySide;\r\n      }\r\n\r\n      if (typeof _sideBySide !== 'boolean') {\r\n        throw new TypeError('sideBySide() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.sideBySide = _sideBySide;\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto.viewMode = function viewMode(_viewMode) {\r\n      if (arguments.length === 0) {\r\n        return this._options.viewMode;\r\n      }\r\n\r\n      if (typeof _viewMode !== 'string') {\r\n        throw new TypeError('viewMode() expects a string parameter');\r\n      }\r\n\r\n      if (DateTimePicker.ViewModes.indexOf(_viewMode) === -1) {\r\n        throw new TypeError(\"viewMode() parameter must be one of (\" + DateTimePicker.ViewModes.join(', ') + \") value\");\r\n      }\r\n\r\n      this._options.viewMode = _viewMode;\r\n      this.currentViewMode = Math.max(DateTimePicker.ViewModes.indexOf(_viewMode) - 1, this.MinViewModeNumber);\r\n\r\n      this._showMode();\r\n    };\r\n\r\n    _proto.calendarWeeks = function calendarWeeks(_calendarWeeks) {\r\n      if (arguments.length === 0) {\r\n        return this._options.calendarWeeks;\r\n      }\r\n\r\n      if (typeof _calendarWeeks !== 'boolean') {\r\n        throw new TypeError('calendarWeeks() expects parameter to be a boolean value');\r\n      }\r\n\r\n      this._options.calendarWeeks = _calendarWeeks;\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.buttons = function buttons(_buttons) {\r\n      if (arguments.length === 0) {\r\n        return $.extend({}, this._options.buttons);\r\n      }\r\n\r\n      if (!(_buttons instanceof Object)) {\r\n        throw new TypeError('buttons() expects parameter to be an Object');\r\n      }\r\n\r\n      $.extend(this._options.buttons, _buttons);\r\n\r\n      if (typeof this._options.buttons.showToday !== 'boolean') {\r\n        throw new TypeError('buttons.showToday expects a boolean parameter');\r\n      }\r\n\r\n      if (typeof this._options.buttons.showClear !== 'boolean') {\r\n        throw new TypeError('buttons.showClear expects a boolean parameter');\r\n      }\r\n\r\n      if (typeof this._options.buttons.showClose !== 'boolean') {\r\n        throw new TypeError('buttons.showClose expects a boolean parameter');\r\n      }\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto.keepOpen = function keepOpen(_keepOpen) {\r\n      if (arguments.length === 0) {\r\n        return this._options.keepOpen;\r\n      }\r\n\r\n      if (typeof _keepOpen !== 'boolean') {\r\n        throw new TypeError('keepOpen() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.keepOpen = _keepOpen;\r\n    };\r\n\r\n    _proto.focusOnShow = function focusOnShow(_focusOnShow) {\r\n      if (arguments.length === 0) {\r\n        return this._options.focusOnShow;\r\n      }\r\n\r\n      if (typeof _focusOnShow !== 'boolean') {\r\n        throw new TypeError('focusOnShow() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.focusOnShow = _focusOnShow;\r\n    };\r\n\r\n    _proto.inline = function inline(_inline) {\r\n      if (arguments.length === 0) {\r\n        return this._options.inline;\r\n      }\r\n\r\n      if (typeof _inline !== 'boolean') {\r\n        throw new TypeError('inline() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.inline = _inline;\r\n    };\r\n\r\n    _proto.clear = function clear() {\r\n      this._setValue(null); //todo\r\n\r\n    };\r\n\r\n    _proto.keyBinds = function keyBinds(_keyBinds) {\r\n      if (arguments.length === 0) {\r\n        return this._options.keyBinds;\r\n      }\r\n\r\n      this._options.keyBinds = _keyBinds;\r\n    };\r\n\r\n    _proto.debug = function debug(_debug) {\r\n      if (typeof _debug !== 'boolean') {\r\n        throw new TypeError('debug() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.debug = _debug;\r\n    };\r\n\r\n    _proto.allowInputToggle = function allowInputToggle(_allowInputToggle) {\r\n      if (arguments.length === 0) {\r\n        return this._options.allowInputToggle;\r\n      }\r\n\r\n      if (typeof _allowInputToggle !== 'boolean') {\r\n        throw new TypeError('allowInputToggle() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.allowInputToggle = _allowInputToggle;\r\n    };\r\n\r\n    _proto.keepInvalid = function keepInvalid(_keepInvalid) {\r\n      if (arguments.length === 0) {\r\n        return this._options.keepInvalid;\r\n      }\r\n\r\n      if (typeof _keepInvalid !== 'boolean') {\r\n        throw new TypeError('keepInvalid() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.keepInvalid = _keepInvalid;\r\n    };\r\n\r\n    _proto.datepickerInput = function datepickerInput(_datepickerInput) {\r\n      if (arguments.length === 0) {\r\n        return this._options.datepickerInput;\r\n      }\r\n\r\n      if (typeof _datepickerInput !== 'string') {\r\n        throw new TypeError('datepickerInput() expects a string parameter');\r\n      }\r\n\r\n      this._options.datepickerInput = _datepickerInput;\r\n    };\r\n\r\n    _proto.parseInputDate = function parseInputDate(_parseInputDate2) {\r\n      if (arguments.length === 0) {\r\n        return this._options.parseInputDate;\r\n      }\r\n\r\n      if (typeof _parseInputDate2 !== 'function') {\r\n        throw new TypeError('parseInputDate() should be as function');\r\n      }\r\n\r\n      this._options.parseInputDate = _parseInputDate2;\r\n    };\r\n\r\n    _proto.disabledTimeIntervals = function disabledTimeIntervals(_disabledTimeIntervals) {\r\n      if (arguments.length === 0) {\r\n        return this._options.disabledTimeIntervals ? $.extend({}, this._options.disabledTimeIntervals) : this._options.disabledTimeIntervals;\r\n      }\r\n\r\n      if (!_disabledTimeIntervals) {\r\n        this._options.disabledTimeIntervals = false;\r\n\r\n        this._update();\r\n\r\n        return true;\r\n      }\r\n\r\n      if (!(_disabledTimeIntervals instanceof Array)) {\r\n        throw new TypeError('disabledTimeIntervals() expects an array parameter');\r\n      }\r\n\r\n      this._options.disabledTimeIntervals = _disabledTimeIntervals;\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.disabledHours = function disabledHours(hours) {\r\n      if (arguments.length === 0) {\r\n        return this._options.disabledHours ? $.extend({}, this._options.disabledHours) : this._options.disabledHours;\r\n      }\r\n\r\n      if (!hours) {\r\n        this._options.disabledHours = false;\r\n\r\n        this._update();\r\n\r\n        return true;\r\n      }\r\n\r\n      if (!(hours instanceof Array)) {\r\n        throw new TypeError('disabledHours() expects an array parameter');\r\n      }\r\n\r\n      this._options.disabledHours = this._indexGivenHours(hours);\r\n      this._options.enabledHours = false;\r\n\r\n      if (this._options.useCurrent && !this._options.keepInvalid) {\r\n        for (var i = 0; i < this._dates.length; i++) {\r\n          var tries = 0;\r\n\r\n          while (!this._isValid(this._dates[i], 'h')) {\r\n            this._dates[i].add(1, 'h');\r\n\r\n            if (tries === 24) {\r\n              throw 'Tried 24 times to find a valid date';\r\n            }\r\n\r\n            tries++;\r\n          }\r\n\r\n          this._setValue(this._dates[i], i);\r\n        }\r\n      }\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.enabledHours = function enabledHours(hours) {\r\n      if (arguments.length === 0) {\r\n        return this._options.enabledHours ? $.extend({}, this._options.enabledHours) : this._options.enabledHours;\r\n      }\r\n\r\n      if (!hours) {\r\n        this._options.enabledHours = false;\r\n\r\n        this._update();\r\n\r\n        return true;\r\n      }\r\n\r\n      if (!(hours instanceof Array)) {\r\n        throw new TypeError('enabledHours() expects an array parameter');\r\n      }\r\n\r\n      this._options.enabledHours = this._indexGivenHours(hours);\r\n      this._options.disabledHours = false;\r\n\r\n      if (this._options.useCurrent && !this._options.keepInvalid) {\r\n        for (var i = 0; i < this._dates.length; i++) {\r\n          var tries = 0;\r\n\r\n          while (!this._isValid(this._dates[i], 'h')) {\r\n            this._dates[i].add(1, 'h');\r\n\r\n            if (tries === 24) {\r\n              throw 'Tried 24 times to find a valid date';\r\n            }\r\n\r\n            tries++;\r\n          }\r\n\r\n          this._setValue(this._dates[i], i);\r\n        }\r\n      }\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto.viewDate = function viewDate(newDate) {\r\n      if (arguments.length === 0) {\r\n        return this._viewDate.clone();\r\n      }\r\n\r\n      if (!newDate) {\r\n        this._viewDate = (this._dates[0] || this.getMoment()).clone();\r\n        return true;\r\n      }\r\n\r\n      if (typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\r\n        throw new TypeError('viewDate() parameter must be one of [string, moment or Date]');\r\n      }\r\n\r\n      this._viewDate = this._parseInputDate(newDate);\r\n\r\n      this._update();\r\n\r\n      this._viewUpdate(DatePickerModes[this.currentViewMode] && DatePickerModes[this.currentViewMode].NAV_FUNCTION);\r\n    };\r\n\r\n    _proto._fillDate = function _fillDate() {};\r\n\r\n    _proto._useFeatherIcons = function _useFeatherIcons() {\r\n      return this._options.icons.type === 'feather';\r\n    };\r\n\r\n    _proto.allowMultidate = function allowMultidate(_allowMultidate) {\r\n      if (typeof _allowMultidate !== 'boolean') {\r\n        throw new TypeError('allowMultidate() expects a boolean parameter');\r\n      }\r\n\r\n      this._options.allowMultidate = _allowMultidate;\r\n    };\r\n\r\n    _proto.multidateSeparator = function multidateSeparator(_multidateSeparator) {\r\n      if (arguments.length === 0) {\r\n        return this._options.multidateSeparator;\r\n      }\r\n\r\n      if (typeof _multidateSeparator !== 'string') {\r\n        throw new TypeError('multidateSeparator expects a string parameter');\r\n      }\r\n\r\n      this._options.multidateSeparator = _multidateSeparator;\r\n    };\r\n\r\n    _createClass(DateTimePicker, null, [{\r\n      key: \"NAME\",\r\n      get: function get() {\r\n        return NAME;\r\n      }\r\n      /**\r\n       * @return {string}\r\n       */\r\n\r\n    }, {\r\n      key: \"DATA_KEY\",\r\n      get: function get() {\r\n        return DATA_KEY;\r\n      }\r\n      /**\r\n       * @return {string}\r\n       */\r\n\r\n    }, {\r\n      key: \"EVENT_KEY\",\r\n      get: function get() {\r\n        return EVENT_KEY;\r\n      }\r\n      /**\r\n       * @return {string}\r\n       */\r\n\r\n    }, {\r\n      key: \"DATA_API_KEY\",\r\n      get: function get() {\r\n        return DATA_API_KEY;\r\n      }\r\n    }, {\r\n      key: \"DatePickerModes\",\r\n      get: function get() {\r\n        return DatePickerModes;\r\n      }\r\n    }, {\r\n      key: \"ViewModes\",\r\n      get: function get() {\r\n        return ViewModes;\r\n      }\r\n    }, {\r\n      key: \"Event\",\r\n      get: function get() {\r\n        return Event;\r\n      }\r\n    }, {\r\n      key: \"Selector\",\r\n      get: function get() {\r\n        return Selector;\r\n      }\r\n    }, {\r\n      key: \"Default\",\r\n      get: function get() {\r\n        return Default;\r\n      },\r\n      set: function set(value) {\r\n        Default = value;\r\n      }\r\n    }, {\r\n      key: \"ClassName\",\r\n      get: function get() {\r\n        return ClassName;\r\n      }\r\n    }]);\r\n\r\n    return DateTimePicker;\r\n  }();\r\n\r\n  return DateTimePicker;\r\n}(jQuery, moment); //noinspection JSUnusedGlobalSymbols\r\n\r\n/* global DateTimePicker */\r\n\r\n/* global feather */\r\n\r\n\r\nvar TempusDominusBootstrap4 = function ($) {\r\n  // eslint-disable-line no-unused-vars\r\n  // ReSharper disable once InconsistentNaming\r\n  var JQUERY_NO_CONFLICT = $.fn[DateTimePicker.NAME],\r\n      verticalModes = ['top', 'bottom', 'auto'],\r\n      horizontalModes = ['left', 'right', 'auto'],\r\n      toolbarPlacements = ['default', 'top', 'bottom'],\r\n      getSelectorFromElement = function getSelectorFromElement($element) {\r\n    var selector = $element.data('target'),\r\n        $selector;\r\n\r\n    if (!selector) {\r\n      selector = $element.attr('href') || '';\r\n      selector = /^#[a-z]/i.test(selector) ? selector : null;\r\n    }\r\n\r\n    $selector = $(selector);\r\n\r\n    if ($selector.length === 0) {\r\n      return $element;\r\n    }\r\n\r\n    if (!$selector.data(DateTimePicker.DATA_KEY)) {\r\n      $.extend({}, $selector.data(), $(this).data());\r\n    }\r\n\r\n    return $selector;\r\n  }; // ReSharper disable once InconsistentNaming\r\n\r\n\r\n  var TempusDominusBootstrap4 = /*#__PURE__*/function (_DateTimePicker) {\r\n    _inheritsLoose(TempusDominusBootstrap4, _DateTimePicker);\r\n\r\n    function TempusDominusBootstrap4(element, options) {\r\n      var _this;\r\n\r\n      _this = _DateTimePicker.call(this, element, options) || this;\r\n\r\n      _this._init();\r\n\r\n      return _this;\r\n    }\r\n\r\n    var _proto2 = TempusDominusBootstrap4.prototype;\r\n\r\n    _proto2._init = function _init() {\r\n      if (this._element.hasClass('input-group')) {\r\n        var datepickerButton = this._element.find('.datepickerbutton');\r\n\r\n        if (datepickerButton.length === 0) {\r\n          this.component = this._element.find('[data-toggle=\"datetimepicker\"]');\r\n        } else {\r\n          this.component = datepickerButton;\r\n        }\r\n      }\r\n    };\r\n\r\n    _proto2._iconTag = function _iconTag(iconName) {\r\n      if (typeof feather !== 'undefined' && this._useFeatherIcons() && feather.icons[iconName]) {\r\n        return $('<span>').html(feather.icons[iconName].toSvg());\r\n      } else {\r\n        return $('<span>').addClass(iconName);\r\n      }\r\n    };\r\n\r\n    _proto2._getDatePickerTemplate = function _getDatePickerTemplate() {\r\n      var headTemplate = $('<thead>').append($('<tr>').append($('<th>').addClass('prev').attr('data-action', 'previous').append(this._iconTag(this._options.icons.previous))).append($('<th>').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', \"\" + (this._options.calendarWeeks ? '6' : '5'))).append($('<th>').addClass('next').attr('data-action', 'next').append(this._iconTag(this._options.icons.next)))),\r\n          contTemplate = $('<tbody>').append($('<tr>').append($('<td>').attr('colspan', \"\" + (this._options.calendarWeeks ? '8' : '7'))));\r\n      return [$('<div>').addClass('datepicker-days').append($('<table>').addClass('table table-sm').append(headTemplate).append($('<tbody>'))), $('<div>').addClass('datepicker-months').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-years').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-decades').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone()))];\r\n    };\r\n\r\n    _proto2._getTimePickerMainTemplate = function _getTimePickerMainTemplate() {\r\n      var topRow = $('<tr>'),\r\n          middleRow = $('<tr>'),\r\n          bottomRow = $('<tr>');\r\n\r\n      if (this._isEnabled('h')) {\r\n        topRow.append($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'title': this._options.tooltips.incrementHour\r\n        }).addClass('btn').attr('data-action', 'incrementHours').append(this._iconTag(this._options.icons.up))));\r\n        middleRow.append($('<td>').append($('<span>').addClass('timepicker-hour').attr({\r\n          'data-time-component': 'hours',\r\n          'title': this._options.tooltips.pickHour\r\n        }).attr('data-action', 'showHours')));\r\n        bottomRow.append($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'title': this._options.tooltips.decrementHour\r\n        }).addClass('btn').attr('data-action', 'decrementHours').append(this._iconTag(this._options.icons.down))));\r\n      }\r\n\r\n      if (this._isEnabled('m')) {\r\n        if (this._isEnabled('h')) {\r\n          topRow.append($('<td>').addClass('separator'));\r\n          middleRow.append($('<td>').addClass('separator').html(':'));\r\n          bottomRow.append($('<td>').addClass('separator'));\r\n        }\r\n\r\n        topRow.append($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'title': this._options.tooltips.incrementMinute\r\n        }).addClass('btn').attr('data-action', 'incrementMinutes').append(this._iconTag(this._options.icons.up))));\r\n        middleRow.append($('<td>').append($('<span>').addClass('timepicker-minute').attr({\r\n          'data-time-component': 'minutes',\r\n          'title': this._options.tooltips.pickMinute\r\n        }).attr('data-action', 'showMinutes')));\r\n        bottomRow.append($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'title': this._options.tooltips.decrementMinute\r\n        }).addClass('btn').attr('data-action', 'decrementMinutes').append(this._iconTag(this._options.icons.down))));\r\n      }\r\n\r\n      if (this._isEnabled('s')) {\r\n        if (this._isEnabled('m')) {\r\n          topRow.append($('<td>').addClass('separator'));\r\n          middleRow.append($('<td>').addClass('separator').html(':'));\r\n          bottomRow.append($('<td>').addClass('separator'));\r\n        }\r\n\r\n        topRow.append($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'title': this._options.tooltips.incrementSecond\r\n        }).addClass('btn').attr('data-action', 'incrementSeconds').append(this._iconTag(this._options.icons.up))));\r\n        middleRow.append($('<td>').append($('<span>').addClass('timepicker-second').attr({\r\n          'data-time-component': 'seconds',\r\n          'title': this._options.tooltips.pickSecond\r\n        }).attr('data-action', 'showSeconds')));\r\n        bottomRow.append($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'title': this._options.tooltips.decrementSecond\r\n        }).addClass('btn').attr('data-action', 'decrementSeconds').append(this._iconTag(this._options.icons.down))));\r\n      }\r\n\r\n      if (!this.use24Hours) {\r\n        topRow.append($('<td>').addClass('separator'));\r\n        middleRow.append($('<td>').append($('<button>').addClass('btn btn-primary').attr({\r\n          'data-action': 'togglePeriod',\r\n          tabindex: '-1',\r\n          'title': this._options.tooltips.togglePeriod\r\n        })));\r\n        bottomRow.append($('<td>').addClass('separator'));\r\n      }\r\n\r\n      return $('<div>').addClass('timepicker-picker').append($('<table>').addClass('table-condensed').append([topRow, middleRow, bottomRow]));\r\n    };\r\n\r\n    _proto2._getTimePickerTemplate = function _getTimePickerTemplate() {\r\n      var hoursView = $('<div>').addClass('timepicker-hours').append($('<table>').addClass('table-condensed')),\r\n          minutesView = $('<div>').addClass('timepicker-minutes').append($('<table>').addClass('table-condensed')),\r\n          secondsView = $('<div>').addClass('timepicker-seconds').append($('<table>').addClass('table-condensed')),\r\n          ret = [this._getTimePickerMainTemplate()];\r\n\r\n      if (this._isEnabled('h')) {\r\n        ret.push(hoursView);\r\n      }\r\n\r\n      if (this._isEnabled('m')) {\r\n        ret.push(minutesView);\r\n      }\r\n\r\n      if (this._isEnabled('s')) {\r\n        ret.push(secondsView);\r\n      }\r\n\r\n      return ret;\r\n    };\r\n\r\n    _proto2._getToolbar = function _getToolbar() {\r\n      var row = [];\r\n\r\n      if (this._options.buttons.showToday) {\r\n        row.push($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'data-action': 'today',\r\n          'title': this._options.tooltips.today\r\n        }).append(this._iconTag(this._options.icons.today))));\r\n      }\r\n\r\n      if (!this._options.sideBySide && this._options.collapse && this._hasDate() && this._hasTime()) {\r\n        var title, icon;\r\n\r\n        if (this._options.viewMode === 'times') {\r\n          title = this._options.tooltips.selectDate;\r\n          icon = this._options.icons.date;\r\n        } else {\r\n          title = this._options.tooltips.selectTime;\r\n          icon = this._options.icons.time;\r\n        }\r\n\r\n        row.push($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'data-action': 'togglePicker',\r\n          'title': title\r\n        }).append(this._iconTag(icon))));\r\n      }\r\n\r\n      if (this._options.buttons.showClear) {\r\n        row.push($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'data-action': 'clear',\r\n          'title': this._options.tooltips.clear\r\n        }).append(this._iconTag(this._options.icons.clear))));\r\n      }\r\n\r\n      if (this._options.buttons.showClose) {\r\n        row.push($('<td>').append($('<a>').attr({\r\n          href: '#',\r\n          tabindex: '-1',\r\n          'data-action': 'close',\r\n          'title': this._options.tooltips.close\r\n        }).append(this._iconTag(this._options.icons.close))));\r\n      }\r\n\r\n      return row.length === 0 ? '' : $('<table>').addClass('table-condensed').append($('<tbody>').append($('<tr>').append(row)));\r\n    };\r\n\r\n    _proto2._getTemplate = function _getTemplate() {\r\n      var template = $('<div>').addClass((\"bootstrap-datetimepicker-widget dropdown-menu \" + (this._options.calendarWeeks ? 'tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks' : '') + \" \" + ((this._useFeatherIcons() ? 'tempusdominus-bootstrap-datetimepicker-widget-with-feather-icons' : '') + \" \")).trim()),\r\n          dateView = $('<div>').addClass('datepicker').append(this._getDatePickerTemplate()),\r\n          timeView = $('<div>').addClass('timepicker').append(this._getTimePickerTemplate()),\r\n          content = $('<ul>').addClass('list-unstyled'),\r\n          toolbar = $('<li>').addClass((\"picker-switch\" + (this._options.collapse ? ' accordion-toggle' : '') + \" \" + (\"\" + (this._useFeatherIcons() ? 'picker-switch-with-feathers-icons' : ''))).trim()).append(this._getToolbar());\r\n\r\n      if (this._options.inline) {\r\n        template.removeClass('dropdown-menu');\r\n      }\r\n\r\n      if (this.use24Hours) {\r\n        template.addClass('usetwentyfour');\r\n      }\r\n\r\n      if (this.input !== undefined && this.input.prop('readonly') || this._options.readonly) {\r\n        template.addClass('bootstrap-datetimepicker-widget-readonly');\r\n      }\r\n\r\n      if (this._isEnabled('s') && !this.use24Hours) {\r\n        template.addClass('wider');\r\n      }\r\n\r\n      if (this._options.sideBySide && this._hasDate() && this._hasTime()) {\r\n        template.addClass('timepicker-sbs');\r\n\r\n        if (this._options.toolbarPlacement === 'top') {\r\n          template.append(toolbar);\r\n        }\r\n\r\n        template.append($('<div>').addClass('row').append(dateView.addClass('col-md-6')).append(timeView.addClass('col-md-6')));\r\n\r\n        if (this._options.toolbarPlacement === 'bottom' || this._options.toolbarPlacement === 'default') {\r\n          template.append(toolbar);\r\n        }\r\n\r\n        return template;\r\n      }\r\n\r\n      if (this._options.toolbarPlacement === 'top') {\r\n        content.append(toolbar);\r\n      }\r\n\r\n      if (this._hasDate()) {\r\n        content.append($('<li>').addClass(this._options.collapse && this._hasTime() ? 'collapse' : '').addClass(this._options.collapse && this._hasTime() && this._options.viewMode === 'times' ? '' : 'show').append(dateView));\r\n      }\r\n\r\n      if (this._options.toolbarPlacement === 'default') {\r\n        content.append(toolbar);\r\n      }\r\n\r\n      if (this._hasTime()) {\r\n        content.append($('<li>').addClass(this._options.collapse && this._hasDate() ? 'collapse' : '').addClass(this._options.collapse && this._hasDate() && this._options.viewMode === 'times' ? 'show' : '').append(timeView));\r\n      }\r\n\r\n      if (this._options.toolbarPlacement === 'bottom') {\r\n        content.append(toolbar);\r\n      }\r\n\r\n      return template.append(content);\r\n    };\r\n\r\n    _proto2._place = function _place(e) {\r\n      var self = e && e.data && e.data.picker || this,\r\n          vertical = self._options.widgetPositioning.vertical,\r\n          horizontal = self._options.widgetPositioning.horizontal,\r\n          parent;\r\n      var position = (self.component && self.component.length ? self.component : self._element).position(),\r\n          offset = (self.component && self.component.length ? self.component : self._element).offset();\r\n\r\n      if (self._options.widgetParent) {\r\n        parent = self._options.widgetParent.append(self.widget);\r\n      } else if (self._element.is('input')) {\r\n        parent = self._element.after(self.widget).parent();\r\n      } else if (self._options.inline) {\r\n        parent = self._element.append(self.widget);\r\n        return;\r\n      } else {\r\n        parent = self._element;\r\n\r\n        self._element.children().first().after(self.widget);\r\n      } // Top and bottom logic\r\n\r\n\r\n      if (vertical === 'auto') {\r\n        //noinspection JSValidateTypes\r\n        if (offset.top + self.widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() && self.widget.height() + self._element.outerHeight() < offset.top) {\r\n          vertical = 'top';\r\n        } else {\r\n          vertical = 'bottom';\r\n        }\r\n      } // Left and right logic\r\n\r\n\r\n      if (horizontal === 'auto') {\r\n        if (parent.width() < offset.left + self.widget.outerWidth() / 2 && offset.left + self.widget.outerWidth() > $(window).width()) {\r\n          horizontal = 'right';\r\n        } else {\r\n          horizontal = 'left';\r\n        }\r\n      }\r\n\r\n      if (vertical === 'top') {\r\n        self.widget.addClass('top').removeClass('bottom');\r\n      } else {\r\n        self.widget.addClass('bottom').removeClass('top');\r\n      }\r\n\r\n      if (horizontal === 'right') {\r\n        self.widget.addClass('float-right');\r\n      } else {\r\n        self.widget.removeClass('float-right');\r\n      } // find the first parent element that has a relative css positioning\r\n\r\n\r\n      if (parent.css('position') !== 'relative') {\r\n        parent = parent.parents().filter(function () {\r\n          return $(this).css('position') === 'relative';\r\n        }).first();\r\n      }\r\n\r\n      if (parent.length === 0) {\r\n        throw new Error('datetimepicker component should be placed within a relative positioned container');\r\n      }\r\n\r\n      self.widget.css({\r\n        top: vertical === 'top' ? 'auto' : position.top + self._element.outerHeight() + 'px',\r\n        bottom: vertical === 'top' ? parent.outerHeight() - (parent === self._element ? 0 : position.top) + 'px' : 'auto',\r\n        left: horizontal === 'left' ? (parent === self._element ? 0 : position.left) + 'px' : 'auto',\r\n        right: horizontal === 'left' ? 'auto' : parent.outerWidth() - self._element.outerWidth() - (parent === self._element ? 0 : position.left) + 'px'\r\n      });\r\n    };\r\n\r\n    _proto2._fillDow = function _fillDow() {\r\n      var row = $('<tr>'),\r\n          currentDate = this._viewDate.clone().startOf('w').startOf('d');\r\n\r\n      if (this._options.calendarWeeks === true) {\r\n        row.append($('<th>').addClass('cw').text('#'));\r\n      }\r\n\r\n      while (currentDate.isBefore(this._viewDate.clone().endOf('w'))) {\r\n        row.append($('<th>').addClass('dow').text(currentDate.format('dd')));\r\n        currentDate.add(1, 'd');\r\n      }\r\n\r\n      this.widget.find('.datepicker-days thead').append(row);\r\n    };\r\n\r\n    _proto2._fillMonths = function _fillMonths() {\r\n      var spans = [],\r\n          monthsShort = this._viewDate.clone().startOf('y').startOf('d');\r\n\r\n      while (monthsShort.isSame(this._viewDate, 'y')) {\r\n        spans.push($('<span>').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM')));\r\n        monthsShort.add(1, 'M');\r\n      }\r\n\r\n      this.widget.find('.datepicker-months td').empty().append(spans);\r\n    };\r\n\r\n    _proto2._updateMonths = function _updateMonths() {\r\n      var monthsView = this.widget.find('.datepicker-months'),\r\n          monthsViewHeader = monthsView.find('th'),\r\n          months = monthsView.find('tbody').find('span'),\r\n          self = this,\r\n          lastPickedDate = this._getLastPickedDate();\r\n\r\n      monthsViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevYear);\r\n      monthsViewHeader.eq(1).attr('title', this._options.tooltips.selectYear);\r\n      monthsViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextYear);\r\n      monthsView.find('.disabled').removeClass('disabled');\r\n\r\n      if (!this._isValid(this._viewDate.clone().subtract(1, 'y'), 'y')) {\r\n        monthsViewHeader.eq(0).addClass('disabled');\r\n      }\r\n\r\n      monthsViewHeader.eq(1).text(this._viewDate.year());\r\n\r\n      if (!this._isValid(this._viewDate.clone().add(1, 'y'), 'y')) {\r\n        monthsViewHeader.eq(2).addClass('disabled');\r\n      }\r\n\r\n      months.removeClass('active');\r\n\r\n      if (lastPickedDate && lastPickedDate.isSame(this._viewDate, 'y') && !this.unset) {\r\n        months.eq(lastPickedDate.month()).addClass('active');\r\n      }\r\n\r\n      months.each(function (index) {\r\n        if (!self._isValid(self._viewDate.clone().month(index), 'M')) {\r\n          $(this).addClass('disabled');\r\n        }\r\n      });\r\n    };\r\n\r\n    _proto2._getStartEndYear = function _getStartEndYear(factor, year) {\r\n      var step = factor / 10,\r\n          startYear = Math.floor(year / factor) * factor,\r\n          endYear = startYear + step * 9,\r\n          focusValue = Math.floor(year / step) * step;\r\n      return [startYear, endYear, focusValue];\r\n    };\r\n\r\n    _proto2._updateYears = function _updateYears() {\r\n      var yearsView = this.widget.find('.datepicker-years'),\r\n          yearsViewHeader = yearsView.find('th'),\r\n          yearCaps = this._getStartEndYear(10, this._viewDate.year()),\r\n          startYear = this._viewDate.clone().year(yearCaps[0]),\r\n          endYear = this._viewDate.clone().year(yearCaps[1]);\r\n\r\n      var html = '';\r\n      yearsViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevDecade);\r\n      yearsViewHeader.eq(1).attr('title', this._options.tooltips.selectDecade);\r\n      yearsViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextDecade);\r\n      yearsView.find('.disabled').removeClass('disabled');\r\n\r\n      if (this._options.minDate && this._options.minDate.isAfter(startYear, 'y')) {\r\n        yearsViewHeader.eq(0).addClass('disabled');\r\n      }\r\n\r\n      yearsViewHeader.eq(1).text(startYear.year() + \"-\" + endYear.year());\r\n\r\n      if (this._options.maxDate && this._options.maxDate.isBefore(endYear, 'y')) {\r\n        yearsViewHeader.eq(2).addClass('disabled');\r\n      }\r\n\r\n      html += \"<span data-action=\\\"selectYear\\\" class=\\\"year old\" + (!this._isValid(startYear, 'y') ? ' disabled' : '') + \"\\\">\" + (startYear.year() - 1) + \"</span>\";\r\n\r\n      while (!startYear.isAfter(endYear, 'y')) {\r\n        html += \"<span data-action=\\\"selectYear\\\" class=\\\"year\" + (startYear.isSame(this._getLastPickedDate(), 'y') && !this.unset ? ' active' : '') + (!this._isValid(startYear, 'y') ? ' disabled' : '') + \"\\\">\" + startYear.year() + \"</span>\";\r\n        startYear.add(1, 'y');\r\n      }\r\n\r\n      html += \"<span data-action=\\\"selectYear\\\" class=\\\"year old\" + (!this._isValid(startYear, 'y') ? ' disabled' : '') + \"\\\">\" + startYear.year() + \"</span>\";\r\n      yearsView.find('td').html(html);\r\n    };\r\n\r\n    _proto2._updateDecades = function _updateDecades() {\r\n      var decadesView = this.widget.find('.datepicker-decades'),\r\n          decadesViewHeader = decadesView.find('th'),\r\n          yearCaps = this._getStartEndYear(100, this._viewDate.year()),\r\n          startDecade = this._viewDate.clone().year(yearCaps[0]),\r\n          endDecade = this._viewDate.clone().year(yearCaps[1]),\r\n          lastPickedDate = this._getLastPickedDate();\r\n\r\n      var minDateDecade = false,\r\n          maxDateDecade = false,\r\n          endDecadeYear,\r\n          html = '';\r\n      decadesViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevCentury);\r\n      decadesViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextCentury);\r\n      decadesView.find('.disabled').removeClass('disabled');\r\n\r\n      if (startDecade.year() === 0 || this._options.minDate && this._options.minDate.isAfter(startDecade, 'y')) {\r\n        decadesViewHeader.eq(0).addClass('disabled');\r\n      }\r\n\r\n      decadesViewHeader.eq(1).text(startDecade.year() + \"-\" + endDecade.year());\r\n\r\n      if (this._options.maxDate && this._options.maxDate.isBefore(endDecade, 'y')) {\r\n        decadesViewHeader.eq(2).addClass('disabled');\r\n      }\r\n\r\n      if (startDecade.year() - 10 < 0) {\r\n        html += '<span>&nbsp;</span>';\r\n      } else {\r\n        html += \"<span data-action=\\\"selectDecade\\\" class=\\\"decade old\\\" data-selection=\\\"\" + (startDecade.year() + 6) + \"\\\">\" + (startDecade.year() - 10) + \"</span>\";\r\n      }\r\n\r\n      while (!startDecade.isAfter(endDecade, 'y')) {\r\n        endDecadeYear = startDecade.year() + 11;\r\n        minDateDecade = this._options.minDate && this._options.minDate.isAfter(startDecade, 'y') && this._options.minDate.year() <= endDecadeYear;\r\n        maxDateDecade = this._options.maxDate && this._options.maxDate.isAfter(startDecade, 'y') && this._options.maxDate.year() <= endDecadeYear;\r\n        html += \"<span data-action=\\\"selectDecade\\\" class=\\\"decade\" + (lastPickedDate && lastPickedDate.isAfter(startDecade) && lastPickedDate.year() <= endDecadeYear ? ' active' : '') + (!this._isValid(startDecade, 'y') && !minDateDecade && !maxDateDecade ? ' disabled' : '') + \"\\\" data-selection=\\\"\" + (startDecade.year() + 6) + \"\\\">\" + startDecade.year() + \"</span>\";\r\n        startDecade.add(10, 'y');\r\n      }\r\n\r\n      html += \"<span data-action=\\\"selectDecade\\\" class=\\\"decade old\\\" data-selection=\\\"\" + (startDecade.year() + 6) + \"\\\">\" + startDecade.year() + \"</span>\";\r\n      decadesView.find('td').html(html);\r\n    };\r\n\r\n    _proto2._fillDate = function _fillDate() {\r\n      _DateTimePicker.prototype._fillDate.call(this);\r\n\r\n      var daysView = this.widget.find('.datepicker-days'),\r\n          daysViewHeader = daysView.find('th'),\r\n          html = [];\r\n      var currentDate, row, clsName, i;\r\n\r\n      if (!this._hasDate()) {\r\n        return;\r\n      }\r\n\r\n      daysViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevMonth);\r\n      daysViewHeader.eq(1).attr('title', this._options.tooltips.selectMonth);\r\n      daysViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextMonth);\r\n      daysView.find('.disabled').removeClass('disabled');\r\n      daysViewHeader.eq(1).text(this._viewDate.format(this._options.dayViewHeaderFormat));\r\n\r\n      if (!this._isValid(this._viewDate.clone().subtract(1, 'M'), 'M')) {\r\n        daysViewHeader.eq(0).addClass('disabled');\r\n      }\r\n\r\n      if (!this._isValid(this._viewDate.clone().add(1, 'M'), 'M')) {\r\n        daysViewHeader.eq(2).addClass('disabled');\r\n      }\r\n\r\n      currentDate = this._viewDate.clone().startOf('M').startOf('w').startOf('d');\r\n\r\n      for (i = 0; i < 42; i++) {\r\n        //always display 42 days (should show 6 weeks)\r\n        if (currentDate.weekday() === 0) {\r\n          row = $('<tr>');\r\n\r\n          if (this._options.calendarWeeks) {\r\n            row.append(\"<td class=\\\"cw\\\">\" + currentDate.week() + \"</td>\");\r\n          }\r\n\r\n          html.push(row);\r\n        }\r\n\r\n        clsName = '';\r\n\r\n        if (currentDate.isBefore(this._viewDate, 'M')) {\r\n          clsName += ' old';\r\n        }\r\n\r\n        if (currentDate.isAfter(this._viewDate, 'M')) {\r\n          clsName += ' new';\r\n        }\r\n\r\n        if (this._options.allowMultidate) {\r\n          var index = this._datesFormatted.indexOf(currentDate.format('YYYY-MM-DD'));\r\n\r\n          if (index !== -1) {\r\n            if (currentDate.isSame(this._datesFormatted[index], 'd') && !this.unset) {\r\n              clsName += ' active';\r\n            }\r\n          }\r\n        } else {\r\n          if (currentDate.isSame(this._getLastPickedDate(), 'd') && !this.unset) {\r\n            clsName += ' active';\r\n          }\r\n        }\r\n\r\n        if (!this._isValid(currentDate, 'd')) {\r\n          clsName += ' disabled';\r\n        }\r\n\r\n        if (currentDate.isSame(this.getMoment(), 'd')) {\r\n          clsName += ' today';\r\n        }\r\n\r\n        if (currentDate.day() === 0 || currentDate.day() === 6) {\r\n          clsName += ' weekend';\r\n        }\r\n\r\n        row.append(\"<td data-action=\\\"selectDay\\\" data-day=\\\"\" + currentDate.format('L') + \"\\\" class=\\\"day\" + clsName + \"\\\">\" + currentDate.date() + \"</td>\");\r\n        currentDate.add(1, 'd');\r\n      }\r\n\r\n      $('body').addClass('tempusdominus-bootstrap-datetimepicker-widget-day-click');\r\n      $('body').append('<div class=\"tempusdominus-bootstrap-datetimepicker-widget-day-click-glass-panel\"></div>');\r\n      daysView.find('tbody').empty().append(html);\r\n      $('body').find('.tempusdominus-bootstrap-datetimepicker-widget-day-click-glass-panel').remove();\r\n      $('body').removeClass('tempusdominus-bootstrap-datetimepicker-widget-day-click');\r\n\r\n      this._updateMonths();\r\n\r\n      this._updateYears();\r\n\r\n      this._updateDecades();\r\n    };\r\n\r\n    _proto2._fillHours = function _fillHours() {\r\n      var table = this.widget.find('.timepicker-hours table'),\r\n          currentHour = this._viewDate.clone().startOf('d'),\r\n          html = [];\r\n\r\n      var row = $('<tr>');\r\n\r\n      if (this._viewDate.hour() > 11 && !this.use24Hours) {\r\n        currentHour.hour(12);\r\n      }\r\n\r\n      while (currentHour.isSame(this._viewDate, 'd') && (this.use24Hours || this._viewDate.hour() < 12 && currentHour.hour() < 12 || this._viewDate.hour() > 11)) {\r\n        if (currentHour.hour() % 4 === 0) {\r\n          row = $('<tr>');\r\n          html.push(row);\r\n        }\r\n\r\n        row.append(\"<td data-action=\\\"selectHour\\\" class=\\\"hour\" + (!this._isValid(currentHour, 'h') ? ' disabled' : '') + \"\\\">\" + currentHour.format(this.use24Hours ? 'HH' : 'hh') + \"</td>\");\r\n        currentHour.add(1, 'h');\r\n      }\r\n\r\n      table.empty().append(html);\r\n    };\r\n\r\n    _proto2._fillMinutes = function _fillMinutes() {\r\n      var table = this.widget.find('.timepicker-minutes table'),\r\n          currentMinute = this._viewDate.clone().startOf('h'),\r\n          html = [],\r\n          step = this._options.stepping === 1 ? 5 : this._options.stepping;\r\n\r\n      var row = $('<tr>');\r\n\r\n      while (this._viewDate.isSame(currentMinute, 'h')) {\r\n        if (currentMinute.minute() % (step * 4) === 0) {\r\n          row = $('<tr>');\r\n          html.push(row);\r\n        }\r\n\r\n        row.append(\"<td data-action=\\\"selectMinute\\\" class=\\\"minute\" + (!this._isValid(currentMinute, 'm') ? ' disabled' : '') + \"\\\">\" + currentMinute.format('mm') + \"</td>\");\r\n        currentMinute.add(step, 'm');\r\n      }\r\n\r\n      table.empty().append(html);\r\n    };\r\n\r\n    _proto2._fillSeconds = function _fillSeconds() {\r\n      var table = this.widget.find('.timepicker-seconds table'),\r\n          currentSecond = this._viewDate.clone().startOf('m'),\r\n          html = [];\r\n\r\n      var row = $('<tr>');\r\n\r\n      while (this._viewDate.isSame(currentSecond, 'm')) {\r\n        if (currentSecond.second() % 20 === 0) {\r\n          row = $('<tr>');\r\n          html.push(row);\r\n        }\r\n\r\n        row.append(\"<td data-action=\\\"selectSecond\\\" class=\\\"second\" + (!this._isValid(currentSecond, 's') ? ' disabled' : '') + \"\\\">\" + currentSecond.format('ss') + \"</td>\");\r\n        currentSecond.add(5, 's');\r\n      }\r\n\r\n      table.empty().append(html);\r\n    };\r\n\r\n    _proto2._fillTime = function _fillTime() {\r\n      var toggle, newDate;\r\n\r\n      var timeComponents = this.widget.find('.timepicker span[data-time-component]'),\r\n          lastPickedDate = this._getLastPickedDate();\r\n\r\n      if (!this.use24Hours) {\r\n        toggle = this.widget.find('.timepicker [data-action=togglePeriod]');\r\n        newDate = lastPickedDate ? lastPickedDate.clone().add(lastPickedDate.hours() >= 12 ? -12 : 12, 'h') : void 0;\r\n        lastPickedDate && toggle.text(lastPickedDate.format('A'));\r\n\r\n        if (this._isValid(newDate, 'h')) {\r\n          toggle.removeClass('disabled');\r\n        } else {\r\n          toggle.addClass('disabled');\r\n        }\r\n      }\r\n\r\n      lastPickedDate && timeComponents.filter('[data-time-component=hours]').text(lastPickedDate.format(\"\" + (this.use24Hours ? 'HH' : 'hh')));\r\n      lastPickedDate && timeComponents.filter('[data-time-component=minutes]').text(lastPickedDate.format('mm'));\r\n      lastPickedDate && timeComponents.filter('[data-time-component=seconds]').text(lastPickedDate.format('ss'));\r\n\r\n      this._fillHours();\r\n\r\n      this._fillMinutes();\r\n\r\n      this._fillSeconds();\r\n    };\r\n\r\n    _proto2._doAction = function _doAction(e, action) {\r\n      var lastPicked = this._getLastPickedDate();\r\n\r\n      if ($(e.currentTarget).is('.disabled')) {\r\n        return false;\r\n      }\r\n\r\n      action = action || $(e.currentTarget).data('action');\r\n\r\n      switch (action) {\r\n        case 'next':\r\n          {\r\n            var navFnc = DateTimePicker.DatePickerModes[this.currentViewMode].NAV_FUNCTION;\r\n\r\n            this._viewDate.add(DateTimePicker.DatePickerModes[this.currentViewMode].NAV_STEP, navFnc);\r\n\r\n            this._fillDate();\r\n\r\n            this._viewUpdate(navFnc);\r\n\r\n            break;\r\n          }\r\n\r\n        case 'previous':\r\n          {\r\n            var _navFnc = DateTimePicker.DatePickerModes[this.currentViewMode].NAV_FUNCTION;\r\n\r\n            this._viewDate.subtract(DateTimePicker.DatePickerModes[this.currentViewMode].NAV_STEP, _navFnc);\r\n\r\n            this._fillDate();\r\n\r\n            this._viewUpdate(_navFnc);\r\n\r\n            break;\r\n          }\r\n\r\n        case 'pickerSwitch':\r\n          this._showMode(1);\r\n\r\n          break;\r\n\r\n        case 'selectMonth':\r\n          {\r\n            var month = $(e.target).closest('tbody').find('span').index($(e.target));\r\n\r\n            this._viewDate.month(month);\r\n\r\n            if (this.currentViewMode === this.MinViewModeNumber) {\r\n              this._setValue(lastPicked.clone().year(this._viewDate.year()).month(this._viewDate.month()), this._getLastPickedDateIndex());\r\n\r\n              if (!this._options.inline) {\r\n                this.hide();\r\n              }\r\n            } else {\r\n              this._showMode(-1);\r\n\r\n              this._fillDate();\r\n            }\r\n\r\n            this._viewUpdate('M');\r\n\r\n            break;\r\n          }\r\n\r\n        case 'selectYear':\r\n          {\r\n            var year = parseInt($(e.target).text(), 10) || 0;\r\n\r\n            this._viewDate.year(year);\r\n\r\n            if (this.currentViewMode === this.MinViewModeNumber) {\r\n              this._setValue(lastPicked.clone().year(this._viewDate.year()), this._getLastPickedDateIndex());\r\n\r\n              if (!this._options.inline) {\r\n                this.hide();\r\n              }\r\n            } else {\r\n              this._showMode(-1);\r\n\r\n              this._fillDate();\r\n            }\r\n\r\n            this._viewUpdate('YYYY');\r\n\r\n            break;\r\n          }\r\n\r\n        case 'selectDecade':\r\n          {\r\n            var _year = parseInt($(e.target).data('selection'), 10) || 0;\r\n\r\n            this._viewDate.year(_year);\r\n\r\n            if (this.currentViewMode === this.MinViewModeNumber) {\r\n              this._setValue(lastPicked.clone().year(this._viewDate.year()), this._getLastPickedDateIndex());\r\n\r\n              if (!this._options.inline) {\r\n                this.hide();\r\n              }\r\n            } else {\r\n              this._showMode(-1);\r\n\r\n              this._fillDate();\r\n            }\r\n\r\n            this._viewUpdate('YYYY');\r\n\r\n            break;\r\n          }\r\n\r\n        case 'selectDay':\r\n          {\r\n            var day = this._viewDate.clone();\r\n\r\n            if ($(e.target).is('.old')) {\r\n              day.subtract(1, 'M');\r\n            }\r\n\r\n            if ($(e.target).is('.new')) {\r\n              day.add(1, 'M');\r\n            }\r\n\r\n            var selectDate = day.date(parseInt($(e.target).text(), 10)),\r\n                index = 0;\r\n\r\n            if (this._options.allowMultidate) {\r\n              index = this._datesFormatted.indexOf(selectDate.format('YYYY-MM-DD'));\r\n\r\n              if (index !== -1) {\r\n                this._setValue(null, index); //deselect multidate\r\n\r\n              } else {\r\n                this._setValue(selectDate, this._getLastPickedDateIndex() + 1);\r\n              }\r\n            } else {\r\n              this._setValue(selectDate, this._getLastPickedDateIndex());\r\n            }\r\n\r\n            if (!this._hasTime() && !this._options.keepOpen && !this._options.inline && !this._options.allowMultidate) {\r\n              this.hide();\r\n            }\r\n\r\n            break;\r\n          }\r\n\r\n        case 'incrementHours':\r\n          {\r\n            if (!lastPicked) {\r\n              break;\r\n            }\r\n\r\n            var newDate = lastPicked.clone().add(1, 'h');\r\n\r\n            if (this._isValid(newDate, 'h')) {\r\n              if (this._getLastPickedDateIndex() < 0) {\r\n                this.date(newDate);\r\n              }\r\n\r\n              this._setValue(newDate, this._getLastPickedDateIndex());\r\n            }\r\n\r\n            break;\r\n          }\r\n\r\n        case 'incrementMinutes':\r\n          {\r\n            if (!lastPicked) {\r\n              break;\r\n            }\r\n\r\n            var _newDate = lastPicked.clone().add(this._options.stepping, 'm');\r\n\r\n            if (this._isValid(_newDate, 'm')) {\r\n              if (this._getLastPickedDateIndex() < 0) {\r\n                this.date(_newDate);\r\n              }\r\n\r\n              this._setValue(_newDate, this._getLastPickedDateIndex());\r\n            }\r\n\r\n            break;\r\n          }\r\n\r\n        case 'incrementSeconds':\r\n          {\r\n            if (!lastPicked) {\r\n              break;\r\n            }\r\n\r\n            var _newDate2 = lastPicked.clone().add(1, 's');\r\n\r\n            if (this._isValid(_newDate2, 's')) {\r\n              if (this._getLastPickedDateIndex() < 0) {\r\n                this.date(_newDate2);\r\n              }\r\n\r\n              this._setValue(_newDate2, this._getLastPickedDateIndex());\r\n            }\r\n\r\n            break;\r\n          }\r\n\r\n        case 'decrementHours':\r\n          {\r\n            if (!lastPicked) {\r\n              break;\r\n            }\r\n\r\n            var _newDate3 = lastPicked.clone().subtract(1, 'h');\r\n\r\n            if (this._isValid(_newDate3, 'h')) {\r\n              if (this._getLastPickedDateIndex() < 0) {\r\n                this.date(_newDate3);\r\n              }\r\n\r\n              this._setValue(_newDate3, this._getLastPickedDateIndex());\r\n            }\r\n\r\n            break;\r\n          }\r\n\r\n        case 'decrementMinutes':\r\n          {\r\n            if (!lastPicked) {\r\n              break;\r\n            }\r\n\r\n            var _newDate4 = lastPicked.clone().subtract(this._options.stepping, 'm');\r\n\r\n            if (this._isValid(_newDate4, 'm')) {\r\n              if (this._getLastPickedDateIndex() < 0) {\r\n                this.date(_newDate4);\r\n              }\r\n\r\n              this._setValue(_newDate4, this._getLastPickedDateIndex());\r\n            }\r\n\r\n            break;\r\n          }\r\n\r\n        case 'decrementSeconds':\r\n          {\r\n            if (!lastPicked) {\r\n              break;\r\n            }\r\n\r\n            var _newDate5 = lastPicked.clone().subtract(1, 's');\r\n\r\n            if (this._isValid(_newDate5, 's')) {\r\n              if (this._getLastPickedDateIndex() < 0) {\r\n                this.date(_newDate5);\r\n              }\r\n\r\n              this._setValue(_newDate5, this._getLastPickedDateIndex());\r\n            }\r\n\r\n            break;\r\n          }\r\n\r\n        case 'togglePeriod':\r\n          {\r\n            this._setValue(lastPicked.clone().add(lastPicked.hours() >= 12 ? -12 : 12, 'h'), this._getLastPickedDateIndex());\r\n\r\n            break;\r\n          }\r\n\r\n        case 'togglePicker':\r\n          {\r\n            var $this = $(e.target),\r\n                $link = $this.closest('a'),\r\n                $parent = $this.closest('ul'),\r\n                expanded = $parent.find('.show'),\r\n                closed = $parent.find('.collapse:not(.show)'),\r\n                $span = $this.is('span') ? $this : $this.find('span');\r\n            var collapseData, inactiveIcon, iconTest;\r\n\r\n            if (expanded && expanded.length) {\r\n              collapseData = expanded.data('collapse');\r\n\r\n              if (collapseData && collapseData.transitioning) {\r\n                return true;\r\n              }\r\n\r\n              if (expanded.collapse) {\r\n                // if collapse plugin is available through bootstrap.js then use it\r\n                expanded.collapse('hide');\r\n                closed.collapse('show');\r\n              } else {\r\n                // otherwise just toggle in class on the two views\r\n                expanded.removeClass('show');\r\n                closed.addClass('show');\r\n              }\r\n\r\n              if (this._useFeatherIcons()) {\r\n                $link.toggleClass(this._options.icons.time + ' ' + this._options.icons.date);\r\n                inactiveIcon = $link.hasClass(this._options.icons.time) ? this._options.icons.date : this._options.icons.time;\r\n                $link.html(this._iconTag(inactiveIcon));\r\n              } else {\r\n                $span.toggleClass(this._options.icons.time + ' ' + this._options.icons.date);\r\n              }\r\n\r\n              if (this._useFeatherIcons()) {\r\n                iconTest = $link.hasClass(this._options.icons.date);\r\n              } else {\r\n                iconTest = $span.hasClass(this._options.icons.date);\r\n              }\r\n\r\n              if (iconTest) {\r\n                $link.attr('title', this._options.tooltips.selectDate);\r\n              } else {\r\n                $link.attr('title', this._options.tooltips.selectTime);\r\n              }\r\n            }\r\n          }\r\n          break;\r\n\r\n        case 'showPicker':\r\n          this.widget.find('.timepicker > div:not(.timepicker-picker)').hide();\r\n          this.widget.find('.timepicker .timepicker-picker').show();\r\n          break;\r\n\r\n        case 'showHours':\r\n          this.widget.find('.timepicker .timepicker-picker').hide();\r\n          this.widget.find('.timepicker .timepicker-hours').show();\r\n          break;\r\n\r\n        case 'showMinutes':\r\n          this.widget.find('.timepicker .timepicker-picker').hide();\r\n          this.widget.find('.timepicker .timepicker-minutes').show();\r\n          break;\r\n\r\n        case 'showSeconds':\r\n          this.widget.find('.timepicker .timepicker-picker').hide();\r\n          this.widget.find('.timepicker .timepicker-seconds').show();\r\n          break;\r\n\r\n        case 'selectHour':\r\n          {\r\n            var hour = parseInt($(e.target).text(), 10);\r\n\r\n            if (!this.use24Hours) {\r\n              if (lastPicked.hours() >= 12) {\r\n                if (hour !== 12) {\r\n                  hour += 12;\r\n                }\r\n              } else {\r\n                if (hour === 12) {\r\n                  hour = 0;\r\n                }\r\n              }\r\n            }\r\n\r\n            this._setValue(lastPicked.clone().hours(hour), this._getLastPickedDateIndex());\r\n\r\n            if (!this._isEnabled('a') && !this._isEnabled('m') && !this._options.keepOpen && !this._options.inline) {\r\n              this.hide();\r\n            } else {\r\n              this._doAction(e, 'showPicker');\r\n            }\r\n\r\n            break;\r\n          }\r\n\r\n        case 'selectMinute':\r\n          this._setValue(lastPicked.clone().minutes(parseInt($(e.target).text(), 10)), this._getLastPickedDateIndex());\r\n\r\n          if (!this._isEnabled('a') && !this._isEnabled('s') && !this._options.keepOpen && !this._options.inline) {\r\n            this.hide();\r\n          } else {\r\n            this._doAction(e, 'showPicker');\r\n          }\r\n\r\n          break;\r\n\r\n        case 'selectSecond':\r\n          this._setValue(lastPicked.clone().seconds(parseInt($(e.target).text(), 10)), this._getLastPickedDateIndex());\r\n\r\n          if (!this._isEnabled('a') && !this._options.keepOpen && !this._options.inline) {\r\n            this.hide();\r\n          } else {\r\n            this._doAction(e, 'showPicker');\r\n          }\r\n\r\n          break;\r\n\r\n        case 'clear':\r\n          this.clear();\r\n          break;\r\n\r\n        case 'close':\r\n          this.hide();\r\n          break;\r\n\r\n        case 'today':\r\n          {\r\n            var todaysDate = this.getMoment();\r\n\r\n            if (this._isValid(todaysDate, 'd')) {\r\n              this._setValue(todaysDate, this._getLastPickedDateIndex());\r\n            }\r\n\r\n            break;\r\n          }\r\n      }\r\n\r\n      return false;\r\n    } //public\r\n    ;\r\n\r\n    _proto2.hide = function hide() {\r\n      var transitioning = false;\r\n\r\n      if (!this.widget) {\r\n        return;\r\n      } // Ignore event if in the middle of a picker transition\r\n\r\n\r\n      this.widget.find('.collapse').each(function () {\r\n        var collapseData = $(this).data('collapse');\r\n\r\n        if (collapseData && collapseData.transitioning) {\r\n          transitioning = true;\r\n          return false;\r\n        }\r\n\r\n        return true;\r\n      });\r\n\r\n      if (transitioning) {\r\n        return;\r\n      }\r\n\r\n      if (this.component && this.component.hasClass('btn')) {\r\n        this.component.toggleClass('active');\r\n      }\r\n\r\n      this.widget.hide();\r\n      $(window).off('resize', this._place);\r\n      this.widget.off('click', '[data-action]');\r\n      this.widget.off('mousedown', false);\r\n      this.widget.remove();\r\n      this.widget = false;\r\n\r\n      if (this.input !== undefined && this.input.val() !== undefined && this.input.val().trim().length !== 0) {\r\n        this._setValue(this._parseInputDate(this.input.val().trim(), {\r\n          isPickerShow: false\r\n        }), 0);\r\n      }\r\n\r\n      var lastPickedDate = this._getLastPickedDate();\r\n\r\n      this._notifyEvent({\r\n        type: DateTimePicker.Event.HIDE,\r\n        date: this.unset ? null : lastPickedDate ? lastPickedDate.clone() : void 0\r\n      });\r\n\r\n      if (this.input !== undefined) {\r\n        this.input.blur();\r\n      }\r\n\r\n      this._viewDate = lastPickedDate ? lastPickedDate.clone() : this.getMoment();\r\n    };\r\n\r\n    _proto2.show = function show() {\r\n      var currentMoment,\r\n          shouldUseCurrentIfUnset = false;\r\n      var useCurrentGranularity = {\r\n        'year': function year(m) {\r\n          return m.month(0).date(1).hours(0).seconds(0).minutes(0);\r\n        },\r\n        'month': function month(m) {\r\n          return m.date(1).hours(0).seconds(0).minutes(0);\r\n        },\r\n        'day': function day(m) {\r\n          return m.hours(0).seconds(0).minutes(0);\r\n        },\r\n        'hour': function hour(m) {\r\n          return m.seconds(0).minutes(0);\r\n        },\r\n        'minute': function minute(m) {\r\n          return m.seconds(0);\r\n        }\r\n      };\r\n\r\n      if (this.input !== undefined) {\r\n        if (this.input.prop('disabled') || !this._options.ignoreReadonly && this.input.prop('readonly') || this.widget) {\r\n          return;\r\n        }\r\n\r\n        if (this.input.val() !== undefined && this.input.val().trim().length !== 0) {\r\n          this._setValue(this._parseInputDate(this.input.val().trim(), {\r\n            isPickerShow: true\r\n          }), 0);\r\n        } else {\r\n          shouldUseCurrentIfUnset = true;\r\n        }\r\n      } else {\r\n        shouldUseCurrentIfUnset = true;\r\n      }\r\n\r\n      if (shouldUseCurrentIfUnset && this.unset && this._options.useCurrent) {\r\n        currentMoment = this.getMoment();\r\n\r\n        if (typeof this._options.useCurrent === 'string') {\r\n          currentMoment = useCurrentGranularity[this._options.useCurrent](currentMoment);\r\n        }\r\n\r\n        this._setValue(currentMoment, 0);\r\n      }\r\n\r\n      this.widget = this._getTemplate();\r\n\r\n      this._fillDow();\r\n\r\n      this._fillMonths();\r\n\r\n      this.widget.find('.timepicker-hours').hide();\r\n      this.widget.find('.timepicker-minutes').hide();\r\n      this.widget.find('.timepicker-seconds').hide();\r\n\r\n      this._update();\r\n\r\n      this._showMode();\r\n\r\n      $(window).on('resize', {\r\n        picker: this\r\n      }, this._place);\r\n      this.widget.on('click', '[data-action]', $.proxy(this._doAction, this)); // this handles clicks on the widget\r\n\r\n      this.widget.on('mousedown', false);\r\n\r\n      if (this.component && this.component.hasClass('btn')) {\r\n        this.component.toggleClass('active');\r\n      }\r\n\r\n      this._place();\r\n\r\n      this.widget.show();\r\n\r\n      if (this.input !== undefined && this._options.focusOnShow && !this.input.is(':focus')) {\r\n        this.input.focus();\r\n      }\r\n\r\n      this._notifyEvent({\r\n        type: DateTimePicker.Event.SHOW\r\n      });\r\n    };\r\n\r\n    _proto2.destroy = function destroy() {\r\n      this.hide(); //todo doc off?\r\n\r\n      this._element.removeData(DateTimePicker.DATA_KEY);\r\n\r\n      this._element.removeData('date');\r\n    };\r\n\r\n    _proto2.disable = function disable() {\r\n      this.hide();\r\n\r\n      if (this.component && this.component.hasClass('btn')) {\r\n        this.component.addClass('disabled');\r\n      }\r\n\r\n      if (this.input !== undefined) {\r\n        this.input.prop('disabled', true); //todo disable this/comp if input is null\r\n      }\r\n    };\r\n\r\n    _proto2.enable = function enable() {\r\n      if (this.component && this.component.hasClass('btn')) {\r\n        this.component.removeClass('disabled');\r\n      }\r\n\r\n      if (this.input !== undefined) {\r\n        this.input.prop('disabled', false); //todo enable comp/this if input is null\r\n      }\r\n    };\r\n\r\n    _proto2.toolbarPlacement = function toolbarPlacement(_toolbarPlacement) {\r\n      if (arguments.length === 0) {\r\n        return this._options.toolbarPlacement;\r\n      }\r\n\r\n      if (typeof _toolbarPlacement !== 'string') {\r\n        throw new TypeError('toolbarPlacement() expects a string parameter');\r\n      }\r\n\r\n      if (toolbarPlacements.indexOf(_toolbarPlacement) === -1) {\r\n        throw new TypeError(\"toolbarPlacement() parameter must be one of (\" + toolbarPlacements.join(', ') + \") value\");\r\n      }\r\n\r\n      this._options.toolbarPlacement = _toolbarPlacement;\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto2.widgetPositioning = function widgetPositioning(_widgetPositioning) {\r\n      if (arguments.length === 0) {\r\n        return $.extend({}, this._options.widgetPositioning);\r\n      }\r\n\r\n      if ({}.toString.call(_widgetPositioning) !== '[object Object]') {\r\n        throw new TypeError('widgetPositioning() expects an object variable');\r\n      }\r\n\r\n      if (_widgetPositioning.horizontal) {\r\n        if (typeof _widgetPositioning.horizontal !== 'string') {\r\n          throw new TypeError('widgetPositioning() horizontal variable must be a string');\r\n        }\r\n\r\n        _widgetPositioning.horizontal = _widgetPositioning.horizontal.toLowerCase();\r\n\r\n        if (horizontalModes.indexOf(_widgetPositioning.horizontal) === -1) {\r\n          throw new TypeError(\"widgetPositioning() expects horizontal parameter to be one of (\" + horizontalModes.join(', ') + \")\");\r\n        }\r\n\r\n        this._options.widgetPositioning.horizontal = _widgetPositioning.horizontal;\r\n      }\r\n\r\n      if (_widgetPositioning.vertical) {\r\n        if (typeof _widgetPositioning.vertical !== 'string') {\r\n          throw new TypeError('widgetPositioning() vertical variable must be a string');\r\n        }\r\n\r\n        _widgetPositioning.vertical = _widgetPositioning.vertical.toLowerCase();\r\n\r\n        if (verticalModes.indexOf(_widgetPositioning.vertical) === -1) {\r\n          throw new TypeError(\"widgetPositioning() expects vertical parameter to be one of (\" + verticalModes.join(', ') + \")\");\r\n        }\r\n\r\n        this._options.widgetPositioning.vertical = _widgetPositioning.vertical;\r\n      }\r\n\r\n      this._update();\r\n    };\r\n\r\n    _proto2.widgetParent = function widgetParent(_widgetParent) {\r\n      if (arguments.length === 0) {\r\n        return this._options.widgetParent;\r\n      }\r\n\r\n      if (typeof _widgetParent === 'string') {\r\n        _widgetParent = $(_widgetParent);\r\n      }\r\n\r\n      if (_widgetParent !== null && typeof _widgetParent !== 'string' && !(_widgetParent instanceof $)) {\r\n        throw new TypeError('widgetParent() expects a string or a jQuery object parameter');\r\n      }\r\n\r\n      this._options.widgetParent = _widgetParent;\r\n\r\n      if (this.widget) {\r\n        this.hide();\r\n        this.show();\r\n      }\r\n    };\r\n\r\n    _proto2.setMultiDate = function setMultiDate(multiDateArray) {\r\n      var dateFormat = this._options.format;\r\n      this.clear();\r\n\r\n      for (var index = 0; index < multiDateArray.length; index++) {\r\n        var date = moment(multiDateArray[index], dateFormat);\r\n\r\n        this._setValue(date, index);\r\n      }\r\n    } //static\r\n    ;\r\n\r\n    TempusDominusBootstrap4._jQueryHandleThis = function _jQueryHandleThis(me, option, argument) {\r\n      var data = $(me).data(DateTimePicker.DATA_KEY);\r\n\r\n      if (typeof option === 'object') {\r\n        $.extend({}, DateTimePicker.Default, option);\r\n      }\r\n\r\n      if (!data) {\r\n        data = new TempusDominusBootstrap4($(me), option);\r\n        $(me).data(DateTimePicker.DATA_KEY, data);\r\n      }\r\n\r\n      if (typeof option === 'string') {\r\n        if (data[option] === undefined) {\r\n          throw new Error(\"No method named \\\"\" + option + \"\\\"\");\r\n        }\r\n\r\n        if (argument === undefined) {\r\n          return data[option]();\r\n        } else {\r\n          if (option === 'date') {\r\n            data.isDateUpdateThroughDateOptionFromClientCode = true;\r\n          }\r\n\r\n          var ret = data[option](argument);\r\n          data.isDateUpdateThroughDateOptionFromClientCode = false;\r\n          return ret;\r\n        }\r\n      }\r\n    };\r\n\r\n    TempusDominusBootstrap4._jQueryInterface = function _jQueryInterface(option, argument) {\r\n      if (this.length === 1) {\r\n        return TempusDominusBootstrap4._jQueryHandleThis(this[0], option, argument);\r\n      }\r\n\r\n      return this.each(function () {\r\n        TempusDominusBootstrap4._jQueryHandleThis(this, option, argument);\r\n      });\r\n    };\r\n\r\n    return TempusDominusBootstrap4;\r\n  }(DateTimePicker);\r\n  /**\r\n  * ------------------------------------------------------------------------\r\n  * jQuery\r\n  * ------------------------------------------------------------------------\r\n  */\r\n\r\n\r\n  $(document).on(DateTimePicker.Event.CLICK_DATA_API, DateTimePicker.Selector.DATA_TOGGLE, function () {\r\n    var $originalTarget = $(this),\r\n        $target = getSelectorFromElement($originalTarget),\r\n        config = $target.data(DateTimePicker.DATA_KEY);\r\n\r\n    if ($target.length === 0) {\r\n      return;\r\n    }\r\n\r\n    if (config._options.allowInputToggle && $originalTarget.is('input[data-toggle=\"datetimepicker\"]')) {\r\n      return;\r\n    }\r\n\r\n    TempusDominusBootstrap4._jQueryInterface.call($target, 'toggle');\r\n  }).on(DateTimePicker.Event.CHANGE, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\r\n    var $target = getSelectorFromElement($(this));\r\n\r\n    if ($target.length === 0 || event.isInit) {\r\n      return;\r\n    }\r\n\r\n    TempusDominusBootstrap4._jQueryInterface.call($target, '_change', event);\r\n  }).on(DateTimePicker.Event.BLUR, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\r\n    var $target = getSelectorFromElement($(this)),\r\n        config = $target.data(DateTimePicker.DATA_KEY);\r\n\r\n    if ($target.length === 0) {\r\n      return;\r\n    }\r\n\r\n    if (config._options.debug || window.debug) {\r\n      return;\r\n    }\r\n\r\n    TempusDominusBootstrap4._jQueryInterface.call($target, 'hide', event);\r\n  }).on(DateTimePicker.Event.KEYDOWN, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\r\n    var $target = getSelectorFromElement($(this));\r\n\r\n    if ($target.length === 0) {\r\n      return;\r\n    }\r\n\r\n    TempusDominusBootstrap4._jQueryInterface.call($target, '_keydown', event);\r\n  }).on(DateTimePicker.Event.KEYUP, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\r\n    var $target = getSelectorFromElement($(this));\r\n\r\n    if ($target.length === 0) {\r\n      return;\r\n    }\r\n\r\n    TempusDominusBootstrap4._jQueryInterface.call($target, '_keyup', event);\r\n  }).on(DateTimePicker.Event.FOCUS, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\r\n    var $target = getSelectorFromElement($(this)),\r\n        config = $target.data(DateTimePicker.DATA_KEY);\r\n\r\n    if ($target.length === 0) {\r\n      return;\r\n    }\r\n\r\n    if (!config._options.allowInputToggle) {\r\n      return;\r\n    }\r\n\r\n    TempusDominusBootstrap4._jQueryInterface.call($target, 'show', event);\r\n  });\r\n  $.fn[DateTimePicker.NAME] = TempusDominusBootstrap4._jQueryInterface;\r\n  $.fn[DateTimePicker.NAME].Constructor = TempusDominusBootstrap4;\r\n\r\n  $.fn[DateTimePicker.NAME].noConflict = function () {\r\n    $.fn[DateTimePicker.NAME] = JQUERY_NO_CONFLICT;\r\n    return TempusDominusBootstrap4._jQueryInterface;\r\n  };\r\n\r\n  return TempusDominusBootstrap4;\r\n}(jQuery);\r\n\r\n}();\r\n"],"names":["$","version","_inheritsLoose","subClass","superClass","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","DateTimePicker","moment","escapeRegExp","text","isValidDate","date","isValidDateTimeStr","str","trim","NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","Selector","ClassName","Event","DatePickerModes","KeyMap","ViewModes","keyState","keyPressHandled","optionsSortMap","defaultFeatherIcons","optionsSortFn","optionKeyA","optionKeyB","Default","d","element","options","_proto","targetInput","targetMoment","index","noIndex","isClear","isDateUpdateThroughDateOptionFromClientCode","isNotAllowedProgrammaticUpdate","outpValue","isInvalid","oldDate","e","val","parsedDate","granularity","eData","dataOptions","key","attributeName","a","b","format","that","dir","testDate","found","inputDate","_temp","_ref","_ref$isPickerShow","isPickerShow","handler","index2","keyBindKeys","allModifiersPressed","pressedKeys","pressedModifiers","currentKey","pressed","givenDatesArray","givenDatesIndexed","self","dDate","givenHoursArray","givenHoursIndexed","formatInput","lastPickedDate","returnMoment","_readonly","_ignoreReadonly","newOptions","optionsKeys","value","newDate","_updateOnlyThroughDateOption","newFormat","newZone","formats","dates","_daysOfWeekDisabled","previousValue","currentValue","tries","_maxDate","_minDate","_defaultDate","_locale","_stepping","_useCurrent","useCurrentOptions","_collapse","_icons","_tooltips","_useStrict","_sideBySide","_viewMode","_calendarWeeks","_buttons","_keepOpen","_focusOnShow","_inline","_keyBinds","_debug","_allowInputToggle","_keepInvalid","_datepickerInput","_parseInputDate2","_disabledTimeIntervals","hours","_allowMultidate","_multidateSeparator","JQUERY_NO_CONFLICT","verticalModes","horizontalModes","toolbarPlacements","getSelectorFromElement","$element","selector","$selector","TempusDominusBootstrap4","_DateTimePicker","_this","_proto2","datepickerButton","iconName","headTemplate","contTemplate","topRow","middleRow","bottomRow","hoursView","minutesView","secondsView","ret","row","title","icon","template","dateView","timeView","content","toolbar","vertical","horizontal","parent","position","offset","currentDate","spans","monthsShort","monthsView","monthsViewHeader","months","factor","year","step","startYear","endYear","focusValue","yearsView","yearsViewHeader","yearCaps","html","decadesView","decadesViewHeader","startDecade","endDecade","minDateDecade","maxDateDecade","endDecadeYear","daysView","daysViewHeader","clsName","table","currentHour","currentMinute","currentSecond","toggle","timeComponents","action","lastPicked","navFnc","_navFnc","month","_year","day","selectDate","_newDate","_newDate2","_newDate3","_newDate4","_newDate5","$this","$link","$parent","expanded","closed","$span","collapseData","inactiveIcon","iconTest","hour","todaysDate","transitioning","currentMoment","shouldUseCurrentIfUnset","useCurrentGranularity","m","_toolbarPlacement","_widgetPositioning","_widgetParent","multiDateArray","dateFormat","me","option","argument","data","$originalTarget","$target","config","event"],"mappings":"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","x_google_ignoreList":[0]}