{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/utilities/errors.ts","../../src/js/utilities/namespace.ts","../../src/js/utilities/default-format-localization.ts","../../src/js/datetime.ts","../../src/js/utilities/service-locator.ts","../../src/js/utilities/calendar-modes.ts","../../src/js/utilities/optionsStore.ts","../../src/js/validation.ts","../../src/js/utilities/event-emitter.ts","../../src/js/utilities/default-options.ts","../../src/js/utilities/typeChecker.ts","../../src/js/utilities/optionProcessor.ts","../../src/js/utilities/optionConverter.ts","../../src/js/dates.ts","../../src/js/utilities/action-types.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/collapse.ts","../../src/js/display/index.ts","../../src/js/actions.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRange(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalid string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * customDateFormat errors\n */\n customDateFormatError(message?: string) {\n const error = new TdError(`${this.base} Custom Date Format: ${message}`);\n error.code = 9;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string or use the customDateFormat plugin.`\n );\n }\n\n deprecatedWarning(message: string, remediation?: string) {\n console.warn(\n `${this.base} Warning ${message} is deprecated and will be removed in a future version. ${remediation}`\n );\n }\n\n throwError(message) {\n const error = new TdError(`${this.base} ${message}`);\n error.code = 9;\n throw error;\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decade container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n rangeIn = 'range-in';\n rangeStart = 'range-start';\n rangeEnd = 'range-end';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n\n /**\n * Applied to the widget when the option display.theme is light.\n */\n lightTheme = 'light';\n\n /**\n * Applied to the widget when the option display.theme is dark.\n */\n darkTheme = 'dark';\n\n /**\n * Used for detecting if the system color preference is dark mode\n */\n isDarkPreferredQuery = '(prefers-color-scheme: dark)';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { FormatLocalization } from './options';\n\nconst DefaultFormatLocalization: FormatLocalization = {\n dateFormats: {\n LTS: 'h:mm:ss T',\n LT: 'h:mm T',\n L: 'MM/dd/yyyy',\n LL: 'MMMM d, yyyy',\n LLL: 'MMMM d, yyyy h:mm T',\n LLLL: 'dddd, MMMM d, yyyy h:mm T',\n },\n format: 'L LT',\n locale: 'default',\n hourCycle: undefined,\n ordinal: (n) => {\n const s = ['th', 'st', 'nd', 'rd'];\n const v = n % 100;\n return `[${n}${s[(v - 20) % 10] || s[v] || s[0]}]`;\n },\n};\n\nexport default { ...DefaultFormatLocalization };\n","import { FormatLocalization } from './utilities/options';\nimport Namespace from './utilities/namespace';\nimport DefaultFormatLocalization from './utilities/default-format-localization';\n\ntype parsedTime = {\n afternoon?: boolean;\n year?: number;\n month?: number;\n day?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n milliseconds?: number;\n zone?: {\n offset: number;\n };\n};\n\nexport enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nconst twoDigitTemplate = {\n month: '2-digit',\n day: '2-digit',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n};\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n numberingSystem?: string;\n}\n\n/**\n * Returns an Intl format object based on the provided object\n * @param unit\n */\nexport const getFormatByUnit = (unit: Unit): object => {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n};\n\n/**\n * Attempts to guess the hour cycle of the given local\n * @param locale\n */\nexport const guessHourCycle = (locale: string): Intl.LocaleHourCycleKey => {\n if (!locale) return 'h12';\n\n // noinspection SpellCheckingInspection\n const template = {\n hour: '2-digit',\n minute: '2-digit',\n numberingSystem: 'latn',\n };\n\n const dt = new DateTime().setLocalization({ locale });\n dt.hours = 0;\n\n const start = dt.parts(undefined, template).hour;\n\n //midnight is 12 so en-US style 12 AM\n if (start === '12') return 'h12';\n //midnight is 24 is from 00-24\n if (start === '24') return 'h24';\n\n dt.hours = 23;\n const end = dt.parts(undefined, template).hour;\n\n //if midnight is 00 and hour 23 is 11 then\n if (start === '00' && end === '11') return 'h11';\n\n if (start === '00' && end === '23') return 'h23';\n\n console.warn(\n `couldn't determine hour cycle for ${locale}. start: ${start}. end: ${end}`\n );\n\n return undefined;\n};\n\ninterface FormatMatch {\n parser: (obj: parsedTime, input: number) => void;\n pattern?: RegExp;\n}\n\ninterface FormatMatchString {\n parser: (obj: parsedTime, input: string) => void;\n pattern?: RegExp;\n}\n\ninterface FormatExpression {\n t: FormatMatchString;\n T: FormatMatchString;\n fff: FormatMatch;\n s: FormatMatch;\n ss: FormatMatch;\n m: FormatMatch;\n mm: FormatMatch;\n H: FormatMatch;\n h: FormatMatch;\n HH: FormatMatch;\n hh: FormatMatch;\n d: FormatMatch;\n dd: FormatMatch;\n Do: FormatMatchString;\n M: FormatMatch;\n MM: FormatMatch;\n MMM: FormatMatchString;\n MMMM: FormatMatchString;\n y: FormatMatch;\n yy: FormatMatch;\n yyyy: FormatMatch;\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n localization: FormatLocalization = DefaultFormatLocalization;\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n * @deprecated use setLocalization with a FormatLocalization object instead\n */\n setLocale(value: string): this {\n if (!this.localization) {\n this.localization = DefaultFormatLocalization;\n this.localization.locale = value;\n }\n return this;\n }\n\n /**\n * Chainable way to set the {@link localization}\n * @param value\n */\n setLocalization(value: FormatLocalization): this {\n this.localization = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n * @param locale this parameter is deprecated. Use formatLocalization instead.\n * @param formatLocalization\n */\n static convert(\n date: Date,\n locale = 'default',\n formatLocalization: FormatLocalization = undefined\n ): DateTime {\n if (!date) throw new Error(`A date is required`);\n\n if (!formatLocalization) {\n formatLocalization = DefaultFormatLocalization;\n formatLocalization.locale = locale;\n }\n\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n ).setLocalization(formatLocalization);\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocalization(this.localization);\n }\n\n static isValid(d): boolean {\n if (d === undefined || JSON.stringify(d) === 'null') return false;\n if (d.constructor.name === DateTime.name) return true;\n return false;\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n * @param startOfTheWeek Allows for the changing the start of the week.\n */\n startOf(unit: Unit | 'weekDay', startOfTheWeek = 0): this {\n if (this[unit] === undefined)\n throw new Error(`Unit '${unit}' is not valid`);\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay': {\n this.startOf(Unit.date);\n if (this.weekDay === startOfTheWeek) break;\n const goBack = (this.weekDay - startOfTheWeek + 7) % 7;\n this.manipulate(goBack * -1, Unit.date);\n break;\n }\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n * @param startOfTheWeek\n */\n endOf(unit: Unit | 'weekDay', startOfTheWeek = 0): this {\n if (this[unit] === undefined)\n throw new Error(`Unit '${unit}' is not valid`);\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay': {\n this.endOf(Unit.date);\n const endOfWeek = 6 + startOfTheWeek;\n if (this.weekDay === endOfWeek) break;\n this.manipulate(endOfWeek - this.weekDay, Unit.date);\n break;\n }\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.setMonth(11, 31);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined)\n throw new Error(`Unit '${unit}' is not valid`);\n this[unit] += value;\n return this;\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparison.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n // If the comparisons is undefined, return false\n if (!DateTime.isValid(compare)) return false;\n\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined)\n throw new Error(`Unit '${unit}' is not valid`);\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparison.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n // If the comparisons is undefined, return false\n if (!DateTime.isValid(compare)) return false;\n\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined)\n throw new Error(`Unit '${unit}' is not valid`);\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparison.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n // If the comparisons is undefined, return false\n if (!DateTime.isValid(compare)) return false;\n\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined)\n throw new Error(`Unit '${unit}' is not valid`);\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n // If one of the comparisons is undefined, return false\n if (!DateTime.isValid(left) || !DateTime.isValid(right)) return false;\n // If a unit is provided and is not a valid property of the DateTime object, throw an error\n if (unit && this[unit] === undefined) {\n throw new Error(`Unit '${unit}' is not valid`);\n }\n\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n const isLeftInRange = leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit);\n const isRightInRange = rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit);\n\n return isLeftInRange && isRightInRange;\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.localization.locale,\n template: Record = { dateStyle: 'full', timeStyle: 'long' }\n ): Record {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.parts(undefined, twoDigitTemplate).second;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit minutes\n */\n get minutesFormatted(): string {\n return this.parts(undefined, twoDigitTemplate).minute;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hour, e.g. 01...10\n * @param hourCycle Providing an hour cycle will change 00 to 24 depending on the given value.\n */\n getHoursFormatted(hourCycle: Intl.LocaleHourCycleKey = 'h12') {\n return this.parts(undefined, { ...twoDigitTemplate, hourCycle: hourCycle })\n .hour;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.localization.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n })\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.parts(undefined, twoDigitTemplate).day;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n const targetMonth = new Date(this.year, value + 1);\n targetMonth.setDate(0);\n const endOfMonth = targetMonth.getDate();\n if (this.date > endOfMonth) {\n this.date = endOfMonth;\n }\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.parts(undefined, twoDigitTemplate).month;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n\n // borrowed a bunch of stuff from Luxon\n /**\n * Gets the week of the year\n */\n get week(): number {\n const ordinal = this.computeOrdinal(),\n weekday = this.getUTCDay();\n\n let weekNumber = Math.floor((ordinal - weekday + 10) / 7);\n\n if (weekNumber < 1) {\n weekNumber = this.weeksInWeekYear();\n } else if (weekNumber > this.weeksInWeekYear()) {\n weekNumber = 1;\n }\n\n return weekNumber;\n }\n\n /**\n * Returns the number of weeks in the year\n */\n weeksInWeekYear() {\n const p1 =\n (this.year +\n Math.floor(this.year / 4) -\n Math.floor(this.year / 100) +\n Math.floor(this.year / 400)) %\n 7,\n last = this.year - 1,\n p2 =\n (last +\n Math.floor(last / 4) -\n Math.floor(last / 100) +\n Math.floor(last / 400)) %\n 7;\n return p1 === 4 || p2 === 3 ? 53 : 52;\n }\n\n /**\n * Returns true or false depending on if the year is a leap year or not.\n */\n get isLeapYear() {\n return (\n this.year % 4 === 0 && (this.year % 100 !== 0 || this.year % 400 === 0)\n );\n }\n\n private computeOrdinal() {\n return (\n this.date +\n (this.isLeapYear ? this.leapLadder : this.nonLeapLadder)[this.month]\n );\n }\n\n private nonLeapLadder = [\n 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334,\n ];\n private leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\n //#region CDF stuff\n\n private dateTimeRegex =\n //is regex cannot be simplified beyond what it already is\n /(\\[[^[\\]]*])|y{1,4}|M{1,4}|d{1,4}|H{1,2}|h{1,2}|t|T|m{1,2}|s{1,2}|f{3}/g; //NOSONAR\n\n private formattingTokens =\n /(\\[[^[\\]]*])|([-_:/.,()\\s]+)|(T|t|yyyy|yy?|MM?M?M?|Do|dd?d?d?|hh?|HH?|mm?|ss?)/g; //NOSONAR is regex cannot be simplified beyond what it already is\n\n /**\n * Returns a list of month values based on the current locale\n */\n private getAllMonths(\n format: '2-digit' | 'numeric' | 'long' | 'short' | 'narrow' = 'long'\n ) {\n const applyFormat = new Intl.DateTimeFormat(this.localization.locale, {\n month: format,\n }).format;\n return [...Array(12).keys()].map((m) => applyFormat(new Date(2021, m)));\n }\n\n /**\n * Replaces an expanded token set (e.g. LT/LTS)\n */\n private replaceTokens(formatStr, formats) {\n /***\n * _ => match\n * a => first capture group. Anything between [ and ]\n * b => second capture group\n */\n return formatStr.replace(\n /(\\[[^[\\]]*])|(LTS?|l{1,4}|L{1,4})/g,\n (_, a, b) => {\n const B = b && b.toUpperCase();\n return a || formats[B] || DefaultFormatLocalization.dateFormats[B];\n }\n );\n }\n\n private match2 = /\\d\\d/; // 00 - 99\n private match3 = /\\d{3}/; // 000 - 999\n private match4 = /\\d{4}/; // 0000 - 9999\n private match1to2 = /\\d\\d?/; // 0 - 99\n private matchSigned = /[+-]?\\d+/; // -inf - inf\n private matchOffset = /[+-]\\d\\d:?(\\d\\d)?|Z/; // +00:00 -00:00 +0000 or -0000 +00 or Z\n private matchWord = /[^\\d_:/,\\-()\\s]+/; // Word\n\n private parseTwoDigitYear(input: number) {\n return input + (input > 68 ? 1900 : 2000);\n }\n\n private offsetFromString(input: string) {\n if (!input) return 0;\n if (input === 'Z') return 0;\n const [first, second, third] = input.match(/([+-]|\\d\\d)/g);\n const minutes = +second * 60 + (+third || 0);\n const signed = first === '+' ? -minutes : minutes;\n return minutes === 0 ? 0 : signed; // eslint-disable-line no-nested-ternary\n }\n\n /**\n * z = -4, zz = -04, zzz = -0400\n * @param date\n * @param style\n * @private\n */\n private zoneInformation(date: DateTime, style: 'z' | 'zz' | 'zzz') {\n let name = date\n .parts(this.localization.locale, { timeZoneName: 'longOffset' })\n .timeZoneName.replace('GMT', '')\n .replace(':', '');\n\n const negative = name.includes('-');\n\n name = name.replace('-', '');\n\n if (style === 'z') name = name.substring(1, 2);\n else if (style === 'zz') name = name.substring(0, 2);\n\n return `${negative ? '-' : ''}${name}`;\n }\n\n private zoneExpressions = [\n this.matchOffset,\n (obj, input) => {\n obj.offset = this.offsetFromString(input);\n },\n ];\n\n private addInput(property) {\n return (obj, input) => {\n obj[property] = +input;\n };\n }\n\n private getLocaleAfternoon(): string {\n return new Intl.DateTimeFormat(this.localization.locale, {\n hour: 'numeric',\n hour12: true,\n })\n .formatToParts(new Date(2022, 3, 4, 13))\n .find((p) => p.type === 'dayPeriod')\n ?.value?.replace(/\\s+/g, ' ');\n }\n\n private meridiemMatch(input: string) {\n return input.toLowerCase() === this.getLocaleAfternoon().toLowerCase();\n }\n\n private expressions: FormatExpression = {\n t: {\n pattern: undefined, //this.matchWord,\n parser: (obj, input) => {\n obj.afternoon = this.meridiemMatch(input);\n },\n },\n T: {\n pattern: undefined, //this.matchWord,\n parser: (obj, input) => {\n obj.afternoon = this.meridiemMatch(input);\n },\n },\n fff: {\n pattern: this.match3,\n parser: (obj, input) => {\n obj.milliseconds = +input;\n },\n },\n s: {\n pattern: this.match1to2,\n parser: this.addInput('seconds'),\n },\n ss: {\n pattern: this.match1to2,\n parser: this.addInput('seconds'),\n },\n m: {\n pattern: this.match1to2,\n parser: this.addInput('minutes'),\n },\n mm: {\n pattern: this.match1to2,\n parser: this.addInput('minutes'),\n },\n H: {\n pattern: this.match1to2,\n parser: this.addInput('hours'),\n },\n h: {\n pattern: this.match1to2,\n parser: this.addInput('hours'),\n },\n HH: {\n pattern: this.match1to2,\n parser: this.addInput('hours'),\n },\n hh: {\n pattern: this.match1to2,\n parser: this.addInput('hours'),\n },\n d: {\n pattern: this.match1to2,\n parser: this.addInput('day'),\n },\n dd: {\n pattern: this.match2,\n parser: this.addInput('day'),\n },\n Do: {\n pattern: this.matchWord,\n parser: (obj, input) => {\n obj.day = +(input.match(/\\d+/)[0] || 1);\n if (!this.localization.ordinal) return;\n for (let i = 1; i <= 31; i += 1) {\n if (this.localization.ordinal(i).replace(/[[\\]]/g, '') === input) {\n obj.day = i;\n }\n }\n },\n },\n M: {\n pattern: this.match1to2,\n parser: this.addInput('month'),\n },\n MM: {\n pattern: this.match2,\n parser: this.addInput('month'),\n },\n MMM: {\n pattern: this.matchWord,\n parser: (obj, input) => {\n const months = this.getAllMonths();\n const monthsShort = this.getAllMonths('short');\n const matchIndex =\n (monthsShort || months.map((_) => _.slice(0, 3))).indexOf(input) + 1;\n if (matchIndex < 1) {\n throw new Error();\n }\n obj.month = matchIndex % 12 || matchIndex;\n },\n },\n MMMM: {\n pattern: this.matchWord,\n parser: (obj, input) => {\n const months = this.getAllMonths();\n const matchIndex = months.indexOf(input) + 1;\n if (matchIndex < 1) {\n throw new Error();\n }\n obj.month = matchIndex % 12 || matchIndex;\n },\n },\n y: {\n pattern: this.matchSigned,\n parser: this.addInput('year'),\n },\n yy: {\n pattern: this.match2,\n parser: (obj, input) => {\n obj.year = this.parseTwoDigitYear(+input);\n },\n },\n yyyy: {\n pattern: this.match4,\n parser: this.addInput('year'),\n },\n // z: this.zoneExpressions,\n // zz: this.zoneExpressions,\n // zzz: this.zoneExpressions\n };\n\n private correctHours(time) {\n const { afternoon } = time;\n if (afternoon !== undefined) {\n const { hours } = time;\n if (afternoon) {\n if (hours < 12) {\n time.hours += 12;\n }\n } else if (hours === 12) {\n time.hours = 0;\n }\n delete time.afternoon;\n }\n }\n\n private makeParser(format: string) {\n format = this.replaceTokens(format, this.localization.dateFormats);\n const matchArray = format.match(this.formattingTokens);\n const { length } = matchArray;\n const expressionArray: (FormatMatch | string)[] = [];\n for (let i = 0; i < length; i += 1) {\n const token = matchArray[i];\n const expression = this.expressions[token] as FormatMatch;\n if (expression?.parser) {\n expressionArray[i] = expression;\n } else {\n expressionArray[i] = (token as string).replace(/^\\[[^[\\]]*]$/g, '');\n }\n }\n\n return (input: string): parsedTime => {\n const time = {\n hours: 0,\n minutes: 0,\n seconds: 0,\n milliseconds: 0,\n };\n for (let i = 0, start = 0; i < length; i += 1) {\n const token = expressionArray[i];\n if (typeof token === 'string') {\n start += token.length;\n } else {\n const part = input.slice(start);\n let value = part;\n\n if (token.pattern) {\n const match = token.pattern.exec(part);\n value = match[0];\n }\n token.parser.call(this, time, value);\n input = input.replace(value, '');\n }\n }\n this.correctHours(time);\n return time;\n };\n }\n\n /**\n * Attempts to create a DateTime from a string.\n * @param input date as string\n * @param localization provides the date template the string is in via the format property\n */\n //eslint-disable-next-line @typescript-eslint/no-unused-vars\n static fromString(input: string, localization: FormatLocalization): DateTime {\n if (!localization?.format) {\n Namespace.errorMessages.customDateFormatError('No format was provided');\n }\n try {\n const dt = new DateTime();\n dt.setLocalization(localization);\n if (['x', 'X'].indexOf(localization.format) > -1)\n return new DateTime((localization.format === 'X' ? 1000 : 1) * +input);\n\n input = input.replace(/\\s+/g, ' ');\n const parser = dt.makeParser(localization.format);\n const { year, month, day, hours, minutes, seconds, milliseconds, zone } =\n parser(input);\n const d = day || (!year && !month ? dt.getDate() : 1);\n const y = year || dt.getFullYear();\n let M = 0;\n if (!(year && !month)) {\n M = month > 0 ? month - 1 : dt.getMonth();\n }\n if (zone) {\n return new DateTime(\n Date.UTC(\n y,\n M,\n d,\n hours,\n minutes,\n seconds,\n milliseconds + zone.offset * 60 * 1000\n )\n );\n }\n return new DateTime(y, M, d, hours, minutes, seconds, milliseconds);\n } catch (e) {\n Namespace.errorMessages.customDateFormatError(\n `Unable to parse provided input: ${input}, format: ${localization.format}`\n );\n }\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An optional object. If provided, method will use Intl., otherwise the localizations format properties\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(\n template?: DateTimeFormatOptions | string,\n locale = this.localization.locale\n ): string {\n if (template && typeof template === 'object')\n return new Intl.DateTimeFormat(locale, template).format(this);\n\n const formatString = this.replaceTokens(\n //try template first\n template ||\n //otherwise try localization format\n this.localization.format ||\n //otherwise try date + time\n `${DefaultFormatLocalization.dateFormats.L}, ${DefaultFormatLocalization.dateFormats.LT}`,\n this.localization.dateFormats\n );\n\n const formatter = (template) =>\n new Intl.DateTimeFormat(this.localization.locale, template).format(this);\n\n if (!this.localization.hourCycle)\n this.localization.hourCycle = guessHourCycle(this.localization.locale);\n\n //if the format asks for a twenty-four-hour string but the hour cycle is not, then make a base guess\n const HHCycle = this.localization.hourCycle.startsWith('h1')\n ? 'h24'\n : this.localization.hourCycle;\n const hhCycle = this.localization.hourCycle.startsWith('h2')\n ? 'h12'\n : this.localization.hourCycle;\n\n const matches = {\n y: this.year,\n yy: formatter({ year: '2-digit' }),\n yyyy: this.year,\n M: formatter({ month: 'numeric' }),\n MM: this.monthFormatted,\n MMM: this.getAllMonths('short')[this.getMonth()],\n MMMM: this.getAllMonths()[this.getMonth()],\n d: this.date,\n dd: this.dateFormatted,\n ddd: formatter({ weekday: 'short' }),\n dddd: formatter({ weekday: 'long' }),\n H: this.getHours(),\n HH: this.getHoursFormatted(HHCycle),\n h: this.hours > 12 ? this.hours - 12 : this.hours,\n hh: this.getHoursFormatted(hhCycle),\n t: this.meridiem(),\n T: this.meridiem().toUpperCase(),\n m: this.minutes,\n mm: this.minutesFormatted,\n s: this.seconds,\n ss: this.secondsFormatted,\n fff: this.getMilliseconds(),\n // z: this.zoneInformation(dateTime, 'z'), //-4\n // zz: this.zoneInformation(dateTime, 'zz'), //-04\n // zzz: this.zoneInformation(dateTime, 'zzz') //-0400\n };\n\n return formatString\n .replace(this.dateTimeRegex, (match, $1) => {\n return $1 || matches[match];\n })\n .replace(/\\[/g, '')\n .replace(/]/g, '');\n }\n\n //#endregion CDF stuff\n}\n","//eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport declare type Constructable = new (...args: any[]) => T;\n\nclass ServiceLocator {\n private cache: Map, unknown | symbol> = new Map();\n\n locate(identifier: Constructable): T {\n const service = this.cache.get(identifier);\n if (service) return service as T;\n const value = new identifier();\n this.cache.set(identifier, value);\n return value;\n }\n}\nexport const setupServiceLocator = () => {\n serviceLocator = new ServiceLocator();\n};\n\nexport let serviceLocator: ServiceLocator;\n","import { Unit } from '../datetime';\nimport Namespace from './namespace';\nimport ViewMode from './view-mode';\n\nconst CalendarModes: {\n name: keyof ViewMode;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport default CalendarModes;\n","import { DateTime } from '../datetime';\nimport CalendarModes from './calendar-modes';\nimport ViewMode from './view-mode';\nimport Options from './options';\n\nexport class OptionsStore {\n options: Options;\n element: HTMLElement;\n input: HTMLInputElement;\n unset: boolean;\n private _currentCalendarViewMode = 0;\n\n get currentCalendarViewMode() {\n return this._currentCalendarViewMode;\n }\n\n set currentCalendarViewMode(value) {\n this._currentCalendarViewMode = value;\n this.currentView = CalendarModes[value].name;\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n set viewDate(v) {\n this._viewDate = v;\n if (this.options) this.options.viewDate = v;\n }\n\n /**\n * When switching back to the calendar from the clock,\n * this sets currentView to the correct calendar view.\n */\n refreshCurrentView() {\n this.currentView = CalendarModes[this.currentCalendarViewMode].name;\n }\n\n minimumCalendarViewMode = 0;\n currentView: keyof ViewMode = 'calendar';\n\n get isTwelveHour() {\n return ['h12', 'h11'].includes(this.options.localization.hourCycle);\n }\n}\n","import { DateTime, Unit } from './datetime';\nimport { serviceLocator } from './utilities/service-locator';\nimport { OptionsStore } from './utilities/optionsStore';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private optionsStore: OptionsStore;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provided to check portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (!this._enabledDisabledDatesIsValid(granularity, targetDate))\n return false;\n\n if (\n granularity !== Unit.month &&\n granularity !== Unit.year &&\n this.optionsStore.options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this.optionsStore.options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n )\n return false;\n\n if (!this._minMaxIsValid(granularity, targetDate)) return false;\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (!this._enabledDisabledHoursIsValid(targetDate)) return false;\n\n if (\n this.optionsStore.options.restrictions.disabledTimeIntervals?.filter(\n (internal) => targetDate.isBetween(internal.from, internal.to)\n ).length !== 0\n )\n return false;\n }\n\n return true;\n }\n\n private _enabledDisabledDatesIsValid(\n granularity: Unit,\n targetDate: DateTime\n ): boolean {\n if (granularity !== Unit.date) return true;\n\n if (\n this.optionsStore.options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n\n // noinspection RedundantIfStatementJS\n if (\n this.optionsStore.options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this.optionsStore.options.restrictions.disabledDates ||\n this.optionsStore.options.restrictions.disabledDates.length === 0\n )\n return false;\n\n return !!this.optionsStore.options.restrictions.disabledDates.find((x) =>\n x.isSame(testDate, Unit.date)\n );\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this.optionsStore.options.restrictions.enabledDates ||\n this.optionsStore.options.restrictions.enabledDates.length === 0\n )\n return true;\n\n return !!this.optionsStore.options.restrictions.enabledDates.find((x) =>\n x.isSame(testDate, Unit.date)\n );\n }\n\n private _minMaxIsValid(granularity: Unit, targetDate: DateTime) {\n if (\n this.optionsStore.options.restrictions.minDate &&\n targetDate.isBefore(\n this.optionsStore.options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n\n // noinspection RedundantIfStatementJS\n if (\n this.optionsStore.options.restrictions.maxDate &&\n targetDate.isAfter(\n this.optionsStore.options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n return true;\n }\n\n private _enabledDisabledHoursIsValid(targetDate: DateTime) {\n if (\n this.optionsStore.options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n\n // noinspection RedundantIfStatementJS\n if (\n this.optionsStore.options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this.optionsStore.options.restrictions.disabledHours ||\n this.optionsStore.options.restrictions.disabledHours.length === 0\n )\n return false;\n\n const formattedDate = testDate.hours;\n return this.optionsStore.options.restrictions.disabledHours.includes(\n formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this.optionsStore.options.restrictions.enabledHours ||\n this.optionsStore.options.restrictions.enabledHours.length === 0\n )\n return true;\n\n const formattedDate = testDate.hours;\n return this.optionsStore.options.restrictions.enabledHours.includes(\n formattedDate\n );\n }\n\n dateRangeIsValid(dates: DateTime[], index: number, target: DateTime) {\n // if we're not using the option, then return valid\n if (!this.optionsStore.options.dateRange) return true;\n\n // if we've only selected 0..1 dates, and we're not setting the end date\n // then return valid. We only want to validate the range if both are selected,\n // because the other validation on the target has already occurred.\n if (dates.length !== 2 && index !== 1) return true;\n\n // initialize start date\n const start = dates[0].clone;\n // check if start date is not the same as target date\n if (start.isSame(target, Unit.date)) return true;\n\n // add one day to start; start has already been validated\n start.manipulate(1, Unit.date);\n\n // check each date in the range to make sure it's valid\n while (!start.isSame(target, Unit.date)) {\n const valid = this.isValid(start, Unit.date);\n if (!valid) return false;\n start.manipulate(1, Unit.date);\n }\n\n return true;\n }\n}\n","import { DateTime, Unit } from '../datetime';\nimport ActionTypes from './action-types';\nimport { BaseEvent } from './event-types';\n\nexport type ViewUpdateValues = Unit | 'decade' | 'clock' | 'calendar' | 'all';\n\nclass EventEmitter {\n private subscribers: ((value?: T) => void)[] = [];\n\n subscribe(callback: (value: T) => void) {\n this.subscribers.push(callback);\n return this.unsubscribe.bind(this, this.subscribers.length - 1);\n }\n\n unsubscribe(index: number) {\n this.subscribers.splice(index, 1);\n }\n\n emit(value?: T) {\n this.subscribers.forEach((callback) => {\n callback(value);\n });\n }\n\n destroy() {\n this.subscribers = null;\n this.subscribers = [];\n }\n}\n\nexport class EventEmitters {\n triggerEvent = new EventEmitter();\n viewUpdate = new EventEmitter();\n updateDisplay = new EventEmitter();\n action = new EventEmitter<{ e: any; action?: ActionTypes }>(); //eslint-disable-line @typescript-eslint/no-explicit-any\n updateViewDate = new EventEmitter();\n\n destroy() {\n this.triggerEvent.destroy();\n this.viewUpdate.destroy();\n this.updateDisplay.destroy();\n this.action.destroy();\n this.updateViewDate.destroy();\n }\n}\n","import Options, { Localization } from './options';\nimport { DateTime } from '../datetime';\nimport DefaultFormatLocalization from './default-format-localization';\n\nconst defaultEnLocalization: Localization = {\n clear: 'Clear selection',\n close: 'Close the picker',\n dateFormats: DefaultFormatLocalization.dateFormats,\n dayViewHeaderFormat: { month: 'long', year: '2-digit' },\n decrementHour: 'Decrement Hour',\n decrementMinute: 'Decrement Minute',\n decrementSecond: 'Decrement Second',\n format: DefaultFormatLocalization.format,\n hourCycle: DefaultFormatLocalization.hourCycle,\n incrementHour: 'Increment Hour',\n incrementMinute: 'Increment Minute',\n incrementSecond: 'Increment Second',\n locale: DefaultFormatLocalization.locale,\n maxWeekdayLength: 0,\n nextCentury: 'Next Century',\n nextDecade: 'Next Decade',\n nextMonth: 'Next Month',\n nextYear: 'Next Year',\n ordinal: DefaultFormatLocalization.ordinal,\n pickHour: 'Pick Hour',\n pickMinute: 'Pick Minute',\n pickSecond: 'Pick Second',\n previousCentury: 'Previous Century',\n previousDecade: 'Previous Decade',\n previousMonth: 'Previous Month',\n previousYear: 'Previous Year',\n selectDate: 'Select Date',\n selectDecade: 'Select Decade',\n selectMonth: 'Select Month',\n selectTime: 'Select Time',\n selectYear: 'Select Year',\n startOfTheWeek: 0,\n today: 'Go to today',\n toggleMeridiem: 'Toggle Meridiem',\n};\n\nconst DefaultOptions: Options = {\n allowInputToggle: false,\n container: undefined,\n dateRange: false,\n debug: false,\n defaultDate: undefined,\n display: {\n icons: {\n type: 'icons',\n time: 'fa-solid fa-clock',\n date: 'fa-solid fa-calendar',\n up: 'fa-solid fa-arrow-up',\n down: 'fa-solid fa-arrow-down',\n previous: 'fa-solid fa-chevron-left',\n next: 'fa-solid fa-chevron-right',\n today: 'fa-solid fa-calendar-check',\n clear: 'fa-solid fa-trash',\n close: 'fa-solid fa-xmark',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: undefined,\n },\n inline: false,\n theme: 'auto',\n placement: 'bottom',\n },\n keepInvalid: false,\n localization: defaultEnLocalization,\n meta: {},\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n stepping: 1,\n useCurrent: true,\n viewDate: new DateTime(),\n};\n\nexport default DefaultOptions;\nexport const DefaultEnLocalization = { ...defaultEnLocalization };\n","import Namespace from './namespace';\nimport { DateTime } from '../datetime';\nimport { FormatLocalization } from './options';\nimport DefaultFormatLocalization from './default-format-localization';\n\n/**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @param localization object containing locale and format settings. Only used with the custom formats\n * @private\n */\nexport function tryConvertToDateTime(\n this: void,\n d: DateTime | Date | string,\n localization: FormatLocalization\n): DateTime | null {\n if (!d) return null;\n if (d.constructor.name === DateTime.name) return d as DateTime;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d as Date);\n }\n if (typeof d === typeof '') {\n const dateTime = DateTime.fromString(d as unknown as string, localization);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n}\n\n/**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param localization object containing locale and format settings. Only used with the custom formats\n */\nexport function convertToDateTime(\n this: void,\n d: DateTime | Date | string,\n optionName: string,\n localization: FormatLocalization\n): DateTime {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = tryConvertToDateTime(d, localization);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n}\n\n/**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n * @param localization\n */\nexport function typeCheckDateArray(\n this: void,\n optionName: string,\n value: any, //eslint-disable-line @typescript-eslint/no-explicit-any\n providedType: string,\n localization: FormatLocalization = DefaultFormatLocalization\n) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n const d = value[i];\n const dateTime = convertToDateTime(d, optionName, localization);\n dateTime.setLocalization(localization);\n value[i] = dateTime;\n }\n}\n\n/**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\nexport function typeCheckNumberArray(\n this: void,\n optionName: string,\n value: any, //eslint-disable-line @typescript-eslint/no-explicit-any\n providedType: string\n) {\n if (!Array.isArray(value) || value.some((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n}\n","import Namespace from './namespace';\nimport type { FormatLocalization } from './options';\nimport {\n convertToDateTime,\n typeCheckNumberArray,\n typeCheckDateArray,\n} from './typeChecker';\n\ninterface OptionProcessorFunctionArguments {\n key: string;\n value: any; //eslint-disable-line @typescript-eslint/no-explicit-any\n providedType: string;\n defaultType: string;\n path: string;\n localization: FormatLocalization;\n}\n\ntype OptionProcessorFunction = (\n this: void,\n args: OptionProcessorFunctionArguments\n) => any; //eslint-disable-line @typescript-eslint/no-explicit-any\n\nfunction mandatoryDate(key: string): OptionProcessorFunction {\n return ({ value, providedType, localization }) => {\n const dateTime = convertToDateTime(value, key, localization);\n if (dateTime !== undefined) {\n dateTime.setLocalization(localization);\n return dateTime;\n }\n };\n}\n\nfunction optionalDate(key: string): OptionProcessorFunction {\n const mandatory = mandatoryDate(key);\n return (args) => {\n if (args.value === undefined) {\n return args.value;\n }\n return mandatory(args);\n };\n}\n\nfunction numbersInRange(\n key: string,\n lower: number,\n upper: number\n): OptionProcessorFunction {\n return ({ value, providedType }) => {\n if (value === undefined) {\n return [];\n }\n typeCheckNumberArray(key, value, providedType);\n if ((value as number[]).some((x) => x < lower || x > upper))\n Namespace.errorMessages.numbersOutOfRange(key, lower, upper);\n return value;\n };\n}\n\nfunction validHourRange(key: string): OptionProcessorFunction {\n return numbersInRange(key, 0, 23);\n}\n\nfunction validDateArray(key: string): OptionProcessorFunction {\n return ({ value, providedType, localization }) => {\n if (value === undefined) {\n return [];\n }\n typeCheckDateArray(key, value, providedType, localization);\n return value;\n };\n}\n\nfunction validKeyOption(keyOptions: string[]): OptionProcessorFunction {\n return ({ value, path }) => {\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n return value;\n };\n}\n\nconst optionProcessors: { [key: string]: OptionProcessorFunction } =\n Object.freeze({\n defaultDate: mandatoryDate('defaultDate'),\n viewDate: mandatoryDate('viewDate'),\n minDate: optionalDate('restrictions.minDate'),\n maxDate: optionalDate('restrictions.maxDate'),\n disabledHours: validHourRange('restrictions.disabledHours'),\n enabledHours: validHourRange('restrictions.enabledHours'),\n disabledDates: validDateArray('restrictions.disabledDates'),\n enabledDates: validDateArray('restrictions.enabledDates'),\n daysOfWeekDisabled: numbersInRange('restrictions.daysOfWeekDisabled', 0, 6),\n disabledTimeIntervals: ({ key, value, providedType, localization }) => {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[]; //eslint-disable-line @typescript-eslint/no-explicit-any\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n const d = valueObject[i][vk];\n const dateTime = convertToDateTime(d, subOptionName, localization);\n dateTime.setLocalization(localization);\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n },\n toolbarPlacement: validKeyOption(['top', 'bottom', 'default']),\n type: validKeyOption(['icons', 'sprites']),\n viewMode: validKeyOption([\n 'clock',\n 'calendar',\n 'months',\n 'years',\n 'decades',\n ]),\n theme: validKeyOption(['light', 'dark', 'auto']),\n placement: validKeyOption(['top', 'bottom']),\n meta: ({ value }) => value,\n dayViewHeaderFormat: ({ value }) => value,\n container: ({ value, path }) => {\n if (\n value &&\n !(\n value instanceof HTMLElement ||\n value instanceof Element ||\n value?.appendChild\n )\n ) {\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n typeof value,\n 'HTMLElement'\n );\n }\n return value;\n },\n useTwentyfourHour: ({ value, path, providedType, defaultType }) => {\n Namespace.errorMessages.deprecatedWarning(\n 'useTwentyfourHour',\n 'Please use \"options.localization.hourCycle\" instead'\n );\n if (value === undefined || providedType === 'boolean') return value;\n Namespace.errorMessages.typeMismatch(path, providedType, defaultType);\n },\n hourCycle: validKeyOption(['h11', 'h12', 'h23', 'h24']),\n });\n\nconst defaultProcessor: OptionProcessorFunction = ({\n value,\n defaultType,\n providedType,\n path,\n}) => {\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(path, providedType, defaultType);\n }\n};\n\nexport function processKey(this: void, args: OptionProcessorFunctionArguments) {\n return (optionProcessors[args.key] || defaultProcessor)(args);\n}\n","import Namespace from './namespace';\nimport { DateTime } from '../datetime';\nimport DefaultOptions from './default-options';\nimport Options, { FormatLocalization } from './options';\nimport { processKey } from './optionProcessor';\nimport {\n convertToDateTime,\n tryConvertToDateTime,\n typeCheckDateArray,\n typeCheckNumberArray,\n} from './typeChecker';\n\nexport class OptionConverter {\n private static ignoreProperties = [\n 'meta',\n 'dayViewHeaderFormat',\n 'container',\n 'dateForms',\n 'ordinal',\n ];\n\n static deepCopy(input): Options {\n const o = {};\n\n Object.keys(input).forEach((key) => {\n const inputElement = input[key];\n\n if (inputElement instanceof DateTime) {\n o[key] = inputElement.clone;\n return;\n } else if (inputElement instanceof Date) {\n o[key] = new Date(inputElement.valueOf());\n return;\n }\n\n o[key] = inputElement;\n if (\n typeof inputElement !== 'object' ||\n inputElement instanceof HTMLElement ||\n inputElement instanceof Element\n )\n return;\n if (!Array.isArray(inputElement)) {\n o[key] = OptionConverter.deepCopy(inputElement);\n }\n });\n\n return o;\n }\n\n private static isValue = (a) => a != null; // everything except undefined + null\n\n /**\n * Finds value out of an object based on a string, period delimited, path\n * @param paths\n * @param obj\n */\n static objectPath(paths: string, obj) {\n if (paths.charAt(0) === '.') paths = paths.slice(1);\n if (!paths) return obj;\n return paths\n .split('.')\n .reduce(\n (value, key) =>\n OptionConverter.isValue(value) || OptionConverter.isValue(value[key])\n ? value[key]\n : undefined,\n obj\n );\n }\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param copyTo Destination object. This was added to prevent reference copies\n * @param localization\n * @param path\n */\n static spread(provided, copyTo, localization: FormatLocalization, path = '') {\n const defaultOptions = OptionConverter.objectPath(path, DefaultOptions);\n\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(defaultOptions).includes(x)\n );\n\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter.getFlattenDefaultOptions();\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path}.${x}\" in not a known option.`;\n const didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += ` Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n\n Object.keys(provided)\n .filter((key) => key !== '__proto__' && key !== 'constructor')\n .forEach((key) => {\n path += `.${key}`;\n if (path.charAt(0) === '.') path = path.slice(1);\n\n const defaultOptionValue = defaultOptions[key];\n const providedType = typeof provided[key];\n const defaultType = typeof defaultOptionValue;\n const value = provided[key];\n\n if (value === undefined || value === null) {\n copyTo[key] = value;\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n\n if (\n typeof defaultOptionValue === 'object' &&\n !Array.isArray(provided[key]) &&\n !(\n defaultOptionValue instanceof Date ||\n OptionConverter.ignoreProperties.includes(key)\n )\n ) {\n OptionConverter.spread(\n provided[key],\n copyTo[key],\n localization,\n path\n );\n } else {\n copyTo[key] = OptionConverter.processKey(\n key,\n value,\n providedType,\n defaultType,\n path,\n localization\n );\n }\n\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n }\n\n static processKey(\n key: string,\n value: any, //eslint-disable-line @typescript-eslint/no-explicit-any\n providedType: string,\n defaultType: string,\n path: string,\n localization: FormatLocalization\n ) {\n return processKey({\n key,\n value,\n providedType,\n defaultType,\n path,\n localization,\n });\n }\n\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newConfig = OptionConverter.deepCopy(mergeTo);\n //see if the options specify a locale\n const localization =\n mergeTo.localization?.locale !== 'default'\n ? mergeTo.localization\n : providedOptions?.localization || DefaultOptions.localization;\n\n OptionConverter.spread(providedOptions, newConfig, localization, '');\n\n return newConfig;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = JSON.parse(JSON.stringify(element.dataset));\n\n if (eData?.tdTargetInput) delete eData.tdTargetInput;\n if (eData?.tdTargetToggle) delete eData.tdTargetToggle;\n\n if (!eData || Object.keys(eData).length === 0) return options;\n const dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const normalizeObject = this.normalizeObject(objectToNormalized);\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = normalizeObject(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n //todo clean this up\n private static normalizeObject(objectToNormalized: (object) => object) {\n const normalizeObject = (\n split: string[],\n index: number,\n optionSubgroup: unknown,\n value: unknown\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption]?.constructor === Object) {\n index++;\n internalObject[keyOption] = normalizeObject(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n return normalizeObject;\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @param localization object containing locale and format settings. Only used with the custom formats\n * @private\n */\n static _dateTypeCheck(\n d: any, //eslint-disable-line @typescript-eslint/no-explicit-any\n localization: FormatLocalization\n ): DateTime | null {\n return tryConvertToDateTime(d, localization);\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n * @param localization\n */\n static _typeCheckDateArray(\n optionName: string,\n value,\n providedType: string,\n localization: FormatLocalization\n ) {\n return typeCheckDateArray(optionName, value, providedType, localization);\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n return typeCheckNumberArray(optionName, value, providedType);\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param localization object containing locale and format settings. Only used with the custom formats\n */\n static dateConversion(\n d: any, //eslint-disable-line @typescript-eslint/no-explicit-any\n optionName: string,\n localization: FormatLocalization\n ): DateTime {\n return convertToDateTime(d, optionName, localization);\n }\n\n private static _flattenDefaults: string[];\n\n private static getFlattenDefaultOptions(): string[] {\n if (this._flattenDefaults) return this._flattenDefaults;\n const deepKeys = (t, pre = []) => {\n if (Array.isArray(t)) return [];\n if (Object(t) === t) {\n return Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]));\n } else {\n return pre.join('.');\n }\n };\n\n this._flattenDefaults = deepKeys(DefaultOptions);\n\n return this._flattenDefaults;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflicts(config: Options) {\n if (\n config.display.sideBySide &&\n (!config.display.components.clock ||\n !(\n config.display.components.hours ||\n config.display.components.minutes ||\n config.display.components.seconds\n ))\n ) {\n Namespace.errorMessages.conflictingConfiguration(\n 'Cannot use side by side mode without the clock components'\n );\n }\n\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n\n if (config.multipleDates && config.dateRange) {\n Namespace.errorMessages.conflictingConfiguration(\n 'Cannot uss option \"multipleDates\" with \"dateRange\"'\n );\n }\n }\n}\n","import { DateTime, getFormatByUnit, Unit } from './datetime';\nimport Namespace from './utilities/namespace';\nimport {\n ChangeEvent,\n FailEvent,\n ParseErrorEvent,\n} from './utilities/event-types';\nimport Validation from './validation';\nimport { serviceLocator } from './utilities/service-locator';\nimport { EventEmitters } from './utilities/event-emitter';\nimport { OptionsStore } from './utilities/optionsStore';\nimport { OptionConverter } from './utilities/optionConverter';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private optionsStore: OptionsStore;\n private validation: Validation;\n private _eventEmitters: EventEmitters;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.validation = serviceLocator.locate(Validation);\n this._eventEmitters = serviceLocator.locate(EventEmitters);\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return [...this._dates];\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex]?.clone;\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Formats a DateTime object to a string. Used when setting the input value.\n * @param date\n */\n formatInput(date: DateTime): string {\n if (!date) return '';\n date.localization = this.optionsStore.options.localization;\n return date.format();\n }\n\n /**\n * parse the value into a DateTime object.\n * this can be overwritten to supply your own parsing.\n */\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n parseInput(value: any): DateTime {\n try {\n return OptionConverter.dateConversion(\n value,\n 'input',\n this.optionsStore.options.localization\n );\n } catch (e) {\n this._eventEmitters.triggerEvent.emit({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToParseInput,\n format: this.optionsStore.options.localization.format,\n value: value,\n } as ParseErrorEvent);\n return undefined;\n }\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n */\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n setFromInput(value: any, index?: number) {\n if (!value) {\n this.setValue(undefined, index);\n return;\n }\n const converted = this.parseInput(value);\n if (converted) {\n converted.setLocalization(this.optionsStore.options.localization);\n this.setValue(converted, index);\n }\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!DateTime.isValid(targetDate)) return false;\n if (!unit)\n return this._dates.find((x) => x.isSame(targetDate)) !== undefined;\n\n const format = getFormatByUnit(unit);\n\n const innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!DateTime.isValid(targetDate)) return -1;\n if (!unit)\n return this._dates.map((x) => x.valueOf()).indexOf(targetDate.valueOf());\n\n const format = getFormatByUnit(unit);\n\n const innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this.optionsStore.unset = true;\n this._eventEmitters.triggerEvent.emit({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n if (this.optionsStore.input) this.optionsStore.input.value = '';\n this._eventEmitters.updateDisplay.emit('all');\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n updateInput(target?: DateTime) {\n if (!this.optionsStore.input) return;\n\n let newValue = this.formatInput(target);\n if (\n this.optionsStore.options.multipleDates ||\n this.optionsStore.options.dateRange\n ) {\n newValue = this._dates\n .map((d) => this.formatInput(d))\n .join(this.optionsStore.options.multipleDatesSeparator);\n }\n if (this.optionsStore.input.value != newValue)\n this.optionsStore.input.value = newValue;\n }\n\n /**\n * Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this.optionsStore.unset ? null : this._dates[index]?.clone;\n if (!oldDate && !this.optionsStore.unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) {\n this.updateInput(target);\n return;\n }\n\n // case of calling setValue(null)\n if (!target) {\n this._setValueNull(isClear, index, oldDate);\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this.optionsStore.options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this.optionsStore.options.stepping) *\n this.optionsStore.options.stepping;\n target.startOf(Unit.minutes);\n }\n\n const onUpdate = (isValid: boolean) => {\n this._dates[index] = target;\n this._eventEmitters.updateViewDate.emit(target.clone);\n\n this.updateInput(target);\n\n this.optionsStore.unset = false;\n this._eventEmitters.updateDisplay.emit('all');\n this._eventEmitters.triggerEvent.emit({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: isValid,\n } as ChangeEvent);\n };\n\n if (\n this.validation.isValid(target) &&\n this.validation.dateRangeIsValid(this.picked, index, target)\n ) {\n onUpdate(true);\n return;\n }\n\n if (this.optionsStore.options.keepInvalid) {\n onUpdate(false);\n }\n\n this._eventEmitters.triggerEvent.emit({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n private _setValueNull(isClear: boolean, index: number, oldDate: DateTime) {\n if (\n !this.optionsStore.options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this.optionsStore.unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n\n this.updateInput();\n\n this._eventEmitters.triggerEvent.emit({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n this._eventEmitters.updateDisplay.emit('all');\n }\n}\n","enum ActionTypes {\n next = 'next',\n previous = 'previous',\n changeCalendarView = 'changeCalendarView',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n\nexport default ActionTypes;\n","import { DateTime, Unit } from '../../datetime';\nimport Namespace from '../../utilities/namespace';\nimport Validation from '../../validation';\nimport Dates from '../../dates';\nimport { Paint } from '../index';\nimport { serviceLocator } from '../../utilities/service-locator';\nimport ActionTypes from '../../utilities/action-types';\nimport { OptionsStore } from '../../utilities/optionsStore';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private optionsStore: OptionsStore;\n private dates: Dates;\n private validation: Validation;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.dates = serviceLocator.locate(Dates);\n this.validation = serviceLocator.locate(Validation);\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n getPicker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this.optionsStore.options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n const { rangeHoverEvent, rangeHoverOutEvent } =\n this.handleMouseEvents(container);\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this.optionsStore.options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n\n // if hover is supported then add the events\n if (\n matchMedia('(hover: hover)').matches &&\n this.optionsStore.options.dateRange\n ) {\n div.addEventListener('mouseover', rangeHoverEvent);\n div.addEventListener('mouseout', rangeHoverOutEvent);\n }\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(widget: HTMLElement, paint: Paint): void {\n const container = widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0] as HTMLElement;\n\n this._updateCalendarView(container);\n\n const innerDate = this.optionsStore.viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay', this.optionsStore.options.localization.startOfTheWeek)\n .manipulate(12, Unit.hours);\n\n this._handleCalendarWeeks(container, innerDate.clone);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDay}\"]`)\n .forEach((element: HTMLElement) => {\n const classes: string[] = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this.optionsStore.viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this.optionsStore.viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this.optionsStore.unset &&\n !this.optionsStore.options.dateRange &&\n this.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this.validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n this._handleDateRange(innerDate, classes);\n\n paint(Unit.date, innerDate, classes, element);\n\n element.classList.remove(...element.classList);\n element.classList.add(...classes);\n element.setAttribute('data-value', this._dateToDataValue(innerDate));\n element.setAttribute('data-day', `${innerDate.date}`);\n element.innerText = innerDate.parts(undefined, {\n day: 'numeric',\n }).day;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n private _dateToDataValue(date: DateTime): string {\n if (!DateTime.isValid(date)) return '';\n\n return `${date.year}-${date.month.toString().padStart(2, '0')}-${date.date\n .toString()\n .padStart(2, '0')}`;\n }\n\n private _handleDateRange(innerDate: DateTime, classes: string[]) {\n const rangeStart = this.dates.picked[0];\n const rangeEnd = this.dates.picked[1];\n\n if (this.optionsStore.options.dateRange) {\n if (innerDate.isBetween(rangeStart, rangeEnd, Unit.date)) {\n classes.push(Namespace.css.rangeIn);\n }\n\n if (innerDate.isSame(rangeStart, Unit.date)) {\n classes.push(Namespace.css.rangeStart);\n }\n\n if (innerDate.isSame(rangeEnd, Unit.date)) {\n classes.push(Namespace.css.rangeEnd);\n }\n }\n }\n\n private handleMouseEvents(container: HTMLElement) {\n const rangeHoverEvent = (e: MouseEvent) => {\n const currentTarget = e?.currentTarget as HTMLElement;\n\n // if we have 0 or 2 selected or if the target is disabled then ignore\n if (\n this.dates.picked.length !== 1 ||\n currentTarget.classList.contains(Namespace.css.disabled)\n )\n return;\n\n // select all the date divs\n const allDays = [...container.querySelectorAll('.day')] as HTMLElement[];\n\n // get the date value from the element being hovered over\n const attributeValue = currentTarget.getAttribute('data-value');\n\n // format the string to a date\n const innerDate = DateTime.fromString(attributeValue, {\n format: 'yyyy-MM-dd',\n });\n\n // find the position of the target in the date container\n const dayIndex = allDays.findIndex(\n (e) => e.getAttribute('data-value') === attributeValue\n );\n\n // find the first and second selected dates\n const rangeStart = this.dates.picked[0];\n const rangeEnd = this.dates.picked[1];\n\n //format the start date so that it can be found by the attribute\n const rangeStartFormatted = this._dateToDataValue(rangeStart);\n const rangeStartIndex = allDays.findIndex(\n (e) => e.getAttribute('data-value') === rangeStartFormatted\n );\n const rangeStartElement = allDays[rangeStartIndex];\n\n //make sure we don't leave start/end classes if we don't need them\n if (!innerDate.isSame(rangeStart, Unit.date)) {\n currentTarget.classList.remove(Namespace.css.rangeStart);\n }\n\n if (!innerDate.isSame(rangeEnd, Unit.date)) {\n currentTarget.classList.remove(Namespace.css.rangeEnd);\n }\n\n // the following figures out which direct from start date is selected\n // the selection \"cap\" classes are applied if needed\n // otherwise all the dates between will get the `rangeIn` class.\n // We make this selection based on the element's index and the rangeStart index\n\n let lambda: (_, index) => boolean;\n\n if (innerDate.isBefore(rangeStart)) {\n currentTarget.classList.add(Namespace.css.rangeStart);\n rangeStartElement?.classList.remove(Namespace.css.rangeStart);\n rangeStartElement?.classList.add(Namespace.css.rangeEnd);\n lambda = (_, index) => index > dayIndex && index < rangeStartIndex;\n } else {\n currentTarget.classList.add(Namespace.css.rangeEnd);\n rangeStartElement?.classList.remove(Namespace.css.rangeEnd);\n rangeStartElement?.classList.add(Namespace.css.rangeStart);\n lambda = (_, index) => index < dayIndex && index > rangeStartIndex;\n }\n\n allDays.filter(lambda).forEach((e) => {\n e.classList.add(Namespace.css.rangeIn);\n });\n };\n\n const rangeHoverOutEvent = (e: MouseEvent) => {\n // find all the dates in the container\n const allDays = [...container.querySelectorAll('.day')] as HTMLElement[];\n\n // if only the start is selected, remove all the rangeIn classes\n // we do this because once the user hovers over a new date the range will be recalculated.\n if (this.dates.picked.length === 1)\n allDays.forEach((e) => e.classList.remove(Namespace.css.rangeIn));\n\n // if we have 0 or 2 dates selected then ignore\n if (this.dates.picked.length !== 1) return;\n\n const currentTarget = e?.currentTarget as HTMLElement;\n\n // get the elements date from the attribute value\n const innerDate = new DateTime(currentTarget.getAttribute('data-value'));\n\n // verify selections and remove invalid classes\n if (!innerDate.isSame(this.dates.picked[0], Unit.date)) {\n currentTarget.classList.remove(Namespace.css.rangeStart);\n }\n\n if (!innerDate.isSame(this.dates.picked[1], Unit.date)) {\n currentTarget.classList.remove(Namespace.css.rangeEnd);\n }\n };\n\n return { rangeHoverEvent, rangeHoverOutEvent };\n }\n\n private _updateCalendarView(container: Element) {\n if (this.optionsStore.currentView !== 'calendar') return;\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this.optionsStore.viewDate.format(\n this.optionsStore.options.localization.dayViewHeaderFormat\n )\n );\n this.optionsStore.options.display.components.month\n ? switcher.classList.remove(Namespace.css.disabled)\n : switcher.classList.add(Namespace.css.disabled);\n this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n }\n\n /***\n * Generates a html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n const innerDate = this.optionsStore.viewDate.clone\n .startOf('weekDay', this.optionsStore.options.localization.startOfTheWeek)\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this.optionsStore.options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n let weekDay = innerDate.format({ weekday: 'short' });\n if (this.optionsStore.options.localization.maxWeekdayLength > 0)\n weekDay = weekDay.substring(\n 0,\n this.optionsStore.options.localization.maxWeekdayLength\n );\n htmlDivElement.innerText = weekDay;\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n\n private _handleCalendarWeeks(container: HTMLElement, innerDate: DateTime) {\n [...container.querySelectorAll(`.${Namespace.css.calendarWeeks}`)]\n .filter((e: HTMLElement) => e.innerText !== '#')\n .forEach((element: HTMLElement) => {\n element.innerText = `${innerDate.week}`;\n innerDate.manipulate(7, Unit.date);\n });\n }\n}\n","import { Unit } from '../../datetime';\nimport Namespace from '../../utilities/namespace';\nimport Validation from '../../validation';\nimport Dates from '../../dates';\nimport { Paint } from '../index';\nimport { serviceLocator } from '../../utilities/service-locator';\nimport ActionTypes from '../../utilities/action-types';\nimport { OptionsStore } from '../../utilities/optionsStore';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private optionsStore: OptionsStore;\n private dates: Dates;\n private validation: Validation;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.dates = serviceLocator.locate(Dates);\n this.validation = serviceLocator.locate(Validation);\n }\n /**\n * Build the container html for the display\n * @private\n */\n getPicker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(widget: HTMLElement, paint: Paint): void {\n const container = widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n\n if (this.optionsStore.currentView === 'months') {\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this.optionsStore.viewDate.format({ year: 'numeric' })\n );\n\n this.optionsStore.options.display.components.year\n ? switcher.classList.remove(Namespace.css.disabled)\n : switcher.classList.add(Namespace.css.disabled);\n\n this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n }\n\n const innerDate = this.optionsStore.viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n const classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this.optionsStore.unset &&\n this.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this.validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n paint(Unit.month, innerDate, classes, containerClone);\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, Unit } from '../../datetime';\nimport Namespace from '../../utilities/namespace';\nimport Dates from '../../dates';\nimport Validation from '../../validation';\nimport { Paint } from '../index';\nimport { serviceLocator } from '../../utilities/service-locator';\nimport ActionTypes from '../../utilities/action-types';\nimport { OptionsStore } from '../../utilities/optionsStore';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _startYear: DateTime;\n private _endYear: DateTime;\n private optionsStore: OptionsStore;\n private dates: Dates;\n private validation: Validation;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.dates = serviceLocator.locate(Dates);\n this.validation = serviceLocator.locate(Validation);\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n getPicker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(widget: HTMLElement, paint: Paint) {\n this._startYear = this.optionsStore.viewDate.clone.manipulate(\n -1,\n Unit.year\n );\n this._endYear = this.optionsStore.viewDate.clone.manipulate(10, Unit.year);\n\n const container = widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n\n if (this.optionsStore.currentView === 'years') {\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({\n year: 'numeric',\n })}`\n );\n\n this.optionsStore.options.display.components.decades\n ? switcher.classList.remove(Namespace.css.disabled)\n : switcher.classList.add(Namespace.css.disabled);\n\n this.validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this.validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n }\n\n const innerDate = this.optionsStore.viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement) => {\n const classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this.optionsStore.unset &&\n this.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this.validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n paint(Unit.year, innerDate, classes, containerClone);\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = innerDate.format({ year: 'numeric' });\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import Dates from '../../dates';\nimport { DateTime, Unit } from '../../datetime';\nimport Namespace from '../../utilities/namespace';\nimport Validation from '../../validation';\nimport { Paint } from '../index';\nimport { serviceLocator } from '../../utilities/service-locator';\nimport ActionTypes from '../../utilities/action-types';\nimport { OptionsStore } from '../../utilities/optionsStore';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class DecadeDisplay {\n private _startDecade: DateTime;\n private _endDecade: DateTime;\n private optionsStore: OptionsStore;\n private dates: Dates;\n private validation: Validation;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.dates = serviceLocator.locate(Dates);\n this.validation = serviceLocator.locate(Validation);\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n getPicker() {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.decadesContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDecade);\n container.appendChild(div);\n }\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(widget: HTMLElement, paint: Paint) {\n const [start, end] = Dates.getStartEndYear(\n 100,\n this.optionsStore.viewDate.year\n );\n this._startDecade = this.optionsStore.viewDate.clone.startOf(Unit.year);\n this._startDecade.year = start;\n this._endDecade = this.optionsStore.viewDate.clone.startOf(Unit.year);\n this._endDecade.year = end;\n\n const container = widget.getElementsByClassName(\n Namespace.css.decadesContainer\n )[0];\n\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n if (this.optionsStore.currentView === 'decades') {\n switcher.setAttribute(\n Namespace.css.decadesContainer,\n `${this._startDecade.format({\n year: 'numeric',\n })}-${this._endDecade.format({ year: 'numeric' })}`\n );\n\n this.validation.isValid(this._startDecade, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this.validation.isValid(this._endDecade, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n }\n\n const pickedYears = this.dates.picked.map((x) => x.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n if (index === 0) {\n containerClone.classList.add(Namespace.css.old);\n if (this._startDecade.year - 10 < 0) {\n containerClone.textContent = ' ';\n previous.classList.add(Namespace.css.disabled);\n containerClone.classList.add(Namespace.css.disabled);\n containerClone.setAttribute('data-value', '');\n return;\n } else {\n containerClone.innerText = this._startDecade.clone\n .manipulate(-10, Unit.year)\n .format({ year: 'numeric' });\n containerClone.setAttribute(\n 'data-value',\n `${this._startDecade.year}`\n );\n return;\n }\n }\n\n const classes = [];\n classes.push(Namespace.css.decade);\n const startDecadeYear = this._startDecade.year;\n const endDecadeYear = this._startDecade.year + 9;\n\n if (\n !this.optionsStore.unset &&\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\n .length > 0\n ) {\n classes.push(Namespace.css.active);\n }\n if (\n !this.validation.isValid(this._startDecade, Unit.year) &&\n !this.validation.isValid(\n this._startDecade.clone.manipulate(10, Unit.year),\n Unit.year\n )\n ) {\n classes.push(Namespace.css.disabled);\n }\n\n paint('decade', this._startDecade, classes, containerClone);\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${this._startDecade.year}`);\n containerClone.innerText = `${this._startDecade.format({\n year: 'numeric',\n })}`;\n\n this._startDecade.manipulate(10, Unit.year);\n });\n }\n}\n","import { Unit } from '../../datetime';\nimport Namespace from '../../utilities/namespace';\nimport Validation from '../../validation';\nimport Dates from '../../dates';\nimport { serviceLocator } from '../../utilities/service-locator';\nimport ActionTypes from '../../utilities/action-types';\nimport { OptionsStore } from '../../utilities/optionsStore';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _gridColumns = '';\n private optionsStore: OptionsStore;\n private validation: Validation;\n private dates: Dates;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.dates = serviceLocator.locate(Dates);\n this.validation = serviceLocator.locate(Validation);\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n getPicker(iconTag: (iconClass: string) => HTMLElement): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid(iconTag));\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(widget: HTMLElement): void {\n const timesDiv = (\n widget.getElementsByClassName(Namespace.css.clockContainer)[0]\n );\n let lastPicked = this.dates.lastPicked?.clone;\n if (!lastPicked && this.optionsStore.options.useCurrent)\n lastPicked = this.optionsStore.viewDate.clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this.optionsStore.options.display.components.hours) {\n if (\n !this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = lastPicked\n ? lastPicked.getHoursFormatted(\n this.optionsStore.options.localization.hourCycle\n )\n : '--';\n }\n\n if (this.optionsStore.options.display.components.minutes) {\n if (\n !this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked ? lastPicked.minutesFormatted : '--';\n }\n\n if (this.optionsStore.options.display.components.seconds) {\n if (\n !this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this.validation.isValid(\n this.optionsStore.viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked ? lastPicked.secondsFormatted : '--';\n }\n\n if (this.optionsStore.isTwelveHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n const meridiemDate = (lastPicked || this.optionsStore.viewDate).clone;\n\n toggle.innerText = meridiemDate.meridiem();\n\n if (\n !this.validation.isValid(\n meridiemDate.manipulate(\n meridiemDate.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(iconTag: (iconClass: string) => HTMLElement): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = iconTag(this.optionsStore.options.display.icons.up),\n downIcon = iconTag(this.optionsStore.options.display.icons.down);\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this.optionsStore.options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this.optionsStore.options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this.optionsStore.options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this.optionsStore.options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this.optionsStore.options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this.optionsStore.options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this.optionsStore.isTwelveHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.setAttribute(\n 'title',\n this.optionsStore.options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n if (Namespace.css.toggleMeridiem.includes(',')) {\n //todo move this to paint function?\n button.classList.add(...Namespace.css.toggleMeridiem.split(','));\n } else button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { Unit } from '../../datetime';\nimport Namespace from '../../utilities/namespace';\nimport Validation from '../../validation';\nimport { serviceLocator } from '../../utilities/service-locator';\nimport { Paint } from '../index';\nimport ActionTypes from '../../utilities/action-types';\nimport { OptionsStore } from '../../utilities/optionsStore';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private optionsStore: OptionsStore;\n private validation: Validation;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.validation = serviceLocator.locate(Validation);\n }\n /**\n * Build the container html for the display\n * @private\n */\n getPicker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (let i = 0; i < (this.optionsStore.isTwelveHour ? 12 : 24); i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(widget: HTMLElement, paint: Paint): void {\n const container = widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n const innerDate = this.optionsStore.viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement) => {\n const classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this.validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n paint(Unit.hours, innerDate, classes, containerClone);\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = innerDate.getHoursFormatted(\n this.optionsStore.options.localization.hourCycle\n );\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { Unit } from '../../datetime';\nimport Namespace from '../../utilities/namespace';\nimport Validation from '../../validation';\nimport { serviceLocator } from '../../utilities/service-locator';\nimport { Paint } from '../index';\nimport ActionTypes from '../../utilities/action-types';\nimport { OptionsStore } from '../../utilities/optionsStore';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private optionsStore: OptionsStore;\n private validation: Validation;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.validation = serviceLocator.locate(Validation);\n }\n /**\n * Build the container html for the display\n * @private\n */\n getPicker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n const step =\n this.optionsStore.options.stepping === 1\n ? 5\n : this.optionsStore.options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(widget: HTMLElement, paint: Paint): void {\n const container = widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n const innerDate = this.optionsStore.viewDate.clone.startOf(Unit.hours);\n const step =\n this.optionsStore.options.stepping === 1\n ? 5\n : this.optionsStore.options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement) => {\n const classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this.validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n paint(Unit.minutes, innerDate, classes, containerClone);\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { Unit } from '../../datetime';\nimport Namespace from '../../utilities/namespace';\nimport Validation from '../../validation';\nimport { serviceLocator } from '../../utilities/service-locator';\nimport { Paint } from '../index';\nimport ActionTypes from '../../utilities/action-types';\nimport { OptionsStore } from '../../utilities/optionsStore';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private optionsStore: OptionsStore;\n private validation: Validation;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.validation = serviceLocator.locate(Validation);\n }\n /**\n * Build the container html for the display\n * @private\n */\n getPicker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(widget: HTMLElement, paint: Paint): void {\n const container = widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n const innerDate = this.optionsStore.viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement) => {\n const classes = [];\n classes.push(Namespace.css.second);\n\n if (!this.validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n paint(Unit.seconds, innerDate, classes, containerClone);\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import Namespace from '../utilities/namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n static toggle(target: HTMLElement) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target);\n } else {\n this.show(target);\n }\n }\n\n /**\n * Skips any animation or timeouts and immediately set the element to show.\n * @param target\n */\n static showImmediately(target: HTMLElement) {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n static show(target: HTMLElement) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n let timeOut = null;\n const complete = () => {\n Collapse.showImmediately(target);\n timeOut = null;\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n //eslint-disable-next-line @typescript-eslint/no-unused-vars\n timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * Skips any animation or timeouts and immediately set the element to hide.\n * @param target\n */\n static hideImmediately(target: HTMLElement) {\n if (!target) return;\n target.classList.remove(Namespace.css.collapsing, Namespace.css.show);\n target.classList.add(Namespace.css.collapse);\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n static hide(target: HTMLElement) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n let timeOut = null;\n const complete = () => {\n Collapse.hideImmediately(target);\n timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n //eslint-disable-next-line @typescript-eslint/no-unused-vars\n timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private static getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport Namespace from '../utilities/namespace';\nimport { HideEvent } from '../utilities/event-types';\nimport Collapse from './collapse';\nimport Validation from '../validation';\nimport Dates from '../dates';\nimport { EventEmitters, ViewUpdateValues } from '../utilities/event-emitter';\nimport { serviceLocator } from '../utilities/service-locator';\nimport ActionTypes from '../utilities/action-types';\nimport CalendarModes from '../utilities/calendar-modes';\nimport { OptionsStore } from '../utilities/optionsStore';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _widget: HTMLElement;\n private _popperInstance: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n private _isVisible = false;\n private optionsStore: OptionsStore;\n private validation: Validation;\n private dates: Dates;\n\n dateDisplay: DateDisplay;\n monthDisplay: MonthDisplay;\n yearDisplay: YearDisplay;\n decadeDisplay: DecadeDisplay;\n timeDisplay: TimeDisplay;\n hourDisplay: HourDisplay;\n minuteDisplay: MinuteDisplay;\n secondDisplay: SecondDisplay;\n private _eventEmitters: EventEmitters;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.validation = serviceLocator.locate(Validation);\n this.dates = serviceLocator.locate(Dates);\n\n this.dateDisplay = serviceLocator.locate(DateDisplay);\n this.monthDisplay = serviceLocator.locate(MonthDisplay);\n this.yearDisplay = serviceLocator.locate(YearDisplay);\n this.decadeDisplay = serviceLocator.locate(DecadeDisplay);\n this.timeDisplay = serviceLocator.locate(TimeDisplay);\n this.hourDisplay = serviceLocator.locate(HourDisplay);\n this.minuteDisplay = serviceLocator.locate(MinuteDisplay);\n this.secondDisplay = serviceLocator.locate(SecondDisplay);\n this._eventEmitters = serviceLocator.locate(EventEmitters);\n this._widget = undefined;\n\n this._eventEmitters.updateDisplay.subscribe((result: ViewUpdateValues) => {\n this._update(result);\n });\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n get dateContainer(): HTMLElement | undefined {\n return this.widget?.querySelector(`div.${Namespace.css.dateContainer}`);\n }\n\n get timeContainer(): HTMLElement | undefined {\n return this.widget?.querySelector(`div.${Namespace.css.timeContainer}`);\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: ViewUpdateValues): void {\n if (!this.widget) return;\n switch (unit) {\n case Unit.seconds:\n this.secondDisplay._update(this.widget, this.paint);\n break;\n case Unit.minutes:\n this.minuteDisplay._update(this.widget, this.paint);\n break;\n case Unit.hours:\n this.hourDisplay._update(this.widget, this.paint);\n break;\n case Unit.date:\n this.dateDisplay._update(this.widget, this.paint);\n break;\n case Unit.month:\n this.monthDisplay._update(this.widget, this.paint);\n break;\n case Unit.year:\n this.yearDisplay._update(this.widget, this.paint);\n break;\n case 'decade':\n this.decadeDisplay._update(this.widget, this.paint);\n break;\n case 'clock':\n if (!this._hasTime) break;\n this.timeDisplay._update(this.widget);\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this.decadeDisplay._update(this.widget, this.paint);\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n // noinspection JSUnusedLocalSymbols\n /**\n * Allows developers to add/remove classes from an element.\n * @param _unit\n * @param _date\n * @param _classes\n * @param _element\n */\n\n /* eslint-disable @typescript-eslint/no-unused-vars */\n paint(\n _unit: Unit | 'decade',\n _date: DateTime,\n _classes: string[],\n _element: HTMLElement\n ) {\n // implemented in plugin\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n this._showSetDefaultIfNeeded();\n\n this._buildWidget();\n this._updateTheme();\n\n this._showSetupViewMode();\n\n if (!this.optionsStore.options.display.inline) {\n // If needed to change the parent container\n const container = this.optionsStore.options?.container || document.body;\n const placement =\n this.optionsStore.options?.display?.placement || 'bottom';\n\n container.appendChild(this.widget);\n this.createPopup(this.optionsStore.element, this.widget, {\n modifiers: [{ name: 'eventListeners', enabled: true }],\n //#2400\n placement:\n document.documentElement.dir === 'rtl'\n ? `${placement}-end`\n : `${placement}-start`,\n }).then();\n } else {\n this.optionsStore.element.appendChild(this.widget);\n }\n\n if (this.optionsStore.options.display.viewMode == 'clock') {\n this._eventEmitters.action.emit({\n e: null,\n action: ActionTypes.showClock,\n });\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._hasTime && this.optionsStore.options.display.sideBySide) {\n this.timeDisplay._update(this.widget);\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this.optionsStore.options.display.inline) {\n this.updatePopup();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._eventEmitters.triggerEvent.emit({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n private _showSetupViewMode() {\n // If modeView is only clock\n const onlyClock = this._hasTime && !this._hasDate;\n\n // reset the view to the clock if there's no date components\n if (onlyClock) {\n this.optionsStore.currentView = 'clock';\n this._eventEmitters.action.emit({\n e: null,\n action: ActionTypes.showClock,\n });\n }\n // otherwise return to the calendar view\n else if (!this.optionsStore.currentCalendarViewMode) {\n this.optionsStore.currentCalendarViewMode =\n this.optionsStore.minimumCalendarViewMode;\n }\n\n if (!onlyClock && this.optionsStore.options.display.viewMode !== 'clock') {\n if (this._hasTime) {\n if (!this.optionsStore.options.display.sideBySide) {\n Collapse.hideImmediately(this.timeContainer);\n } else {\n Collapse.show(this.timeContainer);\n }\n }\n Collapse.show(this.dateContainer);\n }\n\n if (this._hasDate) {\n this._showMode();\n }\n }\n\n private _showSetDefaultIfNeeded() {\n if (this.dates.picked.length != 0) return;\n\n if (\n this.optionsStore.options.useCurrent &&\n !this.optionsStore.options.defaultDate\n ) {\n const date = new DateTime().setLocalization(\n this.optionsStore.options.localization\n );\n if (!this.optionsStore.options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this.optionsStore.options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this.validation.isValid(date) && tries > 31) {\n date.manipulate(direction, Unit.date);\n tries++;\n }\n }\n this.dates.setValue(date);\n }\n\n if (this.optionsStore.options.defaultDate) {\n this.dates.setValue(this.optionsStore.options.defaultDate);\n }\n }\n\n async createPopup(\n element: HTMLElement,\n widget: HTMLElement,\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n options: any\n ): Promise {\n let createPopperFunction;\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((window as any)?.Popper) {\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n createPopperFunction = (window as any)?.Popper?.createPopper;\n } else {\n const { createPopper } = await import('@popperjs/core');\n createPopperFunction = createPopper;\n }\n if (createPopperFunction) {\n this._popperInstance = createPopperFunction(element, widget, options);\n }\n }\n\n updatePopup(): void {\n this._popperInstance?.update();\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this.optionsStore.minimumCalendarViewMode,\n Math.min(3, this.optionsStore.currentCalendarViewMode + direction)\n );\n if (this.optionsStore.currentCalendarViewMode == max) return;\n this.optionsStore.currentCalendarViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode =\n CalendarModes[this.optionsStore.currentCalendarViewMode];\n const picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this.decadeDisplay._update(this.widget, this.paint);\n break;\n case Namespace.css.yearsContainer:\n this.yearDisplay._update(this.widget, this.paint);\n break;\n case Namespace.css.monthsContainer:\n this.monthDisplay._update(this.widget, this.paint);\n break;\n case Namespace.css.daysContainer:\n this.dateDisplay._update(this.widget, this.paint);\n break;\n }\n\n picker.style.display = 'grid';\n\n if (this.optionsStore.options.display.sideBySide)\n ((\n this.widget.querySelectorAll(`.${Namespace.css.clockContainer}`)[0]\n )).style.display = 'grid';\n\n this._updateCalendarHeader();\n this._eventEmitters.viewUpdate.emit();\n }\n\n /**\n * Changes the theme. E.g. light, dark or auto\n * @param theme the theme name\n * @private\n */\n _updateTheme(theme?: 'light' | 'dark' | 'auto'): void {\n if (!this.widget) {\n return;\n }\n if (theme) {\n if (this.optionsStore.options.display.theme === theme) return;\n this.optionsStore.options.display.theme = theme;\n }\n\n this.widget.classList.remove('light', 'dark');\n this.widget.classList.add(this._getThemeClass());\n\n if (this.optionsStore.options.display.theme === 'auto') {\n window\n .matchMedia(Namespace.css.isDarkPreferredQuery)\n .addEventListener('change', () => this._updateTheme());\n } else {\n window\n .matchMedia(Namespace.css.isDarkPreferredQuery)\n .removeEventListener('change', () => this._updateTheme());\n }\n }\n\n _getThemeClass(): string {\n const currentTheme = this.optionsStore.options.display.theme || 'auto';\n\n const isDarkMode =\n window.matchMedia &&\n window.matchMedia(Namespace.css.isDarkPreferredQuery).matches;\n\n switch (currentTheme) {\n case 'light':\n return Namespace.css.lightTheme;\n case 'dark':\n return Namespace.css.darkTheme;\n case 'auto':\n return isDarkMode ? Namespace.css.darkTheme : Namespace.css.lightTheme;\n }\n }\n\n _updateCalendarHeader() {\n if (!this._hasDate) return;\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this.optionsStore.options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this.optionsStore.options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this.optionsStore.options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this.optionsStore.options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this.optionsStore.options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this.optionsStore.options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this.optionsStore.options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this.optionsStore.options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this.optionsStore.options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this.optionsStore.options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this.optionsStore.options.localization.nextMonth\n );\n switcher.setAttribute(\n showing,\n this.optionsStore.viewDate.format(\n this.optionsStore.options.localization.dayViewHeaderFormat\n )\n );\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._eventEmitters.triggerEvent.emit({\n type: Namespace.events.hide,\n date: this.optionsStore.unset ? null : this.dates.lastPicked?.clone,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this.getHeadTemplate(),\n this.decadeDisplay.getPicker(),\n this.yearDisplay.getPicker(),\n this.monthDisplay.getPicker(),\n this.dateDisplay.getPicker()\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this.timeDisplay.getPicker(this._iconTag.bind(this)));\n timeView.appendChild(this.hourDisplay.getPicker());\n timeView.appendChild(this.minuteDisplay.getPicker());\n timeView.appendChild(this.secondDisplay.getPicker());\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this.getToolbarElements());\n\n if (this.optionsStore.options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this.optionsStore.options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (this.optionsStore.options.display.sideBySide && this._hasDateAndTime) {\n this._buildWidgetSideBySide(template, dateView, timeView, toolbar);\n return;\n }\n\n if (this.optionsStore.options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n const setupComponentView = (hasFirst, hasSecond, element, shouldShow) => {\n if (!hasFirst) return;\n if (hasSecond) {\n element.classList.add(Namespace.css.collapse);\n if (shouldShow) element.classList.add(Namespace.css.show);\n }\n template.appendChild(element);\n };\n\n setupComponentView(\n this._hasDate,\n this._hasTime,\n dateView,\n this.optionsStore.options.display.viewMode !== 'clock'\n );\n\n setupComponentView(\n this._hasTime,\n this._hasDate,\n timeView,\n this.optionsStore.options.display.viewMode === 'clock'\n );\n\n if (this.optionsStore.options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n private _buildWidgetSideBySide(\n template: HTMLDivElement,\n dateView: HTMLDivElement,\n timeView: HTMLDivElement,\n toolbar: HTMLDivElement\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this.optionsStore.options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this.optionsStore.options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this.optionsStore.options.display.components.clock &&\n (this.optionsStore.options.display.components.hours ||\n this.optionsStore.options.display.components.minutes ||\n this.optionsStore.options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this.optionsStore.options.display.components.calendar &&\n (this.optionsStore.options.display.components.year ||\n this.optionsStore.options.display.components.month ||\n this.optionsStore.options.display.components.date)\n );\n }\n\n get _hasDateAndTime(): boolean {\n return this._hasDate && this._hasTime;\n }\n\n /**\n * Get the toolbar html based on options like buttons => today\n * @private\n */\n getToolbarElements(): HTMLElement[] {\n const toolbar = [];\n\n if (this.optionsStore.options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this.optionsStore.options.localization.today);\n\n div.appendChild(\n this._iconTag(this.optionsStore.options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this.optionsStore.options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this.optionsStore.options.display.viewMode === 'clock') {\n title = this.optionsStore.options.localization.selectDate;\n icon = this.optionsStore.options.display.icons.date;\n } else {\n title = this.optionsStore.options.localization.selectTime;\n icon = this.optionsStore.options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this.optionsStore.options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this.optionsStore.options.localization.clear);\n\n div.appendChild(\n this._iconTag(this.optionsStore.options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this.optionsStore.options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this.optionsStore.options.localization.close);\n\n div.appendChild(\n this._iconTag(this.optionsStore.options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n getHeadTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this.optionsStore.options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.changeCalendarView);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(\n this._iconTag(this.optionsStore.options.display.icons.next)\n );\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons => type is `sprites` then a svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement | SVGElement {\n if (this.optionsStore.options.display.icons.type === 'sprites') {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n const icon = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'use'\n );\n icon.setAttribute('xlink:href', iconClass); // Deprecated. Included for backward compatibility\n icon.setAttribute('href', iconClass);\n svg.appendChild(icon);\n\n return svg;\n }\n const icon = document.createElement('i');\n icon.classList.add(...iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (this.optionsStore.options.debug || (window as any).debug) return; //eslint-disable-line @typescript-eslint/no-explicit-any\n\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this.optionsStore.element) // click on the element\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._eventEmitters.action.emit({ e: e });\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n this._dispose();\n if (wasVisible) this.show();\n }\n\n refreshCurrentView() {\n //if the widget is not showing, just destroy it\n if (!this._isVisible) this._dispose();\n\n switch (this.optionsStore.currentView) {\n case 'clock':\n this._update('clock');\n break;\n case 'calendar':\n this._update(Unit.date);\n break;\n case 'months':\n this._update(Unit.month);\n break;\n case 'years':\n this._update(Unit.year);\n break;\n case 'decades':\n this._update('decade');\n break;\n }\n }\n}\n\nexport type Paint = (\n unit: Unit | 'decade',\n innerDate: DateTime,\n classes: string[],\n element: HTMLElement\n) => void;\n","import { DateTime, Unit } from './datetime';\nimport Collapse from './display/collapse';\nimport Namespace from './utilities/namespace';\nimport Dates from './dates';\nimport Validation from './validation';\nimport Display from './display';\nimport { EventEmitters } from './utilities/event-emitter';\nimport { serviceLocator } from './utilities/service-locator.js';\nimport ActionTypes from './utilities/action-types';\nimport CalendarModes from './utilities/calendar-modes';\nimport { OptionsStore } from './utilities/optionsStore';\n\n/**\n * Logic for various click actions\n */\nexport default class Actions {\n private optionsStore: OptionsStore;\n private validation: Validation;\n private dates: Dates;\n private display: Display;\n private _eventEmitters: EventEmitters;\n\n constructor() {\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.dates = serviceLocator.locate(Dates);\n this.validation = serviceLocator.locate(Validation);\n this.display = serviceLocator.locate(Display);\n this._eventEmitters = serviceLocator.locate(EventEmitters);\n\n this._eventEmitters.action.subscribe((result) => {\n this.do(result.e, result.action);\n });\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n do(e: any, action?: ActionTypes) {\n const currentTarget = e?.currentTarget as HTMLElement;\n if (currentTarget?.classList?.contains(Namespace.css.disabled)) return;\n action = action || (currentTarget?.dataset?.action as ActionTypes);\n const lastPicked = (this.dates.lastPicked || this.optionsStore.viewDate)\n .clone;\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n this.handleNextPrevious(action);\n break;\n case ActionTypes.changeCalendarView:\n this.display._showMode(1);\n this.display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n this.handleSelectCalendarMode(action, currentTarget);\n break;\n case ActionTypes.selectDay:\n this.handleSelectDay(currentTarget);\n break;\n case ActionTypes.selectHour: {\n let hour = +currentTarget.dataset.value;\n if (lastPicked.hours >= 12 && this.optionsStore.isTwelveHour)\n hour += 12;\n lastPicked.hours = hour;\n this.dates.setValue(lastPicked, this.dates.lastPickedIndex);\n this.hideOrClock(e);\n break;\n }\n case ActionTypes.selectMinute: {\n lastPicked.minutes = +currentTarget.dataset.value;\n this.dates.setValue(lastPicked, this.dates.lastPickedIndex);\n this.hideOrClock(e);\n break;\n }\n case ActionTypes.selectSecond: {\n lastPicked.seconds = +currentTarget.dataset.value;\n this.dates.setValue(lastPicked, this.dates.lastPickedIndex);\n this.hideOrClock(e);\n break;\n }\n case ActionTypes.incrementHours:\n this.manipulateAndSet(lastPicked, Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n this.manipulateAndSet(\n lastPicked,\n Unit.minutes,\n this.optionsStore.options.stepping\n );\n break;\n case ActionTypes.incrementSeconds:\n this.manipulateAndSet(lastPicked, Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n this.manipulateAndSet(lastPicked, Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n this.manipulateAndSet(\n lastPicked,\n Unit.minutes,\n this.optionsStore.options.stepping * -1\n );\n break;\n case ActionTypes.decrementSeconds:\n this.manipulateAndSet(lastPicked, Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n this.manipulateAndSet(\n lastPicked,\n Unit.hours,\n this.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this.handleToggle(currentTarget);\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n //make sure the clock is actually displaying\n if (\n !this.optionsStore.options.display.sideBySide &&\n this.optionsStore.currentView !== 'clock'\n ) {\n //hide calendar\n Collapse.hideImmediately(this.display.dateContainer);\n //show clock\n Collapse.showImmediately(this.display.timeContainer);\n }\n this.handleShowClockContainers(action);\n break;\n case ActionTypes.clear:\n this.dates.setValue(null);\n this.display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this.display.hide();\n break;\n case ActionTypes.today: {\n const today = new DateTime().setLocalization(\n this.optionsStore.options.localization\n );\n this._eventEmitters.updateViewDate.emit(today);\n\n //todo this this really a good idea?\n if (this.validation.isValid(today, Unit.date))\n this.dates.setValue(today, this.dates.lastPickedIndex);\n break;\n }\n }\n }\n\n private handleShowClockContainers(action: ActionTypes) {\n if (!this.display._hasTime) {\n Namespace.errorMessages.throwError(\n 'Cannot show clock containers when time is disabled.'\n );\n /* ignore coverage: should never happen */\n return;\n }\n\n this.optionsStore.currentView = 'clock';\n this.display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this.display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this.display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this.display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this.display._update(Unit.seconds);\n break;\n }\n\n ((\n this.display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n }\n\n private handleNextPrevious(action: ActionTypes) {\n const { unit, step } =\n CalendarModes[this.optionsStore.currentCalendarViewMode];\n if (action === ActionTypes.next)\n this.optionsStore.viewDate.manipulate(step, unit);\n else this.optionsStore.viewDate.manipulate(step * -1, unit);\n this._eventEmitters.viewUpdate.emit();\n\n this.display._showMode();\n }\n\n /**\n * After setting the value it will either show the clock or hide the widget.\n * @param e\n */\n private hideOrClock(e) {\n if (\n !this.optionsStore.isTwelveHour &&\n !this.optionsStore.options.display.components.minutes &&\n !this.optionsStore.options.display.keepOpen &&\n !this.optionsStore.options.display.inline\n ) {\n this.display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n }\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`.\n * @param lastPicked\n * @param unit\n * @param value Value to change by\n */\n private manipulateAndSet(lastPicked: DateTime, unit: Unit, value = 1) {\n const newDate = lastPicked.manipulate(value, unit);\n if (this.validation.isValid(newDate, unit)) {\n this.dates.setValue(newDate, this.dates.lastPickedIndex);\n }\n }\n\n private handleSelectCalendarMode(\n action:\n | ActionTypes.selectMonth\n | ActionTypes.selectYear\n | ActionTypes.selectDecade,\n currentTarget: HTMLElement\n ) {\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this.optionsStore.viewDate.month = value;\n break;\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n this.optionsStore.viewDate.year = value;\n break;\n }\n\n if (\n this.optionsStore.currentCalendarViewMode ===\n this.optionsStore.minimumCalendarViewMode\n ) {\n this.dates.setValue(\n this.optionsStore.viewDate,\n this.dates.lastPickedIndex\n );\n\n if (!this.optionsStore.options.display.inline) {\n this.display.hide();\n }\n } else {\n this.display._showMode(-1);\n }\n }\n\n private handleToggle(currentTarget: HTMLElement) {\n if (\n currentTarget.getAttribute('title') ===\n this.optionsStore.options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this.optionsStore.options.localization.selectTime\n );\n currentTarget.innerHTML = this.display._iconTag(\n this.optionsStore.options.display.icons.time\n ).outerHTML;\n\n this.display._updateCalendarHeader();\n this.optionsStore.refreshCurrentView();\n } else {\n currentTarget.setAttribute(\n 'title',\n this.optionsStore.options.localization.selectDate\n );\n currentTarget.innerHTML = this.display._iconTag(\n this.optionsStore.options.display.icons.date\n ).outerHTML;\n if (this.display._hasTime) {\n this.handleShowClockContainers(ActionTypes.showClock);\n this.display._update('clock');\n }\n }\n\n this.display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) => Collapse.toggle(htmlElement));\n this._eventEmitters.viewUpdate.emit();\n }\n\n private handleSelectDay(currentTarget: HTMLElement) {\n const day = this.optionsStore.viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n if (this.optionsStore.options.dateRange) this.handleDateRange(day);\n else if (this.optionsStore.options.multipleDates) {\n this.handleMultiDate(day);\n } else {\n this.dates.setValue(day, this.dates.lastPickedIndex);\n }\n\n if (\n !this.display._hasTime &&\n !this.optionsStore.options.display.keepOpen &&\n !this.optionsStore.options.display.inline &&\n !this.optionsStore.options.multipleDates &&\n !this.optionsStore.options.dateRange\n ) {\n this.display.hide();\n }\n }\n\n private handleMultiDate(day: DateTime) {\n let index = this.dates.pickedIndex(day, Unit.date);\n console.log(index);\n if (index !== -1) {\n this.dates.setValue(null, index); //deselect multi-date\n } else {\n index = this.dates.lastPickedIndex + 1;\n if (this.dates.picked.length === 0) index = 0;\n\n this.dates.setValue(day, index);\n }\n }\n\n private handleDateRange(day: DateTime) {\n switch (this.dates.picked.length) {\n case 2: {\n this.dates.clear();\n break;\n }\n case 1: {\n const other = this.dates.picked[0];\n if (day.getTime() === other.getTime()) {\n this.dates.clear();\n break;\n }\n if (day.isBefore(other)) {\n this.dates.setValue(day, 0);\n this.dates.setValue(other, 1);\n return;\n } else {\n this.dates.setValue(day, 1);\n return;\n }\n }\n }\n\n this.dates.setValue(day, 0);\n }\n}\n","import Display from './display/index';\nimport Dates from './dates';\nimport Actions from './actions';\nimport {\n DateTime,\n DateTimeFormatOptions,\n guessHourCycle,\n Unit,\n} from './datetime';\nimport Namespace from './utilities/namespace';\nimport Options from './utilities/options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n} from './utilities/event-types';\nimport { EventEmitters } from './utilities/event-emitter';\nimport {\n serviceLocator,\n setupServiceLocator,\n} from './utilities/service-locator';\nimport CalendarModes from './utilities/calendar-modes';\nimport DefaultOptions, {\n DefaultEnLocalization,\n} from './utilities/default-options';\nimport ActionTypes from './utilities/action-types';\nimport { OptionsStore } from './utilities/optionsStore';\nimport { OptionConverter } from './utilities/optionConverter';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n _subscribers: { [key: string]: ((event: any) => Record)[] } =\n {};\n private _isDisabled = false;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: NodeJS.Timeout;\n private actions: Actions;\n private optionsStore: OptionsStore;\n private _eventEmitters: EventEmitters;\n display: Display;\n dates: Dates;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n setupServiceLocator();\n this._eventEmitters = serviceLocator.locate(EventEmitters);\n this.optionsStore = serviceLocator.locate(OptionsStore);\n this.display = serviceLocator.locate(Display);\n this.dates = serviceLocator.locate(Dates);\n this.actions = serviceLocator.locate(Actions);\n\n if (!element) {\n Namespace.errorMessages.mustProvideElement();\n }\n\n this.optionsStore.element = element;\n this._initializeOptions(options, DefaultOptions, true);\n this.optionsStore.viewDate.setLocalization(\n this.optionsStore.options.localization\n );\n this.optionsStore.unset = true;\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this.optionsStore.options.display.inline) this.display.show();\n\n this._eventEmitters.triggerEvent.subscribe((e) => {\n this._triggerEvent(e);\n });\n\n this._eventEmitters.viewUpdate.subscribe(() => {\n this._viewUpdate();\n });\n\n this._eventEmitters.updateViewDate.subscribe((dateTime) => {\n this.viewDate = dateTime;\n });\n }\n\n get viewDate() {\n return this.optionsStore.viewDate;\n }\n\n set viewDate(value) {\n this.optionsStore.viewDate = value;\n this.optionsStore.viewDate.setLocalization(\n this.optionsStore.options.localization\n );\n this.display._update(\n this.optionsStore.currentView === 'clock' ? 'clock' : 'calendar'\n );\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._initializeOptions(options, DefaultOptions);\n else this._initializeOptions(options, this.optionsStore.options);\n\n this.optionsStore.viewDate.setLocalization(\n this.optionsStore.options.localization\n );\n this.display.refreshCurrentView();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this.display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this.display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this.display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this.optionsStore.input?.setAttribute('disabled', 'disabled');\n this.display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this.optionsStore.input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.optionsStore.input.value = '';\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[] //eslint-disable-line @typescript-eslint/no-explicit-any\n ): { unsubscribe: () => void } | { unsubscribe: () => void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray: any[]; //eslint-disable-line @typescript-eslint/no-explicit-any\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch();\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this.display.hide();\n // this will clear the document click event listener\n this.display._dispose();\n this._eventEmitters.destroy();\n this.optionsStore.input?.removeEventListener(\n 'change',\n this._inputChangeEvent\n );\n if (this.optionsStore.options.allowInputToggle) {\n this.optionsStore.input?.removeEventListener(\n 'click',\n this._openClickEvent\n );\n this.optionsStore.input?.removeEventListener(\n 'focus',\n this._openClickEvent\n );\n }\n this._toggle?.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Updates the options to use the provided language.\n * THe language file must be loaded first.\n * @param language\n */\n locale(language: string) {\n const asked = loadedLocales[language];\n if (!asked) return;\n this.updateOptions({\n localization: asked,\n });\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n private _triggerEvent(event: BaseEvent) {\n event.viewMode = this.optionsStore.currentView;\n\n const isChangeEvent = event.type === Namespace.events.change;\n if (isChangeEvent) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate)\n ) {\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n\n this.optionsStore.input?.dispatchEvent(\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n new CustomEvent('change', { detail: event as any })\n );\n }\n\n this.optionsStore.element.dispatchEvent(\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n new CustomEvent(event.type, { detail: event as any })\n );\n\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((window as any).jQuery) {\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n const $ = (window as any).jQuery;\n\n if (isChangeEvent && this.optionsStore.input) {\n $(this.optionsStore.input).trigger(event);\n } else {\n $(this.optionsStore.element).trigger(event);\n }\n }\n\n this._publish(event);\n }\n\n private _publish(event: BaseEvent) {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @private\n */\n private _viewUpdate() {\n this._triggerEvent({\n type: Namespace.events.update,\n viewDate: this.optionsStore.viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): void {\n let newConfig = OptionConverter.deepCopy(config);\n newConfig = OptionConverter._mergeOptions(newConfig, mergeTo);\n if (includeDataset)\n newConfig = OptionConverter._dataToOptions(\n this.optionsStore.element,\n newConfig\n );\n\n OptionConverter._validateConflicts(newConfig);\n\n newConfig.viewDate = newConfig.viewDate.setLocalization(\n newConfig.localization\n );\n\n if (!this.optionsStore.viewDate.isSame(newConfig.viewDate)) {\n this.optionsStore.viewDate = newConfig.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (newConfig.display.components.year) {\n this.optionsStore.minimumCalendarViewMode = 2;\n }\n if (newConfig.display.components.month) {\n this.optionsStore.minimumCalendarViewMode = 1;\n }\n if (newConfig.display.components.date) {\n this.optionsStore.minimumCalendarViewMode = 0;\n }\n\n this.optionsStore.currentCalendarViewMode = Math.max(\n this.optionsStore.minimumCalendarViewMode,\n this.optionsStore.currentCalendarViewMode\n );\n\n // Update view mode if needed\n if (\n CalendarModes[this.optionsStore.currentCalendarViewMode].name !==\n newConfig.display.viewMode\n ) {\n this.optionsStore.currentCalendarViewMode = Math.max(\n CalendarModes.findIndex((x) => x.name === newConfig.display.viewMode),\n this.optionsStore.minimumCalendarViewMode\n );\n }\n\n if (this.display?.isVisible) {\n this.display._update('all');\n }\n\n if (\n newConfig.display.components.useTwentyfourHour &&\n newConfig.localization.hourCycle === undefined\n )\n newConfig.localization.hourCycle = 'h24';\n else if (newConfig.localization.hourCycle === undefined) {\n newConfig.localization.hourCycle = guessHourCycle(\n newConfig.localization.locale\n );\n }\n\n this.optionsStore.options = newConfig;\n\n if (\n newConfig.restrictions.maxDate &&\n this.viewDate.isAfter(newConfig.restrictions.maxDate)\n )\n this.viewDate = newConfig.restrictions.maxDate.clone;\n\n if (\n newConfig.restrictions.minDate &&\n this.viewDate.isBefore(newConfig.restrictions.minDate)\n )\n this.viewDate = newConfig.restrictions.minDate.clone;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this.optionsStore.element.tagName == 'INPUT') {\n this.optionsStore.input = this.optionsStore.element as HTMLInputElement;\n } else {\n const query = this.optionsStore.element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this.optionsStore.input =\n this.optionsStore.element.querySelector('input');\n } else {\n this.optionsStore.input =\n this.optionsStore.element.querySelector(query);\n }\n }\n\n if (!this.optionsStore.input) return;\n\n if (!this.optionsStore.input.value && this.optionsStore.options.defaultDate)\n this.optionsStore.input.value = this.dates.formatInput(\n this.optionsStore.options.defaultDate\n );\n\n this.optionsStore.input.addEventListener('change', this._inputChangeEvent);\n if (this.optionsStore.options.allowInputToggle) {\n this.optionsStore.input.addEventListener('click', this._openClickEvent);\n this.optionsStore.input.addEventListener('focus', this._openClickEvent);\n }\n\n if (this.optionsStore.input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this.optionsStore.options.display.inline) return;\n let query = this.optionsStore.element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined\n ? this.optionsStore.element\n : this.optionsStore.element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this.optionsStore.options.promptTimeOnDateChange ||\n this.optionsStore.options.multipleDates ||\n this.optionsStore.options.display.inline ||\n this.optionsStore.options.display.sideBySide ||\n // time is disabled\n !this.display._hasTime ||\n // clock component is already showing\n this.display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this.optionsStore.options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this.display.widget) {\n this._eventEmitters.action.emit({\n e: {\n currentTarget: this.display.widget.querySelector(\n '[data-action=\"togglePicker\"]'\n ),\n },\n action: ActionTypes.togglePicker,\n });\n }\n }, this.optionsStore.options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n //eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _inputChangeEvent = (event?: any) => {\n const internallyTriggered = event?.detail;\n if (internallyTriggered) return;\n\n const setViewDate = () => {\n if (this.dates.lastPicked)\n this.optionsStore.viewDate = this.dates.lastPicked.clone;\n };\n\n const value = this.optionsStore.input.value;\n if (\n this.optionsStore.options.multipleDates ||\n this.optionsStore.options.dateRange\n ) {\n try {\n const valueSplit = value.split(\n this.optionsStore.options.multipleDatesSeparator\n );\n for (let i = 0; i < valueSplit.length; i++) {\n this.dates.setFromInput(valueSplit[i], i);\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multipleDates values from the input field.'\n );\n }\n } else {\n this.dates.setFromInput(value, 0);\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n if (\n (this.optionsStore.element as HTMLInputElement)?.disabled ||\n this.optionsStore.input?.disabled ||\n //if we just have the input and allow input toggle is enabled, then don't cause a toggle\n (this._toggle.nodeName === 'INPUT' &&\n (this._toggle as HTMLInputElement)?.type === 'text' &&\n this.optionsStore.options.allowInputToggle)\n )\n return;\n this.toggle();\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _openClickEvent = () => {\n if (\n (this.optionsStore.element as HTMLInputElement)?.disabled ||\n this.optionsStore.input?.disabled\n )\n return;\n if (!this.display.isVisible) this.show();\n };\n}\n\n/**\n * Whenever a locale is loaded via a plugin then store it here based on the\n * locale name. E.g. loadedLocales['ru']\n */\nconst loadedLocales = {};\n\n// noinspection JSUnusedGlobalSymbols\n/**\n * Called from a locale plugin.\n * @param l locale object for localization options\n */\nconst loadLocale = (l) => {\n if (loadedLocales[l.name]) return;\n loadedLocales[l.name] = l.localization;\n};\n\n/**\n * A sets the global localization options to the provided locale name.\n * `loadLocale` MUST be called first.\n * @param l\n */\nconst locale = (l: string) => {\n const asked = loadedLocales[l];\n if (!asked) return;\n DefaultOptions.localization = asked;\n};\n\n// noinspection JSUnusedGlobalSymbols\n/**\n * Called from a plugin to extend or override picker defaults.\n * @param plugin\n * @param option\n */\nconst extend = function (plugin, option = undefined) {\n if (!plugin) return tempusDominus;\n if (!plugin.installed) {\n // install plugin only once\n plugin(\n option,\n { TempusDominus, Dates, Display, DateTime, Namespace },\n tempusDominus\n );\n plugin.installed = true;\n }\n return tempusDominus;\n};\n\nconst version = '6.9.4';\n\nconst tempusDominus = {\n TempusDominus,\n extend,\n loadLocale,\n locale,\n Namespace,\n DefaultOptions,\n DateTime,\n Unit,\n version,\n DefaultEnLocalization,\n};\n\nexport {\n TempusDominus,\n extend,\n loadLocale,\n locale,\n Namespace,\n DefaultOptions,\n DateTime,\n Unit,\n version,\n DateTimeFormatOptions,\n Options,\n DefaultEnLocalization,\n};\n"],"names":["Unit","DefaultFormatLocalization","ActionTypes","SecondDisplay"],"mappings":"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"}