1 | {"version":3,"file":"ngx-bootstrap.es2015.js","sources":["../../dist-es2015/chronos/create/date-from-array.js","../../dist-es2015/chronos/utils/zero-fill.js","../../dist-es2015/chronos/utils.js","../../dist-es2015/chronos/utils/type-checks.js","../../dist-es2015/chronos/format/format.js","../../dist-es2015/chronos/utils/date-getters.js","../../dist-es2015/chronos/parse/regex.js","../../dist-es2015/chronos/parse/token.js","../../dist-es2015/chronos/units/constants.js","../../dist-es2015/chronos/units/priorities.js","../../dist-es2015/chronos/units/aliases.js","../../dist-es2015/chronos/units/year.js","../../dist-es2015/chronos/create/parsing-flags.js","../../dist-es2015/chronos/units/month.js","../../dist-es2015/chronos/utils/date-setters.js","../../dist-es2015/chronos/create/clone.js","../../dist-es2015/chronos/duration/valid.js","../../dist-es2015/chronos/utils/abs-ceil.js","../../dist-es2015/chronos/duration/bubble.js","../../dist-es2015/chronos/duration/humanize.js","../../dist-es2015/chronos/duration/constructor.js","../../dist-es2015/chronos/create/valid.js","../../node_modules/rxjs/util/isDate.js","../../dist-es2015/chronos/create/from-string.js","../../dist-es2015/chronos/units/day-of-month.js","../../dist-es2015/chronos/units/hour.js","../../dist-es2015/chronos/units/millisecond.js","../../dist-es2015/chronos/units/minute.js","../../dist-es2015/chronos/units/offset.js","../../dist-es2015/chronos/units/quarter.js","../../dist-es2015/chronos/units/second.js","../../dist-es2015/chronos/units/timestamp.js","../../dist-es2015/chronos/units/week.js","../../dist-es2015/chronos/units/week-year.js","../../dist-es2015/chronos/format.js","../../dist-es2015/chronos/utils/defaults.js","../../dist-es2015/chronos/create/from-array.js","../../dist-es2015/chronos/create/check-overflow.js","../../dist-es2015/chronos/create/from-string-and-format.js","../../dist-es2015/chronos/create/from-string-and-array.js","../../dist-es2015/chronos/create/from-object.js","../../dist-es2015/chronos/create/from-anything.js","../../dist-es2015/chronos/create/local.js","../../dist-es2015/chronos/utils/abs-round.js","../../dist-es2015/chronos/utils/date-compare.js","../../dist-es2015/chronos/duration/create.js","../../dist-es2015/chronos/moment/add-subtract.js","../../dist-es2015/chronos/units/day-of-week.js","../../dist-es2015/chronos/utils/start-end-of.js","../../dist-es2015/chronos/units/day-of-year.js","../../dist-es2015/chronos/units/week-calendar-utils.js","../../dist-es2015/chronos/locale/locale.class.js","../../dist-es2015/chronos/locale/calendar.js","../../dist-es2015/chronos/locale/locale.defaults.js","../../dist-es2015/chronos/utils/compare-arrays.js","../../dist-es2015/chronos/locale/locales.js","../../dist-es2015/utils/facade/browser.js","../../dist-es2015/utils/theme-provider.js","../../dist-es2015/accordion/accordion.config.js","../../dist-es2015/accordion/accordion.component.js","../../dist-es2015/accordion/accordion-group.component.js","../../dist-es2015/collapse/collapse.directive.js","../../dist-es2015/collapse/collapse.module.js","../../dist-es2015/accordion/accordion.module.js","../../dist-es2015/alert/alert.config.js","../../dist-es2015/utils/decorators.js","../../dist-es2015/alert/alert.component.js","../../dist-es2015/alert/alert.module.js","../../dist-es2015/buttons/button-checkbox.directive.js","../../dist-es2015/buttons/button-radio-group.directive.js","../../dist-es2015/buttons/button-radio.directive.js","../../dist-es2015/buttons/buttons.module.js","../../dist-es2015/utils/linked-list.class.js","../../dist-es2015/utils/trigger.class.js","../../dist-es2015/utils/utils.class.js","../../dist-es2015/carousel/carousel.config.js","../../dist-es2015/carousel/carousel.component.js","../../dist-es2015/carousel/slide.component.js","../../dist-es2015/carousel/carousel.module.js","../../dist-es2015/datepicker/date-formatter.js","../../dist-es2015/datepicker/datepicker-inner.component.js","../../dist-es2015/datepicker/datepicker.config.js","../../dist-es2015/datepicker/datepicker.component.js","../../dist-es2015/datepicker/daypicker.component.js","../../dist-es2015/datepicker/monthpicker.component.js","../../dist-es2015/datepicker/yearpicker.component.js","../../dist-es2015/datepicker/datepicker.module.js","../../dist-es2015/utils/triggers.js","../../dist-es2015/component-loader/content-ref.class.js","../../dist-es2015/component-loader/component-loader.class.js","../../dist-es2015/positioning/ng-positioning.js","../../dist-es2015/positioning/positioning.service.js","../../dist-es2015/component-loader/component-loader.factory.js","../../dist-es2015/utils/warn-once.js","../../dist-es2015/datepicker/base/bs-datepicker-container.js","../../dist-es2015/datepicker/bs-datepicker.config.js","../../dist-es2015/datepicker/reducer/bs-datepicker.actions.js","../../dist-es2015/datepicker/bs-locale.service.js","../../dist-es2015/datepicker/reducer/bs-datepicker.effects.js","../../dist-es2015/mini-ngrx/store.class.js","../../dist-es2015/datepicker/reducer/_defaults.js","../../dist-es2015/datepicker/reducer/bs-datepicker.state.js","../../dist-es2015/mini-ngrx/state.class.js","../../dist-es2015/datepicker/utils/bs-calendar-utils.js","../../dist-es2015/datepicker/utils/matrix-utils.js","../../dist-es2015/datepicker/engine/calc-days-calendar.js","../../dist-es2015/datepicker/engine/format-days-calendar.js","../../dist-es2015/datepicker/engine/flag-days-calendar.js","../../dist-es2015/datepicker/engine/view-mode.js","../../dist-es2015/datepicker/engine/format-months-calendar.js","../../dist-es2015/datepicker/engine/flag-months-calendar.js","../../dist-es2015/datepicker/engine/format-years-calendar.js","../../dist-es2015/datepicker/engine/flag-years-calendar.js","../../dist-es2015/datepicker/reducer/bs-datepicker.reducer.js","../../dist-es2015/datepicker/reducer/bs-datepicker.store.js","../../dist-es2015/datepicker/themes/bs/bs-datepicker-container.component.js","../../dist-es2015/datepicker/bs-datepicker.component.js","../../dist-es2015/datepicker/bs-datepicker-input.directive.js","../../dist-es2015/datepicker/bs-daterangepicker.config.js","../../dist-es2015/datepicker/themes/bs/bs-daterangepicker-container.component.js","../../dist-es2015/datepicker/bs-daterangepicker.component.js","../../dist-es2015/datepicker/bs-daterangepicker-input.directive.js","../../dist-es2015/datepicker/themes/bs/bs-calendar-layout.component.js","../../dist-es2015/datepicker/themes/bs/bs-current-date-view.component.js","../../dist-es2015/datepicker/themes/bs/bs-custom-dates-view.component.js","../../dist-es2015/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js","../../dist-es2015/datepicker/models/index.js","../../dist-es2015/datepicker/themes/bs/bs-datepicker-navigation-view.component.js","../../dist-es2015/datepicker/themes/bs/bs-days-calendar-view.component.js","../../dist-es2015/datepicker/themes/bs/bs-months-calendar-view.component.js","../../dist-es2015/datepicker/themes/bs/bs-timepicker-view.component.js","../../dist-es2015/datepicker/themes/bs/bs-years-calendar-view.component.js","../../dist-es2015/datepicker/bs-datepicker.module.js","../../dist-es2015/modal/bs-modal-ref.service.js","../../dist-es2015/modal/modal-backdrop.options.js","../../dist-es2015/modal/modal-options.class.js","../../dist-es2015/modal/modal-container.component.js","../../dist-es2015/modal/modal-backdrop.component.js","../../dist-es2015/modal/modal.directive.js","../../dist-es2015/modal/bs-modal.service.js","../../dist-es2015/modal/modal.module.js","../../dist-es2015/dropdown/bs-dropdown.config.js","../../dist-es2015/dropdown/bs-dropdown.state.js","../../dist-es2015/dropdown/bs-dropdown-container.component.js","../../dist-es2015/dropdown/bs-dropdown.directive.js","../../dist-es2015/dropdown/bs-dropdown-menu.directive.js","../../dist-es2015/dropdown/bs-dropdown-toggle.directive.js","../../dist-es2015/dropdown/bs-dropdown.module.js","../../dist-es2015/pagination/pagination.config.js","../../dist-es2015/pagination/pager.component.js","../../dist-es2015/pagination/pagination.component.js","../../dist-es2015/pagination/pagination.module.js","../../dist-es2015/progressbar/progressbar.config.js","../../dist-es2015/progressbar/progressbar.component.js","../../dist-es2015/progressbar/bar.component.js","../../dist-es2015/progressbar/progressbar.module.js","../../dist-es2015/rating/rating.component.js","../../dist-es2015/rating/rating.module.js","../../dist-es2015/sortable/draggable-item.service.js","../../dist-es2015/sortable/sortable.component.js","../../dist-es2015/sortable/sortable.module.js","../../dist-es2015/tabs/ng-transclude.directive.js","../../dist-es2015/tabs/tabset.config.js","../../dist-es2015/tabs/tabset.component.js","../../dist-es2015/tabs/tab.directive.js","../../dist-es2015/tabs/tab-heading.directive.js","../../dist-es2015/tabs/tabs.module.js","../../dist-es2015/timepicker/reducer/timepicker.actions.js","../../dist-es2015/timepicker/timepicker.utils.js","../../dist-es2015/timepicker/timepicker-controls.util.js","../../dist-es2015/timepicker/timepicker.config.js","../../dist-es2015/timepicker/reducer/timepicker.reducer.js","../../dist-es2015/timepicker/reducer/timepicker.store.js","../../dist-es2015/timepicker/timepicker.component.js","../../dist-es2015/timepicker/timepicker.module.js","../../dist-es2015/tooltip/tooltip.config.js","../../dist-es2015/tooltip/tooltip-container.component.js","../../dist-es2015/tooltip/tooltip.directive.js","../../dist-es2015/tooltip/tooltip.module.js","../../dist-es2015/typeahead/latin-map.js","../../dist-es2015/typeahead/typeahead-options.class.js","../../dist-es2015/typeahead/typeahead-match.class.js","../../dist-es2015/typeahead/typeahead-utils.js","../../dist-es2015/typeahead/typeahead-container.component.js","../../dist-es2015/typeahead/typeahead.directive.js","../../dist-es2015/typeahead/typeahead.module.js","../../dist-es2015/popover/popover.config.js","../../dist-es2015/popover/popover-container.component.js","../../dist-es2015/popover/popover.directive.js","../../dist-es2015/popover/popover.module.js","../../dist-es2015/chronos/i18n/ar.js","../../dist-es2015/chronos/i18n/cs.js","../../dist-es2015/chronos/i18n/da.js","../../dist-es2015/chronos/i18n/de.js","../../dist-es2015/chronos/i18n/en-gb.js","../../dist-es2015/chronos/i18n/es.js","../../dist-es2015/chronos/i18n/es-do.js","../../dist-es2015/chronos/i18n/es-us.js","../../dist-es2015/chronos/i18n/fr.js","../../dist-es2015/chronos/i18n/hi.js","../../dist-es2015/chronos/i18n/hu.js","../../dist-es2015/chronos/i18n/id.js","../../dist-es2015/chronos/i18n/it.js","../../dist-es2015/chronos/i18n/ja.js","../../dist-es2015/chronos/i18n/ko.js","../../dist-es2015/chronos/i18n/nl.js","../../dist-es2015/chronos/i18n/nl-be.js","../../dist-es2015/chronos/i18n/pl.js","../../dist-es2015/chronos/i18n/pt-br.js","../../dist-es2015/chronos/i18n/sv.js","../../dist-es2015/chronos/i18n/ru.js","../../dist-es2015/chronos/i18n/zh-cn.js","../../dist-es2015/chronos/i18n/tr.js","../../dist-es2015/chronos/i18n/he.js","../../dist-es2015/chronos/i18n/th.js"],"sourcesContent":["export function createUTCDate(y, m, d) {\n const date = new Date(Date.UTC.apply(null, arguments));\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\nexport function createDate(y, m = 0, d = 1, h = 0, M = 0, s = 0, ms = 0) {\n const date = new Date(y, m, d, h, M, s, ms);\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n//# sourceMappingURL=date-from-array.js.map","export function zeroFill(num, targetLength, forceSign) {\n const absNumber = `${Math.abs(num)}`;\n const zerosToFill = targetLength - absNumber.length;\n const sign = num >= 0;\n const _sign = sign ? (forceSign ? '+' : '') : '-';\n // todo: this is crazy slow\n const _zeros = Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1);\n return (_sign + _zeros + absNumber);\n}\n//# sourceMappingURL=zero-fill.js.map","export function mod(n, x) {\n return (n % x + x) % x;\n}\nexport function absFloor(num) {\n return num < 0 ? Math.ceil(num) || 0 : Math.floor(num);\n}\n//# sourceMappingURL=utils.js.map","import { absFloor } from '../utils';\nexport function isString(str) {\n return typeof str === 'string';\n}\nexport function isDate(value) {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nexport function isBoolean(value) {\n return value === true || value === false;\n}\nexport function isDateValid(date) {\n return date && date.getTime && !isNaN(date.getTime());\n}\nexport function isFunction(fn) {\n return (fn instanceof Function ||\n Object.prototype.toString.call(fn) === '[object Function]');\n}\nexport function isNumber(value) {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\nexport function isArray(input) {\n return (input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]');\n}\nexport function hasOwnProp(a /*object*/, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\nexport function isObject(input /*object*/) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (input != null && Object.prototype.toString.call(input) === '[object Object]');\n}\nexport function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n }\n let k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n}\nexport function isUndefined(input) {\n return input === void 0;\n}\nexport function toInt(argumentForCoercion) {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n}\n//# sourceMappingURL=type-checks.js.map","import { zeroFill } from '../utils/zero-fill';\nimport { isFunction } from '../utils/type-checks';\nexport let formatFunctions = {};\nexport let formatTokenFunctions = {};\n// tslint:disable-next-line\nexport const formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nexport function addFormatToken(token, padded, ordinal, callback) {\n if (token) {\n formatTokenFunctions[token] = callback;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(callback.apply(null, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function (date, opts) {\n return opts.locale.ordinal(callback.apply(null, arguments), token);\n };\n }\n}\nexport function makeFormatFunction(format) {\n const array = format.match(formattingTokens);\n const length = array.length;\n const formatArr = new Array(length);\n for (let i = 0; i < length; i++) {\n formatArr[i] = formatTokenFunctions[array[i]]\n ? formatTokenFunctions[array[i]]\n : removeFormattingTokens(array[i]);\n }\n return function (date, locale, isUTC, offset = 0) {\n let output = '';\n for (let j = 0; j < length; j++) {\n output += isFunction(formatArr[j])\n ? formatArr[j].call(null, date, { format, locale, isUTC, offset })\n : formatArr[j];\n }\n return output;\n };\n}\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n//# sourceMappingURL=format.js.map","import { createDate } from '../create/date-from-array';\nexport function getHours(date, isUTC = false) {\n return isUTC ? date.getUTCHours() : date.getHours();\n}\nexport function getMinutes(date, isUTC = false) {\n return isUTC ? date.getUTCMinutes() : date.getMinutes();\n}\nexport function getSeconds(date, isUTC = false) {\n return isUTC ? date.getUTCSeconds() : date.getSeconds();\n}\nexport function getMilliseconds(date, isUTC = false) {\n return isUTC ? date.getUTCMilliseconds() : date.getMilliseconds();\n}\nexport function getTime(date) {\n return date.getTime();\n}\nexport function getDay(date, isUTC = false) {\n return isUTC ? date.getUTCDay() : date.getDay();\n}\nexport function getDate(date, isUTC = false) {\n return isUTC ? date.getUTCDate() : date.getDate();\n}\nexport function getMonth(date, isUTC = false) {\n return isUTC ? date.getUTCMonth() : date.getMonth();\n}\nexport function getFullYear(date, isUTC = false) {\n return isUTC ? date.getUTCFullYear() : date.getFullYear();\n}\nexport function getUnixTime(date) {\n return Math.floor(date.valueOf() / 1000);\n}\nexport function unix(date) {\n return Math.floor(date.valueOf() / 1000);\n}\nexport function getFirstDayOfMonth(date) {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds());\n}\nexport function daysInMonth(date) {\n return _daysInMonth(date.getFullYear(), date.getMonth());\n}\nexport function _daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\nexport function isFirstDayOfWeek(date, firstDayOfWeek) {\n return date.getDay() === firstDayOfWeek;\n}\nexport function isSameMonth(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return isSameYear(date1, date2) && getMonth(date1) === getMonth(date2);\n}\nexport function isSameYear(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return getFullYear(date1) === getFullYear(date2);\n}\nexport function isSameDay(date1, date2) {\n if (!date1 || !date2) {\n return false;\n }\n return (isSameYear(date1, date2) &&\n isSameMonth(date1, date2) &&\n getDate(date1) === getDate(date2));\n}\n//# sourceMappingURL=date-getters.js.map","import { hasOwnProp, isFunction } from '../utils/type-checks';\nexport const match1 = /\\d/; // 0 - 9\nexport const match2 = /\\d\\d/; // 00 - 99\nexport const match3 = /\\d{3}/; // 000 - 999\nexport const match4 = /\\d{4}/; // 0000 - 9999\nexport const match6 = /[+-]?\\d{6}/; // -999999 - 999999\nexport const match1to2 = /\\d\\d?/; // 0 - 99\nexport const match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nexport const match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nexport const match1to3 = /\\d{1,3}/; // 0 - 999\nexport const match1to4 = /\\d{1,4}/; // 0 - 9999\nexport const match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\nexport const matchUnsigned = /\\d+/; // 0 - inf\nexport const matchSigned = /[+-]?\\d+/; // -inf - inf\nexport const matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nexport const matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\nexport const matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\n// tslint:disable-next-line\nexport const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\nconst regexes = {};\nexport function addRegexToken(token, regex, strictRegex) {\n if (isFunction(regex)) {\n regexes[token] = regex;\n return;\n }\n regexes[token] = function (isStrict, locale) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\nexport function getParseRegexForToken(token, locale) {\n const _strict = false;\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n return regexes[token](_strict, locale);\n}\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(str) {\n // tslint:disable-next-line\n return regexEscape(str\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, (matched, p1, p2, p3, p4) => p1 || p2 || p3 || p4));\n}\nexport function regexEscape(str) {\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n//# sourceMappingURL=regex.js.map","// tslint:disable:max-line-length\nimport { hasOwnProp, isArray, isFunction, isNumber, isString, toInt } from '../utils/type-checks';\nconst tokens = {};\nexport function addParseToken(token, callback) {\n const _token = isString(token) ? [token] : token;\n let func = callback;\n if (isNumber(callback)) {\n func = function (input, array, config) {\n array[callback] = toInt(input);\n return config;\n };\n }\n if (isArray(_token) && isFunction(func)) {\n let i;\n for (i = 0; i < _token.length; i++) {\n tokens[_token[i]] = func;\n }\n }\n}\nexport function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, _token) {\n config._w = config._w || {};\n return callback(input, config._w, config, _token);\n });\n}\nexport function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n return config;\n}\n//# sourceMappingURL=token.js.map","// place in new Date([array])\nexport const YEAR = 0;\nexport const MONTH = 1;\nexport const DATE = 2;\nexport const HOUR = 3;\nexport const MINUTE = 4;\nexport const SECOND = 5;\nexport const MILLISECOND = 6;\nexport const WEEK = 7;\nexport const WEEKDAY = 8;\n//# sourceMappingURL=constants.js.map","const priorities = {};\nexport function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n/*\nexport function getPrioritizedUnits(unitsObj) {\n const units = [];\n let unit;\n for (unit in unitsObj) {\n if (unitsObj.hasOwnProperty(unit)) {\n units.push({ unit, priority: priorities[unit] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n\n return units;\n}\n*/\n//# sourceMappingURL=priorities.js.map","import { hasOwnProp, isString } from '../utils/type-checks';\nconst aliases = {};\nconst _mapUnits = {\n date: 'day',\n hour: 'hours',\n minute: 'minutes',\n second: 'seconds',\n millisecond: 'milliseconds'\n};\nexport function addUnitAlias(unit, shorthand) {\n const lowerCase = unit.toLowerCase();\n let _unit = unit;\n if (lowerCase in _mapUnits) {\n _unit = _mapUnits[lowerCase];\n }\n aliases[lowerCase] = aliases[`${lowerCase}s`] = aliases[shorthand] = _unit;\n}\nexport function normalizeUnits(units) {\n return isString(units) ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\nexport function normalizeObjectUnits(inputObject) {\n const normalizedInput = {};\n let normalizedProp;\n let prop;\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n return normalizedInput;\n}\n//# sourceMappingURL=aliases.js.map","import { addFormatToken } from '../format/format';\nimport { getFullYear } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { YEAR } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\n// FORMATTING\nfunction getYear(date, opts) {\n return getFullYear(date, opts.isUTC).toString();\n}\naddFormatToken('Y', null, null, function (date, opts) {\n const y = getFullYear(date, opts.isUTC);\n return y <= 9999 ? y.toString(10) : `+${y}`;\n});\naddFormatToken(null, ['YY', 2, false], null, function (date, opts) {\n return (getFullYear(date, opts.isUTC) % 100).toString(10);\n});\naddFormatToken(null, ['YYYY', 4, false], null, getYear);\naddFormatToken(null, ['YYYYY', 5, false], null, getYear);\naddFormatToken(null, ['YYYYYY', 6, true], null, getYear);\n// ALIASES\naddUnitAlias('year', 'y');\n// PRIORITIES\naddUnitPriority('year', 1);\n// PARSING\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array, config) {\n array[YEAR] = input.length === 2 ? parseTwoDigitYear(input) : toInt(input);\n return config;\n});\naddParseToken('YY', function (input, array, config) {\n array[YEAR] = parseTwoDigitYear(input);\n return config;\n});\naddParseToken('Y', function (input, array, config) {\n array[YEAR] = parseInt(input, 10);\n return config;\n});\nexport function parseTwoDigitYear(input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n}\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\nexport function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n//# sourceMappingURL=year.js.map","function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n}\nexport function getParsingFlags(config) {\n if (config._pf == null) {\n config._pf = defaultParsingFlags();\n }\n return config._pf;\n}\n//# sourceMappingURL=parsing-flags.js.map","import { addFormatToken } from '../format/format';\nimport { isLeapYear } from './year';\nimport { mod } from '../utils';\nimport { getMonth } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MONTH } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { getParsingFlags } from '../create/parsing-flags';\n// todo: this is duplicate, source in date-getters.ts\nexport function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n const modMonth = mod(month, 12);\n const _year = year + (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(_year) ? 29 : 28\n : (31 - modMonth % 7 % 2);\n}\n// FORMATTING\naddFormatToken('M', ['MM', 2, false], 'Mo', function (date, opts) {\n return (getMonth(date, opts.isUTC) + 1).toString(10);\n});\naddFormatToken('MMM', null, null, function (date, opts) {\n return opts.locale.monthsShort(date, opts.format, opts.isUTC);\n});\naddFormatToken('MMMM', null, null, function (date, opts) {\n return opts.locale.months(date, opts.format, opts.isUTC);\n});\n// ALIASES\naddUnitAlias('month', 'M');\n// PRIORITY\naddUnitPriority('month', 8);\n// PARSING\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\naddParseToken(['M', 'MM'], function (input, array, config) {\n array[MONTH] = toInt(input) - 1;\n return config;\n});\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n const month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n }\n else {\n getParsingFlags(config).invalidMonth = !!input;\n }\n return config;\n});\n//# sourceMappingURL=month.js.map","import { daysInMonth } from '../units/month';\nimport { isNumber } from './type-checks';\nimport { getDate, getFullYear, getMonth } from './date-getters';\nimport { isLeapYear } from '../units/year';\nimport { createDate } from '../create/date-from-array';\nconst defaultTimeUnit = {\n year: 0,\n month: 0,\n day: 0,\n hour: 0,\n minute: 0,\n seconds: 0\n};\nexport function shiftDate(date, unit) {\n const _unit = Object.assign({}, defaultTimeUnit, unit);\n const year = date.getFullYear() + (_unit.year || 0);\n const month = date.getMonth() + (_unit.month || 0);\n let day = date.getDate() + (_unit.day || 0);\n if (_unit.month && !_unit.day) {\n day = Math.min(day, daysInMonth(year, month));\n }\n return createDate(year, month, day, date.getHours() + (_unit.hour || 0), date.getMinutes() + (_unit.minute || 0), date.getSeconds() + (_unit.seconds || 0));\n}\nexport function setFullDate(date, unit) {\n return createDate(getNum(date.getFullYear(), unit.year), getNum(date.getMonth(), unit.month), getNum(date.getDate(), unit.day), getNum(date.getHours(), unit.hour), getNum(date.getMinutes(), unit.minute), getNum(date.getSeconds(), unit.seconds), getNum(date.getMilliseconds(), unit.milliseconds));\n}\nfunction getNum(def, num) {\n return isNumber(num) ? num : def;\n}\nexport function setFullYear(date, value, isUTC) {\n const _month = getMonth(date, isUTC);\n const _date = getDate(date, isUTC);\n const _year = getFullYear(date, isUTC);\n if (isLeapYear(_year) && _month === 1 && _date === 29) {\n const _daysInMonth = daysInMonth(value, _month);\n isUTC ? date.setUTCFullYear(value, _month, _daysInMonth) : date.setFullYear(value, _month, _daysInMonth);\n }\n isUTC ? date.setUTCFullYear(value) : date.setFullYear(value);\n return date;\n}\nexport function setMonth(date, value, isUTC) {\n const dayOfMonth = Math.min(getDate(date), daysInMonth(getFullYear(date), value));\n isUTC ? date.setUTCMonth(value, dayOfMonth) : date.setMonth(value, dayOfMonth);\n return date;\n}\nexport function setDay(date, value, isUTC) {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n return date;\n}\nexport function setHours(date, value, isUTC) {\n isUTC ? date.setUTCHours(value) : date.setHours(value);\n return date;\n}\nexport function setMinutes(date, value, isUTC) {\n isUTC ? date.setUTCMinutes(value) : date.setMinutes(value);\n return date;\n}\nexport function setSeconds(date, value, isUTC) {\n isUTC ? date.setUTCSeconds(value) : date.setSeconds(value);\n return date;\n}\nexport function setMilliseconds(date, value, isUTC) {\n isUTC ? date.setUTCMilliseconds(value) : date.setMilliseconds(value);\n return date;\n}\nexport function setDate(date, value, isUTC) {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n return date;\n}\nexport function setTime(date, value) {\n date.setTime(value);\n return date;\n}\n//# sourceMappingURL=date-setters.js.map","// fastest way to clone date\n// https://jsperf.com/clone-date-object2\nexport function cloneDate(date) {\n return new Date(date.getTime());\n}\n//# sourceMappingURL=clone.js.map","import { toInt } from '../utils/type-checks';\nconst ordering = ['year', 'quarter', 'month', 'week', 'day', 'hours', 'minutes', 'seconds', 'milliseconds'];\nconst orderingHash = ordering.reduce((mem, order) => {\n mem[order] = true;\n return mem;\n}, {});\nexport function isDurationValid(duration) {\n const durationKeys = Object.keys(duration);\n if (durationKeys\n .some((key) => {\n return (key in orderingHash)\n && duration[key] === null\n || isNaN(duration[key]);\n })) {\n return false;\n }\n // for (let key in duration) {\n // if (!(indexOf.call(ordering, key) !== -1 && (duration[key] == null || !isNaN(duration[key])))) {\n // return false;\n // }\n // }\n let unitHasDecimal = false;\n for (let i = 0; i < ordering.length; ++i) {\n if (duration[ordering[i]]) {\n // only allow non-integers for smallest unit\n if (unitHasDecimal) {\n return false;\n }\n if (duration[ordering[i]] !== toInt(duration[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n return true;\n}\n// export function isValid() {\n// return this._isValid;\n// }\n//\n// export function createInvalid(): Duration {\n// return createDuration(NaN);\n// }\n//# sourceMappingURL=valid.js.map","export function absCeil(number) {\n return number < 0 ? Math.floor(number) : Math.ceil(number);\n}\n//# sourceMappingURL=abs-ceil.js.map","import { absFloor } from '../utils';\nimport { absCeil } from '../utils/abs-ceil';\nexport function bubble(dur) {\n let milliseconds = dur._milliseconds;\n let days = dur._days;\n let months = dur._months;\n const data = dur._data;\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n const seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n const minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n const hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24);\n // convert days to months\n const monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n // 12 months -> 1 year\n const years = absFloor(months / 12);\n months %= 12;\n data.day = days;\n data.month = months;\n data.year = years;\n return dur;\n}\nexport function daysToMonths(day) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return day * 4800 / 146097;\n}\nexport function monthsToDays(month) {\n // the reverse of daysToMonths\n return month * 146097 / 4800;\n}\n//# sourceMappingURL=bubble.js.map","// tslint:disable:cyclomatic-complexity\nimport { createDuration } from './create';\nlet round = Math.round;\nconst thresholds = {\n ss: 44,\n s: 45,\n m: 45,\n h: 22,\n d: 26,\n M: 11 // months to year\n};\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(str, num, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(num || 1, !!withoutSuffix, str, isFuture);\n}\nexport function relativeTime(posNegDuration, withoutSuffix, locale) {\n const duration = createDuration(posNegDuration).abs();\n const seconds = round(duration.as('s'));\n const minutes = round(duration.as('m'));\n const hours = round(duration.as('h'));\n const days = round(duration.as('d'));\n const months = round(duration.as('M'));\n const years = round(duration.as('y'));\n const a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n const b = [a[0], a[1], withoutSuffix, +posNegDuration > 0, locale];\n // a[2] = withoutSuffix;\n // a[3] = +posNegDuration > 0;\n // a[4] = locale;\n return substituteTimeAgo.apply(null, b);\n}\n// This function allows you to set the rounding function for relative time strings\nexport function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof (roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n// This function allows you to set a threshold for relative time strings\nexport function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n// export function humanize(withSuffix) {\n// if (!this.isValid()) {\n// return this.localeData().invalidDate();\n// }\n//\n// const locale = this.localeData();\n// let output = relativeTime(this, !withSuffix, locale);\n//\n// if (withSuffix) {\n// output = locale.pastFuture(+this, output);\n// }\n//\n// return locale.postformat(output);\n// }\n//# sourceMappingURL=humanize.js.map","import { getLocale } from '../locale/locales';\nimport { isDurationValid } from './valid';\nimport { bubble, daysToMonths, monthsToDays } from './bubble';\nimport { normalizeUnits } from '../units/aliases';\nimport { relativeTime } from './humanize';\nimport { toInt } from '../utils/type-checks';\nexport class Duration {\n constructor(duration, config = {}) {\n this._data = {};\n this._locale = getLocale();\n this._locale = config && config._locale || getLocale();\n // const normalizedInput = normalizeObjectUnits(duration);\n const normalizedInput = duration;\n const years = normalizedInput.year || 0;\n const quarters = normalizedInput.quarter || 0;\n const months = normalizedInput.month || 0;\n const weeks = normalizedInput.week || 0;\n const days = normalizedInput.day || 0;\n const hours = normalizedInput.hours || 0;\n const minutes = normalizedInput.minutes || 0;\n const seconds = normalizedInput.seconds || 0;\n const milliseconds = normalizedInput.milliseconds || 0;\n this._isValid = isDurationValid(normalizedInput);\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1000 +\n minutes * 60 * 1000 +\n hours * 1000 * 60 * 60; // using 1000 * 60 * 60\n // instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n // this._data = {};\n // this._locale = getLocale();\n // this._bubble();\n return bubble(this);\n }\n isValid() {\n return this._isValid;\n }\n humanize(withSuffix) {\n // throw new Error(`TODO: implement`);\n if (!this.isValid()) {\n return this.localeData().invalidDate;\n }\n const locale = this.localeData();\n let output = relativeTime(this, !withSuffix, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n localeData() {\n return this._locale;\n }\n locale(localeKey) {\n if (!localeKey) {\n return this._locale._abbr;\n }\n this._locale = getLocale(localeKey) || this._locale;\n return this;\n }\n abs() {\n const mathAbs = Math.abs;\n const data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.month = mathAbs(data.month);\n data.year = mathAbs(data.year);\n return this;\n }\n as(_units) {\n if (!this.isValid()) {\n return NaN;\n }\n let days;\n let months;\n const milliseconds = this._milliseconds;\n const units = normalizeUnits(_units);\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n }\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hours':\n return days * 24 + milliseconds / 36e5;\n case 'minutes':\n return days * 1440 + milliseconds / 6e4;\n case 'seconds':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'milliseconds':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error(`Unknown unit ${units}`);\n }\n }\n valueOf() {\n if (!this.isValid()) {\n return NaN;\n }\n return (this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6);\n }\n}\nexport function isDuration(obj) {\n return obj instanceof Duration;\n}\n//# sourceMappingURL=constructor.js.map","import { getParsingFlags } from './parsing-flags';\nexport function isValid(config) {\n if (config._isValid == null) {\n const flags = getParsingFlags(config);\n const parsedParts = Array.prototype.some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n let isNowValid = !isNaN(config._d && config._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (config._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n if (Object.isFrozen == null || !Object.isFrozen(config)) {\n config._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return config._isValid;\n}\nexport function createInvalid(config, flags) {\n config._d = new Date(NaN);\n Object.assign(getParsingFlags(config), flags || { userInvalidated: true });\n return config;\n}\nexport function markInvalid(config) {\n config._isValid = false;\n return config;\n}\n//# sourceMappingURL=valid.js.map","\"use strict\";\nfunction isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\nexports.isDate = isDate;\n//# sourceMappingURL=isDate.js.map","// tslint:disable-next-line\nimport { defaultLocaleMonthsShort, defaultLocaleWeekdaysShort } from '../locale/locale.class';\nimport { isString } from '../utils/type-checks';\nimport { configFromStringAndFormat } from './from-string-and-format';\nimport { createUTCDate } from './date-from-array';\nimport { createInvalid, markInvalid } from './valid';\nimport { getParsingFlags } from './parsing-flags';\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n// tslint:disable-next-line\nconst extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n// tslint:disable-next-line\nconst basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nconst tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\nconst isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/, true],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/, true],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/, true],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/, true],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/, true],\n ['YYYYMMDD', /\\d{8}/, true],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/, true],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/, true]\n];\n// iso time formats and regexes\nconst isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\nconst aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\nconst obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n// tslint:disable-next-line\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n// date from iso format\nexport function configFromISO(config) {\n if (!isString(config._i)) {\n return config;\n }\n const input = config._i;\n const match = extendedIsoRegex.exec(input) || basicIsoRegex.exec(input);\n let allowTime;\n let dateFormat;\n let timeFormat;\n let tzFormat;\n if (!match) {\n config._isValid = false;\n return config;\n }\n // getParsingFlags(config).iso = true;\n let i;\n let l;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return config;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return config;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return config;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n }\n else {\n config._isValid = false;\n return config;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n return configFromStringAndFormat(config);\n}\n// tslint:disable-next-line\nfunction extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\n}\nfunction untruncateYear(yearStr) {\n const year = parseInt(yearStr, 10);\n return year <= 49 ? year + 2000 : year;\n}\nfunction preprocessRFC2822(str) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return str\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ').trim();\n}\nfunction checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n const weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr);\n const weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n}\nfunction calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n }\n else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n }\n else {\n const hm = parseInt(numOffset, 10);\n const m = hm % 100;\n const h = (hm - m) / 100;\n return h * 60 + m;\n }\n}\n// date and time from ref 2822 format\nexport function configFromRFC2822(config) {\n if (!isString(config._i)) {\n return config;\n }\n const match = rfc2822.exec(preprocessRFC2822(config._i));\n if (!match) {\n return markInvalid(config);\n }\n const parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return config;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n getParsingFlags(config).rfc2822 = true;\n return config;\n}\n// date from iso format or fallback\nexport function configFromString(config) {\n if (!isString(config._i)) {\n return config;\n }\n const matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return config;\n }\n // todo: update logic processing\n // isISO -> configFromISO\n // isRFC -> configFromRFC\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n }\n else {\n return config;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n }\n else {\n return config;\n }\n // Final attempt, use Input Fallback\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n}\n// hooks.createFromInputFallback = deprecate(\n// 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n// 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n// 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n// 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n// function (config) {\n// config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n// }\n// );\n//# sourceMappingURL=from-string.js.map","import { addFormatToken } from '../format/format';\nimport { getDate } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { DATE } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\n// FORMATTING\naddFormatToken('D', ['DD', 2, false], 'Do', function (date, opts) {\n return getDate(date, opts.isUTC).toString(10);\n});\n// ALIASES\naddUnitAlias('date', 'D');\n// PRIOROITY\naddUnitPriority('date', 9);\n// PARSING\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n return locale._dayOfMonthOrdinalParse || locale._ordinalParse;\n});\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array, config) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n return config;\n});\n//# sourceMappingURL=day-of-month.js.map","import { getHours, getMinutes, getSeconds } from '../utils/date-getters';\nimport { addFormatToken } from '../format/format';\nimport { zeroFill } from '../utils/zero-fill';\nimport { addRegexToken, match1to2, match2, match3to4, match5to6 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { HOUR, MINUTE, SECOND } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { getParsingFlags } from '../create/parsing-flags';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\n// FORMATTING\nfunction hFormat(date, isUTC) {\n return getHours(date, isUTC) % 12 || 12;\n}\nfunction kFormat(date, isUTC) {\n return getHours(date, isUTC) || 24;\n}\naddFormatToken('H', ['HH', 2, false], null, function (date, opts) {\n return getHours(date, opts.isUTC).toString(10);\n});\naddFormatToken('h', ['hh', 2, false], null, function (date, opts) {\n return hFormat(date, opts.isUTC).toString(10);\n});\naddFormatToken('k', ['kk', 2, false], null, function (date, opts) {\n return kFormat(date, opts.isUTC).toString(10);\n});\naddFormatToken('hmm', null, null, function (date, opts) {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n return `${_h}${_mm}`;\n});\naddFormatToken('hmmss', null, null, function (date, opts) {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n return `${_h}${_mm}${_ss}`;\n});\naddFormatToken('Hmm', null, null, function (date, opts) {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n return `${_H}${_mm}`;\n});\naddFormatToken('Hmmss', null, null, function (date, opts) {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n return `${_H}${_mm}${_ss}`;\n});\nfunction meridiem(token, lowercase) {\n addFormatToken(token, null, null, function (date, opts) {\n return opts.locale.meridiem(getHours(date, opts.isUTC), getMinutes(date, opts.isUTC), lowercase);\n });\n}\nmeridiem('a', true);\nmeridiem('A', false);\n// ALIASES\naddUnitAlias('hour', 'h');\n// PRIORITY\naddUnitPriority('hour', 13);\n// PARSING\nfunction matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n}\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('k', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n const kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n return config;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n return config;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n return config;\n});\naddParseToken('hmm', function (input, array, config) {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n return config;\n});\naddParseToken('hmmss', function (input, array, config) {\n const pos1 = input.length - 4;\n const pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n return config;\n});\naddParseToken('Hmm', function (input, array, config) {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n return config;\n});\naddParseToken('Hmmss', function (input, array, config) {\n const pos1 = input.length - 4;\n const pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n return config;\n});\n//# sourceMappingURL=hour.js.map","// tslint:disable:no-bitwise\n// FORMATTING\nimport { addFormatToken } from '../format/format';\nimport { addRegexToken, match1, match1to3, match2, match3, matchUnsigned } from '../parse/regex';\nimport { MILLISECOND } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addParseToken } from '../parse/token';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { getMilliseconds } from '../utils/date-getters';\naddFormatToken('S', null, null, function (date, opts) {\n return (~~(getMilliseconds(date, opts.isUTC) / 100)).toString(10);\n});\naddFormatToken(null, ['SS', 2, false], null, function (date, opts) {\n return (~~(getMilliseconds(date, opts.isUTC) / 10)).toString(10);\n});\naddFormatToken(null, ['SSS', 3, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC)).toString(10);\n});\naddFormatToken(null, ['SSSS', 4, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 10).toString(10);\n});\naddFormatToken(null, ['SSSSS', 5, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 100).toString(10);\n});\naddFormatToken(null, ['SSSSSS', 6, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 1000).toString(10);\n});\naddFormatToken(null, ['SSSSSSS', 7, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 10000).toString(10);\n});\naddFormatToken(null, ['SSSSSSSS', 8, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 100000).toString(10);\n});\naddFormatToken(null, ['SSSSSSSSS', 9, false], null, function (date, opts) {\n return (getMilliseconds(date, opts.isUTC) * 1000000).toString(10);\n});\n// ALIASES\naddUnitAlias('millisecond', 'ms');\n// PRIORITY\naddUnitPriority('millisecond', 16);\n// PARSING\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\nlet token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\nfunction parseMs(input, array, config) {\n array[MILLISECOND] = toInt(parseFloat(`0.${input}`) * 1000);\n return config;\n}\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n//# sourceMappingURL=millisecond.js.map","import { addFormatToken } from '../format/format';\nimport { getMinutes } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MINUTE } from './constants';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\n// FORMATTING\naddFormatToken('m', ['mm', 2, false], null, function (date, opts) {\n return getMinutes(date, opts.isUTC).toString(10);\n});\n// ALIASES\naddUnitAlias('minute', 'm');\n// PRIORITY\naddUnitPriority('minute', 14);\n// PARSING\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n//# sourceMappingURL=minute.js.map","// tslint:disable:no-bitwise max-line-length\n// FORMATTING\nimport { addFormatToken } from '../format/format';\nimport { zeroFill } from '../utils/zero-fill';\nimport { isNumber, isString, toInt } from '../utils/type-checks';\nimport { addRegexToken, matchOffset, matchShortOffset } from '../parse/regex';\nimport { add } from '../moment/add-subtract';\nimport { addParseToken } from '../parse/token';\nimport { cloneDate } from '../create/clone';\nimport { setMonth } from '../utils/date-setters';\nfunction addOffsetFormatToken(token, separator) {\n addFormatToken(token, null, null, function (date, config) {\n let offset = getUTCOffset(date, { _isUTC: config.isUTC, _offset: config.offset });\n let sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\naddOffsetFormatToken('Z', ':');\naddOffsetFormatToken('ZZ', '');\n// PARSING\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n return config;\n});\n// HELPERS\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nconst chunkOffset = /([\\+\\-]|\\d\\d)/gi;\nfunction offsetFromString(matcher, str) {\n const matches = (str || '').match(matcher);\n if (matches === null) {\n return null;\n }\n const chunk = matches[matches.length - 1];\n const parts = chunk.match(chunkOffset) || ['-', '0', '0'];\n const minutes = parseInt(parts[1], 10) * 60 + toInt(parts[2]);\n const _min = parts[0] === '+' ? minutes : -minutes;\n return minutes === 0 ? 0 : _min;\n}\n// Return a moment from input, that is local/utc/zone equivalent to model.\nexport function cloneWithOffset(input, date, config = {}) {\n if (!config._isUTC) {\n return input;\n }\n const res = cloneDate(date);\n // todo: input._d - res._d + ((res._offset || 0) - (input._offset || 0))*60000\n const offsetDiff = (config._offset || 0) * 60000;\n const diff = input.valueOf() - res.valueOf() + offsetDiff;\n // Use low-level api, because this fn is low-level api.\n res.setTime(res.valueOf() + diff);\n // todo: add timezone handling\n // hooks.updateOffset(res, false);\n return res;\n}\nexport function getDateOffset(date) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n// HOOKS\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\n// todo: it's from moment timezones\n// hooks.updateOffset = function () {\n// };\n// MOMENTS\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nexport function getUTCOffset(date, config = {}) {\n const _offset = config._offset || 0;\n return config._isUTC ? _offset : getDateOffset(date);\n}\nexport function setUTCOffset(date, input, keepLocalTime, keepMinutes, config = {}) {\n const offset = config._offset || 0;\n let localAdjust;\n let _input = input;\n let _date = date;\n if (isString(_input)) {\n _input = offsetFromString(matchShortOffset, _input);\n if (_input === null) {\n return _date;\n }\n }\n else if (isNumber(_input) && Math.abs(_input) < 16 && !keepMinutes) {\n _input = _input * 60;\n }\n if (!config._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(_date);\n }\n config._offset = _input;\n config._isUTC = true;\n if (localAdjust != null) {\n _date = add(_date, localAdjust, 'minutes');\n }\n if (offset !== _input) {\n if (!keepLocalTime || config._changeInProgress) {\n _date = add(_date, _input - offset, 'minutes', config._isUTC);\n // addSubtract(this, createDuration(_input - offset, 'm'), 1, false);\n }\n else if (!config._changeInProgress) {\n config._changeInProgress = true;\n // todo: add timezone handling\n // hooks.updateOffset(this, true);\n config._changeInProgress = null;\n }\n }\n return _date;\n}\n/*\nexport function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n*/\nexport function setOffsetToUTC(date, keepLocalTime) {\n return setUTCOffset(date, 0, keepLocalTime);\n}\nexport function isDaylightSavingTime(date) {\n return (getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 0))\n || getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 5)));\n}\n/*export function setOffsetToLocal(date: Date, isUTC?: boolean, keepLocalTime?: boolean) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}*/\nexport function setOffsetToParsedOffset(date, input, config = {}) {\n if (config._tzm != null) {\n return setUTCOffset(date, config._tzm, false, true, config);\n }\n if (isString(input)) {\n const tZone = offsetFromString(matchOffset, input);\n if (tZone != null) {\n return setUTCOffset(date, tZone, false, false, config);\n }\n return setUTCOffset(date, 0, true, false, config);\n }\n return date;\n}\nexport function hasAlignedHourOffset(date, input) {\n const _input = input ? getUTCOffset(input, { _isUTC: false }) : 0;\n return (getUTCOffset(date) - _input) % 60 === 0;\n}\n// DEPRECATED\n/*export function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n const c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n const other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}*/\n// in Khronos\n/*export function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nexport function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nexport function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}*/\n//# sourceMappingURL=offset.js.map","import { addFormatToken } from '../format/format';\nimport { addRegexToken, match1 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MONTH } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { getMonth } from '../utils/date-getters';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { setMonth } from '../utils/date-setters';\n// FORMATTING\naddFormatToken('Q', null, 'Qo', function (date, opts) {\n return getQuarter(date, opts.isUTC).toString(10);\n});\n// ALIASES\naddUnitAlias('quarter', 'Q');\n// PRIORITY\naddUnitPriority('quarter', 7);\n// PARSING\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array, config) {\n array[MONTH] = (toInt(input) - 1) * 3;\n return config;\n});\n// MOMENTS\nexport function getQuarter(date, isUTC = false) {\n return Math.ceil((getMonth(date, isUTC) + 1) / 3);\n}\nexport function setQuarter(date, quarter, isUTC) {\n return setMonth(date, (quarter - 1) * 3 + getMonth(date, isUTC) % 3, isUTC);\n}\n// export function getSetQuarter(input) {\n// return input == null\n// ? Math.ceil((this.month() + 1) / 3)\n// : this.month((input - 1) * 3 + this.month() % 3);\n// }\n//# sourceMappingURL=quarter.js.map","import { addFormatToken } from '../format/format';\nimport { getSeconds } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { SECOND } from './constants';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\n// FORMATTING\naddFormatToken('s', ['ss', 2, false], null, function (date, opts) {\n return getSeconds(date, opts.isUTC).toString(10);\n});\n// ALIASES\naddUnitAlias('second', 's');\n// PRIORITY\naddUnitPriority('second', 15);\n// PARSING\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n//# sourceMappingURL=second.js.map","import { addFormatToken } from '../format/format';\nimport { unix } from '../utils/date-getters';\nimport { addRegexToken, matchSigned, matchTimestamp } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { toInt } from '../utils/type-checks';\n// FORMATTING\naddFormatToken('X', null, null, function (date) {\n return unix(date).toString(10);\n});\naddFormatToken('x', null, null, function (date) {\n return date.valueOf().toString(10);\n});\n// PARSING\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n return config;\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n return config;\n});\n//# sourceMappingURL=timestamp.js.map","import { addFormatToken } from '../format/format';\nimport { weekOfYear } from './week-calendar-utils';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addWeekParseToken } from '../parse/token';\nimport { toInt } from '../utils/type-checks';\nimport { getLocale } from '../locale/locales';\nimport { add } from '../moment/add-subtract';\n// FORMATTING\naddFormatToken('w', ['ww', 2, false], 'wo', function (date, opts) {\n return getWeek(date, opts.locale).toString(10);\n});\naddFormatToken('W', ['WW', 2, false], 'Wo', function (date) {\n return getISOWeek(date).toString(10);\n});\n// ALIASES\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n// PRIORITIES\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n// PARSING\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n return config;\n});\n// export function getSetWeek (input) {\n// var week = this.localeData().week(this);\n// return input == null ? week : this.add((input - week) * 7, 'd');\n// }\nexport function setWeek(date, input, locale = getLocale()) {\n const week = getWeek(date, locale);\n return add(date, (input - week) * 7, 'day');\n}\nexport function getWeek(date, locale = getLocale()) {\n return locale.week(date);\n}\n// export function getSetISOWeek (input) {\n// var week = weekOfYear(this, 1, 4).week;\n// return input == null ? week : this.add((input - week) * 7, 'd');\n// }\nexport function setISOWeek(date, input) {\n const week = getISOWeek(date);\n return add(date, (input - week) * 7, 'day');\n}\nexport function getISOWeek(date) {\n return weekOfYear(date, 1, 4).week;\n}\n//# sourceMappingURL=week.js.map","import { addFormatToken } from '../format/format';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';\nimport { addWeekParseToken } from '../parse/token';\nimport { toInt } from '../utils/type-checks';\nimport { parseTwoDigitYear } from './year';\nimport { dayOfYearFromWeeks, weekOfYear, weeksInYear } from './week-calendar-utils';\nimport { createUTCDate } from '../create/date-from-array';\nimport { getISOWeek, getWeek } from './week';\nimport { getISODayOfWeek, getLocaleDayOfWeek } from './day-of-week';\nimport { getLocale } from '../locale/locales';\nimport { setDate, setFullYear, setMonth } from '../utils/date-setters';\nimport { getDate, getFullYear, getMonth } from '../utils/date-getters';\n// FORMATTING\naddFormatToken(null, ['gg', 2, false], null, function (date, opts) {\n // return this.weekYear() % 100;\n return (getWeekYear(date, opts.locale) % 100).toString();\n});\naddFormatToken(null, ['GG', 2, false], null, function (date) {\n // return this.isoWeekYear() % 100;\n return (getISOWeekYear(date) % 100).toString();\n});\nfunction addWeekYearFormatToken(token, getter) {\n addFormatToken(null, [token, token.length, false], null, getter);\n}\nfunction _getWeekYearFormatCb(date, opts) {\n return getWeekYear(date, opts.locale).toString();\n}\nfunction _getISOWeekYearFormatCb(date) {\n return getISOWeekYear(date).toString();\n}\naddWeekYearFormatToken('gggg', _getWeekYearFormatCb);\naddWeekYearFormatToken('ggggg', _getWeekYearFormatCb);\naddWeekYearFormatToken('GGGG', _getISOWeekYearFormatCb);\naddWeekYearFormatToken('GGGGG', _getISOWeekYearFormatCb);\n// ALIASES\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n// PRIORITY\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n// PARSING\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n return config;\n});\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = parseTwoDigitYear(input);\n return config;\n});\n// MOMENTS\nexport function getSetWeekYear(date, input, locale = getLocale()) {\n return getSetWeekYearHelper(date, input, \n // this.week(),\n getWeek(date, locale), \n // this.weekday(),\n getLocaleDayOfWeek(date, locale), locale.firstDayOfWeek(), locale.firstDayOfYear());\n}\nexport function getWeekYear(date, locale = getLocale()) {\n return weekOfYear(date, locale.firstDayOfWeek(), locale.firstDayOfYear()).year;\n}\nexport function getSetISOWeekYear(date, input) {\n return getSetWeekYearHelper(date, input, getISOWeek(date), getISODayOfWeek(date), 1, 4);\n}\nexport function getISOWeekYear(date) {\n return weekOfYear(date, 1, 4).year;\n}\nexport function getISOWeeksInYear(date, isUTC) {\n return weeksInYear(getFullYear(date, isUTC), 1, 4);\n}\nexport function getWeeksInYear(date, isUTC, locale = getLocale()) {\n return weeksInYear(getFullYear(date, isUTC), locale.firstDayOfWeek(), locale.firstDayOfYear());\n}\nfunction getSetWeekYearHelper(date, input, week, weekday, dow, doy) {\n if (!input) {\n return getWeekYear(date);\n }\n const weeksTarget = weeksInYear(input, dow, doy);\n const _week = week > weeksTarget ? weeksTarget : week;\n return setWeekAll(date, input, _week, weekday, dow, doy);\n}\nfunction setWeekAll(date, weekYear, week, weekday, dow, doy) {\n const dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n const _date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n setFullYear(_date, getFullYear(_date, true));\n setMonth(_date, getMonth(_date, true));\n setDate(_date, getDate(_date, true));\n return _date;\n}\n//# sourceMappingURL=week-year.js.map","// moment.js\n// version : 2.18.1\n// authors : Tim Wood, Iskren Chernev, Moment.js contributors\n// license : MIT\n// momentjs.com\nimport './units/index';\nimport { formatFunctions, makeFormatFunction } from './format/format';\nimport { getLocale } from './locale/locales';\nimport { isDateValid } from './utils/type-checks';\nexport function formatDate(date, format, locale, isUTC, offset = 0) {\n const _locale = getLocale(locale || 'en');\n if (!_locale) {\n throw new Error(`Locale \"${locale}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n const _format = format || (isUTC ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ssZ');\n const output = formatMoment(date, _format, _locale, isUTC, offset);\n if (!output) {\n return output;\n }\n return _locale.postformat(output);\n}\n// format date using native date object\nexport function formatMoment(date, _format, locale, isUTC, offset = 0) {\n if (!isDateValid(date)) {\n return locale.invalidDate;\n }\n const format = expandFormat(_format, locale);\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](date, locale, isUTC, offset);\n}\nexport function expandFormat(_format, locale) {\n let format = _format;\n let i = 5;\n const localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n const replaceLongDateFormatTokens = (input) => {\n return locale.formatLongDate(input) || input;\n };\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\n}\n//# sourceMappingURL=format.js.map","// Pick the first defined of two or three arguments.\nexport function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n//# sourceMappingURL=defaults.js.map","import { DATE, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, YEAR } from '../units/constants';\nimport { daysInYear } from '../units/year';\nimport { getParsingFlags } from './parsing-flags';\nimport { createUTCDate } from './date-from-array';\nimport { createDate } from './date-from-array';\nimport { dayOfYearFromWeeks, weekOfYear, weeksInYear } from '../units/week-calendar-utils';\nimport { defaults } from '../utils/defaults';\nfunction currentDateArray(config) {\n const nowValue = new Date();\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nexport function configFromArray(config) {\n const input = [];\n let i;\n let date;\n let currentDate;\n let expectedWeekday;\n let yearToUse;\n if (config._d) {\n return config;\n }\n currentDate = currentDateArray(config);\n // compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n // if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n date = new Date(Date.UTC(yearToUse, 0, config._dayOfYear));\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n return config;\n}\nfunction dayOfYearFromWeekInfo(config) {\n let w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(new Date(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n }\n else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n const curWeek = weekOfYear(new Date(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n }\n else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n }\n else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n }\n else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n }\n else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n return config;\n}\n//# sourceMappingURL=from-array.js.map","import { getParsingFlags } from './parsing-flags';\nimport { DATE, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, WEEK, WEEKDAY, YEAR } from '../units/constants';\nimport { daysInMonth } from '../units/month';\nexport function checkOverflow(config) {\n let overflow;\n const a = config._a;\n if (a && getParsingFlags(config).overflow === -2) {\n // todo: fix this sh*t\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n if (getParsingFlags(config)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(config)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(config)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n getParsingFlags(config).overflow = overflow;\n }\n return config;\n}\n//# sourceMappingURL=check-overflow.js.map","import { configFromISO, configFromRFC2822 } from './from-string';\nimport { expandFormat } from '../format';\nimport { formattingTokens, formatTokenFunctions } from '../format/format';\nimport { isArray } from '../utils/type-checks';\nimport { getParseRegexForToken } from '../parse/regex';\nimport { addTimeToArrayFromToken } from '../parse/token';\nimport { HOUR } from '../units/constants';\nimport { configFromArray } from './from-array';\nimport { getParsingFlags } from './parsing-flags';\nimport { checkOverflow } from './check-overflow';\n// constant that refers to the ISO standard\n// hooks.ISO_8601 = function () {};\nexport const ISO_8601 = 'ISO_8601';\n// constant that refers to the RFC 2822 form\n// hooks.RFC_2822 = function () {};\nexport const RFC_2822 = 'RFC_2822';\n// date from string and format string\nexport function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === ISO_8601) {\n return configFromISO(config);\n }\n if (config._f === RFC_2822) {\n return configFromRFC2822(config);\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n if (isArray(config._f) || (!config._i && config._i !== 0)) {\n return config;\n }\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n let input = config._i.toString();\n let totalParsedInputLength = 0;\n const inputLength = input.length;\n const tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n let i;\n let token;\n let parsedInput;\n let skipped;\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (input.match(getParseRegexForToken(token, config._locale)) || [])[0];\n if (parsedInput) {\n skipped = input.substr(0, input.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n input = input.slice(input.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = inputLength - totalParsedInputLength;\n if (input.length > 0) {\n getParsingFlags(config).unusedInput.push(input);\n }\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = void 0;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n configFromArray(config);\n return checkOverflow(config);\n}\nfunction meridiemFixWrap(locale, _hour, meridiem) {\n let hour = _hour;\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n }\n if (locale.isPM == null) {\n // this is not supposed to happen\n return hour;\n }\n // Fallback\n const isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n}\n//# sourceMappingURL=from-string-and-format.js.map","import { createInvalid, isValid } from './valid';\nimport { getParsingFlags } from './parsing-flags';\nimport { configFromStringAndFormat } from './from-string-and-format';\n// date from string and array of format strings\nexport function configFromStringAndArray(config) {\n let tempConfig;\n let bestMoment;\n let scoreToBeat;\n let currentScore;\n if (!config._f || config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n return createInvalid(config);\n }\n let i;\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = Object.assign({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n if (!isValid(tempConfig)) {\n continue;\n }\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n // or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n return Object.assign(config, bestMoment || tempConfig);\n}\n//# sourceMappingURL=from-string-and-array.js.map","import { normalizeObjectUnits } from '../units/aliases';\nimport { configFromArray } from './from-array';\nimport { isObject, isString } from '../utils/type-checks';\nexport function configFromObject(config) {\n if (config._d) {\n return config;\n }\n const input = config._i;\n if (isObject(input)) {\n const i = normalizeObjectUnits(input);\n config._a = [i.year, i.month, i.day, i.hours, i.minutes, i.seconds, i.milliseconds]\n .map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n }\n return configFromArray(config);\n}\n//# sourceMappingURL=from-object.js.map","// tslint:disable:max-line-length\nimport { isArray, isNumber, isObject, isObjectEmpty, isString, isUndefined } from '../utils/type-checks';\nimport { getLocale } from '../locale/locales';\nimport { createInvalid, isValid } from './valid';\nimport { isDate } from 'rxjs/util/isDate';\nimport { configFromStringAndArray } from './from-string-and-array';\nimport { configFromStringAndFormat } from './from-string-and-format';\nimport { cloneDate } from './clone';\nimport { configFromString } from './from-string';\nimport { configFromArray } from './from-array';\nimport { configFromObject } from './from-object';\nimport { checkOverflow } from './check-overflow';\nfunction createFromConfig(config) {\n const res = checkOverflow(prepareConfig(config));\n // todo: remove, in moment.js it's never called cuz of moment constructor\n res._d = new Date(res._d != null ? res._d.getTime() : NaN);\n if (!isValid(Object.assign({}, res, { _isValid: null }))) {\n res._d = new Date(NaN);\n }\n // todo: update offset\n /*if (res._nextDay) {\n // Adding is smart enough around DST\n res._d = add(res._d, 1, 'day');\n res._nextDay = undefined;\n }*/\n return res;\n}\nexport function prepareConfig(config) {\n let input = config._i;\n const format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || (format === undefined && input === '')) {\n return createInvalid(config, { nullInput: true });\n }\n if (isString(input)) {\n config._i = input = config._locale.preparse(input);\n }\n if (isDate(input)) {\n config._d = cloneDate(input);\n return config;\n }\n // todo: add check for recursion\n if (isArray(format)) {\n configFromStringAndArray(config);\n }\n else if (format) {\n configFromStringAndFormat(config);\n }\n else {\n configFromInput(config);\n }\n if (!isValid(config)) {\n config._d = null;\n }\n return config;\n}\nfunction configFromInput(config) {\n const input = config._i;\n if (isUndefined(input)) {\n config._d = new Date();\n }\n else if (isDate(input)) {\n config._d = cloneDate(input);\n }\n else if (isString(input)) {\n configFromString(config);\n }\n else if (isArray(input) && input.length) {\n const _arr = input.slice(0);\n config._a = _arr.map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n configFromArray(config);\n }\n else if (isObject(input)) {\n configFromObject(config);\n }\n else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n }\n else {\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n }\n return config;\n}\nexport function createLocalOrUTC(input, format, localeKey, strict, isUTC) {\n const config = {};\n let _input = input;\n // params switch -> skip; test it well\n // if (localeKey === true || localeKey === false) {\n // strict = localeKey;\n // localeKey = undefined;\n // }\n // todo: fail fast and return not valid date\n if ((isObject(_input) && isObjectEmpty(_input)) || (isArray(_input) && _input.length === 0)) {\n _input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n // config._isAMomentObject = true;\n config._useUTC = config._isUTC = isUTC;\n config._l = localeKey;\n config._i = _input;\n config._f = format;\n config._strict = strict;\n return createFromConfig(config);\n}\n//# sourceMappingURL=from-anything.js.map","import { createLocalOrUTC } from './from-anything';\nimport { isDate } from '../utils/type-checks';\nexport function parseDate(input, format, localeKey, strict, isUTC) {\n if (isDate(input)) {\n return input;\n }\n const config = createLocalOrUTC(input, format, localeKey, strict, isUTC);\n return config._d;\n}\n//# sourceMappingURL=local.js.map","export function absRound(num) {\n return num < 0 ? Math.round(num * -1) * -1 : Math.round(num);\n}\n//# sourceMappingURL=abs-round.js.map","import { endOf, startOf } from './start-end-of';\nexport function isAfter(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() > date2.valueOf();\n }\n return date2.valueOf() < startOf(date1, units).valueOf();\n}\nexport function isBefore(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() < date2.valueOf();\n }\n return endOf(date1, units).valueOf() < date2.valueOf();\n}\nexport function isBetween(date, from, to, units, inclusivity = '()') {\n const leftBound = inclusivity[0] === '('\n ? isAfter(date, from, units)\n : !isBefore(date, from, units);\n const rightBound = inclusivity[1] === ')'\n ? isBefore(date, to, units)\n : !isAfter(date, to, units);\n return leftBound && rightBound;\n}\nexport function isSame(date1, date2, units = 'milliseconds') {\n if (!date1 || !date2) {\n return false;\n }\n if (units === 'milliseconds') {\n return date1.valueOf() === date2.valueOf();\n }\n const inputMs = date2.valueOf();\n return (startOf(date1, units).valueOf() <= inputMs &&\n inputMs <= endOf(date1, units).valueOf());\n}\nexport function isSameOrAfter(date1, date2, units) {\n return isSame(date1, date2, units) || isAfter(date1, date2, units);\n}\nexport function isSameOrBefore(date1, date2, units) {\n return isSame(date1, date2, units) || isBefore(date1, date2, units);\n}\n//# sourceMappingURL=date-compare.js.map","// ASP.NET json date format regex\nimport { Duration, isDuration } from './constructor';\nimport { isDateValid, isNumber, isObject, isString, toInt } from '../utils/type-checks';\nimport { DATE, HOUR, MILLISECOND, MINUTE, SECOND } from '../units/constants';\nimport { parseDate } from '../create/local';\nimport { absRound } from '../utils/abs-round';\nimport { cloneWithOffset } from '../units/offset';\nimport { isAfter, isBefore } from '../utils/date-compare';\nimport { getFullYear, getMonth } from '../utils/date-getters';\nimport { add } from '../moment/add-subtract';\nimport { cloneDate } from '../create/clone';\nconst aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\n// tslint:disable-next-line\nconst isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\nexport function createDuration(input, key, config = {}) {\n const duration = convertDuration(input, key);\n // matching against regexp is expensive, do it on demand\n return new Duration(duration, config);\n}\nfunction convertDuration(input, key) {\n // checks for null or undefined\n if (input == null) {\n return {};\n }\n if (isDuration(input)) {\n return {\n milliseconds: input._milliseconds,\n day: input._days,\n month: input._months\n };\n }\n if (isNumber(input)) {\n // duration = {};\n return key ? { [key]: input } : { milliseconds: input };\n }\n if (isString(input)) {\n let match = aspNetRegex.exec(input);\n if (match) {\n const sign = (match[1] === '-') ? -1 : 1;\n return {\n year: 0,\n day: toInt(match[DATE]) * sign,\n hours: toInt(match[HOUR]) * sign,\n minutes: toInt(match[MINUTE]) * sign,\n seconds: toInt(match[SECOND]) * sign,\n // the millisecond decimal point is included in the match\n milliseconds: toInt(absRound(toInt(match[MILLISECOND]) * 1000)) * sign\n };\n }\n match = isoRegex.exec(input);\n if (match) {\n const sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n return {\n year: parseIso(match[2], sign),\n month: parseIso(match[3], sign),\n week: parseIso(match[4], sign),\n day: parseIso(match[5], sign),\n hours: parseIso(match[6], sign),\n minutes: parseIso(match[7], sign),\n seconds: parseIso(match[8], sign)\n };\n }\n }\n if (isObject(input) && ('from' in input || 'to' in input)) {\n const diffRes = momentsDifference(parseDate(input.from), parseDate(input.to));\n return {\n milliseconds: diffRes.milliseconds,\n month: diffRes.months\n };\n }\n return input;\n}\n// createDuration.fn = Duration.prototype;\n// createDuration.invalid = invalid;\nfunction parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n const res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\nfunction positiveMomentsDifference(base, other) {\n const res = { milliseconds: 0, months: 0 };\n res.months = getMonth(other) - getMonth(base) +\n (getFullYear(other) - getFullYear(base)) * 12;\n const _basePlus = add(cloneDate(base), res.months, 'month');\n if (isAfter(_basePlus, other)) {\n --res.months;\n }\n res.milliseconds = +other - +(add(cloneDate(base), res.months, 'month'));\n return res;\n}\nfunction momentsDifference(base, other) {\n if (!(isDateValid(base) && isDateValid(other))) {\n return { milliseconds: 0, months: 0 };\n }\n let res;\n const _other = cloneWithOffset(other, base, { _offset: base.getTimezoneOffset() });\n if (isBefore(base, _other)) {\n res = positiveMomentsDifference(base, _other);\n }\n else {\n res = positiveMomentsDifference(_other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n return res;\n}\n//# sourceMappingURL=create.js.map","import { createDuration } from '../duration/create';\nimport { absRound } from '../utils/abs-round';\nimport { getDate, getMonth, getTime } from '../utils/date-getters';\nimport { setDate, setMonth, setTime } from '../utils/date-setters';\nimport { cloneDate } from '../create/clone';\nexport function add(date, val, period, isUTC) {\n const dur = createDuration(val, period);\n return addSubtract(date, dur, 1, isUTC);\n}\nexport function subtract(date, val, period, isUTC) {\n const dur = createDuration(val, period);\n return addSubtract(date, dur, -1, isUTC);\n}\nexport function addSubtract(date, duration, isAdding, isUTC) {\n const milliseconds = duration._milliseconds;\n const days = absRound(duration._days);\n const months = absRound(duration._months);\n // todo: add timezones support\n // const _updateOffset = updateOffset == null ? true : updateOffset;\n if (months) {\n setMonth(date, getMonth(date, isUTC) + months * isAdding, isUTC);\n }\n if (days) {\n setDate(date, getDate(date, isUTC) + days * isAdding, isUTC);\n }\n if (milliseconds) {\n setTime(date, getTime(date) + milliseconds * isAdding);\n }\n return cloneDate(date);\n // todo: add timezones support\n // if (_updateOffset) {\n // hooks.updateOffset(date, days || months);\n // }\n}\n//# sourceMappingURL=add-subtract.js.map","import { addFormatToken } from '../format/format';\nimport { getDay } from '../utils/date-getters';\nimport { addRegexToken, match1to2 } from '../parse/regex';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addWeekParseToken } from '../parse/token';\nimport { getParsingFlags } from '../create/parsing-flags';\nimport { isNumber, isString, toInt } from '../utils/type-checks';\nimport { add } from '../moment/add-subtract';\nimport { getLocale } from '../locale/locales';\n// FORMATTING\naddFormatToken('d', null, 'do', function (date, opts) {\n return getDay(date, opts.isUTC).toString(10);\n});\naddFormatToken('dd', null, null, function (date, opts) {\n return opts.locale.weekdaysMin(date, opts.format, opts.isUTC);\n});\naddFormatToken('ddd', null, null, function (date, opts) {\n return opts.locale.weekdaysShort(date, opts.format, opts.isUTC);\n});\naddFormatToken('dddd', null, null, function (date, opts) {\n return opts.locale.weekdays(date, opts.format, opts.isUTC);\n});\naddFormatToken('e', null, null, function (date, opts) {\n return getLocaleDayOfWeek(date, opts.locale, opts.isUTC).toString(10);\n // return getDay(date, opts.isUTC).toString(10);\n});\naddFormatToken('E', null, null, function (date, opts) {\n return getISODayOfWeek(date, opts.isUTC).toString(10);\n});\n// ALIASES\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n// PARSING\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n const weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n }\n else {\n getParsingFlags(config).invalidWeekday = !!input;\n }\n return config;\n});\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n return config;\n});\n// HELPERS\nexport function parseWeekday(input, locale) {\n if (!isString(input)) {\n return input;\n }\n const _num = parseInt(input, 10);\n if (!isNaN(_num)) {\n return _num;\n }\n const _weekDay = locale.weekdaysParse(input);\n if (isNumber(_weekDay)) {\n return _weekDay;\n }\n return null;\n}\nexport function parseIsoWeekday(input, locale = getLocale()) {\n if (isString(input)) {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNumber(input) && isNaN(input) ? null : input;\n}\n// MOMENTS\nexport function getSetDayOfWeek(date, input, opts) {\n if (!input) {\n return getDayOfWeek(date, opts.isUTC);\n }\n return setDayOfWeek(date, input, opts.locale, opts.isUTC);\n}\nexport function setDayOfWeek(date, input, locale = getLocale(), isUTC) {\n const day = getDay(date, isUTC);\n const _input = parseWeekday(input, locale);\n return add(date, _input - day, 'day');\n}\nexport function getDayOfWeek(date, isUTC) {\n return getDay(date, isUTC);\n}\n/********************************************/\n// todo: utc\n// getSetLocaleDayOfWeek\nexport function getLocaleDayOfWeek(date, locale = getLocale(), isUTC) {\n return (getDay(date, isUTC) + 7 - locale.firstDayOfWeek()) % 7;\n}\nexport function setLocaleDayOfWeek(date, input, opts = {}) {\n const weekday = getLocaleDayOfWeek(date, opts.locale, opts.isUTC);\n return add(date, input - weekday, 'day');\n}\n// getSetISODayOfWeek\nexport function getISODayOfWeek(date, isUTC) {\n return getDay(date, isUTC) || 7;\n}\nexport function setISODayOfWeek(date, input, opts = {}) {\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n const weekday = parseIsoWeekday(input, opts.locale);\n return setDayOfWeek(date, getDayOfWeek(date) % 7 ? weekday : weekday - 7);\n}\n//# sourceMappingURL=day-of-week.js.map","import { setDate, setHours, setMilliseconds, setMinutes, setMonth, setSeconds } from './date-setters';\nimport { cloneDate } from '../create/clone';\nimport { setISODayOfWeek, setLocaleDayOfWeek } from '../units/day-of-week';\nimport { getMonth } from './date-getters';\nimport { add, subtract } from '../moment/add-subtract';\nexport function startOf(date, unit, isUTC) {\n const _date = cloneDate(date);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (unit) {\n case 'year':\n setMonth(_date, 0, isUTC);\n /* falls through */\n case 'quarter':\n case 'month':\n setDate(_date, 1, isUTC);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n setHours(_date, 0, isUTC);\n /* falls through */\n case 'hours':\n setMinutes(_date, 0, isUTC);\n /* falls through */\n case 'minutes':\n setSeconds(_date, 0, isUTC);\n /* falls through */\n case 'seconds':\n setMilliseconds(_date, 0, isUTC);\n }\n // weeks are a special case\n if (unit === 'week') {\n setLocaleDayOfWeek(_date, 0, { isUTC });\n }\n if (unit === 'isoWeek') {\n setISODayOfWeek(_date, 1);\n }\n // quarters are also special\n if (unit === 'quarter') {\n setMonth(_date, Math.floor(getMonth(_date, isUTC) / 3) * 3, isUTC);\n }\n return _date;\n}\nexport function endOf(date, unit, isUTC) {\n let _unit = unit;\n // 'date' is an alias for 'day', so it should be considered as such.\n if (_unit === 'date') {\n _unit = 'day';\n }\n const start = startOf(date, _unit, isUTC);\n const _step = add(start, 1, _unit === 'isoWeek' ? 'week' : _unit, isUTC);\n const res = subtract(_step, 1, 'milliseconds', isUTC);\n return res;\n}\n//# sourceMappingURL=start-end-of.js.map","import { addFormatToken } from '../format/format';\nimport { startOf } from '../utils/start-end-of';\nimport { addRegexToken, match1to3, match3 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { toInt } from '../utils/type-checks';\nimport { add } from '../moment/add-subtract';\n// FORMATTING\naddFormatToken('DDD', ['DDDD', 3, false], 'DDDo', function (date) {\n return getDayOfYear(date).toString(10);\n});\n// ALIASES\naddUnitAlias('dayOfYear', 'DDD');\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n return config;\n});\nexport function getDayOfYear(date) {\n const date1 = +startOf(date, 'day');\n const date2 = +startOf(date, 'year');\n const someDate = date1 - date2;\n const oneDay = 1000 * 60 * 60 * 24;\n return Math.round(someDate / oneDay) + 1;\n}\nexport function setDayOfYear(date, input) {\n const dayOfYear = getDayOfYear(date);\n return add(date, (input - dayOfYear), 'day');\n}\n//# sourceMappingURL=day-of-year.js.map","/**\n *\n * @param {number} year\n * @param {number} dow - start-of-first-week\n * @param {number} doy - start-of-year\n * @returns {number}\n */\nimport { createUTCDate } from '../create/date-from-array';\nimport { daysInYear } from './year';\nimport { getDayOfYear } from './day-of-year';\nimport { getFullYear } from '../utils/date-getters';\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n const fwd = dow - doy + 7;\n // first-week day local weekday -- which local weekday is fwd\n const fwdlw = (createUTCDate(year, 0, fwd).getUTCDay() - dow + 7) % 7;\n return -fwdlw + fwd - 1;\n}\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nexport function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n const localWeekday = (7 + weekday - dow) % 7;\n const weekOffset = firstWeekOffset(year, dow, doy);\n const dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset;\n let resYear;\n let resDayOfYear;\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n }\n else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n }\n else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\nexport function weekOfYear(date, dow, doy) {\n const weekOffset = firstWeekOffset(getFullYear(date), dow, doy);\n const week = Math.floor((getDayOfYear(date) - weekOffset - 1) / 7) + 1;\n let resWeek;\n let resYear;\n if (week < 1) {\n resYear = getFullYear(date) - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n }\n else if (week > weeksInYear(getFullYear(date), dow, doy)) {\n resWeek = week - weeksInYear(getFullYear(date), dow, doy);\n resYear = getFullYear(date) + 1;\n }\n else {\n resYear = getFullYear(date);\n resWeek = week;\n }\n return {\n week: resWeek,\n year: resYear\n };\n}\nexport function weeksInYear(year, dow, doy) {\n const weekOffset = firstWeekOffset(year, dow, doy);\n const weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n//# sourceMappingURL=week-calendar-utils.js.map","// tslint:disable:max-file-line-count max-line-length cyclomatic-complexity\nimport { weekOfYear } from '../units/week-calendar-utils';\nimport { hasOwnProp, isArray, isFunction } from '../utils/type-checks';\nimport { getDay, getMonth } from '../utils/date-getters';\nimport { matchWord, regexEscape } from '../parse/regex';\nimport { setDayOfWeek } from '../units/day-of-week';\nconst MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nexport const defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nexport const defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nexport const defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nexport const defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nexport const defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nexport const defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n};\nexport const defaultOrdinal = '%d';\nexport const defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\nconst defaultMonthsShortRegex = matchWord;\nconst defaultMonthsRegex = matchWord;\nexport class Locale {\n constructor(config) {\n if (!!config) {\n this.set(config);\n }\n }\n set(config) {\n let confKey;\n for (confKey in config) {\n if (!config.hasOwnProperty(confKey)) {\n continue;\n }\n const prop = config[confKey];\n const key = (isFunction(prop) ? confKey : `_${confKey}`);\n this[key] = prop;\n }\n this._config = config;\n }\n calendar(key, date, now) {\n const output = this._calendar[key] || this._calendar.sameElse;\n return isFunction(output) ? output.call(null, date, now) : output;\n }\n longDateFormat(key) {\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n return this._longDateFormat[key];\n }\n get invalidDate() {\n return this._invalidDate;\n }\n set invalidDate(val) {\n this._invalidDate = val;\n }\n ordinal(num, token) {\n return this._ordinal.replace('%d', num.toString(10));\n }\n preparse(str) {\n return str;\n }\n postformat(str) {\n return str;\n }\n relativeTime(num, withoutSuffix, str, isFuture) {\n const output = this._relativeTime[str];\n return (isFunction(output)) ?\n output(num, withoutSuffix, str, isFuture) :\n output.replace(/%d/i, num.toString(10));\n }\n pastFuture(diff, output) {\n const format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n months(date, format, isUTC = false) {\n if (!date) {\n return isArray(this._months)\n ? this._months\n : this._months.standalone;\n }\n if (isArray(this._months)) {\n return this._months[getMonth(date, isUTC)];\n }\n const key = (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone';\n return this._months[key][getMonth(date, isUTC)];\n }\n monthsShort(date, format, isUTC = false) {\n if (!date) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort.standalone;\n }\n if (isArray(this._monthsShort)) {\n return this._monthsShort[getMonth(date, isUTC)];\n }\n const key = MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone';\n return this._monthsShort[key][getMonth(date, isUTC)];\n }\n monthsParse(monthName, format, strict) {\n let date;\n let regex;\n if (this._monthsParseExact) {\n return this.handleMonthStrictParse(monthName, format, strict);\n }\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(Date.UTC(2000, i));\n if (strict && !this._longMonthsParse[i]) {\n const _months = this.months(date, '').replace('.', '');\n const _shortMonths = this.monthsShort(date, '').replace('.', '');\n this._longMonthsParse[i] = new RegExp(`^${_months}$`, 'i');\n this._shortMonthsParse[i] = new RegExp(`^${_shortMonths}$`, 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = `^${this.months(date, '')}|^${this.monthsShort(date, '')}`;\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n }\n if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n }\n if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n }\n return this._monthsRegex;\n }\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n }\n return this._monthsShortRegex;\n }\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n /** Week */\n week(date) {\n return weekOfYear(date, this._week.dow, this._week.doy).week;\n }\n firstDayOfWeek() {\n return this._week.dow;\n }\n firstDayOfYear() {\n return this._week.doy;\n }\n weekdays(date, format, isUTC) {\n if (!date) {\n return isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays.standalone;\n }\n if (isArray(this._weekdays)) {\n return this._weekdays[getDay(date, isUTC)];\n }\n const _key = this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone';\n return this._weekdays[_key][getDay(date, isUTC)];\n }\n weekdaysMin(date, format, isUTC) {\n return date ? this._weekdaysMin[getDay(date, isUTC)] : this._weekdaysMin;\n }\n weekdaysShort(date, format, isUTC) {\n return date ? this._weekdaysShort[getDay(date, isUTC)] : this._weekdaysShort;\n }\n // proto.weekdaysParse = localeWeekdaysParse;\n weekdaysParse(weekdayName, format, strict) {\n let i;\n let regex;\n if (this._weekdaysParseExact) {\n return this.handleWeekStrictParse(weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // fix: here is the issue\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(`^${this.weekdays(date, '').replace('.', '\\.?')}$`, 'i');\n this._shortWeekdaysParse[i] = new RegExp(`^${this.weekdaysShort(date).replace('.', '\\.?')}$`, 'i');\n this._minWeekdaysParse[i] = new RegExp(`^${this.weekdaysMin(date).replace('.', '\\.?')}$`, 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = `^${this.weekdays(date, '')}|^${this.weekdaysShort(date)}|^${this.weekdaysMin(date)}`;\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n if (!isArray(this._fullWeekdaysParse)\n || !isArray(this._shortWeekdaysParse)\n || !isArray(this._minWeekdaysParse)\n || !isArray(this._weekdaysParse)) {\n return;\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n }\n else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n // proto.weekdaysRegex = weekdaysRegex;\n weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n }\n else {\n return this._weekdaysRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = matchWord;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n // proto.weekdaysShortRegex = weekdaysShortRegex;\n // proto.weekdaysMinRegex = weekdaysMinRegex;\n weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n }\n else {\n return this._weekdaysShortRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = matchWord;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n }\n else {\n return this._weekdaysMinRegex;\n }\n }\n else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = matchWord;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n isPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return input.toLowerCase().charAt(0) === 'p';\n }\n meridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n }\n return isLower ? 'am' : 'AM';\n }\n formatLongDate(key) {\n this._longDateFormat = this._longDateFormat ? this._longDateFormat : defaultLongDateFormat;\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, (val) => {\n return val.slice(1);\n });\n return this._longDateFormat[key];\n }\n handleMonthStrictParse(monthName, format, strict) {\n const llc = monthName.toLocaleLowerCase();\n let i;\n let ii;\n let mom;\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = new Date(2000, i);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'MMM') {\n ii = this._shortMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n ii = this._longMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n if (format === 'MMM') {\n ii = this._shortMonthsParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._longMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n ii = this._longMonthsParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortMonthsParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n handleWeekStrictParse(weekdayName, format, strict) {\n let ii;\n const llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n let i;\n for (i = 0; i < 7; ++i) {\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n this._minWeekdaysParse[i] = this.weekdaysMin(date).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(date).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(date, '').toLocaleLowerCase();\n }\n }\n if (!isArray(this._weekdaysParse)\n || !isArray(this._shortWeekdaysParse)\n || !isArray(this._minWeekdaysParse)) {\n return;\n }\n if (strict) {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else {\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n }\n else {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n else {\n ii = this._minWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n computeMonthsParse() {\n const shortPieces = [];\n const longPieces = [];\n const mixedPieces = [];\n let date;\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(2000, i);\n shortPieces.push(this.monthsShort(date, ''));\n longPieces.push(this.months(date, ''));\n mixedPieces.push(this.months(date, ''));\n mixedPieces.push(this.monthsShort(date, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._monthsRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._monthsShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n }\n computeWeekdaysParse() {\n const minPieces = [];\n const shortPieces = [];\n const longPieces = [];\n const mixedPieces = [];\n let i;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // let mom = createUTC([2000, 1]).day(i);\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n const minp = this.weekdaysMin(date);\n const shortp = this.weekdaysShort(date);\n const longp = this.weekdays(date);\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._weekdaysRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._weekdaysShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n this._weekdaysMinStrictRegex = new RegExp(`^(${minPieces.join('|')})`, 'i');\n }\n}\nfunction cmpLenRev(a, b) {\n return b.length - a.length;\n}\n//# sourceMappingURL=locale.class.js.map","export const defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n};\n//# sourceMappingURL=calendar.js.map","import { defaultDayOfMonthOrdinalParse, defaultLocaleMonths, defaultLocaleMonthsShort, defaultLocaleWeekdays, defaultLocaleWeekdaysMin, defaultLocaleWeekdaysShort, defaultLongDateFormat, defaultOrdinal } from './locale.class';\nimport { defaultCalendar } from './calendar';\nexport const defaultInvalidDate = 'Invalid date';\nexport const defaultLocaleWeek = {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n};\nexport const defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nexport const defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n};\nexport const baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n};\n//# sourceMappingURL=locale.defaults.js.map","// compare two arrays, return the number of differences\nimport { toInt } from './type-checks';\nexport function compareArrays(array1, array2, dontConvert) {\n const len = Math.min(array1.length, array2.length);\n const lengthDiff = Math.abs(array1.length - array2.length);\n let diffs = 0;\n let i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i])\n || (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n//# sourceMappingURL=compare-arrays.js.map","// internal storage for locale config files\nimport { Locale } from './locale.class';\nimport { baseConfig } from './locale.defaults';\nimport { hasOwnProp, isArray, isObject, isString, isUndefined, toInt } from '../utils/type-checks';\nimport { compareArrays } from '../utils/compare-arrays';\nconst locales = {};\nconst localeFamilies = {};\nlet globalLocale;\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least,\n// but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n let next;\n let locale;\n let i = 0;\n while (i < names.length) {\n const split = normalizeLocale(names[i]).split('-');\n let j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n // the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\nexport function mergeConfigs(parentConfig, childConfig) {\n const res = Object.assign({}, parentConfig);\n for (const childProp in childConfig) {\n if (!hasOwnProp(childConfig, childProp)) {\n continue;\n }\n if (isObject(parentConfig[childProp]) && isObject(childConfig[childProp])) {\n res[childProp] = {};\n Object.assign(res[childProp], parentConfig[childProp]);\n Object.assign(res[childProp], childConfig[childProp]);\n }\n else if (childConfig[childProp] != null) {\n res[childProp] = childConfig[childProp];\n }\n else {\n delete res[childProp];\n }\n }\n let parentProp;\n for (parentProp in parentConfig) {\n if (hasOwnProp(parentConfig, parentProp) &&\n !hasOwnProp(childConfig, parentProp) &&\n isObject(parentConfig[parentProp])) {\n // make sure changes to properties don't modify parent config\n res[parentProp] = Object.assign({}, res[parentProp]);\n }\n }\n return res;\n}\nfunction loadLocale(name) {\n // no way!\n /* var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }*/\n if (!locales[name]) {\n // tslint:disable-next-line\n console.error(`Khronos locale error: please load locale \"${name}\" before using it`);\n // throw new Error(`Khronos locale error: please load locale \"${name}\" before using it`);\n }\n return locales[name];\n}\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nexport function getSetGlobalLocale(key, values) {\n let data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else if (isString(key)) {\n data = defineLocale(key, values);\n }\n if (data) {\n globalLocale = data;\n }\n }\n return globalLocale && globalLocale._abbr;\n}\nexport function defineLocale(name, config) {\n if (config === null) {\n // useful for testing\n delete locales[name];\n globalLocale = getLocale('en');\n return null;\n }\n if (!config) {\n return;\n }\n let parentConfig = baseConfig;\n config.abbr = name;\n if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n }\n else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({ name, config });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n return locales[name];\n}\nexport function updateLocale(name, config) {\n let _config = config;\n if (_config != null) {\n let parentConfig = baseConfig;\n // MERGE\n const tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n _config = mergeConfigs(parentConfig, _config);\n const locale = new Locale(_config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n }\n else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n }\n else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n// returns locale data\nexport function getLocale(key) {\n if (!key) {\n return globalLocale;\n }\n // let locale;\n const _key = isArray(key) ? key : [key];\n return chooseLocale(_key);\n}\nexport function listLocales() {\n return Object.keys(locales);\n}\n// define default locale\ngetSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal(num) {\n const b = num % 10;\n const output = toInt((num % 100) / 10) === 1\n ? 'th'\n : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return num + output;\n }\n});\n//# sourceMappingURL=locales.js.map","/*tslint:disable */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\nvar win = (typeof window !== 'undefined' && window) || {};\nexport { win as window };\nexport var document = win.document;\nexport var location = win.location;\nexport var gc = win['gc'] ? () => win['gc']() : () => null;\nexport var performance = win['performance'] ? win['performance'] : null;\nexport const Event = win['Event'];\nexport const MouseEvent = win['MouseEvent'];\nexport const KeyboardEvent = win['KeyboardEvent'];\nexport const EventTarget = win['EventTarget'];\nexport const History = win['History'];\nexport const Location = win['Location'];\nexport const EventListener = win['EventListener'];\n//# sourceMappingURL=browser.js.map","import { window } from './facade/browser';\nlet guessedVersion;\nfunction _guessBsVersion() {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\nexport function setTheme(theme) {\n guessedVersion = theme;\n}\n// todo: in ngx-bootstrap, bs4 will became a default one\nexport function isBs3() {\n if (typeof window === 'undefined') {\n return true;\n }\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs3';\n }\n return window.__theme !== 'bs4';\n}\n//# sourceMappingURL=theme-provider.js.map","import { Injectable } from '@angular/core';\n/**\n * Configuration service, provides default values for the AccordionComponent.\n */\nexport class AccordionConfig {\n constructor() {\n /** Whether the other panels should be closed when a panel is opened */\n this.closeOthers = false;\n }\n}\nAccordionConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nAccordionConfig.ctorParameters = () => [];\n//# sourceMappingURL=accordion.config.js.map","import { Component, Input } from '@angular/core';\nimport { AccordionConfig } from './accordion.config';\n/** Displays collapsible content panels for presenting information in a limited amount of space. */\nexport class AccordionComponent {\n constructor(config) {\n this.groups = [];\n Object.assign(this, config);\n }\n closeOtherPanels(openGroup) {\n if (!this.closeOthers) {\n return;\n }\n this.groups.forEach((group) => {\n if (group !== openGroup) {\n group.isOpen = false;\n }\n });\n }\n addGroup(group) {\n this.groups.push(group);\n }\n removeGroup(group) {\n const index = this.groups.indexOf(group);\n if (index !== -1) {\n this.groups.splice(index, 1);\n }\n }\n}\nAccordionComponent.decorators = [\n { type: Component, args: [{\n selector: 'accordion',\n template: `<ng-content></ng-content>`,\n host: {\n '[attr.aria-multiselectable]': 'closeOthers',\n role: 'tablist',\n class: 'panel-group',\n style: 'display: block'\n }\n },] },\n];\n/** @nocollapse */\nAccordionComponent.ctorParameters = () => [\n { type: AccordionConfig, },\n];\nAccordionComponent.propDecorators = {\n 'closeOthers': [{ type: Input },],\n};\n//# sourceMappingURL=accordion.component.js.map","import { Component, HostBinding, Inject, Input, Output, EventEmitter } from '@angular/core';\nimport { isBs3 } from '../utils/theme-provider';\nimport { AccordionComponent } from './accordion.component';\n/**\n * ### Accordion heading\n * Instead of using `heading` attribute on the `accordion-group`, you can use\n * an `accordion-heading` attribute on `any` element inside of a group that\n * will be used as group's header template.\n */\nexport class AccordionPanelComponent {\n constructor(accordion) {\n /** Emits when the opened state changes */\n this.isOpenChange = new EventEmitter();\n this._isOpen = false;\n this.accordion = accordion;\n }\n // Questionable, maybe .panel-open should be on child div.panel element?\n /** Is accordion group open or closed. This property supports two-way binding */\n get isOpen() {\n return this._isOpen;\n }\n set isOpen(value) {\n if (value !== this.isOpen) {\n if (value) {\n this.accordion.closeOtherPanels(this);\n }\n this._isOpen = value;\n Promise.resolve(null).then(() => {\n this.isOpenChange.emit(value);\n });\n }\n }\n get isBs3() {\n return isBs3();\n }\n ngOnInit() {\n this.panelClass = this.panelClass || 'panel-default';\n this.accordion.addGroup(this);\n }\n ngOnDestroy() {\n this.accordion.removeGroup(this);\n }\n toggleOpen(event) {\n if (!this.isDisabled) {\n this.isOpen = !this.isOpen;\n }\n }\n}\nAccordionPanelComponent.decorators = [\n { type: Component, args: [{\n selector: 'accordion-group, accordion-panel',\n template: \"<div class=\\\"panel card\\\" [ngClass]=\\\"panelClass\\\"> <div class=\\\"panel-heading card-header\\\" role=\\\"tab\\\" (click)=\\\"toggleOpen($event)\\\"> <div class=\\\"panel-title\\\"> <div role=\\\"button\\\" class=\\\"accordion-toggle\\\" [attr.aria-expanded]=\\\"isOpen\\\"> <button class=\\\"btn btn-link\\\" *ngIf=\\\"heading\\\" [ngClass]=\\\"{'text-muted': isDisabled}\\\"> {{ heading }} </button> <ng-content select=\\\"[accordion-heading]\\\"></ng-content> </div> </div> </div> <div class=\\\"panel-collapse collapse\\\" role=\\\"tabpanel\\\" [collapse]=\\\"!isOpen\\\"> <div class=\\\"panel-body card-block card-body\\\"> <ng-content></ng-content> </div> </div> </div> \",\n host: {\n class: 'panel',\n style: 'display: block'\n }\n },] },\n];\n/** @nocollapse */\nAccordionPanelComponent.ctorParameters = () => [\n { type: AccordionComponent, decorators: [{ type: Inject, args: [AccordionComponent,] },] },\n];\nAccordionPanelComponent.propDecorators = {\n 'heading': [{ type: Input },],\n 'panelClass': [{ type: Input },],\n 'isDisabled': [{ type: Input },],\n 'isOpenChange': [{ type: Output },],\n 'isOpen': [{ type: HostBinding, args: ['class.panel-open',] }, { type: Input },],\n};\n//# sourceMappingURL=accordion-group.component.js.map","// todo: add animations when https://github.com/angular/angular/issues/9947 solved\nimport { Directive, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2 } from '@angular/core';\nexport class CollapseDirective {\n constructor(_el, _renderer) {\n this._el = _el;\n this._renderer = _renderer;\n /** This event fires as soon as content collapses */\n this.collapsed = new EventEmitter();\n /** This event fires as soon as content becomes visible */\n this.expanded = new EventEmitter();\n // shown\n this.isExpanded = true;\n // hidden\n this.isCollapsed = false;\n // stale state\n this.isCollapse = true;\n // animation state\n this.isCollapsing = false;\n }\n /** A flag indicating visibility of content (shown or hidden) */\n set collapse(value) {\n this.isExpanded = value;\n this.toggle();\n }\n get collapse() {\n return this.isExpanded;\n }\n /** allows to manually toggle content visibility */\n toggle() {\n if (this.isExpanded) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n /** allows to manually hide content */\n hide() {\n this.isCollapse = false;\n this.isCollapsing = true;\n this.isExpanded = false;\n this.isCollapsed = true;\n this.isCollapse = true;\n this.isCollapsing = false;\n this.display = 'none';\n this.collapsed.emit(this);\n }\n /** allows to manually show collapsed content */\n show() {\n this.isCollapse = false;\n this.isCollapsing = true;\n this.isExpanded = true;\n this.isCollapsed = false;\n this.display = 'block';\n // this.height = 'auto';\n this.isCollapse = true;\n this.isCollapsing = false;\n this._renderer.setStyle(this._el.nativeElement, 'overflow', 'visible');\n this._renderer.setStyle(this._el.nativeElement, 'height', 'auto');\n this.expanded.emit(this);\n }\n}\nCollapseDirective.decorators = [\n { type: Directive, args: [{\n selector: '[collapse]',\n exportAs: 'bs-collapse',\n host: {\n '[class.collapse]': 'true'\n }\n },] },\n];\n/** @nocollapse */\nCollapseDirective.ctorParameters = () => [\n { type: ElementRef, },\n { type: Renderer2, },\n];\nCollapseDirective.propDecorators = {\n 'collapsed': [{ type: Output },],\n 'expanded': [{ type: Output },],\n 'display': [{ type: HostBinding, args: ['style.display',] },],\n 'isExpanded': [{ type: HostBinding, args: ['class.in',] }, { type: HostBinding, args: ['class.show',] }, { type: HostBinding, args: ['attr.aria-expanded',] },],\n 'isCollapsed': [{ type: HostBinding, args: ['attr.aria-hidden',] },],\n 'isCollapse': [{ type: HostBinding, args: ['class.collapse',] },],\n 'isCollapsing': [{ type: HostBinding, args: ['class.collapsing',] },],\n 'collapse': [{ type: Input },],\n};\n//# sourceMappingURL=collapse.directive.js.map","import { NgModule } from '@angular/core';\nimport { CollapseDirective } from './collapse.directive';\nexport class CollapseModule {\n static forRoot() {\n return { ngModule: CollapseModule, providers: [] };\n }\n}\nCollapseModule.decorators = [\n { type: NgModule, args: [{\n declarations: [CollapseDirective],\n exports: [CollapseDirective]\n },] },\n];\n/** @nocollapse */\nCollapseModule.ctorParameters = () => [];\n//# sourceMappingURL=collapse.module.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CollapseModule } from '../collapse/collapse.module';\nimport { AccordionPanelComponent } from './accordion-group.component';\nimport { AccordionComponent } from './accordion.component';\nimport { AccordionConfig } from './accordion.config';\nexport class AccordionModule {\n static forRoot() {\n return { ngModule: AccordionModule, providers: [AccordionConfig] };\n }\n}\nAccordionModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, CollapseModule],\n declarations: [AccordionComponent, AccordionPanelComponent],\n exports: [AccordionComponent, AccordionPanelComponent]\n },] },\n];\n/** @nocollapse */\nAccordionModule.ctorParameters = () => [];\n//# sourceMappingURL=accordion.module.js.map","import { Injectable } from '@angular/core';\nexport class AlertConfig {\n constructor() {\n /** default alert type */\n this.type = 'warning';\n /** is alerts are dismissible by default */\n this.dismissible = false;\n /** default time before alert will dismiss */\n this.dismissOnTimeout = undefined;\n }\n}\nAlertConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nAlertConfig.ctorParameters = () => [];\n//# sourceMappingURL=alert.config.js.map","/*tslint:disable:no-invalid-this */\nexport function OnChange(defaultValue) {\n const sufix = 'Change';\n return function OnChangeHandler(target, propertyKey) {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n get() {\n return this[_key];\n },\n set(value) {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n/* tslint:enable */\n//# sourceMappingURL=decorators.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { AlertConfig } from './alert.config';\nimport { OnChange } from '../utils/decorators';\nexport class AlertComponent {\n constructor(_config, changeDetection) {\n this.changeDetection = changeDetection;\n /** Alert type.\n * Provides one of four bootstrap supported contextual classes:\n * `success`, `info`, `warning` and `danger`\n */\n this.type = 'warning';\n /** If set, displays an inline \"Close\" button */\n this.dismissible = false;\n /** Is alert visible */\n this.isOpen = true;\n /** This event fires immediately after close instance method is called,\n * $event is an instance of Alert component.\n */\n this.onClose = new EventEmitter();\n /** This event fires when alert closed, $event is an instance of Alert component */\n this.onClosed = new EventEmitter();\n this.classes = '';\n this.dismissibleChange = new EventEmitter();\n Object.assign(this, _config);\n this.dismissibleChange.subscribe((dismissible) => {\n this.classes = this.dismissible ? 'alert-dismissible' : '';\n this.changeDetection.markForCheck();\n });\n }\n ngOnInit() {\n if (this.dismissOnTimeout) {\n // if dismissOnTimeout used as attr without binding, it will be a string\n setTimeout(() => this.close(), parseInt(this.dismissOnTimeout, 10));\n }\n }\n // todo: animation ` If the .fade and .in classes are present on the element,\n // the alert will fade out before it is removed`\n /**\n * Closes an alert by removing it from the DOM.\n */\n close() {\n if (!this.isOpen) {\n return;\n }\n this.onClose.emit(this);\n this.isOpen = false;\n this.changeDetection.markForCheck();\n this.onClosed.emit(this);\n }\n}\nAlertComponent.decorators = [\n { type: Component, args: [{\n selector: 'alert,bs-alert',\n template: \"<ng-template [ngIf]=\\\"isOpen\\\"> <div [class]=\\\"'alert alert-' + type\\\" role=\\\"alert\\\" [ngClass]=\\\"classes\\\"> <ng-template [ngIf]=\\\"dismissible\\\"> <button type=\\\"button\\\" class=\\\"close\\\" aria-label=\\\"Close\\\" (click)=\\\"close()\\\"> <span aria-hidden=\\\"true\\\">×</span> <span class=\\\"sr-only\\\">Close</span> </button> </ng-template> <ng-content></ng-content> </div> </ng-template> \",\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n];\n/** @nocollapse */\nAlertComponent.ctorParameters = () => [\n { type: AlertConfig, },\n { type: ChangeDetectorRef, },\n];\nAlertComponent.propDecorators = {\n 'type': [{ type: Input },],\n 'dismissible': [{ type: Input },],\n 'dismissOnTimeout': [{ type: Input },],\n 'isOpen': [{ type: Input },],\n 'onClose': [{ type: Output },],\n 'onClosed': [{ type: Output },],\n};\n__decorate([\n OnChange(),\n __metadata(\"design:type\", Object)\n], AlertComponent.prototype, \"dismissible\", void 0);\n//# sourceMappingURL=alert.component.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AlertComponent } from './alert.component';\nimport { AlertConfig } from './alert.config';\nexport class AlertModule {\n static forRoot() {\n return { ngModule: AlertModule, providers: [AlertConfig] };\n }\n}\nAlertModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [AlertComponent],\n exports: [AlertComponent],\n entryComponents: [AlertComponent]\n },] },\n];\n/** @nocollapse */\nAlertModule.ctorParameters = () => [];\n//# sourceMappingURL=alert.module.js.map","// tslint:disable:no-use-before-declare\nimport { Directive, HostBinding, HostListener, Input, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n// TODO: config: activeClass - Class to apply to the checked buttons\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonCheckboxDirective),\n multi: true\n};\n/**\n * Add checkbox functionality to any element\n */\nexport class ButtonCheckboxDirective {\n constructor() {\n /** Truthy value, will be set to ngModel */\n this.btnCheckboxTrue = true;\n /** Falsy value, will be set to ngModel */\n this.btnCheckboxFalse = false;\n this.state = false;\n this.onChange = Function.prototype;\n this.onTouched = Function.prototype;\n }\n // view -> model\n onClick() {\n if (this.isDisabled) {\n return;\n }\n this.toggle(!this.state);\n this.onChange(this.value);\n }\n ngOnInit() {\n this.toggle(this.trueValue === this.value);\n }\n get trueValue() {\n return typeof this.btnCheckboxTrue !== 'undefined'\n ? this.btnCheckboxTrue\n : true;\n }\n get falseValue() {\n return typeof this.btnCheckboxFalse !== 'undefined'\n ? this.btnCheckboxFalse\n : false;\n }\n toggle(state) {\n this.state = state;\n this.value = this.state ? this.trueValue : this.falseValue;\n }\n // ControlValueAccessor\n // model -> view\n writeValue(value) {\n this.state = this.trueValue === value;\n this.value = value ? this.trueValue : this.falseValue;\n }\n setDisabledState(isDisabled) {\n this.isDisabled = isDisabled;\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n}\nButtonCheckboxDirective.decorators = [\n { type: Directive, args: [{\n selector: '[btnCheckbox]',\n providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR]\n },] },\n];\n/** @nocollapse */\nButtonCheckboxDirective.ctorParameters = () => [];\nButtonCheckboxDirective.propDecorators = {\n 'btnCheckboxTrue': [{ type: Input },],\n 'btnCheckboxFalse': [{ type: Input },],\n 'state': [{ type: HostBinding, args: ['class.active',] },],\n 'onClick': [{ type: HostListener, args: ['click',] },],\n};\n//# sourceMappingURL=button-checkbox.directive.js.map","// tslint:disable:no-use-before-declare\nimport { ChangeDetectorRef, Directive, ElementRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nexport const RADIO_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonRadioGroupDirective),\n multi: true\n};\n/**\n * A group of radio buttons.\n * A value of a selected button is bound to a variable specified via ngModel.\n */\nexport class ButtonRadioGroupDirective {\n constructor(el, cdr) {\n this.el = el;\n this.cdr = cdr;\n this.onChange = Function.prototype;\n this.onTouched = Function.prototype;\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this._value = value;\n }\n writeValue(value) {\n this._value = value;\n this.cdr.markForCheck();\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n}\nButtonRadioGroupDirective.decorators = [\n { type: Directive, args: [{\n selector: '[btnRadioGroup]',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR]\n },] },\n];\n/** @nocollapse */\nButtonRadioGroupDirective.ctorParameters = () => [\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n];\n//# sourceMappingURL=button-radio-group.directive.js.map","// tslint:disable:no-use-before-declare\nimport { ChangeDetectorRef, Directive, ElementRef, forwardRef, HostBinding, HostListener, Input, Optional, Renderer2 } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonRadioGroupDirective } from './button-radio-group.directive';\nexport const RADIO_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ButtonRadioDirective),\n multi: true\n};\n/**\n * Create radio buttons or groups of buttons.\n * A value of a selected button is bound to a variable specified via ngModel.\n */\nexport class ButtonRadioDirective {\n constructor(el, cdr, group, renderer) {\n this.el = el;\n this.cdr = cdr;\n this.group = group;\n this.renderer = renderer;\n this.onChange = Function.prototype;\n this.onTouched = Function.prototype;\n }\n /** Current value of radio component or group */\n get value() {\n return this.group ? this.group.value : this._value;\n }\n set value(value) {\n if (this.group) {\n this.group.value = value;\n return;\n }\n this._value = value;\n }\n /** If `true` — radio button is disabled */\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n this._disabled = disabled;\n this.setDisabledState(disabled);\n }\n get isActive() {\n return this.btnRadio === this.value;\n }\n onClick() {\n if (this.el.nativeElement.attributes.disabled || !this.uncheckable && this.btnRadio === this.value) {\n return;\n }\n this.value = this.uncheckable && this.btnRadio === this.value ? undefined : this.btnRadio;\n this._onChange(this.value);\n }\n ngOnInit() {\n this.uncheckable = typeof this.uncheckable !== 'undefined';\n }\n onBlur() {\n this.onTouched();\n }\n _onChange(value) {\n if (this.group) {\n this.group.onTouched();\n this.group.onChange(value);\n return;\n }\n this.onTouched();\n this.onChange(value);\n }\n // ControlValueAccessor\n // model -> view\n writeValue(value) {\n this.value = value;\n this.cdr.markForCheck();\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(disabled) {\n if (disabled) {\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');\n return;\n }\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n}\nButtonRadioDirective.decorators = [\n { type: Directive, args: [{\n selector: '[btnRadio]',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR]\n },] },\n];\n/** @nocollapse */\nButtonRadioDirective.ctorParameters = () => [\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n { type: ButtonRadioGroupDirective, decorators: [{ type: Optional },] },\n { type: Renderer2, },\n];\nButtonRadioDirective.propDecorators = {\n 'btnRadio': [{ type: Input },],\n 'uncheckable': [{ type: Input },],\n 'value': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'isActive': [{ type: HostBinding, args: ['class.active',] },],\n 'onClick': [{ type: HostListener, args: ['click',] },],\n};\n//# sourceMappingURL=button-radio.directive.js.map","import { NgModule } from '@angular/core';\nimport { ButtonCheckboxDirective } from './button-checkbox.directive';\nimport { ButtonRadioDirective } from './button-radio.directive';\nimport { ButtonRadioGroupDirective } from './button-radio-group.directive';\nexport class ButtonsModule {\n static forRoot() {\n return { ngModule: ButtonsModule, providers: [] };\n }\n}\nButtonsModule.decorators = [\n { type: NgModule, args: [{\n declarations: [ButtonCheckboxDirective, ButtonRadioDirective, ButtonRadioGroupDirective],\n exports: [ButtonCheckboxDirective, ButtonRadioDirective, ButtonRadioGroupDirective]\n },] },\n];\n/** @nocollapse */\nButtonsModule.ctorParameters = () => [];\n//# sourceMappingURL=buttons.module.js.map","export class LinkedList {\n constructor() {\n this.length = 0;\n this.asArray = [];\n // Array methods overriding END\n }\n get(position) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n return current.value;\n }\n add(value, position = this.length) {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n const node = {\n value: value,\n next: undefined,\n previous: undefined\n };\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n }\n else {\n if (position === 0) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n }\n else if (position === this.length) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n }\n else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode.next;\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n remove(position = 0) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n if (position === 0) {\n // first node\n this.head = this.head.next;\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n }\n else {\n // there is no second node\n this.tail = undefined;\n }\n }\n else if (position === this.length - 1) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n }\n else {\n // middle node\n const removedNode = this.getNode(position);\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n this.length--;\n this.createInternalArrayRepresentation();\n }\n set(position, value) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n const node = this.getNode(position);\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n toArray() {\n return this.asArray;\n }\n findAll(fn) {\n let current = this.head;\n const result = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({ index, value: current.value });\n }\n current = current.next;\n }\n return result;\n }\n // Array methods overriding start\n push(...args) {\n args.forEach((arg) => {\n this.add(arg);\n });\n return this.length;\n }\n pop() {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n return last.value;\n }\n unshift(...args) {\n args.reverse();\n args.forEach((arg) => {\n this.add(arg, 0);\n });\n return this.length;\n }\n shift() {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head.value;\n this.remove();\n return lastItem;\n }\n forEach(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n fn(current.value, index);\n current = current.next;\n }\n }\n indexOf(value) {\n let current = this.head;\n let position = 0;\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n return position;\n }\n some(fn) {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n return result;\n }\n every(fn) {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n return result;\n }\n toString() {\n return '[Linked List]';\n }\n find(fn) {\n let current = this.head;\n let result;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n return result;\n }\n findIndex(fn) {\n let current = this.head;\n let result;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n return result;\n }\n getNode(position) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n return current;\n }\n createInternalArrayRepresentation() {\n const outArray = [];\n let current = this.head;\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n}\n//# sourceMappingURL=linked-list.class.js.map","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nexport class Trigger {\n constructor(open, close) {\n this.open = open;\n this.close = close || open;\n }\n isManual() {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n//# sourceMappingURL=trigger.class.js.map","import { window } from './facade/browser';\nexport class Utils {\n static reflow(element) {\n ((bs) => bs)(element.offsetHeight);\n }\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n static getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n return view.getComputedStyle(elem);\n }\n}\n//# sourceMappingURL=utils.class.js.map","import { Injectable } from '@angular/core';\nexport class CarouselConfig {\n constructor() {\n /** Default interval of auto changing of slides */\n this.interval = 5000;\n /** Is loop of auto changing of slides can be paused */\n this.noPause = false;\n /** Is slides can wrap from the last to the first slide */\n this.noWrap = false;\n /** Show carousel-indicators */\n this.showIndicators = true;\n }\n}\nCarouselConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nCarouselConfig.ctorParameters = () => [];\n//# sourceMappingURL=carousel.config.js.map","// tslint:disable:max-file-line-count\n/***\n * pause (not yet supported) (?string='hover') - event group name which pauses\n * the cycling of the carousel, if hover pauses on mouseenter and resumes on\n * mouseleave keyboard (not yet supported) (?boolean=true) - if false\n * carousel will not react to keyboard events\n * note: swiping not yet supported\n */\n/****\n * Problems:\n * 1) if we set an active slide via model changes, .active class remains on a\n * current slide.\n * 2) if we have only one slide, we shouldn't show prev/next nav buttons\n * 3) if first or last slide is active and noWrap is true, there should be\n * \"disabled\" class on the nav buttons.\n * 4) default interval should be equal 5000\n */\nimport { Component, EventEmitter, Input, NgZone, Output } from '@angular/core';\nimport { isBs3, LinkedList } from '../utils/index';\nimport { CarouselConfig } from './carousel.config';\nexport var Direction;\n(function (Direction) {\n Direction[Direction[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n Direction[Direction[\"NEXT\"] = 1] = \"NEXT\";\n Direction[Direction[\"PREV\"] = 2] = \"PREV\";\n})(Direction || (Direction = {}));\n/**\n * Base element to create carousel\n */\nexport class CarouselComponent {\n constructor(config, ngZone) {\n this.ngZone = ngZone;\n /** Will be emitted when active slide has been changed. Part of two-way-bindable [(activeSlide)] property */\n this.activeSlideChange = new EventEmitter(false);\n this._slides = new LinkedList();\n this.destroyed = false;\n Object.assign(this, config);\n }\n /** Index of currently displayed slide(started for 0) */\n set activeSlide(index) {\n if (this._slides.length && index !== this._currentActiveSlide) {\n this._select(index);\n }\n }\n get activeSlide() {\n return this._currentActiveSlide;\n }\n /**\n * Delay of item cycling in milliseconds. If false, carousel won't cycle\n * automatically.\n */\n get interval() {\n return this._interval;\n }\n set interval(value) {\n this._interval = value;\n this.restartTimer();\n }\n get slides() {\n return this._slides.toArray();\n }\n get isBs4() {\n return !isBs3();\n }\n ngOnDestroy() {\n this.destroyed = true;\n }\n /**\n * Adds new slide. If this slide is first in collection - set it as active\n * and starts auto changing\n * @param slide\n */\n addSlide(slide) {\n this._slides.add(slide);\n if (this._slides.length === 1) {\n this._currentActiveSlide = void 0;\n this.activeSlide = 0;\n this.play();\n }\n }\n /**\n * Removes specified slide. If this slide is active - will roll to another\n * slide\n * @param slide\n */\n removeSlide(slide) {\n const remIndex = this._slides.indexOf(slide);\n if (this._currentActiveSlide === remIndex) {\n // removing of active slide\n let nextSlideIndex = void 0;\n if (this._slides.length > 1) {\n // if this slide last - will roll to first slide, if noWrap flag is\n // FALSE or to previous, if noWrap is TRUE in case, if this slide in\n // middle of collection, index of next slide is same to removed\n nextSlideIndex = !this.isLast(remIndex)\n ? remIndex\n : this.noWrap ? remIndex - 1 : 0;\n }\n this._slides.remove(remIndex);\n // prevents exception with changing some value after checking\n setTimeout(() => {\n this._select(nextSlideIndex);\n }, 0);\n }\n else {\n this._slides.remove(remIndex);\n const currentSlideIndex = this.getCurrentSlideIndex();\n setTimeout(() => {\n // after removing, need to actualize index of current active slide\n this._currentActiveSlide = currentSlideIndex;\n this.activeSlideChange.emit(this._currentActiveSlide);\n }, 0);\n }\n }\n /**\n * Rolling to next slide\n * @param force: {boolean} if true - will ignore noWrap flag\n */\n nextSlide(force = false) {\n this.activeSlide = this.findNextSlideIndex(Direction.NEXT, force);\n }\n /**\n * Rolling to previous slide\n * @param force: {boolean} if true - will ignore noWrap flag\n */\n previousSlide(force = false) {\n this.activeSlide = this.findNextSlideIndex(Direction.PREV, force);\n }\n /**\n * Rolling to specified slide\n * @param index: {number} index of slide, which must be shown\n */\n selectSlide(index) {\n this.activeSlide = index;\n }\n /**\n * Starts a auto changing of slides\n */\n play() {\n if (!this.isPlaying) {\n this.isPlaying = true;\n this.restartTimer();\n }\n }\n /**\n * Stops a auto changing of slides\n */\n pause() {\n if (!this.noPause) {\n this.isPlaying = false;\n this.resetTimer();\n }\n }\n /**\n * Finds and returns index of currently displayed slide\n * @returns {number}\n */\n getCurrentSlideIndex() {\n return this._slides.findIndex((slide) => slide.active);\n }\n /**\n * Defines, whether the specified index is last in collection\n * @param index\n * @returns {boolean}\n */\n isLast(index) {\n return index + 1 >= this._slides.length;\n }\n /**\n * Defines next slide index, depending of direction\n * @param direction: Direction(UNKNOWN|PREV|NEXT)\n * @param force: {boolean} if TRUE - will ignore noWrap flag, else will\n * return undefined if next slide require wrapping\n * @returns {any}\n */\n findNextSlideIndex(direction, force) {\n let nextSlideIndex = 0;\n if (!force &&\n (this.isLast(this.activeSlide) &&\n direction !== Direction.PREV &&\n this.noWrap)) {\n return void 0;\n }\n switch (direction) {\n case Direction.NEXT:\n // if this is last slide, not force, looping is disabled\n // and need to going forward - select current slide, as a next\n nextSlideIndex = !this.isLast(this._currentActiveSlide)\n ? this._currentActiveSlide + 1\n : !force && this.noWrap ? this._currentActiveSlide : 0;\n break;\n case Direction.PREV:\n // if this is first slide, not force, looping is disabled\n // and need to going backward - select current slide, as a next\n nextSlideIndex =\n this._currentActiveSlide > 0\n ? this._currentActiveSlide - 1\n : !force && this.noWrap\n ? this._currentActiveSlide\n : this._slides.length - 1;\n break;\n default:\n throw new Error('Unknown direction');\n }\n return nextSlideIndex;\n }\n /**\n * Sets a slide, which specified through index, as active\n * @param index\n * @private\n */\n _select(index) {\n if (isNaN(index)) {\n this.pause();\n return;\n }\n const currentSlide = this._slides.get(this._currentActiveSlide);\n if (currentSlide) {\n currentSlide.active = false;\n }\n const nextSlide = this._slides.get(index);\n if (nextSlide) {\n this._currentActiveSlide = index;\n nextSlide.active = true;\n this.activeSlide = index;\n this.activeSlideChange.emit(index);\n }\n }\n /**\n * Starts loop of auto changing of slides\n */\n restartTimer() {\n this.resetTimer();\n const interval = +this.interval;\n if (!isNaN(interval) && interval > 0) {\n this.currentInterval = this.ngZone.runOutsideAngular(() => {\n return setInterval(() => {\n const nInterval = +this.interval;\n this.ngZone.run(() => {\n if (this.isPlaying &&\n !isNaN(this.interval) &&\n nInterval > 0 &&\n this.slides.length) {\n this.nextSlide();\n }\n else {\n this.pause();\n }\n });\n }, interval);\n });\n }\n }\n /**\n * Stops loop of auto changing of slides\n */\n resetTimer() {\n if (this.currentInterval) {\n clearInterval(this.currentInterval);\n this.currentInterval = void 0;\n }\n }\n}\nCarouselComponent.decorators = [\n { type: Component, args: [{\n selector: 'carousel',\n template: \"<div (mouseenter)=\\\"pause()\\\" (mouseleave)=\\\"play()\\\" (mouseup)=\\\"play()\\\" class=\\\"carousel slide\\\"> <ol class=\\\"carousel-indicators\\\" *ngIf=\\\"showIndicators && slides.length > 1\\\"> <li *ngFor=\\\"let slidez of slides; let i = index;\\\" [class.active]=\\\"slidez.active === true\\\" (click)=\\\"selectSlide(i)\\\"></li> </ol> <div class=\\\"carousel-inner\\\"><ng-content></ng-content></div> <a class=\\\"left carousel-control carousel-control-prev\\\" [class.disabled]=\\\"activeSlide === 0 && noWrap\\\" (click)=\\\"previousSlide()\\\" *ngIf=\\\"slides.length > 1\\\"> <span class=\\\"icon-prev carousel-control-prev-icon\\\" aria-hidden=\\\"true\\\"></span> <span *ngIf=\\\"isBs4\\\" class=\\\"sr-only\\\">Previous</span> </a> <a class=\\\"right carousel-control carousel-control-next\\\" (click)=\\\"nextSlide()\\\" [class.disabled]=\\\"isLast(activeSlide) && noWrap\\\" *ngIf=\\\"slides.length > 1\\\"> <span class=\\\"icon-next carousel-control-next-icon\\\" aria-hidden=\\\"true\\\"></span> <span class=\\\"sr-only\\\">Next</span> </a> </div> \"\n },] },\n];\n/** @nocollapse */\nCarouselComponent.ctorParameters = () => [\n { type: CarouselConfig, },\n { type: NgZone, },\n];\nCarouselComponent.propDecorators = {\n 'noWrap': [{ type: Input },],\n 'noPause': [{ type: Input },],\n 'showIndicators': [{ type: Input },],\n 'activeSlideChange': [{ type: Output },],\n 'activeSlide': [{ type: Input },],\n 'interval': [{ type: Input },],\n};\n//# sourceMappingURL=carousel.component.js.map","import { Component, HostBinding, Input } from '@angular/core';\nimport { CarouselComponent } from './carousel.component';\nexport class SlideComponent {\n constructor(carousel) {\n /** Wraps element by appropriate CSS classes */\n this.addClass = true;\n this.carousel = carousel;\n }\n /** Fires changes in container collection after adding a new slide instance */\n ngOnInit() {\n this.carousel.addSlide(this);\n }\n /** Fires changes in container collection after removing of this slide instance */\n ngOnDestroy() {\n this.carousel.removeSlide(this);\n }\n}\nSlideComponent.decorators = [\n { type: Component, args: [{\n selector: 'slide',\n template: `\n <div [class.active]=\"active\" class=\"item\">\n <ng-content></ng-content>\n </div>\n `\n },] },\n];\n/** @nocollapse */\nSlideComponent.ctorParameters = () => [\n { type: CarouselComponent, },\n];\nSlideComponent.propDecorators = {\n 'active': [{ type: HostBinding, args: ['class.active',] }, { type: Input },],\n 'addClass': [{ type: HostBinding, args: ['class.item',] }, { type: HostBinding, args: ['class.carousel-item',] },],\n};\n//# sourceMappingURL=slide.component.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CarouselComponent } from './carousel.component';\nimport { SlideComponent } from './slide.component';\nimport { CarouselConfig } from './carousel.config';\nexport class CarouselModule {\n static forRoot() {\n return { ngModule: CarouselModule, providers: [] };\n }\n}\nCarouselModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [SlideComponent, CarouselComponent],\n exports: [SlideComponent, CarouselComponent],\n providers: [CarouselConfig]\n },] },\n];\n/** @nocollapse */\nCarouselModule.ctorParameters = () => [];\n//# sourceMappingURL=carousel.module.js.map","import { formatDate } from '../chronos/format';\nexport class DateFormatter {\n format(date, format, locale) {\n return formatDate(date, format, locale);\n }\n}\n//# sourceMappingURL=date-formatter.js.map","/* tslint:disable:max-file-line-count */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DateFormatter } from './date-formatter';\n// const MIN_DATE:Date = void 0;\n// const MAX_DATE:Date = void 0;\n// const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/*\n const KEYS = {\n 13: 'enter',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down'\n };\n */\nexport class DatePickerInnerComponent {\n constructor() {\n this.selectionDone = new EventEmitter(undefined);\n this.update = new EventEmitter(false);\n this.activeDateChange = new EventEmitter(undefined);\n this.stepDay = {};\n this.stepMonth = {};\n this.stepYear = {};\n this.modes = ['day', 'month', 'year'];\n this.dateFormatter = new DateFormatter();\n }\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n this._activeDate = value;\n }\n // todo: add formatter value to Date object\n ngOnInit() {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n }\n else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes) {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes.activeDate);\n }\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n checkIfActiveDateGotUpdated(activeDate) {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (previousValue &&\n previousValue instanceof Date &&\n previousValue.getTime() !== activeDate.currentValue.getTime()) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n setCompareHandler(handler, type) {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n compare(date1, date2) {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n return void 0;\n }\n setRefreshViewHandler(handler, type) {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n refreshView() {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n dateFilter(date, format) {\n return this.dateFormatter.format(date, format, this.locale);\n }\n isActive(dateObject) {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n return true;\n }\n return false;\n }\n createDateObject(date, format) {\n const dateObject = {};\n dateObject.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n return dateObject;\n }\n split(arr, size) {\n const arrays = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n return arrays;\n }\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date) {\n const hours = date.getHours();\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours === 23 ? hours + 2 : 0);\n }\n select(date, isManual = true) {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n }\n else {\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1];\n }\n }\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n move(direction) {\n let expectedStep;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n if (expectedStep) {\n const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n toggleMode(_direction) {\n const direction = _direction || 1;\n if ((this.datepickerMode === this.maxMode && direction === 1) ||\n (this.datepickerMode === this.minMode && direction === -1)) {\n return;\n }\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction];\n this.refreshView();\n }\n getCustomClassForDate(date) {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject = this.customClass.find((customClass) => {\n return (customClass.date.valueOf() === date.valueOf() &&\n customClass.mode === this.datepickerMode);\n }, this);\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n compareDateDisabled(date1Disabled, date2) {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n return undefined;\n }\n isDisabled(date) {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach((disabledDate) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n });\n }\n if (this.dayDisabled) {\n isDateDisabled =\n isDateDisabled ||\n this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n return (isDateDisabled ||\n (this.minDate && this.compare(date, this.minDate) < 0) ||\n (this.maxDate && this.compare(date, this.maxDate) > 0));\n }\n}\nDatePickerInnerComponent.decorators = [\n { type: Component, args: [{\n selector: 'datepicker-inner',\n template: `\n <!--<!–ng-keydown=\"keydown($event)\"–>-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\" >\n <ng-content></ng-content>\n </div>\n `\n },] },\n];\n/** @nocollapse */\nDatePickerInnerComponent.ctorParameters = () => [];\nDatePickerInnerComponent.propDecorators = {\n 'locale': [{ type: Input },],\n 'datepickerMode': [{ type: Input },],\n 'startingDay': [{ type: Input },],\n 'yearRange': [{ type: Input },],\n 'minDate': [{ type: Input },],\n 'maxDate': [{ type: Input },],\n 'minMode': [{ type: Input },],\n 'maxMode': [{ type: Input },],\n 'showWeeks': [{ type: Input },],\n 'formatDay': [{ type: Input },],\n 'formatMonth': [{ type: Input },],\n 'formatYear': [{ type: Input },],\n 'formatDayHeader': [{ type: Input },],\n 'formatDayTitle': [{ type: Input },],\n 'formatMonthTitle': [{ type: Input },],\n 'onlyCurrentMonth': [{ type: Input },],\n 'shortcutPropagation': [{ type: Input },],\n 'customClass': [{ type: Input },],\n 'monthColLimit': [{ type: Input },],\n 'yearColLimit': [{ type: Input },],\n 'dateDisabled': [{ type: Input },],\n 'dayDisabled': [{ type: Input },],\n 'initDate': [{ type: Input },],\n 'selectionDone': [{ type: Output },],\n 'update': [{ type: Output },],\n 'activeDateChange': [{ type: Output },],\n 'activeDate': [{ type: Input },],\n};\n//# sourceMappingURL=datepicker-inner.component.js.map","import { Injectable } from '@angular/core';\nexport class DatepickerConfig {\n constructor() {\n this.locale = 'en';\n this.datepickerMode = 'day';\n this.startingDay = 0;\n this.yearRange = 20;\n this.minMode = 'day';\n this.maxMode = 'year';\n this.showWeeks = true;\n this.formatDay = 'DD';\n this.formatMonth = 'MMMM';\n this.formatYear = 'YYYY';\n this.formatDayHeader = 'dd';\n this.formatDayTitle = 'MMMM YYYY';\n this.formatMonthTitle = 'YYYY';\n this.onlyCurrentMonth = false;\n this.monthColLimit = 3;\n this.yearColLimit = 5;\n this.shortcutPropagation = false;\n }\n}\nDatepickerConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nDatepickerConfig.ctorParameters = () => [];\n//# sourceMappingURL=datepicker.config.js.map","import { Component, EventEmitter, Input, Output, ViewChild, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatepickerConfig } from './datepicker.config';\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n/* tslint:disable:component-selector-name component-selector-type */\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent {\n constructor(config) {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n this.datepickerMode = 'day';\n /** if false week numbers will be hidden */\n this.showWeeks = true;\n this.selectionDone = new EventEmitter(undefined);\n /** callback to invoke when the activeDate is changed. */\n this.activeDateChange = new EventEmitter(undefined);\n this.onChange = Function.prototype;\n this.onTouched = Function.prototype;\n this._now = new Date();\n this.config = config;\n this.configureOptions();\n }\n /** currently active date */\n get activeDate() {\n return this._activeDate || this._now;\n }\n set activeDate(value) {\n this._activeDate = value;\n }\n configureOptions() {\n Object.assign(this, this.config);\n }\n onUpdate(event) {\n this.activeDate = event;\n this.onChange(event);\n }\n onSelectionDone(event) {\n this.selectionDone.emit(event);\n }\n onActiveDateChange(event) {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n writeValue(value) {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n return;\n }\n this.activeDate = value ? new Date(value) : void 0;\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n}\nDatePickerComponent.decorators = [\n { type: Component, args: [{\n selector: 'datepicker',\n template: `\n <datepicker-inner [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\">\n <daypicker tabindex=\"0\"></daypicker>\n <monthpicker tabindex=\"0\"></monthpicker>\n <yearpicker tabindex=\"0\"></yearpicker>\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR]\n },] },\n];\n/** @nocollapse */\nDatePickerComponent.ctorParameters = () => [\n { type: DatepickerConfig, },\n];\nDatePickerComponent.propDecorators = {\n 'datepickerMode': [{ type: Input },],\n 'initDate': [{ type: Input },],\n 'minDate': [{ type: Input },],\n 'maxDate': [{ type: Input },],\n 'minMode': [{ type: Input },],\n 'maxMode': [{ type: Input },],\n 'showWeeks': [{ type: Input },],\n 'formatDay': [{ type: Input },],\n 'formatMonth': [{ type: Input },],\n 'formatYear': [{ type: Input },],\n 'formatDayHeader': [{ type: Input },],\n 'formatDayTitle': [{ type: Input },],\n 'formatMonthTitle': [{ type: Input },],\n 'startingDay': [{ type: Input },],\n 'yearRange': [{ type: Input },],\n 'onlyCurrentMonth': [{ type: Input },],\n 'shortcutPropagation': [{ type: Input },],\n 'monthColLimit': [{ type: Input },],\n 'yearColLimit': [{ type: Input },],\n 'customClass': [{ type: Input },],\n 'dateDisabled': [{ type: Input },],\n 'dayDisabled': [{ type: Input },],\n 'activeDate': [{ type: Input },],\n 'selectionDone': [{ type: Output },],\n 'activeDateChange': [{ type: Output },],\n '_datePicker': [{ type: ViewChild, args: [DatePickerInnerComponent,] },],\n};\n//# sourceMappingURL=datepicker.component.js.map","// @deprecated\n// tslint:disable\nimport { Component } from '@angular/core';\nimport { isBs3 } from '../utils/theme-provider';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nexport class DayPickerComponent {\n constructor(datePicker) {\n this.labels = [];\n this.rows = [];\n this.weekNumbers = [];\n this.datePicker = datePicker;\n }\n get isBs4() {\n return !isBs3();\n }\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit() {\n const self = this;\n this.datePicker.stepDay = { months: 1 };\n this.datePicker.setRefreshViewHandler(function () {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n // 42 is the number of days on a six-week calendar\n const _days = self.getDates(firstDate, 42);\n const days = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(days[j].date, this.formatDayHeader);\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date));\n }\n }\n }, 'day');\n this.datePicker.setCompareHandler(function (date1, date2) {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n this.datePicker.refreshView();\n }\n getDates(startDate, n) {\n const dates = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\n }\n return dates;\n }\n getISO8601WeekNumber(date) {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return (Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1);\n }\n}\n// todo: key events implementation\nDayPickerComponent.decorators = [\n { type: Component, args: [{\n selector: 'daypicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode === 'day'\" role=\"grid\" [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\" aria-activedescendant=\"activeDateId\">\n <thead>\n <tr>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\">‹</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"><</button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">›</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">>\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small aria-label=\"labelz.full\"><b>{{ labelz.abbr }}</b></small>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-sm {{dtz.customClass}}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz), 'btn-default': !isBs4}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ]\n },] },\n];\n/** @nocollapse */\nDayPickerComponent.ctorParameters = () => [\n { type: DatePickerInnerComponent, },\n];\n//# sourceMappingURL=daypicker.component.js.map","// @deprecated\n// tslint:disable\nimport { Component } from '@angular/core';\nimport { isBs3 } from '../utils/theme-provider';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nexport class MonthPickerComponent {\n constructor(datePicker) {\n this.rows = [];\n this.datePicker = datePicker;\n }\n get isBs4() {\n return !isBs3();\n }\n ngOnInit() {\n const self = this;\n this.datePicker.stepMonth = { years: 1 };\n this.datePicker.setRefreshViewHandler(function () {\n const months = new Array(12);\n const year = this.activeDate.getFullYear();\n let date;\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n this.datePicker.setCompareHandler(function (date1, date2) {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n this.datePicker.refreshView();\n }\n}\n// todo: key events implementation\nMonthPickerComponent.decorators = [\n { type: Component, args: [{\n selector: 'monthpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button></th>\n <th [attr.colspan]=\"((datePicker.monthColLimit - 2) <= 0) ? 1 : datePicker.monthColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong> \n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">›</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n },] },\n];\n/** @nocollapse */\nMonthPickerComponent.ctorParameters = () => [\n { type: DatePickerInnerComponent, },\n];\n//# sourceMappingURL=monthpicker.component.js.map","// @deprecated\n// tslint:disable\nimport { Component } from '@angular/core';\nimport { isBs3 } from '../utils/theme-provider';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nexport class YearPickerComponent {\n constructor(datePicker) {\n this.rows = [];\n this.datePicker = datePicker;\n }\n get isBs4() {\n return !isBs3();\n }\n ngOnInit() {\n const self = this;\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n this.datePicker.setRefreshViewHandler(function () {\n const years = new Array(this.yearRange);\n let date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n self.title = [years[0].label, years[this.yearRange - 1].label].join(' - ');\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n this.datePicker.setCompareHandler(function (date1, date2) {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n this.datePicker.refreshView();\n }\n getStartingYear(year) {\n // todo: parseInt\n return ((year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1);\n }\n}\nYearPickerComponent.decorators = [\n { type: Component, args: [{\n selector: 'yearpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"((datePicker.yearColLimit - 2) <= 0) ? 1 : datePicker.yearColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\" role=\"heading\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">›</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n },] },\n];\n/** @nocollapse */\nYearPickerComponent.ctorParameters = () => [\n { type: DatePickerInnerComponent, },\n];\n//# sourceMappingURL=yearpicker.component.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatepickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\nexport class DatepickerModule {\n static forRoot() {\n return { ngModule: DatepickerModule, providers: [DatepickerConfig] };\n }\n}\nDatepickerModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule, FormsModule],\n declarations: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n exports: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n entryComponents: [DatePickerComponent]\n },] },\n];\n/** @nocollapse */\nDatepickerModule.ctorParameters = () => [];\n//# sourceMappingURL=datepicker.module.js.map","import { Trigger } from './trigger.class';\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\nexport function parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger) => trigger.split(':'))\n .map((triggerPair) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n const manualTriggers = parsedTriggers.filter((triggerPair) => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n return parsedTriggers;\n}\nexport function listenToTriggers(renderer, target, triggers, showFn, hideFn, toggleFn) {\n const parsedTriggers = parseTriggers(triggers);\n const listeners = [];\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n parsedTriggers.forEach((trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n return;\n }\n listeners.push(renderer.listen(target, trigger.open, showFn), renderer.listen(target, trigger.close, hideFn));\n });\n return () => {\n listeners.forEach((unsubscribeFn) => unsubscribeFn());\n };\n}\nexport function listenToTriggersV2(renderer, options) {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n // all listeners\n const listeners = [];\n // lazy listeners registration\n const _registerHide = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n if (!useToggle) {\n _registerHide.push(() => renderer.listen(target, trigger.close, options.hide));\n }\n listeners.push(renderer.listen(target, trigger.open, () => showFn(registerHide)));\n });\n return () => {\n listeners.forEach((unsubscribeFn) => unsubscribeFn());\n };\n}\nexport function registerOutsideClick(renderer, options) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n return renderer.listen('document', 'click', (event) => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (options.targets &&\n options.targets.some(target => target.contains(event.target))) {\n return;\n }\n options.hide();\n });\n}\n//# sourceMappingURL=triggers.js.map","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nexport class ContentRef {\n constructor(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\n//# sourceMappingURL=content-ref.class.js.map","// tslint:disable:max-file-line-count\n// todo: add delay support\n// todo: merge events onShow, onShown, etc...\n// todo: add global positioning configuration?\nimport { ElementRef, EventEmitter, ReflectiveInjector, TemplateRef } from '@angular/core';\nimport { listenToTriggersV2, registerOutsideClick } from '../utils/triggers';\nimport { ContentRef } from './content-ref.class';\nexport class ComponentLoader {\n /**\n * Do not use this directly, it should be instanced via\n * `ComponentLoadFactory.attach`\n * @internal\n */\n // tslint:disable-next-line\n constructor(_viewContainerRef, _renderer, _elementRef, _injector, _componentFactoryResolver, _ngZone, _applicationRef, _posService) {\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._injector = _injector;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._applicationRef = _applicationRef;\n this._posService = _posService;\n this.onBeforeShow = new EventEmitter();\n this.onShown = new EventEmitter();\n this.onBeforeHide = new EventEmitter();\n this.onHidden = new EventEmitter();\n this._providers = [];\n this._isHiding = false;\n this._listenOpts = {};\n this._globalListener = Function.prototype;\n }\n get isShown() {\n if (this._isHiding) {\n return false;\n }\n return !!this._componentRef;\n }\n attach(compType) {\n this._componentFactory = this._componentFactoryResolver\n .resolveComponentFactory(compType);\n return this;\n }\n // todo: add behaviour: to target element, `body`, custom element\n to(container) {\n this.container = container || this.container;\n return this;\n }\n position(opts) {\n this.attachment = opts.attachment || this.attachment;\n this._elementRef = opts.target || this._elementRef;\n return this;\n }\n provide(provider) {\n this._providers.push(provider);\n return this;\n }\n // todo: appendChild to element or document.querySelector(this.container)\n show(opts = {}) {\n this._subscribePositioning();\n this._innerComponent = null;\n if (!this._componentRef) {\n this.onBeforeShow.emit();\n this._contentRef = this._getContentRef(opts.content, opts.context, opts.initialState);\n const injector = ReflectiveInjector.resolveAndCreate(this._providers, this._injector);\n this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);\n this._applicationRef.attachView(this._componentRef.hostView);\n // this._componentRef = this._viewContainerRef\n // .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);\n this.instance = this._componentRef.instance;\n Object.assign(this._componentRef.instance, opts);\n if (this.container instanceof ElementRef) {\n this.container.nativeElement.appendChild(this._componentRef.location.nativeElement);\n }\n if (this.container === 'body' && typeof document !== 'undefined') {\n document\n .querySelector(this.container)\n .appendChild(this._componentRef.location.nativeElement);\n }\n if (!this.container &&\n this._elementRef &&\n this._elementRef.nativeElement.parentElement) {\n this._elementRef.nativeElement.parentElement.appendChild(this._componentRef.location.nativeElement);\n }\n // we need to manually invoke change detection since events registered\n // via\n // Renderer::listen() are not picked up by change detection with the\n // OnPush strategy\n if (this._contentRef.componentRef) {\n this._innerComponent = this._contentRef.componentRef.instance;\n this._contentRef.componentRef.changeDetectorRef.markForCheck();\n this._contentRef.componentRef.changeDetectorRef.detectChanges();\n }\n this._componentRef.changeDetectorRef.markForCheck();\n this._componentRef.changeDetectorRef.detectChanges();\n this.onShown.emit(this._componentRef.instance);\n }\n this._registerOutsideClick();\n return this._componentRef;\n }\n hide() {\n if (!this._componentRef) {\n return this;\n }\n this.onBeforeHide.emit(this._componentRef.instance);\n const componentEl = this._componentRef.location.nativeElement;\n componentEl.parentNode.removeChild(componentEl);\n if (this._contentRef.componentRef) {\n this._contentRef.componentRef.destroy();\n }\n this._componentRef.destroy();\n if (this._viewContainerRef && this._contentRef.viewRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));\n }\n if (this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n // this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._componentRef.hostView));\n //\n // if (this._contentRef.viewRef && this._viewContainerRef.indexOf(this._contentRef.viewRef) !== -1) {\n // this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));\n // }\n this._contentRef = null;\n this._componentRef = null;\n this._removeGlobalListener();\n this.onHidden.emit();\n return this;\n }\n toggle() {\n if (this.isShown) {\n this.hide();\n return;\n }\n this.show();\n }\n dispose() {\n if (this.isShown) {\n this.hide();\n }\n this._unsubscribePositioning();\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n }\n listen(listenOpts) {\n this.triggers = listenOpts.triggers || this.triggers;\n this._listenOpts.outsideClick = listenOpts.outsideClick;\n listenOpts.target = listenOpts.target || this._elementRef.nativeElement;\n const hide = (this._listenOpts.hide = () => listenOpts.hide ? listenOpts.hide() : void this.hide());\n const show = (this._listenOpts.show = (registerHide) => {\n listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);\n registerHide();\n });\n const toggle = (registerHide) => {\n this.isShown ? hide() : show(registerHide);\n };\n this._unregisterListenersFn = listenToTriggersV2(this._renderer, {\n target: listenOpts.target,\n triggers: listenOpts.triggers,\n show,\n hide,\n toggle\n });\n return this;\n }\n _removeGlobalListener() {\n if (this._globalListener) {\n this._globalListener();\n this._globalListener = null;\n }\n }\n attachInline(vRef, template) {\n this._inlineViewRef = vRef.createEmbeddedView(template);\n return this;\n }\n _registerOutsideClick() {\n if (!this._componentRef || !this._componentRef.location) {\n return;\n }\n // why: should run after first event bubble\n if (this._listenOpts.outsideClick) {\n const target = this._componentRef.location.nativeElement;\n setTimeout(() => {\n this._globalListener = registerOutsideClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideClick: this._listenOpts.outsideClick,\n hide: () => this._listenOpts.hide()\n });\n });\n }\n }\n getInnerComponent() {\n return this._innerComponent;\n }\n _subscribePositioning() {\n if (this._zoneSubscription || !this.attachment) {\n return;\n }\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\n if (!this._componentRef) {\n return;\n }\n this._posService.position({\n element: this._componentRef.location,\n target: this._elementRef,\n attachment: this.attachment,\n appendToBody: this.container === 'body'\n });\n });\n }\n _unsubscribePositioning() {\n if (!this._zoneSubscription) {\n return;\n }\n this._zoneSubscription.unsubscribe();\n this._zoneSubscription = null;\n }\n _getContentRef(content, context, initialState) {\n if (!content) {\n return new ContentRef([]);\n }\n if (content instanceof TemplateRef) {\n if (this._viewContainerRef) {\n const _viewRef = this._viewContainerRef\n .createEmbeddedView(content, context);\n _viewRef.markForCheck();\n return new ContentRef([_viewRef.rootNodes], _viewRef);\n }\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n if (typeof content === 'function') {\n const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(content);\n const modalContentInjector = ReflectiveInjector.resolveAndCreate([...this._providers], this._injector);\n const componentRef = contentCmptFactory.create(modalContentInjector);\n Object.assign(componentRef.instance, initialState);\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);\n }\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n}\n//# sourceMappingURL=component-loader.class.js.map","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\n// tslint:disable\nexport class Positioning {\n position(element, round = true) {\n let elPosition;\n let parentOffset = {\n width: 0,\n height: 0,\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n };\n if (this.getStyle(element, 'position') === 'fixed') {\n const bcRect = element.getBoundingClientRect();\n elPosition = {\n width: bcRect.width,\n height: bcRect.height,\n top: bcRect.top,\n bottom: bcRect.bottom,\n left: bcRect.left,\n right: bcRect.right\n };\n }\n else {\n const offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n }\n offset(element, round = true) {\n const elBcr = element.getBoundingClientRect();\n const viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n let elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n }\n positionElements(hostElement, targetElement, placement, appendToBody) {\n const hostElPosition = appendToBody\n ? this.offset(hostElement, false)\n : this.position(hostElement, false);\n const targetElStyles = this.getAllStyles(targetElement);\n const shiftWidth = {\n left: hostElPosition.left,\n center: hostElPosition.left +\n hostElPosition.width / 2 -\n targetElement.offsetWidth / 2,\n right: hostElPosition.left + hostElPosition.width\n };\n const shiftHeight = {\n top: hostElPosition.top,\n center: hostElPosition.top +\n hostElPosition.height / 2 -\n targetElement.offsetHeight / 2,\n bottom: hostElPosition.top + hostElPosition.height\n };\n const targetElBCR = targetElement.getBoundingClientRect();\n let placementPrimary = placement.split(' ')[0] || 'top';\n const placementSecondary = placement.split(' ')[1] || 'center';\n let targetElPosition = {\n height: targetElBCR.height || targetElement.offsetHeight,\n width: targetElBCR.width || targetElement.offsetWidth,\n top: 0,\n bottom: targetElBCR.height || targetElement.offsetHeight,\n left: 0,\n right: targetElBCR.width || targetElement.offsetWidth\n };\n if (placementPrimary === 'auto') {\n let newPlacementPrimary = this.autoPosition(targetElPosition, hostElPosition, targetElement, placementSecondary);\n if (!newPlacementPrimary)\n newPlacementPrimary = this.autoPosition(targetElPosition, hostElPosition, targetElement);\n if (newPlacementPrimary)\n placementPrimary = newPlacementPrimary;\n targetElement.classList.add(placementPrimary);\n }\n switch (placementPrimary) {\n case 'top':\n targetElPosition.top =\n hostElPosition.top -\n (targetElement.offsetHeight +\n parseFloat(targetElStyles.marginBottom));\n targetElPosition.bottom +=\n hostElPosition.top - targetElement.offsetHeight;\n targetElPosition.left = shiftWidth[placementSecondary];\n targetElPosition.right += shiftWidth[placementSecondary];\n break;\n case 'bottom':\n targetElPosition.top = shiftHeight[placementPrimary];\n targetElPosition.bottom += shiftHeight[placementPrimary];\n targetElPosition.left = shiftWidth[placementSecondary];\n targetElPosition.right += shiftWidth[placementSecondary];\n break;\n case 'left':\n targetElPosition.top = shiftHeight[placementSecondary];\n targetElPosition.bottom += shiftHeight[placementSecondary];\n targetElPosition.left =\n hostElPosition.left -\n (targetElement.offsetWidth + parseFloat(targetElStyles.marginRight));\n targetElPosition.right +=\n hostElPosition.left - targetElement.offsetWidth;\n break;\n case 'right':\n targetElPosition.top = shiftHeight[placementSecondary];\n targetElPosition.bottom += shiftHeight[placementSecondary];\n targetElPosition.left = shiftWidth[placementPrimary];\n targetElPosition.right += shiftWidth[placementPrimary];\n break;\n }\n targetElPosition.top = Math.round(targetElPosition.top);\n targetElPosition.bottom = Math.round(targetElPosition.bottom);\n targetElPosition.left = Math.round(targetElPosition.left);\n targetElPosition.right = Math.round(targetElPosition.right);\n return targetElPosition;\n }\n autoPosition(targetElPosition, hostElPosition, targetElement, preferredPosition) {\n if ((!preferredPosition || preferredPosition === 'right') &&\n targetElPosition.left + hostElPosition.left - targetElement.offsetWidth <\n 0) {\n return 'right';\n }\n else if ((!preferredPosition || preferredPosition === 'top') &&\n targetElPosition.bottom +\n hostElPosition.bottom +\n targetElement.offsetHeight >\n window.innerHeight) {\n return 'top';\n }\n else if ((!preferredPosition || preferredPosition === 'bottom') &&\n targetElPosition.top + hostElPosition.top - targetElement.offsetHeight < 0) {\n return 'bottom';\n }\n else if ((!preferredPosition || preferredPosition === 'left') &&\n targetElPosition.right +\n hostElPosition.right +\n targetElement.offsetWidth >\n window.innerWidth) {\n return 'left';\n }\n return null;\n }\n getAllStyles(element) {\n return window.getComputedStyle(element);\n }\n getStyle(element, prop) {\n return this.getAllStyles(element)[prop];\n }\n isStaticPositioned(element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n }\n offsetParent(element) {\n let offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl &&\n offsetParentEl !== document.documentElement &&\n this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n }\n}\nconst positionService = new Positioning();\nexport function positionElements(hostElement, targetElement, placement, appendToBody) {\n const pos = positionService.positionElements(hostElement, targetElement, placement, appendToBody);\n targetElement.style.top = `${pos.top}px`;\n targetElement.style.left = `${pos.left}px`;\n}\n//# sourceMappingURL=ng-positioning.js.map","import { Injectable, ElementRef } from '@angular/core';\nimport { positionElements } from './ng-positioning';\nexport class PositioningService {\n position(options) {\n const { element, target, attachment, appendToBody } = options;\n positionElements(_getHtmlElement(target), _getHtmlElement(element), attachment, appendToBody);\n }\n}\nPositioningService.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nPositioningService.ctorParameters = () => [];\nfunction _getHtmlElement(element) {\n // it means that we got a selector\n if (typeof element === 'string') {\n return document.querySelector(element);\n }\n if (element instanceof ElementRef) {\n return element.nativeElement;\n }\n return element;\n}\n//# sourceMappingURL=positioning.service.js.map","import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector, NgZone } from '@angular/core';\nimport { ComponentLoader } from './component-loader.class';\nimport { PositioningService } from '../positioning/index';\nexport class ComponentLoaderFactory {\n constructor(_componentFactoryResolver, _ngZone, _injector, _posService, _applicationRef) {\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._injector = _injector;\n this._posService = _posService;\n this._applicationRef = _applicationRef;\n }\n /**\n *\n * @param _elementRef\n * @param _viewContainerRef\n * @param _renderer\n * @returns {ComponentLoader}\n */\n createLoader(_elementRef, _viewContainerRef, _renderer) {\n return new ComponentLoader(_viewContainerRef, _renderer, _elementRef, this._injector, this._componentFactoryResolver, this._ngZone, this._applicationRef, this._posService);\n }\n}\nComponentLoaderFactory.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nComponentLoaderFactory.ctorParameters = () => [\n { type: ComponentFactoryResolver, },\n { type: NgZone, },\n { type: Injector, },\n { type: PositioningService, },\n { type: ApplicationRef, },\n];\n//# sourceMappingURL=component-loader.factory.js.map","import { isDevMode } from '@angular/core';\nconst _messagesHash = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\nexport function warnOnce(msg) {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n _messagesHash[msg] = true;\n /*tslint:disable-next-line*/\n console.warn(msg);\n}\n//# sourceMappingURL=warn-once.js.map","export class BsDatepickerAbstractComponent {\n constructor() {\n this._customRangesFish = [];\n }\n set minDate(value) {\n this._effects.setMinDate(value);\n }\n set maxDate(value) {\n this._effects.setMaxDate(value);\n }\n set isDisabled(value) {\n this._effects.setDisabled(value);\n }\n setViewMode(event) { }\n navigateTo(event) { }\n dayHoverHandler(event) { }\n monthHoverHandler(event) { }\n yearHoverHandler(event) { }\n daySelectHandler(day) { }\n monthSelectHandler(event) { }\n yearSelectHandler(event) { }\n _stopPropagation(event) {\n event.stopPropagation();\n }\n}\n//# sourceMappingURL=bs-datepicker-container.js.map","import { Injectable } from '@angular/core';\n/**\n * For date range picker there are `BsDaterangepickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\nexport class BsDatepickerConfig {\n constructor() {\n /** CSS class which will be applied to datepicker container,\n * usually used to set color theme\n */\n this.containerClass = 'theme-green';\n // DatepickerRenderOptions\n this.displayMonths = 1;\n /**\n * Allows to hide week numbers in datepicker\n */\n this.showWeekNumbers = true;\n this.dateInputFormat = 'L';\n // range picker\n this.rangeSeparator = ' - ';\n /**\n * Date format for date range input field\n */\n this.rangeInputFormat = 'L';\n // DatepickerFormatOptions\n this.monthTitle = 'MMMM';\n this.yearTitle = 'YYYY';\n this.dayLabel = 'D';\n this.monthLabel = 'MMMM';\n this.yearLabel = 'YYYY';\n this.weekNumbers = 'w';\n }\n}\nBsDatepickerConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsDatepickerConfig.ctorParameters = () => [];\n//# sourceMappingURL=bs-datepicker.config.js.map","import { Injectable } from '@angular/core';\nexport class BsDatepickerActions {\n calculate() {\n return { type: BsDatepickerActions.CALCULATE };\n }\n format() {\n return { type: BsDatepickerActions.FORMAT };\n }\n flag() {\n return { type: BsDatepickerActions.FLAG };\n }\n select(date) {\n return {\n type: BsDatepickerActions.SELECT,\n payload: date\n };\n }\n changeViewMode(event) {\n return {\n type: BsDatepickerActions.CHANGE_VIEWMODE,\n payload: event\n };\n }\n navigateTo(event) {\n return {\n type: BsDatepickerActions.NAVIGATE_TO,\n payload: event\n };\n }\n navigateStep(step) {\n return {\n type: BsDatepickerActions.NAVIGATE_OFFSET,\n payload: step\n };\n }\n setOptions(options) {\n return {\n type: BsDatepickerActions.SET_OPTIONS,\n payload: options\n };\n }\n // date range picker\n selectRange(value) {\n return {\n type: BsDatepickerActions.SELECT_RANGE,\n payload: value\n };\n }\n hoverDay(event) {\n return {\n type: BsDatepickerActions.HOVER,\n payload: event.isHovered ? event.cell.date : null\n };\n }\n minDate(date) {\n return {\n type: BsDatepickerActions.SET_MIN_DATE,\n payload: date\n };\n }\n maxDate(date) {\n return {\n type: BsDatepickerActions.SET_MAX_DATE,\n payload: date\n };\n }\n isDisabled(value) {\n return {\n type: BsDatepickerActions.SET_IS_DISABLED,\n payload: value\n };\n }\n setLocale(locale) {\n return {\n type: BsDatepickerActions.SET_LOCALE,\n payload: locale\n };\n }\n}\nBsDatepickerActions.CALCULATE = '[datepicker] calculate dates matrix';\nBsDatepickerActions.FORMAT = '[datepicker] format datepicker values';\nBsDatepickerActions.FLAG = '[datepicker] set flags';\nBsDatepickerActions.SELECT = '[datepicker] select date';\nBsDatepickerActions.NAVIGATE_OFFSET = '[datepicker] shift view date';\nBsDatepickerActions.NAVIGATE_TO = '[datepicker] change view date';\nBsDatepickerActions.SET_OPTIONS = '[datepicker] update render options';\nBsDatepickerActions.HOVER = '[datepicker] hover date';\nBsDatepickerActions.CHANGE_VIEWMODE = '[datepicker] switch view mode';\nBsDatepickerActions.SET_MIN_DATE = '[datepicker] set min date';\nBsDatepickerActions.SET_MAX_DATE = '[datepicker] set max date';\nBsDatepickerActions.SET_IS_DISABLED = '[datepicker] set is disabled';\nBsDatepickerActions.SET_LOCALE = '[datepicker] set datepicker locale';\nBsDatepickerActions.SELECT_RANGE = '[daterangepicker] select dates range';\nBsDatepickerActions.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsDatepickerActions.ctorParameters = () => [];\n//# sourceMappingURL=bs-datepicker.actions.js.map","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nexport class BsLocaleService {\n constructor() {\n this._defaultLocale = 'en';\n this._locale = new BehaviorSubject(this._defaultLocale);\n this._localeChange = this._locale.asObservable();\n }\n get locale() {\n return this._locale;\n }\n get localeChange() {\n return this._localeChange;\n }\n get currentLocale() {\n return this._locale.getValue();\n }\n use(locale) {\n if (locale === this.currentLocale) {\n return;\n }\n this._locale.next(locale);\n }\n}\nBsLocaleService.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsLocaleService.ctorParameters = () => [];\n//# sourceMappingURL=bs-locale.service.js.map","import { Injectable } from '@angular/core';\nimport 'rxjs/add/operator/filter';\nimport 'rxjs/add/operator/map';\nimport { getFullYear, getMonth } from '../../chronos/utils/date-getters';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { BsLocaleService } from '../bs-locale.service';\nexport class BsDatepickerEffects {\n constructor(_actions, _localeService) {\n this._actions = _actions;\n this._localeService = _localeService;\n this._subs = [];\n }\n init(_bsDatepickerStore) {\n this._store = _bsDatepickerStore;\n return this;\n }\n /** setters */\n setValue(value) {\n this._store.dispatch(this._actions.select(value));\n }\n setRangeValue(value) {\n this._store.dispatch(this._actions.selectRange(value));\n }\n setMinDate(value) {\n this._store.dispatch(this._actions.minDate(value));\n return this;\n }\n setMaxDate(value) {\n this._store.dispatch(this._actions.maxDate(value));\n return this;\n }\n setDisabled(value) {\n this._store.dispatch(this._actions.isDisabled(value));\n return this;\n }\n /* Set rendering options */\n setOptions(_config) {\n const _options = Object.assign({ locale: this._localeService.currentLocale }, _config);\n this._store.dispatch(this._actions.setOptions(_options));\n return this;\n }\n /** view to mode bindings */\n setBindings(container) {\n container.daysCalendar = this._store\n .select(state => state.flaggedMonths)\n .filter(months => !!months);\n // month calendar\n container.monthsCalendar = this._store\n .select(state => state.flaggedMonthsCalendar)\n .filter(months => !!months);\n // year calendar\n container.yearsCalendar = this._store\n .select(state => state.yearsCalendarFlagged)\n .filter(years => !!years);\n container.viewMode = this._store.select(state => state.view.mode);\n container.options = this._store\n .select(state => state.showWeekNumbers)\n .map(showWeekNumbers => ({ showWeekNumbers }));\n return this;\n }\n /** event handlers */\n setEventHandlers(container) {\n container.setViewMode = (event) => {\n this._store.dispatch(this._actions.changeViewMode(event));\n };\n container.navigateTo = (event) => {\n this._store.dispatch(this._actions.navigateStep(event.step));\n };\n container.dayHoverHandler = (event) => {\n const _cell = event.cell;\n if (_cell.isOtherMonth || _cell.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n container.monthHoverHandler = (event) => {\n event.cell.isHovered = event.isHovered;\n };\n container.yearHoverHandler = (event) => {\n event.cell.isHovered = event.isHovered;\n };\n /** select handlers */\n // container.daySelectHandler = (day: DayViewModel): void => {\n // if (day.isOtherMonth || day.isDisabled) {\n // return;\n // }\n // this._store.dispatch(this._actions.select(day.date));\n // };\n container.monthSelectHandler = (event) => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: { month: getMonth(event.date) },\n viewMode: 'day'\n }));\n };\n container.yearSelectHandler = (event) => {\n if (event.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.navigateTo({\n unit: { year: getFullYear(event.date) },\n viewMode: 'month'\n }));\n };\n return this;\n }\n registerDatepickerSideEffects() {\n this._subs.push(this._store.select(state => state.view).subscribe(view => {\n this._store.dispatch(this._actions.calculate());\n }));\n // format calendar values on month model change\n this._subs.push(this._store\n .select(state => state.monthsModel)\n .filter(monthModel => !!monthModel)\n .subscribe(month => this._store.dispatch(this._actions.format())));\n // flag day values\n this._subs.push(this._store\n .select(state => state.formattedMonths)\n .filter(month => !!month)\n .subscribe(month => this._store.dispatch(this._actions.flag())));\n // flag day values\n this._subs.push(this._store\n .select(state => state.selectedDate)\n .filter(selectedDate => !!selectedDate)\n .subscribe(selectedDate => this._store.dispatch(this._actions.flag())));\n // flag for date range picker\n this._subs.push(this._store\n .select(state => state.selectedRange)\n .filter(selectedRange => !!selectedRange)\n .subscribe(selectedRange => this._store.dispatch(this._actions.flag())));\n // monthsCalendar\n this._subs.push(this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => this._store.dispatch(this._actions.flag())));\n // years calendar\n this._subs.push(this._store\n .select(state => state.yearsCalendarModel)\n .filter(state => !!state)\n .subscribe(() => this._store.dispatch(this._actions.flag())));\n // on hover\n this._subs.push(this._store\n .select(state => state.hoveredDate)\n .filter(hoveredDate => !!hoveredDate)\n .subscribe(hoveredDate => this._store.dispatch(this._actions.flag())));\n // on locale change\n this._subs.push(this._localeService.localeChange\n .subscribe(locale => this._store.dispatch(this._actions.setLocale(locale))));\n return this;\n }\n destroy() {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\nBsDatepickerEffects.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsDatepickerEffects.ctorParameters = () => [\n { type: BsDatepickerActions, },\n { type: BsLocaleService, },\n];\n//# sourceMappingURL=bs-datepicker.effects.js.map","/**\n * @copyright ngrx\n */\nimport { Observable } from 'rxjs/Observable';\nimport { distinctUntilChanged } from 'rxjs/operator/distinctUntilChanged';\nimport { map } from 'rxjs/operator/map';\nexport class MiniStore extends Observable {\n constructor(_dispatcher, _reducer, state$) {\n super();\n this._dispatcher = _dispatcher;\n this._reducer = _reducer;\n this.source = state$;\n }\n select(pathOrMapFn) {\n const mapped$ = map.call(this, pathOrMapFn);\n return distinctUntilChanged.call(mapped$);\n }\n lift(operator) {\n const store = new MiniStore(this._dispatcher, this._reducer, this);\n store.operator = operator;\n return store;\n }\n dispatch(action) {\n this._dispatcher.next(action);\n }\n next(action) {\n this._dispatcher.next(action);\n }\n error(err) {\n this._dispatcher.error(err);\n }\n complete() {\n /*noop*/\n }\n}\n//# sourceMappingURL=store.class.js.map","export const defaultMonthOptions = {\n width: 7,\n height: 6\n};\n//# sourceMappingURL=_defaults.js.map","import { defaultMonthOptions } from './_defaults';\nimport { BsDatepickerConfig } from '../bs-datepicker.config';\nexport class BsDatepickerState {\n}\nconst _initialView = { date: new Date(), mode: 'day' };\nexport const initialDatepickerState = Object.assign(new BsDatepickerConfig(), {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n monthViewOptions: defaultMonthOptions\n});\n//# sourceMappingURL=bs-datepicker.state.js.map","/**\n * @copyright ngrx\n */\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { observeOn } from 'rxjs/operator/observeOn';\nimport { queue } from 'rxjs/scheduler/queue';\nimport { scan } from 'rxjs/operator/scan';\nexport class MiniState extends BehaviorSubject {\n constructor(_initialState, actionsDispatcher$, reducer) {\n super(_initialState);\n const actionInQueue$ = observeOn.call(actionsDispatcher$, queue);\n const state$ = scan.call(actionInQueue$, (state, action) => {\n if (!action) {\n return state;\n }\n return reducer(state, action);\n }, _initialState);\n state$.subscribe((value) => this.next(value));\n }\n}\n//# sourceMappingURL=state.class.js.map","import { getDay, isFirstDayOfWeek } from '../../chronos/utils/date-getters';\nimport { shiftDate } from '../../chronos/utils/date-setters';\nimport { isAfter, isBefore } from '../../chronos/utils/date-compare';\nimport { endOf, startOf } from '../../chronos/utils/start-end-of';\nexport function getStartingDayOfCalendar(date, options) {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n return date;\n }\n const weekDay = getDay(date);\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n return shiftDate(date, { day: -offset });\n}\nexport function calculateDateOffset(weekday, startingDayOffset) {\n if (startingDayOffset === 0) {\n return weekday;\n }\n const offset = weekday - startingDayOffset % 7;\n return offset < 0 ? offset + 7 : offset;\n}\nexport function isMonthDisabled(date, min, max) {\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n return minBound || maxBound;\n}\nexport function isYearDisabled(date, min, max) {\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n return minBound || maxBound;\n}\n//# sourceMappingURL=bs-calendar-utils.js.map","import { shiftDate } from '../../chronos/utils/date-setters';\nexport function createMatrix(options, fn) {\n let prevValue = options.initialDate;\n const matrix = new Array(options.height);\n for (let i = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n for (let j = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n return matrix;\n}\n//# sourceMappingURL=matrix-utils.js.map","import { getFirstDayOfMonth } from '../../chronos/utils/date-getters';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix } from '../utils/matrix-utils';\nexport function calcDaysCalendar(startingDate, options) {\n const firstDay = getFirstDayOfMonth(startingDate);\n const initialDate = getStartingDayOfCalendar(firstDay, options);\n const matrixOptions = {\n width: options.width,\n height: options.height,\n initialDate,\n shift: { day: 1 }\n };\n const daysMatrix = createMatrix(matrixOptions, date => date);\n return {\n daysMatrix,\n month: firstDay\n };\n}\n//# sourceMappingURL=calc-days-calendar.js.map","import { formatDate } from '../../chronos/format';\nimport { getLocale } from '../../chronos/locale/locales';\nexport function formatDaysCalendar(daysCalendar, formatOptions, monthIndex) {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(daysCalendar.month, formatOptions.monthTitle, formatOptions.locale),\n yearTitle: formatDate(daysCalendar.month, formatOptions.yearTitle, formatOptions.locale),\n weekNumbers: getWeekNumbers(daysCalendar.daysMatrix, formatOptions.weekNumbers, formatOptions.locale),\n weekdays: getShiftedWeekdays(formatOptions.locale),\n weeks: daysCalendar.daysMatrix.map((week, weekIndex) => ({\n days: week.map((date, dayIndex) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n }))\n };\n}\nexport function getWeekNumbers(daysMatrix, format, locale) {\n return daysMatrix.map((days) => (days[0] ? formatDate(days[0], format, locale) : ''));\n}\nexport function getShiftedWeekdays(locale) {\n const _locale = getLocale(locale);\n const weekdays = _locale.weekdaysShort();\n const firstDayOfWeek = _locale.firstDayOfWeek();\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n//# sourceMappingURL=format-days-calendar.js.map","import { isSameDay, isSameMonth } from '../../chronos/utils/date-getters';\nimport { isAfter, isBefore } from '../../chronos/utils/date-compare';\nimport { isMonthDisabled } from '../utils/bs-calendar-utils';\nimport { shiftDate } from '../../chronos/utils/date-setters';\nexport function flagDaysCalendar(formattedMonth, options) {\n formattedMonth.weeks.forEach((week, weekIndex) => {\n week.days.forEach((day, dayIndex) => {\n // datepicker\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n const isHovered = !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n // date range picker\n const isSelectionStart = !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd = !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[1]);\n const isSelected = (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n isSelectionStart ||\n isSelectionEnd;\n const isInRange = !isOtherMonth &&\n options.selectedRange &&\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n const isDisabled = options.isDisabled ||\n isBefore(day.date, options.minDate, 'day') ||\n isAfter(day.date, options.maxDate, 'day');\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled\n });\n if (day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n // todo: add check for linked calendars\n formattedMonth.hideLeftArrow =\n options.isDisabled ||\n (options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n (options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths);\n formattedMonth.disableLeftArrow = isMonthDisabled(shiftDate(formattedMonth.month, { month: -1 }), options.minDate, options.maxDate);\n formattedMonth.disableRightArrow = isMonthDisabled(shiftDate(formattedMonth.month, { month: 1 }), options.minDate, options.maxDate);\n return formattedMonth;\n}\nfunction isDateInRange(date, selectedRange, hoveredDate) {\n if (!date || !selectedRange[0]) {\n return false;\n }\n if (selectedRange[1]) {\n return date > selectedRange[0] && date <= selectedRange[1];\n }\n if (hoveredDate) {\n return date > selectedRange[0] && date <= hoveredDate;\n }\n return false;\n}\n//# sourceMappingURL=flag-days-calendar.js.map","export function canSwitchMode(mode) {\n return true;\n}\n//# sourceMappingURL=view-mode.js.map","import { startOf } from '../../chronos/utils/start-end-of';\nimport { formatDate } from '../../chronos/format';\nimport { createMatrix } from '../utils/matrix-utils';\nconst height = 4;\nconst width = 3;\nconst shift = { month: 1 };\nexport function formatMonthsCalendar(viewDate, formatOptions) {\n const initialDate = startOf(viewDate, 'year');\n const matrixOptions = { width, height, initialDate, shift };\n const monthMatrix = createMatrix(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(viewDate, formatOptions.yearTitle, formatOptions.locale)\n };\n}\n//# sourceMappingURL=format-months-calendar.js.map","import { isSameMonth } from '../../chronos/utils/date-getters';\nimport { isMonthDisabled, isYearDisabled } from '../utils/bs-calendar-utils';\nimport { shiftDate } from '../../chronos/utils/date-setters';\nexport function flagMonthsCalendar(monthCalendar, options) {\n monthCalendar.months.forEach((months, rowIndex) => {\n months.forEach((month, monthIndex) => {\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled = options.isDisabled ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n const newMonth = Object.assign(/*{},*/ month, {\n isHovered,\n isDisabled\n });\n if (month.isHovered !== newMonth.isHovered ||\n month.isDisabled !== newMonth.isDisabled) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n });\n // todo: add check for linked calendars\n monthCalendar.hideLeftArrow =\n options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\n options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths;\n monthCalendar.disableLeftArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, { year: -1 }), options.minDate, options.maxDate);\n monthCalendar.disableRightArrow = isYearDisabled(shiftDate(monthCalendar.months[0][0].date, { year: 1 }), options.minDate, options.maxDate);\n return monthCalendar;\n}\n//# sourceMappingURL=flag-months-calendar.js.map","import { shiftDate } from '../../chronos/utils/date-setters';\nimport { formatDate } from '../../chronos/format';\nimport { createMatrix } from '../utils/matrix-utils';\nconst height = 4;\nconst width = 4;\nexport const yearsPerCalendar = height * width;\nconst initialShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift = { year: 1 };\nexport function formatYearsCalendar(viewDate, formatOptions) {\n const initialDate = shiftDate(viewDate, { year: initialShift });\n const matrixOptions = { width, height, initialDate, shift };\n const yearsMatrix = createMatrix(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle\n };\n}\nfunction formatYearRangeTitle(yearsMatrix, formatOptions) {\n const from = formatDate(yearsMatrix[0][0].date, formatOptions.yearTitle, formatOptions.locale);\n const to = formatDate(yearsMatrix[height - 1][width - 1].date, formatOptions.yearTitle, formatOptions.locale);\n return `${from} - ${to}`;\n}\n//# sourceMappingURL=format-years-calendar.js.map","import { isSameYear } from '../../chronos/utils/date-getters';\nimport { isYearDisabled } from '../utils/bs-calendar-utils';\nimport { shiftDate } from '../../chronos/utils/date-setters';\nexport function flagYearsCalendar(yearsCalendar, options) {\n yearsCalendar.years.forEach((years, rowIndex) => {\n years.forEach((year, yearIndex) => {\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled = options.isDisabled ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled });\n if (year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n });\n // todo: add check for linked calendars\n yearsCalendar.hideLeftArrow =\n options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\n options.yearIndex < options.displayMonths &&\n options.yearIndex + 1 !== options.displayMonths;\n yearsCalendar.disableLeftArrow = isYearDisabled(shiftDate(yearsCalendar.years[0][0].date, { year: -1 }), options.minDate, options.maxDate);\n const i = yearsCalendar.years.length - 1;\n const j = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableRightArrow = isYearDisabled(shiftDate(yearsCalendar.years[i][j].date, { year: 1 }), options.minDate, options.maxDate);\n return yearsCalendar;\n}\n//# sourceMappingURL=flag-years-calendar.js.map","// tslint:disable:max-file-line-count\nimport { initialDatepickerState } from './bs-datepicker.state';\nimport { BsDatepickerActions } from './bs-datepicker.actions';\nimport { calcDaysCalendar } from '../engine/calc-days-calendar';\nimport { formatDaysCalendar } from '../engine/format-days-calendar';\nimport { flagDaysCalendar } from '../engine/flag-days-calendar';\nimport { setFullDate, shiftDate } from '../../chronos/utils/date-setters';\nimport { canSwitchMode } from '../engine/view-mode';\nimport { formatMonthsCalendar } from '../engine/format-months-calendar';\nimport { flagMonthsCalendar } from '../engine/flag-months-calendar';\nimport { formatYearsCalendar, yearsPerCalendar } from '../engine/format-years-calendar';\nimport { flagYearsCalendar } from '../engine/flag-years-calendar';\nimport { isArray, isDateValid } from '../../chronos/utils/type-checks';\nimport { startOf } from '../../chronos/utils/start-end-of';\nimport { getLocale } from '../../chronos/locale/locales';\nimport { isAfter, isBefore } from '../../chronos/utils/date-compare';\nexport function bsDatepickerReducer(state = initialDatepickerState, action) {\n switch (action.type) {\n case BsDatepickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n case BsDatepickerActions.FORMAT: {\n return formatReducer(state, action);\n }\n case BsDatepickerActions.FLAG: {\n return flagReducer(state, action);\n }\n case BsDatepickerActions.NAVIGATE_OFFSET: {\n const date = shiftDate(startOf(state.view.date, 'month'), action.payload);\n const newState = {\n view: {\n mode: state.view.mode,\n date\n }\n };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.NAVIGATE_TO: {\n const payload = action.payload;\n const date = setFullDate(state.view.date, payload.unit);\n const mode = payload.viewMode;\n const newState = { view: { date, mode } };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload)) {\n return state;\n }\n const date = state.view.date;\n const mode = action.payload;\n const newState = { view: { date, mode } };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.HOVER: {\n return Object.assign({}, state, { hoveredDate: action.payload });\n }\n case BsDatepickerActions.SELECT: {\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.SET_OPTIONS: {\n const newState = action.payload;\n // preserve view mode\n const mode = state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n || state.view.date;\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = { mode, date };\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n }\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n }\n // provided value is not supported :)\n // need to report it somehow\n }\n return Object.assign({}, state, newState);\n }\n // date range picker\n case BsDatepickerActions.SELECT_RANGE: {\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n return Object.assign({}, state, newState);\n }\n case BsDatepickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n case BsDatepickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n case BsDatepickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n default:\n return state;\n }\n}\nfunction calculateReducer(state) {\n // how many calendars\n const displayMonths = state.displayMonths;\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n if (state.view.mode === 'day') {\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n const monthsModel = new Array(displayMonths);\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsModel[monthIndex] = calcDaysCalendar(viewDate, state.monthViewOptions);\n viewDate = shiftDate(viewDate, { month: 1 });\n }\n return Object.assign({}, state, { monthsModel });\n }\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n return Object.assign({}, state, { monthsCalendar });\n }\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n }\n return Object.assign({}, state, { yearsCalendarModel });\n }\n return state;\n}\nfunction formatReducer(state, action) {\n if (state.view.mode === 'day') {\n const formattedMonths = state.monthsModel.map((month, monthIndex) => formatDaysCalendar(month, getFormatOptions(state), monthIndex));\n return Object.assign({}, state, { formattedMonths });\n }\n // how many calendars\n const displayMonths = state.displayMonths;\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n return Object.assign({}, state, { monthsCalendar });\n }\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (let calendarIndex = 0; calendarIndex < displayMonths; calendarIndex++) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(viewDate, getFormatOptions(state));\n viewDate = shiftDate(viewDate, { year: 16 });\n }\n return Object.assign({}, state, { yearsCalendarModel });\n }\n return state;\n}\nfunction flagReducer(state, action) {\n if (state.view.mode === 'day') {\n const flaggedMonths = state.formattedMonths.map((formattedMonth, monthIndex) => flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths: state.displayMonths,\n monthIndex\n }));\n return Object.assign({}, state, { flaggedMonths });\n }\n if (state.view.mode === 'month') {\n const flaggedMonthsCalendar = state.monthsCalendar.map((formattedMonth, monthIndex) => flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n displayMonths: state.displayMonths,\n monthIndex\n }));\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n if (state.view.mode === 'year') {\n const yearsCalendarFlagged = state.yearsCalendarModel.map((formattedMonth, yearIndex) => flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n displayMonths: state.displayMonths,\n yearIndex\n }));\n return Object.assign({}, state, { yearsCalendarFlagged });\n }\n return state;\n}\nfunction getFormatOptions(state) {\n return {\n locale: state.locale,\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel,\n weekNumbers: state.weekNumbers\n };\n}\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate, minDate, maxDate) {\n const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n if (minDate && isAfter(minDate, _date, 'day')) {\n return minDate;\n }\n if (maxDate && isBefore(maxDate, _date, 'day')) {\n return maxDate;\n }\n return _date;\n}\n//# sourceMappingURL=bs-datepicker.reducer.js.map","import { Injectable } from '@angular/core';\nimport { MiniStore } from '../../mini-ngrx/store.class';\nimport { initialDatepickerState } from './bs-datepicker.state';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { MiniState } from '../../mini-ngrx/state.class';\nimport { bsDatepickerReducer } from './bs-datepicker.reducer';\nexport class BsDatepickerStore extends MiniStore {\n constructor() {\n const _dispatcher = new BehaviorSubject({\n type: '[datepicker] dispatcher init'\n });\n const state = new MiniState(initialDatepickerState, _dispatcher, bsDatepickerReducer);\n super(_dispatcher, bsDatepickerReducer, state);\n }\n}\nBsDatepickerStore.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsDatepickerStore.ctorParameters = () => [];\n//# sourceMappingURL=bs-datepicker.store.js.map","import { Component, EventEmitter } from '@angular/core';\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\nexport class BsDatepickerContainerComponent extends BsDatepickerAbstractComponent {\n constructor(_config, _store, _actions, _effects) {\n super();\n this._config = _config;\n this._store = _store;\n this._actions = _actions;\n this.valueChange = new EventEmitter();\n this._subs = [];\n this._effects = _effects;\n }\n set value(value) {\n this._effects.setValue(value);\n }\n ngOnInit() {\n this.containerClass = this._config.containerClass;\n this._effects\n .init(this._store)\n .setOptions(this._config)\n .setBindings(this)\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(this._store\n .select(state => state.selectedDate)\n .subscribe(date => this.valueChange.emit(date)));\n }\n daySelectHandler(day) {\n if (day.isOtherMonth || day.isDisabled) {\n return;\n }\n this._store.dispatch(this._actions.select(day.date));\n }\n ngOnDestroy() {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\nBsDatepickerContainerComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-datepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n template: \"<!-- days calendar view mode --> <div class=\\\"bs-datepicker\\\" [ngClass]=\\\"containerClass\\\" *ngIf=\\\"viewMode | async\\\"> <div class=\\\"bs-datepicker-container\\\"> <!--calendars--> <div class=\\\"bs-calendar-container\\\" [ngSwitch]=\\\"viewMode | async\\\"> <!--days calendar--> <div *ngSwitchCase=\\\"'day'\\\"> <bs-days-calendar-view *ngFor=\\\"let calendar of (daysCalendar | async)\\\" [class.bs-datepicker-multiple]=\\\"(daysCalendar | async)?.length > 1\\\" [calendar]=\\\"calendar\\\" [options]=\\\"options | async\\\" (onNavigate)=\\\"navigateTo($event)\\\" (onViewMode)=\\\"setViewMode($event)\\\" (onHover)=\\\"dayHoverHandler($event)\\\" (onSelect)=\\\"daySelectHandler($event)\\\" ></bs-days-calendar-view> </div> <!--months calendar--> <div *ngSwitchCase=\\\"'month'\\\"> <bs-month-calendar-view *ngFor=\\\"let calendar of (monthsCalendar | async)\\\" [class.bs-datepicker-multiple]=\\\"(daysCalendar | async)?.length > 1\\\" [calendar]=\\\"calendar\\\" (onNavigate)=\\\"navigateTo($event)\\\" (onViewMode)=\\\"setViewMode($event)\\\" (onHover)=\\\"monthHoverHandler($event)\\\" (onSelect)=\\\"monthSelectHandler($event)\\\" ></bs-month-calendar-view> </div> <!--years calendar--> <div *ngSwitchCase=\\\"'year'\\\"> <bs-years-calendar-view *ngFor=\\\"let calendar of (yearsCalendar | async)\\\" [class.bs-datepicker-multiple]=\\\"(daysCalendar | async)?.length > 1\\\" [calendar]=\\\"calendar\\\" (onNavigate)=\\\"navigateTo($event)\\\" (onViewMode)=\\\"setViewMode($event)\\\" (onHover)=\\\"yearHoverHandler($event)\\\" (onSelect)=\\\"yearSelectHandler($event)\\\" ></bs-years-calendar-view> </div> </div> <!--applycancel buttons--> <div class=\\\"bs-datepicker-buttons\\\" *ngIf=\\\"false\\\"> <button class=\\\"btn btn-success\\\">Apply</button> <button class=\\\"btn btn-default\\\">Cancel</button> </div> </div> <!--custom dates or date ranges picker--> <div class=\\\"bs-datepicker-custom-range\\\" *ngIf=\\\"false\\\"> <bs-custom-date-view [ranges]=\\\"_customRangesFish\\\"></bs-custom-date-view> </div> </div> \",\n host: {\n '(click)': '_stopPropagation($event)',\n style: 'position: absolute; display: block;'\n }\n },] },\n];\n/** @nocollapse */\nBsDatepickerContainerComponent.ctorParameters = () => [\n { type: BsDatepickerConfig, },\n { type: BsDatepickerStore, },\n { type: BsDatepickerActions, },\n { type: BsDatepickerEffects, },\n];\n//# sourceMappingURL=bs-datepicker-container.component.js.map","import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';\nimport { ComponentLoaderFactory } from '../component-loader/component-loader.factory';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport 'rxjs/add/operator/filter';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nexport class BsDatepickerDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n /**\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n /**\n * Close datepicker on outside click\n */\n this.outsideClick = true;\n /**\n * A selector specifying the element the datepicker should be appended to.\n * Currently only supports \"body\".\n */\n this.container = 'body';\n /**\n * Emits when datepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n }\n /**\n * Returns whether or not the datepicker is currently being shown\n */\n get isOpen() {\n return this._datepicker.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n /**\n * Initial value of datepicker\n */\n set bsValue(value) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n ngOnInit() {\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n ngOnChanges(changes) {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n }\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show() {\n if (this._datepicker.isShown) {\n return;\n }\n this.setConfig();\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDatepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n this._datepickerRef.instance.value = value;\n }));\n // if date changes from picker (view -> model)\n this._subs.push(this._datepickerRef.instance.valueChange.subscribe((value) => {\n this.bsValue = value;\n this.hide();\n }));\n }\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide() {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n /**\n * Set config for datepicker\n */\n setConfig() {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate\n });\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n }\n}\nBsDatepickerDirective.decorators = [\n { type: Directive, args: [{\n selector: '[bsDatepicker]',\n exportAs: 'bsDatepicker'\n },] },\n];\n/** @nocollapse */\nBsDatepickerDirective.ctorParameters = () => [\n { type: BsDatepickerConfig, },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ViewContainerRef, },\n { type: ComponentLoaderFactory, },\n];\nBsDatepickerDirective.propDecorators = {\n 'placement': [{ type: Input },],\n 'triggers': [{ type: Input },],\n 'outsideClick': [{ type: Input },],\n 'container': [{ type: Input },],\n 'isOpen': [{ type: Input },],\n 'onShown': [{ type: Output },],\n 'onHidden': [{ type: Output },],\n 'bsValue': [{ type: Input },],\n 'bsConfig': [{ type: Input },],\n 'isDisabled': [{ type: Input },],\n 'minDate': [{ type: Input },],\n 'maxDate': [{ type: Input },],\n 'bsValueChange': [{ type: Output },],\n};\n//# sourceMappingURL=bs-datepicker.component.js.map","import { ChangeDetectorRef, Directive, ElementRef, forwardRef, Host, Renderer2 } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { parseDate } from '../chronos/create/local';\nimport { formatDate } from '../chronos/format';\nimport { getLocale } from '../chronos/locale/locales';\nimport { isAfter, isBefore } from '../chronos/utils/date-compare';\nimport { isDate, isDateValid } from '../chronos/utils/type-checks';\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nconst BS_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\nconst BS_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => BsDatepickerInputDirective),\n multi: true\n};\nexport class BsDatepickerInputDirective {\n constructor(_picker, _localeService, _renderer, _elRef, changeDetection) {\n this._picker = _picker;\n this._localeService = _localeService;\n this._renderer = _renderer;\n this._elRef = _elRef;\n this.changeDetection = changeDetection;\n this._onChange = Function.prototype;\n this._onTouched = Function.prototype;\n this._validatorChange = Function.prototype;\n // update input value on datepicker value update\n this._picker.bsValueChange.subscribe((value) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n });\n // update input value on locale change\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n _setInputValue(value) {\n const initialDate = !value ? ''\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n }\n onChange(event) {\n this.writeValue(event.target.value);\n this._onChange(this._value);\n this._onTouched();\n }\n validate(c) {\n const _value = c.value;\n if (_value === null || _value === undefined || _value === '') {\n return null;\n }\n if (isDate(_value)) {\n const _isDateValid = isDateValid(_value);\n if (!_isDateValid) {\n return { bsDate: { invalid: _value } };\n }\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n return { bsDate: { minDate: this._picker.minDate } };\n }\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n }\n registerOnValidatorChange(fn) {\n this._validatorChange = fn;\n }\n writeValue(value) {\n if (!value) {\n this._value = null;\n }\n else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(`Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n }\n this._picker.bsValue = this._value;\n }\n setDisabledState(isDisabled) {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n onBlur() {\n this._onTouched();\n }\n hide() {\n this._picker.hide();\n }\n}\nBsDatepickerInputDirective.decorators = [\n { type: Directive, args: [{\n selector: `input[bsDatepicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n },] },\n];\n/** @nocollapse */\nBsDatepickerInputDirective.ctorParameters = () => [\n { type: BsDatepickerDirective, decorators: [{ type: Host },] },\n { type: BsLocaleService, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n];\n//# sourceMappingURL=bs-datepicker-input.directive.js.map","import { Injectable } from '@angular/core';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nexport class BsDaterangepickerConfig extends BsDatepickerConfig {\n constructor() {\n super(...arguments);\n // DatepickerRenderOptions\n this.displayMonths = 2;\n }\n}\nBsDaterangepickerConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsDaterangepickerConfig.ctorParameters = () => [];\n//# sourceMappingURL=bs-daterangepicker.config.js.map","import { Component, EventEmitter } from '@angular/core';\nimport { BsDatepickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { BsDatepickerConfig } from '../../bs-datepicker.config';\nimport { BsDatepickerActions } from '../../reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from '../../reducer/bs-datepicker.store';\nexport class BsDaterangepickerContainerComponent extends BsDatepickerAbstractComponent {\n constructor(_config, _store, _actions, _effects) {\n super();\n this._config = _config;\n this._store = _store;\n this._actions = _actions;\n this.valueChange = new EventEmitter();\n this._rangeStack = [];\n this._subs = [];\n this._effects = _effects;\n }\n set value(value) {\n this._effects.setRangeValue(value);\n }\n ngOnInit() {\n this.containerClass = this._config.containerClass;\n this._effects\n .init(this._store)\n .setOptions(this._config)\n .setBindings(this)\n .setEventHandlers(this)\n .registerDatepickerSideEffects();\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(this._store\n .select(state => state.selectedRange)\n .subscribe(date => this.valueChange.emit(date)));\n }\n daySelectHandler(day) {\n if (day.isOtherMonth || day.isDisabled) {\n return;\n }\n // if only one date is already selected\n // and user clicks on previous date\n // start selection from new date\n // but if new date is after initial one\n // than finish selection\n if (this._rangeStack.length === 1) {\n this._rangeStack =\n day.date >= this._rangeStack[0]\n ? [this._rangeStack[0], day.date]\n : [day.date];\n }\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n }\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n ngOnDestroy() {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\nBsDaterangepickerContainerComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-daterangepicker-container',\n providers: [BsDatepickerStore, BsDatepickerEffects],\n template: \"<!-- days calendar view mode --> <div class=\\\"bs-datepicker\\\" [ngClass]=\\\"containerClass\\\" *ngIf=\\\"viewMode | async\\\"> <div class=\\\"bs-datepicker-container\\\"> <!--calendars--> <div class=\\\"bs-calendar-container\\\" [ngSwitch]=\\\"viewMode | async\\\"> <!--days calendar--> <div *ngSwitchCase=\\\"'day'\\\"> <bs-days-calendar-view *ngFor=\\\"let calendar of (daysCalendar | async)\\\" [class.bs-datepicker-multiple]=\\\"(daysCalendar | async)?.length > 1\\\" [calendar]=\\\"calendar\\\" [options]=\\\"options | async\\\" (onNavigate)=\\\"navigateTo($event)\\\" (onViewMode)=\\\"setViewMode($event)\\\" (onHover)=\\\"dayHoverHandler($event)\\\" (onSelect)=\\\"daySelectHandler($event)\\\" ></bs-days-calendar-view> </div> <!--months calendar--> <div *ngSwitchCase=\\\"'month'\\\"> <bs-month-calendar-view *ngFor=\\\"let calendar of (monthsCalendar | async)\\\" [class.bs-datepicker-multiple]=\\\"(daysCalendar | async)?.length > 1\\\" [calendar]=\\\"calendar\\\" (onNavigate)=\\\"navigateTo($event)\\\" (onViewMode)=\\\"setViewMode($event)\\\" (onHover)=\\\"monthHoverHandler($event)\\\" (onSelect)=\\\"monthSelectHandler($event)\\\" ></bs-month-calendar-view> </div> <!--years calendar--> <div *ngSwitchCase=\\\"'year'\\\"> <bs-years-calendar-view *ngFor=\\\"let calendar of (yearsCalendar | async)\\\" [class.bs-datepicker-multiple]=\\\"(daysCalendar | async)?.length > 1\\\" [calendar]=\\\"calendar\\\" (onNavigate)=\\\"navigateTo($event)\\\" (onViewMode)=\\\"setViewMode($event)\\\" (onHover)=\\\"yearHoverHandler($event)\\\" (onSelect)=\\\"yearSelectHandler($event)\\\" ></bs-years-calendar-view> </div> </div> <!--applycancel buttons--> <div class=\\\"bs-datepicker-buttons\\\" *ngIf=\\\"false\\\"> <button class=\\\"btn btn-success\\\">Apply</button> <button class=\\\"btn btn-default\\\">Cancel</button> </div> </div> <!--custom dates or date ranges picker--> <div class=\\\"bs-datepicker-custom-range\\\" *ngIf=\\\"false\\\"> <bs-custom-date-view [ranges]=\\\"_customRangesFish\\\"></bs-custom-date-view> </div> </div> \",\n host: {\n '(click)': '_stopPropagation($event)',\n style: 'position: absolute; display: block;'\n }\n },] },\n];\n/** @nocollapse */\nBsDaterangepickerContainerComponent.ctorParameters = () => [\n { type: BsDatepickerConfig, },\n { type: BsDatepickerStore, },\n { type: BsDatepickerActions, },\n { type: BsDatepickerEffects, },\n];\n//# sourceMappingURL=bs-daterangepicker-container.component.js.map","import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { ComponentLoaderFactory } from '../component-loader/component-loader.factory';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nexport class BsDaterangepickerDirective {\n constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {\n this._config = _config;\n /**\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n this.placement = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n /**\n * Close daterangepicker on outside click\n */\n this.outsideClick = true;\n /**\n * A selector specifying the element the daterangepicker should be appended\n * to. Currently only supports \"body\".\n */\n this.container = 'body';\n /**\n * Emits when daterangepicker value has been changed\n */\n this.bsValueChange = new EventEmitter();\n this._subs = [];\n this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);\n Object.assign(this, _config);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n }\n /**\n * Returns whether or not the daterangepicker is currently being shown\n */\n get isOpen() {\n return this._datepicker.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n /**\n * Initial value of daterangepicker\n */\n set bsValue(value) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n ngOnInit() {\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n ngOnChanges(changes) {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n }\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show() {\n if (this._datepicker.isShown) {\n return;\n }\n this.setConfig();\n this._datepickerRef = this._datepicker\n .provide({ provide: BsDatepickerConfig, useValue: this._config })\n .attach(BsDaterangepickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n // if date changes from external source (model -> view)\n this._subs.push(this.bsValueChange.subscribe((value) => {\n this._datepickerRef.instance.value = value;\n }));\n // if date changes from picker (view -> model)\n this._subs.push(this._datepickerRef.instance.valueChange\n .filter((range) => range && range[0] && !!range[1])\n .subscribe((value) => {\n this.bsValue = value;\n this.hide();\n }));\n }\n /**\n * Set config for daterangepicker\n */\n setConfig() {\n this._config = Object.assign({}, this._config, this.bsConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,\n maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate\n });\n }\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide() {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n ngOnDestroy() {\n this._datepicker.dispose();\n }\n}\nBsDaterangepickerDirective.decorators = [\n { type: Directive, args: [{\n selector: '[bsDaterangepicker]',\n exportAs: 'bsDaterangepicker'\n },] },\n];\n/** @nocollapse */\nBsDaterangepickerDirective.ctorParameters = () => [\n { type: BsDaterangepickerConfig, },\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ViewContainerRef, },\n { type: ComponentLoaderFactory, },\n];\nBsDaterangepickerDirective.propDecorators = {\n 'placement': [{ type: Input },],\n 'triggers': [{ type: Input },],\n 'outsideClick': [{ type: Input },],\n 'container': [{ type: Input },],\n 'isOpen': [{ type: Input },],\n 'onShown': [{ type: Output },],\n 'onHidden': [{ type: Output },],\n 'bsValue': [{ type: Input },],\n 'bsConfig': [{ type: Input },],\n 'isDisabled': [{ type: Input },],\n 'minDate': [{ type: Input },],\n 'maxDate': [{ type: Input },],\n 'bsValueChange': [{ type: Output },],\n};\n//# sourceMappingURL=bs-daterangepicker.component.js.map","import { ChangeDetectorRef, Directive, ElementRef, forwardRef, Host, Renderer2 } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { parseDate } from '../chronos/create/local';\nimport { formatDate } from '../chronos/format';\nimport { getLocale } from '../chronos/locale/locales';\nimport { isAfter, isBefore } from '../chronos/utils/date-compare';\nimport { isArray, isDateValid } from '../chronos/utils/type-checks';\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\nconst BS_DATERANGEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => BsDaterangepickerInputDirective),\n multi: true\n};\nexport class BsDaterangepickerInputDirective {\n constructor(_picker, _localeService, _renderer, _elRef, changeDetection) {\n this._picker = _picker;\n this._localeService = _localeService;\n this._renderer = _renderer;\n this._elRef = _elRef;\n this.changeDetection = changeDetection;\n this._onChange = Function.prototype;\n this._onTouched = Function.prototype;\n this._validatorChange = Function.prototype;\n // update input value on datepicker value update\n this._picker.bsValueChange.subscribe((value) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n });\n // update input value on locale change\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n });\n }\n _setInputValue(date) {\n let range = '';\n if (date) {\n const start = !date[0] ? ''\n : formatDate(date[0], this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n const end = !date[1] ? ''\n : formatDate(date[1], this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n }\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n }\n onChange(event) {\n this.writeValue(event.target.value);\n this._onChange(this._value);\n this._onTouched();\n }\n validate(c) {\n const _value = c.value;\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n const _isDateValid = isDateValid(_value[0]) && isDateValid(_value[0]);\n if (!_isDateValid) {\n return { bsDate: { invalid: _value } };\n }\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n return { bsDate: { minDate: this._picker.minDate } };\n }\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n return { bsDate: { maxDate: this._picker.maxDate } };\n }\n }\n registerOnValidatorChange(fn) {\n this._validatorChange = fn;\n }\n writeValue(value) {\n if (!value) {\n this._value = null;\n }\n else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(`Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`);\n }\n let _input = [];\n if (typeof value === 'string') {\n _input = value.split(this._picker._config.rangeSeparator);\n }\n if (Array.isArray(value)) {\n _input = value;\n }\n this._value = _input\n .map((_val) => parseDate(_val, this._picker._config.dateInputFormat, this._localeService.currentLocale))\n .map((date) => (isNaN(date.valueOf()) ? null : date));\n }\n this._picker.bsValue = this._value;\n }\n setDisabledState(isDisabled) {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n onBlur() {\n this._onTouched();\n }\n hide() {\n this._picker.hide();\n }\n}\nBsDaterangepickerInputDirective.decorators = [\n { type: Directive, args: [{\n selector: `input[bsDaterangepicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n },] },\n];\n/** @nocollapse */\nBsDaterangepickerInputDirective.ctorParameters = () => [\n { type: BsDaterangepickerDirective, decorators: [{ type: Host },] },\n { type: BsLocaleService, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n];\n//# sourceMappingURL=bs-daterangepicker-input.directive.js.map","import { Component } from '@angular/core';\nexport class BsCalendarLayoutComponent {\n}\nBsCalendarLayoutComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-calendar-layout',\n template: `\n <!-- current date, will be added in nearest releases -->\n <bs-current-date title=\"hey there\" *ngIf=\"false\"></bs-current-date>\n\n <!--navigation-->\n <div class=\"bs-datepicker-head\">\n <ng-content select=\"bs-datepicker-navigation-view\"></ng-content>\n </div>\n\n <div class=\"bs-datepicker-body\">\n <ng-content></ng-content>\n </div>\n\n <!--timepicker-->\n <bs-timepicker *ngIf=\"false\"></bs-timepicker>\n `\n },] },\n];\n/** @nocollapse */\nBsCalendarLayoutComponent.ctorParameters = () => [];\n//# sourceMappingURL=bs-calendar-layout.component.js.map","import { Component, Input } from '@angular/core';\nexport class BsCurrentDateViewComponent {\n}\nBsCurrentDateViewComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-current-date',\n template: `<div class=\"current-timedate\"><span>{{ title }}</span></div>`\n },] },\n];\n/** @nocollapse */\nBsCurrentDateViewComponent.ctorParameters = () => [];\nBsCurrentDateViewComponent.propDecorators = {\n 'title': [{ type: Input },],\n};\n//# sourceMappingURL=bs-current-date-view.component.js.map","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nexport class BsCustomDatesViewComponent {\n}\nBsCustomDatesViewComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-custom-date-view',\n template: `\n <div class=\"bs-datepicker-predefined-btns\">\n <button *ngFor=\"let range of ranges\">{{ range.label }}</button>\n <button *ngIf=\"isCustomRangeShown\">Custom Range</button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n];\n/** @nocollapse */\nBsCustomDatesViewComponent.ctorParameters = () => [];\nBsCustomDatesViewComponent.propDecorators = {\n 'isCustomRangeShown': [{ type: Input },],\n 'ranges': [{ type: Input },],\n};\n//# sourceMappingURL=bs-custom-dates-view.component.js.map","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nexport class BsDatepickerDayDecoratorComponent {\n}\nBsDatepickerDayDecoratorComponent.decorators = [\n { type: Component, args: [{\n selector: '[bsDatepickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day.label }}`\n },] },\n];\n/** @nocollapse */\nBsDatepickerDayDecoratorComponent.ctorParameters = () => [];\nBsDatepickerDayDecoratorComponent.propDecorators = {\n 'day': [{ type: Input },],\n};\n//# sourceMappingURL=bs-datepicker-day-decorator.directive.js.map","/** *************** */\n// events\n/** *************** */\nexport var BsNavigationDirection;\n(function (BsNavigationDirection) {\n BsNavigationDirection[BsNavigationDirection[\"UP\"] = 0] = \"UP\";\n BsNavigationDirection[BsNavigationDirection[\"DOWN\"] = 1] = \"DOWN\";\n})(BsNavigationDirection || (BsNavigationDirection = {}));\n//# sourceMappingURL=index.js.map","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BsNavigationDirection } from '../../models/index';\nexport class BsDatepickerNavigationViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n }\n navTo(down) {\n this.onNavigate.emit(down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP);\n }\n view(viewMode) {\n this.onViewMode.emit(viewMode);\n }\n}\nBsDatepickerNavigationViewComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button class=\"previous\"\n [disabled]=\"calendar.disableLeftArrow\"\n [style.visibility]=\"calendar.hideLeftArrow ? 'hidden' : 'visible'\"\n (click)=\"navTo(true)\"><span>‹</span>\n </button>\n\n <button class=\"current\"\n *ngIf=\"calendar.monthTitle\"\n (click)=\"view('month')\"\n ><span>{{ calendar.monthTitle }}</span>\n </button>\n\n <button class=\"current\" (click)=\"view('year')\"\n ><span>{{ calendar.yearTitle }}</span></button>\n\n <button class=\"next\"\n [disabled]=\"calendar.disableRightArrow\"\n [style.visibility]=\"calendar.hideRightArrow ? 'hidden' : 'visible'\"\n (click)=\"navTo(false)\"><span>›</span>\n </button>\n `\n },] },\n];\n/** @nocollapse */\nBsDatepickerNavigationViewComponent.ctorParameters = () => [];\nBsDatepickerNavigationViewComponent.propDecorators = {\n 'calendar': [{ type: Input },],\n 'onNavigate': [{ type: Output },],\n 'onViewMode': [{ type: Output },],\n};\n//# sourceMappingURL=bs-datepicker-navigation-view.component.js.map","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BsNavigationDirection } from '../../models/index';\nexport class BsDaysCalendarViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { month: step } });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n selectDay(event) {\n this.onSelect.emit(event);\n }\n hoverDay(cell, isHovered) {\n this.onHover.emit({ cell, isHovered });\n }\n}\nBsDaysCalendarViewComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <!--days matrix-->\n <table role=\"grid\" class=\"days weeks\">\n <thead>\n <tr>\n <!--if show weeks-->\n <th *ngIf=\"options.showWeekNumbers\"></th>\n <th *ngFor=\"let weekday of calendar.weekdays; let i = index\"\n aria-label=\"weekday\">{{ calendar.weekdays[i] }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of calendar.weeks; let i = index\">\n <td class=\"week\" *ngIf=\"options.showWeekNumbers\">\n <span>{{ calendar.weekNumbers[i] }}</span>\n </td>\n <td *ngFor=\"let day of week.days\" role=\"gridcell\">\n <span bsDatepickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n\n </bs-calendar-layout>\n `\n },] },\n];\n/** @nocollapse */\nBsDaysCalendarViewComponent.ctorParameters = () => [];\nBsDaysCalendarViewComponent.propDecorators = {\n 'calendar': [{ type: Input },],\n 'options': [{ type: Input },],\n 'onNavigate': [{ type: Output },],\n 'onViewMode': [{ type: Output },],\n 'onSelect': [{ type: Output },],\n 'onHover': [{ type: Output },],\n};\n//# sourceMappingURL=bs-days-calendar-view.component.js.map","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BsNavigationDirection } from '../../models/index';\nexport class BsMonthCalendarViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step } });\n }\n viewMonth(month) {\n this.onSelect.emit(month);\n }\n hoverMonth(cell, isHovered) {\n this.onHover.emit({ cell, isHovered });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n}\nBsMonthCalendarViewComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-month-calendar-view',\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"months\">\n <tbody>\n <tr *ngFor=\"let row of calendar.months\">\n <td *ngFor=\"let month of row\" role=\"gridcell\"\n (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\"\n (mouseleave)=\"hoverMonth(month, false)\"\n [class.disabled]=\"month.isDisabled\"\n [class.is-highlighted]=\"month.isHovered\">\n <span>{{ month.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </bs-calendar-layout>\n `\n },] },\n];\n/** @nocollapse */\nBsMonthCalendarViewComponent.ctorParameters = () => [];\nBsMonthCalendarViewComponent.propDecorators = {\n 'calendar': [{ type: Input },],\n 'onNavigate': [{ type: Output },],\n 'onViewMode': [{ type: Output },],\n 'onSelect': [{ type: Output },],\n 'onHover': [{ type: Output },],\n};\n//# sourceMappingURL=bs-months-calendar-view.component.js.map","// tslint:disable:max-line-length\nimport { Component } from '@angular/core';\nexport class BsTimepickerViewComponent {\n constructor() {\n this.ampm = 'ok';\n this.hours = 0;\n this.minutes = 0;\n }\n}\nBsTimepickerViewComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-timepicker',\n template: `\n <div class=\"bs-timepicker-container\">\n <div class=\"bs-timepicker-controls\">\n <button class=\"bs-decrease\">-</button>\n <input type=\"text\" [value]=\"hours\" placeholder=\"00\">\n <button class=\"bs-increase\">+</button>\n </div>\n <div class=\"bs-timepicker-controls\">\n <button class=\"bs-decrease\">-</button>\n <input type=\"text\" [value]=\"minutes\" placeholder=\"00\">\n <button class=\"bs-increase\">+</button>\n </div>\n <button class=\"switch-time-format\">{{ ampm }}\n <img\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\"\n alt=\"\">\n </button>\n </div>\n `\n },] },\n];\n/** @nocollapse */\nBsTimepickerViewComponent.ctorParameters = () => [];\n//# sourceMappingURL=bs-timepicker-view.component.js.map","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { yearsPerCalendar } from '../../engine/format-years-calendar';\nimport { BsNavigationDirection } from '../../models/index';\nexport class BsYearsCalendarViewComponent {\n constructor() {\n this.onNavigate = new EventEmitter();\n this.onViewMode = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onHover = new EventEmitter();\n }\n navigateTo(event) {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n }\n viewYear(year) {\n this.onSelect.emit(year);\n }\n hoverYear(cell, isHovered) {\n this.onHover.emit({ cell, isHovered });\n }\n changeViewMode(event) {\n this.onViewMode.emit(event);\n }\n}\nBsYearsCalendarViewComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-years-calendar-view',\n template: `\n <bs-calendar-layout>\n <bs-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></bs-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"years\">\n <tbody>\n <tr *ngFor=\"let row of calendar.years\">\n <td *ngFor=\"let year of row\" role=\"gridcell\"\n (click)=\"viewYear(year)\"\n (mouseenter)=\"hoverYear(year, true)\"\n (mouseleave)=\"hoverYear(year, false)\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\">\n <span>{{ year.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </bs-calendar-layout>\n `\n },] },\n];\n/** @nocollapse */\nBsYearsCalendarViewComponent.ctorParameters = () => [];\nBsYearsCalendarViewComponent.propDecorators = {\n 'calendar': [{ type: Input },],\n 'onNavigate': [{ type: Output },],\n 'onViewMode': [{ type: Output },],\n 'onSelect': [{ type: Output },],\n 'onHover': [{ type: Output },],\n};\n//# sourceMappingURL=bs-years-calendar-view.component.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ComponentLoaderFactory } from '../component-loader/component-loader.factory';\nimport { PositioningService } from '../positioning/positioning.service';\nimport { warnOnce } from '../utils/warn-once';\nimport { BsDatepickerInputDirective } from './bs-datepicker-input.directive';\nimport { BsDatepickerDirective } from './bs-datepicker.component';\nimport { BsDatepickerConfig } from './bs-datepicker.config';\nimport { BsDaterangepickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { BsDaterangepickerDirective } from './bs-daterangepicker.component';\nimport { BsDaterangepickerConfig } from './bs-daterangepicker.config';\nimport { BsLocaleService } from './bs-locale.service';\nimport { BsDatepickerActions } from './reducer/bs-datepicker.actions';\nimport { BsDatepickerEffects } from './reducer/bs-datepicker.effects';\nimport { BsDatepickerStore } from './reducer/bs-datepicker.store';\nimport { BsCalendarLayoutComponent } from './themes/bs/bs-calendar-layout.component';\nimport { BsCurrentDateViewComponent } from './themes/bs/bs-current-date-view.component';\nimport { BsCustomDatesViewComponent } from './themes/bs/bs-custom-dates-view.component';\nimport { BsDatepickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { BsDatepickerDayDecoratorComponent } from './themes/bs/bs-datepicker-day-decorator.directive';\nimport { BsDatepickerNavigationViewComponent } from './themes/bs/bs-datepicker-navigation-view.component';\nimport { BsDaterangepickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { BsDaysCalendarViewComponent } from './themes/bs/bs-days-calendar-view.component';\nimport { BsMonthCalendarViewComponent } from './themes/bs/bs-months-calendar-view.component';\nimport { BsTimepickerViewComponent } from './themes/bs/bs-timepicker-view.component';\nimport { BsYearsCalendarViewComponent } from './themes/bs/bs-years-calendar-view.component';\nconst _exports = [\n BsDatepickerContainerComponent,\n BsDaterangepickerContainerComponent,\n BsDatepickerDirective,\n BsDatepickerInputDirective,\n BsDaterangepickerInputDirective,\n BsDaterangepickerDirective\n];\nexport class BsDatepickerModule {\n constructor() {\n warnOnce(`BsDatepickerModule is under development,\n BREAKING CHANGES are possible,\n PLEASE, read changelog`);\n }\n static forRoot() {\n return {\n ngModule: BsDatepickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDatepickerStore,\n BsDatepickerActions,\n BsDatepickerConfig,\n BsDaterangepickerConfig,\n BsDatepickerEffects,\n BsLocaleService\n ]\n };\n }\n}\nBsDatepickerModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [\n BsDatepickerDayDecoratorComponent,\n BsCurrentDateViewComponent,\n BsDatepickerNavigationViewComponent,\n BsTimepickerViewComponent,\n BsCalendarLayoutComponent,\n BsDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsYearsCalendarViewComponent,\n BsCustomDatesViewComponent,\n ..._exports\n ],\n entryComponents: [\n BsDatepickerContainerComponent,\n BsDaterangepickerContainerComponent\n ],\n exports: _exports\n },] },\n];\n/** @nocollapse */\nBsDatepickerModule.ctorParameters = () => [];\n//# sourceMappingURL=bs-datepicker.module.js.map","import { Injectable } from '@angular/core';\nexport class BsModalRef {\n constructor() {\n /**\n * Hides the modal\n */\n this.hide = Function;\n }\n}\nBsModalRef.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsModalRef.ctorParameters = () => [];\n//# sourceMappingURL=bs-modal-ref.service.js.map","export class ModalBackdropOptions {\n constructor(options) {\n this.animate = true;\n Object.assign(this, options);\n }\n}\n//# sourceMappingURL=modal-backdrop.options.js.map","import { Injectable } from '@angular/core';\nexport class ModalOptions {\n}\nModalOptions.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nModalOptions.ctorParameters = () => [];\nexport const modalConfigDefaults = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: false,\n ignoreBackdropClick: false,\n class: '',\n animated: true,\n initialState: {}\n};\nexport const CLASS_NAME = {\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n IN: 'in',\n SHOW: 'show' // bs4\n};\nexport const SELECTOR = {\n DIALOG: '.modal-dialog',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed'\n};\nexport const TRANSITION_DURATIONS = {\n MODAL: 300,\n BACKDROP: 150\n};\nexport const DISMISS_REASONS = {\n BACKRDOP: 'backdrop-click',\n ESC: 'esc'\n};\n//# sourceMappingURL=modal-options.class.js.map","import { Component, ElementRef, HostListener, Renderer2 } from '@angular/core';\nimport { CLASS_NAME, DISMISS_REASONS, ModalOptions, TRANSITION_DURATIONS } from './modal-options.class';\nimport { isBs3 } from '../utils/theme-provider';\nexport class ModalContainerComponent {\n constructor(options, _element, _renderer) {\n this._element = _element;\n this._renderer = _renderer;\n this.isShown = false;\n this.isModalHiding = false;\n this.config = Object.assign({}, options);\n }\n ngOnInit() {\n if (this.isAnimated) {\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.FADE);\n }\n this._renderer.setStyle(this._element.nativeElement, 'display', 'block');\n setTimeout(() => {\n this.isShown = true;\n this._renderer.addClass(this._element.nativeElement, isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW);\n }, this.isAnimated ? TRANSITION_DURATIONS.BACKDROP : 0);\n if (document && document.body) {\n if (this.bsModalService.getModalsCount() === 1) {\n this.bsModalService.checkScrollbar();\n this.bsModalService.setScrollbar();\n }\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n }\n if (this._element.nativeElement) {\n this._element.nativeElement.focus();\n }\n }\n onClick(event) {\n if (this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n event.target !== this._element.nativeElement) {\n return;\n }\n this.bsModalService.setDismissReason(DISMISS_REASONS.BACKRDOP);\n this.hide();\n }\n onEsc(event) {\n if (event.keyCode === 27) {\n event.preventDefault();\n }\n if (this.config.keyboard &&\n this.level === this.bsModalService.getModalsCount()) {\n this.bsModalService.setDismissReason(DISMISS_REASONS.ESC);\n this.hide();\n }\n }\n ngOnDestroy() {\n if (this.isShown) {\n this.hide();\n }\n }\n hide() {\n if (this.isModalHiding || !this.isShown) {\n return;\n }\n this.isModalHiding = true;\n this._renderer.removeClass(this._element.nativeElement, isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW);\n setTimeout(() => {\n this.isShown = false;\n if (document &&\n document.body &&\n this.bsModalService.getModalsCount() === 1) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n }\n this.bsModalService.hide(this.level);\n this.isModalHiding = false;\n }, this.isAnimated ? TRANSITION_DURATIONS.MODAL : 0);\n }\n}\nModalContainerComponent.decorators = [\n { type: Component, args: [{\n selector: 'modal-container',\n template: `\n <div [class]=\"'modal-dialog' + (config.class ? ' ' + config.class : '')\" role=\"document\">\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n host: {\n class: 'modal',\n role: 'dialog',\n tabindex: '-1'\n }\n },] },\n];\n/** @nocollapse */\nModalContainerComponent.ctorParameters = () => [\n { type: ModalOptions, },\n { type: ElementRef, },\n { type: Renderer2, },\n];\nModalContainerComponent.propDecorators = {\n 'onClick': [{ type: HostListener, args: ['click', ['$event'],] },],\n 'onEsc': [{ type: HostListener, args: ['window:keydown.esc', ['$event'],] },],\n};\n//# sourceMappingURL=modal-container.component.js.map","import { Component, ElementRef, Renderer2 } from '@angular/core';\nimport { CLASS_NAME } from './modal-options.class';\nimport { isBs3 } from '../utils/theme-provider';\nimport { Utils } from '../utils/utils.class';\n/** This component will be added as background layout for modals if enabled */\nexport class ModalBackdropComponent {\n constructor(element, renderer) {\n this._isShown = false;\n this.element = element;\n this.renderer = renderer;\n }\n get isAnimated() {\n return this._isAnimated;\n }\n set isAnimated(value) {\n this._isAnimated = value;\n // this.renderer.setElementClass(this.element.nativeElement, `${ClassName.FADE}`, value);\n }\n get isShown() {\n return this._isShown;\n }\n set isShown(value) {\n this._isShown = value;\n if (value) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.IN}`);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, `${CLASS_NAME.IN}`);\n }\n if (!isBs3()) {\n if (value) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.SHOW}`);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, `${CLASS_NAME.SHOW}`);\n }\n }\n }\n ngOnInit() {\n if (this.isAnimated) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.FADE}`);\n Utils.reflow(this.element.nativeElement);\n }\n this.isShown = true;\n }\n}\nModalBackdropComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-modal-backdrop',\n template: ' ',\n host: { class: CLASS_NAME.BACKDROP }\n },] },\n];\n/** @nocollapse */\nModalBackdropComponent.ctorParameters = () => [\n { type: ElementRef, },\n { type: Renderer2, },\n];\n//# sourceMappingURL=modal-backdrop.component.js.map","/* tslint:disable:max-file-line-count */\n// todo: should we support enforce focus in?\n// todo: in original bs there are was a way to prevent modal from showing\n// todo: original modal had resize events\nimport { Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';\nimport { document, window } from '../utils/facade/browser';\nimport { isBs3 } from '../utils/theme-provider';\nimport { Utils } from '../utils/utils.class';\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { CLASS_NAME, DISMISS_REASONS, modalConfigDefaults } from './modal-options.class';\nimport { ComponentLoaderFactory } from '../component-loader/component-loader.factory';\nconst TRANSITION_DURATION = 300;\nconst BACKDROP_TRANSITION_DURATION = 150;\n/** Mark any code with directive to show it's content in modal */\nexport class ModalDirective {\n constructor(_element, _viewContainerRef, _renderer, clf) {\n this._element = _element;\n this._renderer = _renderer;\n /** This event fires immediately when the `show` instance method is called. */\n this.onShow = new EventEmitter();\n /** This event is fired when the modal has been made visible to the user\n * (will wait for CSS transitions to complete)\n */\n this.onShown = new EventEmitter();\n /** This event is fired immediately when\n * the hide instance method has been called.\n */\n this.onHide = new EventEmitter();\n /** This event is fired when the modal has finished being\n * hidden from the user (will wait for CSS transitions to complete).\n */\n this.onHidden = new EventEmitter();\n this._isShown = false;\n this.isBodyOverflowing = false;\n this.originalBodyPadding = 0;\n this.scrollbarWidth = 0;\n this.timerHideModal = 0;\n this.timerRmBackDrop = 0;\n this.isNested = false;\n this._backdrop = clf.createLoader(_element, _viewContainerRef, _renderer);\n }\n /** allows to set modal configuration via element property */\n set config(conf) {\n this._config = this.getConfig(conf);\n }\n get config() {\n return this._config;\n }\n get isShown() {\n return this._isShown;\n }\n onClick(event) {\n if (this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n event.target !== this._element.nativeElement) {\n return;\n }\n this.dismissReason = DISMISS_REASONS.BACKRDOP;\n this.hide(event);\n }\n // todo: consider preventing default and stopping propagation\n onEsc(event) {\n if (event.keyCode === 27) {\n event.preventDefault();\n }\n if (this.config.keyboard) {\n this.dismissReason = DISMISS_REASONS.ESC;\n this.hide();\n }\n }\n ngOnDestroy() {\n this.config = void 0;\n if (this._isShown) {\n this._isShown = false;\n this.hideModal();\n this._backdrop.dispose();\n }\n }\n ngOnInit() {\n this._config = this._config || this.getConfig();\n setTimeout(() => {\n if (this._config.show) {\n this.show();\n }\n }, 0);\n }\n /* Public methods */\n /** Allows to manually toggle modal visibility */\n toggle() {\n return this._isShown ? this.hide() : this.show();\n }\n /** Allows to manually open modal */\n show() {\n this.dismissReason = null;\n this.onShow.emit(this);\n if (this._isShown) {\n return;\n }\n clearTimeout(this.timerHideModal);\n clearTimeout(this.timerRmBackDrop);\n this._isShown = true;\n this.checkScrollbar();\n this.setScrollbar();\n if (document && document.body) {\n if (document.body.classList.contains(CLASS_NAME.OPEN)) {\n this.isNested = true;\n }\n else {\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n }\n }\n this.showBackdrop(() => {\n this.showElement();\n });\n }\n /** Allows to manually close modal */\n hide(event) {\n if (event) {\n event.preventDefault();\n }\n this.onHide.emit(this);\n // todo: add an option to prevent hiding\n if (!this._isShown) {\n return;\n }\n clearTimeout(this.timerHideModal);\n clearTimeout(this.timerRmBackDrop);\n this._isShown = false;\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n // this._addClassIn = false;\n if (this._config.animated) {\n this.timerHideModal = setTimeout(() => this.hideModal(), TRANSITION_DURATION);\n }\n else {\n this.hideModal();\n }\n }\n /** Private methods @internal */\n getConfig(config) {\n return Object.assign({}, modalConfigDefaults, config);\n }\n /**\n * Show dialog\n * @internal\n */\n showElement() {\n // todo: replace this with component loader usage\n if (!this._element.nativeElement.parentNode ||\n this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // don't move modals dom position\n if (document && document.body) {\n document.body.appendChild(this._element.nativeElement);\n }\n }\n this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'false');\n this._renderer.setStyle(this._element.nativeElement, 'display', 'block');\n this._renderer.setProperty(this._element.nativeElement, 'scrollTop', 0);\n if (this._config.animated) {\n Utils.reflow(this._element.nativeElement);\n }\n // this._addClassIn = true;\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.nativeElement.focus();\n }\n this.onShown.emit(this);\n };\n if (this._config.animated) {\n setTimeout(transitionComplete, TRANSITION_DURATION);\n }\n else {\n transitionComplete();\n }\n }\n /** @internal */\n hideModal() {\n this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'true');\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n this.showBackdrop(() => {\n if (!this.isNested) {\n if (document && document.body) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n }\n this.resetScrollbar();\n }\n this.resetAdjustments();\n this.focusOtherModal();\n this.onHidden.emit(this);\n });\n }\n // todo: original show was calling a callback when done, but we can use\n // promise\n /** @internal */\n showBackdrop(callback) {\n if (this._isShown &&\n this.config.backdrop &&\n (!this.backdrop || !this.backdrop.instance.isShown)) {\n this.removeBackdrop();\n this._backdrop\n .attach(ModalBackdropComponent)\n .to('body')\n .show({ isAnimated: this._config.animated });\n this.backdrop = this._backdrop._componentRef;\n if (!callback) {\n return;\n }\n if (!this._config.animated) {\n callback();\n return;\n }\n setTimeout(callback, BACKDROP_TRANSITION_DURATION);\n }\n else if (!this._isShown && this.backdrop) {\n this.backdrop.instance.isShown = false;\n const callbackRemove = () => {\n this.removeBackdrop();\n if (callback) {\n callback();\n }\n };\n if (this.backdrop.instance.isAnimated) {\n this.timerRmBackDrop = setTimeout(callbackRemove, BACKDROP_TRANSITION_DURATION);\n }\n else {\n callbackRemove();\n }\n }\n else if (callback) {\n callback();\n }\n }\n /** @internal */\n removeBackdrop() {\n this._backdrop.hide();\n }\n /** Events tricks */\n // no need for it\n // protected setEscapeEvent():void {\n // if (this._isShown && this._config.keyboard) {\n // $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n // if (event.which === 27) {\n // this.hide()\n // }\n // })\n //\n // } else if (!this._isShown) {\n // $(this._element).off(Event.KEYDOWN_DISMISS)\n // }\n // }\n // protected setResizeEvent():void {\n // console.log(this.renderer.listenGlobal('', Event.RESIZE));\n // if (this._isShown) {\n // $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this))\n // } else {\n // $(window).off(Event.RESIZE)\n // }\n // }\n focusOtherModal() {\n if (this._element.nativeElement.parentElement == null)\n return;\n const otherOpenedModals = this._element.nativeElement.parentElement.querySelectorAll('.in[bsModal]');\n if (!otherOpenedModals.length) {\n return;\n }\n otherOpenedModals[otherOpenedModals.length - 1].focus();\n }\n /** @internal */\n resetAdjustments() {\n this._renderer.setStyle(this._element.nativeElement, 'paddingLeft', '');\n this._renderer.setStyle(this._element.nativeElement, 'paddingRight', '');\n }\n /** Scroll bar tricks */\n /** @internal */\n checkScrollbar() {\n this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n setScrollbar() {\n if (!document) {\n return;\n }\n this.originalBodyPadding = parseInt(window\n .getComputedStyle(document.body)\n .getPropertyValue('padding-right') || 0, 10);\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n resetScrollbar() {\n document.body.style.paddingRight = this.originalBodyPadding + 'px';\n }\n // thx d.walsh\n getScrollbarWidth() {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n return scrollbarWidth;\n }\n}\nModalDirective.decorators = [\n { type: Directive, args: [{\n selector: '[bsModal]',\n exportAs: 'bs-modal'\n },] },\n];\n/** @nocollapse */\nModalDirective.ctorParameters = () => [\n { type: ElementRef, },\n { type: ViewContainerRef, },\n { type: Renderer2, },\n { type: ComponentLoaderFactory, },\n];\nModalDirective.propDecorators = {\n 'config': [{ type: Input },],\n 'onShow': [{ type: Output },],\n 'onShown': [{ type: Output },],\n 'onHide': [{ type: Output },],\n 'onHidden': [{ type: Output },],\n 'onClick': [{ type: HostListener, args: ['click', ['$event'],] },],\n 'onEsc': [{ type: HostListener, args: ['window:keydown.esc', ['$event'],] },],\n};\n//# sourceMappingURL=modal.directive.js.map","import { Injectable, EventEmitter, RendererFactory2 } from '@angular/core';\nimport { ComponentLoaderFactory } from '../component-loader/component-loader.factory';\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalContainerComponent } from './modal-container.component';\nimport { CLASS_NAME, modalConfigDefaults, ModalOptions, TRANSITION_DURATIONS } from './modal-options.class';\nimport { BsModalRef } from './bs-modal-ref.service';\nexport class BsModalService {\n constructor(rendererFactory, clf) {\n this.clf = clf;\n // constructor props\n this.config = modalConfigDefaults;\n this.onShow = new EventEmitter();\n this.onShown = new EventEmitter();\n this.onHide = new EventEmitter();\n this.onHidden = new EventEmitter();\n this.isBodyOverflowing = false;\n this.originalBodyPadding = 0;\n this.scrollbarWidth = 0;\n this.modalsCount = 0;\n this.lastDismissReason = '';\n this.loaders = [];\n this._backdropLoader = this.clf.createLoader(null, null, null);\n this._renderer = rendererFactory.createRenderer(null, null);\n }\n /** Shows a modal */\n show(content, config) {\n this.modalsCount++;\n this._createLoaders();\n this.config = Object.assign({}, modalConfigDefaults, config);\n this._showBackdrop();\n this.lastDismissReason = null;\n return this._showModal(content);\n }\n hide(level) {\n if (this.modalsCount === 1) {\n this._hideBackdrop();\n this.resetScrollbar();\n }\n this.modalsCount = this.modalsCount >= 1 ? this.modalsCount - 1 : 0;\n setTimeout(() => {\n this._hideModal(level);\n this.removeLoaders(level);\n }, this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0);\n }\n _showBackdrop() {\n const isBackdropEnabled = this.config.backdrop || this.config.backdrop === 'static';\n const isBackdropInDOM = !this.backdropRef || !this.backdropRef.instance.isShown;\n if (this.modalsCount === 1) {\n this.removeBackdrop();\n if (isBackdropEnabled && isBackdropInDOM) {\n this._backdropLoader\n .attach(ModalBackdropComponent)\n .to('body')\n .show({ isAnimated: this.config.animated });\n this.backdropRef = this._backdropLoader._componentRef;\n }\n }\n }\n _hideBackdrop() {\n if (!this.backdropRef) {\n return;\n }\n this.backdropRef.instance.isShown = false;\n const duration = this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0;\n setTimeout(() => this.removeBackdrop(), duration);\n }\n _showModal(content) {\n const modalLoader = this.loaders[this.loaders.length - 1];\n const bsModalRef = new BsModalRef();\n const modalContainerRef = modalLoader\n .provide({ provide: ModalOptions, useValue: this.config })\n .provide({ provide: BsModalRef, useValue: bsModalRef })\n .attach(ModalContainerComponent)\n .to('body')\n .show({ content, isAnimated: this.config.animated, initialState: this.config.initialState, bsModalService: this });\n modalContainerRef.instance.level = this.getModalsCount();\n bsModalRef.hide = () => {\n modalContainerRef.instance.hide();\n };\n bsModalRef.content = modalLoader.getInnerComponent() || null;\n return bsModalRef;\n }\n _hideModal(level) {\n const modalLoader = this.loaders[level - 1];\n if (modalLoader) {\n modalLoader.hide();\n }\n }\n getModalsCount() {\n return this.modalsCount;\n }\n setDismissReason(reason) {\n this.lastDismissReason = reason;\n }\n removeBackdrop() {\n this._backdropLoader.hide();\n this.backdropRef = null;\n }\n /** AFTER PR MERGE MODAL.COMPONENT WILL BE USING THIS CODE */\n /** Scroll bar tricks */\n /** @internal */\n checkScrollbar() {\n this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n setScrollbar() {\n if (!document) {\n return;\n }\n this.originalBodyPadding = parseInt(window\n .getComputedStyle(document.body)\n .getPropertyValue('padding-right') || '0', 10);\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n resetScrollbar() {\n document.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n // thx d.walsh\n getScrollbarWidth() {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n return scrollbarWidth;\n }\n _createLoaders() {\n const loader = this.clf.createLoader(null, null, null);\n this.copyEvent(loader.onBeforeShow, this.onShow);\n this.copyEvent(loader.onShown, this.onShown);\n this.copyEvent(loader.onBeforeHide, this.onHide);\n this.copyEvent(loader.onHidden, this.onHidden);\n this.loaders.push(loader);\n }\n removeLoaders(level) {\n this.loaders.splice(level - 1, 1);\n this.loaders.forEach((loader, i) => {\n loader.instance.level = i + 1;\n });\n }\n copyEvent(from, to) {\n from.subscribe(() => {\n to.emit(this.lastDismissReason);\n });\n }\n}\nBsModalService.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsModalService.ctorParameters = () => [\n { type: RendererFactory2, },\n { type: ComponentLoaderFactory, },\n];\n//# sourceMappingURL=bs-modal.service.js.map","import { NgModule } from '@angular/core';\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalDirective } from './modal.directive';\nimport { PositioningService } from '../positioning/index';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { ModalContainerComponent } from './modal-container.component';\nimport { BsModalService } from './bs-modal.service';\nexport class ModalModule {\n static forRoot() {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n}\nModalModule.decorators = [\n { type: NgModule, args: [{\n declarations: [\n ModalBackdropComponent,\n ModalDirective,\n ModalContainerComponent\n ],\n exports: [ModalBackdropComponent, ModalDirective],\n entryComponents: [ModalBackdropComponent, ModalContainerComponent]\n },] },\n];\n/** @nocollapse */\nModalModule.ctorParameters = () => [];\n//# sourceMappingURL=modal.module.js.map","import { Injectable } from '@angular/core';\n/** Default dropdown configuration */\nexport class BsDropdownConfig {\n constructor() {\n /** default dropdown auto closing behavior */\n this.autoClose = true;\n }\n}\nBsDropdownConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsDropdownConfig.ctorParameters = () => [];\n//# sourceMappingURL=bs-dropdown.config.js.map","import { EventEmitter, Injectable } from '@angular/core';\nexport class BsDropdownState {\n constructor() {\n this.direction = 'down';\n this.isOpenChange = new EventEmitter();\n this.isDisabledChange = new EventEmitter();\n this.toggleClick = new EventEmitter();\n this.dropdownMenu = new Promise(resolve => {\n this.resolveDropdownMenu = resolve;\n });\n }\n}\nBsDropdownState.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBsDropdownState.ctorParameters = () => [];\n//# sourceMappingURL=bs-dropdown.state.js.map","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';\nimport { BsDropdownState } from './bs-dropdown.state';\nimport { isBs3 } from '../utils/theme-provider';\nexport class BsDropdownContainerComponent {\n constructor(_state, cd, _renderer, _element) {\n this._state = _state;\n this.cd = cd;\n this._renderer = _renderer;\n this.isOpen = false;\n this._subscription = _state.isOpenChange.subscribe((value) => {\n this.isOpen = value;\n const dropdown = _element.nativeElement.querySelector('.dropdown-menu');\n if (dropdown && !isBs3()) {\n this._renderer.addClass(dropdown, 'show');\n if (dropdown.classList.contains('dropdown-menu-right')) {\n this._renderer.setStyle(dropdown, 'left', 'auto');\n this._renderer.setStyle(dropdown, 'right', '0');\n }\n if (this.direction === 'up') {\n this._renderer.setStyle(dropdown, 'top', 'auto');\n this._renderer.setStyle(dropdown, 'transform', 'translateY(-101%)');\n }\n }\n this.cd.markForCheck();\n this.cd.detectChanges();\n });\n }\n get direction() {\n return this._state.direction;\n }\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\nBsDropdownContainerComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-dropdown-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n style: 'display:block;position: absolute;'\n },\n template: `\n <div [class.dropup]=\"direction === 'up'\"\n [class.dropdown]=\"direction === 'down'\"\n [class.show]=\"isOpen\"\n [class.open]=\"isOpen\"><ng-content></ng-content></div>\n `\n },] },\n];\n/** @nocollapse */\nBsDropdownContainerComponent.ctorParameters = () => [\n { type: BsDropdownState, },\n { type: ChangeDetectorRef, },\n { type: Renderer2, },\n { type: ElementRef, },\n];\n//# sourceMappingURL=bs-dropdown-container.component.js.map","// tslint:disable:max-file-line-count\nimport { Directive, ElementRef, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';\nimport 'rxjs/add/operator/filter';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { BsDropdownConfig } from './bs-dropdown.config';\nimport { BsDropdownContainerComponent } from './bs-dropdown-container.component';\nimport { BsDropdownState } from './bs-dropdown.state';\nimport { isBs3 } from '../utils/theme-provider';\nexport class BsDropdownDirective {\n constructor(_elementRef, _renderer, _viewContainerRef, _cis, _config, _state) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._viewContainerRef = _viewContainerRef;\n this._cis = _cis;\n this._config = _config;\n this._state = _state;\n // todo: move to component loader\n this._isInlineOpen = false;\n this._subscriptions = [];\n this._isInited = false;\n // set initial dropdown state from config\n this._state.autoClose = this._config.autoClose;\n // create dropdown component loader\n this._dropdown = this._cis\n .createLoader(this._elementRef, this._viewContainerRef, this._renderer)\n .provide({ provide: BsDropdownState, useValue: this._state });\n this.onShown = this._dropdown.onShown;\n this.onHidden = this._dropdown.onHidden;\n this.isOpenChange = this._state.isOpenChange;\n }\n /**\n * Indicates that dropdown will be closed on item or document click,\n * and after pressing ESC\n */\n set autoClose(value) {\n this._state.autoClose = value;\n }\n get autoClose() {\n return this._state.autoClose;\n }\n /**\n * Disables dropdown toggle and hides dropdown menu if opened\n */\n set isDisabled(value) {\n this._isDisabled = value;\n this._state.isDisabledChange.emit(value);\n if (value) {\n this.hide();\n }\n }\n get isDisabled() {\n return this._isDisabled;\n }\n /**\n * Returns whether or not the popover is currently being shown\n */\n get isOpen() {\n if (this._showInline) {\n return this._isInlineOpen;\n }\n return this._dropdown.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n get isBs4() {\n return !isBs3();\n }\n get _showInline() {\n return !this.container;\n }\n ngOnInit() {\n // fix: seems there are an issue with `routerLinkActive`\n // which result in duplicated call ngOnInit without call to ngOnDestroy\n // read more: https://github.com/valor-software/ngx-bootstrap/issues/1885\n if (this._isInited) {\n return;\n }\n this._isInited = true;\n // attach DOM listeners\n this._dropdown.listen({\n // because of dropdown inline mode\n outsideClick: false,\n triggers: this.triggers,\n show: () => this.show()\n });\n // toggle visibility on toggle element click\n this._subscriptions.push(this._state.toggleClick.subscribe((value) => this.toggle(value)));\n // hide dropdown if set disabled while opened\n this._subscriptions.push(this._state.isDisabledChange\n .filter((value) => value)\n .subscribe((value) => this.hide()));\n }\n /**\n * Opens an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n show() {\n if (this.isOpen || this.isDisabled) {\n return;\n }\n if (this._showInline) {\n if (!this._inlinedMenu) {\n this._state.dropdownMenu.then((dropdownMenu) => {\n this._dropdown.attachInline(dropdownMenu.viewContainer, dropdownMenu.templateRef);\n this._inlinedMenu = this._dropdown._inlineViewRef;\n this.addBs4Polyfills();\n })\n .catch();\n }\n this.addBs4Polyfills();\n this._isInlineOpen = true;\n this.onShown.emit(true);\n this._state.isOpenChange.emit(true);\n return;\n }\n this._state.dropdownMenu.then(dropdownMenu => {\n // check direction in which dropdown should be opened\n const _dropup = this.dropup ||\n (typeof this.dropup !== 'undefined' && this.dropup);\n this._state.direction = _dropup ? 'up' : 'down';\n const _placement = this.placement || (_dropup ? 'top left' : 'bottom left');\n // show dropdown\n this._dropdown\n .attach(BsDropdownContainerComponent)\n .to(this.container)\n .position({ attachment: _placement })\n .show({\n content: dropdownMenu.templateRef,\n placement: _placement\n });\n this._state.isOpenChange.emit(true);\n })\n .catch();\n }\n /**\n * Closes an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n hide() {\n if (!this.isOpen) {\n return;\n }\n if (this._showInline) {\n this.removeShowClass();\n this.removeDropupStyles();\n this._isInlineOpen = false;\n this.onHidden.emit(true);\n }\n else {\n this._dropdown.hide();\n }\n this._state.isOpenChange.emit(false);\n }\n /**\n * Toggles an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n toggle(value) {\n if (this.isOpen || !value) {\n return this.hide();\n }\n return this.show();\n }\n ngOnDestroy() {\n // clean up subscriptions and destroy dropdown\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._dropdown.dispose();\n }\n addBs4Polyfills() {\n if (!isBs3()) {\n this.addShowClass();\n this.checkRightAlignment();\n this.addDropupStyles();\n }\n }\n addShowClass() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.addClass(this._inlinedMenu.rootNodes[0], 'show');\n }\n }\n removeShowClass() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.removeClass(this._inlinedMenu.rootNodes[0], 'show');\n }\n }\n checkRightAlignment() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n const isRightAligned = this._inlinedMenu.rootNodes[0].classList.contains('dropdown-menu-right');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'left', isRightAligned ? 'auto' : '0');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'right', isRightAligned ? '0' : 'auto');\n }\n }\n addDropupStyles() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n // a little hack to not break support of bootstrap 4 beta\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'top', this.dropup ? 'auto' : '100%');\n this._renderer.setStyle(this._inlinedMenu.rootNodes[0], 'transform', this.dropup ? 'translateY(-101%)' : 'translateY(0)');\n }\n }\n removeDropupStyles() {\n if (this._inlinedMenu && this._inlinedMenu.rootNodes[0]) {\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'top');\n this._renderer.removeStyle(this._inlinedMenu.rootNodes[0], 'transform');\n }\n }\n}\nBsDropdownDirective.decorators = [\n { type: Directive, args: [{\n selector: '[bsDropdown],[dropdown]',\n exportAs: 'bs-dropdown',\n providers: [BsDropdownState],\n host: {\n '[class.dropup]': 'dropup',\n '[class.open]': 'isOpen',\n '[class.show]': 'isOpen && isBs4'\n }\n },] },\n];\n/** @nocollapse */\nBsDropdownDirective.ctorParameters = () => [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ViewContainerRef, },\n { type: ComponentLoaderFactory, },\n { type: BsDropdownConfig, },\n { type: BsDropdownState, },\n];\nBsDropdownDirective.propDecorators = {\n 'placement': [{ type: Input },],\n 'triggers': [{ type: Input },],\n 'container': [{ type: Input },],\n 'dropup': [{ type: Input },],\n 'autoClose': [{ type: Input },],\n 'isDisabled': [{ type: Input },],\n 'isOpen': [{ type: Input },],\n 'isOpenChange': [{ type: Output },],\n 'onShown': [{ type: Output },],\n 'onHidden': [{ type: Output },],\n};\n//# sourceMappingURL=bs-dropdown.directive.js.map","import { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BsDropdownState } from './bs-dropdown.state';\nexport class BsDropdownMenuDirective {\n constructor(_state, _viewContainer, _templateRef) {\n _state.resolveDropdownMenu({\n templateRef: _templateRef,\n viewContainer: _viewContainer\n });\n }\n}\nBsDropdownMenuDirective.decorators = [\n { type: Directive, args: [{\n selector: '[bsDropdownMenu],[dropdownMenu]',\n exportAs: 'bs-dropdown-menu'\n },] },\n];\n/** @nocollapse */\nBsDropdownMenuDirective.ctorParameters = () => [\n { type: BsDropdownState, },\n { type: ViewContainerRef, },\n { type: TemplateRef, },\n];\n//# sourceMappingURL=bs-dropdown-menu.directive.js.map","import { Directive, ElementRef, HostBinding, HostListener } from '@angular/core';\nimport { BsDropdownState } from './bs-dropdown.state';\nexport class BsDropdownToggleDirective {\n constructor(_state, _element) {\n this._state = _state;\n this._element = _element;\n this.isDisabled = null;\n this._subscriptions = [];\n // sync is open value with state\n this._subscriptions.push(this._state.isOpenChange.subscribe((value) => (this.isOpen = value)));\n // populate disabled state\n this._subscriptions.push(this._state.isDisabledChange.subscribe((value) => (this.isDisabled = value || null)));\n }\n onClick() {\n if (this.isDisabled) {\n return;\n }\n this._state.toggleClick.emit(true);\n }\n onDocumentClick(event) {\n if (this._state.autoClose &&\n event.button !== 2 &&\n !this._element.nativeElement.contains(event.target)) {\n this._state.toggleClick.emit(false);\n }\n }\n onEsc() {\n if (this._state.autoClose) {\n this._state.toggleClick.emit(false);\n }\n }\n ngOnDestroy() {\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n }\n}\nBsDropdownToggleDirective.decorators = [\n { type: Directive, args: [{\n selector: '[bsDropdownToggle],[dropdownToggle]',\n exportAs: 'bs-dropdown-toggle',\n host: {\n '[attr.aria-haspopup]': 'true'\n }\n },] },\n];\n/** @nocollapse */\nBsDropdownToggleDirective.ctorParameters = () => [\n { type: BsDropdownState, },\n { type: ElementRef, },\n];\nBsDropdownToggleDirective.propDecorators = {\n 'isDisabled': [{ type: HostBinding, args: ['attr.disabled',] },],\n 'isOpen': [{ type: HostBinding, args: ['attr.aria-expanded',] },],\n 'onClick': [{ type: HostListener, args: ['click', [],] },],\n 'onDocumentClick': [{ type: HostListener, args: ['document:click', ['$event'],] },],\n 'onEsc': [{ type: HostListener, args: ['keyup.esc',] },],\n};\n//# sourceMappingURL=bs-dropdown-toggle.directive.js.map","import { NgModule } from '@angular/core';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { PositioningService } from '../positioning/index';\nimport { BsDropdownContainerComponent } from './bs-dropdown-container.component';\nimport { BsDropdownMenuDirective } from './bs-dropdown-menu.directive';\nimport { BsDropdownToggleDirective } from './bs-dropdown-toggle.directive';\nimport { BsDropdownConfig } from './bs-dropdown.config';\nimport { BsDropdownDirective } from './bs-dropdown.directive';\nimport { BsDropdownState } from './bs-dropdown.state';\nexport class BsDropdownModule {\n static forRoot(config) {\n return {\n ngModule: BsDropdownModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n BsDropdownState,\n {\n provide: BsDropdownConfig,\n useValue: config ? config : { autoClose: true }\n }\n ]\n };\n }\n}\nBsDropdownModule.decorators = [\n { type: NgModule, args: [{\n declarations: [\n BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownContainerComponent,\n BsDropdownDirective\n ],\n exports: [\n BsDropdownMenuDirective,\n BsDropdownToggleDirective,\n BsDropdownDirective\n ],\n entryComponents: [BsDropdownContainerComponent]\n },] },\n];\n/** @nocollapse */\nBsDropdownModule.ctorParameters = () => [];\n//# sourceMappingURL=bs-dropdown.module.js.map","// todo: split\nimport { Injectable } from '@angular/core';\n/** Provides default values for Pagination and pager components */\nexport class PaginationConfig {\n constructor() {\n this.main = {\n maxSize: void 0,\n itemsPerPage: 10,\n boundaryLinks: false,\n directionLinks: true,\n firstText: 'First',\n previousText: 'Previous',\n nextText: 'Next',\n lastText: 'Last',\n pageBtnClass: '',\n rotate: true\n };\n this.pager = {\n itemsPerPage: 15,\n previousText: '« Previous',\n nextText: 'Next »',\n pageBtnClass: '',\n align: true\n };\n }\n}\nPaginationConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nPaginationConfig.ctorParameters = () => [];\n//# sourceMappingURL=pagination.config.js.map","import { Component, ElementRef, Renderer2, Input, Output, EventEmitter, forwardRef, ChangeDetectorRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { PaginationConfig } from './pagination.config';\nexport const PAGER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line\n useExisting: forwardRef(() => PagerComponent),\n multi: true\n};\nexport class PagerComponent {\n constructor(renderer, elementRef, paginationConfig, changeDetection) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.changeDetection = changeDetection;\n /** fired when total pages count changes, $event:number equals to total pages count */\n this.numPages = new EventEmitter();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to\n * object with current page index and number of items per page\n */\n this.pageChanged = new EventEmitter();\n this.onChange = Function.prototype;\n this.onTouched = Function.prototype;\n this.inited = false;\n this._page = 1;\n this.renderer = renderer;\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(Object.assign({}, paginationConfig.main, paginationConfig.pager));\n }\n }\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n get itemsPerPage() {\n return this._itemsPerPage;\n }\n set itemsPerPage(v) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n /** total number of items in all pages */\n get totalItems() {\n return this._totalItems;\n }\n set totalItems(v) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n get totalPages() {\n return this._totalPages;\n }\n set totalPages(v) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n set page(value) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n get page() {\n return this._page;\n }\n configureOptions(config) {\n this.config = Object.assign({}, config);\n }\n ngOnInit() {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n this.maxSize =\n typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;\n this.rotate =\n typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;\n this.boundaryLinks =\n typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks =\n typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass =\n typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n // base class\n this.itemsPerPage =\n typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n writeValue(value) {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n getText(key) {\n return this[`${key}Text`] || this.config[`${key}Text`];\n }\n noPrevious() {\n return this.page === 1;\n }\n noNext() {\n return this.page === this.totalPages;\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n selectPage(page, event) {\n if (event) {\n event.preventDefault();\n }\n if (!this.disabled) {\n if (event && event.target) {\n const target = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n // Create page object used in template\n makePage(num, text, active) {\n return { text, number: num, active };\n }\n getPages(currentPage, totalPages) {\n const pages = [];\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized = typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n }\n else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n return pages;\n }\n // base class\n calculateTotalPages() {\n const totalPages = this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n return Math.max(totalPages || 0, 1);\n }\n}\nPagerComponent.decorators = [\n { type: Component, args: [{\n selector: 'pager',\n template: \"<ul class=\\\"pager\\\"> <li [class.disabled]=\\\"noPrevious()\\\" [class.previous]=\\\"align\\\" [ngClass]=\\\"{'pull-right': align, 'float-right': align}\\\" class=\\\"{{ pageBtnClass }}\\\"> <a href (click)=\\\"selectPage(page - 1, $event)\\\">{{ getText('previous') }}</a> </li> <li [class.disabled]=\\\"noNext()\\\" [class.next]=\\\"align\\\" [ngClass]=\\\"{'pull-right': align, 'float-right': align}\\\" class=\\\"{{ pageBtnClass }}\\\"> <a href (click)=\\\"selectPage(page + 1, $event)\\\">{{ getText('next') }}</a> </li> </ul> \",\n providers: [PAGER_CONTROL_VALUE_ACCESSOR]\n },] },\n];\n/** @nocollapse */\nPagerComponent.ctorParameters = () => [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: PaginationConfig, },\n { type: ChangeDetectorRef, },\n];\nPagerComponent.propDecorators = {\n 'align': [{ type: Input },],\n 'maxSize': [{ type: Input },],\n 'boundaryLinks': [{ type: Input },],\n 'directionLinks': [{ type: Input },],\n 'firstText': [{ type: Input },],\n 'previousText': [{ type: Input },],\n 'nextText': [{ type: Input },],\n 'lastText': [{ type: Input },],\n 'rotate': [{ type: Input },],\n 'pageBtnClass': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'numPages': [{ type: Output },],\n 'pageChanged': [{ type: Output },],\n 'itemsPerPage': [{ type: Input },],\n 'totalItems': [{ type: Input },],\n};\n//# sourceMappingURL=pager.component.js.map","import { Component, ElementRef, EventEmitter, Input, Output, Renderer2, forwardRef, ChangeDetectorRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { PaginationConfig } from './pagination.config';\nexport const PAGINATION_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line\n useExisting: forwardRef(() => PaginationComponent),\n multi: true\n};\nexport class PaginationComponent {\n constructor(renderer, elementRef, paginationConfig, changeDetection) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.changeDetection = changeDetection;\n /** fired when total pages count changes, $event:number equals to total pages count */\n this.numPages = new EventEmitter();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to object\n * with current page index and number of items per page\n */\n this.pageChanged = new EventEmitter();\n this.onChange = Function.prototype;\n this.onTouched = Function.prototype;\n this.inited = false;\n this._page = 1;\n this.renderer = renderer;\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(paginationConfig.main);\n }\n }\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n get itemsPerPage() {\n return this._itemsPerPage;\n }\n set itemsPerPage(v) {\n this._itemsPerPage = v;\n this.totalPages = this.calculateTotalPages();\n }\n /** total number of items in all pages */\n get totalItems() {\n return this._totalItems;\n }\n set totalItems(v) {\n this._totalItems = v;\n this.totalPages = this.calculateTotalPages();\n }\n get totalPages() {\n return this._totalPages;\n }\n set totalPages(v) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n set page(value) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n get page() {\n return this._page;\n }\n configureOptions(config) {\n this.config = Object.assign({}, config);\n }\n ngOnInit() {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n this.maxSize =\n typeof this.maxSize !== 'undefined' ? this.maxSize : this.config.maxSize;\n this.rotate =\n typeof this.rotate !== 'undefined' ? this.rotate : this.config.rotate;\n this.boundaryLinks =\n typeof this.boundaryLinks !== 'undefined'\n ? this.boundaryLinks\n : this.config.boundaryLinks;\n this.directionLinks =\n typeof this.directionLinks !== 'undefined'\n ? this.directionLinks\n : this.config.directionLinks;\n this.pageBtnClass =\n typeof this.pageBtnClass !== 'undefined'\n ? this.pageBtnClass\n : this.config.pageBtnClass;\n // base class\n this.itemsPerPage =\n typeof this.itemsPerPage !== 'undefined'\n ? this.itemsPerPage\n : this.config.itemsPerPage;\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n writeValue(value) {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n getText(key) {\n return this[`${key}Text`] || this.config[`${key}Text`];\n }\n noPrevious() {\n return this.page === 1;\n }\n noNext() {\n return this.page === this.totalPages;\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n selectPage(page, event) {\n if (event) {\n event.preventDefault();\n }\n if (!this.disabled) {\n if (event && event.target) {\n const target = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n // Create page object used in template\n makePage(num, text, active) {\n return { text, number: num, active };\n }\n getPages(currentPage, totalPages) {\n const pages = [];\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized = typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;\n // recompute if maxSize\n if (isMaxSized) {\n if (this.rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);\n endPage = startPage + this.maxSize - 1;\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - this.maxSize + 1;\n }\n }\n else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize + 1;\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + this.maxSize - 1, totalPages);\n }\n }\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n // Add links to move between page sets\n if (isMaxSized && !this.rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n return pages;\n }\n // base class\n calculateTotalPages() {\n const totalPages = this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n return Math.max(totalPages || 0, 1);\n }\n}\nPaginationComponent.decorators = [\n { type: Component, args: [{\n selector: 'pagination',\n template: \"<ul class=\\\"pagination\\\" [ngClass]=\\\"classMap\\\"> <li class=\\\"pagination-first page-item\\\" *ngIf=\\\"boundaryLinks\\\" [class.disabled]=\\\"noPrevious()||disabled\\\"> <a class=\\\"page-link\\\" href (click)=\\\"selectPage(1, $event)\\\" [innerHTML]=\\\"getText('first')\\\"></a> </li> <li class=\\\"pagination-prev page-item\\\" *ngIf=\\\"directionLinks\\\" [class.disabled]=\\\"noPrevious()||disabled\\\"> <a class=\\\"page-link\\\" href (click)=\\\"selectPage(page - 1, $event)\\\" [innerHTML]=\\\"getText('previous')\\\"></a> </li> <li *ngFor=\\\"let pg of pages\\\" [class.active]=\\\"pg.active\\\" [class.disabled]=\\\"disabled&&!pg.active\\\" class=\\\"pagination-page page-item\\\"> <a class=\\\"page-link\\\" href (click)=\\\"selectPage(pg.number, $event)\\\" [innerHTML]=\\\"pg.text\\\"></a> </li> <li class=\\\"pagination-next page-item\\\" *ngIf=\\\"directionLinks\\\" [class.disabled]=\\\"noNext()||disabled\\\"> <a class=\\\"page-link\\\" href (click)=\\\"selectPage(page + 1, $event)\\\" [innerHTML]=\\\"getText('next')\\\"></a></li> <li class=\\\"pagination-last page-item\\\" *ngIf=\\\"boundaryLinks\\\" [class.disabled]=\\\"noNext()||disabled\\\"> <a class=\\\"page-link\\\" href (click)=\\\"selectPage(totalPages, $event)\\\" [innerHTML]=\\\"getText('last')\\\"></a></li> </ul> \",\n providers: [PAGINATION_CONTROL_VALUE_ACCESSOR]\n },] },\n];\n/** @nocollapse */\nPaginationComponent.ctorParameters = () => [\n { type: Renderer2, },\n { type: ElementRef, },\n { type: PaginationConfig, },\n { type: ChangeDetectorRef, },\n];\nPaginationComponent.propDecorators = {\n 'align': [{ type: Input },],\n 'maxSize': [{ type: Input },],\n 'boundaryLinks': [{ type: Input },],\n 'directionLinks': [{ type: Input },],\n 'firstText': [{ type: Input },],\n 'previousText': [{ type: Input },],\n 'nextText': [{ type: Input },],\n 'lastText': [{ type: Input },],\n 'rotate': [{ type: Input },],\n 'pageBtnClass': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'numPages': [{ type: Output },],\n 'pageChanged': [{ type: Output },],\n 'itemsPerPage': [{ type: Input },],\n 'totalItems': [{ type: Input },],\n};\n//# sourceMappingURL=pagination.component.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PaginationConfig } from './pagination.config';\nimport { PagerComponent } from './pager.component';\nimport { PaginationComponent } from './pagination.component';\nexport class PaginationModule {\n static forRoot() {\n return { ngModule: PaginationModule, providers: [PaginationConfig] };\n }\n}\nPaginationModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [PagerComponent, PaginationComponent],\n exports: [PagerComponent, PaginationComponent]\n },] },\n];\n/** @nocollapse */\nPaginationModule.ctorParameters = () => [];\n//# sourceMappingURL=pagination.module.js.map","import { Injectable } from '@angular/core';\nexport class ProgressbarConfig {\n constructor() {\n /** if `true` changing value of progress bar will be animated */\n this.animate = false;\n /** maximum total value of progress element */\n this.max = 100;\n }\n}\nProgressbarConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nProgressbarConfig.ctorParameters = () => [];\n//# sourceMappingURL=progressbar.config.js.map","import { Component, HostBinding, Input } from '@angular/core';\nimport { ProgressbarConfig } from './progressbar.config';\nimport { isBs3 } from '../utils/index';\nexport class ProgressbarComponent {\n constructor(config) {\n this.isStacked = false;\n this.addClass = true;\n this.bars = [];\n this._max = 100;\n Object.assign(this, config);\n }\n /** current value of progress bar. Could be a number or array of objects\n * like {\"value\":15,\"type\":\"info\",\"label\":\"15 %\"}\n */\n set value(value) {\n this.isStacked = Array.isArray(value);\n this._value = value;\n }\n get isBs3() {\n return isBs3();\n }\n /** maximum total value of progress element */\n get max() {\n return this._max;\n }\n set max(v) {\n this._max = v;\n this.bars.forEach((bar) => {\n bar.recalculatePercentage();\n });\n }\n addBar(bar) {\n bar.animate = this.animate;\n bar.striped = this.striped;\n this.bars.push(bar);\n }\n removeBar(bar) {\n this.bars.splice(this.bars.indexOf(bar), 1);\n }\n}\nProgressbarComponent.decorators = [\n { type: Component, args: [{\n selector: 'progressbar',\n template: \"<bar [type]=\\\"type\\\" [value]=\\\"_value\\\" *ngIf=\\\"!isStacked\\\"> <ng-content></ng-content> </bar> <ng-template [ngIf]=\\\"isStacked\\\"> <bar *ngFor=\\\"let item of _value\\\" [type]=\\\"item.type\\\" [value]=\\\"item.value\\\">{{ item.label }}</bar> </ng-template> \",\n styles: [\n `\n :host {\n width: 100%;\n display: flex;\n }\n `\n ]\n },] },\n];\n/** @nocollapse */\nProgressbarComponent.ctorParameters = () => [\n { type: ProgressbarConfig, },\n];\nProgressbarComponent.propDecorators = {\n 'animate': [{ type: Input },],\n 'striped': [{ type: Input },],\n 'type': [{ type: Input },],\n 'value': [{ type: Input },],\n 'max': [{ type: HostBinding, args: ['attr.max',] }, { type: Input },],\n 'addClass': [{ type: HostBinding, args: ['class.progress',] },],\n};\n//# sourceMappingURL=progressbar.component.js.map","import { Component, Host, HostBinding, Input } from '@angular/core';\nimport { ProgressbarComponent } from './progressbar.component';\nimport { isBs3 } from '../utils/theme-provider';\n// todo: number pipe\n// todo: use query from progress?\nexport class BarComponent {\n constructor(progress) {\n this.percent = 0;\n this.progress = progress;\n }\n /** current value of progress bar */\n get value() {\n return this._value;\n }\n set value(v) {\n if (!v && v !== 0) {\n return;\n }\n this._value = v;\n this.recalculatePercentage();\n }\n get setBarWidth() {\n this.recalculatePercentage();\n return this.percent;\n }\n get isBs3() {\n return isBs3();\n }\n ngOnInit() {\n this.progress.addBar(this);\n }\n ngOnDestroy() {\n this.progress.removeBar(this);\n }\n recalculatePercentage() {\n this.percent = +(this.value / this.progress.max * 100).toFixed(2);\n const totalPercentage = this.progress.bars\n .reduce(function (total, bar) {\n return total + bar.percent;\n }, 0);\n if (totalPercentage > 100) {\n this.percent -= totalPercentage - 100;\n }\n }\n}\nBarComponent.decorators = [\n { type: Component, args: [{\n selector: 'bar',\n template: \"<ng-content></ng-content> \",\n host: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n '[class]': '\"progress-bar \" + (type ? \"progress-bar-\" + type + \" bg-\" + type : \"\")',\n '[class.progress-bar-animated]': '!isBs3 && animate',\n '[class.progress-bar-striped]': 'striped',\n '[class.active]': 'isBs3 && animate',\n '[attr.aria-valuenow]': 'value',\n '[attr.aria-valuetext]': 'percent ? percent.toFixed(0) + \"%\" : \"\"',\n '[attr.aria-valuemax]': 'max',\n '[style.height.%]': '\"100\"'\n }\n },] },\n];\n/** @nocollapse */\nBarComponent.ctorParameters = () => [\n { type: ProgressbarComponent, decorators: [{ type: Host },] },\n];\nBarComponent.propDecorators = {\n 'type': [{ type: Input },],\n 'value': [{ type: Input },],\n 'setBarWidth': [{ type: HostBinding, args: ['style.width.%',] },],\n};\n//# sourceMappingURL=bar.component.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BarComponent } from './bar.component';\nimport { ProgressbarComponent } from './progressbar.component';\nimport { ProgressbarConfig } from './progressbar.config';\nexport class ProgressbarModule {\n static forRoot() {\n return { ngModule: ProgressbarModule, providers: [ProgressbarConfig] };\n }\n}\nProgressbarModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [BarComponent, ProgressbarComponent],\n exports: [BarComponent, ProgressbarComponent]\n },] },\n];\n/** @nocollapse */\nProgressbarModule.ctorParameters = () => [];\n//# sourceMappingURL=progressbar.module.js.map","import { Component, EventEmitter, HostListener, Input, Output, forwardRef, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nexport const RATING_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line\n useExisting: forwardRef(() => RatingComponent),\n multi: true\n};\nexport class RatingComponent {\n constructor(changeDetection) {\n this.changeDetection = changeDetection;\n /** number of icons */\n this.max = 5;\n /** fired when icon selected, $event:number equals to selected rating */\n this.onHover = new EventEmitter();\n /** fired when icon selected, $event:number equals to previous rating value */\n this.onLeave = new EventEmitter();\n this.onChange = Function.prototype;\n this.onTouched = Function.prototype;\n }\n onKeydown(event) {\n if ([37, 38, 39, 40].indexOf(event.which) === -1) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const sign = event.which === 38 || event.which === 39 ? 1 : -1;\n this.rate(this.value + sign);\n }\n ngOnInit() {\n this.max = typeof this.max !== 'undefined' ? this.max : 5;\n this.titles =\n typeof this.titles !== 'undefined' && this.titles.length > 0\n ? this.titles\n : ['one', 'two', 'three', 'four', 'five'];\n this.range = this.buildTemplateObjects(this.max);\n }\n // model -> view\n writeValue(value) {\n if (value % 1 !== value) {\n this.value = Math.round(value);\n this.preValue = value;\n this.changeDetection.markForCheck();\n return;\n }\n this.preValue = value;\n this.value = value;\n this.changeDetection.markForCheck();\n }\n enter(value) {\n if (!this.readonly) {\n this.value = value;\n this.changeDetection.markForCheck();\n this.onHover.emit(value);\n }\n }\n reset() {\n this.value = this.preValue;\n this.changeDetection.markForCheck();\n this.onLeave.emit(this.value);\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n rate(value) {\n if (!this.readonly && value >= 0 && value <= this.range.length) {\n this.writeValue(value);\n this.onChange(value);\n }\n }\n buildTemplateObjects(max) {\n const result = [];\n for (let i = 0; i < max; i++) {\n result.push({\n index: i,\n title: this.titles[i] || i + 1\n });\n }\n return result;\n }\n}\nRatingComponent.decorators = [\n { type: Component, args: [{\n selector: 'rating',\n template: \"<span (mouseleave)=\\\"reset()\\\" (keydown)=\\\"onKeydown($event)\\\" tabindex=\\\"0\\\" role=\\\"slider\\\" aria-valuemin=\\\"0\\\" [attr.aria-valuemax]=\\\"range.length\\\" [attr.aria-valuenow]=\\\"value\\\"> <ng-template #star let-value=\\\"value\\\" let-index=\\\"index\\\">{{index < value ? '★' : '☆'}}</ng-template> <ng-template ngFor let-r [ngForOf]=\\\"range\\\" let-index=\\\"index\\\"> <span class=\\\"sr-only\\\">({{ index < value ? '*' : ' ' }})</span> <span class=\\\"bs-rating-star\\\" (mouseenter)=\\\"enter(index + 1)\\\" (click)=\\\"rate(index + 1)\\\" [title]=\\\"r.title\\\" [style.cursor]=\\\"readonly ? 'default' : 'pointer'\\\" [class.active]=\\\"index < value\\\"> <ng-template [ngTemplateOutlet]=\\\"customTemplate || star\\\" [ngTemplateOutletContext]=\\\"{index: index, value: value}\\\"> </ng-template> </span> </ng-template> </span> \",\n providers: [RATING_CONTROL_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush\n },] },\n];\n/** @nocollapse */\nRatingComponent.ctorParameters = () => [\n { type: ChangeDetectorRef, },\n];\nRatingComponent.propDecorators = {\n 'max': [{ type: Input },],\n 'readonly': [{ type: Input },],\n 'titles': [{ type: Input },],\n 'customTemplate': [{ type: Input },],\n 'onHover': [{ type: Output },],\n 'onLeave': [{ type: Output },],\n 'onKeydown': [{ type: HostListener, args: ['keydown', ['$event'],] },],\n};\n//# sourceMappingURL=rating.component.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RatingComponent } from './rating.component';\nexport class RatingModule {\n static forRoot() {\n return {\n ngModule: RatingModule,\n providers: []\n };\n }\n}\nRatingModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [RatingComponent],\n exports: [RatingComponent]\n },] },\n];\n/** @nocollapse */\nRatingModule.ctorParameters = () => [];\n//# sourceMappingURL=rating.module.js.map","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs/Subject';\nexport class DraggableItemService {\n constructor() {\n this.onCapture = new Subject();\n }\n dragStart(item) {\n this.draggableItem = item;\n }\n getItem() {\n return this.draggableItem;\n }\n captureItem(overZoneIndex, newIndex) {\n if (this.draggableItem.overZoneIndex !== overZoneIndex) {\n this.draggableItem.lastZoneIndex = this.draggableItem.overZoneIndex;\n this.draggableItem.overZoneIndex = overZoneIndex;\n this.onCapture.next(this.draggableItem);\n this.draggableItem = Object.assign({}, this.draggableItem, {\n overZoneIndex,\n i: newIndex\n });\n }\n return this.draggableItem;\n }\n onCaptureItem() {\n return this.onCapture;\n }\n}\nDraggableItemService.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nDraggableItemService.ctorParameters = () => [];\n//# sourceMappingURL=draggable-item.service.js.map","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DraggableItemService } from './draggable-item.service';\n/* tslint:disable */\n/* tslint:enable */\nexport class SortableComponent {\n constructor(transfer) {\n /** class name for items wrapper */\n this.wrapperClass = '';\n /** style object for items wrapper */\n this.wrapperStyle = {};\n /** class name for item */\n this.itemClass = '';\n /** style object for item */\n this.itemStyle = {};\n /** class name for active item */\n this.itemActiveClass = '';\n /** style object for active item */\n this.itemActiveStyle = {};\n /** class name for placeholder */\n this.placeholderClass = '';\n /** style object for placeholder */\n this.placeholderStyle = {};\n /** placeholder item which will be shown if collection is empty */\n this.placeholderItem = '';\n /** fired on array change (reordering, insert, remove), same as <code>ngModelChange</code>.\n * Returns new items collection as a payload.\n */\n this.onChange = new EventEmitter();\n this.showPlaceholder = false;\n this.activeItem = -1;\n this.onTouched = Function.prototype;\n this.onChanged = Function.prototype;\n this.transfer = transfer;\n this.currentZoneIndex = SortableComponent.globalZoneIndex++;\n this.transfer\n .onCaptureItem()\n .subscribe((item) => this.onDrop(item));\n }\n get items() {\n return this._items;\n }\n set items(value) {\n this._items = value;\n const out = this.items.map((x) => x.initData);\n this.onChanged(out);\n this.onChange.emit(out);\n }\n onItemDragstart(event, item, i) {\n this.initDragstartEvent(event);\n this.onTouched();\n this.transfer.dragStart({\n event,\n item,\n i,\n initialIndex: i,\n lastZoneIndex: this.currentZoneIndex,\n overZoneIndex: this.currentZoneIndex\n });\n }\n onItemDragover(event, i) {\n if (!this.transfer.getItem()) {\n return;\n }\n event.preventDefault();\n const dragItem = this.transfer.captureItem(this.currentZoneIndex, this.items.length);\n let newArray = [];\n if (!this.items.length) {\n newArray = [dragItem.item];\n }\n else if (dragItem.i > i) {\n newArray = [\n ...this.items.slice(0, i),\n dragItem.item,\n ...this.items.slice(i, dragItem.i),\n ...this.items.slice(dragItem.i + 1)\n ];\n }\n else {\n // this.draggedItem.i < i\n newArray = [\n ...this.items.slice(0, dragItem.i),\n ...this.items.slice(dragItem.i + 1, i + 1),\n dragItem.item,\n ...this.items.slice(i + 1)\n ];\n }\n this.items = newArray;\n dragItem.i = i;\n this.activeItem = i;\n this.updatePlaceholderState();\n }\n cancelEvent(event) {\n if (!this.transfer.getItem() || !event) {\n return;\n }\n event.preventDefault();\n }\n onDrop(item) {\n if (item &&\n item.overZoneIndex !== this.currentZoneIndex &&\n item.lastZoneIndex === this.currentZoneIndex) {\n this.items = this.items.filter((x, i) => i !== item.i);\n this.updatePlaceholderState();\n }\n this.resetActiveItem(undefined);\n }\n resetActiveItem(event) {\n this.cancelEvent(event);\n this.activeItem = -1;\n }\n registerOnChange(callback) {\n this.onChanged = callback;\n }\n registerOnTouched(callback) {\n this.onTouched = callback;\n }\n writeValue(value) {\n if (value) {\n this.items = value.map((x, i) => ({\n id: i,\n initData: x,\n value: this.fieldName ? x[this.fieldName] : x\n }));\n }\n else {\n this.items = [];\n }\n this.updatePlaceholderState();\n }\n updatePlaceholderState() {\n this.showPlaceholder = !this._items.length;\n }\n getItemStyle(isActive) {\n return isActive\n ? Object.assign({}, this.itemStyle, this.itemActiveStyle)\n : this.itemStyle;\n }\n // tslint:disable-next-line\n initDragstartEvent(event) {\n // it is necessary for mozilla\n // data type should be 'Text' instead of 'text/plain' to keep compatibility\n // with IE\n event.dataTransfer.setData('Text', 'placeholder');\n }\n}\nSortableComponent.globalZoneIndex = 0;\nSortableComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-sortable',\n exportAs: 'bs-sortable',\n template: `\n<div\n [ngClass]=\"wrapperClass\"\n [ngStyle]=\"wrapperStyle\"\n [ngStyle]=\"wrapperStyle\"\n (dragover)=\"cancelEvent($event)\"\n (dragenter)=\"cancelEvent($event)\"\n (drop)=\"resetActiveItem($event)\"\n (mouseleave)=\"resetActiveItem($event)\">\n <div\n *ngIf=\"showPlaceholder\"\n [ngClass]=\"placeholderClass\"\n [ngStyle]=\"placeholderStyle\"\n (dragover)=\"onItemDragover($event, 0)\"\n (dragenter)=\"cancelEvent($event)\"\n >{{placeholderItem}}</div>\n <div\n *ngFor=\"let item of items; let i=index;\"\n [ngClass]=\"[ itemClass, i === activeItem ? itemActiveClass : '' ]\"\n [ngStyle]=\"getItemStyle(i === activeItem)\"\n draggable=\"true\"\n (dragstart)=\"onItemDragstart($event, item, i)\"\n (dragend)=\"resetActiveItem($event)\"\n (dragover)=\"onItemDragover($event, i)\"\n (dragenter)=\"cancelEvent($event)\"\n ><ng-template [ngTemplateOutlet]=\"itemTemplate || defItemTemplate\"\n [ngTemplateOutletContext]=\"{item:item, index: i}\"></ng-template></div>\n</div>\n\n<ng-template #defItemTemplate let-item=\"item\">{{item.value}}</ng-template> \n`,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SortableComponent),\n multi: true\n }\n ]\n },] },\n];\n/** @nocollapse */\nSortableComponent.ctorParameters = () => [\n { type: DraggableItemService, },\n];\nSortableComponent.propDecorators = {\n 'fieldName': [{ type: Input },],\n 'wrapperClass': [{ type: Input },],\n 'wrapperStyle': [{ type: Input },],\n 'itemClass': [{ type: Input },],\n 'itemStyle': [{ type: Input },],\n 'itemActiveClass': [{ type: Input },],\n 'itemActiveStyle': [{ type: Input },],\n 'placeholderClass': [{ type: Input },],\n 'placeholderStyle': [{ type: Input },],\n 'placeholderItem': [{ type: Input },],\n 'itemTemplate': [{ type: Input },],\n 'onChange': [{ type: Output },],\n};\n//# sourceMappingURL=sortable.component.js.map","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SortableComponent } from './sortable.component';\nimport { DraggableItemService } from './draggable-item.service';\nexport class SortableModule {\n static forRoot() {\n return { ngModule: SortableModule, providers: [DraggableItemService] };\n }\n}\nSortableModule.decorators = [\n { type: NgModule, args: [{\n declarations: [SortableComponent],\n imports: [CommonModule],\n exports: [SortableComponent]\n },] },\n];\n/** @nocollapse */\nSortableModule.ctorParameters = () => [];\n//# sourceMappingURL=sortable.module.js.map","import { Directive, Input, ViewContainerRef } from '@angular/core';\nexport class NgTranscludeDirective {\n constructor(viewRef) {\n this.viewRef = viewRef;\n }\n set ngTransclude(templateRef) {\n this._ngTransclude = templateRef;\n if (templateRef) {\n this.viewRef.createEmbeddedView(templateRef);\n }\n }\n get ngTransclude() {\n return this._ngTransclude;\n }\n}\nNgTranscludeDirective.decorators = [\n { type: Directive, args: [{\n selector: '[ngTransclude]'\n },] },\n];\n/** @nocollapse */\nNgTranscludeDirective.ctorParameters = () => [\n { type: ViewContainerRef, },\n];\nNgTranscludeDirective.propDecorators = {\n 'ngTransclude': [{ type: Input },],\n};\n//# sourceMappingURL=ng-transclude.directive.js.map","import { Injectable } from '@angular/core';\nexport class TabsetConfig {\n constructor() {\n /** provides default navigation context class: 'tabs' or 'pills' */\n this.type = 'tabs';\n }\n}\nTabsetConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nTabsetConfig.ctorParameters = () => [];\n//# sourceMappingURL=tabset.config.js.map","import { Component, HostBinding, Input, Renderer2 } from '@angular/core';\nimport { TabsetConfig } from './tabset.config';\n// todo: add active event to tab\n// todo: fix? mixing static and dynamic tabs position tabs in order of creation\nexport class TabsetComponent {\n constructor(config, renderer) {\n this.renderer = renderer;\n this.clazz = true;\n this.tabs = [];\n this.classMap = {};\n Object.assign(this, config);\n }\n /** if true tabs will be placed vertically */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = value;\n this.setClassMap();\n }\n /** if true tabs fill the container and have a consistent width */\n get justified() {\n return this._justified;\n }\n set justified(value) {\n this._justified = value;\n this.setClassMap();\n }\n /** navigation context class: 'tabs' or 'pills' */\n get type() {\n return this._type;\n }\n set type(value) {\n this._type = value;\n this.setClassMap();\n }\n ngOnDestroy() {\n this.isDestroyed = true;\n }\n addTab(tab) {\n this.tabs.push(tab);\n tab.active = this.tabs.length === 1 && typeof tab.active === 'undefined';\n }\n removeTab(tab, options = { reselect: true, emit: true }) {\n const index = this.tabs.indexOf(tab);\n if (index === -1 || this.isDestroyed) {\n return;\n }\n // Select a new tab if the tab to be removed is selected and not destroyed\n if (options.reselect && tab.active && this.hasAvailableTabs(index)) {\n const newActiveIndex = this.getClosestTabIndex(index);\n this.tabs[newActiveIndex].active = true;\n }\n if (options.emit) {\n tab.removed.emit(tab);\n }\n this.tabs.splice(index, 1);\n if (tab.elementRef.nativeElement.parentNode) {\n this.renderer.removeChild(tab.elementRef.nativeElement.parentNode, tab.elementRef.nativeElement);\n }\n }\n getClosestTabIndex(index) {\n const tabsLength = this.tabs.length;\n if (!tabsLength) {\n return -1;\n }\n for (let step = 1; step <= tabsLength; step += 1) {\n const prevIndex = index - step;\n const nextIndex = index + step;\n if (this.tabs[prevIndex] && !this.tabs[prevIndex].disabled) {\n return prevIndex;\n }\n if (this.tabs[nextIndex] && !this.tabs[nextIndex].disabled) {\n return nextIndex;\n }\n }\n return -1;\n }\n hasAvailableTabs(index) {\n const tabsLength = this.tabs.length;\n if (!tabsLength) {\n return false;\n }\n for (let i = 0; i < tabsLength; i += 1) {\n if (!this.tabs[i].disabled && i !== index) {\n return true;\n }\n }\n return false;\n }\n setClassMap() {\n this.classMap = {\n 'nav-stacked': this.vertical,\n 'flex-column': this.vertical,\n 'nav-justified': this.justified,\n [`nav-${this.type}`]: true\n };\n }\n}\nTabsetComponent.decorators = [\n { type: Component, args: [{\n selector: 'tabset',\n template: \"<ul class=\\\"nav\\\" [ngClass]=\\\"classMap\\\" (click)=\\\"$event.preventDefault()\\\"> <li *ngFor=\\\"let tabz of tabs\\\" [ngClass]=\\\"['nav-item', tabz.customClass || '']\\\" [class.active]=\\\"tabz.active\\\" [class.disabled]=\\\"tabz.disabled\\\"> <a href=\\\"javascript:void(0);\\\" class=\\\"nav-link\\\" [attr.id]=\\\"tabz.id ? tabz.id + '-link' : ''\\\" [class.active]=\\\"tabz.active\\\" [class.disabled]=\\\"tabz.disabled\\\" (click)=\\\"tabz.active = true\\\"> <span [ngTransclude]=\\\"tabz.headingRef\\\">{{ tabz.heading }}</span> <span *ngIf=\\\"tabz.removable\\\" (click)=\\\"$event.preventDefault(); removeTab(tabz);\\\" class=\\\"bs-remove-tab\\\"> ❌</span> </a> </li> </ul> <div class=\\\"tab-content\\\"> <ng-content></ng-content> </div> \"\n },] },\n];\n/** @nocollapse */\nTabsetComponent.ctorParameters = () => [\n { type: TabsetConfig, },\n { type: Renderer2, },\n];\nTabsetComponent.propDecorators = {\n 'vertical': [{ type: Input },],\n 'justified': [{ type: Input },],\n 'type': [{ type: Input },],\n 'clazz': [{ type: HostBinding, args: ['class.tab-container',] },],\n};\n//# sourceMappingURL=tabset.component.js.map","import { Directive, EventEmitter, HostBinding, Input, Output, ElementRef, Renderer2 } from '@angular/core';\nimport { TabsetComponent } from './tabset.component';\nexport class TabDirective {\n constructor(tabset, elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n /** fired when tab became active, $event:Tab equals to selected instance of Tab component */\n this.select = new EventEmitter();\n /** fired when tab became inactive, $event:Tab equals to deselected instance of Tab component */\n this.deselect = new EventEmitter();\n /** fired before tab will be removed, $event:Tab equals to instance of removed tab */\n this.removed = new EventEmitter();\n this.addClass = true;\n this.tabset = tabset;\n this.tabset.addTab(this);\n }\n /** if set, will be added to the tab's class attribute. Multiple classes are supported. */\n get customClass() {\n return this._customClass;\n }\n set customClass(customClass) {\n if (this.customClass) {\n this.customClass.split(' ').forEach((cssClass) => {\n this.renderer.removeClass(this.elementRef.nativeElement, cssClass);\n });\n }\n this._customClass = customClass ? customClass.trim() : null;\n if (this.customClass) {\n this.customClass.split(' ').forEach((cssClass) => {\n this.renderer.addClass(this.elementRef.nativeElement, cssClass);\n });\n }\n }\n /** tab active state toggle */\n get active() {\n return this._active;\n }\n set active(active) {\n if (this._active === active) {\n return;\n }\n if ((this.disabled && active) || !active) {\n if (this._active && !active) {\n this.deselect.emit(this);\n this._active = active;\n }\n return;\n }\n this._active = active;\n this.select.emit(this);\n this.tabset.tabs.forEach((tab) => {\n if (tab !== this) {\n tab.active = false;\n }\n });\n }\n ngOnInit() {\n this.removable = this.removable;\n }\n ngOnDestroy() {\n this.tabset.removeTab(this, { reselect: false, emit: false });\n }\n}\nTabDirective.decorators = [\n { type: Directive, args: [{ selector: 'tab, [tab]' },] },\n];\n/** @nocollapse */\nTabDirective.ctorParameters = () => [\n { type: TabsetComponent, },\n { type: ElementRef, },\n { type: Renderer2, },\n];\nTabDirective.propDecorators = {\n 'heading': [{ type: Input },],\n 'id': [{ type: HostBinding, args: ['attr.id',] }, { type: Input },],\n 'disabled': [{ type: Input },],\n 'removable': [{ type: Input },],\n 'customClass': [{ type: Input },],\n 'active': [{ type: HostBinding, args: ['class.active',] }, { type: Input },],\n 'select': [{ type: Output },],\n 'deselect': [{ type: Output },],\n 'removed': [{ type: Output },],\n 'addClass': [{ type: HostBinding, args: ['class.tab-pane',] },],\n};\n//# sourceMappingURL=tab.directive.js.map","import { Directive, TemplateRef } from '@angular/core';\nimport { TabDirective } from './tab.directive';\n/** Should be used to mark <ng-template> element as a template for tab heading */\nexport class TabHeadingDirective {\n constructor(templateRef, tab) {\n tab.headingRef = templateRef;\n }\n}\nTabHeadingDirective.decorators = [\n { type: Directive, args: [{ selector: '[tabHeading]' },] },\n];\n/** @nocollapse */\nTabHeadingDirective.ctorParameters = () => [\n { type: TemplateRef, },\n { type: TabDirective, },\n];\n//# sourceMappingURL=tab-heading.directive.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgTranscludeDirective } from './ng-transclude.directive';\nimport { TabHeadingDirective } from './tab-heading.directive';\nimport { TabDirective } from './tab.directive';\nimport { TabsetComponent } from './tabset.component';\nimport { TabsetConfig } from './tabset.config';\nexport class TabsModule {\n static forRoot() {\n return {\n ngModule: TabsModule,\n providers: [TabsetConfig]\n };\n }\n}\nTabsModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [\n NgTranscludeDirective,\n TabDirective,\n TabsetComponent,\n TabHeadingDirective\n ],\n exports: [\n TabDirective,\n TabsetComponent,\n TabHeadingDirective,\n NgTranscludeDirective\n ]\n },] },\n];\n/** @nocollapse */\nTabsModule.ctorParameters = () => [];\n//# sourceMappingURL=tabs.module.js.map","import { Injectable } from '@angular/core';\nexport class TimepickerActions {\n writeValue(value) {\n return {\n type: TimepickerActions.WRITE_VALUE,\n payload: value\n };\n }\n changeHours(event) {\n return {\n type: TimepickerActions.CHANGE_HOURS,\n payload: event\n };\n }\n changeMinutes(event) {\n return {\n type: TimepickerActions.CHANGE_MINUTES,\n payload: event\n };\n }\n changeSeconds(event) {\n return {\n type: TimepickerActions.CHANGE_SECONDS,\n payload: event\n };\n }\n setTime(value) {\n return {\n type: TimepickerActions.SET_TIME_UNIT,\n payload: value\n };\n }\n updateControls(value) {\n return {\n type: TimepickerActions.UPDATE_CONTROLS,\n payload: value\n };\n }\n}\nTimepickerActions.WRITE_VALUE = '[timepicker] write value from ng model';\nTimepickerActions.CHANGE_HOURS = '[timepicker] change hours';\nTimepickerActions.CHANGE_MINUTES = '[timepicker] change minutes';\nTimepickerActions.CHANGE_SECONDS = '[timepicker] change seconds';\nTimepickerActions.SET_TIME_UNIT = '[timepicker] set time unit';\nTimepickerActions.UPDATE_CONTROLS = '[timepicker] update controls';\nTimepickerActions.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nTimepickerActions.ctorParameters = () => [];\n//# sourceMappingURL=timepicker.actions.js.map","const dex = 10;\nconst hoursPerDay = 24;\nconst hoursPerDayHalf = 12;\nconst minutesPerHour = 60;\nconst secondsPerMinute = 60;\nexport function isValidDate(value) {\n if (!value) {\n return false;\n }\n if (value instanceof Date && isNaN(value.getHours())) {\n return false;\n }\n if (typeof value === 'string') {\n return isValidDate(new Date(value));\n }\n return true;\n}\nexport function isValidLimit(controls, newDate) {\n if (controls.min && newDate < controls.min) {\n return false;\n }\n if (controls.max && newDate > controls.max) {\n return false;\n }\n return true;\n}\nexport function toNumber(value) {\n if (typeof value === 'number') {\n return value;\n }\n return parseInt(value, dex);\n}\nexport function isNumber(value) {\n return !isNaN(toNumber(value));\n}\nexport function parseHours(value, isPM = false) {\n const hour = toNumber(value);\n if (isNaN(hour) ||\n hour < 0 ||\n hour > (isPM ? hoursPerDayHalf : hoursPerDay)) {\n return NaN;\n }\n return hour;\n}\nexport function parseMinutes(value) {\n const minute = toNumber(value);\n if (isNaN(minute) || minute < 0 || minute > minutesPerHour) {\n return NaN;\n }\n return minute;\n}\nexport function parseSeconds(value) {\n const seconds = toNumber(value);\n if (isNaN(seconds) || seconds < 0 || seconds > secondsPerMinute) {\n return NaN;\n }\n return seconds;\n}\nexport function parseTime(value) {\n if (typeof value === 'string') {\n return new Date(value);\n }\n return value;\n}\nexport function changeTime(value, diff) {\n if (!value) {\n return changeTime(createDate(new Date(), 0, 0, 0), diff);\n }\n let hour = value.getHours();\n let minutes = value.getMinutes();\n let seconds = value.getSeconds();\n if (diff.hour) {\n hour = (hour + toNumber(diff.hour)) % hoursPerDay;\n if (hour < 0) {\n hour += hoursPerDay;\n }\n }\n if (diff.minute) {\n minutes = minutes + toNumber(diff.minute);\n }\n if (diff.seconds) {\n seconds = seconds + toNumber(diff.seconds);\n }\n return createDate(value, hour, minutes, seconds);\n}\nexport function setTime(value, opts) {\n let hour = parseHours(opts.hour);\n const minute = parseMinutes(opts.minute);\n const seconds = parseSeconds(opts.seconds) || 0;\n if (opts.isPM) {\n hour += hoursPerDayHalf;\n }\n if (!value) {\n if (!isNaN(hour) && !isNaN(minute)) {\n return createDate(new Date(), hour, minute, seconds);\n }\n return value;\n }\n if (isNaN(hour) || isNaN(minute)) {\n return value;\n }\n return createDate(value, hour, minute, seconds);\n}\nexport function createDate(value, hours, minutes, seconds) {\n return new Date(value.getFullYear(), value.getMonth(), value.getDate(), hours, minutes, seconds, value.getMilliseconds());\n}\nexport function padNumber(value) {\n const _value = value.toString();\n if (_value.length > 1) {\n return _value;\n }\n return `0${_value}`;\n}\nexport function isHourInputValid(hours, isPM) {\n return !isNaN(parseHours(hours, isPM));\n}\nexport function isMinuteInputValid(minutes) {\n return !isNaN(parseMinutes(minutes));\n}\nexport function isSecondInputValid(seconds) {\n return !isNaN(parseSeconds(seconds));\n}\nexport function isInputLimitValid(diff, max, min) {\n const newDate = changeTime(new Date(), diff);\n if (max && newDate > max) {\n return false;\n }\n if (min && newDate < min) {\n return false;\n }\n return true;\n}\nexport function isInputValid(hours, minutes = '0', seconds = '0', isPM) {\n return isHourInputValid(hours, isPM)\n && isMinuteInputValid(minutes)\n && isSecondInputValid(seconds);\n}\n//# sourceMappingURL=timepicker.utils.js.map","import { changeTime } from './timepicker.utils';\nexport function canChangeValue(state, event) {\n if (state.readonlyInput || state.disabled) {\n return false;\n }\n if (event) {\n if (event.source === 'wheel' && !state.mousewheel) {\n return false;\n }\n if (event.source === 'key' && !state.arrowkeys) {\n return false;\n }\n }\n return true;\n}\nexport function canChangeHours(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementHours) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementHours) {\n return false;\n }\n return true;\n}\nexport function canChangeMinutes(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementMinutes) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementMinutes) {\n return false;\n }\n return true;\n}\nexport function canChangeSeconds(event, controls) {\n if (!event.step) {\n return false;\n }\n if (event.step > 0 && !controls.canIncrementSeconds) {\n return false;\n }\n if (event.step < 0 && !controls.canDecrementSeconds) {\n return false;\n }\n return true;\n}\nexport function getControlsValue(state) {\n const { hourStep, minuteStep, secondsStep, readonlyInput, disabled, mousewheel, arrowkeys, showSpinners, showMeridian, showSeconds, meridians, min, max } = state;\n return {\n hourStep,\n minuteStep,\n secondsStep,\n readonlyInput,\n disabled,\n mousewheel,\n arrowkeys,\n showSpinners,\n showMeridian,\n showSeconds,\n meridians,\n min,\n max\n };\n}\nexport function timepickerControls(value, state) {\n const hoursPerDayHalf = 12;\n const { min, max, hourStep, minuteStep, secondsStep, showSeconds } = state;\n const res = {\n canIncrementHours: true,\n canIncrementMinutes: true,\n canIncrementSeconds: true,\n canDecrementHours: true,\n canDecrementMinutes: true,\n canDecrementSeconds: true,\n canToggleMeridian: true\n };\n if (!value) {\n return res;\n }\n // compare dates\n if (max) {\n const _newHour = changeTime(value, { hour: hourStep });\n res.canIncrementHours = max > _newHour;\n if (!res.canIncrementHours) {\n const _newMinutes = changeTime(value, { minute: minuteStep });\n res.canIncrementMinutes = showSeconds\n ? max > _newMinutes\n : max >= _newMinutes;\n }\n if (!res.canIncrementMinutes) {\n const _newSeconds = changeTime(value, { seconds: secondsStep });\n res.canIncrementSeconds = max >= _newSeconds;\n }\n if (value.getHours() < hoursPerDayHalf) {\n res.canToggleMeridian = changeTime(value, { hour: hoursPerDayHalf }) < max;\n }\n }\n if (min) {\n const _newHour = changeTime(value, { hour: -hourStep });\n res.canDecrementHours = min < _newHour;\n if (!res.canDecrementHours) {\n const _newMinutes = changeTime(value, { minute: -minuteStep });\n res.canDecrementMinutes = showSeconds\n ? min < _newMinutes\n : min <= _newMinutes;\n }\n if (!res.canDecrementMinutes) {\n const _newSeconds = changeTime(value, { seconds: -secondsStep });\n res.canDecrementSeconds = min <= _newSeconds;\n }\n if (value.getHours() >= hoursPerDayHalf) {\n res.canToggleMeridian = changeTime(value, { hour: -hoursPerDayHalf }) > min;\n }\n }\n return res;\n}\n//# sourceMappingURL=timepicker-controls.util.js.map","import { Injectable } from '@angular/core';\n/** Provides default configuration values for timepicker */\nexport class TimepickerConfig {\n constructor() {\n /** hours change step */\n this.hourStep = 1;\n /** hours change step */\n this.minuteStep = 5;\n /** seconds changes step */\n this.secondsStep = 10;\n /** if true works in 12H mode and displays AM/PM. If false works in 24H mode and hides AM/PM */\n this.showMeridian = true;\n /** meridian labels based on locale */\n this.meridians = ['AM', 'PM'];\n /** if true hours and minutes fields will be readonly */\n this.readonlyInput = false;\n /** if true hours and minutes fields will be disabled */\n this.disabled = false;\n /** if true scroll inside hours and minutes inputs will change time */\n this.mousewheel = true;\n /** if true up/down arrowkeys inside hours and minutes inputs will change time */\n this.arrowkeys = true;\n /** if true spinner arrows above and below the inputs will be shown */\n this.showSpinners = true;\n /** show seconds in timepicker */\n this.showSeconds = false;\n /** show minutes in timepicker */\n this.showMinutes = true;\n }\n}\nTimepickerConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nTimepickerConfig.ctorParameters = () => [];\n//# sourceMappingURL=timepicker.config.js.map","import { canChangeHours, canChangeMinutes, canChangeSeconds, canChangeValue, timepickerControls } from '../timepicker-controls.util';\nimport { TimepickerConfig } from '../timepicker.config';\nimport { changeTime, setTime, isValidLimit } from '../timepicker.utils';\nimport { TimepickerActions } from './timepicker.actions';\nexport class TimepickerState {\n}\nexport const initialState = {\n value: null,\n config: new TimepickerConfig(),\n controls: {\n canIncrementHours: true,\n canIncrementMinutes: true,\n canIncrementSeconds: true,\n canDecrementHours: true,\n canDecrementMinutes: true,\n canDecrementSeconds: true,\n canToggleMeridian: true\n }\n};\nexport function timepickerReducer(state = initialState, action) {\n switch (action.type) {\n case TimepickerActions.WRITE_VALUE: {\n return Object.assign({}, state, { value: action.payload });\n }\n case TimepickerActions.CHANGE_HOURS: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeHours(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, { hour: action.payload.step });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.CHANGE_MINUTES: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeMinutes(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, { minute: action.payload.step });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.CHANGE_SECONDS: {\n if (!canChangeValue(state.config, action.payload) ||\n !canChangeSeconds(action.payload, state.controls)) {\n return state;\n }\n const _newTime = changeTime(state.value, {\n seconds: action.payload.step\n });\n if ((state.config.max || state.config.min) && !isValidLimit(state.config, _newTime)) {\n return state;\n }\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.SET_TIME_UNIT: {\n if (!canChangeValue(state.config)) {\n return state;\n }\n const _newTime = setTime(state.value, action.payload);\n return Object.assign({}, state, { value: _newTime });\n }\n case TimepickerActions.UPDATE_CONTROLS: {\n const _newControlsState = timepickerControls(state.value, action.payload);\n const _newState = {\n value: state.value,\n config: action.payload,\n controls: _newControlsState\n };\n if (state.config.showMeridian !== _newState.config.showMeridian) {\n if (state.value) {\n _newState.value = new Date(state.value);\n }\n }\n return Object.assign({}, state, _newState);\n }\n default:\n return state;\n }\n}\n//# sourceMappingURL=timepicker.reducer.js.map","import { Injectable } from '@angular/core';\nimport { timepickerReducer, initialState } from './timepicker.reducer';\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\nimport { MiniStore } from '../../mini-ngrx/store.class';\nimport { MiniState } from '../../mini-ngrx/state.class';\nexport class TimepickerStore extends MiniStore {\n constructor() {\n const _dispatcher = new BehaviorSubject({\n type: '[mini-ngrx] dispatcher init'\n });\n const state = new MiniState(initialState, _dispatcher, timepickerReducer);\n super(_dispatcher, timepickerReducer, state);\n }\n}\nTimepickerStore.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nTimepickerStore.ctorParameters = () => [];\n//# sourceMappingURL=timepicker.store.js.map","/* tslint:disable:no-forward-ref max-file-line-count */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TimepickerActions } from './reducer/timepicker.actions';\nimport { TimepickerStore } from './reducer/timepicker.store';\nimport { getControlsValue } from './timepicker-controls.util';\nimport { TimepickerConfig } from './timepicker.config';\nimport { isValidDate, padNumber, parseTime, isInputValid, isHourInputValid, isMinuteInputValid, isSecondInputValid, isInputLimitValid } from './timepicker.utils';\nexport const TIMEPICKER_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n // tslint:disable-next-line\n useExisting: forwardRef(() => TimepickerComponent),\n multi: true\n};\nexport class TimepickerComponent {\n constructor(_config, _cd, _store, _timepickerActions) {\n this._store = _store;\n this._timepickerActions = _timepickerActions;\n /** emits true if value is a valid date */\n this.isValid = new EventEmitter();\n // min\\max validation for input fields\n this.invalidHours = false;\n this.invalidMinutes = false;\n this.invalidSeconds = false;\n // control value accessor methods\n this.onChange = Function.prototype;\n this.onTouched = Function.prototype;\n Object.assign(this, _config);\n this.timepickerSub = _store.select(state => state.value).subscribe(value => {\n // update UI values if date changed\n this._renderTime(value);\n this.onChange(value);\n this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));\n });\n _store.select(state => state.controls).subscribe(controlsState => {\n this.isValid.emit(isInputValid(this.hours, this.minutes, this.seconds, this.isPM()));\n Object.assign(this, controlsState);\n _cd.markForCheck();\n });\n }\n /** @deprecated - please use `isEditable` instead */\n get isSpinnersVisible() {\n return this.showSpinners && !this.readonlyInput;\n }\n get isEditable() {\n return !(this.readonlyInput || this.disabled);\n }\n resetValidation() {\n this.invalidHours = false;\n this.invalidMinutes = false;\n this.invalidSeconds = false;\n }\n isPM() {\n return this.showMeridian && this.meridian === this.meridians[1];\n }\n prevDef($event) {\n $event.preventDefault();\n }\n wheelSign($event) {\n return Math.sign($event.deltaY) * -1;\n }\n ngOnChanges(changes) {\n this._store.dispatch(this._timepickerActions.updateControls(getControlsValue(this)));\n }\n changeHours(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeHours({ step, source }));\n }\n changeMinutes(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeMinutes({ step, source }));\n }\n changeSeconds(step, source = '') {\n this.resetValidation();\n this._store.dispatch(this._timepickerActions.changeSeconds({ step, source }));\n }\n updateHours(hours) {\n this.resetValidation();\n this.hours = hours;\n const isValid = isHourInputValid(this.hours, this.isPM()) && this.isValidLimit();\n if (!isValid) {\n this.invalidHours = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n updateMinutes(minutes) {\n this.resetValidation();\n this.minutes = minutes;\n const isValid = isMinuteInputValid(this.minutes) && this.isValidLimit();\n if (!isValid) {\n this.invalidMinutes = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n updateSeconds(seconds) {\n this.resetValidation();\n this.seconds = seconds;\n const isValid = isSecondInputValid(this.seconds) && this.isValidLimit();\n if (!isValid) {\n this.invalidSeconds = true;\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._updateTime();\n }\n isValidLimit() {\n return isInputLimitValid({\n hour: this.hours,\n minute: this.minutes,\n seconds: this.seconds,\n isPM: this.isPM()\n }, this.max, this.min);\n }\n _updateTime() {\n const _seconds = this.showSeconds ? this.seconds : void 0;\n const _minutes = this.showMinutes ? this.minutes : void 0;\n if (!isInputValid(this.hours, _minutes, _seconds, this.isPM())) {\n this.isValid.emit(false);\n this.onChange(null);\n return;\n }\n this._store.dispatch(this._timepickerActions.setTime({\n hour: this.hours,\n minute: this.minutes,\n seconds: this.seconds,\n isPM: this.isPM()\n }));\n }\n toggleMeridian() {\n if (!this.showMeridian || !this.isEditable) {\n return;\n }\n const _hoursPerDayHalf = 12;\n this._store.dispatch(this._timepickerActions.changeHours({\n step: _hoursPerDayHalf,\n source: ''\n }));\n }\n /**\n * Write a new value to the element.\n */\n writeValue(obj) {\n if (isValidDate(obj)) {\n this._store.dispatch(this._timepickerActions.writeValue(parseTime(obj)));\n }\n else if (obj == null) {\n this._store.dispatch(this._timepickerActions.writeValue(null));\n }\n }\n /**\n * Set the function to be called when the control receives a change event.\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Set the function to be called when the control receives a touch event.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * This function is called when the control status changes to or from \"disabled\".\n * Depending on the value, it will enable or disable the appropriate DOM element.\n *\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n ngOnDestroy() {\n this.timepickerSub.unsubscribe();\n }\n _renderTime(value) {\n if (!isValidDate(value)) {\n this.hours = '';\n this.minutes = '';\n this.seconds = '';\n this.meridian = this.meridians[0];\n return;\n }\n const _value = parseTime(value);\n const _hoursPerDayHalf = 12;\n let _hours = _value.getHours();\n if (this.showMeridian) {\n this.meridian = this.meridians[_hours >= _hoursPerDayHalf ? 1 : 0];\n _hours = _hours % _hoursPerDayHalf;\n // should be 12 PM, not 00 PM\n if (_hours === 0) {\n _hours = _hoursPerDayHalf;\n }\n }\n this.hours = padNumber(_hours);\n this.minutes = padNumber(_value.getMinutes());\n this.seconds = padNumber(_value.getUTCSeconds());\n }\n}\nTimepickerComponent.decorators = [\n { type: Component, args: [{\n selector: 'timepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, TimepickerStore],\n template: \"<table> <tbody> <tr class=\\\"text-center\\\" [class.hidden]=\\\"!showSpinners\\\"> <!-- increment hours button--> <td> <a class=\\\"btn btn-link\\\" [class.disabled]=\\\"!canIncrementHours || !isEditable\\\" (click)=\\\"changeHours(hourStep)\\\" ><span class=\\\"bs-chevron bs-chevron-up\\\"></span></a> </td> <!-- divider --> <td *ngIf=\\\"showMinutes\\\"> </td> <!-- increment minutes button --> <td *ngIf=\\\"showMinutes\\\"> <a class=\\\"btn btn-link\\\" [class.disabled]=\\\"!canIncrementMinutes || !isEditable\\\" (click)=\\\"changeMinutes(minuteStep)\\\" ><span class=\\\"bs-chevron bs-chevron-up\\\"></span></a> </td> <!-- divider --> <td *ngIf=\\\"showSeconds\\\"> </td> <!-- increment seconds button --> <td *ngIf=\\\"showSeconds\\\"> <a class=\\\"btn btn-link\\\" [class.disabled]=\\\"!canIncrementSeconds || !isEditable\\\" (click)=\\\"changeSeconds(secondsStep)\\\"> <span class=\\\"bs-chevron bs-chevron-up\\\"></span> </a> </td> <!-- space between --> <td *ngIf=\\\"showMeridian\\\"> </td> <!-- meridian placeholder--> <td *ngIf=\\\"showMeridian\\\"></td> </tr> <tr> <!-- hours --> <td class=\\\"form-group\\\" [class.has-error]=\\\"invalidHours\\\"> <input type=\\\"text\\\" [class.is-invalid]=\\\"invalidHours\\\" class=\\\"form-control text-center bs-timepicker-field\\\" placeholder=\\\"HH\\\" maxlength=\\\"2\\\" [readonly]=\\\"readonlyInput\\\" [disabled]=\\\"disabled\\\" [value]=\\\"hours\\\" (wheel)=\\\"prevDef($event);changeHours(hourStep * wheelSign($event), 'wheel')\\\" (keydown.ArrowUp)=\\\"changeHours(hourStep, 'key')\\\" (keydown.ArrowDown)=\\\"changeHours(-hourStep, 'key')\\\" (change)=\\\"updateHours($event.target.value)\\\"></td> <!-- divider --> <td *ngIf=\\\"showMinutes\\\"> : </td> <!-- minutes --> <td class=\\\"form-group\\\" *ngIf=\\\"showMinutes\\\" [class.has-error]=\\\"invalidMinutes\\\"> <input type=\\\"text\\\" [class.is-invalid]=\\\"invalidMinutes\\\" class=\\\"form-control text-center bs-timepicker-field\\\" placeholder=\\\"MM\\\" maxlength=\\\"2\\\" [readonly]=\\\"readonlyInput\\\" [disabled]=\\\"disabled\\\" [value]=\\\"minutes\\\" (wheel)=\\\"prevDef($event);changeMinutes(minuteStep * wheelSign($event), 'wheel')\\\" (keydown.ArrowUp)=\\\"changeMinutes(minuteStep, 'key')\\\" (keydown.ArrowDown)=\\\"changeMinutes(-minuteStep, 'key')\\\" (change)=\\\"updateMinutes($event.target.value)\\\"> </td> <!-- divider --> <td *ngIf=\\\"showSeconds\\\"> : </td> <!-- seconds --> <td class=\\\"form-group\\\" *ngIf=\\\"showSeconds\\\" [class.has-error]=\\\"invalidSeconds\\\"> <input type=\\\"text\\\" [class.is-invalid]=\\\"invalidSeconds\\\" class=\\\"form-control text-center bs-timepicker-field\\\" placeholder=\\\"SS\\\" maxlength=\\\"2\\\" [readonly]=\\\"readonlyInput\\\" [disabled]=\\\"disabled\\\" [value]=\\\"seconds\\\" (wheel)=\\\"prevDef($event);changeSeconds(secondsStep * wheelSign($event), 'wheel')\\\" (keydown.ArrowUp)=\\\"changeSeconds(secondsStep, 'key')\\\" (keydown.ArrowDown)=\\\"changeSeconds(-secondsStep, 'key')\\\" (change)=\\\"updateSeconds($event.target.value)\\\"> </td> <!-- space between --> <td *ngIf=\\\"showMeridian\\\"> </td> <!-- meridian --> <td *ngIf=\\\"showMeridian\\\"> <button type=\\\"button\\\" class=\\\"btn btn-default text-center\\\" [disabled]=\\\"!isEditable || !canToggleMeridian\\\" [class.disabled]=\\\"!isEditable || !canToggleMeridian\\\" (click)=\\\"toggleMeridian()\\\" >{{ meridian }} </button> </td> </tr> <tr class=\\\"text-center\\\" [class.hidden]=\\\"!showSpinners\\\"> <!-- decrement hours button--> <td> <a class=\\\"btn btn-link\\\" [class.disabled]=\\\"!canDecrementHours || !isEditable\\\" (click)=\\\"changeHours(-hourStep)\\\"> <span class=\\\"bs-chevron bs-chevron-down\\\"></span> </a> </td> <!-- divider --> <td *ngIf=\\\"showMinutes\\\"> </td> <!-- decrement minutes button--> <td *ngIf=\\\"showMinutes\\\"> <a class=\\\"btn btn-link\\\" [class.disabled]=\\\"!canDecrementMinutes || !isEditable\\\" (click)=\\\"changeMinutes(-minuteStep)\\\"> <span class=\\\"bs-chevron bs-chevron-down\\\"></span> </a> </td> <!-- divider --> <td *ngIf=\\\"showSeconds\\\"> </td> <!-- decrement seconds button--> <td *ngIf=\\\"showSeconds\\\"> <a class=\\\"btn btn-link\\\" [class.disabled]=\\\"!canDecrementSeconds || !isEditable\\\" (click)=\\\"changeSeconds(-secondsStep)\\\"> <span class=\\\"bs-chevron bs-chevron-down\\\"></span> </a> </td> <!-- space between --> <td *ngIf=\\\"showMeridian\\\"> </td> <!-- meridian placeholder--> <td *ngIf=\\\"showMeridian\\\"></td> </tr> </tbody> </table> \",\n styles: [`\n .bs-chevron{\n border-style: solid;\n display: block;\n width: 9px;\n height: 9px;\n position: relative;\n border-width: 3px 0px 0 3px;\n }\n .bs-chevron-up{\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n top: 2px;\n }\n .bs-chevron-down{\n -webkit-transform: rotate(-135deg);\n transform: rotate(-135deg);\n top: -2px;\n }\n .bs-timepicker-field{\n width: 50px;\n }\n `],\n encapsulation: ViewEncapsulation.None\n },] },\n];\n/** @nocollapse */\nTimepickerComponent.ctorParameters = () => [\n { type: TimepickerConfig, },\n { type: ChangeDetectorRef, },\n { type: TimepickerStore, },\n { type: TimepickerActions, },\n];\nTimepickerComponent.propDecorators = {\n 'hourStep': [{ type: Input },],\n 'minuteStep': [{ type: Input },],\n 'secondsStep': [{ type: Input },],\n 'readonlyInput': [{ type: Input },],\n 'disabled': [{ type: Input },],\n 'mousewheel': [{ type: Input },],\n 'arrowkeys': [{ type: Input },],\n 'showSpinners': [{ type: Input },],\n 'showMeridian': [{ type: Input },],\n 'showMinutes': [{ type: Input },],\n 'showSeconds': [{ type: Input },],\n 'meridians': [{ type: Input },],\n 'min': [{ type: Input },],\n 'max': [{ type: Input },],\n 'isValid': [{ type: Output },],\n};\n//# sourceMappingURL=timepicker.component.js.map","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TimepickerComponent } from './timepicker.component';\nimport { TimepickerActions } from './reducer/timepicker.actions';\nimport { TimepickerConfig } from './timepicker.config';\nimport { TimepickerStore } from './reducer/timepicker.store';\nexport class TimepickerModule {\n static forRoot() {\n return {\n ngModule: TimepickerModule,\n providers: [TimepickerConfig, TimepickerActions, TimepickerStore]\n };\n }\n}\nTimepickerModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [TimepickerComponent],\n exports: [TimepickerComponent]\n },] },\n];\n/** @nocollapse */\nTimepickerModule.ctorParameters = () => [];\n//# sourceMappingURL=timepicker.module.js.map","import { Injectable } from '@angular/core';\n/** Default values provider for tooltip */\nexport class TooltipConfig {\n constructor() {\n /** tooltip placement, supported positions: 'top', 'bottom', 'left', 'right' */\n this.placement = 'top';\n /** array of event names which triggers tooltip opening */\n this.triggers = 'hover focus';\n }\n}\nTooltipConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nTooltipConfig.ctorParameters = () => [];\n//# sourceMappingURL=tooltip.config.js.map","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { TooltipConfig } from './tooltip.config';\nimport { isBs3 } from '../utils/theme-provider';\nexport class TooltipContainerComponent {\n constructor(config) {\n Object.assign(this, config);\n }\n get isBs3() {\n return isBs3();\n }\n ngAfterViewInit() {\n this.classMap = { in: false, fade: false };\n this.classMap[this.placement] = true;\n this.classMap[`tooltip-${this.placement}`] = true;\n this.classMap.in = true;\n if (this.animation) {\n this.classMap.fade = true;\n }\n if (this.containerClass) {\n this.classMap[this.containerClass] = true;\n }\n }\n}\nTooltipContainerComponent.decorators = [\n { type: Component, args: [{\n selector: 'bs-tooltip-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line\n host: {\n '[class]': '\"tooltip in tooltip-\" + placement + \" \" + \"bs-tooltip-\" + placement + \" \" + placement + \" \" + containerClass',\n '[class.show]': '!isBs3',\n role: 'tooltip'\n },\n styles: [\n `\n :host.tooltip {\n display: block;\n }\n :host.bs-tooltip-top .arrow, :host.bs-tooltip-bottom .arrow {\n left: 50%;\n margin-left: -6px;\n }\n :host.bs-tooltip-left .arrow, :host.bs-tooltip-right .arrow {\n top: 50%;\n margin-top: -6px;\n }\n `\n ],\n template: `\n <div class=\"tooltip-arrow arrow\"></div>\n <div class=\"tooltip-inner\"><ng-content></ng-content></div>\n `\n },] },\n];\n/** @nocollapse */\nTooltipContainerComponent.ctorParameters = () => [\n { type: TooltipConfig, },\n];\n//# sourceMappingURL=tooltip-container.component.js.map","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\n// tslint:disable:deprecation\nimport { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';\nimport { TooltipContainerComponent } from './tooltip-container.component';\nimport { TooltipConfig } from './tooltip.config';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { OnChange } from '../utils/decorators';\nimport { warnOnce } from '../utils/warn-once';\nimport { parseTriggers } from '../utils/triggers';\nimport { Observable } from 'rxjs/Observable';\nimport 'rxjs/add/observable/timer';\nexport class TooltipDirective {\n constructor(_viewContainerRef, _renderer, _elementRef, cis, config) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /** Fired when tooltip content changes */\n this.tooltipChange = new EventEmitter();\n /**\n * Css class for tooltip container\n */\n this.containerClass = '';\n /** @deprecated - removed, will be added to configuration */\n this._animation = true;\n /** @deprecated */\n this._fadeDuration = 150;\n /** @deprecated */\n this.tooltipStateChanged = new EventEmitter();\n this._tooltip = cis\n .createLoader(this._elementRef, _viewContainerRef, this._renderer)\n .provide({ provide: TooltipConfig, useValue: config });\n Object.assign(this, config);\n this.onShown = this._tooltip.onShown;\n this.onHidden = this._tooltip.onHidden;\n }\n /**\n * Returns whether or not the tooltip is currently being shown\n */\n get isOpen() {\n return this._tooltip.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n /** @deprecated - please use `tooltip` instead */\n set htmlContent(value) {\n warnOnce('tooltipHtml was deprecated, please use `tooltip` instead');\n this.tooltip = value;\n }\n /** @deprecated - please use `placement` instead */\n set _placement(value) {\n warnOnce('tooltipPlacement was deprecated, please use `placement` instead');\n this.placement = value;\n }\n /** @deprecated - please use `isOpen` instead*/\n set _isOpen(value) {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n this.isOpen = value;\n }\n get _isOpen() {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n return this.isOpen;\n }\n /** @deprecated - please use `isDisabled` instead */\n set _enable(value) {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n this.isDisabled = value;\n }\n get _enable() {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n return this.isDisabled;\n }\n /** @deprecated - please use `container=\"body\"` instead */\n set _appendToBody(value) {\n warnOnce('tooltipAppendToBody was deprecated, please use `container=\"body\"` instead');\n this.container = value ? 'body' : this.container;\n }\n get _appendToBody() {\n warnOnce('tooltipAppendToBody was deprecated, please use `container=\"body\"` instead');\n return this.container === 'body';\n }\n /** @deprecated - will replaced with customClass */\n set _popupClass(value) {\n warnOnce('tooltipClass deprecated');\n }\n /** @deprecated - removed */\n set _tooltipContext(value) {\n warnOnce('tooltipContext deprecated');\n }\n /** @deprecated */\n set _tooltipPopupDelay(value) {\n warnOnce('tooltipPopupDelay is deprecated, use `delay` instead');\n this.delay = value;\n }\n /** @deprecated - please use `triggers` instead */\n get _tooltipTrigger() {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n return this.triggers;\n }\n set _tooltipTrigger(value) {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n this.triggers = (value || '').toString();\n }\n ngOnInit() {\n this._tooltip.listen({\n triggers: this.triggers,\n show: () => this.show()\n });\n this.tooltipChange.subscribe((value) => {\n if (!value) {\n this._tooltip.hide();\n }\n });\n }\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n /**\n * Opens an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n show() {\n if (this.isOpen ||\n this.isDisabled ||\n this._delayTimeoutId ||\n !this.tooltip) {\n return;\n }\n const showTooltip = () => {\n if (this._delayTimeoutId) {\n this._delayTimeoutId = undefined;\n }\n this._tooltip\n .attach(TooltipContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({\n content: this.tooltip,\n placement: this.placement,\n containerClass: this.containerClass\n });\n };\n const cancelDelayedTooltipShowing = () => {\n if (this._tooltipCancelShowFn) {\n this._tooltipCancelShowFn();\n }\n };\n if (this.delay) {\n const timer = Observable.timer(this.delay).subscribe(() => {\n showTooltip();\n cancelDelayedTooltipShowing();\n });\n if (this.triggers) {\n const triggers = parseTriggers(this.triggers);\n this._tooltipCancelShowFn = this._renderer.listen(this._elementRef.nativeElement, triggers[0].close, () => {\n timer.unsubscribe();\n cancelDelayedTooltipShowing();\n });\n }\n }\n else {\n showTooltip();\n }\n }\n /**\n * Closes an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n hide() {\n if (this._delayTimeoutId) {\n clearTimeout(this._delayTimeoutId);\n this._delayTimeoutId = undefined;\n }\n if (!this._tooltip.isShown) {\n return;\n }\n this._tooltip.instance.classMap.in = false;\n setTimeout(() => {\n this._tooltip.hide();\n }, this._fadeDuration);\n }\n ngOnDestroy() {\n this._tooltip.dispose();\n }\n}\nTooltipDirective.decorators = [\n { type: Directive, args: [{\n selector: '[tooltip], [tooltipHtml]',\n exportAs: 'bs-tooltip'\n },] },\n];\n/** @nocollapse */\nTooltipDirective.ctorParameters = () => [\n { type: ViewContainerRef, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ComponentLoaderFactory, },\n { type: TooltipConfig, },\n];\nTooltipDirective.propDecorators = {\n 'tooltip': [{ type: Input },],\n 'tooltipChange': [{ type: Output },],\n 'placement': [{ type: Input },],\n 'triggers': [{ type: Input },],\n 'container': [{ type: Input },],\n 'isOpen': [{ type: Input },],\n 'isDisabled': [{ type: Input },],\n 'containerClass': [{ type: Input },],\n 'delay': [{ type: Input },],\n 'onShown': [{ type: Output },],\n 'onHidden': [{ type: Output },],\n 'htmlContent': [{ type: Input, args: ['tooltipHtml',] },],\n '_placement': [{ type: Input, args: ['tooltipPlacement',] },],\n '_isOpen': [{ type: Input, args: ['tooltipIsOpen',] },],\n '_enable': [{ type: Input, args: ['tooltipEnable',] },],\n '_appendToBody': [{ type: Input, args: ['tooltipAppendToBody',] },],\n '_animation': [{ type: Input, args: ['tooltipAnimation',] },],\n '_popupClass': [{ type: Input, args: ['tooltipClass',] },],\n '_tooltipContext': [{ type: Input, args: ['tooltipContext',] },],\n '_tooltipPopupDelay': [{ type: Input, args: ['tooltipPopupDelay',] },],\n '_fadeDuration': [{ type: Input, args: ['tooltipFadeDuration',] },],\n '_tooltipTrigger': [{ type: Input, args: ['tooltipTrigger',] },],\n 'tooltipStateChanged': [{ type: Output },],\n};\n__decorate([\n OnChange(),\n __metadata(\"design:type\", Object)\n], TooltipDirective.prototype, \"tooltip\", void 0);\n//# sourceMappingURL=tooltip.directive.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TooltipContainerComponent } from './tooltip-container.component';\nimport { TooltipDirective } from './tooltip.directive';\nimport { TooltipConfig } from './tooltip.config';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { PositioningService } from '../positioning/index';\nexport class TooltipModule {\n static forRoot() {\n return {\n ngModule: TooltipModule,\n providers: [TooltipConfig, ComponentLoaderFactory, PositioningService]\n };\n }\n}\nTooltipModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [TooltipDirective, TooltipContainerComponent],\n exports: [TooltipDirective],\n entryComponents: [TooltipContainerComponent]\n },] },\n];\n/** @nocollapse */\nTooltipModule.ctorParameters = () => [];\n//# sourceMappingURL=tooltip.module.js.map","/* tslint:disable */\nexport const latinMap = {\n 'Á': 'A',\n 'Ă': 'A',\n 'Ắ': 'A',\n 'Ặ': 'A',\n 'Ằ': 'A',\n 'Ẳ': 'A',\n 'Ẵ': 'A',\n 'Ǎ': 'A',\n 'Â': 'A',\n 'Ấ': 'A',\n 'Ậ': 'A',\n 'Ầ': 'A',\n 'Ẩ': 'A',\n 'Ẫ': 'A',\n 'Ä': 'A',\n 'Ǟ': 'A',\n 'Ȧ': 'A',\n 'Ǡ': 'A',\n 'Ạ': 'A',\n 'Ȁ': 'A',\n 'À': 'A',\n 'Ả': 'A',\n 'Ȃ': 'A',\n 'Ā': 'A',\n 'Ą': 'A',\n 'Å': 'A',\n 'Ǻ': 'A',\n 'Ḁ': 'A',\n 'Ⱥ': 'A',\n 'Ã': 'A',\n 'Ꜳ': 'AA',\n 'Æ': 'AE',\n 'Ǽ': 'AE',\n 'Ǣ': 'AE',\n 'Ꜵ': 'AO',\n 'Ꜷ': 'AU',\n 'Ꜹ': 'AV',\n 'Ꜻ': 'AV',\n 'Ꜽ': 'AY',\n 'Ḃ': 'B',\n 'Ḅ': 'B',\n 'Ɓ': 'B',\n 'Ḇ': 'B',\n 'Ƀ': 'B',\n 'Ƃ': 'B',\n 'Ć': 'C',\n 'Č': 'C',\n 'Ç': 'C',\n 'Ḉ': 'C',\n 'Ĉ': 'C',\n 'Ċ': 'C',\n 'Ƈ': 'C',\n 'Ȼ': 'C',\n 'Ď': 'D',\n 'Ḑ': 'D',\n 'Ḓ': 'D',\n 'Ḋ': 'D',\n 'Ḍ': 'D',\n 'Ɗ': 'D',\n 'Ḏ': 'D',\n 'Dz': 'D',\n 'Dž': 'D',\n 'Đ': 'D',\n 'Ƌ': 'D',\n 'DZ': 'DZ',\n 'DŽ': 'DZ',\n 'É': 'E',\n 'Ĕ': 'E',\n 'Ě': 'E',\n 'Ȩ': 'E',\n 'Ḝ': 'E',\n 'Ê': 'E',\n 'Ế': 'E',\n 'Ệ': 'E',\n 'Ề': 'E',\n 'Ể': 'E',\n 'Ễ': 'E',\n 'Ḙ': 'E',\n 'Ë': 'E',\n 'Ė': 'E',\n 'Ẹ': 'E',\n 'Ȅ': 'E',\n 'È': 'E',\n 'Ẻ': 'E',\n 'Ȇ': 'E',\n 'Ē': 'E',\n 'Ḗ': 'E',\n 'Ḕ': 'E',\n 'Ę': 'E',\n 'Ɇ': 'E',\n 'Ẽ': 'E',\n 'Ḛ': 'E',\n 'Ꝫ': 'ET',\n 'Ḟ': 'F',\n 'Ƒ': 'F',\n 'Ǵ': 'G',\n 'Ğ': 'G',\n 'Ǧ': 'G',\n 'Ģ': 'G',\n 'Ĝ': 'G',\n 'Ġ': 'G',\n 'Ɠ': 'G',\n 'Ḡ': 'G',\n 'Ǥ': 'G',\n 'Ḫ': 'H',\n 'Ȟ': 'H',\n 'Ḩ': 'H',\n 'Ĥ': 'H',\n 'Ⱨ': 'H',\n 'Ḧ': 'H',\n 'Ḣ': 'H',\n 'Ḥ': 'H',\n 'Ħ': 'H',\n 'Í': 'I',\n 'Ĭ': 'I',\n 'Ǐ': 'I',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ḯ': 'I',\n 'İ': 'I',\n 'Ị': 'I',\n 'Ȉ': 'I',\n 'Ì': 'I',\n 'Ỉ': 'I',\n 'Ȋ': 'I',\n 'Ī': 'I',\n 'Į': 'I',\n 'Ɨ': 'I',\n 'Ĩ': 'I',\n 'Ḭ': 'I',\n 'Ꝺ': 'D',\n 'Ꝼ': 'F',\n 'Ᵹ': 'G',\n 'Ꞃ': 'R',\n 'Ꞅ': 'S',\n 'Ꞇ': 'T',\n 'Ꝭ': 'IS',\n 'Ĵ': 'J',\n 'Ɉ': 'J',\n 'Ḱ': 'K',\n 'Ǩ': 'K',\n 'Ķ': 'K',\n 'Ⱪ': 'K',\n 'Ꝃ': 'K',\n 'Ḳ': 'K',\n 'Ƙ': 'K',\n 'Ḵ': 'K',\n 'Ꝁ': 'K',\n 'Ꝅ': 'K',\n 'Ĺ': 'L',\n 'Ƚ': 'L',\n 'Ľ': 'L',\n 'Ļ': 'L',\n 'Ḽ': 'L',\n 'Ḷ': 'L',\n 'Ḹ': 'L',\n 'Ⱡ': 'L',\n 'Ꝉ': 'L',\n 'Ḻ': 'L',\n 'Ŀ': 'L',\n 'Ɫ': 'L',\n 'Lj': 'L',\n 'Ł': 'L',\n 'LJ': 'LJ',\n 'Ḿ': 'M',\n 'Ṁ': 'M',\n 'Ṃ': 'M',\n 'Ɱ': 'M',\n 'Ń': 'N',\n 'Ň': 'N',\n 'Ņ': 'N',\n 'Ṋ': 'N',\n 'Ṅ': 'N',\n 'Ṇ': 'N',\n 'Ǹ': 'N',\n 'Ɲ': 'N',\n 'Ṉ': 'N',\n 'Ƞ': 'N',\n 'Nj': 'N',\n 'Ñ': 'N',\n 'NJ': 'NJ',\n 'Ó': 'O',\n 'Ŏ': 'O',\n 'Ǒ': 'O',\n 'Ô': 'O',\n 'Ố': 'O',\n 'Ộ': 'O',\n 'Ồ': 'O',\n 'Ổ': 'O',\n 'Ỗ': 'O',\n 'Ö': 'O',\n 'Ȫ': 'O',\n 'Ȯ': 'O',\n 'Ȱ': 'O',\n 'Ọ': 'O',\n 'Ő': 'O',\n 'Ȍ': 'O',\n 'Ò': 'O',\n 'Ỏ': 'O',\n 'Ơ': 'O',\n 'Ớ': 'O',\n 'Ợ': 'O',\n 'Ờ': 'O',\n 'Ở': 'O',\n 'Ỡ': 'O',\n 'Ȏ': 'O',\n 'Ꝋ': 'O',\n 'Ꝍ': 'O',\n 'Ō': 'O',\n 'Ṓ': 'O',\n 'Ṑ': 'O',\n 'Ɵ': 'O',\n 'Ǫ': 'O',\n 'Ǭ': 'O',\n 'Ø': 'O',\n 'Ǿ': 'O',\n 'Õ': 'O',\n 'Ṍ': 'O',\n 'Ṏ': 'O',\n 'Ȭ': 'O',\n 'Ƣ': 'OI',\n 'Ꝏ': 'OO',\n 'Ɛ': 'E',\n 'Ɔ': 'O',\n 'Ȣ': 'OU',\n 'Ṕ': 'P',\n 'Ṗ': 'P',\n 'Ꝓ': 'P',\n 'Ƥ': 'P',\n 'Ꝕ': 'P',\n 'Ᵽ': 'P',\n 'Ꝑ': 'P',\n 'Ꝙ': 'Q',\n 'Ꝗ': 'Q',\n 'Ŕ': 'R',\n 'Ř': 'R',\n 'Ŗ': 'R',\n 'Ṙ': 'R',\n 'Ṛ': 'R',\n 'Ṝ': 'R',\n 'Ȑ': 'R',\n 'Ȓ': 'R',\n 'Ṟ': 'R',\n 'Ɍ': 'R',\n 'Ɽ': 'R',\n 'Ꜿ': 'C',\n 'Ǝ': 'E',\n 'Ś': 'S',\n 'Ṥ': 'S',\n 'Š': 'S',\n 'Ṧ': 'S',\n 'Ş': 'S',\n 'Ŝ': 'S',\n 'Ș': 'S',\n 'Ṡ': 'S',\n 'Ṣ': 'S',\n 'Ṩ': 'S',\n 'Ť': 'T',\n 'Ţ': 'T',\n 'Ṱ': 'T',\n 'Ț': 'T',\n 'Ⱦ': 'T',\n 'Ṫ': 'T',\n 'Ṭ': 'T',\n 'Ƭ': 'T',\n 'Ṯ': 'T',\n 'Ʈ': 'T',\n 'Ŧ': 'T',\n 'Ɐ': 'A',\n 'Ꞁ': 'L',\n 'Ɯ': 'M',\n 'Ʌ': 'V',\n 'Ꜩ': 'TZ',\n 'Ú': 'U',\n 'Ŭ': 'U',\n 'Ǔ': 'U',\n 'Û': 'U',\n 'Ṷ': 'U',\n 'Ü': 'U',\n 'Ǘ': 'U',\n 'Ǚ': 'U',\n 'Ǜ': 'U',\n 'Ǖ': 'U',\n 'Ṳ': 'U',\n 'Ụ': 'U',\n 'Ű': 'U',\n 'Ȕ': 'U',\n 'Ù': 'U',\n 'Ủ': 'U',\n 'Ư': 'U',\n 'Ứ': 'U',\n 'Ự': 'U',\n 'Ừ': 'U',\n 'Ử': 'U',\n 'Ữ': 'U',\n 'Ȗ': 'U',\n 'Ū': 'U',\n 'Ṻ': 'U',\n 'Ų': 'U',\n 'Ů': 'U',\n 'Ũ': 'U',\n 'Ṹ': 'U',\n 'Ṵ': 'U',\n 'Ꝟ': 'V',\n 'Ṿ': 'V',\n 'Ʋ': 'V',\n 'Ṽ': 'V',\n 'Ꝡ': 'VY',\n 'Ẃ': 'W',\n 'Ŵ': 'W',\n 'Ẅ': 'W',\n 'Ẇ': 'W',\n 'Ẉ': 'W',\n 'Ẁ': 'W',\n 'Ⱳ': 'W',\n 'Ẍ': 'X',\n 'Ẋ': 'X',\n 'Ý': 'Y',\n 'Ŷ': 'Y',\n 'Ÿ': 'Y',\n 'Ẏ': 'Y',\n 'Ỵ': 'Y',\n 'Ỳ': 'Y',\n 'Ƴ': 'Y',\n 'Ỷ': 'Y',\n 'Ỿ': 'Y',\n 'Ȳ': 'Y',\n 'Ɏ': 'Y',\n 'Ỹ': 'Y',\n 'Ź': 'Z',\n 'Ž': 'Z',\n 'Ẑ': 'Z',\n 'Ⱬ': 'Z',\n 'Ż': 'Z',\n 'Ẓ': 'Z',\n 'Ȥ': 'Z',\n 'Ẕ': 'Z',\n 'Ƶ': 'Z',\n 'IJ': 'IJ',\n 'Œ': 'OE',\n 'ᴀ': 'A',\n 'ᴁ': 'AE',\n 'ʙ': 'B',\n 'ᴃ': 'B',\n 'ᴄ': 'C',\n 'ᴅ': 'D',\n 'ᴇ': 'E',\n 'ꜰ': 'F',\n 'ɢ': 'G',\n 'ʛ': 'G',\n 'ʜ': 'H',\n 'ɪ': 'I',\n 'ʁ': 'R',\n 'ᴊ': 'J',\n 'ᴋ': 'K',\n 'ʟ': 'L',\n 'ᴌ': 'L',\n 'ᴍ': 'M',\n 'ɴ': 'N',\n 'ᴏ': 'O',\n 'ɶ': 'OE',\n 'ᴐ': 'O',\n 'ᴕ': 'OU',\n 'ᴘ': 'P',\n 'ʀ': 'R',\n 'ᴎ': 'N',\n 'ᴙ': 'R',\n 'ꜱ': 'S',\n 'ᴛ': 'T',\n 'ⱻ': 'E',\n 'ᴚ': 'R',\n 'ᴜ': 'U',\n 'ᴠ': 'V',\n 'ᴡ': 'W',\n 'ʏ': 'Y',\n 'ᴢ': 'Z',\n 'á': 'a',\n 'ă': 'a',\n 'ắ': 'a',\n 'ặ': 'a',\n 'ằ': 'a',\n 'ẳ': 'a',\n 'ẵ': 'a',\n 'ǎ': 'a',\n 'â': 'a',\n 'ấ': 'a',\n 'ậ': 'a',\n 'ầ': 'a',\n 'ẩ': 'a',\n 'ẫ': 'a',\n 'ä': 'a',\n 'ǟ': 'a',\n 'ȧ': 'a',\n 'ǡ': 'a',\n 'ạ': 'a',\n 'ȁ': 'a',\n 'à': 'a',\n 'ả': 'a',\n 'ȃ': 'a',\n 'ā': 'a',\n 'ą': 'a',\n 'ᶏ': 'a',\n 'ẚ': 'a',\n 'å': 'a',\n 'ǻ': 'a',\n 'ḁ': 'a',\n 'ⱥ': 'a',\n 'ã': 'a',\n 'ꜳ': 'aa',\n 'æ': 'ae',\n 'ǽ': 'ae',\n 'ǣ': 'ae',\n 'ꜵ': 'ao',\n 'ꜷ': 'au',\n 'ꜹ': 'av',\n 'ꜻ': 'av',\n 'ꜽ': 'ay',\n 'ḃ': 'b',\n 'ḅ': 'b',\n 'ɓ': 'b',\n 'ḇ': 'b',\n 'ᵬ': 'b',\n 'ᶀ': 'b',\n 'ƀ': 'b',\n 'ƃ': 'b',\n 'ɵ': 'o',\n 'ć': 'c',\n 'č': 'c',\n 'ç': 'c',\n 'ḉ': 'c',\n 'ĉ': 'c',\n 'ɕ': 'c',\n 'ċ': 'c',\n 'ƈ': 'c',\n 'ȼ': 'c',\n 'ď': 'd',\n 'ḑ': 'd',\n 'ḓ': 'd',\n 'ȡ': 'd',\n 'ḋ': 'd',\n 'ḍ': 'd',\n 'ɗ': 'd',\n 'ᶑ': 'd',\n 'ḏ': 'd',\n 'ᵭ': 'd',\n 'ᶁ': 'd',\n 'đ': 'd',\n 'ɖ': 'd',\n 'ƌ': 'd',\n 'ı': 'i',\n 'ȷ': 'j',\n 'ɟ': 'j',\n 'ʄ': 'j',\n 'dz': 'dz',\n 'dž': 'dz',\n 'é': 'e',\n 'ĕ': 'e',\n 'ě': 'e',\n 'ȩ': 'e',\n 'ḝ': 'e',\n 'ê': 'e',\n 'ế': 'e',\n 'ệ': 'e',\n 'ề': 'e',\n 'ể': 'e',\n 'ễ': 'e',\n 'ḙ': 'e',\n 'ë': 'e',\n 'ė': 'e',\n 'ẹ': 'e',\n 'ȅ': 'e',\n 'è': 'e',\n 'ẻ': 'e',\n 'ȇ': 'e',\n 'ē': 'e',\n 'ḗ': 'e',\n 'ḕ': 'e',\n 'ⱸ': 'e',\n 'ę': 'e',\n 'ᶒ': 'e',\n 'ɇ': 'e',\n 'ẽ': 'e',\n 'ḛ': 'e',\n 'ꝫ': 'et',\n 'ḟ': 'f',\n 'ƒ': 'f',\n 'ᵮ': 'f',\n 'ᶂ': 'f',\n 'ǵ': 'g',\n 'ğ': 'g',\n 'ǧ': 'g',\n 'ģ': 'g',\n 'ĝ': 'g',\n 'ġ': 'g',\n 'ɠ': 'g',\n 'ḡ': 'g',\n 'ᶃ': 'g',\n 'ǥ': 'g',\n 'ḫ': 'h',\n 'ȟ': 'h',\n 'ḩ': 'h',\n 'ĥ': 'h',\n 'ⱨ': 'h',\n 'ḧ': 'h',\n 'ḣ': 'h',\n 'ḥ': 'h',\n 'ɦ': 'h',\n 'ẖ': 'h',\n 'ħ': 'h',\n 'ƕ': 'hv',\n 'í': 'i',\n 'ĭ': 'i',\n 'ǐ': 'i',\n 'î': 'i',\n 'ï': 'i',\n 'ḯ': 'i',\n 'ị': 'i',\n 'ȉ': 'i',\n 'ì': 'i',\n 'ỉ': 'i',\n 'ȋ': 'i',\n 'ī': 'i',\n 'į': 'i',\n 'ᶖ': 'i',\n 'ɨ': 'i',\n 'ĩ': 'i',\n 'ḭ': 'i',\n 'ꝺ': 'd',\n 'ꝼ': 'f',\n 'ᵹ': 'g',\n 'ꞃ': 'r',\n 'ꞅ': 's',\n 'ꞇ': 't',\n 'ꝭ': 'is',\n 'ǰ': 'j',\n 'ĵ': 'j',\n 'ʝ': 'j',\n 'ɉ': 'j',\n 'ḱ': 'k',\n 'ǩ': 'k',\n 'ķ': 'k',\n 'ⱪ': 'k',\n 'ꝃ': 'k',\n 'ḳ': 'k',\n 'ƙ': 'k',\n 'ḵ': 'k',\n 'ᶄ': 'k',\n 'ꝁ': 'k',\n 'ꝅ': 'k',\n 'ĺ': 'l',\n 'ƚ': 'l',\n 'ɬ': 'l',\n 'ľ': 'l',\n 'ļ': 'l',\n 'ḽ': 'l',\n 'ȴ': 'l',\n 'ḷ': 'l',\n 'ḹ': 'l',\n 'ⱡ': 'l',\n 'ꝉ': 'l',\n 'ḻ': 'l',\n 'ŀ': 'l',\n 'ɫ': 'l',\n 'ᶅ': 'l',\n 'ɭ': 'l',\n 'ł': 'l',\n 'lj': 'lj',\n 'ſ': 's',\n 'ẜ': 's',\n 'ẛ': 's',\n 'ẝ': 's',\n 'ḿ': 'm',\n 'ṁ': 'm',\n 'ṃ': 'm',\n 'ɱ': 'm',\n 'ᵯ': 'm',\n 'ᶆ': 'm',\n 'ń': 'n',\n 'ň': 'n',\n 'ņ': 'n',\n 'ṋ': 'n',\n 'ȵ': 'n',\n 'ṅ': 'n',\n 'ṇ': 'n',\n 'ǹ': 'n',\n 'ɲ': 'n',\n 'ṉ': 'n',\n 'ƞ': 'n',\n 'ᵰ': 'n',\n 'ᶇ': 'n',\n 'ɳ': 'n',\n 'ñ': 'n',\n 'nj': 'nj',\n 'ó': 'o',\n 'ŏ': 'o',\n 'ǒ': 'o',\n 'ô': 'o',\n 'ố': 'o',\n 'ộ': 'o',\n 'ồ': 'o',\n 'ổ': 'o',\n 'ỗ': 'o',\n 'ö': 'o',\n 'ȫ': 'o',\n 'ȯ': 'o',\n 'ȱ': 'o',\n 'ọ': 'o',\n 'ő': 'o',\n 'ȍ': 'o',\n 'ò': 'o',\n 'ỏ': 'o',\n 'ơ': 'o',\n 'ớ': 'o',\n 'ợ': 'o',\n 'ờ': 'o',\n 'ở': 'o',\n 'ỡ': 'o',\n 'ȏ': 'o',\n 'ꝋ': 'o',\n 'ꝍ': 'o',\n 'ⱺ': 'o',\n 'ō': 'o',\n 'ṓ': 'o',\n 'ṑ': 'o',\n 'ǫ': 'o',\n 'ǭ': 'o',\n 'ø': 'o',\n 'ǿ': 'o',\n 'õ': 'o',\n 'ṍ': 'o',\n 'ṏ': 'o',\n 'ȭ': 'o',\n 'ƣ': 'oi',\n 'ꝏ': 'oo',\n 'ɛ': 'e',\n 'ᶓ': 'e',\n 'ɔ': 'o',\n 'ᶗ': 'o',\n 'ȣ': 'ou',\n 'ṕ': 'p',\n 'ṗ': 'p',\n 'ꝓ': 'p',\n 'ƥ': 'p',\n 'ᵱ': 'p',\n 'ᶈ': 'p',\n 'ꝕ': 'p',\n 'ᵽ': 'p',\n 'ꝑ': 'p',\n 'ꝙ': 'q',\n 'ʠ': 'q',\n 'ɋ': 'q',\n 'ꝗ': 'q',\n 'ŕ': 'r',\n 'ř': 'r',\n 'ŗ': 'r',\n 'ṙ': 'r',\n 'ṛ': 'r',\n 'ṝ': 'r',\n 'ȑ': 'r',\n 'ɾ': 'r',\n 'ᵳ': 'r',\n 'ȓ': 'r',\n 'ṟ': 'r',\n 'ɼ': 'r',\n 'ᵲ': 'r',\n 'ᶉ': 'r',\n 'ɍ': 'r',\n 'ɽ': 'r',\n 'ↄ': 'c',\n 'ꜿ': 'c',\n 'ɘ': 'e',\n 'ɿ': 'r',\n 'ś': 's',\n 'ṥ': 's',\n 'š': 's',\n 'ṧ': 's',\n 'ş': 's',\n 'ŝ': 's',\n 'ș': 's',\n 'ṡ': 's',\n 'ṣ': 's',\n 'ṩ': 's',\n 'ʂ': 's',\n 'ᵴ': 's',\n 'ᶊ': 's',\n 'ȿ': 's',\n 'ɡ': 'g',\n 'ᴑ': 'o',\n 'ᴓ': 'o',\n 'ᴝ': 'u',\n 'ť': 't',\n 'ţ': 't',\n 'ṱ': 't',\n 'ț': 't',\n 'ȶ': 't',\n 'ẗ': 't',\n 'ⱦ': 't',\n 'ṫ': 't',\n 'ṭ': 't',\n 'ƭ': 't',\n 'ṯ': 't',\n 'ᵵ': 't',\n 'ƫ': 't',\n 'ʈ': 't',\n 'ŧ': 't',\n 'ᵺ': 'th',\n 'ɐ': 'a',\n 'ᴂ': 'ae',\n 'ǝ': 'e',\n 'ᵷ': 'g',\n 'ɥ': 'h',\n 'ʮ': 'h',\n 'ʯ': 'h',\n 'ᴉ': 'i',\n 'ʞ': 'k',\n 'ꞁ': 'l',\n 'ɯ': 'm',\n 'ɰ': 'm',\n 'ᴔ': 'oe',\n 'ɹ': 'r',\n 'ɻ': 'r',\n 'ɺ': 'r',\n 'ⱹ': 'r',\n 'ʇ': 't',\n 'ʌ': 'v',\n 'ʍ': 'w',\n 'ʎ': 'y',\n 'ꜩ': 'tz',\n 'ú': 'u',\n 'ŭ': 'u',\n 'ǔ': 'u',\n 'û': 'u',\n 'ṷ': 'u',\n 'ü': 'u',\n 'ǘ': 'u',\n 'ǚ': 'u',\n 'ǜ': 'u',\n 'ǖ': 'u',\n 'ṳ': 'u',\n 'ụ': 'u',\n 'ű': 'u',\n 'ȕ': 'u',\n 'ù': 'u',\n 'ủ': 'u',\n 'ư': 'u',\n 'ứ': 'u',\n 'ự': 'u',\n 'ừ': 'u',\n 'ử': 'u',\n 'ữ': 'u',\n 'ȗ': 'u',\n 'ū': 'u',\n 'ṻ': 'u',\n 'ų': 'u',\n 'ᶙ': 'u',\n 'ů': 'u',\n 'ũ': 'u',\n 'ṹ': 'u',\n 'ṵ': 'u',\n 'ᵫ': 'ue',\n 'ꝸ': 'um',\n 'ⱴ': 'v',\n 'ꝟ': 'v',\n 'ṿ': 'v',\n 'ʋ': 'v',\n 'ᶌ': 'v',\n 'ⱱ': 'v',\n 'ṽ': 'v',\n 'ꝡ': 'vy',\n 'ẃ': 'w',\n 'ŵ': 'w',\n 'ẅ': 'w',\n 'ẇ': 'w',\n 'ẉ': 'w',\n 'ẁ': 'w',\n 'ⱳ': 'w',\n 'ẘ': 'w',\n 'ẍ': 'x',\n 'ẋ': 'x',\n 'ᶍ': 'x',\n 'ý': 'y',\n 'ŷ': 'y',\n 'ÿ': 'y',\n 'ẏ': 'y',\n 'ỵ': 'y',\n 'ỳ': 'y',\n 'ƴ': 'y',\n 'ỷ': 'y',\n 'ỿ': 'y',\n 'ȳ': 'y',\n 'ẙ': 'y',\n 'ɏ': 'y',\n 'ỹ': 'y',\n 'ź': 'z',\n 'ž': 'z',\n 'ẑ': 'z',\n 'ʑ': 'z',\n 'ⱬ': 'z',\n 'ż': 'z',\n 'ẓ': 'z',\n 'ȥ': 'z',\n 'ẕ': 'z',\n 'ᵶ': 'z',\n 'ᶎ': 'z',\n 'ʐ': 'z',\n 'ƶ': 'z',\n 'ɀ': 'z',\n 'ff': 'ff',\n 'ffi': 'ffi',\n 'ffl': 'ffl',\n 'fi': 'fi',\n 'fl': 'fl',\n 'ij': 'ij',\n 'œ': 'oe',\n 'st': 'st',\n 'ₐ': 'a',\n 'ₑ': 'e',\n 'ᵢ': 'i',\n 'ⱼ': 'j',\n 'ₒ': 'o',\n 'ᵣ': 'r',\n 'ᵤ': 'u',\n 'ᵥ': 'v',\n 'ₓ': 'x'\n};\n//# sourceMappingURL=latin-map.js.map","export class TypeaheadOptions {\n constructor(options) {\n Object.assign(this, options);\n }\n}\n//# sourceMappingURL=typeahead-options.class.js.map","export class TypeaheadMatch {\n constructor(item, value = item, header = false) {\n this.item = item;\n this.value = value;\n this.header = header;\n }\n isHeader() {\n return this.header;\n }\n toString() {\n return this.value;\n }\n}\n//# sourceMappingURL=typeahead-match.class.js.map","import { latinMap } from './latin-map';\nexport function latinize(str) {\n if (!str) {\n return '';\n }\n return str.replace(/[^A-Za-z0-9\\[\\] ]/g, function (a) {\n return latinMap[a] || a;\n });\n}\nexport function escapeRegexp(queryToEscape) {\n // Regex: capture the whole query string and replace it with the string\n // that will be used to match the results, for example if the capture is\n // 'a' the result will be \\a\n return queryToEscape.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1');\n}\n/* tslint:disable */\nexport function tokenize(str, wordRegexDelimiters = ' ', phraseRegexDelimiters = '') {\n /* tslint:enable */\n const regexStr = `(?:[${phraseRegexDelimiters}])([^${phraseRegexDelimiters}]+)` +\n `(?:[${phraseRegexDelimiters}])|([^${wordRegexDelimiters}]+)`;\n const preTokenized = str.split(new RegExp(regexStr, 'g'));\n const result = [];\n const preTokenizedLength = preTokenized.length;\n let token;\n const replacePhraseDelimiters = new RegExp(`[${phraseRegexDelimiters}]+`, 'g');\n for (let i = 0; i < preTokenizedLength; i += 1) {\n token = preTokenized[i];\n if (token && token.length && token !== wordRegexDelimiters) {\n result.push(token.replace(replacePhraseDelimiters, ''));\n }\n }\n return result;\n}\nexport function getValueFromObject(object, option) {\n if (!option || typeof object !== 'object') {\n return object.toString();\n }\n if (option.endsWith('()')) {\n const functionName = option.slice(0, option.length - 2);\n return object[functionName]().toString();\n }\n const properties = option\n .replace(/\\[(\\w+)\\]/g, '.$1')\n .replace(/^\\./, '');\n const propertiesArray = properties.split('.');\n for (const property of propertiesArray) {\n if (property in object) {\n // tslint:disable-next-line\n object = object[property];\n }\n }\n if (!object) {\n return '';\n }\n return object.toString();\n}\n//# sourceMappingURL=typeahead-utils.js.map","import { Component, ElementRef, HostListener, ViewChild, ViewChildren, Renderer2 } from '@angular/core';\nimport { isBs3, Utils } from '../utils';\nimport { latinize } from './typeahead-utils';\nexport class TypeaheadContainerComponent {\n constructor(element, renderer) {\n this.renderer = renderer;\n this.isFocused = false;\n this._matches = [];\n this.isScrolledIntoView = function (elem) {\n const containerViewTop = this.ulElement.nativeElement.scrollTop;\n const containerViewBottom = containerViewTop + this.ulElement.nativeElement.offsetHeight;\n const elemTop = elem.offsetTop;\n const elemBottom = elemTop + elem.offsetHeight;\n return ((elemBottom <= containerViewBottom) && (elemTop >= containerViewTop));\n };\n this.element = element;\n }\n get isBs4() {\n return !isBs3();\n }\n get active() {\n return this._active;\n }\n get matches() {\n return this._matches;\n }\n set matches(value) {\n this._matches = value;\n this.needScrollbar = this.typeaheadScrollable && this.typeaheadOptionsInScrollableView < this.matches.length;\n if (this.typeaheadScrollable) {\n setTimeout(() => {\n this.setScrollableMode();\n });\n }\n if (this._matches.length > 0) {\n this._active = this._matches[0];\n if (this._active.isHeader()) {\n this.nextActiveMatch();\n }\n }\n }\n get optionsListTemplate() {\n return this.parent ? this.parent.optionsListTemplate : undefined;\n }\n get typeaheadScrollable() {\n return this.parent ? this.parent.typeaheadScrollable : false;\n }\n get typeaheadOptionsInScrollableView() {\n return this.parent ? this.parent.typeaheadOptionsInScrollableView : 5;\n }\n get itemTemplate() {\n return this.parent ? this.parent.typeaheadItemTemplate : undefined;\n }\n selectActiveMatch() {\n this.selectMatch(this._active);\n }\n prevActiveMatch() {\n const index = this.matches.indexOf(this._active);\n this._active = this.matches[index - 1 < 0 ? this.matches.length - 1 : index - 1];\n if (this._active.isHeader()) {\n this.prevActiveMatch();\n }\n if (this.typeaheadScrollable) {\n this.scrollPrevious(index);\n }\n }\n nextActiveMatch() {\n const index = this.matches.indexOf(this._active);\n this._active = this.matches[index + 1 > this.matches.length - 1 ? 0 : index + 1];\n if (this._active.isHeader()) {\n this.nextActiveMatch();\n }\n if (this.typeaheadScrollable) {\n this.scrollNext(index);\n }\n }\n selectActive(value) {\n this.isFocused = true;\n this._active = value;\n }\n hightlight(match, query) {\n let itemStr = match.value;\n let itemStrHelper = (this.parent && this.parent.typeaheadLatinize\n ? latinize(itemStr)\n : itemStr).toLowerCase();\n let startIdx;\n let tokenLen;\n // Replaces the capture string with the same string inside of a \"strong\" tag\n if (typeof query === 'object') {\n const queryLen = query.length;\n for (let i = 0; i < queryLen; i += 1) {\n // query[i] is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query[i]);\n tokenLen = query[i].length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n `${itemStr.substring(0, startIdx)}<strong>${itemStr.substring(startIdx, startIdx + tokenLen)}</strong>` +\n `${itemStr.substring(startIdx + tokenLen)}`;\n itemStrHelper =\n `${itemStrHelper.substring(0, startIdx)} ${' '.repeat(tokenLen)} ` +\n `${itemStrHelper.substring(startIdx + tokenLen)}`;\n }\n }\n }\n else if (query) {\n // query is already latinized and lower case\n startIdx = itemStrHelper.indexOf(query);\n tokenLen = query.length;\n if (startIdx >= 0 && tokenLen > 0) {\n itemStr =\n `${itemStr.substring(0, startIdx)}<strong>${itemStr.substring(startIdx, startIdx + tokenLen)}</strong>` +\n `${itemStr.substring(startIdx + tokenLen)}`;\n }\n }\n return itemStr;\n }\n focusLost() {\n this.isFocused = false;\n }\n isActive(value) {\n return this._active === value;\n }\n selectMatch(value, e = void 0) {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n this.parent.changeModel(value);\n setTimeout(() => this.parent.typeaheadOnSelect.emit(value), 0);\n return false;\n }\n setScrollableMode() {\n if (!this.ulElement) {\n this.ulElement = this.element;\n }\n if (this.liElements.first) {\n const ulStyles = Utils.getStyles(this.ulElement.nativeElement);\n const liStyles = Utils.getStyles(this.liElements.first.nativeElement);\n const ulPaddingBottom = parseFloat((ulStyles['padding-bottom'] ? ulStyles['padding-bottom'] : '').replace('px', ''));\n const ulPaddingTop = parseFloat((ulStyles['padding-top'] ? ulStyles['padding-top'] : '0').replace('px', ''));\n const optionHeight = parseFloat((liStyles['height'] ? liStyles['height'] : '0').replace('px', ''));\n const height = this.typeaheadOptionsInScrollableView * optionHeight;\n this.guiHeight = `${height + ulPaddingTop + ulPaddingBottom}px`;\n }\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'visible');\n }\n scrollPrevious(index) {\n if (index === 0) {\n this.scrollToBottom();\n return;\n }\n if (this.liElements) {\n const liElement = this.liElements.toArray()[index - 1];\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\n this.ulElement.nativeElement.scrollTop = liElement.nativeElement.offsetTop;\n }\n }\n }\n scrollNext(index) {\n if (index + 1 > this.matches.length - 1) {\n this.scrollToTop();\n return;\n }\n if (this.liElements) {\n const liElement = this.liElements.toArray()[index + 1];\n if (liElement && !this.isScrolledIntoView(liElement.nativeElement)) {\n this.ulElement.nativeElement.scrollTop =\n liElement.nativeElement.offsetTop -\n this.ulElement.nativeElement.offsetHeight +\n liElement.nativeElement.offsetHeight;\n }\n }\n }\n scrollToBottom() {\n this.ulElement.nativeElement.scrollTop = this.ulElement.nativeElement.scrollHeight;\n }\n scrollToTop() {\n this.ulElement.nativeElement.scrollTop = 0;\n }\n}\nTypeaheadContainerComponent.decorators = [\n { type: Component, args: [{\n selector: 'typeahead-container',\n // tslint:disable-next-line\n template: \"<!-- inject options list template --> <ng-template [ngTemplateOutlet]=\\\"optionsListTemplate || (isBs4 ? bs4Template : bs3Template)\\\" [ngTemplateOutletContext]=\\\"{matches:matches, itemTemplate:itemTemplate, query:query}\\\"></ng-template> <!-- default options item template --> <ng-template #bsItemTemplate let-match=\\\"match\\\" let-query=\\\"query\\\"><span [innerHtml]=\\\"hightlight(match, query)\\\"></span> </ng-template> <!-- Bootstrap 3 options list template --> <ng-template #bs3Template> <ul class=\\\"dropdown-menu\\\" #ulElement [style.overflow-y]=\\\"needScrollbar ? 'scroll': 'auto'\\\" [style.height]=\\\"needScrollbar ? guiHeight: 'auto'\\\"> <ng-template ngFor let-match let-i=\\\"index\\\" [ngForOf]=\\\"matches\\\"> <li #liElements *ngIf=\\\"match.isHeader()\\\" class=\\\"dropdown-header\\\">{{ match }}</li> <li #liElements *ngIf=\\\"!match.isHeader()\\\" [class.active]=\\\"isActive(match)\\\" (mouseenter)=\\\"selectActive(match)\\\"> <a href=\\\"#\\\" (click)=\\\"selectMatch(match, $event)\\\" tabindex=\\\"-1\\\"> <ng-template [ngTemplateOutlet]=\\\"itemTemplate || bsItemTemplate\\\" [ngTemplateOutletContext]=\\\"{item:match.item, index:i, match:match, query:query}\\\"></ng-template> </a> </li> </ng-template> </ul> </ng-template> <!-- Bootstrap 4 options list template --> <ng-template #bs4Template> <ng-template ngFor let-match let-i=\\\"index\\\" [ngForOf]=\\\"matches\\\"> <h6 *ngIf=\\\"match.isHeader()\\\" class=\\\"dropdown-header\\\">{{ match }}</h6> <ng-template [ngIf]=\\\"!match.isHeader()\\\"> <button #liElements class=\\\"dropdown-item\\\" (click)=\\\"selectMatch(match, $event)\\\" (mouseenter)=\\\"selectActive(match)\\\" [class.active]=\\\"isActive(match)\\\"> <ng-template [ngTemplateOutlet]=\\\"itemTemplate || bsItemTemplate\\\" [ngTemplateOutletContext]=\\\"{item:match.item, index:i, match:match, query:query}\\\"></ng-template> </button> </ng-template> </ng-template> </ng-template> \",\n host: {\n class: 'dropdown open',\n '[class.dropdown-menu]': 'isBs4',\n '[style.overflow-y]': `isBs4 && needScrollbar ? 'scroll': 'visible'`,\n '[style.height]': `isBs4 && needScrollbar ? guiHeight: 'auto'`,\n '[style.visibility]': `typeaheadScrollable ? 'hidden' : 'visible'`,\n '[class.dropup]': 'dropup',\n style: 'position: absolute;display: block;'\n }\n },] },\n];\n/** @nocollapse */\nTypeaheadContainerComponent.ctorParameters = () => [\n { type: ElementRef, },\n { type: Renderer2, },\n];\nTypeaheadContainerComponent.propDecorators = {\n 'ulElement': [{ type: ViewChild, args: ['ulElement',] },],\n 'liElements': [{ type: ViewChildren, args: ['liElements',] },],\n 'focusLost': [{ type: HostListener, args: ['mouseleave',] }, { type: HostListener, args: ['blur',] },],\n};\n//# sourceMappingURL=typeahead-container.component.js.map","/* tslint:disable:max-file-line-count */\nimport { ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport 'rxjs/add/observable/from';\nimport 'rxjs/add/operator/debounceTime';\nimport 'rxjs/add/operator/filter';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/switchMap';\nimport 'rxjs/add/operator/mergeMap';\nimport 'rxjs/add/operator/toArray';\nimport { Observable } from 'rxjs/Observable';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\nimport { TypeaheadMatch } from './typeahead-match.class';\nimport { getValueFromObject, latinize, tokenize } from './typeahead-utils';\nexport class TypeaheadDirective {\n constructor(ngControl, element, viewContainerRef, renderer, cis, changeDetection) {\n this.ngControl = ngControl;\n this.element = element;\n this.renderer = renderer;\n this.changeDetection = changeDetection;\n /** minimal no of characters that needs to be entered before\n * typeahead kicks-in. When set to 0, typeahead shows on focus with full\n * list of options (limited as normal by typeaheadOptionsLimit)\n */\n this.typeaheadMinLength = void 0;\n /** should be used only in case of typeahead attribute is array.\n * If true - loading of options will be async, otherwise - sync.\n * true make sense if options array is large.\n */\n this.typeaheadAsync = void 0;\n /** match latin symbols.\n * If true the word súper would match super and vice versa.\n */\n this.typeaheadLatinize = true;\n /** Can be use to search words by inserting a single white space between each characters\n * for example 'C a l i f o r n i a' will match 'California'.\n */\n this.typeaheadSingleWords = true;\n /** should be used only in case typeaheadSingleWords attribute is true.\n * Sets the word delimiter to break words. Defaults to space.\n */\n this.typeaheadWordDelimiters = ' ';\n /** should be used only in case typeaheadSingleWords attribute is true.\n * Sets the word delimiter to match exact phrase.\n * Defaults to simple and double quotes.\n */\n this.typeaheadPhraseDelimiters = '\\'\"';\n /** specifies if typeahead is scrollable */\n this.typeaheadScrollable = false;\n /** specifies number of options to show in scroll view */\n this.typeaheadOptionsInScrollableView = 5;\n /** fired when 'busy' state of this component was changed,\n * fired on async mode only, returns boolean\n */\n this.typeaheadLoading = new EventEmitter();\n /** fired on every key event and returns true\n * in case of matches are not detected\n */\n this.typeaheadNoResults = new EventEmitter();\n /** fired when option was selected, return object with data of this option */\n this.typeaheadOnSelect = new EventEmitter();\n /** fired when blur event occurres. returns the active item */\n this.typeaheadOnBlur = new EventEmitter();\n /** This attribute indicates that the dropdown should be opened upwards */\n this.dropup = false;\n this.isTypeaheadOptionsListActive = false;\n this.keyUpEventEmitter = new EventEmitter();\n this.placement = 'bottom-left';\n this._subscriptions = [];\n this._typeahead = cis.createLoader(element, viewContainerRef, renderer);\n }\n ngOnInit() {\n this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;\n this.typeaheadMinLength =\n this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;\n this.typeaheadWaitMs = this.typeaheadWaitMs || 0;\n // async should be false in case of array\n if (this.typeaheadAsync === undefined &&\n !(this.typeahead instanceof Observable)) {\n this.typeaheadAsync = false;\n }\n if (this.typeahead instanceof Observable) {\n this.typeaheadAsync = true;\n }\n if (this.typeaheadAsync) {\n this.asyncActions();\n }\n else {\n this.syncActions();\n }\n }\n onInput(e) {\n // For `<input>`s, use the `value` property. For others that don't have a\n // `value` (such as `<span contenteditable=\"true\">`), use either\n // `textContent` or `innerText` (depending on which one is supported, i.e.\n // Firefox or IE).\n const value = e.target.value !== undefined\n ? e.target.value\n : e.target.textContent !== undefined\n ? e.target.textContent\n : e.target.innerText;\n if (value != null && value.trim().length >= this.typeaheadMinLength) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(e.target.value);\n }\n else {\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(false);\n this.hide();\n }\n }\n onChange(e) {\n if (this._container) {\n // esc\n if (e.keyCode === 27) {\n this.hide();\n return;\n }\n // up\n if (e.keyCode === 38) {\n this._container.prevActiveMatch();\n return;\n }\n // down\n if (e.keyCode === 40) {\n this._container.nextActiveMatch();\n return;\n }\n // enter, tab\n if (e.keyCode === 13) {\n this._container.selectActiveMatch();\n return;\n }\n }\n }\n onFocus() {\n if (this.typeaheadMinLength === 0) {\n this.typeaheadLoading.emit(true);\n this.keyUpEventEmitter.emit(this.element.nativeElement.value || '');\n }\n }\n onBlur() {\n if (this._container && !this._container.isFocused) {\n this.typeaheadOnBlur.emit(this._container.active);\n }\n }\n onKeydown(e) {\n // no container - no problems\n if (!this._container) {\n return;\n }\n // if an item is visible - prevent form submission\n if (e.keyCode === 13) {\n e.preventDefault();\n return;\n }\n // if an item is visible - don't change focus\n if (e.keyCode === 9) {\n e.preventDefault();\n this._container.selectActiveMatch();\n return;\n }\n }\n changeModel(match) {\n const valueStr = match.value;\n this.ngControl.viewToModelUpdate(valueStr);\n (this.ngControl.control).setValue(valueStr);\n this.changeDetection.markForCheck();\n this.hide();\n }\n get matches() {\n return this._matches;\n }\n show() {\n this._typeahead\n .attach(TypeaheadContainerComponent)\n .to(this.container)\n .position({ attachment: `${this.dropup ? 'top' : 'bottom'} left` })\n .show({\n typeaheadRef: this,\n placement: this.placement,\n animation: false,\n dropup: this.dropup\n });\n this._outsideClickListener = this.renderer.listen('document', 'click', (e) => {\n if (this.typeaheadMinLength === 0 && this.element.nativeElement.contains(e.target)) {\n return;\n }\n this.onOutsideClick();\n });\n this._container = this._typeahead.instance;\n this._container.parent = this;\n // This improves the speed as it won't have to be done for each list item\n const normalizedQuery = (this.typeaheadLatinize\n ? latinize(this.ngControl.control.value)\n : this.ngControl.control.value)\n .toString()\n .toLowerCase();\n this._container.query = this.typeaheadSingleWords\n ? tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)\n : normalizedQuery;\n this._container.matches = this._matches;\n this.element.nativeElement.focus();\n }\n hide() {\n if (this._typeahead.isShown) {\n this._typeahead.hide();\n this._outsideClickListener();\n this._container = null;\n }\n }\n onOutsideClick() {\n if (this._container && !this._container.isFocused) {\n this.hide();\n }\n }\n ngOnDestroy() {\n // clean up subscriptions\n for (const sub of this._subscriptions) {\n sub.unsubscribe();\n }\n this._typeahead.dispose();\n }\n asyncActions() {\n this._subscriptions.push(this.keyUpEventEmitter\n .debounceTime(this.typeaheadWaitMs)\n .switchMap(() => this.typeahead)\n .subscribe((matches) => {\n this.finalizeAsyncCall(matches);\n }));\n }\n syncActions() {\n this._subscriptions.push(this.keyUpEventEmitter\n .debounceTime(this.typeaheadWaitMs)\n .mergeMap((value) => {\n const normalizedQuery = this.normalizeQuery(value);\n return Observable.from(this.typeahead)\n .filter((option) => {\n return (option &&\n this.testMatch(this.normalizeOption(option), normalizedQuery));\n })\n .toArray();\n })\n .subscribe((matches) => {\n this.finalizeAsyncCall(matches);\n }));\n }\n normalizeOption(option) {\n const optionValue = getValueFromObject(option, this.typeaheadOptionField);\n const normalizedOption = this.typeaheadLatinize\n ? latinize(optionValue)\n : optionValue;\n return normalizedOption.toLowerCase();\n }\n normalizeQuery(value) {\n // If singleWords, break model here to not be doing extra work on each\n // iteration\n let normalizedQuery = (this.typeaheadLatinize\n ? latinize(value)\n : value)\n .toString()\n .toLowerCase();\n normalizedQuery = this.typeaheadSingleWords\n ? tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)\n : normalizedQuery;\n return normalizedQuery;\n }\n testMatch(match, test) {\n let spaceLength;\n if (typeof test === 'object') {\n spaceLength = test.length;\n for (let i = 0; i < spaceLength; i += 1) {\n if (test[i].length > 0 && match.indexOf(test[i]) < 0) {\n return false;\n }\n }\n return true;\n }\n return match.indexOf(test) >= 0;\n }\n finalizeAsyncCall(matches) {\n this.prepareMatches(matches);\n this.typeaheadLoading.emit(false);\n this.typeaheadNoResults.emit(!this.hasMatches());\n if (!this.hasMatches()) {\n this.hide();\n return;\n }\n if (this._container) {\n // This improves the speed as it won't have to be done for each list item\n const normalizedQuery = (this.typeaheadLatinize\n ? latinize(this.ngControl.control.value)\n : this.ngControl.control.value)\n .toString()\n .toLowerCase();\n this._container.query = this.typeaheadSingleWords\n ? tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)\n : normalizedQuery;\n this._container.matches = this._matches;\n }\n else {\n this.show();\n }\n }\n prepareMatches(options) {\n const limited = options.slice(0, this.typeaheadOptionsLimit);\n if (this.typeaheadGroupField) {\n let matches = [];\n // extract all group names\n const groups = limited\n .map((option) => getValueFromObject(option, this.typeaheadGroupField))\n .filter((v, i, a) => a.indexOf(v) === i);\n groups.forEach((group) => {\n // add group header to array of matches\n matches.push(new TypeaheadMatch(group, group, true));\n // add each item of group to array of matches\n matches = matches.concat(limited\n .filter((option) => getValueFromObject(option, this.typeaheadGroupField) === group)\n .map((option) => new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField))));\n });\n this._matches = matches;\n }\n else {\n this._matches = limited.map((option) => new TypeaheadMatch(option, getValueFromObject(option, this.typeaheadOptionField)));\n }\n }\n hasMatches() {\n return this._matches.length > 0;\n }\n}\nTypeaheadDirective.decorators = [\n { type: Directive, args: [{ selector: '[typeahead]', exportAs: 'bs-typeahead' },] },\n];\n/** @nocollapse */\nTypeaheadDirective.ctorParameters = () => [\n { type: NgControl, },\n { type: ElementRef, },\n { type: ViewContainerRef, },\n { type: Renderer2, },\n { type: ComponentLoaderFactory, },\n { type: ChangeDetectorRef, },\n];\nTypeaheadDirective.propDecorators = {\n 'typeahead': [{ type: Input },],\n 'typeaheadMinLength': [{ type: Input },],\n 'typeaheadWaitMs': [{ type: Input },],\n 'typeaheadOptionsLimit': [{ type: Input },],\n 'typeaheadOptionField': [{ type: Input },],\n 'typeaheadGroupField': [{ type: Input },],\n 'typeaheadAsync': [{ type: Input },],\n 'typeaheadLatinize': [{ type: Input },],\n 'typeaheadSingleWords': [{ type: Input },],\n 'typeaheadWordDelimiters': [{ type: Input },],\n 'typeaheadPhraseDelimiters': [{ type: Input },],\n 'typeaheadItemTemplate': [{ type: Input },],\n 'optionsListTemplate': [{ type: Input },],\n 'typeaheadScrollable': [{ type: Input },],\n 'typeaheadOptionsInScrollableView': [{ type: Input },],\n 'typeaheadLoading': [{ type: Output },],\n 'typeaheadNoResults': [{ type: Output },],\n 'typeaheadOnSelect': [{ type: Output },],\n 'typeaheadOnBlur': [{ type: Output },],\n 'container': [{ type: Input },],\n 'dropup': [{ type: Input },],\n 'onInput': [{ type: HostListener, args: ['input', ['$event'],] },],\n 'onChange': [{ type: HostListener, args: ['keyup', ['$event'],] },],\n 'onFocus': [{ type: HostListener, args: ['click',] }, { type: HostListener, args: ['focus',] },],\n 'onBlur': [{ type: HostListener, args: ['blur',] },],\n 'onKeydown': [{ type: HostListener, args: ['keydown', ['$event'],] },],\n};\n//# sourceMappingURL=typeahead.directive.js.map","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TypeaheadContainerComponent } from './typeahead-container.component';\nimport { TypeaheadDirective } from './typeahead.directive';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { PositioningService } from '../positioning/index';\nexport class TypeaheadModule {\n static forRoot() {\n return {\n ngModule: TypeaheadModule,\n providers: [ComponentLoaderFactory, PositioningService]\n };\n }\n}\nTypeaheadModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [TypeaheadContainerComponent, TypeaheadDirective],\n exports: [TypeaheadContainerComponent, TypeaheadDirective],\n entryComponents: [TypeaheadContainerComponent]\n },] },\n];\n/** @nocollapse */\nTypeaheadModule.ctorParameters = () => [];\n//# sourceMappingURL=typeahead.module.js.map","import { Injectable } from '@angular/core';\n/**\n * Configuration service for the Popover directive.\n * You can inject this service, typically in your root component, and customize\n * the values of its properties in order to provide default values for all the\n * popovers used in the application.\n */\nexport class PopoverConfig {\n constructor() {\n /**\n * Placement of a popover. Accepts: \"top\", \"bottom\", \"left\", \"right\", \"auto\"\n */\n this.placement = 'top';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n this.triggers = 'click';\n this.outsideClick = false;\n }\n}\nPopoverConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nPopoverConfig.ctorParameters = () => [];\n//# sourceMappingURL=popover.config.js.map","import { ChangeDetectionStrategy, Input, Component } from '@angular/core';\nimport { PopoverConfig } from './popover.config';\nimport { isBs3 } from '../utils/theme-provider';\nexport class PopoverContainerComponent {\n constructor(config) {\n Object.assign(this, config);\n }\n get isBs3() {\n return isBs3();\n }\n}\nPopoverContainerComponent.decorators = [\n { type: Component, args: [{\n selector: 'popover-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line\n host: {\n '[class]': '\"popover in popover-\" + placement + \" \" + \"bs-popover-\" + placement + \" \" + placement + \" \" + containerClass',\n '[class.show]': '!isBs3',\n role: 'tooltip',\n style: 'display:block;'\n },\n styles: [\n `\n :host.bs-popover-top .arrow, :host.bs-popover-bottom .arrow {\n left: 50%;\n margin-left: -8px;\n }\n :host.bs-popover-left .arrow, :host.bs-popover-right .arrow {\n top: 50%;\n margin-top: -8px;\n }\n `\n ],\n template: \"<div class=\\\"popover-arrow arrow\\\"></div> <h3 class=\\\"popover-title popover-header\\\" *ngIf=\\\"title\\\">{{ title }}</h3> <div class=\\\"popover-content popover-body\\\"> <ng-content></ng-content> </div> \"\n },] },\n];\n/** @nocollapse */\nPopoverContainerComponent.ctorParameters = () => [\n { type: PopoverConfig, },\n];\nPopoverContainerComponent.propDecorators = {\n 'placement': [{ type: Input },],\n 'title': [{ type: Input },],\n};\n//# sourceMappingURL=popover-container.component.js.map","import { Directive, ElementRef, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';\nimport { PopoverConfig } from './popover.config';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { PopoverContainerComponent } from './popover-container.component';\n/**\n * A lightweight, extensible directive for fancy popover creation.\n */\nexport class PopoverDirective {\n constructor(_elementRef, _renderer, _viewContainerRef, _config, cis) {\n /**\n * Close popover on outside click\n */\n this.outsideClick = false;\n /**\n * Css class for popover container\n */\n this.containerClass = '';\n this._isInited = false;\n this._popover = cis\n .createLoader(_elementRef, _viewContainerRef, _renderer)\n .provide({ provide: PopoverConfig, useValue: _config });\n Object.assign(this, _config);\n this.onShown = this._popover.onShown;\n this.onHidden = this._popover.onHidden;\n // fix: no focus on button on Mac OS #1795\n if (typeof window !== 'undefined') {\n _elementRef.nativeElement.addEventListener('click', function () {\n try {\n _elementRef.nativeElement.focus();\n }\n catch (err) {\n return;\n }\n });\n }\n }\n /**\n * Returns whether or not the popover is currently being shown\n */\n get isOpen() {\n return this._popover.isShown;\n }\n set isOpen(value) {\n if (value) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n /**\n * Opens an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n show() {\n if (this._popover.isShown || !this.popover) {\n return;\n }\n this._popover\n .attach(PopoverContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({\n content: this.popover,\n context: this.popoverContext,\n placement: this.placement,\n title: this.popoverTitle,\n containerClass: this.containerClass\n });\n this.isOpen = true;\n }\n /**\n * Closes an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n hide() {\n if (this.isOpen) {\n this._popover.hide();\n this.isOpen = false;\n }\n }\n /**\n * Toggles an element’s popover. This is considered a “manual” triggering of\n * the popover.\n */\n toggle() {\n if (this.isOpen) {\n return this.hide();\n }\n this.show();\n }\n ngOnInit() {\n // fix: seems there are an issue with `routerLinkActive`\n // which result in duplicated call ngOnInit without call to ngOnDestroy\n // read more: https://github.com/valor-software/ngx-bootstrap/issues/1885\n if (this._isInited) {\n return;\n }\n this._isInited = true;\n this._popover.listen({\n triggers: this.triggers,\n outsideClick: this.outsideClick,\n show: () => this.show()\n });\n }\n ngOnDestroy() {\n this._popover.dispose();\n }\n}\nPopoverDirective.decorators = [\n { type: Directive, args: [{ selector: '[popover]', exportAs: 'bs-popover' },] },\n];\n/** @nocollapse */\nPopoverDirective.ctorParameters = () => [\n { type: ElementRef, },\n { type: Renderer2, },\n { type: ViewContainerRef, },\n { type: PopoverConfig, },\n { type: ComponentLoaderFactory, },\n];\nPopoverDirective.propDecorators = {\n 'popover': [{ type: Input },],\n 'popoverContext': [{ type: Input },],\n 'popoverTitle': [{ type: Input },],\n 'placement': [{ type: Input },],\n 'outsideClick': [{ type: Input },],\n 'triggers': [{ type: Input },],\n 'container': [{ type: Input },],\n 'containerClass': [{ type: Input },],\n 'isOpen': [{ type: Input },],\n 'onShown': [{ type: Output },],\n 'onHidden': [{ type: Output },],\n};\n//# sourceMappingURL=popover.directive.js.map","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ComponentLoaderFactory } from '../component-loader/index';\nimport { PositioningService } from '../positioning/index';\nimport { PopoverConfig } from './popover.config';\nimport { PopoverDirective } from './popover.directive';\nimport { PopoverContainerComponent } from './popover-container.component';\nexport class PopoverModule {\n static forRoot() {\n return {\n ngModule: PopoverModule,\n providers: [PopoverConfig, ComponentLoaderFactory, PositioningService]\n };\n }\n}\nPopoverModule.decorators = [\n { type: NgModule, args: [{\n imports: [CommonModule],\n declarations: [PopoverDirective, PopoverContainerComponent],\n exports: [PopoverDirective],\n entryComponents: [PopoverContainerComponent]\n },] },\n];\n/** @nocollapse */\nPopoverModule.ctorParameters = () => [];\n//# sourceMappingURL=popover.module.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\nconst symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n};\nconst numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\nconst pluralForm = function (num) {\n return num === 0 ? 0 : num === 1 ? 1 : num === 2 ? 2 : num % 100 >= 3 && num % 100 <= 10 ? 3 : num % 100 >= 11 ? 4 : 5;\n};\nconst plurals = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nconst pluralize = function (u) {\n return function (num, withoutSuffix) {\n const f = pluralForm(num);\n let str = plurals[u][pluralForm(num)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, num.toString());\n };\n};\nconst months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n];\nexport const arLocale = {\n abbr: 'ar',\n months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM(input) {\n return 'م' === input;\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n }\n else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse(str) {\n return str.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat(str) {\n return str.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6,\n doy: 12 // The week that contains Jan 1st is the first week of the year.\n }\n};\n//# sourceMappingURL=ar.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\nconst months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\nconst monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\nfunction plural(num) {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\nfunction translate(num, withoutSuffix, key, isFuture) {\n const result = num + ' ';\n switch (key) {\n case 's':// a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'ss':// 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'sekundy' : 'sekund');\n }\n else {\n return result + 'sekundami';\n }\n // break;\n case 'm':// a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm':// 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'minuty' : 'minut');\n }\n else {\n return result + 'minutami';\n }\n // break;\n case 'h':// an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh':// 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'hodiny' : 'hodin');\n }\n else {\n return result + 'hodinami';\n }\n // break;\n case 'd':// a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd':// 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'dny' : 'dní');\n }\n else {\n return result + 'dny';\n }\n // break;\n case 'M':// a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM':// 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'měsíce' : 'měsíců');\n }\n else {\n return result + 'měsíci';\n }\n // break;\n case 'y':// a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy':// 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'roky' : 'let');\n }\n else {\n return result + 'lety';\n }\n }\n}\nexport const csLocale = {\n abbr: 'cs',\n months,\n monthsShort,\n monthsParse: (function (months, monthsShort) {\n let i, _monthsParse = [];\n for (i = 0; i < 12; i++) {\n // use custom parser to solve problem with July (červenec)\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n }\n return _monthsParse;\n }(months, monthsShort)),\n shortMonthsParse: (function (monthsShort) {\n let i, _shortMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n }\n return _shortMonthsParse;\n }(monthsShort)),\n longMonthsParse: (function (months) {\n let i, _longMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n }\n return _longMonthsParse;\n }(months)),\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek(dayOfWeek) {\n switch (dayOfWeek) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek(dayOfWeek) {\n switch (dayOfWeek) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=cs.js.map","// tslint:disable:comment-format\n//! moment.js locale configuration\n//! locale : Danish (Denmark) [da]\n//! author : Per Hansen : https://github.com/perhp\nexport const daLocale = {\n abbr: 'da',\n months: 'Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec'.split('_'),\n weekdays: 'Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag'.split('_'),\n weekdaysShort: 'Søn_Man_Tir_Ons_Tor_Fre_Lør'.split('_'),\n weekdaysMin: 'Sø_Ma_Ti_On_To_Fr_Lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=da.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-key-quotes\n//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\nfunction processRelativeTime(num, withoutSuffix, key, isFuture) {\n const format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [num + ' Tage', num + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [num + ' Monate', num + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [num + ' Jahre', num + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\nexport const deLocale = {\n abbr: 'de',\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=de.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\nexport const enGbLocale = {\n abbr: 'en-gb',\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal(_num) {\n const num = Number(_num);\n const b = num % 10, output = (~~(num % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=en-gb.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getHours, getMonth } from '../utils/date-getters';\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nlet monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\nexport const esLocale = {\n abbr: 'es',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot;\n }\n if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=es.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getHours, getMonth } from '../utils/date-getters';\n//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nlet monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\nexport const esDoLocale = {\n abbr: 'es-do',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n else {\n return monthsShortDot[getMonth(date, isUTC)];\n }\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=es-do.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getHours, getMonth } from '../utils/date-getters';\n//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nlet monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\nexport const esUsLocale = {\n abbr: 'es-us',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortDot;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n else {\n return monthsShortDot[getMonth(date, isUTC)];\n }\n },\n monthsParseExact: true,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM [de] D [de] YYYY',\n LLL: 'MMMM [de] D [de] YYYY h:mm A',\n LLLL: 'dddd, MMMM [de] D [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n//# sourceMappingURL=es-us.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\nexport const frLocale = {\n abbr: 'fr',\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return num + (num === 1 ? 'er' : '');\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return num + (num === 1 ? 'er' : 'e');\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return num + (num === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=fr.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\nlet symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n}, numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\nexport const hiLocale = {\n abbr: 'hi',\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष'\n },\n preparse(str) {\n return str.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat(str) {\n return str.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n }\n else if (meridiem === 'सुबह') {\n return hour;\n }\n else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n }\n else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n }\n else if (hour < 10) {\n return 'सुबह';\n }\n else if (hour < 17) {\n return 'दोपहर';\n }\n else if (hour < 20) {\n return 'शाम';\n }\n else {\n return 'रात';\n }\n },\n week: {\n dow: 0,\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n//# sourceMappingURL=hi.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getDayOfWeek } from '../units/day-of-week';\n//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\nlet weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\nfunction translate(num, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + ((isFuture || withoutSuffix) ? ' másodperc' : ' másodperce');\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n}\nfunction week(date, isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[getDayOfWeek(date)] + '] LT[-kor]';\n}\nexport const huLocale = {\n abbr: 'hu',\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM(input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n }\n else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek(date) {\n return week(date, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek(date) {\n return week(date, false);\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=hu.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n//! moment.js locale configuration\n//! locale : Indonesia [id]\n//! author : Romy Kusuma : https://github.com/rkusuma\n//! reference: https://github.com/moment/moment/blob/develop/locale/id.js\nexport const idLocale = {\n abbr: 'id',\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n }\n else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n }\n else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n }\n else if (hours < 15) {\n return 'siang';\n }\n else if (hours < 19) {\n return 'sore';\n }\n else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n//# sourceMappingURL=id.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getDayOfWeek } from '../units/day-of-week';\n//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\nexport const itLocale = {\n abbr: 'it',\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future(num) {\n return ((/^[0-9].+$/).test(num.toString(10)) ? 'tra' : 'in') + ' ' + num;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: 'un\\'ora',\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=it.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\nexport const jaLocale = {\n abbr: 'ja',\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 HH:mm dddd',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日 HH:mm dddd'\n },\n meridiemParse: /午前|午後/i,\n isPM(input) {\n return input === '午後';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n }\n else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: '[来週]dddd LT',\n lastDay: '[昨日] LT',\n lastWeek: '[前週]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal(num, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n default:\n return num.toString(10);\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年'\n }\n};\n//# sourceMappingURL=ja.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-shorthand\n//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\nexport const koLocale = {\n abbr: 'ko',\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (num, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '일';\n case 'M':\n return num + '월';\n case 'w':\n case 'W':\n return num + '주';\n default:\n return num.toString(10);\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n};\n//# sourceMappingURL=ko.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getMonth } from '../utils/date-getters';\n//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\nlet monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\nexport const nlLocale = {\n abbr: 'nl',\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortWithDots;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[getMonth(date, isUTC)];\n }\n else {\n return monthsShortWithDots[getMonth(date, isUTC)];\n }\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal(_num) {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=nl.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getMonth } from '../utils/date-getters';\n//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nlet monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\nlet monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\nexport const nlBeLocale = {\n abbr: 'nl-be',\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort(date, format, isUTC) {\n if (!date) {\n return monthsShortWithDots;\n }\n else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[getMonth(date, isUTC)];\n }\n else {\n return monthsShortWithDots[getMonth(date, isUTC)];\n }\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal(_num) {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=nl-be.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getMonth } from '../utils/date-getters';\nimport { getDayOfWeek } from '../units/day-of-week';\n//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\nlet monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\nlet monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\nfunction plural(num) {\n return (num % 10 < 5) && (num % 10 > 1) && ((~~(num / 10) % 10) !== 1);\n}\nfunction translate(num, withoutSuffix, key) {\n let result = num + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(num) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(num) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(num) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(num) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(num) ? 'lata' : 'lat');\n }\n}\nexport const plLocale = {\n abbr: 'pl',\n months(date, format, isUTC) {\n if (!date) {\n return monthsNominative;\n }\n else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[getMonth(date, isUTC)] + '|' + monthsNominative[getMonth(date, isUTC)] + ')';\n }\n else if (/D MMMM/.test(format)) {\n return monthsSubjective[getMonth(date, isUTC)];\n }\n else {\n return monthsNominative[getMonth(date, isUTC)];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W niedzielę o] LT';\n case 2:\n return '[We wtorek o] LT';\n case 3:\n return '[W środę o] LT';\n case 6:\n return '[W sobotę o] LT';\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek(date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=pl.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getDayOfWeek } from '../units/day-of-week';\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\nexport const ptBrLocale = {\n abbr: 'pt-br',\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek(date) {\n return (getDayOfWeek(date) === 0 || getDayOfWeek(date) === 6) ?\n '[Último] dddd [às] LT' :\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: '%s atrás',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº'\n};\n//# sourceMappingURL=pt-br.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\nexport const svLocale = {\n abbr: 'sv',\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal(_num) {\n const num = Number(_num);\n let b = num % 10, output = (~~(num % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return num + output;\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=sv.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { getWeek } from '../units/week';\nimport { getDayOfWeek } from '../units/day-of-week';\n//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\nfunction plural(word, num) {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(num, withoutSuffix, key) {\n let format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n return num + ' ' + plural(format[key], +num);\n}\nlet monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\nexport const ruLocale = {\n abbr: 'ru',\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[Сегодня в] LT',\n nextDay: '[Завтра в] LT',\n lastDay: '[Вчера в] LT',\n nextWeek(date, now) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[В следующее] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd [в] LT';\n }\n }\n else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n }\n else {\n return '[В] dddd [в] LT';\n }\n }\n },\n lastWeek(date, now) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[В прошлое] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd [в] LT';\n }\n }\n else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n }\n else {\n return '[В] dddd [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM(input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n }\n else if (hour < 12) {\n return 'утра';\n }\n else if (hour < 17) {\n return 'дня';\n }\n else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return num + '-й';\n case 'D':\n return num + '-го';\n case 'w':\n case 'W':\n return num + '-я';\n default:\n return num.toString(10);\n }\n },\n week: {\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=ru.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\nexport const zhCnLocale = {\n abbr: 'zh-cn',\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n }\n else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n let hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n }\n else if (hm < 900) {\n return '早上';\n }\n else if (hm < 1130) {\n return '上午';\n }\n else if (hm < 1230) {\n return '中午';\n }\n else if (hm < 1800) {\n return '下午';\n }\n else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal(_num, period) {\n const num = Number(_num);\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n case 'M':\n return num + '月';\n case 'w':\n case 'W':\n return num + '周';\n default:\n return num.toString();\n }\n },\n relativeTime: {\n future: '%s内',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年'\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1,\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n//# sourceMappingURL=zh-cn.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\nlet suffixes = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n};\nexport const trLocale = {\n abbr: 'tr',\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n ordinal(_num) {\n const num = Number(_num);\n if (num === 0) {\n return num + '\\'ıncı';\n }\n let a = num % 10, b = num % 100 - a, c = num >= 100 ? 100 : null;\n return num + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1,\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n//# sourceMappingURL=tr.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\nexport const heLocale = {\n abbr: 'he',\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh(num) {\n if (num === 2) {\n return 'שעתיים';\n }\n return num + ' שעות';\n },\n d: 'יום',\n dd(num) {\n if (num === 2) {\n return 'יומיים';\n }\n return num + ' ימים';\n },\n M: 'חודש',\n MM(num) {\n if (num === 2) {\n return 'חודשיים';\n }\n return num + ' חודשים';\n },\n y: 'שנה',\n yy(num) {\n if (num === 2) {\n return 'שנתיים';\n }\n else if (num % 10 === 0 && num !== 10) {\n return num + ' שנה';\n }\n return num + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM(input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n }\n else if (hour < 10) {\n return 'בבוקר';\n }\n else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n }\n else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n }\n else {\n return 'בערב';\n }\n }\n};\n//# sourceMappingURL=he.js.map","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nexport const thLocale = {\n abbr: 'th',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'),\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n }\n else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n }\n};\n//# sourceMappingURL=th.js.map"],"names":["daysInMonth","isDate","document","window","this","RADIO_CONTROL_VALUE_ACCESSOR","BehaviorSubject","Observable","map","distinctUntilChanged","observeOn","queue","scan","height","width","shift","from","Subject","createDate","setTime","__decorate","__metadata","timer","months","monthsShort","monthsShortDot","monthsParse","monthsRegex","symbolMap","numberMap","translate","monthsShortWithDots","monthsShortWithoutDots","plural","forms"],"mappings":"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AG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GA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"} |