{"version":3,"file":"danielmoncada-angular-datetime-picker-dayjs-adapter.mjs","sources":["../../../projects/picker/src/lib/dayjs-adapter/dayjs-date-time-adapter.class.ts","../../../projects/picker/src/lib/dayjs-adapter/dayjs-date-time-format.class.ts","../../../projects/picker/src/lib/dayjs-adapter/dayjs-date-time.module.ts","../../../projects/picker/src/danielmoncada-angular-datetime-picker-dayjs-adapter.ts"],"sourcesContent":["/**\n * dayjs-date-time-adapter.class\n */\n\nimport { Inject, Injectable, Optional, InjectionToken } from '@angular/core';\nimport {\n    DateTimeAdapter,\n    OWL_DATE_TIME_LOCALE,\n} from '@danielmoncada/angular-datetime-picker';\nimport dayjs from 'dayjs';\nimport localData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\n\ndayjs.extend(LocalizedFormat);\ndayjs.extend(localData);\n\nexport interface OwlDayJsDateTimeAdapterOptions {\n    /**\n     * Turns the use of utc dates on or off.\n     * Changing this will change how the DateTimePicker output value.\n     * {@default false}\n     */\n    useUtc: boolean;\n}\n\n/** InjectionToken for dayjs date adapter to configure options. */\nexport const OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS =\n    new InjectionToken<OwlDayJsDateTimeAdapterOptions>(\n        'OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS',\n        {\n            providedIn: 'root',\n            factory: OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY,\n        }\n    );\n\n/** @docs-private */\nexport function OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS_FACTORY(): OwlDayJsDateTimeAdapterOptions {\n    return {\n        useUtc: false,\n    };\n}\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n    const valuesArray = Array(length);\n    for (let i = 0; i < length; i++) {\n        valuesArray[i] = valueFunction(i);\n    }\n    return valuesArray;\n}\n\n@Injectable()\nexport class DayjsDateTimeAdapter extends DateTimeAdapter<dayjs.Dayjs> {\n    private _localeData: {\n        longMonths: string[];\n        shortMonths: string[];\n        longDaysOfWeek: string[];\n        shortDaysOfWeek: string[];\n        narrowDaysOfWeek: string[];\n        dates: string[];\n    };\n\n    constructor(\n        @Optional()\n        @Inject(OWL_DATE_TIME_LOCALE)\n        private owlDateTimeLocale: string,\n        @Optional()\n        @Inject(OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS)\n        private options?: OwlDayJsDateTimeAdapterOptions\n    ) {\n        super();\n        this.setLocale(owlDateTimeLocale || dayjs().locale());\n    }\n\n    public setLocale(locale: string) {\n        super.setLocale(locale);\n\n        const dayjsLocalData = dayjs().locale(locale).localeData();\n        this._localeData = {\n            longMonths: dayjsLocalData.months(),\n            shortMonths: dayjsLocalData.monthsShort(),\n            longDaysOfWeek: dayjsLocalData.weekdaysShort(), //Doesn't support long names yet, will be available in future release https://github.com/iamkun/dayjs/issues/779\n            shortDaysOfWeek: dayjsLocalData.weekdaysShort(),\n            narrowDaysOfWeek: dayjsLocalData.weekdaysMin(),\n            dates: range(31, (i) =>\n                this.createDate(2017, 0, i + 1).format('D')\n            ),\n        };\n    }\n\n    public getYear(date: dayjs.Dayjs): number {\n        return this.clone(date).year();\n    }\n\n    public getMonth(date: dayjs.Dayjs): number {\n        return this.clone(date).month();\n    }\n\n    public getDay(date: dayjs.Dayjs): number {\n        return this.clone(date).day();\n    }\n\n    public getDate(date: dayjs.Dayjs): number {\n        return this.clone(date).date();\n    }\n\n    public getHours(date: dayjs.Dayjs): number {\n        return this.clone(date).hour();\n    }\n\n    public getMinutes(date: dayjs.Dayjs): number {\n        return this.clone(date).minute();\n    }\n\n    public getSeconds(date: dayjs.Dayjs): number {\n        return this.clone(date).second();\n    }\n\n    public getTime(date: dayjs.Dayjs): number {\n        return this.clone(date).valueOf();\n    }\n\n    public getNumDaysInMonth(date: dayjs.Dayjs): number {\n        return this.clone(date).daysInMonth();\n    }\n\n    public differenceInCalendarDays(\n        dateLeft: dayjs.Dayjs,\n        dateRight: dayjs.Dayjs\n    ): number {\n        return Math.ceil(\n            dateLeft.startOf('day').diff(dateRight.startOf('day'), 'day', true)\n        );\n    }\n\n    public getYearName(date: dayjs.Dayjs): string {\n        return date.format('YYYY');\n    }\n\n    public getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n        return style === 'long'\n            ? this._localeData.longMonths\n            : this._localeData.shortMonths;\n    }\n\n    public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n        if (style === 'long') {\n            return this._localeData.longDaysOfWeek;\n        }\n        if (style === 'short') {\n            return this._localeData.shortDaysOfWeek;\n        }\n        return this._localeData.narrowDaysOfWeek;\n    }\n\n    public getDateNames(): string[] {\n        return this._localeData.dates;\n    }\n\n    public toIso8601(date: dayjs.Dayjs): string {\n        return this.clone(date).toISOString();\n    }\n\n    public isEqual(dateLeft: dayjs.Dayjs, dateRight: dayjs.Dayjs): boolean {\n        return this.clone(dateLeft).isSame(this.clone(dateRight));\n    }\n\n    public isSameDay(dateLeft: dayjs.Dayjs, dateRight: dayjs.Dayjs): boolean {\n        return this.clone(dateLeft).isSame(this.clone(dateRight), 'day');\n    }\n\n    public isValid(date: dayjs.Dayjs): boolean {\n        return this.clone(date).isValid();\n    }\n\n    public invalid(): dayjs.Dayjs {\n        return dayjs(NaN);\n    }\n\n    public isDateInstance(obj: any): boolean {\n        return dayjs.isDayjs(obj);\n    }\n\n    /**\n     * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n     * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n     * string). The datepicker will call this method on all of it's `@Input()` properties that accept dates.\n     * It is therefore possible to support passing values from your backend directly to these properties by\n     * overriding this method to also deserialize the format used by your backend.\n     * In this dayjs adapter it accepts Dayjs objects or strings that can be input into the dayjs contructor (e.g. ISO 8601).\n     */\n    public deserialize(value: dayjs.Dayjs | null | string): dayjs.Dayjs | null {\n        if (typeof value === 'string') {\n            const constructedDayjs = dayjs(value);\n            return this.isValid(constructedDayjs)\n                ? constructedDayjs\n                : this.invalid();\n        } else if (\n            value == null ||\n            (this.isDateInstance(value) && this.isValid(value))\n        ) {\n            return value;\n        }\n\n        return this.invalid();\n    }\n\n    public addCalendarYears(date: dayjs.Dayjs, amount: number): dayjs.Dayjs {\n        return this.clone(date).add(amount, 'year');\n    }\n\n    public addCalendarMonths(date: dayjs.Dayjs, amount: number): dayjs.Dayjs {\n        return this.clone(date).add(amount, 'month');\n    }\n\n    public addCalendarDays(date: dayjs.Dayjs, amount: number): dayjs.Dayjs {\n        return this.clone(date).add(amount, 'day');\n    }\n\n    public setHours(date: dayjs.Dayjs, amount: number): dayjs.Dayjs {\n        return this.clone(date).hour(amount);\n    }\n\n    public setMinutes(date: dayjs.Dayjs, amount: number): dayjs.Dayjs {\n        return this.clone(date).minute(amount);\n    }\n\n    public setSeconds(date: dayjs.Dayjs, amount: number): dayjs.Dayjs {\n        return this.clone(date).second(amount);\n    }\n\n    public createDate(year: number, month: number, date: number): dayjs.Dayjs;\n    public createDate(\n        year: number,\n        month: number,\n        date: number,\n        hours: number = 0,\n        minutes: number = 0,\n        seconds: number = 0\n    ): dayjs.Dayjs {\n        if (month < 0 || month > 11) {\n            throw Error(\n                `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n            );\n        }\n\n        if (date < 1) {\n            throw Error(\n                `Invalid date \"${date}\". Date has to be greater than 0.`\n            );\n        }\n\n        if (hours < 0 || hours > 23) {\n            throw Error(\n                `Invalid hours \"${hours}\". Hours has to be between 0 and 23.`\n            );\n        }\n\n        if (minutes < 0 || minutes > 59) {\n            throw Error(\n                `Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`\n            );\n        }\n\n        if (seconds < 0 || seconds > 59) {\n            throw Error(\n                `Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`\n            );\n        }\n\n        let result = this.createDayjs(dayjs());\n\n        function trySetUnit(\n            date: dayjs.Dayjs,\n            unitType: dayjs.UnitType,\n            amount: number\n        ) {\n            if (amount >= 0) {\n                return date.set(unitType, amount);\n            }\n            return date;\n        }\n\n        result = trySetUnit(result, 'year', year);\n        result = trySetUnit(result, 'month', month);\n        result = trySetUnit(result, 'date', date);\n        result = trySetUnit(result, 'hour', hours);\n        result = trySetUnit(result, 'minute', minutes);\n        result = trySetUnit(result, 'second', seconds);\n        result = trySetUnit(result, 'milliseconds', 0);\n        result.locale(this.locale);\n\n        // If the result isn't valid, the date must have been out of bounds for this month.\n        if (!result.isValid()) {\n            throw Error(\n                `Invalid date \"${date}\" for month with index \"${month}\".`\n            );\n        }\n\n        return result;\n    }\n\n    public clone(date: dayjs.Dayjs): dayjs.Dayjs {\n        return this.createDayjs(date).clone().locale(this.locale);\n    }\n\n    public now(): dayjs.Dayjs {\n        return this.clone(dayjs());\n    }\n\n    public format(date: dayjs.Dayjs, displayFormat: any): string {\n        return this.clone(date).format(displayFormat);\n    }\n\n    public parse(value: any, parseFormat: any): dayjs.Dayjs {\n        return dayjs(value, parseFormat);\n    }\n\n    private createDayjs(date: dayjs.Dayjs): dayjs.Dayjs {\n        return date === null\n            ? dayjs(null, { utc: this.options.useUtc })\n            : dayjs(date, {\n                  utc: this.options.useUtc,\n              });\n    }\n}\n","/**\n * dayjs-date-time-format.class\n */\nimport { OwlDateTimeFormats } from '@danielmoncada/angular-datetime-picker';\n\nexport const OWL_DAYJS_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n    parseInput: 'l LT',\n    fullPickerInput: 'l LT',\n    datePickerInput: 'l',\n    timePickerInput: 'LT',\n    monthYearLabel: 'MMM YYYY',\n    dateA11yLabel: 'LL',\n    monthYearA11yLabel: 'MMMM YYYY'\n};","/**\n * dayjs-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { DayjsDateTimeAdapter, OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS } from './dayjs-date-time-adapter.class';\nimport { OWL_DAYJS_DATE_TIME_FORMATS } from './dayjs-date-time-format.class';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from '@danielmoncada/angular-datetime-picker';\nimport { OWL_DATE_TIME_FORMATS } from '@danielmoncada/angular-datetime-picker';\n\n@NgModule({\n    providers: [\n        {\n            provide: DateTimeAdapter,\n            useClass: DayjsDateTimeAdapter,\n            deps: [OWL_DATE_TIME_LOCALE, OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS]\n        },\n    ],\n})\nexport class DayJsDateTimeModule {\n}\n\n@NgModule({\n    imports: [DayJsDateTimeModule],\n    providers: [{provide: OWL_DATE_TIME_FORMATS, useValue: OWL_DAYJS_DATE_TIME_FORMATS}],\n})\nexport class OwlDayJsDateTimeModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}