Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

angularx-flatpickr

Package Overview
Dependencies
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angularx-flatpickr - npm Package Compare versions

Comparing version
7.3.0
to
8.0.0
+5
esm2022/angularx-flatpickr.mjs
/**
* Generated bundle index. Do not edit.
*/
export * from './public-api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcngtZmxhdHBpY2tyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcngtZmxhdHBpY2tyL3NyYy9hbmd1bGFyeC1mbGF0cGlja3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
export class FlatpickrDefaults {
constructor() {
/**
* Exactly the same as date format, but for the altInput field.
*/
this.altFormat = 'F j, Y';
/**
* Show the user a readable date (as per altFormat), but return something totally different to the server.
*/
this.altInput = false;
/**
* This class will be added to the input element created by the altInput option.
* Note that `altInput` already inherits classes from the original input.
*/
this.altInputClass = '';
/**
* Allows the user to enter a date directly input the input field. By default, direct entry is disabled.
*/
this.allowInput = false;
/**
* Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid
*/
this.allowInvalidPreload = false;
/**
* Instead of `body`, appends the calendar to the specified node instead.
*/
this.appendTo = undefined;
/**
* Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.
*/
this.ariaDateFormat = 'F j, Y';
/**
* Whether clicking on the input should open the picker.
* You could disable this if you wish to open the calendar manually `with.open()`.
*/
this.clickOpens = true;
/**
* A string of characters which are used to define how the date will be displayed in the input box.
* The supported characters are defined in the table below.
*/
this.dateFormat = 'Y-m-d';
/**
* Initial value of the hour element.
*/
this.defaultHour = 12;
/**
* Initial value of the minute element.
*/
this.defaultMinute = 0;
/**
* Initial value of the seconds element.
*/
this.defaultSeconds = 0;
/**
* See <a href="https://chmln.github.io/flatpickr/examples/#disabling-specific-dates">disabling dates</a>.
*/
this.disable = [];
/**
* Set disableMobile to true to always use the non-native picker.
* By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.
*/
this.disableMobile = false;
/**
* Enables time picker.
*/
this.enableTime = false;
/**
* Enables seconds in the time picker.
*/
this.enableSeconds = false;
/**
* Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.
*/
this.formatDate = undefined;
/**
* Adjusts the step for the hour input (incl. scrolling).
*/
this.hourIncrement = 1;
/**
* Displays the calendar inline.
*/
this.inline = false;
/**
* The maximum date that a user can pick to (inclusive).
*/
this.maxDate = undefined;
/**
* The minimum date that a user can start picking from (inclusive).
*/
this.minDate = undefined;
/**
* The maximum time that a user can pick to (inclusive).
*/
this.maxTime = undefined;
/**
* The minimum time that a user can start picking from (inclusive).
*/
this.minTime = undefined;
/**
* Adjusts the step for the minute input (incl. scrolling).
*/
this.minuteIncrement = 5;
/**
* Select a single date, multiple dates or a date range.
*/
this.mode = 'single';
/**
* HTML for the arrow icon, used to switch months.
*/
this.nextArrow = '>';
/**
* Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.
*/
this.noCalendar = false;
/**
* Default now to the current date
*/
this.now = new Date();
/**
* HTML for the left arrow icon.
*/
this.prevArrow = '<';
/**
* Show the month using the shorthand version (ie, Sep instead of September).
*/
this.shorthandCurrentMonth = false;
/**
* Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).
*/
this.static = false;
/**
* Displays time picker in 24 hour mode without AM/PM selection when enabled.
*/
this.time24hr = false;
/**
* When true, dates will parsed, formatted, and displayed in UTC.
* It's recommended that date strings contain the timezone, but not necessary.
*/
this.utc = false;
/**
* Enables display of week numbers in calendar.
*/
this.weekNumbers = false;
/**
* Custom elements and input groups.
*/
this.wrap = false;
/**
* Array of plugin instances to use.
*/
this.plugins = [];
/**
* The locale object or string to use for the locale.
*/
this.locale = 'default';
/**
* Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`
*/
this.convertModelValue = false;
/**
* The number of months shown.
*/
this.showMonths = 1;
/**
* How the month should be displayed in the header of the calendar.
*/
this.monthSelectorType = 'static';
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDefaults, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDefaults }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDefaults, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHBpY2tyLWRlZmF1bHRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyeC1mbGF0cGlja3Ivc3JjL2xpYi9mbGF0cGlja3ItZGVmYXVsdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXdPM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVFOztXQUVHO1FBQ0gsY0FBUyxHQUFXLFFBQVEsQ0FBQztRQUU3Qjs7V0FFRztRQUNILGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUI7OztXQUdHO1FBQ0gsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFM0I7O1dBRUc7UUFDSCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCOztXQUVHO1FBQ0gsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ0gsYUFBUSxHQUE0QixTQUFTLENBQUM7UUFFOUM7O1dBRUc7UUFDSCxtQkFBYyxHQUFZLFFBQVEsQ0FBQztRQUVuQzs7O1dBR0c7UUFDSCxlQUFVLEdBQVksSUFBSSxDQUFDO1FBRTNCOzs7V0FHRztRQUNILGVBQVUsR0FBVyxPQUFPLENBQUM7UUFFN0I7O1dBRUc7UUFDSCxnQkFBVyxHQUFZLEVBQUUsQ0FBQztRQUUxQjs7V0FFRztRQUNILGtCQUFhLEdBQVksQ0FBQyxDQUFDO1FBRTNCOztXQUVHO1FBQ0gsbUJBQWMsR0FBWSxDQUFDLENBQUM7UUFFNUI7O1dBRUc7UUFDSCxZQUFPLEdBQXdCLEVBQUUsQ0FBQztRQUVsQzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQU8vQjs7V0FFRztRQUNILGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFNUI7O1dBRUc7UUFDSCxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQjs7V0FFRztRQUNILGVBQVUsR0FBNEIsU0FBUyxDQUFDO1FBRWhEOztXQUVHO1FBQ0gsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFFMUI7O1dBRUc7UUFDSCxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsWUFBTyxHQUE4QixTQUFTLENBQUM7UUFFL0M7O1dBRUc7UUFDSCxZQUFPLEdBQThCLFNBQVMsQ0FBQztRQUUvQzs7V0FFRztRQUNILFlBQU8sR0FBdUIsU0FBUyxDQUFDO1FBRXhDOztXQUVHO1FBQ0gsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUU1Qjs7V0FFRztRQUNILFNBQUksR0FBb0MsUUFBUSxDQUFDO1FBRWpEOztXQUVHO1FBQ0gsY0FBUyxHQUFXLEdBQUcsQ0FBQztRQUV4Qjs7V0FFRztRQUNILGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFNUI7O1dBRUc7UUFDSCxRQUFHLEdBQTJCLElBQUksSUFBSSxFQUFFLENBQUM7UUFPekM7O1dBRUc7UUFDSCxjQUFTLEdBQVcsR0FBRyxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRXZDOztXQUVHO1FBQ0gsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV4Qjs7V0FFRztRQUNILGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUI7OztXQUdHO1FBQ0gsUUFBRyxHQUFZLEtBQUssQ0FBQztRQUVyQjs7V0FFRztRQUNILGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBUTdCOztXQUVHO1FBQ0gsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV0Qjs7V0FFRztRQUNILFlBQU8sR0FBVSxFQUFFLENBQUM7UUFFcEI7O1dBRUc7UUFDSCxXQUFNLEdBQW9CLFNBQVMsQ0FBQztRQUVwQzs7V0FFRztRQUNILHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNILGVBQVUsR0FBVyxDQUFDLENBQUM7UUFFdkI7O1dBRUc7UUFDSCxzQkFBaUIsR0FBMEIsUUFBUSxDQUFDO1FBRXBEOztXQUVHO1FBQ0gseUJBQW9CLEdBQWtCLEVBQUUsQ0FBQztLQUMxQzsrR0FsT1ksaUJBQWlCO21IQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIERpc2FibGVFbmFibGVEYXRlID1cbiAgfCBzdHJpbmdcbiAgfCBEYXRlXG4gIHwgeyBmcm9tOiBEYXRlIHwgc3RyaW5nOyB0bzogRGF0ZSB8IHN0cmluZyB9XG4gIHwgKChkYXRlOiBEYXRlKSA9PiBib29sZWFuKTtcblxuZXhwb3J0IGludGVyZmFjZSBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSB7XG4gIC8qKlxuICAgKiBFeGFjdGx5IHRoZSBzYW1lIGFzIGRhdGUgZm9ybWF0LCBidXQgZm9yIHRoZSBhbHRJbnB1dCBmaWVsZC5cbiAgICovXG4gIGFsdEZvcm1hdD86IHN0cmluZztcblxuICAvKipcbiAgICogXHRTaG93IHRoZSB1c2VyIGEgcmVhZGFibGUgZGF0ZSAoYXMgcGVyIGFsdEZvcm1hdCksIGJ1dCByZXR1cm4gc29tZXRoaW5nIHRvdGFsbHkgZGlmZmVyZW50IHRvIHRoZSBzZXJ2ZXIuXG4gICAqL1xuICBhbHRJbnB1dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgY2xhc3Mgd2lsbCBiZSBhZGRlZCB0byB0aGUgaW5wdXQgZWxlbWVudCBjcmVhdGVkIGJ5IHRoZSBhbHRJbnB1dCBvcHRpb24uXG4gICAqIE5vdGUgdGhhdCBgYWx0SW5wdXRgIGFscmVhZHkgaW5oZXJpdHMgY2xhc3NlcyBmcm9tIHRoZSBvcmlnaW5hbCBpbnB1dC5cbiAgICovXG4gIGFsdElucHV0Q2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhIGRhdGUgZGlyZWN0bHkgaW5wdXQgdGhlIGlucHV0IGZpZWxkLiBCeSBkZWZhdWx0LCBkaXJlY3QgZW50cnkgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBhbGxvd0lucHV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIHRoZSBwcmVsb2FkaW5nIG9mIGFuIGludmFsaWQgZGF0ZS4gV2hlbiBkaXNhYmxlZCwgdGhlIGZpZWxkIHdpbGwgYmUgY2xlYXJlZCBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyBpbnZhbGlkXG4gICAqL1xuICBhbGxvd0ludmFsaWRQcmVsb2FkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5zdGVhZCBvZiBgYm9keWAsIGFwcGVuZHMgdGhlIGNhbGVuZGFyIHRvIHRoZSBzcGVjaWZpZWQgbm9kZSBpbnN0ZWFkLlxuICAgKi9cbiAgYXBwZW5kVG8/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogRGVmaW5lcyBob3cgdGhlIGRhdGUgd2lsbCBiZSBmb3JtYXR0ZWQgaW4gdGhlIGFyaWEtbGFiZWwgZm9yIGNhbGVuZGFyIGRheXMsIHVzaW5nIHRoZSBzYW1lIHRva2VucyBhcyBkYXRlRm9ybWF0LiBJZiB5b3UgY2hhbmdlIHRoaXMsIHlvdSBzaG91bGQgY2hvb3NlIGEgdmFsdWUgdGhhdCB3aWxsIG1ha2Ugc2Vuc2UgaWYgYSBzY3JlZW4gcmVhZGVyIHJlYWRzIGl0IG91dCBsb3VkLlxuICAgKi9cbiAgYXJpYURhdGVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpY2tpbmcgb24gdGhlIGlucHV0IHNob3VsZCBvcGVuIHRoZSBwaWNrZXIuXG4gICAqIFlvdSBjb3VsZCBkaXNhYmxlIHRoaXMgaWYgeW91IHdpc2ggdG8gb3BlbiB0aGUgY2FsZW5kYXIgbWFudWFsbHkgYHdpdGgub3BlbigpYC5cbiAgICovXG4gIGNsaWNrT3BlbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHdoaWNoIGFyZSB1c2VkIHRvIGRlZmluZSBob3cgdGhlIGRhdGUgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlucHV0IGJveC5cbiAgICogVGhlIHN1cHBvcnRlZCBjaGFyYWN0ZXJzIGFyZSBkZWZpbmVkIGluIHRoZSB0YWJsZSBiZWxvdy5cbiAgICovXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlIG9mIHRoZSBob3VyIGVsZW1lbnQuXG4gICAqL1xuICBkZWZhdWx0SG91cj86IG51bWJlcjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIG1pbnV0ZSBlbGVtZW50LlxuICAgKi9cbiAgZGVmYXVsdE1pbnV0ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIHNlY29uZHMgZWxlbWVudC5cbiAgICovXG4gIGRlZmF1bHRTZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vY2htbG4uZ2l0aHViLmlvL2ZsYXRwaWNrci9leGFtcGxlcy8jZGlzYWJsaW5nLXNwZWNpZmljLWRhdGVzXCI+ZGlzYWJsaW5nIGRhdGVzPC9hPi5cbiAgICovXG4gIGRpc2FibGU/OiBEaXNhYmxlRW5hYmxlRGF0ZVtdO1xuXG4gIC8qKlxuICAgKiBTZXQgZGlzYWJsZU1vYmlsZSB0byB0cnVlIHRvIGFsd2F5cyB1c2UgdGhlIG5vbi1uYXRpdmUgcGlja2VyLlxuICAgKiBCeSBkZWZhdWx0LCBGbGF0cGlja3IgdXRpbGl6ZXMgbmF0aXZlIGRhdGV0aW1lIHdpZGdldHMgdW5sZXNzIGNlcnRhaW4gb3B0aW9ucyAoZS5nLiBkaXNhYmxlKSBhcmUgdXNlZC5cbiAgICovXG4gIGRpc2FibGVNb2JpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vY2htbG4uZ2l0aHViLmlvL2ZsYXRwaWNrci9leGFtcGxlcy8jZGlzYWJsaW5nLWFsbC1kYXRlcy1leGNlcHQtc2VsZWN0LWZld1wiPmVuYWJsaW5nIGRhdGVzPC9hPi5cbiAgICovXG4gIGVuYWJsZT86IERpc2FibGVFbmFibGVEYXRlW107XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGltZSBwaWNrZXIuXG4gICAqL1xuICBlbmFibGVUaW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlcyBzZWNvbmRzIGluIHRoZSB0aW1lIHBpY2tlci5cbiAgICovXG4gIGVuYWJsZVNlY29uZHM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHVzaW5nIGEgY3VzdG9tIGRhdGUgZm9ybWF0dGluZyBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiBoYW5kbGluZyBmb3IgZGF0ZSBmb3JtYXRzIHVzaW5nIGRhdGVGb3JtYXQsIGFsdEZvcm1hdCwgZXRjLlxuICAgKi9cbiAgZm9ybWF0RGF0ZT86ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGp1c3RzIHRoZSBzdGVwIGZvciB0aGUgaG91ciBpbnB1dCAoaW5jbC4gc2Nyb2xsaW5nKS5cbiAgICovXG4gIGhvdXJJbmNyZW1lbnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRoZSBjYWxlbmRhciBpbmxpbmUuXG4gICAqL1xuICBpbmxpbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgYSB1c2VyIGNhbiBwaWNrIHRvIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWF4RGF0ZT86IHN0cmluZyB8IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGRhdGUgdGhhdCBhIHVzZXIgY2FuIHN0YXJ0IHBpY2tpbmcgZnJvbSAoaW5jbHVzaXZlKS5cbiAgICovXG4gIG1pbkRhdGU/OiBzdHJpbmcgfCBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRoYXQgYSB1c2VyIGNhbiBwaWNrIHRvIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWF4VGltZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gdGltZSB0aGF0IGEgdXNlciBjYW4gc3RhcnQgcGlja2luZyBmcm9tIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWluVGltZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRqdXN0cyB0aGUgc3RlcCBmb3IgdGhlIG1pbnV0ZSBpbnB1dCAoaW5jbC4gc2Nyb2xsaW5nKS5cbiAgICovXG4gIG1pbnV0ZUluY3JlbWVudD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2VsZWN0IGEgc2luZ2xlIGRhdGUsIG11bHRpcGxlIGRhdGVzIG9yIGEgZGF0ZSByYW5nZS5cbiAgICovXG4gIG1vZGU/OiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgfCAncmFuZ2UnO1xuXG4gIC8qKlxuICAgKiBIVE1MIGZvciB0aGUgYXJyb3cgaWNvbiwgdXNlZCB0byBzd2l0Y2ggbW9udGhzLlxuICAgKi9cbiAgbmV4dEFycm93Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgZGF5IHNlbGVjdGlvbiBpbiBjYWxlbmRhci4gVXNlIGl0IGFsb25nIHdpdGggYGVuYWJsZVRpbWVgIHRvIGNyZWF0ZSBhIHRpbWUgcGlja2VyLlxuICAgKi9cbiAgbm9DYWxlbmRhcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBkYXRlIGZvciAndG9kYXknLCB3aGljaCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBcIm5ldyBEYXRlKClcIlxuICAgKi9cbiAgbm93PzogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBleHBlY3RzIGEgZGF0ZSBzdHJpbmcgYW5kIG11c3QgcmV0dXJuIGEgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBwYXJzZURhdGU/OiAoc3RyOiBzdHJpbmcpID0+IERhdGU7XG5cbiAgLyoqXG4gICAqIEhUTUwgZm9yIHRoZSBsZWZ0IGFycm93IGljb24uXG4gICAqL1xuICBwcmV2QXJyb3c/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIG1vbnRoIHVzaW5nIHRoZSBzaG9ydGhhbmQgdmVyc2lvbiAoaWUsIFNlcCBpbnN0ZWFkIG9mIFNlcHRlbWJlcikuXG4gICAqL1xuICBzaG9ydGhhbmRDdXJyZW50TW9udGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiB0aGUgY2FsZW5kYXIgaW5zaWRlIHRoZSB3cmFwcGVyIGFuZCBuZXh0IHRvIHRoZSBpbnB1dCBlbGVtZW50LiAoTGVhdmUgYGZhbHNlYCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcpLlxuICAgKi9cbiAgc3RhdGljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzcGxheXMgdGltZSBwaWNrZXIgaW4gMjQgaG91ciBtb2RlIHdpdGhvdXQgQU0vUE0gc2VsZWN0aW9uIHdoZW4gZW5hYmxlZC5cbiAgICovXG4gIHRpbWUyNGhyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBkYXRlcyB3aWxsIHBhcnNlZCwgZm9ybWF0dGVkLCBhbmQgZGlzcGxheWVkIGluIFVUQy5cbiAgICogSXQncyByZWNvbW1lbmRlZCB0aGF0IGRhdGUgc3RyaW5ncyBjb250YWluIHRoZSB0aW1lem9uZSwgYnV0IG5vdCBuZWNlc3NhcnkuXG4gICAqL1xuICB1dGM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGRpc3BsYXkgb2Ygd2VlayBudW1iZXJzIGluIGNhbGVuZGFyLlxuICAgKi9cbiAgd2Vla051bWJlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBZb3UgbWF5IG92ZXJyaWRlIHRoZSBmdW5jdGlvbiB0aGF0IGV4dHJhY3RzIHRoZSB3ZWVrIG51bWJlcnMgZnJvbSBhIERhdGUgYnkgc3VwcGx5aW5nIGEgZ2V0V2VlayBmdW5jdGlvbi5cbiAgICogSXQgdGFrZXMgaW4gYSBkYXRlIGFzIGEgcGFyYW1ldGVyIGFuZCBzaG91bGQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyBzdHJpbmcgdGhhdCB5b3Ugd2FudCB0byBhcHBlYXIgbGVmdCBvZiBldmVyeSB3ZWVrLlxuICAgKi9cbiAgZ2V0V2Vlaz86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBlbGVtZW50cyBhbmQgaW5wdXQgZ3JvdXBzLlxuICAgKi9cbiAgd3JhcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHBsdWdpbiBpbnN0YW5jZXMgdG8gdXNlLlxuICAgKi9cbiAgcGx1Z2lucz86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYWxlIG9iamVjdCBvciBzdHJpbmcgdG8gdXNlIGZvciB0aGUgbG9jYWxlLlxuICAgKi9cbiAgbG9jYWxlPzogb2JqZWN0IHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRvIGNvbnZlcnQgdGhlIG5nTW9kZWwgdmFsdWUgZnJvbSBhIHN0cmluZyB0byBhIGRhdGUgLyBhcnJheSBvZiBkYXRlcyAvIGZyb20gLSB0byBkYXRlIG9iamVjdCBkZXBlbmRpbmcgb24gdGhlIGBtb2RlYFxuICAgKi9cbiAgY29udmVydE1vZGVsVmFsdWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1vbnRocyBzaG93bi5cbiAgICovXG4gIHNob3dNb250aHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhvdyB0aGUgbW9udGggc2hvdWxkIGJlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIG1vbnRoU2VsZWN0b3JUeXBlPzogJ3N0YXRpYycgfCAnZHJvcGRvd24nO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBIVE1MIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgcGlja2VyIG9uIGNsaWNrLlxuICAgKi9cbiAgaWdub3JlZEZvY3VzRWxlbWVudHM/OiBIVE1MRWxlbWVudFtdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxhdHBpY2tyRGVmYXVsdHMgaW1wbGVtZW50cyBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSB7XG4gIC8qKlxuICAgKiBFeGFjdGx5IHRoZSBzYW1lIGFzIGRhdGUgZm9ybWF0LCBidXQgZm9yIHRoZSBhbHRJbnB1dCBmaWVsZC5cbiAgICovXG4gIGFsdEZvcm1hdDogc3RyaW5nID0gJ0YgaiwgWSc7XG5cbiAgLyoqXG4gICAqIFx0U2hvdyB0aGUgdXNlciBhIHJlYWRhYmxlIGRhdGUgKGFzIHBlciBhbHRGb3JtYXQpLCBidXQgcmV0dXJuIHNvbWV0aGluZyB0b3RhbGx5IGRpZmZlcmVudCB0byB0aGUgc2VydmVyLlxuICAgKi9cbiAgYWx0SW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhpcyBjbGFzcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBpbnB1dCBlbGVtZW50IGNyZWF0ZWQgYnkgdGhlIGFsdElucHV0IG9wdGlvbi5cbiAgICogTm90ZSB0aGF0IGBhbHRJbnB1dGAgYWxyZWFkeSBpbmhlcml0cyBjbGFzc2VzIGZyb20gdGhlIG9yaWdpbmFsIGlucHV0LlxuICAgKi9cbiAgYWx0SW5wdXRDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhIGRhdGUgZGlyZWN0bHkgaW5wdXQgdGhlIGlucHV0IGZpZWxkLiBCeSBkZWZhdWx0LCBkaXJlY3QgZW50cnkgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBhbGxvd0lucHV0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgcHJlbG9hZGluZyBvZiBhbiBpbnZhbGlkIGRhdGUuIFdoZW4gZGlzYWJsZWQsIHRoZSBmaWVsZCB3aWxsIGJlIGNsZWFyZWQgaWYgdGhlIHByb3ZpZGVkIGRhdGUgaXMgaW52YWxpZFxuICAgKi9cbiAgYWxsb3dJbnZhbGlkUHJlbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbnN0ZWFkIG9mIGBib2R5YCwgYXBwZW5kcyB0aGUgY2FsZW5kYXIgdG8gdGhlIHNwZWNpZmllZCBub2RlIGluc3RlYWQuXG4gICAqL1xuICBhcHBlbmRUbzogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgaG93IHRoZSBkYXRlIHdpbGwgYmUgZm9ybWF0dGVkIGluIHRoZSBhcmlhLWxhYmVsIGZvciBjYWxlbmRhciBkYXlzLCB1c2luZyB0aGUgc2FtZSB0b2tlbnMgYXMgZGF0ZUZvcm1hdC4gSWYgeW91IGNoYW5nZSB0aGlzLCB5b3Ugc2hvdWxkIGNob29zZSBhIHZhbHVlIHRoYXQgd2lsbCBtYWtlIHNlbnNlIGlmIGEgc2NyZWVuIHJlYWRlciByZWFkcyBpdCBvdXQgbG91ZC5cbiAgICovXG4gIGFyaWFEYXRlRm9ybWF0Pzogc3RyaW5nID0gJ0YgaiwgWSc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpY2tpbmcgb24gdGhlIGlucHV0IHNob3VsZCBvcGVuIHRoZSBwaWNrZXIuXG4gICAqIFlvdSBjb3VsZCBkaXNhYmxlIHRoaXMgaWYgeW91IHdpc2ggdG8gb3BlbiB0aGUgY2FsZW5kYXIgbWFudWFsbHkgYHdpdGgub3BlbigpYC5cbiAgICovXG4gIGNsaWNrT3BlbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHdoaWNoIGFyZSB1c2VkIHRvIGRlZmluZSBob3cgdGhlIGRhdGUgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlucHV0IGJveC5cbiAgICogVGhlIHN1cHBvcnRlZCBjaGFyYWN0ZXJzIGFyZSBkZWZpbmVkIGluIHRoZSB0YWJsZSBiZWxvdy5cbiAgICovXG4gIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdZLW0tZCc7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIGhvdXIgZWxlbWVudC5cbiAgICovXG4gIGRlZmF1bHRIb3VyPzogbnVtYmVyID0gMTI7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIG1pbnV0ZSBlbGVtZW50LlxuICAgKi9cbiAgZGVmYXVsdE1pbnV0ZT86IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIHNlY29uZHMgZWxlbWVudC5cbiAgICovXG4gIGRlZmF1bHRTZWNvbmRzPzogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogU2VlIDxhIGhyZWY9XCJodHRwczovL2NobWxuLmdpdGh1Yi5pby9mbGF0cGlja3IvZXhhbXBsZXMvI2Rpc2FibGluZy1zcGVjaWZpYy1kYXRlc1wiPmRpc2FibGluZyBkYXRlczwvYT4uXG4gICAqL1xuICBkaXNhYmxlOiBEaXNhYmxlRW5hYmxlRGF0ZVtdID0gW107XG5cbiAgLyoqXG4gICAqIFNldCBkaXNhYmxlTW9iaWxlIHRvIHRydWUgdG8gYWx3YXlzIHVzZSB0aGUgbm9uLW5hdGl2ZSBwaWNrZXIuXG4gICAqIEJ5IGRlZmF1bHQsIEZsYXRwaWNrciB1dGlsaXplcyBuYXRpdmUgZGF0ZXRpbWUgd2lkZ2V0cyB1bmxlc3MgY2VydGFpbiBvcHRpb25zIChlLmcuIGRpc2FibGUpIGFyZSB1c2VkLlxuICAgKi9cbiAgZGlzYWJsZU1vYmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vY2htbG4uZ2l0aHViLmlvL2ZsYXRwaWNrci9leGFtcGxlcy8jZGlzYWJsaW5nLWFsbC1kYXRlcy1leGNlcHQtc2VsZWN0LWZld1wiPmVuYWJsaW5nIGRhdGVzPC9hPi5cbiAgICovXG4gIGVuYWJsZTogRGlzYWJsZUVuYWJsZURhdGVbXTtcblxuICAvKipcbiAgICogRW5hYmxlcyB0aW1lIHBpY2tlci5cbiAgICovXG4gIGVuYWJsZVRpbWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRW5hYmxlcyBzZWNvbmRzIGluIHRoZSB0aW1lIHBpY2tlci5cbiAgICovXG4gIGVuYWJsZVNlY29uZHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQWxsb3dzIHVzaW5nIGEgY3VzdG9tIGRhdGUgZm9ybWF0dGluZyBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiBoYW5kbGluZyBmb3IgZGF0ZSBmb3JtYXRzIHVzaW5nIGRhdGVGb3JtYXQsIGFsdEZvcm1hdCwgZXRjLlxuICAgKi9cbiAgZm9ybWF0RGF0ZT86ICh2YWx1ZTogYW55KSA9PiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEFkanVzdHMgdGhlIHN0ZXAgZm9yIHRoZSBob3VyIGlucHV0IChpbmNsLiBzY3JvbGxpbmcpLlxuICAgKi9cbiAgaG91ckluY3JlbWVudDogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogRGlzcGxheXMgdGhlIGNhbGVuZGFyIGlubGluZS5cbiAgICovXG4gIGlubGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgYSB1c2VyIGNhbiBwaWNrIHRvIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWF4RGF0ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gZGF0ZSB0aGF0IGEgdXNlciBjYW4gc3RhcnQgcGlja2luZyBmcm9tIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWluRGF0ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0aGF0IGEgdXNlciBjYW4gcGljayB0byAoaW5jbHVzaXZlKS5cbiAgICovXG4gIG1heFRpbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gdGltZSB0aGF0IGEgdXNlciBjYW4gc3RhcnQgcGlja2luZyBmcm9tIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWluVGltZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBZGp1c3RzIHRoZSBzdGVwIGZvciB0aGUgbWludXRlIGlucHV0IChpbmNsLiBzY3JvbGxpbmcpLlxuICAgKi9cbiAgbWludXRlSW5jcmVtZW50OiBudW1iZXIgPSA1O1xuXG4gIC8qKlxuICAgKiBTZWxlY3QgYSBzaW5nbGUgZGF0ZSwgbXVsdGlwbGUgZGF0ZXMgb3IgYSBkYXRlIHJhbmdlLlxuICAgKi9cbiAgbW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnIHwgJ3JhbmdlJyA9ICdzaW5nbGUnO1xuXG4gIC8qKlxuICAgKiBIVE1MIGZvciB0aGUgYXJyb3cgaWNvbiwgdXNlZCB0byBzd2l0Y2ggbW9udGhzLlxuICAgKi9cbiAgbmV4dEFycm93OiBzdHJpbmcgPSAnPic7XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBkYXkgc2VsZWN0aW9uIGluIGNhbGVuZGFyLiBVc2UgaXQgYWxvbmcgd2l0aCBgZW5hYmxlVGltZWAgdG8gY3JlYXRlIGEgdGltZSBwaWNrZXIuXG4gICAqL1xuICBub0NhbGVuZGFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbm93IHRvIHRoZSBjdXJyZW50IGRhdGVcbiAgICovXG4gIG5vdzogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG5ldyBEYXRlKCk7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRoYXQgZXhwZWN0cyBhIGRhdGUgc3RyaW5nIGFuZCBtdXN0IHJldHVybiBhIERhdGUgb2JqZWN0LlxuICAgKi9cbiAgcGFyc2VEYXRlOiAoc3RyOiBzdHJpbmcpID0+IERhdGU7XG5cbiAgLyoqXG4gICAqIEhUTUwgZm9yIHRoZSBsZWZ0IGFycm93IGljb24uXG4gICAqL1xuICBwcmV2QXJyb3c6IHN0cmluZyA9ICc8JztcblxuICAvKipcbiAgICogU2hvdyB0aGUgbW9udGggdXNpbmcgdGhlIHNob3J0aGFuZCB2ZXJzaW9uIChpZSwgU2VwIGluc3RlYWQgb2YgU2VwdGVtYmVyKS5cbiAgICovXG4gIHNob3J0aGFuZEN1cnJlbnRNb250aDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiB0aGUgY2FsZW5kYXIgaW5zaWRlIHRoZSB3cmFwcGVyIGFuZCBuZXh0IHRvIHRoZSBpbnB1dCBlbGVtZW50LiAoTGVhdmUgYGZhbHNlYCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcpLlxuICAgKi9cbiAgc3RhdGljOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRpbWUgcGlja2VyIGluIDI0IGhvdXIgbW9kZSB3aXRob3V0IEFNL1BNIHNlbGVjdGlvbiB3aGVuIGVuYWJsZWQuXG4gICAqL1xuICB0aW1lMjRocjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGRhdGVzIHdpbGwgcGFyc2VkLCBmb3JtYXR0ZWQsIGFuZCBkaXNwbGF5ZWQgaW4gVVRDLlxuICAgKiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgZGF0ZSBzdHJpbmdzIGNvbnRhaW4gdGhlIHRpbWV6b25lLCBidXQgbm90IG5lY2Vzc2FyeS5cbiAgICovXG4gIHV0YzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGRpc3BsYXkgb2Ygd2VlayBudW1iZXJzIGluIGNhbGVuZGFyLlxuICAgKi9cbiAgd2Vla051bWJlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogWW91IG1heSBvdmVycmlkZSB0aGUgZnVuY3Rpb24gdGhhdCBleHRyYWN0cyB0aGUgd2VlayBudW1iZXJzIGZyb20gYSBEYXRlIGJ5IHN1cHBseWluZyBhIGdldFdlZWsgZnVuY3Rpb24uXG4gICAqIEl0IHRha2VzIGluIGEgZGF0ZSBhcyBhIHBhcmFtZXRlciBhbmQgc2hvdWxkIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgc3RyaW5nIHRoYXQgeW91IHdhbnQgdG8gYXBwZWFyIGxlZnQgb2YgZXZlcnkgd2Vlay5cbiAgICovXG4gIGdldFdlZWs6IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBlbGVtZW50cyBhbmQgaW5wdXQgZ3JvdXBzLlxuICAgKi9cbiAgd3JhcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBwbHVnaW4gaW5zdGFuY2VzIHRvIHVzZS5cbiAgICovXG4gIHBsdWdpbnM6IGFueVtdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgb2JqZWN0IG9yIHN0cmluZyB0byB1c2UgZm9yIHRoZSBsb2NhbGUuXG4gICAqL1xuICBsb2NhbGU6IG9iamVjdCB8IHN0cmluZyA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogQXV0byBjb252ZXJ0IHRoZSBuZ01vZGVsIHZhbHVlIGZyb20gYSBzdHJpbmcgdG8gYSBkYXRlIC8gYXJyYXkgb2YgZGF0ZXMgLyBmcm9tIC0gdG8gZGF0ZSBvYmplY3QgZGVwZW5kaW5nIG9uIHRoZSBgbW9kZWBcbiAgICovXG4gIGNvbnZlcnRNb2RlbFZhbHVlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgbW9udGhzIHNob3duLlxuICAgKi9cbiAgc2hvd01vbnRoczogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogSG93IHRoZSBtb250aCBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoZSBoZWFkZXIgb2YgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgbW9udGhTZWxlY3RvclR5cGU6ICdzdGF0aWMnIHwgJ2Ryb3Bkb3duJyA9ICdzdGF0aWMnO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBIVE1MIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgcGlja2VyIG9uIGNsaWNrLlxuICAgKi9cbiAgaWdub3JlZEZvY3VzRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcbn1cbiJdfQ==
import { Directive, Input, Output, EventEmitter, forwardRef, HostListener, PLATFORM_ID, Inject, } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import flatpickr from 'flatpickr';
import { isPlatformBrowser } from '@angular/common';
import * as i0 from "@angular/core";
import * as i1 from "./flatpickr-defaults.service";
export const FLATPICKR_CONTROL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => FlatpickrDirective),
multi: true,
};
export class FlatpickrDirective {
constructor(elm, defaults, renderer, platformId) {
this.elm = elm;
this.defaults = defaults;
this.renderer = renderer;
this.platformId = platformId;
/**
* Object-options that can be user for multiple instances of Flatpickr.
* Option from this object is applied only if specific option is not specified.
* Example:
* ```typescript
* options: FlatpickrDefaultsInterface = {
* altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute
* altInput: true // will be used since specific attribute is not provided
* };
* ```
* ```html
* <input
* class="form-control"
* type="text"
* mwlFlatpickr
* [options]="options"
* altFormat="d/m/Y">
* ```
*/
this.options = {};
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
/**
* Gets triggered once the calendar is in a ready state
*/
this.flatpickrReady = new EventEmitter();
/**
* Gets triggered when the user selects a date, or changes the time on a selected date.
*/
this.flatpickrChange = new EventEmitter();
/**
* Gets triggered when the input value is updated with a new date string.
*/
this.flatpickrValueUpdate = new EventEmitter();
/**
* Gets triggered when the calendar is opened.
*/
this.flatpickrOpen = new EventEmitter();
/**
* Gets triggered when the calendar is closed.
*/
this.flatpickrClose = new EventEmitter();
/**
* Gets triggered when the month is changed, either by the user or programmatically.
*/
this.flatpickrMonthChange = new EventEmitter();
/**
* Gets triggered when the year is changed, either by the user or programmatically.
*/
this.flatpickrYearChange = new EventEmitter();
/**
* Take full control of every date cell with this output
*/
this.flatpickrDayCreate = new EventEmitter();
this.isDisabled = false;
this.onChangeFn = () => { };
this.onTouchedFn = () => { };
}
ngAfterViewInit() {
const options = {
altFormat: this.altFormat,
altInput: this.altInput,
altInputClass: this.altInputClass,
allowInput: this.allowInput,
allowInvalidPreload: this.allowInvalidPreload,
appendTo: this.appendTo,
ariaDateFormat: this.ariaDateFormat,
clickOpens: this.clickOpens,
dateFormat: this.dateFormat,
defaultHour: this.defaultHour,
defaultMinute: this.defaultMinute,
defaultSeconds: this.defaultSeconds,
disable: this.disable,
disableMobile: this.disableMobile,
enable: this.enable,
enableTime: this.enableTime,
enableSeconds: this.enableSeconds,
formatDate: this.formatDate,
hourIncrement: this.hourIncrement,
defaultDate: this.initialValue,
inline: this.inline,
maxDate: this.maxDate,
minDate: this.minDate,
maxTime: this.maxTime,
minTime: this.minTime,
minuteIncrement: this.minuteIncrement,
mode: this.mode,
nextArrow: this.nextArrow,
noCalendar: this.noCalendar,
now: this.now,
parseDate: this.parseDate,
prevArrow: this.prevArrow,
shorthandCurrentMonth: this.shorthandCurrentMonth,
showMonths: this.showMonths,
monthSelectorType: this.monthSelectorType,
static: this.static,
time24hr: this.time24hr,
weekNumbers: this.weekNumbers,
getWeek: this.getWeek,
wrap: this.wrap,
plugins: this.plugins,
locale: this.locale,
ignoredFocusElements: this.ignoredFocusElements,
onChange: (selectedDates, dateString, instance) => {
this.flatpickrChange.emit({ selectedDates, dateString, instance });
},
onOpen: (selectedDates, dateString, instance) => {
this.flatpickrOpen.emit({ selectedDates, dateString, instance });
},
onClose: (selectedDates, dateString, instance) => {
this.flatpickrClose.emit({ selectedDates, dateString, instance });
},
onMonthChange: (selectedDates, dateString, instance) => {
this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });
},
onYearChange: (selectedDates, dateString, instance) => {
this.flatpickrYearChange.emit({ selectedDates, dateString, instance });
},
onReady: (selectedDates, dateString, instance) => {
this.flatpickrReady.emit({ selectedDates, dateString, instance });
},
onValueUpdate: (selectedDates, dateString, instance) => {
this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });
},
onDayCreate: (selectedDates, dateString, instance, dayElement) => {
this.flatpickrDayCreate.emit({
selectedDates,
dateString,
instance,
dayElement,
});
},
};
Object.keys(options).forEach((key) => {
if (typeof options[key] === 'undefined') {
if (typeof this.options[key] !== 'undefined') {
options[key] = this.options[key];
}
else {
options[key] = this.defaults[key];
}
}
});
// @ts-ignore
options.time_24hr = options.time24hr;
// workaround bug in flatpickr 4.6 where it doesn't copy the classes across
// TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released
options.altInputClass =
(options.altInputClass || '') + ' ' + this.elm.nativeElement.className;
if (!options.enable) {
delete options.enable;
}
if (isPlatformBrowser(this.platformId)) {
this.instance = flatpickr(this.elm.nativeElement, options);
this.setDisabledState(this.isDisabled);
}
}
ngOnChanges(changes) {
if (this.instance) {
Object.keys(changes).forEach((inputKey) => {
this.instance.set(inputKey, this[inputKey]);
});
}
}
ngOnDestroy() {
if (this.instance) {
this.instance.destroy();
}
}
writeValue(value) {
let convertedValue = value;
if (this.convertModelValue && this.mode === 'range' && value) {
convertedValue = [value.from, value.to];
}
if (this.instance) {
this.instance.setDate(convertedValue);
}
else {
// flatpickr hasn't been initialised yet, store the value for later use
this.initialValue = convertedValue;
}
}
registerOnChange(fn) {
this.onChangeFn = fn;
}
registerOnTouched(fn) {
this.onTouchedFn = fn;
}
setDisabledState(isDisabled) {
this.isDisabled = isDisabled;
if (this.instance) {
if (this.isDisabled) {
this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');
}
else {
this.renderer.removeAttribute(this.instance._input, 'disabled');
}
}
}
inputChanged() {
const value = this.elm.nativeElement.value;
if (this.convertModelValue && typeof value === 'string') {
switch (this.mode) {
case 'multiple':
const dates = value
.split('; ')
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn(dates);
break;
case 'range':
const [from, to] = value
.split(this.instance.l10n.rangeSeparator)
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn({ from, to });
break;
case 'single':
default:
this.onChangeFn(this.instance.parseDate(value, this.instance.config.dateFormat, !this.instance.config.enableTime));
}
}
else {
this.onChangeFn(value);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDirective, deps: [{ token: i0.ElementRef }, { token: i1.FlatpickrDefaults }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FlatpickrDirective, selector: "[mwlFlatpickr]", inputs: { options: "options", altFormat: "altFormat", altInput: "altInput", altInputClass: "altInputClass", allowInput: "allowInput", allowInvalidPreload: "allowInvalidPreload", appendTo: "appendTo", ariaDateFormat: "ariaDateFormat", clickOpens: "clickOpens", dateFormat: "dateFormat", defaultHour: "defaultHour", defaultMinute: "defaultMinute", defaultSeconds: "defaultSeconds", disable: "disable", disableMobile: "disableMobile", enable: "enable", enableTime: "enableTime", enableSeconds: "enableSeconds", formatDate: "formatDate", hourIncrement: "hourIncrement", inline: "inline", maxDate: "maxDate", minDate: "minDate", maxTime: "maxTime", minTime: "minTime", minuteIncrement: "minuteIncrement", mode: "mode", nextArrow: "nextArrow", noCalendar: "noCalendar", now: "now", parseDate: "parseDate", prevArrow: "prevArrow", shorthandCurrentMonth: "shorthandCurrentMonth", showMonths: "showMonths", static: "static", time24hr: "time24hr", weekNumbers: "weekNumbers", getWeek: "getWeek", wrap: "wrap", plugins: "plugins", locale: "locale", convertModelValue: "convertModelValue", monthSelectorType: "monthSelectorType", ignoredFocusElements: "ignoredFocusElements" }, outputs: { flatpickrReady: "flatpickrReady", flatpickrChange: "flatpickrChange", flatpickrValueUpdate: "flatpickrValueUpdate", flatpickrOpen: "flatpickrOpen", flatpickrClose: "flatpickrClose", flatpickrMonthChange: "flatpickrMonthChange", flatpickrYearChange: "flatpickrYearChange", flatpickrDayCreate: "flatpickrDayCreate" }, host: { listeners: { "blur": "onTouchedFn()", "input": "inputChanged()" } }, providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR], exportAs: ["mwlFlatpickr"], usesOnChanges: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDirective, decorators: [{
type: Directive,
args: [{
selector: '[mwlFlatpickr]',
providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],
exportAs: 'mwlFlatpickr',
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FlatpickrDefaults }, { type: i0.Renderer2 }, { type: Object, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }], propDecorators: { options: [{
type: Input
}], altFormat: [{
type: Input
}], altInput: [{
type: Input
}], altInputClass: [{
type: Input
}], allowInput: [{
type: Input
}], allowInvalidPreload: [{
type: Input
}], appendTo: [{
type: Input
}], ariaDateFormat: [{
type: Input
}], clickOpens: [{
type: Input
}], dateFormat: [{
type: Input
}], defaultHour: [{
type: Input
}], defaultMinute: [{
type: Input
}], defaultSeconds: [{
type: Input
}], disable: [{
type: Input
}], disableMobile: [{
type: Input
}], enable: [{
type: Input
}], enableTime: [{
type: Input
}], enableSeconds: [{
type: Input
}], formatDate: [{
type: Input
}], hourIncrement: [{
type: Input
}], inline: [{
type: Input
}], maxDate: [{
type: Input
}], minDate: [{
type: Input
}], maxTime: [{
type: Input
}], minTime: [{
type: Input
}], minuteIncrement: [{
type: Input
}], mode: [{
type: Input
}], nextArrow: [{
type: Input
}], noCalendar: [{
type: Input
}], now: [{
type: Input
}], parseDate: [{
type: Input
}], prevArrow: [{
type: Input
}], shorthandCurrentMonth: [{
type: Input
}], showMonths: [{
type: Input
}], static: [{
type: Input
}], time24hr: [{
type: Input
}], weekNumbers: [{
type: Input
}], getWeek: [{
type: Input
}], wrap: [{
type: Input
}], plugins: [{
type: Input
}], locale: [{
type: Input
}], convertModelValue: [{
type: Input
}], monthSelectorType: [{
type: Input
}], ignoredFocusElements: [{
type: Input
}], flatpickrReady: [{
type: Output
}], flatpickrChange: [{
type: Output
}], flatpickrValueUpdate: [{
type: Output
}], flatpickrOpen: [{
type: Output
}], flatpickrClose: [{
type: Output
}], flatpickrMonthChange: [{
type: Output
}], flatpickrYearChange: [{
type: Output
}], flatpickrDayCreate: [{
type: Output
}], onTouchedFn: [{
type: HostListener,
args: ['blur']
}], inputChanged: [{
type: HostListener,
args: ['input']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHBpY2tyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXJ4LWZsYXRwaWNrci9zcmMvbGliL2ZsYXRwaWNrci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJWixVQUFVLEVBQ1YsWUFBWSxFQUVaLFdBQVcsRUFDWCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBYXBELE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFRO0lBQ25ELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztJQUNqRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFPRixNQUFNLE9BQU8sa0JBQWtCO0lBb1Q3QixZQUNVLEdBQWUsRUFDZixRQUEyQixFQUMzQixRQUFtQixFQUNFLFVBQWtCO1FBSHZDLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUMzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ0UsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQXJUakQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQWtCRztRQUNNLFlBQU8sR0FBK0IsRUFBRSxDQUFDO1FBd05sRDs7V0FFRztRQUNNLHlCQUFvQixHQUFrQixFQUFFLENBQUM7UUFFbEQ7O1dBRUc7UUFFSCxtQkFBYyxHQUF5QyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFFOztXQUVHO1FBRUgsb0JBQWUsR0FBeUMsSUFBSSxZ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TztzQkFBZixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFLRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQUtHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFLRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBS0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQU1OLGNBQWM7c0JBRGIsTUFBTTtnQkFPUCxlQUFlO3NCQURkLE1BQU07Z0JBT1Asb0JBQW9CO3NCQURuQixNQUFNO2dCQVFQLGFBQWE7c0JBRFosTUFBTTtnQkFPUCxjQUFjO3NCQURiLE1BQU07Z0JBT1Asb0JBQW9CO3NCQURuQixNQUFNO2dCQVFQLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFRUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBZVAsV0FBVztzQkFEVixZQUFZO3VCQUFDLE1BQU07Z0JBc0xwQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBSZW5kZXJlcjIsXG4gIFBMQVRGT1JNX0lELFxuICBJbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRmxhdHBpY2tyRGVmYXVsdHMsXG4gIERpc2FibGVFbmFibGVEYXRlLFxuICBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSxcbn0gZnJvbSAnLi9mbGF0cGlja3ItZGVmYXVsdHMuc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgZmxhdHBpY2tyIGZyb20gJ2ZsYXRwaWNrcic7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxhdFBpY2tyT3V0cHV0T3B0aW9ucyB7XG4gIHNlbGVjdGVkRGF0ZXM6IERhdGVbXTtcbiAgZGF0ZVN0cmluZzogc3RyaW5nO1xuICBpbnN0YW5jZTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsYXRQaWNrckRheUNyZWF0ZU91dHB1dE9wdGlvbnNcbiAgZXh0ZW5kcyBGbGF0UGlja3JPdXRwdXRPcHRpb25zIHtcbiAgZGF5RWxlbWVudDogSFRNTEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBGTEFUUElDS1JfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmxhdHBpY2tyRGlyZWN0aXZlKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbXdsRmxhdHBpY2tyXScsXG4gIHByb3ZpZGVyczogW0ZMQVRQSUNLUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcbiAgZXhwb3J0QXM6ICdtd2xGbGF0cGlja3InLFxufSlcbmV4cG9ydCBjbGFzcyBGbGF0cGlja3JEaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgLyoqXG4gICAqIE9iamVjdC1vcHRpb25zIHRoYXQgY2FuIGJlIHVzZXIgZm9yIG11bHRpcGxlIGluc3RhbmNlcyBvZiBGbGF0cGlja3IuXG4gICAqIE9wdGlvbiBmcm9tIHRoaXMgb2JqZWN0IGlzIGFwcGxpZWQgb25seSBpZiBzcGVjaWZpYyBvcHRpb24gaXMgbm90IHNwZWNpZmllZC5cbiAgICogRXhhbXBsZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBvcHRpb25zOiBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSA9IHtcbiAgICogICAgICBhbHRGb3JtYXQ6ICdkL20vWScsICAgLy8gd2lsbCBiZSBpZ25vcmVkIHNpbmNlIGFsdEZvcm1hdCBpcyBwcm92aWRlZCB2aWEgc3BlY2lmaWMgYXR0cmlidXRlXG4gICAqICAgICAgYWx0SW5wdXQ6IHRydWUgICAgICAgIC8vIHdpbGwgYmUgdXNlZCBzaW5jZSBzcGVjaWZpYyBhdHRyaWJ1dGUgaXMgbm90IHByb3ZpZGVkXG4gICAqIH07XG4gICAqIGBgYFxuICAgKiBgYGBodG1sXG4gICAqIDxpbnB1dFxuICAgKiAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICogICB0eXBlPVwidGV4dFwiXG4gICAqICAgbXdsRmxhdHBpY2tyXG4gICAqICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAqICAgYWx0Rm9ybWF0PVwiZC9tL1lcIj5cbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zOiBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSA9IHt9O1xuXG4gIC8qKlxuICAgKiBFeGFjdGx5IHRoZSBzYW1lIGFzIGRhdGUgZm9ybWF0LCBidXQgZm9yIHRoZSBhbHRJbnB1dCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpIGFsdEZvcm1hdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBcdFNob3cgdGhlIHVzZXIgYSByZWFkYWJsZSBkYXRlIChhcyBwZXIgYWx0Rm9ybWF0KSwgYnV0IHJldHVybiBzb21ldGhpbmcgdG90YWxseSBkaWZmZXJlbnQgdG8gdGhlIHNlcnZlci5cbiAgICovXG4gIEBJbnB1dCgpIGFsdElucHV0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGlzIGNsYXNzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGlucHV0IGVsZW1lbnQgY3JlYXRlZCBieSB0aGUgYWx0SW5wdXQgb3B0aW9uLlxuICAgKiBOb3RlIHRoYXQgYGFsdElucHV0YCBhbHJlYWR5IGluaGVyaXRzIGNsYXNzZXMgZnJvbSB0aGUgb3JpZ2luYWwgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBhbHRJbnB1dENsYXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhIGRhdGUgZGlyZWN0bHkgaW5wdXQgdGhlIGlucHV0IGZpZWxkLiBCeSBkZWZhdWx0LCBkaXJlY3QgZW50cnkgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBASW5wdXQoKSBhbGxvd0lucHV0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHByZWxvYWRpbmcgb2YgYW4gaW52YWxpZCBkYXRlLiBXaGVuIGRpc2FibGVkLCB0aGUgZmllbGQgd2lsbCBiZSBjbGVhcmVkIGlmIHRoZSBwcm92aWRlZCBkYXRlIGlzIGludmFsaWRcbiAgICovXG4gIEBJbnB1dCgpIGFsbG93SW52YWxpZFByZWxvYWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgYGJvZHlgLCBhcHBlbmRzIHRoZSBjYWxlbmRhciB0byB0aGUgc3BlY2lmaWVkIG5vZGUgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpIGFwcGVuZFRvOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogRGVmaW5lcyBob3cgdGhlIGRhdGUgd2lsbCBiZSBmb3JtYXR0ZWQgaW4gdGhlIGFyaWEtbGFiZWwgZm9yIGNhbGVuZGFyIGRheXMsIHVzaW5nIHRoZSBzYW1lIHRva2VucyBhcyBkYXRlRm9ybWF0LiBJZiB5b3UgY2hhbmdlIHRoaXMsIHlvdSBzaG91bGQgY2hvb3NlIGEgdmFsdWUgdGhhdCB3aWxsIG1ha2Ugc2Vuc2UgaWYgYSBzY3JlZW4gcmVhZGVyIHJlYWRzIGl0IG91dCBsb3VkLlxuICAgKi9cbiAgQElucHV0KCkgYXJpYURhdGVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpY2tpbmcgb24gdGhlIGlucHV0IHNob3VsZCBvcGVuIHRoZSBwaWNrZXIuXG4gICAqIFlvdSBjb3VsZCBkaXNhYmxlIHRoaXMgaWYgeW91IHdpc2ggdG8gb3BlbiB0aGUgY2FsZW5kYXIgbWFudWFsbHkgYHdpdGgub3BlbigpYC5cbiAgICovXG4gIEBJbnB1dCgpIGNsaWNrT3BlbnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgd2hpY2ggYXJlIHVzZWQgdG8gZGVmaW5lIGhvdyB0aGUgZGF0ZSB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgaW5wdXQgYm94LlxuICAgKiBUaGUgc3VwcG9ydGVkIGNoYXJhY3RlcnMgYXJlIGRlZmluZWQgaW4gdGhlIHRhYmxlIGJlbG93LlxuICAgKi9cbiAgQElucHV0KCkgZGF0ZUZvcm1hdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlIG9mIHRoZSBob3VyIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBkZWZhdWx0SG91cj86IG51bWJlcjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIG1pbnV0ZSBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgZGVmYXVsdE1pbnV0ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5pdGlhbCB2YWx1ZSBvZiB0aGUgc2Vjb25kcyBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgZGVmYXVsdFNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlZSA8YSBocmVmPVwiaHR0cHM6Ly9jaG1sbi5naXRodWIuaW8vZmxhdHBpY2tyL2V4YW1wbGVzLyNkaXNhYmxpbmctc3BlY2lmaWMtZGF0ZXNcIj5kaXNhYmxpbmcgZGF0ZXM8L2E+LlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZTogRGlzYWJsZUVuYWJsZURhdGVbXTtcblxuICAvKipcbiAgICogU2V0IGRpc2FibGVNb2JpbGUgdG8gdHJ1ZSB0byBhbHdheXMgdXNlIHRoZSBub24tbmF0aXZlIHBpY2tlci5cbiAgICogQnkgZGVmYXVsdCwgRmxhdHBpY2tyIHV0aWxpemVzIG5hdGl2ZSBkYXRldGltZSB3aWRnZXRzIHVubGVzcyBjZXJ0YWluIG9wdGlvbnMgKGUuZy4gZGlzYWJsZSkgYXJlIHVzZWQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlTW9iaWxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vY2htbG4uZ2l0aHViLmlvL2ZsYXRwaWNrci9leGFtcGxlcy8jZGlzYWJsaW5nLWFsbC1kYXRlcy1leGNlcHQtc2VsZWN0LWZld1wiPmVuYWJsaW5nIGRhdGVzPC9hPi5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZTogRGlzYWJsZUVuYWJsZURhdGVbXTtcblxuICAvKipcbiAgICogRW5hYmxlcyB0aW1lIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZVRpbWU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgc2Vjb25kcyBpbiB0aGUgdGltZSBwaWNrZXIuXG4gICAqL1xuICBASW5wdXQoKSBlbmFibGVTZWNvbmRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdXNpbmcgYSBjdXN0b20gZGF0ZSBmb3JtYXR0aW5nIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGJ1aWx0LWluIGhhbmRsaW5nIGZvciBkYXRlIGZvcm1hdHMgdXNpbmcgZGF0ZUZvcm1hdCwgYWx0Rm9ybWF0LCBldGMuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtYXREYXRlPzogKHZhbHVlOiBhbnkpID0+IHN0cmluZztcblxuICAvKipcbiAgICogQWRqdXN0cyB0aGUgc3RlcCBmb3IgdGhlIGhvdXIgaW5wdXQgKGluY2wuIHNjcm9sbGluZykuXG4gICAqL1xuICBASW5wdXQoKSBob3VySW5jcmVtZW50OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRoZSBjYWxlbmRhciBpbmxpbmUuXG4gICAqL1xuICBASW5wdXQoKSBpbmxpbmU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGRhdGUgdGhhdCBhIHVzZXIgY2FuIHBpY2sgdG8gKGluY2x1c2l2ZSkuXG4gICAqL1xuICBASW5wdXQoKSBtYXhEYXRlOiBzdHJpbmcgfCBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBkYXRlIHRoYXQgYSB1c2VyIGNhbiBzdGFydCBwaWNraW5nIGZyb20gKGluY2x1c2l2ZSkuXG4gICAqL1xuICBASW5wdXQoKSBtaW5EYXRlOiBzdHJpbmcgfCBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRoYXQgYSB1c2VyIGNhbiBwaWNrIHRvIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgQElucHV0KCkgbWF4VGltZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSB0aW1lIHRoYXQgYSB1c2VyIGNhbiBzdGFydCBwaWNraW5nIGZyb20gKGluY2x1c2l2ZSkuXG4gICAqL1xuICBASW5wdXQoKSBtaW5UaW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkanVzdHMgdGhlIHN0ZXAgZm9yIHRoZSBtaW51dGUgaW5wdXQgKGluY2wuIHNjcm9sbGluZykuXG4gICAqL1xuICBASW5wdXQoKSBtaW51dGVJbmNyZW1lbnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogU2VsZWN0IGEgc2luZ2xlIGRhdGUsIG11bHRpcGxlIGRhdGVzIG9yIGEgZGF0ZSByYW5nZS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8ICdyYW5nZSc7XG5cbiAgLyoqXG4gICAqIEhUTUwgZm9yIHRoZSBhcnJvdyBpY29uLCB1c2VkIHRvIHN3aXRjaCBtb250aHMuXG4gICAqL1xuICBASW5wdXQoKSBuZXh0QXJyb3c6IHN0cmluZztcblxuICAvKipcbiAgICogSGlkZXMgdGhlIGRheSBzZWxlY3Rpb24gaW4gY2FsZW5kYXIuIFVzZSBpdCBhbG9uZyB3aXRoIGBlbmFibGVUaW1lYCB0byBjcmVhdGUgYSB0aW1lIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpIG5vQ2FsZW5kYXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBkYXRlIGZvciAndG9kYXknLCB3aGljaCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBcIm5ldyBEYXRlKClcIlxuICAgKi9cbiAgQElucHV0KCkgbm93PzogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBleHBlY3RzIGEgZGF0ZSBzdHJpbmcgYW5kIG11c3QgcmV0dXJuIGEgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBASW5wdXQoKSBwYXJzZURhdGU6IChzdHI6IHN0cmluZykgPT4gRGF0ZTtcblxuICAvKipcbiAgICogSFRNTCBmb3IgdGhlIGxlZnQgYXJyb3cgaWNvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByZXZBcnJvdzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBtb250aCB1c2luZyB0aGUgc2hvcnRoYW5kIHZlcnNpb24gKGllLCBTZXAgaW5zdGVhZCBvZiBTZXB0ZW1iZXIpLlxuICAgKi9cbiAgQElucHV0KCkgc2hvcnRoYW5kQ3VycmVudE1vbnRoOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1vbnRocyBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dNb250aHM6IG51bWJlcjtcblxuICAvKipcbiAgICogUG9zaXRpb24gdGhlIGNhbGVuZGFyIGluc2lkZSB0aGUgd3JhcHBlciBhbmQgbmV4dCB0byB0aGUgaW5wdXQgZWxlbWVudC4gKExlYXZlIGBmYWxzZWAgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nKS5cbiAgICovXG4gIEBJbnB1dCgpIHN0YXRpYzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzcGxheXMgdGltZSBwaWNrZXIgaW4gMjQgaG91ciBtb2RlIHdpdGhvdXQgQU0vUE0gc2VsZWN0aW9uIHdoZW4gZW5hYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpIHRpbWUyNGhyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGRpc3BsYXkgb2Ygd2VlayBudW1iZXJzIGluIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KCkgd2Vla051bWJlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFlvdSBtYXkgb3ZlcnJpZGUgdGhlIGZ1bmN0aW9uIHRoYXQgZXh0cmFjdHMgdGhlIHdlZWsgbnVtYmVycyBmcm9tIGEgRGF0ZSBieSBzdXBwbHlpbmcgYSBnZXRXZWVrIGZ1bmN0aW9uLlxuICAgKiBJdCB0YWtlcyBpbiBhIGRhdGUgYXMgYSBwYXJhbWV0ZXIgYW5kIHNob3VsZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIHN0cmluZyB0aGF0IHlvdSB3YW50IHRvIGFwcGVhciBsZWZ0IG9mIGV2ZXJ5IHdlZWsuXG4gICAqL1xuICBASW5wdXQoKSBnZXRXZWVrOiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZWxlbWVudHMgYW5kIGlucHV0IGdyb3Vwcy5cbiAgICovXG4gIEBJbnB1dCgpIHdyYXA6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHBsdWdpbiBpbnN0YW5jZXMgdG8gdXNlLlxuICAgKi9cbiAgQElucHV0KCkgcGx1Z2luczogYW55W107XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgb2JqZWN0IG9yIHN0cmluZyB0byB1c2UgZm9yIHRoZSBsb2NhbGUuXG4gICAqL1xuICBASW5wdXQoKSBsb2NhbGU6IG9iamVjdCB8IHN0cmluZztcblxuICAvKipcbiAgICogQXV0byBjb252ZXJ0IHRoZSBuZ01vZGVsIHZhbHVlIGZyb20gYSBzdHJpbmcgdG8gYSBkYXRlIC8gYXJyYXkgb2YgZGF0ZXMgLyBmcm9tIC0gdG8gZGF0ZSBvYmplY3QgZGVwZW5kaW5nIG9uIHRoZSBgbW9kZWBcbiAgICovXG4gIEBJbnB1dCgpIGNvbnZlcnRNb2RlbFZhbHVlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgdGhlIG1vbnRoIHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlciBvZiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBtb250aFNlbGVjdG9yVHlwZTogJ3N0YXRpYycgfCAnZHJvcGRvd24nO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBIVE1MIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgcGlja2VyIG9uIGNsaWNrLlxuICAgKi9cbiAgQElucHV0KCkgaWdub3JlZEZvY3VzRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAvKipcbiAgICogR2V0cyB0cmlnZ2VyZWQgb25jZSB0aGUgY2FsZW5kYXIgaXMgaW4gYSByZWFkeSBzdGF0ZVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZsYXRwaWNrclJlYWR5OiBFdmVudEVtaXR0ZXI8RmxhdFBpY2tyT3V0cHV0T3B0aW9ucz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEdldHMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRhdGUsIG9yIGNoYW5nZXMgdGhlIHRpbWUgb24gYSBzZWxlY3RlZCBkYXRlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZsYXRwaWNrckNoYW5nZTogRXZlbnRFbWl0dGVyPEZsYXRQaWNrck91dHB1dE9wdGlvbnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyB1cGRhdGVkIHdpdGggYSBuZXcgZGF0ZSBzdHJpbmcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZmxhdHBpY2tyVmFsdWVVcGRhdGU6IEV2ZW50RW1pdHRlcjxGbGF0UGlja3JPdXRwdXRPcHRpb25zPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSBjYWxlbmRhciBpcyBvcGVuZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZmxhdHBpY2tyT3BlbjogRXZlbnRFbWl0dGVyPEZsYXRQaWNrck91dHB1dE9wdGlvbnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSBjYWxlbmRhciBpcyBjbG9zZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZmxhdHBpY2tyQ2xvc2U6IEV2ZW50RW1pdHRlcjxGbGF0UGlja3JPdXRwdXRPcHRpb25zPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogR2V0cyB0cmlnZ2VyZWQgd2hlbiB0aGUgbW9udGggaXMgY2hhbmdlZCwgZWl0aGVyIGJ5IHRoZSB1c2VyIG9yIHByb2dyYW1tYXRpY2FsbHkuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZmxhdHBpY2tyTW9udGhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGbGF0UGlja3JPdXRwdXRPcHRpb25zPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSB5ZWFyIGlzIGNoYW5nZWQsIGVpdGhlciBieSB0aGUgdXNlciBvciBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZsYXRwaWNrclllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGbGF0UGlja3JPdXRwdXRPcHRpb25zPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUYWtlIGZ1bGwgY29udHJvbCBvZiBldmVyeSBkYXRlIGNlbGwgd2l0aCB0aGlzIG91dHB1dFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZsYXRwaWNrckRheUNyZWF0ZTogRXZlbnRFbWl0dGVyPEZsYXRQaWNrckRheUNyZWF0ZU91dHB1dE9wdGlvbnM+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBmbGF0cGlja3IgaW5zdGFuY2Ugd2hlcmUgeW91IGNhbiBjYWxsIG1ldGhvZHMgbGlrZSB0b2dnbGUoKSwgb3BlbigpLCBjbG9zZSgpIGV0Y1xuICAgKi9cbiAgaW5zdGFuY2U6IGZsYXRwaWNrci5JbnN0YW5jZTtcblxuICBwcml2YXRlIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbml0aWFsVmFsdWU6IGFueTtcblxuICBvbkNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBvblRvdWNoZWRGbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxtOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgZGVmYXVsdHM6IEZsYXRwaWNrckRlZmF1bHRzLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgICBhbHRGb3JtYXQ6IHRoaXMuYWx0Rm9ybWF0LFxuICAgICAgYWx0SW5wdXQ6IHRoaXMuYWx0SW5wdXQsXG4gICAgICBhbHRJbnB1dENsYXNzOiB0aGlzLmFsdElucHV0Q2xhc3MsXG4gICAgICBhbGxvd0lucHV0OiB0aGlzLmFsbG93SW5wdXQsXG4gICAgICBhbGxvd0ludmFsaWRQcmVsb2FkOiB0aGlzLmFsbG93SW52YWxpZFByZWxvYWQsXG4gICAgICBhcHBlbmRUbzogdGhpcy5hcHBlbmRUbyxcbiAgICAgIGFyaWFEYXRlRm9ybWF0OiB0aGlzLmFyaWFEYXRlRm9ybWF0LFxuICAgICAgY2xpY2tPcGVuczogdGhpcy5jbGlja09wZW5zLFxuICAgICAgZGF0ZUZvcm1hdDogdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgZGVmYXVsdEhvdXI6IHRoaXMuZGVmYXVsdEhvdXIsXG4gICAgICBkZWZhdWx0TWludXRlOiB0aGlzLmRlZmF1bHRNaW51dGUsXG4gICAgICBkZWZhdWx0U2Vjb25kczogdGhpcy5kZWZhdWx0U2Vjb25kcyxcbiAgICAgIGRpc2FibGU6IHRoaXMuZGlzYWJsZSxcbiAgICAgIGRpc2FibGVNb2JpbGU6IHRoaXMuZGlzYWJsZU1vYmlsZSxcbiAgICAgIGVuYWJsZTogdGhpcy5lbmFibGUsXG4gICAgICBlbmFibGVUaW1lOiB0aGlzLmVuYWJsZVRpbWUsXG4gICAgICBlbmFibGVTZWNvbmRzOiB0aGlzLmVuYWJsZVNlY29uZHMsXG4gICAgICBmb3JtYXREYXRlOiB0aGlzLmZvcm1hdERhdGUsXG4gICAgICBob3VySW5jcmVtZW50OiB0aGlzLmhvdXJJbmNyZW1lbnQsXG4gICAgICBkZWZhdWx0RGF0ZTogdGhpcy5pbml0aWFsVmFsdWUsXG4gICAgICBpbmxpbmU6IHRoaXMuaW5saW5lLFxuICAgICAgbWF4RGF0ZTogdGhpcy5tYXhEYXRlLFxuICAgICAgbWluRGF0ZTogdGhpcy5taW5EYXRlLFxuICAgICAgbWF4VGltZTogdGhpcy5tYXhUaW1lLFxuICAgICAgbWluVGltZTogdGhpcy5taW5UaW1lLFxuICAgICAgbWludXRlSW5jcmVtZW50OiB0aGlzLm1pbnV0ZUluY3JlbWVudCxcbiAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgIG5leHRBcnJvdzogdGhpcy5uZXh0QXJyb3csXG4gICAgICBub0NhbGVuZGFyOiB0aGlzLm5vQ2FsZW5kYXIsXG4gICAgICBub3c6IHRoaXMubm93LFxuICAgICAgcGFyc2VEYXRlOiB0aGlzLnBhcnNlRGF0ZSxcbiAgICAgIHByZXZBcnJvdzogdGhpcy5wcmV2QXJyb3csXG4gICAgICBzaG9ydGhhbmRDdXJyZW50TW9udGg6IHRoaXMuc2hvcnRoYW5kQ3VycmVudE1vbnRoLFxuICAgICAgc2hvd01vbnRoczogdGhpcy5zaG93TW9udGhzLFxuICAgICAgbW9udGhTZWxlY3RvclR5cGU6IHRoaXMubW9udGhTZWxlY3RvclR5cGUsXG4gICAgICBzdGF0aWM6IHRoaXMuc3RhdGljLFxuICAgICAgdGltZTI0aHI6IHRoaXMudGltZTI0aHIsXG4gICAgICB3ZWVrTnVtYmVyczogdGhpcy53ZWVrTnVtYmVycyxcbiAgICAgIGdldFdlZWs6IHRoaXMuZ2V0V2VlayxcbiAgICAgIHdyYXA6IHRoaXMud3JhcCxcbiAgICAgIHBsdWdpbnM6IHRoaXMucGx1Z2lucyxcbiAgICAgIGxvY2FsZTogdGhpcy5sb2NhbGUsXG4gICAgICBpZ25vcmVkRm9jdXNFbGVtZW50czogdGhpcy5pZ25vcmVkRm9jdXNFbGVtZW50cyxcbiAgICAgIG9uQ2hhbmdlOiAoc2VsZWN0ZWREYXRlczogRGF0ZVtdLCBkYXRlU3RyaW5nOiBzdHJpbmcsIGluc3RhbmNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5mbGF0cGlja3JDaGFuZ2UuZW1pdCh7IHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHJpbmcsIGluc3RhbmNlIH0pO1xuICAgICAgfSxcbiAgICAgIG9uT3BlbjogKHNlbGVjdGVkRGF0ZXM6IERhdGVbXSwgZGF0ZVN0cmluZzogc3RyaW5nLCBpbnN0YW5jZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZmxhdHBpY2tyT3Blbi5lbWl0KHsgc2VsZWN0ZWREYXRlcywgZGF0ZVN0cmluZywgaW5zdGFuY2UgfSk7XG4gICAgICB9LFxuICAgICAgb25DbG9zZTogKHNlbGVjdGVkRGF0ZXM6IERhdGVbXSwgZGF0ZVN0cmluZzogc3RyaW5nLCBpbnN0YW5jZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZmxhdHBpY2tyQ2xvc2UuZW1pdCh7IHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHJpbmcsIGluc3RhbmNlIH0pO1xuICAgICAgfSxcbiAgICAgIG9uTW9udGhDaGFuZ2U6IChcbiAgICAgICAgc2VsZWN0ZWREYXRlczogRGF0ZVtdLFxuICAgICAgICBkYXRlU3RyaW5nOiBzdHJpbmcsXG4gICAgICAgIGluc3RhbmNlOiBhbnksXG4gICAgICApID0+IHtcbiAgICAgICAgdGhpcy5mbGF0cGlja3JNb250aENoYW5nZS5lbWl0KHsgc2VsZWN0ZWREYXRlcywgZGF0ZVN0cmluZywgaW5zdGFuY2UgfSk7XG4gICAgICB9LFxuICAgICAgb25ZZWFyQ2hhbmdlOiAoXG4gICAgICAgIHNlbGVjdGVkRGF0ZXM6IERhdGVbXSxcbiAgICAgICAgZGF0ZVN0cmluZzogc3RyaW5nLFxuICAgICAgICBpbnN0YW5jZTogYW55LFxuICAgICAgKSA9PiB7XG4gICAgICAgIHRoaXMuZmxhdHBpY2tyWWVhckNoYW5nZS5lbWl0KHsgc2VsZWN0ZWREYXRlcywgZGF0ZVN0cmluZywgaW5zdGFuY2UgfSk7XG4gICAgICB9LFxuICAgICAgb25SZWFkeTogKHNlbGVjdGVkRGF0ZXM6IERhdGVbXSwgZGF0ZVN0cmluZzogc3RyaW5nLCBpbnN0YW5jZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZmxhdHBpY2tyUmVhZHkuZW1pdCh7IHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHJpbmcsIGluc3RhbmNlIH0pO1xuICAgICAgfSxcbiAgICAgIG9uVmFsdWVVcGRhdGU6IChcbiAgICAgICAgc2VsZWN0ZWREYXRlczogRGF0ZVtdLFxuICAgICAgICBkYXRlU3RyaW5nOiBzdHJpbmcsXG4gICAgICAgIGluc3RhbmNlOiBhbnksXG4gICAgICApID0+IHtcbiAgICAgICAgdGhpcy5mbGF0cGlja3JWYWx1ZVVwZGF0ZS5lbWl0KHsgc2VsZWN0ZWREYXRlcywgZGF0ZVN0cmluZywgaW5zdGFuY2UgfSk7XG4gICAgICB9LFxuICAgICAgb25EYXlDcmVhdGU6IChcbiAgICAgICAgc2VsZWN0ZWREYXRlczogRGF0ZVtdLFxuICAgICAgICBkYXRlU3RyaW5nOiBzdHJpbmcsXG4gICAgICAgIGluc3RhbmNlOiBhbnksXG4gICAgICAgIGRheUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgICAgKSA9PiB7XG4gICAgICAgIHRoaXMuZmxhdHBpY2tyRGF5Q3JlYXRlLmVtaXQoe1xuICAgICAgICAgIHNlbGVjdGVkRGF0ZXMsXG4gICAgICAgICAgZGF0ZVN0cmluZyxcbiAgICAgICAgICBpbnN0YW5jZSxcbiAgICAgICAgICBkYXlFbGVtZW50LFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zW2tleV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMub3B0aW9ucyBhcyBhbnkpW2tleV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgb3B0aW9uc1trZXldID0gKHRoaXMub3B0aW9ucyBhcyBhbnkpW2tleV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9uc1trZXldID0gKHRoaXMuZGVmYXVsdHMgYXMgYW55KVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3B0aW9ucy50aW1lXzI0aHIgPSBvcHRpb25zLnRpbWUyNGhyO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBidWcgaW4gZmxhdHBpY2tyIDQuNiB3aGVyZSBpdCBkb2Vzbid0IGNvcHkgdGhlIGNsYXNzZXMgYWNyb3NzXG4gICAgLy8gVE9ETyAtIHJlbW92ZSBvbmNlIGZpeCBpbiBodHRwczovL2dpdGh1Yi5jb20vZmxhdHBpY2tyL2ZsYXRwaWNrci9pc3N1ZXMvMTg2MCBpcyByZWxlYXNlZFxuICAgIG9wdGlvbnMuYWx0SW5wdXRDbGFzcyA9XG4gICAgICAob3B0aW9ucy5hbHRJbnB1dENsYXNzIHx8ICcnKSArICcgJyArIHRoaXMuZWxtLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lO1xuXG4gICAgaWYgKCFvcHRpb25zLmVuYWJsZSkge1xuICAgICAgZGVsZXRlIG9wdGlvbnMuZW5hYmxlO1xuICAgIH1cblxuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLmluc3RhbmNlID0gZmxhdHBpY2tyKFxuICAgICAgICB0aGlzLmVsbS5uYXRpdmVFbGVtZW50LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKSBhcyBmbGF0cGlja3IuSW5zdGFuY2U7XG4gICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodGhpcy5pc0Rpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNoYW5nZXMpLmZvckVhY2goKGlucHV0S2V5KSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0KGlucHV0S2V5IGFzIGFueSwgKHRoaXMgYXMgYW55KVtpbnB1dEtleV0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2UuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGxldCBjb252ZXJ0ZWRWYWx1ZTogYW55ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuY29udmVydE1vZGVsVmFsdWUgJiYgdGhpcy5tb2RlID09PSAncmFuZ2UnICYmIHZhbHVlKSB7XG4gICAgICBjb252ZXJ0ZWRWYWx1ZSA9IFt2YWx1ZS5mcm9tLCB2YWx1ZS50b107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0RGF0ZShjb252ZXJ0ZWRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZsYXRwaWNrciBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCB5ZXQsIHN0b3JlIHRoZSB2YWx1ZSBmb3IgbGF0ZXIgdXNlXG4gICAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IGNvbnZlcnRlZFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5pbnN0YW5jZS5faW5wdXQsICdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5pbnN0YW5jZS5faW5wdXQsICdkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JylcbiAgaW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB0aGlzLmVsbS5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgIGlmICh0aGlzLmNvbnZlcnRNb2RlbFZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICAgIGNhc2UgJ211bHRpcGxlJzpcbiAgICAgICAgICBjb25zdCBkYXRlczogQXJyYXk8RGF0ZSB8IHVuZGVmaW5lZD4gPSB2YWx1ZVxuICAgICAgICAgICAgLnNwbGl0KCc7ICcpXG4gICAgICAgICAgICAubWFwKChzdHIpID0+XG4gICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UucGFyc2VEYXRlKFxuICAgICAgICAgICAgICAgIHN0cixcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmNvbmZpZy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICF0aGlzLmluc3RhbmNlLmNvbmZpZy5lbmFibGVUaW1lLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oZGF0ZXMpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICBjb25zdCBbZnJvbSwgdG9dID0gdmFsdWVcbiAgICAgICAgICAgIC5zcGxpdCh0aGlzLmluc3RhbmNlLmwxMG4ucmFuZ2VTZXBhcmF0b3IpXG4gICAgICAgICAgICAubWFwKChzdHIpID0+XG4gICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UucGFyc2VEYXRlKFxuICAgICAgICAgICAgICAgIHN0cixcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmNvbmZpZy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICF0aGlzLmluc3RhbmNlLmNvbmZpZy5lbmFibGVUaW1lLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oeyBmcm9tLCB0byB9KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzaW5nbGUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMub25DaGFuZ2VGbihcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UucGFyc2VEYXRlKFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5jb25maWcuZGF0ZUZvcm1hdCxcbiAgICAgICAgICAgICAgIXRoaXMuaW5zdGFuY2UuY29uZmlnLmVuYWJsZVRpbWUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25DaGFuZ2VGbih2YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
import { NgModule, InjectionToken, } from '@angular/core';
import { FlatpickrDirective } from './flatpickr.directive';
import { FlatpickrDefaults, } from './flatpickr-defaults.service';
import * as i0 from "@angular/core";
export const USER_DEFAULTS = new InjectionToken('flatpickr defaults');
export function defaultsFactory(userDefaults) {
const defaults = new FlatpickrDefaults();
Object.assign(defaults, userDefaults);
return defaults;
}
export class FlatpickrModule {
static forRoot(userDefaults = {}) {
return {
ngModule: FlatpickrModule,
providers: [
{
provide: USER_DEFAULTS,
useValue: userDefaults,
},
{
provide: FlatpickrDefaults,
useFactory: defaultsFactory,
deps: [USER_DEFAULTS],
},
],
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrModule, declarations: [FlatpickrDirective], exports: [FlatpickrDirective] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrModule }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrModule, decorators: [{
type: NgModule,
args: [{
declarations: [FlatpickrDirective],
exports: [FlatpickrDirective],
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHBpY2tyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXJ4LWZsYXRwaWNrci9zcmMvbGliL2ZsYXRwaWNrci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFFUixjQUFjLEdBRWYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLDhCQUE4QixDQUFDOztBQUV0QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUV0RSxNQUFNLFVBQVUsZUFBZSxDQUM3QixZQUF3QztJQUV4QyxNQUFNLFFBQVEsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQzVELE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFNRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixNQUFNLENBQUMsT0FBTyxDQUNaLGVBQTJDLEVBQUU7UUFFN0MsT0FBTztZQUNMLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsUUFBUSxFQUFFLFlBQVk7aUJBQ3ZCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFVBQVUsRUFBRSxlQUFlO29CQUMzQixJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3RCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzsrR0FsQlUsZUFBZTtnSEFBZixlQUFlLGlCQUhYLGtCQUFrQixhQUN2QixrQkFBa0I7Z0hBRWpCLGVBQWU7OzRGQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE5nTW9kdWxlLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgUHJvdmlkZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxhdHBpY2tyRGlyZWN0aXZlIH0gZnJvbSAnLi9mbGF0cGlja3IuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gIEZsYXRwaWNrckRlZmF1bHRzLFxuICBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSxcbn0gZnJvbSAnLi9mbGF0cGlja3ItZGVmYXVsdHMuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBVU0VSX0RFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuKCdmbGF0cGlja3IgZGVmYXVsdHMnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRzRmFjdG9yeShcbiAgdXNlckRlZmF1bHRzOiBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSxcbik6IEZsYXRwaWNrckRlZmF1bHRzIHtcbiAgY29uc3QgZGVmYXVsdHM6IEZsYXRwaWNrckRlZmF1bHRzID0gbmV3IEZsYXRwaWNrckRlZmF1bHRzKCk7XG4gIE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHVzZXJEZWZhdWx0cyk7XG4gIHJldHVybiBkZWZhdWx0cztcbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRmxhdHBpY2tyRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0ZsYXRwaWNrckRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZsYXRwaWNrck1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KFxuICAgIHVzZXJEZWZhdWx0czogRmxhdHBpY2tyRGVmYXVsdHNJbnRlcmZhY2UgPSB7fSxcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGbGF0cGlja3JNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEZsYXRwaWNrck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogVVNFUl9ERUZBVUxUUyxcbiAgICAgICAgICB1c2VWYWx1ZTogdXNlckRlZmF1bHRzLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogRmxhdHBpY2tyRGVmYXVsdHMsXG4gICAgICAgICAgdXNlRmFjdG9yeTogZGVmYXVsdHNGYWN0b3J5LFxuICAgICAgICAgIGRlcHM6IFtVU0VSX0RFRkFVTFRTXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl19
/*
* Public API Surface of angularx-flatpickr
*/
export * from './lib/flatpickr.module';
export { FlatpickrDefaults, } from './lib/flatpickr-defaults.service';
export { FlatpickrDirective } from './lib/flatpickr.directive';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXJ4LWZsYXRwaWNrci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhbmd1bGFyeC1mbGF0cGlja3JcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mbGF0cGlja3IubW9kdWxlJztcbmV4cG9ydCB7XG4gIEZsYXRwaWNrckRlZmF1bHRzLFxuICBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSxcbn0gZnJvbSAnLi9saWIvZmxhdHBpY2tyLWRlZmF1bHRzLnNlcnZpY2UnO1xuZXhwb3J0IHsgRmxhdHBpY2tyRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZmxhdHBpY2tyLmRpcmVjdGl2ZSc7XG4iXX0=
import * as i0 from '@angular/core';
import { Injectable, forwardRef, EventEmitter, PLATFORM_ID, Directive, Inject, Input, Output, HostListener, InjectionToken, NgModule } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import flatpickr from 'flatpickr';
import { isPlatformBrowser } from '@angular/common';
class FlatpickrDefaults {
constructor() {
/**
* Exactly the same as date format, but for the altInput field.
*/
this.altFormat = 'F j, Y';
/**
* Show the user a readable date (as per altFormat), but return something totally different to the server.
*/
this.altInput = false;
/**
* This class will be added to the input element created by the altInput option.
* Note that `altInput` already inherits classes from the original input.
*/
this.altInputClass = '';
/**
* Allows the user to enter a date directly input the input field. By default, direct entry is disabled.
*/
this.allowInput = false;
/**
* Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid
*/
this.allowInvalidPreload = false;
/**
* Instead of `body`, appends the calendar to the specified node instead.
*/
this.appendTo = undefined;
/**
* Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.
*/
this.ariaDateFormat = 'F j, Y';
/**
* Whether clicking on the input should open the picker.
* You could disable this if you wish to open the calendar manually `with.open()`.
*/
this.clickOpens = true;
/**
* A string of characters which are used to define how the date will be displayed in the input box.
* The supported characters are defined in the table below.
*/
this.dateFormat = 'Y-m-d';
/**
* Initial value of the hour element.
*/
this.defaultHour = 12;
/**
* Initial value of the minute element.
*/
this.defaultMinute = 0;
/**
* Initial value of the seconds element.
*/
this.defaultSeconds = 0;
/**
* See <a href="https://chmln.github.io/flatpickr/examples/#disabling-specific-dates">disabling dates</a>.
*/
this.disable = [];
/**
* Set disableMobile to true to always use the non-native picker.
* By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.
*/
this.disableMobile = false;
/**
* Enables time picker.
*/
this.enableTime = false;
/**
* Enables seconds in the time picker.
*/
this.enableSeconds = false;
/**
* Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.
*/
this.formatDate = undefined;
/**
* Adjusts the step for the hour input (incl. scrolling).
*/
this.hourIncrement = 1;
/**
* Displays the calendar inline.
*/
this.inline = false;
/**
* The maximum date that a user can pick to (inclusive).
*/
this.maxDate = undefined;
/**
* The minimum date that a user can start picking from (inclusive).
*/
this.minDate = undefined;
/**
* The maximum time that a user can pick to (inclusive).
*/
this.maxTime = undefined;
/**
* The minimum time that a user can start picking from (inclusive).
*/
this.minTime = undefined;
/**
* Adjusts the step for the minute input (incl. scrolling).
*/
this.minuteIncrement = 5;
/**
* Select a single date, multiple dates or a date range.
*/
this.mode = 'single';
/**
* HTML for the arrow icon, used to switch months.
*/
this.nextArrow = '>';
/**
* Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.
*/
this.noCalendar = false;
/**
* Default now to the current date
*/
this.now = new Date();
/**
* HTML for the left arrow icon.
*/
this.prevArrow = '<';
/**
* Show the month using the shorthand version (ie, Sep instead of September).
*/
this.shorthandCurrentMonth = false;
/**
* Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).
*/
this.static = false;
/**
* Displays time picker in 24 hour mode without AM/PM selection when enabled.
*/
this.time24hr = false;
/**
* When true, dates will parsed, formatted, and displayed in UTC.
* It's recommended that date strings contain the timezone, but not necessary.
*/
this.utc = false;
/**
* Enables display of week numbers in calendar.
*/
this.weekNumbers = false;
/**
* Custom elements and input groups.
*/
this.wrap = false;
/**
* Array of plugin instances to use.
*/
this.plugins = [];
/**
* The locale object or string to use for the locale.
*/
this.locale = 'default';
/**
* Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`
*/
this.convertModelValue = false;
/**
* The number of months shown.
*/
this.showMonths = 1;
/**
* How the month should be displayed in the header of the calendar.
*/
this.monthSelectorType = 'static';
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDefaults, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDefaults }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDefaults, decorators: [{
type: Injectable
}] });
const FLATPICKR_CONTROL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => FlatpickrDirective),
multi: true,
};
class FlatpickrDirective {
constructor(elm, defaults, renderer, platformId) {
this.elm = elm;
this.defaults = defaults;
this.renderer = renderer;
this.platformId = platformId;
/**
* Object-options that can be user for multiple instances of Flatpickr.
* Option from this object is applied only if specific option is not specified.
* Example:
* ```typescript
* options: FlatpickrDefaultsInterface = {
* altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute
* altInput: true // will be used since specific attribute is not provided
* };
* ```
* ```html
* <input
* class="form-control"
* type="text"
* mwlFlatpickr
* [options]="options"
* altFormat="d/m/Y">
* ```
*/
this.options = {};
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
/**
* Gets triggered once the calendar is in a ready state
*/
this.flatpickrReady = new EventEmitter();
/**
* Gets triggered when the user selects a date, or changes the time on a selected date.
*/
this.flatpickrChange = new EventEmitter();
/**
* Gets triggered when the input value is updated with a new date string.
*/
this.flatpickrValueUpdate = new EventEmitter();
/**
* Gets triggered when the calendar is opened.
*/
this.flatpickrOpen = new EventEmitter();
/**
* Gets triggered when the calendar is closed.
*/
this.flatpickrClose = new EventEmitter();
/**
* Gets triggered when the month is changed, either by the user or programmatically.
*/
this.flatpickrMonthChange = new EventEmitter();
/**
* Gets triggered when the year is changed, either by the user or programmatically.
*/
this.flatpickrYearChange = new EventEmitter();
/**
* Take full control of every date cell with this output
*/
this.flatpickrDayCreate = new EventEmitter();
this.isDisabled = false;
this.onChangeFn = () => { };
this.onTouchedFn = () => { };
}
ngAfterViewInit() {
const options = {
altFormat: this.altFormat,
altInput: this.altInput,
altInputClass: this.altInputClass,
allowInput: this.allowInput,
allowInvalidPreload: this.allowInvalidPreload,
appendTo: this.appendTo,
ariaDateFormat: this.ariaDateFormat,
clickOpens: this.clickOpens,
dateFormat: this.dateFormat,
defaultHour: this.defaultHour,
defaultMinute: this.defaultMinute,
defaultSeconds: this.defaultSeconds,
disable: this.disable,
disableMobile: this.disableMobile,
enable: this.enable,
enableTime: this.enableTime,
enableSeconds: this.enableSeconds,
formatDate: this.formatDate,
hourIncrement: this.hourIncrement,
defaultDate: this.initialValue,
inline: this.inline,
maxDate: this.maxDate,
minDate: this.minDate,
maxTime: this.maxTime,
minTime: this.minTime,
minuteIncrement: this.minuteIncrement,
mode: this.mode,
nextArrow: this.nextArrow,
noCalendar: this.noCalendar,
now: this.now,
parseDate: this.parseDate,
prevArrow: this.prevArrow,
shorthandCurrentMonth: this.shorthandCurrentMonth,
showMonths: this.showMonths,
monthSelectorType: this.monthSelectorType,
static: this.static,
time24hr: this.time24hr,
weekNumbers: this.weekNumbers,
getWeek: this.getWeek,
wrap: this.wrap,
plugins: this.plugins,
locale: this.locale,
ignoredFocusElements: this.ignoredFocusElements,
onChange: (selectedDates, dateString, instance) => {
this.flatpickrChange.emit({ selectedDates, dateString, instance });
},
onOpen: (selectedDates, dateString, instance) => {
this.flatpickrOpen.emit({ selectedDates, dateString, instance });
},
onClose: (selectedDates, dateString, instance) => {
this.flatpickrClose.emit({ selectedDates, dateString, instance });
},
onMonthChange: (selectedDates, dateString, instance) => {
this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });
},
onYearChange: (selectedDates, dateString, instance) => {
this.flatpickrYearChange.emit({ selectedDates, dateString, instance });
},
onReady: (selectedDates, dateString, instance) => {
this.flatpickrReady.emit({ selectedDates, dateString, instance });
},
onValueUpdate: (selectedDates, dateString, instance) => {
this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });
},
onDayCreate: (selectedDates, dateString, instance, dayElement) => {
this.flatpickrDayCreate.emit({
selectedDates,
dateString,
instance,
dayElement,
});
},
};
Object.keys(options).forEach((key) => {
if (typeof options[key] === 'undefined') {
if (typeof this.options[key] !== 'undefined') {
options[key] = this.options[key];
}
else {
options[key] = this.defaults[key];
}
}
});
// @ts-ignore
options.time_24hr = options.time24hr;
// workaround bug in flatpickr 4.6 where it doesn't copy the classes across
// TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released
options.altInputClass =
(options.altInputClass || '') + ' ' + this.elm.nativeElement.className;
if (!options.enable) {
delete options.enable;
}
if (isPlatformBrowser(this.platformId)) {
this.instance = flatpickr(this.elm.nativeElement, options);
this.setDisabledState(this.isDisabled);
}
}
ngOnChanges(changes) {
if (this.instance) {
Object.keys(changes).forEach((inputKey) => {
this.instance.set(inputKey, this[inputKey]);
});
}
}
ngOnDestroy() {
if (this.instance) {
this.instance.destroy();
}
}
writeValue(value) {
let convertedValue = value;
if (this.convertModelValue && this.mode === 'range' && value) {
convertedValue = [value.from, value.to];
}
if (this.instance) {
this.instance.setDate(convertedValue);
}
else {
// flatpickr hasn't been initialised yet, store the value for later use
this.initialValue = convertedValue;
}
}
registerOnChange(fn) {
this.onChangeFn = fn;
}
registerOnTouched(fn) {
this.onTouchedFn = fn;
}
setDisabledState(isDisabled) {
this.isDisabled = isDisabled;
if (this.instance) {
if (this.isDisabled) {
this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');
}
else {
this.renderer.removeAttribute(this.instance._input, 'disabled');
}
}
}
inputChanged() {
const value = this.elm.nativeElement.value;
if (this.convertModelValue && typeof value === 'string') {
switch (this.mode) {
case 'multiple':
const dates = value
.split('; ')
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn(dates);
break;
case 'range':
const [from, to] = value
.split(this.instance.l10n.rangeSeparator)
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn({ from, to });
break;
case 'single':
default:
this.onChangeFn(this.instance.parseDate(value, this.instance.config.dateFormat, !this.instance.config.enableTime));
}
}
else {
this.onChangeFn(value);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDirective, deps: [{ token: i0.ElementRef }, { token: FlatpickrDefaults }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FlatpickrDirective, selector: "[mwlFlatpickr]", inputs: { options: "options", altFormat: "altFormat", altInput: "altInput", altInputClass: "altInputClass", allowInput: "allowInput", allowInvalidPreload: "allowInvalidPreload", appendTo: "appendTo", ariaDateFormat: "ariaDateFormat", clickOpens: "clickOpens", dateFormat: "dateFormat", defaultHour: "defaultHour", defaultMinute: "defaultMinute", defaultSeconds: "defaultSeconds", disable: "disable", disableMobile: "disableMobile", enable: "enable", enableTime: "enableTime", enableSeconds: "enableSeconds", formatDate: "formatDate", hourIncrement: "hourIncrement", inline: "inline", maxDate: "maxDate", minDate: "minDate", maxTime: "maxTime", minTime: "minTime", minuteIncrement: "minuteIncrement", mode: "mode", nextArrow: "nextArrow", noCalendar: "noCalendar", now: "now", parseDate: "parseDate", prevArrow: "prevArrow", shorthandCurrentMonth: "shorthandCurrentMonth", showMonths: "showMonths", static: "static", time24hr: "time24hr", weekNumbers: "weekNumbers", getWeek: "getWeek", wrap: "wrap", plugins: "plugins", locale: "locale", convertModelValue: "convertModelValue", monthSelectorType: "monthSelectorType", ignoredFocusElements: "ignoredFocusElements" }, outputs: { flatpickrReady: "flatpickrReady", flatpickrChange: "flatpickrChange", flatpickrValueUpdate: "flatpickrValueUpdate", flatpickrOpen: "flatpickrOpen", flatpickrClose: "flatpickrClose", flatpickrMonthChange: "flatpickrMonthChange", flatpickrYearChange: "flatpickrYearChange", flatpickrDayCreate: "flatpickrDayCreate" }, host: { listeners: { "blur": "onTouchedFn()", "input": "inputChanged()" } }, providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR], exportAs: ["mwlFlatpickr"], usesOnChanges: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrDirective, decorators: [{
type: Directive,
args: [{
selector: '[mwlFlatpickr]',
providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],
exportAs: 'mwlFlatpickr',
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: FlatpickrDefaults }, { type: i0.Renderer2 }, { type: Object, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }], propDecorators: { options: [{
type: Input
}], altFormat: [{
type: Input
}], altInput: [{
type: Input
}], altInputClass: [{
type: Input
}], allowInput: [{
type: Input
}], allowInvalidPreload: [{
type: Input
}], appendTo: [{
type: Input
}], ariaDateFormat: [{
type: Input
}], clickOpens: [{
type: Input
}], dateFormat: [{
type: Input
}], defaultHour: [{
type: Input
}], defaultMinute: [{
type: Input
}], defaultSeconds: [{
type: Input
}], disable: [{
type: Input
}], disableMobile: [{
type: Input
}], enable: [{
type: Input
}], enableTime: [{
type: Input
}], enableSeconds: [{
type: Input
}], formatDate: [{
type: Input
}], hourIncrement: [{
type: Input
}], inline: [{
type: Input
}], maxDate: [{
type: Input
}], minDate: [{
type: Input
}], maxTime: [{
type: Input
}], minTime: [{
type: Input
}], minuteIncrement: [{
type: Input
}], mode: [{
type: Input
}], nextArrow: [{
type: Input
}], noCalendar: [{
type: Input
}], now: [{
type: Input
}], parseDate: [{
type: Input
}], prevArrow: [{
type: Input
}], shorthandCurrentMonth: [{
type: Input
}], showMonths: [{
type: Input
}], static: [{
type: Input
}], time24hr: [{
type: Input
}], weekNumbers: [{
type: Input
}], getWeek: [{
type: Input
}], wrap: [{
type: Input
}], plugins: [{
type: Input
}], locale: [{
type: Input
}], convertModelValue: [{
type: Input
}], monthSelectorType: [{
type: Input
}], ignoredFocusElements: [{
type: Input
}], flatpickrReady: [{
type: Output
}], flatpickrChange: [{
type: Output
}], flatpickrValueUpdate: [{
type: Output
}], flatpickrOpen: [{
type: Output
}], flatpickrClose: [{
type: Output
}], flatpickrMonthChange: [{
type: Output
}], flatpickrYearChange: [{
type: Output
}], flatpickrDayCreate: [{
type: Output
}], onTouchedFn: [{
type: HostListener,
args: ['blur']
}], inputChanged: [{
type: HostListener,
args: ['input']
}] } });
const USER_DEFAULTS = new InjectionToken('flatpickr defaults');
function defaultsFactory(userDefaults) {
const defaults = new FlatpickrDefaults();
Object.assign(defaults, userDefaults);
return defaults;
}
class FlatpickrModule {
static forRoot(userDefaults = {}) {
return {
ngModule: FlatpickrModule,
providers: [
{
provide: USER_DEFAULTS,
useValue: userDefaults,
},
{
provide: FlatpickrDefaults,
useFactory: defaultsFactory,
deps: [USER_DEFAULTS],
},
],
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrModule, declarations: [FlatpickrDirective], exports: [FlatpickrDirective] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrModule }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlatpickrModule, decorators: [{
type: NgModule,
args: [{
declarations: [FlatpickrDirective],
exports: [FlatpickrDirective],
}]
}] });
/*
* Public API Surface of angularx-flatpickr
*/
/**
* Generated bundle index. Do not edit.
*/
export { FlatpickrDefaults, FlatpickrDirective, FlatpickrModule, USER_DEFAULTS, defaultsFactory };
//# sourceMappingURL=angularx-flatpickr.mjs.map
{"version":3,"file":"angularx-flatpickr.mjs","sources":["../../../projects/angularx-flatpickr/src/lib/flatpickr-defaults.service.ts","../../../projects/angularx-flatpickr/src/lib/flatpickr.directive.ts","../../../projects/angularx-flatpickr/src/lib/flatpickr.module.ts","../../../projects/angularx-flatpickr/src/public-api.ts","../../../projects/angularx-flatpickr/src/angularx-flatpickr.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport type DisableEnableDate =\n | string\n | Date\n | { from: Date | string; to: Date | string }\n | ((date: Date) => boolean);\n\nexport interface FlatpickrDefaultsInterface {\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n altFormat?: string;\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n altInput?: boolean;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n altInputClass?: string;\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n allowInput?: boolean;\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n allowInvalidPreload?: boolean;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n appendTo?: HTMLElement;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n ariaDateFormat?: string;\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n clickOpens?: boolean;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n dateFormat?: string;\n /**\n * Initial value of the hour element.\n */\n defaultHour?: number;\n /**\n * Initial value of the minute element.\n */\n defaultMinute?: number;\n /**\n * Initial value of the seconds element.\n */\n defaultSeconds?: number;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n disable?: DisableEnableDate[];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n disableMobile?: boolean;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n enable?: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n enableTime?: boolean;\n\n /**\n * Enables seconds in the time picker.\n */\n enableSeconds?: boolean;\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n formatDate?: (value: any) => string;\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n hourIncrement?: number;\n\n /**\n * Displays the calendar inline.\n */\n inline?: boolean;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n maxDate?: string | Date;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n minDate?: string | Date;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n maxTime?: string;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n minTime?: string;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n minuteIncrement?: number;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n mode?: 'single' | 'multiple' | 'range';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n nextArrow?: string;\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n noCalendar?: boolean;\n\n /**\n * Provide a date for 'today', which will be used instead of \"new Date()\"\n */\n now?: Date | string | number;\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n parseDate?: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n prevArrow?: string;\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n shorthandCurrentMonth?: boolean;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n static?: boolean;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n time24hr?: boolean;\n\n /**\n * When true, dates will parsed, formatted, and displayed in UTC.\n * It's recommended that date strings contain the timezone, but not necessary.\n */\n utc?: boolean;\n\n /**\n * Enables display of week numbers in calendar.\n */\n weekNumbers?: boolean;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n getWeek?: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n wrap?: boolean;\n\n /**\n * Array of plugin instances to use.\n */\n plugins?: any[];\n\n /**\n * The locale object or string to use for the locale.\n */\n locale?: object | string;\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n convertModelValue?: boolean;\n\n /**\n * The number of months shown.\n */\n showMonths?: number;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n monthSelectorType?: 'static' | 'dropdown';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n ignoredFocusElements?: HTMLElement[];\n}\n\n@Injectable()\nexport class FlatpickrDefaults implements FlatpickrDefaultsInterface {\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n altFormat: string = 'F j, Y';\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n altInput: boolean = false;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n altInputClass: string = '';\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n allowInput: boolean = false;\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n allowInvalidPreload: boolean = false;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n appendTo: HTMLElement | undefined = undefined;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n ariaDateFormat?: string = 'F j, Y';\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n clickOpens: boolean = true;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n dateFormat: string = 'Y-m-d';\n\n /**\n * Initial value of the hour element.\n */\n defaultHour?: number = 12;\n\n /**\n * Initial value of the minute element.\n */\n defaultMinute?: number = 0;\n\n /**\n * Initial value of the seconds element.\n */\n defaultSeconds?: number = 0;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n disable: DisableEnableDate[] = [];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n disableMobile: boolean = false;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n enable: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n enableTime: boolean = false;\n\n /**\n * Enables seconds in the time picker.\n */\n enableSeconds: boolean = false;\n\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n formatDate?: (value: any) => string = undefined;\n\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n hourIncrement: number = 1;\n\n /**\n * Displays the calendar inline.\n */\n inline: boolean = false;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n maxDate: string | Date | undefined = undefined;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n minDate: string | Date | undefined = undefined;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n maxTime: string | undefined = undefined;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n minTime: string | undefined = undefined;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n minuteIncrement: number = 5;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n mode: 'single' | 'multiple' | 'range' = 'single';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n nextArrow: string = '>';\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n noCalendar: boolean = false;\n\n /**\n * Default now to the current date\n */\n now: Date | string | number = new Date();\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n parseDate: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n prevArrow: string = '<';\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n shorthandCurrentMonth: boolean = false;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n static: boolean = false;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n time24hr: boolean = false;\n\n /**\n * When true, dates will parsed, formatted, and displayed in UTC.\n * It's recommended that date strings contain the timezone, but not necessary.\n */\n utc: boolean = false;\n\n /**\n * Enables display of week numbers in calendar.\n */\n weekNumbers: boolean = false;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n getWeek: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n wrap: boolean = false;\n\n /**\n * Array of plugin instances to use.\n */\n plugins: any[] = [];\n\n /**\n * The locale object or string to use for the locale.\n */\n locale: object | string = 'default';\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n convertModelValue: boolean = false;\n\n /**\n * The number of months shown.\n */\n showMonths: number = 1;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n monthSelectorType: 'static' | 'dropdown' = 'static';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n ignoredFocusElements: HTMLElement[] = [];\n}\n","import {\n Directive,\n ElementRef,\n AfterViewInit,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n forwardRef,\n HostListener,\n Renderer2,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport {\n FlatpickrDefaults,\n DisableEnableDate,\n FlatpickrDefaultsInterface,\n} from './flatpickr-defaults.service';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport flatpickr from 'flatpickr';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport interface FlatPickrOutputOptions {\n selectedDates: Date[];\n dateString: string;\n instance: any;\n}\n\nexport interface FlatPickrDayCreateOutputOptions\n extends FlatPickrOutputOptions {\n dayElement: HTMLElement;\n}\n\nexport const FLATPICKR_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatpickrDirective),\n multi: true,\n};\n\n@Directive({\n selector: '[mwlFlatpickr]',\n providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],\n exportAs: 'mwlFlatpickr',\n})\nexport class FlatpickrDirective\n implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor\n{\n /**\n * Object-options that can be user for multiple instances of Flatpickr.\n * Option from this object is applied only if specific option is not specified.\n * Example:\n * ```typescript\n * options: FlatpickrDefaultsInterface = {\n * altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute\n * altInput: true // will be used since specific attribute is not provided\n * };\n * ```\n * ```html\n * <input\n * class=\"form-control\"\n * type=\"text\"\n * mwlFlatpickr\n * [options]=\"options\"\n * altFormat=\"d/m/Y\">\n * ```\n */\n @Input() options: FlatpickrDefaultsInterface = {};\n\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n @Input() altFormat: string;\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n @Input() altInput: boolean;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n @Input() altInputClass: string;\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n @Input() allowInput: boolean;\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n @Input() allowInvalidPreload: boolean;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n @Input() appendTo: HTMLElement;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n @Input() ariaDateFormat?: string;\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n @Input() clickOpens: boolean;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n @Input() dateFormat: string;\n\n /**\n * Initial value of the hour element.\n */\n @Input() defaultHour?: number;\n /**\n * Initial value of the minute element.\n */\n @Input() defaultMinute?: number;\n\n /**\n * Initial value of the seconds element.\n */\n @Input() defaultSeconds?: number;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n @Input() disable: DisableEnableDate[];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n @Input() disableMobile: boolean;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n @Input() enable: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n @Input() enableTime: boolean;\n\n /**\n * Enables seconds in the time picker.\n */\n @Input() enableSeconds: boolean;\n\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n @Input() formatDate?: (value: any) => string;\n\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n @Input() hourIncrement: number;\n\n /**\n * Displays the calendar inline.\n */\n @Input() inline: boolean;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n @Input() maxDate: string | Date;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n @Input() minDate: string | Date;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n @Input() maxTime: string;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n @Input() minTime: string;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n @Input() minuteIncrement: number;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n @Input() mode: 'single' | 'multiple' | 'range';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n @Input() nextArrow: string;\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n @Input() noCalendar: boolean;\n\n /**\n * Provide a date for 'today', which will be used instead of \"new Date()\"\n */\n @Input() now?: Date | string | number;\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n @Input() parseDate: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n @Input() prevArrow: string;\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n @Input() shorthandCurrentMonth: boolean;\n\n /**\n * The number of months shown.\n */\n @Input() showMonths: number;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n @Input() static: boolean;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n @Input() time24hr: boolean;\n\n /**\n * Enables display of week numbers in calendar.\n */\n @Input() weekNumbers: boolean;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n @Input() getWeek: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n @Input() wrap: boolean;\n\n /**\n * Array of plugin instances to use.\n */\n @Input() plugins: any[];\n\n /**\n * The locale object or string to use for the locale.\n */\n @Input() locale: object | string;\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n @Input() convertModelValue: boolean;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n @Input() monthSelectorType: 'static' | 'dropdown';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n @Input() ignoredFocusElements: HTMLElement[] = [];\n\n /**\n * Gets triggered once the calendar is in a ready state\n */\n @Output()\n flatpickrReady: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the user selects a date, or changes the time on a selected date.\n */\n @Output()\n flatpickrChange: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the input value is updated with a new date string.\n */\n @Output()\n flatpickrValueUpdate: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Gets triggered when the calendar is opened.\n */\n @Output()\n flatpickrOpen: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the calendar is closed.\n */\n @Output()\n flatpickrClose: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the month is changed, either by the user or programmatically.\n */\n @Output()\n flatpickrMonthChange: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Gets triggered when the year is changed, either by the user or programmatically.\n */\n @Output()\n flatpickrYearChange: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Take full control of every date cell with this output\n */\n @Output()\n flatpickrDayCreate: EventEmitter<FlatPickrDayCreateOutputOptions> =\n new EventEmitter();\n\n /**\n * The flatpickr instance where you can call methods like toggle(), open(), close() etc\n */\n instance: flatpickr.Instance;\n\n private isDisabled = false;\n private initialValue: any;\n\n onChangeFn: (value: any) => void = () => {};\n\n @HostListener('blur')\n onTouchedFn = () => {};\n\n constructor(\n private elm: ElementRef,\n private defaults: FlatpickrDefaults,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: Object,\n ) {}\n\n ngAfterViewInit(): void {\n const options: any = {\n altFormat: this.altFormat,\n altInput: this.altInput,\n altInputClass: this.altInputClass,\n allowInput: this.allowInput,\n allowInvalidPreload: this.allowInvalidPreload,\n appendTo: this.appendTo,\n ariaDateFormat: this.ariaDateFormat,\n clickOpens: this.clickOpens,\n dateFormat: this.dateFormat,\n defaultHour: this.defaultHour,\n defaultMinute: this.defaultMinute,\n defaultSeconds: this.defaultSeconds,\n disable: this.disable,\n disableMobile: this.disableMobile,\n enable: this.enable,\n enableTime: this.enableTime,\n enableSeconds: this.enableSeconds,\n formatDate: this.formatDate,\n hourIncrement: this.hourIncrement,\n defaultDate: this.initialValue,\n inline: this.inline,\n maxDate: this.maxDate,\n minDate: this.minDate,\n maxTime: this.maxTime,\n minTime: this.minTime,\n minuteIncrement: this.minuteIncrement,\n mode: this.mode,\n nextArrow: this.nextArrow,\n noCalendar: this.noCalendar,\n now: this.now,\n parseDate: this.parseDate,\n prevArrow: this.prevArrow,\n shorthandCurrentMonth: this.shorthandCurrentMonth,\n showMonths: this.showMonths,\n monthSelectorType: this.monthSelectorType,\n static: this.static,\n time24hr: this.time24hr,\n weekNumbers: this.weekNumbers,\n getWeek: this.getWeek,\n wrap: this.wrap,\n plugins: this.plugins,\n locale: this.locale,\n ignoredFocusElements: this.ignoredFocusElements,\n onChange: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrChange.emit({ selectedDates, dateString, instance });\n },\n onOpen: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrOpen.emit({ selectedDates, dateString, instance });\n },\n onClose: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrClose.emit({ selectedDates, dateString, instance });\n },\n onMonthChange: (\n selectedDates: Date[],\n dateString: string,\n instance: any,\n ) => {\n this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });\n },\n onYearChange: (\n selectedDates: Date[],\n dateString: string,\n instance: any,\n ) => {\n this.flatpickrYearChange.emit({ selectedDates, dateString, instance });\n },\n onReady: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrReady.emit({ selectedDates, dateString, instance });\n },\n onValueUpdate: (\n selectedDates: Date[],\n dateString: string,\n instance: any,\n ) => {\n this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });\n },\n onDayCreate: (\n selectedDates: Date[],\n dateString: string,\n instance: any,\n dayElement: HTMLElement,\n ) => {\n this.flatpickrDayCreate.emit({\n selectedDates,\n dateString,\n instance,\n dayElement,\n });\n },\n };\n\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === 'undefined') {\n if (typeof (this.options as any)[key] !== 'undefined') {\n options[key] = (this.options as any)[key];\n } else {\n options[key] = (this.defaults as any)[key];\n }\n }\n });\n\n // @ts-ignore\n options.time_24hr = options.time24hr;\n\n // workaround bug in flatpickr 4.6 where it doesn't copy the classes across\n // TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released\n options.altInputClass =\n (options.altInputClass || '') + ' ' + this.elm.nativeElement.className;\n\n if (!options.enable) {\n delete options.enable;\n }\n\n if (isPlatformBrowser(this.platformId)) {\n this.instance = flatpickr(\n this.elm.nativeElement,\n options,\n ) as flatpickr.Instance;\n this.setDisabledState(this.isDisabled);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.instance) {\n Object.keys(changes).forEach((inputKey) => {\n this.instance.set(inputKey as any, (this as any)[inputKey]);\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.instance) {\n this.instance.destroy();\n }\n }\n\n writeValue(value: any): void {\n let convertedValue: any = value;\n if (this.convertModelValue && this.mode === 'range' && value) {\n convertedValue = [value.from, value.to];\n }\n\n if (this.instance) {\n this.instance.setDate(convertedValue);\n } else {\n // flatpickr hasn't been initialised yet, store the value for later use\n this.initialValue = convertedValue;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n if (this.instance) {\n if (this.isDisabled) {\n this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');\n } else {\n this.renderer.removeAttribute(this.instance._input, 'disabled');\n }\n }\n }\n\n @HostListener('input')\n inputChanged(): void {\n const value: string = this.elm.nativeElement.value;\n if (this.convertModelValue && typeof value === 'string') {\n switch (this.mode) {\n case 'multiple':\n const dates: Array<Date | undefined> = value\n .split('; ')\n .map((str) =>\n this.instance.parseDate(\n str,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime,\n ),\n );\n this.onChangeFn(dates);\n break;\n\n case 'range':\n const [from, to] = value\n .split(this.instance.l10n.rangeSeparator)\n .map((str) =>\n this.instance.parseDate(\n str,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime,\n ),\n );\n this.onChangeFn({ from, to });\n break;\n\n case 'single':\n default:\n this.onChangeFn(\n this.instance.parseDate(\n value,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime,\n ),\n );\n }\n } else {\n this.onChangeFn(value);\n }\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n InjectionToken,\n Provider,\n} from '@angular/core';\nimport { FlatpickrDirective } from './flatpickr.directive';\nimport {\n FlatpickrDefaults,\n FlatpickrDefaultsInterface,\n} from './flatpickr-defaults.service';\n\nexport const USER_DEFAULTS = new InjectionToken('flatpickr defaults');\n\nexport function defaultsFactory(\n userDefaults: FlatpickrDefaultsInterface,\n): FlatpickrDefaults {\n const defaults: FlatpickrDefaults = new FlatpickrDefaults();\n Object.assign(defaults, userDefaults);\n return defaults;\n}\n\n@NgModule({\n declarations: [FlatpickrDirective],\n exports: [FlatpickrDirective],\n})\nexport class FlatpickrModule {\n static forRoot(\n userDefaults: FlatpickrDefaultsInterface = {},\n ): ModuleWithProviders<FlatpickrModule> {\n return {\n ngModule: FlatpickrModule,\n providers: [\n {\n provide: USER_DEFAULTS,\n useValue: userDefaults,\n },\n {\n provide: FlatpickrDefaults,\n useFactory: defaultsFactory,\n deps: [USER_DEFAULTS],\n },\n ],\n };\n }\n}\n","/*\n * Public API Surface of angularx-flatpickr\n */\n\nexport * from './lib/flatpickr.module';\nexport {\n FlatpickrDefaults,\n FlatpickrDefaultsInterface,\n} from './lib/flatpickr-defaults.service';\nexport { FlatpickrDirective } from './lib/flatpickr.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
+15
-0

@@ -5,2 +5,17 @@ # Changelog

## [8.0.0](https://github.com/mattlewis92/angularx-flatpickr/compare/v7.3.0...v8.0.0) (2024-08-21)
### ⚠ BREAKING CHANGES
* support for angular 16 has been removed. Please use this package with angular 17 or higher
* support for angular 15 has been removed. Please use this package with angular 16 or higher
* support for angular 14 has been removed. Please use this package with angular 15 or higher
### Features
* upgrade angular v16 ([#54](https://github.com/mattlewis92/angularx-flatpickr/issues/54)) ([ece59d4](https://github.com/mattlewis92/angularx-flatpickr/commit/ece59d44bc0e07f2fe4e413e955725a4b5b4c937))
* upgrade angular v17 ([#55](https://github.com/mattlewis92/angularx-flatpickr/issues/55)) ([0ef8674](https://github.com/mattlewis92/angularx-flatpickr/commit/0ef86743567b009c1b078a4ecd798f2df693292f))
* upgrade to Angular 15 ([#53](https://github.com/mattlewis92/angularx-flatpickr/issues/53)) ([e15af4a](https://github.com/mattlewis92/angularx-flatpickr/commit/e15af4a7342365ac27c2868162ccd9490b1a8958))
## [7.3.0](https://github.com/mattlewis92/angularx-flatpickr/compare/v7.2.0...v7.3.0) (2023-04-26)

@@ -7,0 +22,0 @@

+1
-1
import * as i0 from "@angular/core";
export declare type DisableEnableDate = string | Date | {
export type DisableEnableDate = string | Date | {
from: Date | string;

@@ -4,0 +4,0 @@ to: Date | string;

@@ -19,2 +19,3 @@ import { ElementRef, AfterViewInit, EventEmitter, OnChanges, SimpleChanges, OnDestroy, Renderer2 } from '@angular/core';

private renderer;
private platformId;
/**

@@ -257,3 +258,3 @@ * Object-options that can be user for multiple instances of Flatpickr.

onTouchedFn: () => void;
constructor(elm: ElementRef, defaults: FlatpickrDefaults, renderer: Renderer2);
constructor(elm: ElementRef, defaults: FlatpickrDefaults, renderer: Renderer2, platformId: Object);
ngAfterViewInit(): void;

@@ -268,3 +269,3 @@ ngOnChanges(changes: SimpleChanges): void;

static ɵfac: i0.ɵɵFactoryDeclaration<FlatpickrDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<FlatpickrDirective, "[mwlFlatpickr]", ["mwlFlatpickr"], { "options": "options"; "altFormat": "altFormat"; "altInput": "altInput"; "altInputClass": "altInputClass"; "allowInput": "allowInput"; "allowInvalidPreload": "allowInvalidPreload"; "appendTo": "appendTo"; "ariaDateFormat": "ariaDateFormat"; "clickOpens": "clickOpens"; "dateFormat": "dateFormat"; "defaultHour": "defaultHour"; "defaultMinute": "defaultMinute"; "defaultSeconds": "defaultSeconds"; "disable": "disable"; "disableMobile": "disableMobile"; "enable": "enable"; "enableTime": "enableTime"; "enableSeconds": "enableSeconds"; "formatDate": "formatDate"; "hourIncrement": "hourIncrement"; "inline": "inline"; "maxDate": "maxDate"; "minDate": "minDate"; "maxTime": "maxTime"; "minTime": "minTime"; "minuteIncrement": "minuteIncrement"; "mode": "mode"; "nextArrow": "nextArrow"; "noCalendar": "noCalendar"; "now": "now"; "parseDate": "parseDate"; "prevArrow": "prevArrow"; "shorthandCurrentMonth": "shorthandCurrentMonth"; "showMonths": "showMonths"; "static": "static"; "time24hr": "time24hr"; "weekNumbers": "weekNumbers"; "getWeek": "getWeek"; "wrap": "wrap"; "plugins": "plugins"; "locale": "locale"; "convertModelValue": "convertModelValue"; "monthSelectorType": "monthSelectorType"; "ignoredFocusElements": "ignoredFocusElements"; }, { "flatpickrReady": "flatpickrReady"; "flatpickrChange": "flatpickrChange"; "flatpickrValueUpdate": "flatpickrValueUpdate"; "flatpickrOpen": "flatpickrOpen"; "flatpickrClose": "flatpickrClose"; "flatpickrMonthChange": "flatpickrMonthChange"; "flatpickrYearChange": "flatpickrYearChange"; "flatpickrDayCreate": "flatpickrDayCreate"; }, never, never, false>;
static ɵdir: i0.ɵɵDirectiveDeclaration<FlatpickrDirective, "[mwlFlatpickr]", ["mwlFlatpickr"], { "options": { "alias": "options"; "required": false; }; "altFormat": { "alias": "altFormat"; "required": false; }; "altInput": { "alias": "altInput"; "required": false; }; "altInputClass": { "alias": "altInputClass"; "required": false; }; "allowInput": { "alias": "allowInput"; "required": false; }; "allowInvalidPreload": { "alias": "allowInvalidPreload"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "ariaDateFormat": { "alias": "ariaDateFormat"; "required": false; }; "clickOpens": { "alias": "clickOpens"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "defaultHour": { "alias": "defaultHour"; "required": false; }; "defaultMinute": { "alias": "defaultMinute"; "required": false; }; "defaultSeconds": { "alias": "defaultSeconds"; "required": false; }; "disable": { "alias": "disable"; "required": false; }; "disableMobile": { "alias": "disableMobile"; "required": false; }; "enable": { "alias": "enable"; "required": false; }; "enableTime": { "alias": "enableTime"; "required": false; }; "enableSeconds": { "alias": "enableSeconds"; "required": false; }; "formatDate": { "alias": "formatDate"; "required": false; }; "hourIncrement": { "alias": "hourIncrement"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxTime": { "alias": "maxTime"; "required": false; }; "minTime": { "alias": "minTime"; "required": false; }; "minuteIncrement": { "alias": "minuteIncrement"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "nextArrow": { "alias": "nextArrow"; "required": false; }; "noCalendar": { "alias": "noCalendar"; "required": false; }; "now": { "alias": "now"; "required": false; }; "parseDate": { "alias": "parseDate"; "required": false; }; "prevArrow": { "alias": "prevArrow"; "required": false; }; "shorthandCurrentMonth": { "alias": "shorthandCurrentMonth"; "required": false; }; "showMonths": { "alias": "showMonths"; "required": false; }; "static": { "alias": "static"; "required": false; }; "time24hr": { "alias": "time24hr"; "required": false; }; "weekNumbers": { "alias": "weekNumbers"; "required": false; }; "getWeek": { "alias": "getWeek"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "plugins": { "alias": "plugins"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "convertModelValue": { "alias": "convertModelValue"; "required": false; }; "monthSelectorType": { "alias": "monthSelectorType"; "required": false; }; "ignoredFocusElements": { "alias": "ignoredFocusElements"; "required": false; }; }, { "flatpickrReady": "flatpickrReady"; "flatpickrChange": "flatpickrChange"; "flatpickrValueUpdate": "flatpickrValueUpdate"; "flatpickrOpen": "flatpickrOpen"; "flatpickrClose": "flatpickrClose"; "flatpickrMonthChange": "flatpickrMonthChange"; "flatpickrYearChange": "flatpickrYearChange"; "flatpickrDayCreate": "flatpickrDayCreate"; }, never, never, false, never>;
}
{
"name": "angularx-flatpickr",
"version": "7.3.0",
"description": "An angular 14.0+ wrapper for flatpickr",
"version": "8.0.0",
"description": "An angular 17.0+ wrapper for flatpickr",
"repository": {

@@ -24,4 +24,4 @@ "type": "git",

"peerDependencies": {
"@angular/core": ">=5.0.0",
"@angular/forms": ">=5.0.0",
"@angular/core": ">=17.0.0",
"@angular/forms": ">=17.0.0",
"flatpickr": "^4.5.0"

@@ -34,8 +34,3 @@ },

},
"packageManager": "pnpm@7.30.1",
"module": "fesm2015/angularx-flatpickr.mjs",
"es2020": "fesm2020/angularx-flatpickr.mjs",
"esm2020": "esm2020/angularx-flatpickr.mjs",
"fesm2020": "fesm2020/angularx-flatpickr.mjs",
"fesm2015": "fesm2015/angularx-flatpickr.mjs",
"module": "fesm2022/angularx-flatpickr.mjs",
"typings": "index.d.ts",

@@ -48,7 +43,5 @@ "exports": {

"types": "./index.d.ts",
"esm2020": "./esm2020/angularx-flatpickr.mjs",
"es2020": "./fesm2020/angularx-flatpickr.mjs",
"es2015": "./fesm2015/angularx-flatpickr.mjs",
"node": "./fesm2015/angularx-flatpickr.mjs",
"default": "./fesm2020/angularx-flatpickr.mjs"
"esm2022": "./esm2022/angularx-flatpickr.mjs",
"esm": "./esm2022/angularx-flatpickr.mjs",
"default": "./fesm2022/angularx-flatpickr.mjs"
}

@@ -55,0 +48,0 @@ },

export * from './lib/flatpickr.module';
export { FlatpickrDefaults, FlatpickrDefaultsInterface } from './lib/flatpickr-defaults.service';
export { FlatpickrDefaults, FlatpickrDefaultsInterface, } from './lib/flatpickr-defaults.service';
export { FlatpickrDirective } from './lib/flatpickr.directive';

@@ -23,3 +23,3 @@ # angularx flatpickr

An angular 14.0+ wrapper for flatpickr
An angular 17.0+ wrapper for flatpickr

@@ -55,11 +55,3 @@ ## Installation

@Component({
template: `
<input
type="text"
mwlFlatpickr
[(ngModel)]="selectedDate"
[altInput]="true"
[convertModelValue]="true"
/>
`,
template: ` <input type="text" mwlFlatpickr [(ngModel)]="selectedDate" [altInput]="true" [convertModelValue]="true" /> `,
})

@@ -66,0 +58,0 @@ export class MyComponent {}

/**
* Generated bundle index. Do not edit.
*/
export * from './public-api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhcngtZmxhdHBpY2tyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcngtZmxhdHBpY2tyL3NyYy9hbmd1bGFyeC1mbGF0cGlja3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
export class FlatpickrDefaults {
constructor() {
/**
* Exactly the same as date format, but for the altInput field.
*/
this.altFormat = 'F j, Y';
/**
* Show the user a readable date (as per altFormat), but return something totally different to the server.
*/
this.altInput = false;
/**
* This class will be added to the input element created by the altInput option.
* Note that `altInput` already inherits classes from the original input.
*/
this.altInputClass = '';
/**
* Allows the user to enter a date directly input the input field. By default, direct entry is disabled.
*/
this.allowInput = false;
/**
* Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid
*/
this.allowInvalidPreload = false;
/**
* Instead of `body`, appends the calendar to the specified node instead.
*/
this.appendTo = undefined;
/**
* Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.
*/
this.ariaDateFormat = 'F j, Y';
/**
* Whether clicking on the input should open the picker.
* You could disable this if you wish to open the calendar manually `with.open()`.
*/
this.clickOpens = true;
/**
* A string of characters which are used to define how the date will be displayed in the input box.
* The supported characters are defined in the table below.
*/
this.dateFormat = 'Y-m-d';
/**
* Initial value of the hour element.
*/
this.defaultHour = 12;
/**
* Initial value of the minute element.
*/
this.defaultMinute = 0;
/**
* Initial value of the seconds element.
*/
this.defaultSeconds = 0;
/**
* See <a href="https://chmln.github.io/flatpickr/examples/#disabling-specific-dates">disabling dates</a>.
*/
this.disable = [];
/**
* Set disableMobile to true to always use the non-native picker.
* By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.
*/
this.disableMobile = false;
/**
* Enables time picker.
*/
this.enableTime = false;
/**
* Enables seconds in the time picker.
*/
this.enableSeconds = false;
/**
* Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.
*/
this.formatDate = undefined;
/**
* Adjusts the step for the hour input (incl. scrolling).
*/
this.hourIncrement = 1;
/**
* Displays the calendar inline.
*/
this.inline = false;
/**
* The maximum date that a user can pick to (inclusive).
*/
this.maxDate = undefined;
/**
* The minimum date that a user can start picking from (inclusive).
*/
this.minDate = undefined;
/**
* The maximum time that a user can pick to (inclusive).
*/
this.maxTime = undefined;
/**
* The minimum time that a user can start picking from (inclusive).
*/
this.minTime = undefined;
/**
* Adjusts the step for the minute input (incl. scrolling).
*/
this.minuteIncrement = 5;
/**
* Select a single date, multiple dates or a date range.
*/
this.mode = 'single';
/**
* HTML for the arrow icon, used to switch months.
*/
this.nextArrow = '>';
/**
* Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.
*/
this.noCalendar = false;
/**
* Default now to the current date
*/
this.now = new Date();
/**
* HTML for the left arrow icon.
*/
this.prevArrow = '<';
/**
* Show the month using the shorthand version (ie, Sep instead of September).
*/
this.shorthandCurrentMonth = false;
/**
* Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).
*/
this.static = false;
/**
* Displays time picker in 24 hour mode without AM/PM selection when enabled.
*/
this.time24hr = false;
/**
* When true, dates will parsed, formatted, and displayed in UTC.
* It's recommended that date strings contain the timezone, but not necessary.
*/
this.utc = false;
/**
* Enables display of week numbers in calendar.
*/
this.weekNumbers = false;
/**
* Custom elements and input groups.
*/
this.wrap = false;
/**
* Array of plugin instances to use.
*/
this.plugins = [];
/**
* The locale object or string to use for the locale.
*/
this.locale = 'default';
/**
* Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`
*/
this.convertModelValue = false;
/**
* The number of months shown.
*/
this.showMonths = 1;
/**
* How the month should be displayed in the header of the calendar.
*/
this.monthSelectorType = 'static';
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
}
}
FlatpickrDefaults.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
FlatpickrDefaults.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHBpY2tyLWRlZmF1bHRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyeC1mbGF0cGlja3Ivc3JjL2xpYi9mbGF0cGlja3ItZGVmYXVsdHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXdPM0MsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVFOztXQUVHO1FBQ0gsY0FBUyxHQUFXLFFBQVEsQ0FBQztRQUU3Qjs7V0FFRztRQUNILGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUI7OztXQUdHO1FBQ0gsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFM0I7O1dBRUc7UUFDSCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCOztXQUVHO1FBQ0gsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ0gsYUFBUSxHQUE0QixTQUFTLENBQUM7UUFFOUM7O1dBRUc7UUFDSCxtQkFBYyxHQUFZLFFBQVEsQ0FBQztRQUVuQzs7O1dBR0c7UUFDSCxlQUFVLEdBQVksSUFBSSxDQUFDO1FBRTNCOzs7V0FHRztRQUNILGVBQVUsR0FBVyxPQUFPLENBQUM7UUFFN0I7O1dBRUc7UUFDSCxnQkFBVyxHQUFZLEVBQUUsQ0FBQztRQUUxQjs7V0FFRztRQUNILGtCQUFhLEdBQVksQ0FBQyxDQUFDO1FBRTNCOztXQUVHO1FBQ0gsbUJBQWMsR0FBWSxDQUFDLENBQUM7UUFFNUI7O1dBRUc7UUFDSCxZQUFPLEdBQXdCLEVBQUUsQ0FBQztRQUVsQzs7O1dBR0c7UUFDSCxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQU8vQjs7V0FFRztRQUNILGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFNUI7O1dBRUc7UUFDSCxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQjs7V0FFRztRQUNILGVBQVUsR0FBNEIsU0FBUyxDQUFDO1FBRWhEOztXQUVHO1FBQ0gsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFFMUI7O1dBRUc7UUFDSCxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsWUFBTyxHQUE4QixTQUFTLENBQUM7UUFFL0M7O1dBRUc7UUFDSCxZQUFPLEdBQThCLFNBQVMsQ0FBQztRQUUvQzs7V0FFRztRQUNILFlBQU8sR0FBdUIsU0FBUyxDQUFDO1FBRXhDOztXQUVHO1FBQ0gsWUFBTyxHQUF1QixTQUFTLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUU1Qjs7V0FFRztRQUNILFNBQUksR0FBb0MsUUFBUSxDQUFDO1FBRWpEOztXQUVHO1FBQ0gsY0FBUyxHQUFXLEdBQUcsQ0FBQztRQUV4Qjs7V0FFRztRQUNILGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFNUI7O1dBRUc7UUFDSCxRQUFHLEdBQTJCLElBQUksSUFBSSxFQUFFLENBQUM7UUFPekM7O1dBRUc7UUFDSCxjQUFTLEdBQVcsR0FBRyxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRXZDOztXQUVHO1FBQ0gsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV4Qjs7V0FFRztRQUNILGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUI7OztXQUdHO1FBQ0gsUUFBRyxHQUFZLEtBQUssQ0FBQztRQUVyQjs7V0FFRztRQUNILGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBUTdCOztXQUVHO1FBQ0gsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV0Qjs7V0FFRztRQUNILFlBQU8sR0FBVSxFQUFFLENBQUM7UUFFcEI7O1dBRUc7UUFDSCxXQUFNLEdBQW9CLFNBQVMsQ0FBQztRQUVwQzs7V0FFRztRQUNILHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNILGVBQVUsR0FBVyxDQUFDLENBQUM7UUFFdkI7O1dBRUc7UUFDSCxzQkFBaUIsR0FBMEIsUUFBUSxDQUFDO1FBRXBEOztXQUVHO1FBQ0gseUJBQW9CLEdBQWtCLEVBQUUsQ0FBQztLQUMxQzs7OEdBbE9ZLGlCQUFpQjtrSEFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIERpc2FibGVFbmFibGVEYXRlID1cbiAgfCBzdHJpbmdcbiAgfCBEYXRlXG4gIHwgeyBmcm9tOiBEYXRlIHwgc3RyaW5nOyB0bzogRGF0ZSB8IHN0cmluZyB9XG4gIHwgKChkYXRlOiBEYXRlKSA9PiBib29sZWFuKTtcblxuZXhwb3J0IGludGVyZmFjZSBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSB7XG4gIC8qKlxuICAgKiBFeGFjdGx5IHRoZSBzYW1lIGFzIGRhdGUgZm9ybWF0LCBidXQgZm9yIHRoZSBhbHRJbnB1dCBmaWVsZC5cbiAgICovXG4gIGFsdEZvcm1hdD86IHN0cmluZztcblxuICAvKipcbiAgICogXHRTaG93IHRoZSB1c2VyIGEgcmVhZGFibGUgZGF0ZSAoYXMgcGVyIGFsdEZvcm1hdCksIGJ1dCByZXR1cm4gc29tZXRoaW5nIHRvdGFsbHkgZGlmZmVyZW50IHRvIHRoZSBzZXJ2ZXIuXG4gICAqL1xuICBhbHRJbnB1dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoaXMgY2xhc3Mgd2lsbCBiZSBhZGRlZCB0byB0aGUgaW5wdXQgZWxlbWVudCBjcmVhdGVkIGJ5IHRoZSBhbHRJbnB1dCBvcHRpb24uXG4gICAqIE5vdGUgdGhhdCBgYWx0SW5wdXRgIGFscmVhZHkgaW5oZXJpdHMgY2xhc3NlcyBmcm9tIHRoZSBvcmlnaW5hbCBpbnB1dC5cbiAgICovXG4gIGFsdElucHV0Q2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhIGRhdGUgZGlyZWN0bHkgaW5wdXQgdGhlIGlucHV0IGZpZWxkLiBCeSBkZWZhdWx0LCBkaXJlY3QgZW50cnkgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBhbGxvd0lucHV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIHRoZSBwcmVsb2FkaW5nIG9mIGFuIGludmFsaWQgZGF0ZS4gV2hlbiBkaXNhYmxlZCwgdGhlIGZpZWxkIHdpbGwgYmUgY2xlYXJlZCBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyBpbnZhbGlkXG4gICAqL1xuICBhbGxvd0ludmFsaWRQcmVsb2FkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5zdGVhZCBvZiBgYm9keWAsIGFwcGVuZHMgdGhlIGNhbGVuZGFyIHRvIHRoZSBzcGVjaWZpZWQgbm9kZSBpbnN0ZWFkLlxuICAgKi9cbiAgYXBwZW5kVG8/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogRGVmaW5lcyBob3cgdGhlIGRhdGUgd2lsbCBiZSBmb3JtYXR0ZWQgaW4gdGhlIGFyaWEtbGFiZWwgZm9yIGNhbGVuZGFyIGRheXMsIHVzaW5nIHRoZSBzYW1lIHRva2VucyBhcyBkYXRlRm9ybWF0LiBJZiB5b3UgY2hhbmdlIHRoaXMsIHlvdSBzaG91bGQgY2hvb3NlIGEgdmFsdWUgdGhhdCB3aWxsIG1ha2Ugc2Vuc2UgaWYgYSBzY3JlZW4gcmVhZGVyIHJlYWRzIGl0IG91dCBsb3VkLlxuICAgKi9cbiAgYXJpYURhdGVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpY2tpbmcgb24gdGhlIGlucHV0IHNob3VsZCBvcGVuIHRoZSBwaWNrZXIuXG4gICAqIFlvdSBjb3VsZCBkaXNhYmxlIHRoaXMgaWYgeW91IHdpc2ggdG8gb3BlbiB0aGUgY2FsZW5kYXIgbWFudWFsbHkgYHdpdGgub3BlbigpYC5cbiAgICovXG4gIGNsaWNrT3BlbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHdoaWNoIGFyZSB1c2VkIHRvIGRlZmluZSBob3cgdGhlIGRhdGUgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlucHV0IGJveC5cbiAgICogVGhlIHN1cHBvcnRlZCBjaGFyYWN0ZXJzIGFyZSBkZWZpbmVkIGluIHRoZSB0YWJsZSBiZWxvdy5cbiAgICovXG4gIGRhdGVGb3JtYXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlIG9mIHRoZSBob3VyIGVsZW1lbnQuXG4gICAqL1xuICBkZWZhdWx0SG91cj86IG51bWJlcjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIG1pbnV0ZSBlbGVtZW50LlxuICAgKi9cbiAgZGVmYXVsdE1pbnV0ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIHNlY29uZHMgZWxlbWVudC5cbiAgICovXG4gIGRlZmF1bHRTZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vY2htbG4uZ2l0aHViLmlvL2ZsYXRwaWNrci9leGFtcGxlcy8jZGlzYWJsaW5nLXNwZWNpZmljLWRhdGVzXCI+ZGlzYWJsaW5nIGRhdGVzPC9hPi5cbiAgICovXG4gIGRpc2FibGU/OiBEaXNhYmxlRW5hYmxlRGF0ZVtdO1xuXG4gIC8qKlxuICAgKiBTZXQgZGlzYWJsZU1vYmlsZSB0byB0cnVlIHRvIGFsd2F5cyB1c2UgdGhlIG5vbi1uYXRpdmUgcGlja2VyLlxuICAgKiBCeSBkZWZhdWx0LCBGbGF0cGlja3IgdXRpbGl6ZXMgbmF0aXZlIGRhdGV0aW1lIHdpZGdldHMgdW5sZXNzIGNlcnRhaW4gb3B0aW9ucyAoZS5nLiBkaXNhYmxlKSBhcmUgdXNlZC5cbiAgICovXG4gIGRpc2FibGVNb2JpbGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vY2htbG4uZ2l0aHViLmlvL2ZsYXRwaWNrci9leGFtcGxlcy8jZGlzYWJsaW5nLWFsbC1kYXRlcy1leGNlcHQtc2VsZWN0LWZld1wiPmVuYWJsaW5nIGRhdGVzPC9hPi5cbiAgICovXG4gIGVuYWJsZT86IERpc2FibGVFbmFibGVEYXRlW107XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgdGltZSBwaWNrZXIuXG4gICAqL1xuICBlbmFibGVUaW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlcyBzZWNvbmRzIGluIHRoZSB0aW1lIHBpY2tlci5cbiAgICovXG4gIGVuYWJsZVNlY29uZHM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHVzaW5nIGEgY3VzdG9tIGRhdGUgZm9ybWF0dGluZyBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiBoYW5kbGluZyBmb3IgZGF0ZSBmb3JtYXRzIHVzaW5nIGRhdGVGb3JtYXQsIGFsdEZvcm1hdCwgZXRjLlxuICAgKi9cbiAgZm9ybWF0RGF0ZT86ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBZGp1c3RzIHRoZSBzdGVwIGZvciB0aGUgaG91ciBpbnB1dCAoaW5jbC4gc2Nyb2xsaW5nKS5cbiAgICovXG4gIGhvdXJJbmNyZW1lbnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRoZSBjYWxlbmRhciBpbmxpbmUuXG4gICAqL1xuICBpbmxpbmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgYSB1c2VyIGNhbiBwaWNrIHRvIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWF4RGF0ZT86IHN0cmluZyB8IERhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGRhdGUgdGhhdCBhIHVzZXIgY2FuIHN0YXJ0IHBpY2tpbmcgZnJvbSAoaW5jbHVzaXZlKS5cbiAgICovXG4gIG1pbkRhdGU/OiBzdHJpbmcgfCBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRoYXQgYSB1c2VyIGNhbiBwaWNrIHRvIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWF4VGltZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gdGltZSB0aGF0IGEgdXNlciBjYW4gc3RhcnQgcGlja2luZyBmcm9tIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWluVGltZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRqdXN0cyB0aGUgc3RlcCBmb3IgdGhlIG1pbnV0ZSBpbnB1dCAoaW5jbC4gc2Nyb2xsaW5nKS5cbiAgICovXG4gIG1pbnV0ZUluY3JlbWVudD86IG51bWJlcjtcblxuICAvKipcbiAgICogU2VsZWN0IGEgc2luZ2xlIGRhdGUsIG11bHRpcGxlIGRhdGVzIG9yIGEgZGF0ZSByYW5nZS5cbiAgICovXG4gIG1vZGU/OiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgfCAncmFuZ2UnO1xuXG4gIC8qKlxuICAgKiBIVE1MIGZvciB0aGUgYXJyb3cgaWNvbiwgdXNlZCB0byBzd2l0Y2ggbW9udGhzLlxuICAgKi9cbiAgbmV4dEFycm93Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgZGF5IHNlbGVjdGlvbiBpbiBjYWxlbmRhci4gVXNlIGl0IGFsb25nIHdpdGggYGVuYWJsZVRpbWVgIHRvIGNyZWF0ZSBhIHRpbWUgcGlja2VyLlxuICAgKi9cbiAgbm9DYWxlbmRhcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBkYXRlIGZvciAndG9kYXknLCB3aGljaCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBcIm5ldyBEYXRlKClcIlxuICAgKi9cbiAgbm93PzogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBleHBlY3RzIGEgZGF0ZSBzdHJpbmcgYW5kIG11c3QgcmV0dXJuIGEgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBwYXJzZURhdGU/OiAoc3RyOiBzdHJpbmcpID0+IERhdGU7XG5cbiAgLyoqXG4gICAqIEhUTUwgZm9yIHRoZSBsZWZ0IGFycm93IGljb24uXG4gICAqL1xuICBwcmV2QXJyb3c/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNob3cgdGhlIG1vbnRoIHVzaW5nIHRoZSBzaG9ydGhhbmQgdmVyc2lvbiAoaWUsIFNlcCBpbnN0ZWFkIG9mIFNlcHRlbWJlcikuXG4gICAqL1xuICBzaG9ydGhhbmRDdXJyZW50TW9udGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiB0aGUgY2FsZW5kYXIgaW5zaWRlIHRoZSB3cmFwcGVyIGFuZCBuZXh0IHRvIHRoZSBpbnB1dCBlbGVtZW50LiAoTGVhdmUgYGZhbHNlYCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcpLlxuICAgKi9cbiAgc3RhdGljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzcGxheXMgdGltZSBwaWNrZXIgaW4gMjQgaG91ciBtb2RlIHdpdGhvdXQgQU0vUE0gc2VsZWN0aW9uIHdoZW4gZW5hYmxlZC5cbiAgICovXG4gIHRpbWUyNGhyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiB0cnVlLCBkYXRlcyB3aWxsIHBhcnNlZCwgZm9ybWF0dGVkLCBhbmQgZGlzcGxheWVkIGluIFVUQy5cbiAgICogSXQncyByZWNvbW1lbmRlZCB0aGF0IGRhdGUgc3RyaW5ncyBjb250YWluIHRoZSB0aW1lem9uZSwgYnV0IG5vdCBuZWNlc3NhcnkuXG4gICAqL1xuICB1dGM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGRpc3BsYXkgb2Ygd2VlayBudW1iZXJzIGluIGNhbGVuZGFyLlxuICAgKi9cbiAgd2Vla051bWJlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBZb3UgbWF5IG92ZXJyaWRlIHRoZSBmdW5jdGlvbiB0aGF0IGV4dHJhY3RzIHRoZSB3ZWVrIG51bWJlcnMgZnJvbSBhIERhdGUgYnkgc3VwcGx5aW5nIGEgZ2V0V2VlayBmdW5jdGlvbi5cbiAgICogSXQgdGFrZXMgaW4gYSBkYXRlIGFzIGEgcGFyYW1ldGVyIGFuZCBzaG91bGQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyBzdHJpbmcgdGhhdCB5b3Ugd2FudCB0byBhcHBlYXIgbGVmdCBvZiBldmVyeSB3ZWVrLlxuICAgKi9cbiAgZ2V0V2Vlaz86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBlbGVtZW50cyBhbmQgaW5wdXQgZ3JvdXBzLlxuICAgKi9cbiAgd3JhcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHBsdWdpbiBpbnN0YW5jZXMgdG8gdXNlLlxuICAgKi9cbiAgcGx1Z2lucz86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYWxlIG9iamVjdCBvciBzdHJpbmcgdG8gdXNlIGZvciB0aGUgbG9jYWxlLlxuICAgKi9cbiAgbG9jYWxlPzogb2JqZWN0IHwgc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRvIGNvbnZlcnQgdGhlIG5nTW9kZWwgdmFsdWUgZnJvbSBhIHN0cmluZyB0byBhIGRhdGUgLyBhcnJheSBvZiBkYXRlcyAvIGZyb20gLSB0byBkYXRlIG9iamVjdCBkZXBlbmRpbmcgb24gdGhlIGBtb2RlYFxuICAgKi9cbiAgY29udmVydE1vZGVsVmFsdWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1vbnRocyBzaG93bi5cbiAgICovXG4gIHNob3dNb250aHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhvdyB0aGUgbW9udGggc2hvdWxkIGJlIGRpc3BsYXllZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIG1vbnRoU2VsZWN0b3JUeXBlPzogJ3N0YXRpYycgfCAnZHJvcGRvd24nO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBIVE1MIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgcGlja2VyIG9uIGNsaWNrLlxuICAgKi9cbiAgaWdub3JlZEZvY3VzRWxlbWVudHM/OiBIVE1MRWxlbWVudFtdO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxhdHBpY2tyRGVmYXVsdHMgaW1wbGVtZW50cyBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSB7XG4gIC8qKlxuICAgKiBFeGFjdGx5IHRoZSBzYW1lIGFzIGRhdGUgZm9ybWF0LCBidXQgZm9yIHRoZSBhbHRJbnB1dCBmaWVsZC5cbiAgICovXG4gIGFsdEZvcm1hdDogc3RyaW5nID0gJ0YgaiwgWSc7XG5cbiAgLyoqXG4gICAqIFx0U2hvdyB0aGUgdXNlciBhIHJlYWRhYmxlIGRhdGUgKGFzIHBlciBhbHRGb3JtYXQpLCBidXQgcmV0dXJuIHNvbWV0aGluZyB0b3RhbGx5IGRpZmZlcmVudCB0byB0aGUgc2VydmVyLlxuICAgKi9cbiAgYWx0SW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhpcyBjbGFzcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBpbnB1dCBlbGVtZW50IGNyZWF0ZWQgYnkgdGhlIGFsdElucHV0IG9wdGlvbi5cbiAgICogTm90ZSB0aGF0IGBhbHRJbnB1dGAgYWxyZWFkeSBpbmhlcml0cyBjbGFzc2VzIGZyb20gdGhlIG9yaWdpbmFsIGlucHV0LlxuICAgKi9cbiAgYWx0SW5wdXRDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhIGRhdGUgZGlyZWN0bHkgaW5wdXQgdGhlIGlucHV0IGZpZWxkLiBCeSBkZWZhdWx0LCBkaXJlY3QgZW50cnkgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBhbGxvd0lucHV0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFsbG93cyB0aGUgcHJlbG9hZGluZyBvZiBhbiBpbnZhbGlkIGRhdGUuIFdoZW4gZGlzYWJsZWQsIHRoZSBmaWVsZCB3aWxsIGJlIGNsZWFyZWQgaWYgdGhlIHByb3ZpZGVkIGRhdGUgaXMgaW52YWxpZFxuICAgKi9cbiAgYWxsb3dJbnZhbGlkUHJlbG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbnN0ZWFkIG9mIGBib2R5YCwgYXBwZW5kcyB0aGUgY2FsZW5kYXIgdG8gdGhlIHNwZWNpZmllZCBub2RlIGluc3RlYWQuXG4gICAqL1xuICBhcHBlbmRUbzogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgaG93IHRoZSBkYXRlIHdpbGwgYmUgZm9ybWF0dGVkIGluIHRoZSBhcmlhLWxhYmVsIGZvciBjYWxlbmRhciBkYXlzLCB1c2luZyB0aGUgc2FtZSB0b2tlbnMgYXMgZGF0ZUZvcm1hdC4gSWYgeW91IGNoYW5nZSB0aGlzLCB5b3Ugc2hvdWxkIGNob29zZSBhIHZhbHVlIHRoYXQgd2lsbCBtYWtlIHNlbnNlIGlmIGEgc2NyZWVuIHJlYWRlciByZWFkcyBpdCBvdXQgbG91ZC5cbiAgICovXG4gIGFyaWFEYXRlRm9ybWF0Pzogc3RyaW5nID0gJ0YgaiwgWSc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpY2tpbmcgb24gdGhlIGlucHV0IHNob3VsZCBvcGVuIHRoZSBwaWNrZXIuXG4gICAqIFlvdSBjb3VsZCBkaXNhYmxlIHRoaXMgaWYgeW91IHdpc2ggdG8gb3BlbiB0aGUgY2FsZW5kYXIgbWFudWFsbHkgYHdpdGgub3BlbigpYC5cbiAgICovXG4gIGNsaWNrT3BlbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHdoaWNoIGFyZSB1c2VkIHRvIGRlZmluZSBob3cgdGhlIGRhdGUgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGlucHV0IGJveC5cbiAgICogVGhlIHN1cHBvcnRlZCBjaGFyYWN0ZXJzIGFyZSBkZWZpbmVkIGluIHRoZSB0YWJsZSBiZWxvdy5cbiAgICovXG4gIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdZLW0tZCc7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIGhvdXIgZWxlbWVudC5cbiAgICovXG4gIGRlZmF1bHRIb3VyPzogbnVtYmVyID0gMTI7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIG1pbnV0ZSBlbGVtZW50LlxuICAgKi9cbiAgZGVmYXVsdE1pbnV0ZT86IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIHNlY29uZHMgZWxlbWVudC5cbiAgICovXG4gIGRlZmF1bHRTZWNvbmRzPzogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogU2VlIDxhIGhyZWY9XCJodHRwczovL2NobWxuLmdpdGh1Yi5pby9mbGF0cGlja3IvZXhhbXBsZXMvI2Rpc2FibGluZy1zcGVjaWZpYy1kYXRlc1wiPmRpc2FibGluZyBkYXRlczwvYT4uXG4gICAqL1xuICBkaXNhYmxlOiBEaXNhYmxlRW5hYmxlRGF0ZVtdID0gW107XG5cbiAgLyoqXG4gICAqIFNldCBkaXNhYmxlTW9iaWxlIHRvIHRydWUgdG8gYWx3YXlzIHVzZSB0aGUgbm9uLW5hdGl2ZSBwaWNrZXIuXG4gICAqIEJ5IGRlZmF1bHQsIEZsYXRwaWNrciB1dGlsaXplcyBuYXRpdmUgZGF0ZXRpbWUgd2lkZ2V0cyB1bmxlc3MgY2VydGFpbiBvcHRpb25zIChlLmcuIGRpc2FibGUpIGFyZSB1c2VkLlxuICAgKi9cbiAgZGlzYWJsZU1vYmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vY2htbG4uZ2l0aHViLmlvL2ZsYXRwaWNrci9leGFtcGxlcy8jZGlzYWJsaW5nLWFsbC1kYXRlcy1leGNlcHQtc2VsZWN0LWZld1wiPmVuYWJsaW5nIGRhdGVzPC9hPi5cbiAgICovXG4gIGVuYWJsZTogRGlzYWJsZUVuYWJsZURhdGVbXTtcblxuICAvKipcbiAgICogRW5hYmxlcyB0aW1lIHBpY2tlci5cbiAgICovXG4gIGVuYWJsZVRpbWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRW5hYmxlcyBzZWNvbmRzIGluIHRoZSB0aW1lIHBpY2tlci5cbiAgICovXG4gIGVuYWJsZVNlY29uZHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQWxsb3dzIHVzaW5nIGEgY3VzdG9tIGRhdGUgZm9ybWF0dGluZyBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiBoYW5kbGluZyBmb3IgZGF0ZSBmb3JtYXRzIHVzaW5nIGRhdGVGb3JtYXQsIGFsdEZvcm1hdCwgZXRjLlxuICAgKi9cbiAgZm9ybWF0RGF0ZT86ICh2YWx1ZTogYW55KSA9PiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEFkanVzdHMgdGhlIHN0ZXAgZm9yIHRoZSBob3VyIGlucHV0IChpbmNsLiBzY3JvbGxpbmcpLlxuICAgKi9cbiAgaG91ckluY3JlbWVudDogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogRGlzcGxheXMgdGhlIGNhbGVuZGFyIGlubGluZS5cbiAgICovXG4gIGlubGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBkYXRlIHRoYXQgYSB1c2VyIGNhbiBwaWNrIHRvIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWF4RGF0ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gZGF0ZSB0aGF0IGEgdXNlciBjYW4gc3RhcnQgcGlja2luZyBmcm9tIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWluRGF0ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0aGF0IGEgdXNlciBjYW4gcGljayB0byAoaW5jbHVzaXZlKS5cbiAgICovXG4gIG1heFRpbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gdGltZSB0aGF0IGEgdXNlciBjYW4gc3RhcnQgcGlja2luZyBmcm9tIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgbWluVGltZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBZGp1c3RzIHRoZSBzdGVwIGZvciB0aGUgbWludXRlIGlucHV0IChpbmNsLiBzY3JvbGxpbmcpLlxuICAgKi9cbiAgbWludXRlSW5jcmVtZW50OiBudW1iZXIgPSA1O1xuXG4gIC8qKlxuICAgKiBTZWxlY3QgYSBzaW5nbGUgZGF0ZSwgbXVsdGlwbGUgZGF0ZXMgb3IgYSBkYXRlIHJhbmdlLlxuICAgKi9cbiAgbW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnIHwgJ3JhbmdlJyA9ICdzaW5nbGUnO1xuXG4gIC8qKlxuICAgKiBIVE1MIGZvciB0aGUgYXJyb3cgaWNvbiwgdXNlZCB0byBzd2l0Y2ggbW9udGhzLlxuICAgKi9cbiAgbmV4dEFycm93OiBzdHJpbmcgPSAnPic7XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBkYXkgc2VsZWN0aW9uIGluIGNhbGVuZGFyLiBVc2UgaXQgYWxvbmcgd2l0aCBgZW5hYmxlVGltZWAgdG8gY3JlYXRlIGEgdGltZSBwaWNrZXIuXG4gICAqL1xuICBub0NhbGVuZGFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbm93IHRvIHRoZSBjdXJyZW50IGRhdGVcbiAgICovXG4gIG5vdzogRGF0ZSB8IHN0cmluZyB8IG51bWJlciA9IG5ldyBEYXRlKCk7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRoYXQgZXhwZWN0cyBhIGRhdGUgc3RyaW5nIGFuZCBtdXN0IHJldHVybiBhIERhdGUgb2JqZWN0LlxuICAgKi9cbiAgcGFyc2VEYXRlOiAoc3RyOiBzdHJpbmcpID0+IERhdGU7XG5cbiAgLyoqXG4gICAqIEhUTUwgZm9yIHRoZSBsZWZ0IGFycm93IGljb24uXG4gICAqL1xuICBwcmV2QXJyb3c6IHN0cmluZyA9ICc8JztcblxuICAvKipcbiAgICogU2hvdyB0aGUgbW9udGggdXNpbmcgdGhlIHNob3J0aGFuZCB2ZXJzaW9uIChpZSwgU2VwIGluc3RlYWQgb2YgU2VwdGVtYmVyKS5cbiAgICovXG4gIHNob3J0aGFuZEN1cnJlbnRNb250aDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbiB0aGUgY2FsZW5kYXIgaW5zaWRlIHRoZSB3cmFwcGVyIGFuZCBuZXh0IHRvIHRoZSBpbnB1dCBlbGVtZW50LiAoTGVhdmUgYGZhbHNlYCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcpLlxuICAgKi9cbiAgc3RhdGljOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRpbWUgcGlja2VyIGluIDI0IGhvdXIgbW9kZSB3aXRob3V0IEFNL1BNIHNlbGVjdGlvbiB3aGVuIGVuYWJsZWQuXG4gICAqL1xuICB0aW1lMjRocjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGRhdGVzIHdpbGwgcGFyc2VkLCBmb3JtYXR0ZWQsIGFuZCBkaXNwbGF5ZWQgaW4gVVRDLlxuICAgKiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgZGF0ZSBzdHJpbmdzIGNvbnRhaW4gdGhlIHRpbWV6b25lLCBidXQgbm90IG5lY2Vzc2FyeS5cbiAgICovXG4gIHV0YzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGRpc3BsYXkgb2Ygd2VlayBudW1iZXJzIGluIGNhbGVuZGFyLlxuICAgKi9cbiAgd2Vla051bWJlcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogWW91IG1heSBvdmVycmlkZSB0aGUgZnVuY3Rpb24gdGhhdCBleHRyYWN0cyB0aGUgd2VlayBudW1iZXJzIGZyb20gYSBEYXRlIGJ5IHN1cHBseWluZyBhIGdldFdlZWsgZnVuY3Rpb24uXG4gICAqIEl0IHRha2VzIGluIGEgZGF0ZSBhcyBhIHBhcmFtZXRlciBhbmQgc2hvdWxkIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgc3RyaW5nIHRoYXQgeW91IHdhbnQgdG8gYXBwZWFyIGxlZnQgb2YgZXZlcnkgd2Vlay5cbiAgICovXG4gIGdldFdlZWs6IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBlbGVtZW50cyBhbmQgaW5wdXQgZ3JvdXBzLlxuICAgKi9cbiAgd3JhcDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBwbHVnaW4gaW5zdGFuY2VzIHRvIHVzZS5cbiAgICovXG4gIHBsdWdpbnM6IGFueVtdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgb2JqZWN0IG9yIHN0cmluZyB0byB1c2UgZm9yIHRoZSBsb2NhbGUuXG4gICAqL1xuICBsb2NhbGU6IG9iamVjdCB8IHN0cmluZyA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogQXV0byBjb252ZXJ0IHRoZSBuZ01vZGVsIHZhbHVlIGZyb20gYSBzdHJpbmcgdG8gYSBkYXRlIC8gYXJyYXkgb2YgZGF0ZXMgLyBmcm9tIC0gdG8gZGF0ZSBvYmplY3QgZGVwZW5kaW5nIG9uIHRoZSBgbW9kZWBcbiAgICovXG4gIGNvbnZlcnRNb2RlbFZhbHVlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgbW9udGhzIHNob3duLlxuICAgKi9cbiAgc2hvd01vbnRoczogbnVtYmVyID0gMTtcblxuICAvKipcbiAgICogSG93IHRoZSBtb250aCBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoZSBoZWFkZXIgb2YgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgbW9udGhTZWxlY3RvclR5cGU6ICdzdGF0aWMnIHwgJ2Ryb3Bkb3duJyA9ICdzdGF0aWMnO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBIVE1MIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgcGlja2VyIG9uIGNsaWNrLlxuICAgKi9cbiAgaWdub3JlZEZvY3VzRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcbn1cbiJdfQ==
import { Directive, Input, Output, EventEmitter, forwardRef, HostListener, } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import flatpickr from 'flatpickr';
import * as i0 from "@angular/core";
import * as i1 from "./flatpickr-defaults.service";
export const FLATPICKR_CONTROL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => FlatpickrDirective),
multi: true,
};
export class FlatpickrDirective {
constructor(elm, defaults, renderer) {
this.elm = elm;
this.defaults = defaults;
this.renderer = renderer;
/**
* Object-options that can be user for multiple instances of Flatpickr.
* Option from this object is applied only if specific option is not specified.
* Example:
* ```typescript
* options: FlatpickrDefaultsInterface = {
* altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute
* altInput: true // will be used since specific attribute is not provided
* };
* ```
* ```html
* <input
* class="form-control"
* type="text"
* mwlFlatpickr
* [options]="options"
* altFormat="d/m/Y">
* ```
*/
this.options = {};
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
/**
* Gets triggered once the calendar is in a ready state
*/
this.flatpickrReady = new EventEmitter();
/**
* Gets triggered when the user selects a date, or changes the time on a selected date.
*/
this.flatpickrChange = new EventEmitter();
/**
* Gets triggered when the input value is updated with a new date string.
*/
this.flatpickrValueUpdate = new EventEmitter();
/**
* Gets triggered when the calendar is opened.
*/
this.flatpickrOpen = new EventEmitter();
/**
* Gets triggered when the calendar is closed.
*/
this.flatpickrClose = new EventEmitter();
/**
* Gets triggered when the month is changed, either by the user or programmatically.
*/
this.flatpickrMonthChange = new EventEmitter();
/**
* Gets triggered when the year is changed, either by the user or programmatically.
*/
this.flatpickrYearChange = new EventEmitter();
/**
* Take full control of every date cell with this output
*/
this.flatpickrDayCreate = new EventEmitter();
this.isDisabled = false;
this.onChangeFn = () => { };
this.onTouchedFn = () => { };
}
ngAfterViewInit() {
const options = {
altFormat: this.altFormat,
altInput: this.altInput,
altInputClass: this.altInputClass,
allowInput: this.allowInput,
allowInvalidPreload: this.allowInvalidPreload,
appendTo: this.appendTo,
ariaDateFormat: this.ariaDateFormat,
clickOpens: this.clickOpens,
dateFormat: this.dateFormat,
defaultHour: this.defaultHour,
defaultMinute: this.defaultMinute,
defaultSeconds: this.defaultSeconds,
disable: this.disable,
disableMobile: this.disableMobile,
enable: this.enable,
enableTime: this.enableTime,
enableSeconds: this.enableSeconds,
formatDate: this.formatDate,
hourIncrement: this.hourIncrement,
defaultDate: this.initialValue,
inline: this.inline,
maxDate: this.maxDate,
minDate: this.minDate,
maxTime: this.maxTime,
minTime: this.minTime,
minuteIncrement: this.minuteIncrement,
mode: this.mode,
nextArrow: this.nextArrow,
noCalendar: this.noCalendar,
now: this.now,
parseDate: this.parseDate,
prevArrow: this.prevArrow,
shorthandCurrentMonth: this.shorthandCurrentMonth,
showMonths: this.showMonths,
monthSelectorType: this.monthSelectorType,
static: this.static,
time24hr: this.time24hr,
weekNumbers: this.weekNumbers,
getWeek: this.getWeek,
wrap: this.wrap,
plugins: this.plugins,
locale: this.locale,
ignoredFocusElements: this.ignoredFocusElements,
onChange: (selectedDates, dateString, instance) => {
this.flatpickrChange.emit({ selectedDates, dateString, instance });
},
onOpen: (selectedDates, dateString, instance) => {
this.flatpickrOpen.emit({ selectedDates, dateString, instance });
},
onClose: (selectedDates, dateString, instance) => {
this.flatpickrClose.emit({ selectedDates, dateString, instance });
},
onMonthChange: (selectedDates, dateString, instance) => {
this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });
},
onYearChange: (selectedDates, dateString, instance) => {
this.flatpickrYearChange.emit({ selectedDates, dateString, instance });
},
onReady: (selectedDates, dateString, instance) => {
this.flatpickrReady.emit({ selectedDates, dateString, instance });
},
onValueUpdate: (selectedDates, dateString, instance) => {
this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });
},
onDayCreate: (selectedDates, dateString, instance, dayElement) => {
this.flatpickrDayCreate.emit({
selectedDates,
dateString,
instance,
dayElement,
});
},
};
Object.keys(options).forEach((key) => {
if (typeof options[key] === 'undefined') {
if (typeof this.options[key] !== 'undefined') {
options[key] = this.options[key];
}
else {
options[key] = this.defaults[key];
}
}
});
// @ts-ignore
options.time_24hr = options.time24hr;
// workaround bug in flatpickr 4.6 where it doesn't copy the classes across
// TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released
options.altInputClass =
(options.altInputClass || '') + ' ' + this.elm.nativeElement.className;
if (!options.enable) {
delete options.enable;
}
this.instance = flatpickr(this.elm.nativeElement, options);
this.setDisabledState(this.isDisabled);
}
ngOnChanges(changes) {
if (this.instance) {
Object.keys(changes).forEach((inputKey) => {
this.instance.set(inputKey, this[inputKey]);
});
}
}
ngOnDestroy() {
if (this.instance) {
this.instance.destroy();
}
}
writeValue(value) {
let convertedValue = value;
if (this.convertModelValue && this.mode === 'range' && value) {
convertedValue = [value.from, value.to];
}
if (this.instance) {
this.instance.setDate(convertedValue);
}
else {
// flatpickr hasn't been initialised yet, store the value for later use
this.initialValue = convertedValue;
}
}
registerOnChange(fn) {
this.onChangeFn = fn;
}
registerOnTouched(fn) {
this.onTouchedFn = fn;
}
setDisabledState(isDisabled) {
this.isDisabled = isDisabled;
if (this.instance) {
if (this.isDisabled) {
this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');
}
else {
this.renderer.removeAttribute(this.instance._input, 'disabled');
}
}
}
inputChanged() {
const value = this.elm.nativeElement.value;
if (this.convertModelValue && typeof value === 'string') {
switch (this.mode) {
case 'multiple':
const dates = value
.split('; ')
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn(dates);
break;
case 'range':
const [from, to] = value
.split(this.instance.l10n.rangeSeparator)
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn({ from, to });
break;
case 'single':
default:
this.onChangeFn(this.instance.parseDate(value, this.instance.config.dateFormat, !this.instance.config.enableTime));
}
}
else {
this.onChangeFn(value);
}
}
}
FlatpickrDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDirective, deps: [{ token: i0.ElementRef }, { token: i1.FlatpickrDefaults }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
FlatpickrDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: FlatpickrDirective, selector: "[mwlFlatpickr]", inputs: { options: "options", altFormat: "altFormat", altInput: "altInput", altInputClass: "altInputClass", allowInput: "allowInput", allowInvalidPreload: "allowInvalidPreload", appendTo: "appendTo", ariaDateFormat: "ariaDateFormat", clickOpens: "clickOpens", dateFormat: "dateFormat", defaultHour: "defaultHour", defaultMinute: "defaultMinute", defaultSeconds: "defaultSeconds", disable: "disable", disableMobile: "disableMobile", enable: "enable", enableTime: "enableTime", enableSeconds: "enableSeconds", formatDate: "formatDate", hourIncrement: "hourIncrement", inline: "inline", maxDate: "maxDate", minDate: "minDate", maxTime: "maxTime", minTime: "minTime", minuteIncrement: "minuteIncrement", mode: "mode", nextArrow: "nextArrow", noCalendar: "noCalendar", now: "now", parseDate: "parseDate", prevArrow: "prevArrow", shorthandCurrentMonth: "shorthandCurrentMonth", showMonths: "showMonths", static: "static", time24hr: "time24hr", weekNumbers: "weekNumbers", getWeek: "getWeek", wrap: "wrap", plugins: "plugins", locale: "locale", convertModelValue: "convertModelValue", monthSelectorType: "monthSelectorType", ignoredFocusElements: "ignoredFocusElements" }, outputs: { flatpickrReady: "flatpickrReady", flatpickrChange: "flatpickrChange", flatpickrValueUpdate: "flatpickrValueUpdate", flatpickrOpen: "flatpickrOpen", flatpickrClose: "flatpickrClose", flatpickrMonthChange: "flatpickrMonthChange", flatpickrYearChange: "flatpickrYearChange", flatpickrDayCreate: "flatpickrDayCreate" }, host: { listeners: { "blur": "onTouchedFn()", "input": "inputChanged()" } }, providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR], exportAs: ["mwlFlatpickr"], usesOnChanges: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDirective, decorators: [{
type: Directive,
args: [{
selector: '[mwlFlatpickr]',
providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],
exportAs: 'mwlFlatpickr',
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FlatpickrDefaults }, { type: i0.Renderer2 }]; }, propDecorators: { options: [{
type: Input
}], altFormat: [{
type: Input
}], altInput: [{
type: Input
}], altInputClass: [{
type: Input
}], allowInput: [{
type: Input
}], allowInvalidPreload: [{
type: Input
}], appendTo: [{
type: Input
}], ariaDateFormat: [{
type: Input
}], clickOpens: [{
type: Input
}], dateFormat: [{
type: Input
}], defaultHour: [{
type: Input
}], defaultMinute: [{
type: Input
}], defaultSeconds: [{
type: Input
}], disable: [{
type: Input
}], disableMobile: [{
type: Input
}], enable: [{
type: Input
}], enableTime: [{
type: Input
}], enableSeconds: [{
type: Input
}], formatDate: [{
type: Input
}], hourIncrement: [{
type: Input
}], inline: [{
type: Input
}], maxDate: [{
type: Input
}], minDate: [{
type: Input
}], maxTime: [{
type: Input
}], minTime: [{
type: Input
}], minuteIncrement: [{
type: Input
}], mode: [{
type: Input
}], nextArrow: [{
type: Input
}], noCalendar: [{
type: Input
}], now: [{
type: Input
}], parseDate: [{
type: Input
}], prevArrow: [{
type: Input
}], shorthandCurrentMonth: [{
type: Input
}], showMonths: [{
type: Input
}], static: [{
type: Input
}], time24hr: [{
type: Input
}], weekNumbers: [{
type: Input
}], getWeek: [{
type: Input
}], wrap: [{
type: Input
}], plugins: [{
type: Input
}], locale: [{
type: Input
}], convertModelValue: [{
type: Input
}], monthSelectorType: [{
type: Input
}], ignoredFocusElements: [{
type: Input
}], flatpickrReady: [{
type: Output
}], flatpickrChange: [{
type: Output
}], flatpickrValueUpdate: [{
type: Output
}], flatpickrOpen: [{
type: Output
}], flatpickrClose: [{
type: Output
}], flatpickrMonthChange: [{
type: Output
}], flatpickrYearChange: [{
type: Output
}], flatpickrDayCreate: [{
type: Output
}], onTouchedFn: [{
type: HostListener,
args: ['blur']
}], inputChanged: [{
type: HostListener,
args: ['input']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHBpY2tyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXJ4LWZsYXRwaWNrci9zcmMvbGliL2ZsYXRwaWNrci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFHVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJWixVQUFVLEVBQ1YsWUFBWSxHQUViLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7OztBQWFsQyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBUTtJQUNuRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7SUFDakQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBT0YsTUFBTSxPQUFPLGtCQUFrQjtJQXFUN0IsWUFDVSxHQUFlLEVBQ2YsUUFBMkIsRUFDM0IsUUFBbUI7UUFGbkIsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQW1CO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFyVDdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FrQkc7UUFDTSxZQUFPLEdBQStCLEVBQUUsQ0FBQztRQXlObEQ7O1dBRUc7UUFDTSx5QkFBb0IsR0FBa0IsRUFBRSxDQUFDO1FBRWxEOztXQUVHO1FBRUgsbUJBQWMsR0FBeUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxRTs7V0FFRztRQUVILG9CQUFlLEdBQXlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0U7O1dBRUc7UUFFSCx5QkFBb0IsR0FDbEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVyQjs7V0FFRztRQUVILGtCQUFhLEdBQXlDLElBQUksWUFB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ZCxNQUFNO2dCQU9QLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFRUCxhQUFhO3NCQURaLE1BQU07Z0JBT1AsY0FBYztzQkFEYixNQUFNO2dCQU9QLG9CQUFvQjtzQkFEbkIsTUFBTTtnQkFRUCxtQkFBbUI7c0JBRGxCLE1BQU07Z0JBUVAsa0JBQWtCO3NCQURqQixNQUFNO2dCQWVQLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxNQUFNO2dCQW1McEIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZsYXRwaWNrckRlZmF1bHRzLFxuICBEaXNhYmxlRW5hYmxlRGF0ZSxcbiAgRmxhdHBpY2tyRGVmYXVsdHNJbnRlcmZhY2UsXG59IGZyb20gJy4vZmxhdHBpY2tyLWRlZmF1bHRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IGZsYXRwaWNrciBmcm9tICdmbGF0cGlja3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZsYXRQaWNrck91dHB1dE9wdGlvbnMge1xuICBzZWxlY3RlZERhdGVzOiBEYXRlW107XG4gIGRhdGVTdHJpbmc6IHN0cmluZztcbiAgaW5zdGFuY2U6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbGF0UGlja3JEYXlDcmVhdGVPdXRwdXRPcHRpb25zXG4gIGV4dGVuZHMgRmxhdFBpY2tyT3V0cHV0T3B0aW9ucyB7XG4gIGRheUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xufVxuXG5leHBvcnQgY29uc3QgRkxBVFBJQ0tSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZsYXRwaWNrckRpcmVjdGl2ZSksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW213bEZsYXRwaWNrcl0nLFxuICBwcm92aWRlcnM6IFtGTEFUUElDS1JfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXG4gIGV4cG9ydEFzOiAnbXdsRmxhdHBpY2tyJyxcbn0pXG5leHBvcnQgY2xhc3MgRmxhdHBpY2tyRGlyZWN0aXZlXG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIC8qKlxuICAgKiBPYmplY3Qtb3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VyIGZvciBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgRmxhdHBpY2tyLlxuICAgKiBPcHRpb24gZnJvbSB0aGlzIG9iamVjdCBpcyBhcHBsaWVkIG9ubHkgaWYgc3BlY2lmaWMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQuXG4gICAqIEV4YW1wbGU6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogb3B0aW9uczogRmxhdHBpY2tyRGVmYXVsdHNJbnRlcmZhY2UgPSB7XG4gICAqICAgICAgYWx0Rm9ybWF0OiAnZC9tL1knLCAgIC8vIHdpbGwgYmUgaWdub3JlZCBzaW5jZSBhbHRGb3JtYXQgaXMgcHJvdmlkZWQgdmlhIHNwZWNpZmljIGF0dHJpYnV0ZVxuICAgKiAgICAgIGFsdElucHV0OiB0cnVlICAgICAgICAvLyB3aWxsIGJlIHVzZWQgc2luY2Ugc3BlY2lmaWMgYXR0cmlidXRlIGlzIG5vdCBwcm92aWRlZFxuICAgKiB9O1xuICAgKiBgYGBcbiAgICogYGBgaHRtbFxuICAgKiA8aW5wdXRcbiAgICogICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAqICAgdHlwZT1cInRleHRcIlxuICAgKiAgIG13bEZsYXRwaWNrclxuICAgKiAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgKiAgIGFsdEZvcm1hdD1cImQvbS9ZXCI+XG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uczogRmxhdHBpY2tyRGVmYXVsdHNJbnRlcmZhY2UgPSB7fTtcblxuICAvKipcbiAgICogRXhhY3RseSB0aGUgc2FtZSBhcyBkYXRlIGZvcm1hdCwgYnV0IGZvciB0aGUgYWx0SW5wdXQgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKSBhbHRGb3JtYXQ6IHN0cmluZztcblxuICAvKipcbiAgICogXHRTaG93IHRoZSB1c2VyIGEgcmVhZGFibGUgZGF0ZSAoYXMgcGVyIGFsdEZvcm1hdCksIGJ1dCByZXR1cm4gc29tZXRoaW5nIHRvdGFsbHkgZGlmZmVyZW50IHRvIHRoZSBzZXJ2ZXIuXG4gICAqL1xuICBASW5wdXQoKSBhbHRJbnB1dDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhpcyBjbGFzcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBpbnB1dCBlbGVtZW50IGNyZWF0ZWQgYnkgdGhlIGFsdElucHV0IG9wdGlvbi5cbiAgICogTm90ZSB0aGF0IGBhbHRJbnB1dGAgYWxyZWFkeSBpbmhlcml0cyBjbGFzc2VzIGZyb20gdGhlIG9yaWdpbmFsIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgYWx0SW5wdXRDbGFzczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYSBkYXRlIGRpcmVjdGx5IGlucHV0IHRoZSBpbnB1dCBmaWVsZC4gQnkgZGVmYXVsdCwgZGlyZWN0IGVudHJ5IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dJbnB1dDogYm9vbGVhbjtcblxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHByZWxvYWRpbmcgb2YgYW4gaW52YWxpZCBkYXRlLiBXaGVuIGRpc2FibGVkLCB0aGUgZmllbGQgd2lsbCBiZSBjbGVhcmVkIGlmIHRoZSBwcm92aWRlZCBkYXRlIGlzIGludmFsaWRcbiAgICovXG4gIEBJbnB1dCgpIGFsbG93SW52YWxpZFByZWxvYWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluc3RlYWQgb2YgYGJvZHlgLCBhcHBlbmRzIHRoZSBjYWxlbmRhciB0byB0aGUgc3BlY2lmaWVkIG5vZGUgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpIGFwcGVuZFRvOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogRGVmaW5lcyBob3cgdGhlIGRhdGUgd2lsbCBiZSBmb3JtYXR0ZWQgaW4gdGhlIGFyaWEtbGFiZWwgZm9yIGNhbGVuZGFyIGRheXMsIHVzaW5nIHRoZSBzYW1lIHRva2VucyBhcyBkYXRlRm9ybWF0LiBJZiB5b3UgY2hhbmdlIHRoaXMsIHlvdSBzaG91bGQgY2hvb3NlIGEgdmFsdWUgdGhhdCB3aWxsIG1ha2Ugc2Vuc2UgaWYgYSBzY3JlZW4gcmVhZGVyIHJlYWRzIGl0IG91dCBsb3VkLlxuICAgKi9cbiAgQElucHV0KCkgYXJpYURhdGVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpY2tpbmcgb24gdGhlIGlucHV0IHNob3VsZCBvcGVuIHRoZSBwaWNrZXIuXG4gICAqIFlvdSBjb3VsZCBkaXNhYmxlIHRoaXMgaWYgeW91IHdpc2ggdG8gb3BlbiB0aGUgY2FsZW5kYXIgbWFudWFsbHkgYHdpdGgub3BlbigpYC5cbiAgICovXG4gIEBJbnB1dCgpIGNsaWNrT3BlbnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgd2hpY2ggYXJlIHVzZWQgdG8gZGVmaW5lIGhvdyB0aGUgZGF0ZSB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgaW5wdXQgYm94LlxuICAgKiBUaGUgc3VwcG9ydGVkIGNoYXJhY3RlcnMgYXJlIGRlZmluZWQgaW4gdGhlIHRhYmxlIGJlbG93LlxuICAgKi9cbiAgQElucHV0KCkgZGF0ZUZvcm1hdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHZhbHVlIG9mIHRoZSBob3VyIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBkZWZhdWx0SG91cj86IG51bWJlcjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgb2YgdGhlIG1pbnV0ZSBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgZGVmYXVsdE1pbnV0ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogSW5pdGlhbCB2YWx1ZSBvZiB0aGUgc2Vjb25kcyBlbGVtZW50LlxuICAgKi9cbiAgQElucHV0KCkgZGVmYXVsdFNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlZSA8YSBocmVmPVwiaHR0cHM6Ly9jaG1sbi5naXRodWIuaW8vZmxhdHBpY2tyL2V4YW1wbGVzLyNkaXNhYmxpbmctc3BlY2lmaWMtZGF0ZXNcIj5kaXNhYmxpbmcgZGF0ZXM8L2E+LlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZTogRGlzYWJsZUVuYWJsZURhdGVbXTtcblxuICAvKipcbiAgICogU2V0IGRpc2FibGVNb2JpbGUgdG8gdHJ1ZSB0byBhbHdheXMgdXNlIHRoZSBub24tbmF0aXZlIHBpY2tlci5cbiAgICogQnkgZGVmYXVsdCwgRmxhdHBpY2tyIHV0aWxpemVzIG5hdGl2ZSBkYXRldGltZSB3aWRnZXRzIHVubGVzcyBjZXJ0YWluIG9wdGlvbnMgKGUuZy4gZGlzYWJsZSkgYXJlIHVzZWQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlTW9iaWxlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vY2htbG4uZ2l0aHViLmlvL2ZsYXRwaWNrci9leGFtcGxlcy8jZGlzYWJsaW5nLWFsbC1kYXRlcy1leGNlcHQtc2VsZWN0LWZld1wiPmVuYWJsaW5nIGRhdGVzPC9hPi5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZTogRGlzYWJsZUVuYWJsZURhdGVbXTtcblxuICAvKipcbiAgICogRW5hYmxlcyB0aW1lIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZVRpbWU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgc2Vjb25kcyBpbiB0aGUgdGltZSBwaWNrZXIuXG4gICAqL1xuICBASW5wdXQoKSBlbmFibGVTZWNvbmRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgdXNpbmcgYSBjdXN0b20gZGF0ZSBmb3JtYXR0aW5nIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGJ1aWx0LWluIGhhbmRsaW5nIGZvciBkYXRlIGZvcm1hdHMgdXNpbmcgZGF0ZUZvcm1hdCwgYWx0Rm9ybWF0LCBldGMuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtYXREYXRlPzogKHZhbHVlOiBhbnkpID0+IHN0cmluZztcblxuICAvKipcbiAgICogQWRqdXN0cyB0aGUgc3RlcCBmb3IgdGhlIGhvdXIgaW5wdXQgKGluY2wuIHNjcm9sbGluZykuXG4gICAqL1xuICBASW5wdXQoKSBob3VySW5jcmVtZW50OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRoZSBjYWxlbmRhciBpbmxpbmUuXG4gICAqL1xuICBASW5wdXQoKSBpbmxpbmU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGRhdGUgdGhhdCBhIHVzZXIgY2FuIHBpY2sgdG8gKGluY2x1c2l2ZSkuXG4gICAqL1xuICBASW5wdXQoKSBtYXhEYXRlOiBzdHJpbmcgfCBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBkYXRlIHRoYXQgYSB1c2VyIGNhbiBzdGFydCBwaWNraW5nIGZyb20gKGluY2x1c2l2ZSkuXG4gICAqL1xuICBASW5wdXQoKSBtaW5EYXRlOiBzdHJpbmcgfCBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRoYXQgYSB1c2VyIGNhbiBwaWNrIHRvIChpbmNsdXNpdmUpLlxuICAgKi9cbiAgQElucHV0KCkgbWF4VGltZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSB0aW1lIHRoYXQgYSB1c2VyIGNhbiBzdGFydCBwaWNraW5nIGZyb20gKGluY2x1c2l2ZSkuXG4gICAqL1xuICBASW5wdXQoKSBtaW5UaW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkanVzdHMgdGhlIHN0ZXAgZm9yIHRoZSBtaW51dGUgaW5wdXQgKGluY2wuIHNjcm9sbGluZykuXG4gICAqL1xuICBASW5wdXQoKSBtaW51dGVJbmNyZW1lbnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogU2VsZWN0IGEgc2luZ2xlIGRhdGUsIG11bHRpcGxlIGRhdGVzIG9yIGEgZGF0ZSByYW5nZS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8ICdyYW5nZSc7XG5cbiAgLyoqXG4gICAqIEhUTUwgZm9yIHRoZSBhcnJvdyBpY29uLCB1c2VkIHRvIHN3aXRjaCBtb250aHMuXG4gICAqL1xuICBASW5wdXQoKSBuZXh0QXJyb3c6IHN0cmluZztcblxuICAvKipcbiAgICogSGlkZXMgdGhlIGRheSBzZWxlY3Rpb24gaW4gY2FsZW5kYXIuIFVzZSBpdCBhbG9uZyB3aXRoIGBlbmFibGVUaW1lYCB0byBjcmVhdGUgYSB0aW1lIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpIG5vQ2FsZW5kYXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBkYXRlIGZvciAndG9kYXknLCB3aGljaCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBcIm5ldyBEYXRlKClcIlxuICAgKi9cbiAgQElucHV0KCkgbm93PzogRGF0ZSB8IHN0cmluZyB8IG51bWJlcjtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBleHBlY3RzIGEgZGF0ZSBzdHJpbmcgYW5kIG11c3QgcmV0dXJuIGEgRGF0ZSBvYmplY3QuXG4gICAqL1xuICBASW5wdXQoKSBwYXJzZURhdGU6IChzdHI6IHN0cmluZykgPT4gRGF0ZTtcblxuICAvKipcbiAgICogSFRNTCBmb3IgdGhlIGxlZnQgYXJyb3cgaWNvbi5cbiAgICovXG4gIEBJbnB1dCgpIHByZXZBcnJvdzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBtb250aCB1c2luZyB0aGUgc2hvcnRoYW5kIHZlcnNpb24gKGllLCBTZXAgaW5zdGVhZCBvZiBTZXB0ZW1iZXIpLlxuICAgKi9cbiAgQElucHV0KCkgc2hvcnRoYW5kQ3VycmVudE1vbnRoOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG1vbnRocyBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dNb250aHM6IG51bWJlcjtcblxuICAvKipcbiAgICogUG9zaXRpb24gdGhlIGNhbGVuZGFyIGluc2lkZSB0aGUgd3JhcHBlciBhbmQgbmV4dCB0byB0aGUgaW5wdXQgZWxlbWVudC4gKExlYXZlIGBmYWxzZWAgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nKS5cbiAgICovXG4gIEBJbnB1dCgpIHN0YXRpYzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzcGxheXMgdGltZSBwaWNrZXIgaW4gMjQgaG91ciBtb2RlIHdpdGhvdXQgQU0vUE0gc2VsZWN0aW9uIHdoZW4gZW5hYmxlZC5cbiAgICovXG4gIEBJbnB1dCgpIHRpbWUyNGhyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFbmFibGVzIGRpc3BsYXkgb2Ygd2VlayBudW1iZXJzIGluIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KCkgd2Vla051bWJlcnM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFlvdSBtYXkgb3ZlcnJpZGUgdGhlIGZ1bmN0aW9uIHRoYXQgZXh0cmFjdHMgdGhlIHdlZWsgbnVtYmVycyBmcm9tIGEgRGF0ZSBieSBzdXBwbHlpbmcgYSBnZXRXZWVrIGZ1bmN0aW9uLlxuICAgKiBJdCB0YWtlcyBpbiBhIGRhdGUgYXMgYSBwYXJhbWV0ZXIgYW5kIHNob3VsZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIHN0cmluZyB0aGF0IHlvdSB3YW50IHRvIGFwcGVhciBsZWZ0IG9mIGV2ZXJ5IHdlZWsuXG4gICAqL1xuICBASW5wdXQoKSBnZXRXZWVrOiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZWxlbWVudHMgYW5kIGlucHV0IGdyb3Vwcy5cbiAgICovXG4gIEBJbnB1dCgpIHdyYXA6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHBsdWdpbiBpbnN0YW5jZXMgdG8gdXNlLlxuICAgKi9cbiAgQElucHV0KCkgcGx1Z2luczogYW55W107XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhbGUgb2JqZWN0IG9yIHN0cmluZyB0byB1c2UgZm9yIHRoZSBsb2NhbGUuXG4gICAqL1xuICBASW5wdXQoKSBsb2NhbGU6IG9iamVjdCB8IHN0cmluZztcblxuICAvKipcbiAgICogQXV0byBjb252ZXJ0IHRoZSBuZ01vZGVsIHZhbHVlIGZyb20gYSBzdHJpbmcgdG8gYSBkYXRlIC8gYXJyYXkgb2YgZGF0ZXMgLyBmcm9tIC0gdG8gZGF0ZSBvYmplY3QgZGVwZW5kaW5nIG9uIHRoZSBgbW9kZWBcbiAgICovXG4gIEBJbnB1dCgpIGNvbnZlcnRNb2RlbFZhbHVlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIb3cgdGhlIG1vbnRoIHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlciBvZiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBtb250aFNlbGVjdG9yVHlwZTogJ3N0YXRpYycgfCAnZHJvcGRvd24nO1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBIVE1MIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBjbG9zZSB0aGUgcGlja2VyIG9uIGNsaWNrLlxuICAgKi9cbiAgQElucHV0KCkgaWdub3JlZEZvY3VzRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAvKipcbiAgICogR2V0cyB0cmlnZ2VyZWQgb25jZSB0aGUgY2FsZW5kYXIgaXMgaW4gYSByZWFkeSBzdGF0ZVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZsYXRwaWNrclJlYWR5OiBFdmVudEVtaXR0ZXI8RmxhdFBpY2tyT3V0cHV0T3B0aW9ucz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEdldHMgdHJpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgc2VsZWN0cyBhIGRhdGUsIG9yIGNoYW5nZXMgdGhlIHRpbWUgb24gYSBzZWxlY3RlZCBkYXRlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZsYXRwaWNrckNoYW5nZTogRXZlbnRFbWl0dGVyPEZsYXRQaWNrck91dHB1dE9wdGlvbnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBpcyB1cGRhdGVkIHdpdGggYSBuZXcgZGF0ZSBzdHJpbmcuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZmxhdHBpY2tyVmFsdWVVcGRhdGU6IEV2ZW50RW1pdHRlcjxGbGF0UGlja3JPdXRwdXRPcHRpb25zPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSBjYWxlbmRhciBpcyBvcGVuZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZmxhdHBpY2tyT3BlbjogRXZlbnRFbWl0dGVyPEZsYXRQaWNrck91dHB1dE9wdGlvbnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSBjYWxlbmRhciBpcyBjbG9zZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZmxhdHBpY2tyQ2xvc2U6IEV2ZW50RW1pdHRlcjxGbGF0UGlja3JPdXRwdXRPcHRpb25zPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogR2V0cyB0cmlnZ2VyZWQgd2hlbiB0aGUgbW9udGggaXMgY2hhbmdlZCwgZWl0aGVyIGJ5IHRoZSB1c2VyIG9yIHByb2dyYW1tYXRpY2FsbHkuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgZmxhdHBpY2tyTW9udGhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGbGF0UGlja3JPdXRwdXRPcHRpb25zPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRyaWdnZXJlZCB3aGVuIHRoZSB5ZWFyIGlzIGNoYW5nZWQsIGVpdGhlciBieSB0aGUgdXNlciBvciBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZsYXRwaWNrclllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGbGF0UGlja3JPdXRwdXRPcHRpb25zPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBUYWtlIGZ1bGwgY29udHJvbCBvZiBldmVyeSBkYXRlIGNlbGwgd2l0aCB0aGlzIG91dHB1dFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGZsYXRwaWNrckRheUNyZWF0ZTogRXZlbnRFbWl0dGVyPEZsYXRQaWNrckRheUNyZWF0ZU91dHB1dE9wdGlvbnM+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBmbGF0cGlja3IgaW5zdGFuY2Ugd2hlcmUgeW91IGNhbiBjYWxsIG1ldGhvZHMgbGlrZSB0b2dnbGUoKSwgb3BlbigpLCBjbG9zZSgpIGV0Y1xuICAgKi9cbiAgaW5zdGFuY2U6IGZsYXRwaWNrci5JbnN0YW5jZTtcblxuICBwcml2YXRlIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpbml0aWFsVmFsdWU6IGFueTtcblxuICBvbkNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICBvblRvdWNoZWRGbiA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxtOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgZGVmYXVsdHM6IEZsYXRwaWNrckRlZmF1bHRzLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcbiAgICAgIGFsdEZvcm1hdDogdGhpcy5hbHRGb3JtYXQsXG4gICAgICBhbHRJbnB1dDogdGhpcy5hbHRJbnB1dCxcbiAgICAgIGFsdElucHV0Q2xhc3M6IHRoaXMuYWx0SW5wdXRDbGFzcyxcbiAgICAgIGFsbG93SW5wdXQ6IHRoaXMuYWxsb3dJbnB1dCxcbiAgICAgIGFsbG93SW52YWxpZFByZWxvYWQ6IHRoaXMuYWxsb3dJbnZhbGlkUHJlbG9hZCxcbiAgICAgIGFwcGVuZFRvOiB0aGlzLmFwcGVuZFRvLFxuICAgICAgYXJpYURhdGVGb3JtYXQ6IHRoaXMuYXJpYURhdGVGb3JtYXQsXG4gICAgICBjbGlja09wZW5zOiB0aGlzLmNsaWNrT3BlbnMsXG4gICAgICBkYXRlRm9ybWF0OiB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICBkZWZhdWx0SG91cjogdGhpcy5kZWZhdWx0SG91cixcbiAgICAgIGRlZmF1bHRNaW51dGU6IHRoaXMuZGVmYXVsdE1pbnV0ZSxcbiAgICAgIGRlZmF1bHRTZWNvbmRzOiB0aGlzLmRlZmF1bHRTZWNvbmRzLFxuICAgICAgZGlzYWJsZTogdGhpcy5kaXNhYmxlLFxuICAgICAgZGlzYWJsZU1vYmlsZTogdGhpcy5kaXNhYmxlTW9iaWxlLFxuICAgICAgZW5hYmxlOiB0aGlzLmVuYWJsZSxcbiAgICAgIGVuYWJsZVRpbWU6IHRoaXMuZW5hYmxlVGltZSxcbiAgICAgIGVuYWJsZVNlY29uZHM6IHRoaXMuZW5hYmxlU2Vjb25kcyxcbiAgICAgIGZvcm1hdERhdGU6IHRoaXMuZm9ybWF0RGF0ZSxcbiAgICAgIGhvdXJJbmNyZW1lbnQ6IHRoaXMuaG91ckluY3JlbWVudCxcbiAgICAgIGRlZmF1bHREYXRlOiB0aGlzLmluaXRpYWxWYWx1ZSxcbiAgICAgIGlubGluZTogdGhpcy5pbmxpbmUsXG4gICAgICBtYXhEYXRlOiB0aGlzLm1heERhdGUsXG4gICAgICBtaW5EYXRlOiB0aGlzLm1pbkRhdGUsXG4gICAgICBtYXhUaW1lOiB0aGlzLm1heFRpbWUsXG4gICAgICBtaW5UaW1lOiB0aGlzLm1pblRpbWUsXG4gICAgICBtaW51dGVJbmNyZW1lbnQ6IHRoaXMubWludXRlSW5jcmVtZW50LFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgbmV4dEFycm93OiB0aGlzLm5leHRBcnJvdyxcbiAgICAgIG5vQ2FsZW5kYXI6IHRoaXMubm9DYWxlbmRhcixcbiAgICAgIG5vdzogdGhpcy5ub3csXG4gICAgICBwYXJzZURhdGU6IHRoaXMucGFyc2VEYXRlLFxuICAgICAgcHJldkFycm93OiB0aGlzLnByZXZBcnJvdyxcbiAgICAgIHNob3J0aGFuZEN1cnJlbnRNb250aDogdGhpcy5zaG9ydGhhbmRDdXJyZW50TW9udGgsXG4gICAgICBzaG93TW9udGhzOiB0aGlzLnNob3dNb250aHMsXG4gICAgICBtb250aFNlbGVjdG9yVHlwZTogdGhpcy5tb250aFNlbGVjdG9yVHlwZSxcbiAgICAgIHN0YXRpYzogdGhpcy5zdGF0aWMsXG4gICAgICB0aW1lMjRocjogdGhpcy50aW1lMjRocixcbiAgICAgIHdlZWtOdW1iZXJzOiB0aGlzLndlZWtOdW1iZXJzLFxuICAgICAgZ2V0V2VlazogdGhpcy5nZXRXZWVrLFxuICAgICAgd3JhcDogdGhpcy53cmFwLFxuICAgICAgcGx1Z2luczogdGhpcy5wbHVnaW5zLFxuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZSxcbiAgICAgIGlnbm9yZWRGb2N1c0VsZW1lbnRzOiB0aGlzLmlnbm9yZWRGb2N1c0VsZW1lbnRzLFxuICAgICAgb25DaGFuZ2U6IChzZWxlY3RlZERhdGVzOiBEYXRlW10sIGRhdGVTdHJpbmc6IHN0cmluZywgaW5zdGFuY2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmZsYXRwaWNrckNoYW5nZS5lbWl0KHsgc2VsZWN0ZWREYXRlcywgZGF0ZVN0cmluZywgaW5zdGFuY2UgfSk7XG4gICAgICB9LFxuICAgICAgb25PcGVuOiAoc2VsZWN0ZWREYXRlczogRGF0ZVtdLCBkYXRlU3RyaW5nOiBzdHJpbmcsIGluc3RhbmNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5mbGF0cGlja3JPcGVuLmVtaXQoeyBzZWxlY3RlZERhdGVzLCBkYXRlU3RyaW5nLCBpbnN0YW5jZSB9KTtcbiAgICAgIH0sXG4gICAgICBvbkNsb3NlOiAoc2VsZWN0ZWREYXRlczogRGF0ZVtdLCBkYXRlU3RyaW5nOiBzdHJpbmcsIGluc3RhbmNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5mbGF0cGlja3JDbG9zZS5lbWl0KHsgc2VsZWN0ZWREYXRlcywgZGF0ZVN0cmluZywgaW5zdGFuY2UgfSk7XG4gICAgICB9LFxuICAgICAgb25Nb250aENoYW5nZTogKFxuICAgICAgICBzZWxlY3RlZERhdGVzOiBEYXRlW10sXG4gICAgICAgIGRhdGVTdHJpbmc6IHN0cmluZyxcbiAgICAgICAgaW5zdGFuY2U6IGFueVxuICAgICAgKSA9PiB7XG4gICAgICAgIHRoaXMuZmxhdHBpY2tyTW9udGhDaGFuZ2UuZW1pdCh7IHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHJpbmcsIGluc3RhbmNlIH0pO1xuICAgICAgfSxcbiAgICAgIG9uWWVhckNoYW5nZTogKFxuICAgICAgICBzZWxlY3RlZERhdGVzOiBEYXRlW10sXG4gICAgICAgIGRhdGVTdHJpbmc6IHN0cmluZyxcbiAgICAgICAgaW5zdGFuY2U6IGFueVxuICAgICAgKSA9PiB7XG4gICAgICAgIHRoaXMuZmxhdHBpY2tyWWVhckNoYW5nZS5lbWl0KHsgc2VsZWN0ZWREYXRlcywgZGF0ZVN0cmluZywgaW5zdGFuY2UgfSk7XG4gICAgICB9LFxuICAgICAgb25SZWFkeTogKHNlbGVjdGVkRGF0ZXM6IERhdGVbXSwgZGF0ZVN0cmluZzogc3RyaW5nLCBpbnN0YW5jZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZmxhdHBpY2tyUmVhZHkuZW1pdCh7IHNlbGVjdGVkRGF0ZXMsIGRhdGVTdHJpbmcsIGluc3RhbmNlIH0pO1xuICAgICAgfSxcbiAgICAgIG9uVmFsdWVVcGRhdGU6IChcbiAgICAgICAgc2VsZWN0ZWREYXRlczogRGF0ZVtdLFxuICAgICAgICBkYXRlU3RyaW5nOiBzdHJpbmcsXG4gICAgICAgIGluc3RhbmNlOiBhbnlcbiAgICAgICkgPT4ge1xuICAgICAgICB0aGlzLmZsYXRwaWNrclZhbHVlVXBkYXRlLmVtaXQoeyBzZWxlY3RlZERhdGVzLCBkYXRlU3RyaW5nLCBpbnN0YW5jZSB9KTtcbiAgICAgIH0sXG4gICAgICBvbkRheUNyZWF0ZTogKFxuICAgICAgICBzZWxlY3RlZERhdGVzOiBEYXRlW10sXG4gICAgICAgIGRhdGVTdHJpbmc6IHN0cmluZyxcbiAgICAgICAgaW5zdGFuY2U6IGFueSxcbiAgICAgICAgZGF5RWxlbWVudDogSFRNTEVsZW1lbnRcbiAgICAgICkgPT4ge1xuICAgICAgICB0aGlzLmZsYXRwaWNrckRheUNyZWF0ZS5lbWl0KHtcbiAgICAgICAgICBzZWxlY3RlZERhdGVzLFxuICAgICAgICAgIGRhdGVTdHJpbmcsXG4gICAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgICAgZGF5RWxlbWVudCxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBPYmplY3Qua2V5cyhvcHRpb25zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uc1trZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAodHlwZW9mICh0aGlzLm9wdGlvbnMgYXMgYW55KVtrZXldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIG9wdGlvbnNba2V5XSA9ICh0aGlzLm9wdGlvbnMgYXMgYW55KVtrZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbnNba2V5XSA9ICh0aGlzLmRlZmF1bHRzIGFzIGFueSlba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9wdGlvbnMudGltZV8yNGhyID0gb3B0aW9ucy50aW1lMjRocjtcblxuICAgIC8vIHdvcmthcm91bmQgYnVnIGluIGZsYXRwaWNrciA0LjYgd2hlcmUgaXQgZG9lc24ndCBjb3B5IHRoZSBjbGFzc2VzIGFjcm9zc1xuICAgIC8vIFRPRE8gLSByZW1vdmUgb25jZSBmaXggaW4gaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRwaWNrci9mbGF0cGlja3IvaXNzdWVzLzE4NjAgaXMgcmVsZWFzZWRcbiAgICBvcHRpb25zLmFsdElucHV0Q2xhc3MgPVxuICAgICAgKG9wdGlvbnMuYWx0SW5wdXRDbGFzcyB8fCAnJykgKyAnICcgKyB0aGlzLmVsbS5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZTtcblxuICAgIGlmICghb3B0aW9ucy5lbmFibGUpIHtcbiAgICAgIGRlbGV0ZSBvcHRpb25zLmVuYWJsZTtcbiAgICB9XG5cbiAgICB0aGlzLmluc3RhbmNlID0gZmxhdHBpY2tyKFxuICAgICAgdGhpcy5lbG0ubmF0aXZlRWxlbWVudCxcbiAgICAgIG9wdGlvbnNcbiAgICApIGFzIGZsYXRwaWNrci5JbnN0YW5jZTtcbiAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodGhpcy5pc0Rpc2FibGVkKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgT2JqZWN0LmtleXMoY2hhbmdlcykuZm9yRWFjaCgoaW5wdXRLZXkpID0+IHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zZXQoaW5wdXRLZXkgYXMgYW55LCAodGhpcyBhcyBhbnkpW2lucHV0S2V5XSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgbGV0IGNvbnZlcnRlZFZhbHVlOiBhbnkgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5jb252ZXJ0TW9kZWxWYWx1ZSAmJiB0aGlzLm1vZGUgPT09ICdyYW5nZScgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnZlcnRlZFZhbHVlID0gW3ZhbHVlLmZyb20sIHZhbHVlLnRvXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXREYXRlKGNvbnZlcnRlZFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmxhdHBpY2tyIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIHlldCwgc3RvcmUgdGhlIHZhbHVlIGZvciBsYXRlciB1c2VcbiAgICAgIHRoaXMuaW5pdGlhbFZhbHVlID0gY29udmVydGVkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmluc3RhbmNlLl9pbnB1dCwgJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmluc3RhbmNlLl9pbnB1dCwgJ2Rpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBpbnB1dENoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWU6IHN0cmluZyA9IHRoaXMuZWxtLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgaWYgKHRoaXMuY29udmVydE1vZGVsVmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgICAgY2FzZSAnbXVsdGlwbGUnOlxuICAgICAgICAgIGNvbnN0IGRhdGVzOiBBcnJheTxEYXRlIHwgdW5kZWZpbmVkPiA9IHZhbHVlXG4gICAgICAgICAgICAuc3BsaXQoJzsgJylcbiAgICAgICAgICAgIC5tYXAoKHN0cikgPT5cbiAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5wYXJzZURhdGUoXG4gICAgICAgICAgICAgICAgc3RyLFxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuY29uZmlnLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICAgICAgIXRoaXMuaW5zdGFuY2UuY29uZmlnLmVuYWJsZVRpbWVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oZGF0ZXMpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICBjb25zdCBbZnJvbSwgdG9dID0gdmFsdWVcbiAgICAgICAgICAgIC5zcGxpdCh0aGlzLmluc3RhbmNlLmwxMG4ucmFuZ2VTZXBhcmF0b3IpXG4gICAgICAgICAgICAubWFwKChzdHIpID0+XG4gICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UucGFyc2VEYXRlKFxuICAgICAgICAgICAgICAgIHN0cixcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmNvbmZpZy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICF0aGlzLmluc3RhbmNlLmNvbmZpZy5lbmFibGVUaW1lXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZUZuKHsgZnJvbSwgdG8gfSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc2luZ2xlJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oXG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLnBhcnNlRGF0ZShcbiAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuY29uZmlnLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICAgICF0aGlzLmluc3RhbmNlLmNvbmZpZy5lbmFibGVUaW1lXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vbkNoYW5nZUZuKHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
import { NgModule, InjectionToken } from '@angular/core';
import { FlatpickrDirective } from './flatpickr.directive';
import { FlatpickrDefaults } from './flatpickr-defaults.service';
import * as i0 from "@angular/core";
export const USER_DEFAULTS = new InjectionToken('flatpickr defaults');
export function defaultsFactory(userDefaults) {
const defaults = new FlatpickrDefaults();
Object.assign(defaults, userDefaults);
return defaults;
}
export class FlatpickrModule {
static forRoot(userDefaults = {}) {
return {
ngModule: FlatpickrModule,
providers: [
{
provide: USER_DEFAULTS,
useValue: userDefaults
},
{
provide: FlatpickrDefaults,
useFactory: defaultsFactory,
deps: [USER_DEFAULTS]
}
]
};
}
}
FlatpickrModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
FlatpickrModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, declarations: [FlatpickrDirective], exports: [FlatpickrDirective] });
FlatpickrModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, decorators: [{
type: NgModule,
args: [{
declarations: [FlatpickrDirective],
exports: [FlatpickrDirective]
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHBpY2tyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXJ4LWZsYXRwaWNrci9zcmMvbGliL2ZsYXRwaWNrci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFFUixjQUFjLEVBRWYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUNMLGlCQUFpQixFQUVsQixNQUFNLDhCQUE4QixDQUFDOztBQUV0QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUV0RSxNQUFNLFVBQVUsZUFBZSxDQUM3QixZQUF3QztJQUV4QyxNQUFNLFFBQVEsR0FBc0IsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQzVELE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFNRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixNQUFNLENBQUMsT0FBTyxDQUNaLGVBQTJDLEVBQUU7UUFFN0MsT0FBTztZQUNMLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsUUFBUSxFQUFFLFlBQVk7aUJBQ3ZCO2dCQUNEO29CQUNFLE9BQU8sRUFBRSxpQkFBaUI7b0JBQzFCLFVBQVUsRUFBRSxlQUFlO29CQUMzQixJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3RCO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQzs7NEdBbEJVLGVBQWU7NkdBQWYsZUFBZSxpQkFIWCxrQkFBa0IsYUFDdkIsa0JBQWtCOzZHQUVqQixlQUFlOzJGQUFmLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE5nTW9kdWxlLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbGF0cGlja3JEaXJlY3RpdmUgfSBmcm9tICcuL2ZsYXRwaWNrci5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgRmxhdHBpY2tyRGVmYXVsdHMsXG4gIEZsYXRwaWNrckRlZmF1bHRzSW50ZXJmYWNlXG59IGZyb20gJy4vZmxhdHBpY2tyLWRlZmF1bHRzLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgVVNFUl9ERUZBVUxUUyA9IG5ldyBJbmplY3Rpb25Ub2tlbignZmxhdHBpY2tyIGRlZmF1bHRzJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0c0ZhY3RvcnkoXG4gIHVzZXJEZWZhdWx0czogRmxhdHBpY2tyRGVmYXVsdHNJbnRlcmZhY2Vcbik6IEZsYXRwaWNrckRlZmF1bHRzIHtcbiAgY29uc3QgZGVmYXVsdHM6IEZsYXRwaWNrckRlZmF1bHRzID0gbmV3IEZsYXRwaWNrckRlZmF1bHRzKCk7XG4gIE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHVzZXJEZWZhdWx0cyk7XG4gIHJldHVybiBkZWZhdWx0cztcbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRmxhdHBpY2tyRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0ZsYXRwaWNrckRpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgRmxhdHBpY2tyTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoXG4gICAgdXNlckRlZmF1bHRzOiBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSA9IHt9XG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RmxhdHBpY2tyTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBGbGF0cGlja3JNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IFVTRVJfREVGQVVMVFMsXG4gICAgICAgICAgdXNlVmFsdWU6IHVzZXJEZWZhdWx0c1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogRmxhdHBpY2tyRGVmYXVsdHMsXG4gICAgICAgICAgdXNlRmFjdG9yeTogZGVmYXVsdHNGYWN0b3J5LFxuICAgICAgICAgIGRlcHM6IFtVU0VSX0RFRkFVTFRTXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19
/*
* Public API Surface of angularx-flatpickr
*/
export * from './lib/flatpickr.module';
export { FlatpickrDefaults } from './lib/flatpickr-defaults.service';
export { FlatpickrDirective } from './lib/flatpickr.directive';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXJ4LWZsYXRwaWNrci9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUE4QixNQUFNLGtDQUFrQyxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhbmd1bGFyeC1mbGF0cGlja3JcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9mbGF0cGlja3IubW9kdWxlJztcbmV4cG9ydCB7IEZsYXRwaWNrckRlZmF1bHRzLCBGbGF0cGlja3JEZWZhdWx0c0ludGVyZmFjZSB9IGZyb20gJy4vbGliL2ZsYXRwaWNrci1kZWZhdWx0cy5zZXJ2aWNlJztcbmV4cG9ydCB7IEZsYXRwaWNrckRpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2ZsYXRwaWNrci5kaXJlY3RpdmUnO1xuIl19
import * as i0 from '@angular/core';
import { Injectable, forwardRef, EventEmitter, Directive, Input, Output, HostListener, InjectionToken, NgModule } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import flatpickr from 'flatpickr';
class FlatpickrDefaults {
constructor() {
/**
* Exactly the same as date format, but for the altInput field.
*/
this.altFormat = 'F j, Y';
/**
* Show the user a readable date (as per altFormat), but return something totally different to the server.
*/
this.altInput = false;
/**
* This class will be added to the input element created by the altInput option.
* Note that `altInput` already inherits classes from the original input.
*/
this.altInputClass = '';
/**
* Allows the user to enter a date directly input the input field. By default, direct entry is disabled.
*/
this.allowInput = false;
/**
* Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid
*/
this.allowInvalidPreload = false;
/**
* Instead of `body`, appends the calendar to the specified node instead.
*/
this.appendTo = undefined;
/**
* Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.
*/
this.ariaDateFormat = 'F j, Y';
/**
* Whether clicking on the input should open the picker.
* You could disable this if you wish to open the calendar manually `with.open()`.
*/
this.clickOpens = true;
/**
* A string of characters which are used to define how the date will be displayed in the input box.
* The supported characters are defined in the table below.
*/
this.dateFormat = 'Y-m-d';
/**
* Initial value of the hour element.
*/
this.defaultHour = 12;
/**
* Initial value of the minute element.
*/
this.defaultMinute = 0;
/**
* Initial value of the seconds element.
*/
this.defaultSeconds = 0;
/**
* See <a href="https://chmln.github.io/flatpickr/examples/#disabling-specific-dates">disabling dates</a>.
*/
this.disable = [];
/**
* Set disableMobile to true to always use the non-native picker.
* By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.
*/
this.disableMobile = false;
/**
* Enables time picker.
*/
this.enableTime = false;
/**
* Enables seconds in the time picker.
*/
this.enableSeconds = false;
/**
* Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.
*/
this.formatDate = undefined;
/**
* Adjusts the step for the hour input (incl. scrolling).
*/
this.hourIncrement = 1;
/**
* Displays the calendar inline.
*/
this.inline = false;
/**
* The maximum date that a user can pick to (inclusive).
*/
this.maxDate = undefined;
/**
* The minimum date that a user can start picking from (inclusive).
*/
this.minDate = undefined;
/**
* The maximum time that a user can pick to (inclusive).
*/
this.maxTime = undefined;
/**
* The minimum time that a user can start picking from (inclusive).
*/
this.minTime = undefined;
/**
* Adjusts the step for the minute input (incl. scrolling).
*/
this.minuteIncrement = 5;
/**
* Select a single date, multiple dates or a date range.
*/
this.mode = 'single';
/**
* HTML for the arrow icon, used to switch months.
*/
this.nextArrow = '>';
/**
* Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.
*/
this.noCalendar = false;
/**
* Default now to the current date
*/
this.now = new Date();
/**
* HTML for the left arrow icon.
*/
this.prevArrow = '<';
/**
* Show the month using the shorthand version (ie, Sep instead of September).
*/
this.shorthandCurrentMonth = false;
/**
* Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).
*/
this.static = false;
/**
* Displays time picker in 24 hour mode without AM/PM selection when enabled.
*/
this.time24hr = false;
/**
* When true, dates will parsed, formatted, and displayed in UTC.
* It's recommended that date strings contain the timezone, but not necessary.
*/
this.utc = false;
/**
* Enables display of week numbers in calendar.
*/
this.weekNumbers = false;
/**
* Custom elements and input groups.
*/
this.wrap = false;
/**
* Array of plugin instances to use.
*/
this.plugins = [];
/**
* The locale object or string to use for the locale.
*/
this.locale = 'default';
/**
* Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`
*/
this.convertModelValue = false;
/**
* The number of months shown.
*/
this.showMonths = 1;
/**
* How the month should be displayed in the header of the calendar.
*/
this.monthSelectorType = 'static';
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
}
}
FlatpickrDefaults.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
FlatpickrDefaults.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults, decorators: [{
type: Injectable
}] });
const FLATPICKR_CONTROL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => FlatpickrDirective),
multi: true,
};
class FlatpickrDirective {
constructor(elm, defaults, renderer) {
this.elm = elm;
this.defaults = defaults;
this.renderer = renderer;
/**
* Object-options that can be user for multiple instances of Flatpickr.
* Option from this object is applied only if specific option is not specified.
* Example:
* ```typescript
* options: FlatpickrDefaultsInterface = {
* altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute
* altInput: true // will be used since specific attribute is not provided
* };
* ```
* ```html
* <input
* class="form-control"
* type="text"
* mwlFlatpickr
* [options]="options"
* altFormat="d/m/Y">
* ```
*/
this.options = {};
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
/**
* Gets triggered once the calendar is in a ready state
*/
this.flatpickrReady = new EventEmitter();
/**
* Gets triggered when the user selects a date, or changes the time on a selected date.
*/
this.flatpickrChange = new EventEmitter();
/**
* Gets triggered when the input value is updated with a new date string.
*/
this.flatpickrValueUpdate = new EventEmitter();
/**
* Gets triggered when the calendar is opened.
*/
this.flatpickrOpen = new EventEmitter();
/**
* Gets triggered when the calendar is closed.
*/
this.flatpickrClose = new EventEmitter();
/**
* Gets triggered when the month is changed, either by the user or programmatically.
*/
this.flatpickrMonthChange = new EventEmitter();
/**
* Gets triggered when the year is changed, either by the user or programmatically.
*/
this.flatpickrYearChange = new EventEmitter();
/**
* Take full control of every date cell with this output
*/
this.flatpickrDayCreate = new EventEmitter();
this.isDisabled = false;
this.onChangeFn = () => { };
this.onTouchedFn = () => { };
}
ngAfterViewInit() {
const options = {
altFormat: this.altFormat,
altInput: this.altInput,
altInputClass: this.altInputClass,
allowInput: this.allowInput,
allowInvalidPreload: this.allowInvalidPreload,
appendTo: this.appendTo,
ariaDateFormat: this.ariaDateFormat,
clickOpens: this.clickOpens,
dateFormat: this.dateFormat,
defaultHour: this.defaultHour,
defaultMinute: this.defaultMinute,
defaultSeconds: this.defaultSeconds,
disable: this.disable,
disableMobile: this.disableMobile,
enable: this.enable,
enableTime: this.enableTime,
enableSeconds: this.enableSeconds,
formatDate: this.formatDate,
hourIncrement: this.hourIncrement,
defaultDate: this.initialValue,
inline: this.inline,
maxDate: this.maxDate,
minDate: this.minDate,
maxTime: this.maxTime,
minTime: this.minTime,
minuteIncrement: this.minuteIncrement,
mode: this.mode,
nextArrow: this.nextArrow,
noCalendar: this.noCalendar,
now: this.now,
parseDate: this.parseDate,
prevArrow: this.prevArrow,
shorthandCurrentMonth: this.shorthandCurrentMonth,
showMonths: this.showMonths,
monthSelectorType: this.monthSelectorType,
static: this.static,
time24hr: this.time24hr,
weekNumbers: this.weekNumbers,
getWeek: this.getWeek,
wrap: this.wrap,
plugins: this.plugins,
locale: this.locale,
ignoredFocusElements: this.ignoredFocusElements,
onChange: (selectedDates, dateString, instance) => {
this.flatpickrChange.emit({ selectedDates, dateString, instance });
},
onOpen: (selectedDates, dateString, instance) => {
this.flatpickrOpen.emit({ selectedDates, dateString, instance });
},
onClose: (selectedDates, dateString, instance) => {
this.flatpickrClose.emit({ selectedDates, dateString, instance });
},
onMonthChange: (selectedDates, dateString, instance) => {
this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });
},
onYearChange: (selectedDates, dateString, instance) => {
this.flatpickrYearChange.emit({ selectedDates, dateString, instance });
},
onReady: (selectedDates, dateString, instance) => {
this.flatpickrReady.emit({ selectedDates, dateString, instance });
},
onValueUpdate: (selectedDates, dateString, instance) => {
this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });
},
onDayCreate: (selectedDates, dateString, instance, dayElement) => {
this.flatpickrDayCreate.emit({
selectedDates,
dateString,
instance,
dayElement,
});
},
};
Object.keys(options).forEach((key) => {
if (typeof options[key] === 'undefined') {
if (typeof this.options[key] !== 'undefined') {
options[key] = this.options[key];
}
else {
options[key] = this.defaults[key];
}
}
});
// @ts-ignore
options.time_24hr = options.time24hr;
// workaround bug in flatpickr 4.6 where it doesn't copy the classes across
// TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released
options.altInputClass =
(options.altInputClass || '') + ' ' + this.elm.nativeElement.className;
if (!options.enable) {
delete options.enable;
}
this.instance = flatpickr(this.elm.nativeElement, options);
this.setDisabledState(this.isDisabled);
}
ngOnChanges(changes) {
if (this.instance) {
Object.keys(changes).forEach((inputKey) => {
this.instance.set(inputKey, this[inputKey]);
});
}
}
ngOnDestroy() {
if (this.instance) {
this.instance.destroy();
}
}
writeValue(value) {
let convertedValue = value;
if (this.convertModelValue && this.mode === 'range' && value) {
convertedValue = [value.from, value.to];
}
if (this.instance) {
this.instance.setDate(convertedValue);
}
else {
// flatpickr hasn't been initialised yet, store the value for later use
this.initialValue = convertedValue;
}
}
registerOnChange(fn) {
this.onChangeFn = fn;
}
registerOnTouched(fn) {
this.onTouchedFn = fn;
}
setDisabledState(isDisabled) {
this.isDisabled = isDisabled;
if (this.instance) {
if (this.isDisabled) {
this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');
}
else {
this.renderer.removeAttribute(this.instance._input, 'disabled');
}
}
}
inputChanged() {
const value = this.elm.nativeElement.value;
if (this.convertModelValue && typeof value === 'string') {
switch (this.mode) {
case 'multiple':
const dates = value
.split('; ')
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn(dates);
break;
case 'range':
const [from, to] = value
.split(this.instance.l10n.rangeSeparator)
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn({ from, to });
break;
case 'single':
default:
this.onChangeFn(this.instance.parseDate(value, this.instance.config.dateFormat, !this.instance.config.enableTime));
}
}
else {
this.onChangeFn(value);
}
}
}
FlatpickrDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDirective, deps: [{ token: i0.ElementRef }, { token: FlatpickrDefaults }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
FlatpickrDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: FlatpickrDirective, selector: "[mwlFlatpickr]", inputs: { options: "options", altFormat: "altFormat", altInput: "altInput", altInputClass: "altInputClass", allowInput: "allowInput", allowInvalidPreload: "allowInvalidPreload", appendTo: "appendTo", ariaDateFormat: "ariaDateFormat", clickOpens: "clickOpens", dateFormat: "dateFormat", defaultHour: "defaultHour", defaultMinute: "defaultMinute", defaultSeconds: "defaultSeconds", disable: "disable", disableMobile: "disableMobile", enable: "enable", enableTime: "enableTime", enableSeconds: "enableSeconds", formatDate: "formatDate", hourIncrement: "hourIncrement", inline: "inline", maxDate: "maxDate", minDate: "minDate", maxTime: "maxTime", minTime: "minTime", minuteIncrement: "minuteIncrement", mode: "mode", nextArrow: "nextArrow", noCalendar: "noCalendar", now: "now", parseDate: "parseDate", prevArrow: "prevArrow", shorthandCurrentMonth: "shorthandCurrentMonth", showMonths: "showMonths", static: "static", time24hr: "time24hr", weekNumbers: "weekNumbers", getWeek: "getWeek", wrap: "wrap", plugins: "plugins", locale: "locale", convertModelValue: "convertModelValue", monthSelectorType: "monthSelectorType", ignoredFocusElements: "ignoredFocusElements" }, outputs: { flatpickrReady: "flatpickrReady", flatpickrChange: "flatpickrChange", flatpickrValueUpdate: "flatpickrValueUpdate", flatpickrOpen: "flatpickrOpen", flatpickrClose: "flatpickrClose", flatpickrMonthChange: "flatpickrMonthChange", flatpickrYearChange: "flatpickrYearChange", flatpickrDayCreate: "flatpickrDayCreate" }, host: { listeners: { "blur": "onTouchedFn()", "input": "inputChanged()" } }, providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR], exportAs: ["mwlFlatpickr"], usesOnChanges: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDirective, decorators: [{
type: Directive,
args: [{
selector: '[mwlFlatpickr]',
providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],
exportAs: 'mwlFlatpickr',
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FlatpickrDefaults }, { type: i0.Renderer2 }]; }, propDecorators: { options: [{
type: Input
}], altFormat: [{
type: Input
}], altInput: [{
type: Input
}], altInputClass: [{
type: Input
}], allowInput: [{
type: Input
}], allowInvalidPreload: [{
type: Input
}], appendTo: [{
type: Input
}], ariaDateFormat: [{
type: Input
}], clickOpens: [{
type: Input
}], dateFormat: [{
type: Input
}], defaultHour: [{
type: Input
}], defaultMinute: [{
type: Input
}], defaultSeconds: [{
type: Input
}], disable: [{
type: Input
}], disableMobile: [{
type: Input
}], enable: [{
type: Input
}], enableTime: [{
type: Input
}], enableSeconds: [{
type: Input
}], formatDate: [{
type: Input
}], hourIncrement: [{
type: Input
}], inline: [{
type: Input
}], maxDate: [{
type: Input
}], minDate: [{
type: Input
}], maxTime: [{
type: Input
}], minTime: [{
type: Input
}], minuteIncrement: [{
type: Input
}], mode: [{
type: Input
}], nextArrow: [{
type: Input
}], noCalendar: [{
type: Input
}], now: [{
type: Input
}], parseDate: [{
type: Input
}], prevArrow: [{
type: Input
}], shorthandCurrentMonth: [{
type: Input
}], showMonths: [{
type: Input
}], static: [{
type: Input
}], time24hr: [{
type: Input
}], weekNumbers: [{
type: Input
}], getWeek: [{
type: Input
}], wrap: [{
type: Input
}], plugins: [{
type: Input
}], locale: [{
type: Input
}], convertModelValue: [{
type: Input
}], monthSelectorType: [{
type: Input
}], ignoredFocusElements: [{
type: Input
}], flatpickrReady: [{
type: Output
}], flatpickrChange: [{
type: Output
}], flatpickrValueUpdate: [{
type: Output
}], flatpickrOpen: [{
type: Output
}], flatpickrClose: [{
type: Output
}], flatpickrMonthChange: [{
type: Output
}], flatpickrYearChange: [{
type: Output
}], flatpickrDayCreate: [{
type: Output
}], onTouchedFn: [{
type: HostListener,
args: ['blur']
}], inputChanged: [{
type: HostListener,
args: ['input']
}] } });
const USER_DEFAULTS = new InjectionToken('flatpickr defaults');
function defaultsFactory(userDefaults) {
const defaults = new FlatpickrDefaults();
Object.assign(defaults, userDefaults);
return defaults;
}
class FlatpickrModule {
static forRoot(userDefaults = {}) {
return {
ngModule: FlatpickrModule,
providers: [
{
provide: USER_DEFAULTS,
useValue: userDefaults
},
{
provide: FlatpickrDefaults,
useFactory: defaultsFactory,
deps: [USER_DEFAULTS]
}
]
};
}
}
FlatpickrModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
FlatpickrModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, declarations: [FlatpickrDirective], exports: [FlatpickrDirective] });
FlatpickrModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, decorators: [{
type: NgModule,
args: [{
declarations: [FlatpickrDirective],
exports: [FlatpickrDirective]
}]
}] });
/*
* Public API Surface of angularx-flatpickr
*/
/**
* Generated bundle index. Do not edit.
*/
export { FlatpickrDefaults, FlatpickrDirective, FlatpickrModule, USER_DEFAULTS, defaultsFactory };
//# sourceMappingURL=angularx-flatpickr.mjs.map
{"version":3,"file":"angularx-flatpickr.mjs","sources":["../../../projects/angularx-flatpickr/src/lib/flatpickr-defaults.service.ts","../../../projects/angularx-flatpickr/src/lib/flatpickr.directive.ts","../../../projects/angularx-flatpickr/src/lib/flatpickr.module.ts","../../../projects/angularx-flatpickr/src/public-api.ts","../../../projects/angularx-flatpickr/src/angularx-flatpickr.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport type DisableEnableDate =\n | string\n | Date\n | { from: Date | string; to: Date | string }\n | ((date: Date) => boolean);\n\nexport interface FlatpickrDefaultsInterface {\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n altFormat?: string;\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n altInput?: boolean;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n altInputClass?: string;\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n allowInput?: boolean;\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n allowInvalidPreload?: boolean;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n appendTo?: HTMLElement;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n ariaDateFormat?: string;\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n clickOpens?: boolean;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n dateFormat?: string;\n /**\n * Initial value of the hour element.\n */\n defaultHour?: number;\n /**\n * Initial value of the minute element.\n */\n defaultMinute?: number;\n /**\n * Initial value of the seconds element.\n */\n defaultSeconds?: number;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n disable?: DisableEnableDate[];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n disableMobile?: boolean;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n enable?: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n enableTime?: boolean;\n\n /**\n * Enables seconds in the time picker.\n */\n enableSeconds?: boolean;\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n formatDate?: (value: any) => string;\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n hourIncrement?: number;\n\n /**\n * Displays the calendar inline.\n */\n inline?: boolean;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n maxDate?: string | Date;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n minDate?: string | Date;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n maxTime?: string;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n minTime?: string;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n minuteIncrement?: number;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n mode?: 'single' | 'multiple' | 'range';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n nextArrow?: string;\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n noCalendar?: boolean;\n\n /**\n * Provide a date for 'today', which will be used instead of \"new Date()\"\n */\n now?: Date | string | number;\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n parseDate?: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n prevArrow?: string;\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n shorthandCurrentMonth?: boolean;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n static?: boolean;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n time24hr?: boolean;\n\n /**\n * When true, dates will parsed, formatted, and displayed in UTC.\n * It's recommended that date strings contain the timezone, but not necessary.\n */\n utc?: boolean;\n\n /**\n * Enables display of week numbers in calendar.\n */\n weekNumbers?: boolean;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n getWeek?: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n wrap?: boolean;\n\n /**\n * Array of plugin instances to use.\n */\n plugins?: any[];\n\n /**\n * The locale object or string to use for the locale.\n */\n locale?: object | string;\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n convertModelValue?: boolean;\n\n /**\n * The number of months shown.\n */\n showMonths?: number;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n monthSelectorType?: 'static' | 'dropdown';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n ignoredFocusElements?: HTMLElement[];\n}\n\n@Injectable()\nexport class FlatpickrDefaults implements FlatpickrDefaultsInterface {\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n altFormat: string = 'F j, Y';\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n altInput: boolean = false;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n altInputClass: string = '';\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n allowInput: boolean = false;\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n allowInvalidPreload: boolean = false;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n appendTo: HTMLElement | undefined = undefined;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n ariaDateFormat?: string = 'F j, Y';\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n clickOpens: boolean = true;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n dateFormat: string = 'Y-m-d';\n\n /**\n * Initial value of the hour element.\n */\n defaultHour?: number = 12;\n\n /**\n * Initial value of the minute element.\n */\n defaultMinute?: number = 0;\n\n /**\n * Initial value of the seconds element.\n */\n defaultSeconds?: number = 0;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n disable: DisableEnableDate[] = [];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n disableMobile: boolean = false;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n enable: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n enableTime: boolean = false;\n\n /**\n * Enables seconds in the time picker.\n */\n enableSeconds: boolean = false;\n\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n formatDate?: (value: any) => string = undefined;\n\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n hourIncrement: number = 1;\n\n /**\n * Displays the calendar inline.\n */\n inline: boolean = false;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n maxDate: string | Date | undefined = undefined;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n minDate: string | Date | undefined = undefined;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n maxTime: string | undefined = undefined;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n minTime: string | undefined = undefined;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n minuteIncrement: number = 5;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n mode: 'single' | 'multiple' | 'range' = 'single';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n nextArrow: string = '>';\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n noCalendar: boolean = false;\n\n /**\n * Default now to the current date\n */\n now: Date | string | number = new Date();\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n parseDate: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n prevArrow: string = '<';\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n shorthandCurrentMonth: boolean = false;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n static: boolean = false;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n time24hr: boolean = false;\n\n /**\n * When true, dates will parsed, formatted, and displayed in UTC.\n * It's recommended that date strings contain the timezone, but not necessary.\n */\n utc: boolean = false;\n\n /**\n * Enables display of week numbers in calendar.\n */\n weekNumbers: boolean = false;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n getWeek: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n wrap: boolean = false;\n\n /**\n * Array of plugin instances to use.\n */\n plugins: any[] = [];\n\n /**\n * The locale object or string to use for the locale.\n */\n locale: object | string = 'default';\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n convertModelValue: boolean = false;\n\n /**\n * The number of months shown.\n */\n showMonths: number = 1;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n monthSelectorType: 'static' | 'dropdown' = 'static';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n ignoredFocusElements: HTMLElement[] = [];\n}\n","import {\n Directive,\n ElementRef,\n AfterViewInit,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n forwardRef,\n HostListener,\n Renderer2,\n} from '@angular/core';\nimport {\n FlatpickrDefaults,\n DisableEnableDate,\n FlatpickrDefaultsInterface,\n} from './flatpickr-defaults.service';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport flatpickr from 'flatpickr';\n\nexport interface FlatPickrOutputOptions {\n selectedDates: Date[];\n dateString: string;\n instance: any;\n}\n\nexport interface FlatPickrDayCreateOutputOptions\n extends FlatPickrOutputOptions {\n dayElement: HTMLElement;\n}\n\nexport const FLATPICKR_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatpickrDirective),\n multi: true,\n};\n\n@Directive({\n selector: '[mwlFlatpickr]',\n providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],\n exportAs: 'mwlFlatpickr',\n})\nexport class FlatpickrDirective\n implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor\n{\n /**\n * Object-options that can be user for multiple instances of Flatpickr.\n * Option from this object is applied only if specific option is not specified.\n * Example:\n * ```typescript\n * options: FlatpickrDefaultsInterface = {\n * altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute\n * altInput: true // will be used since specific attribute is not provided\n * };\n * ```\n * ```html\n * <input\n * class=\"form-control\"\n * type=\"text\"\n * mwlFlatpickr\n * [options]=\"options\"\n * altFormat=\"d/m/Y\">\n * ```\n */\n @Input() options: FlatpickrDefaultsInterface = {};\n\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n @Input() altFormat: string;\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n @Input() altInput: boolean;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n @Input() altInputClass: string;\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n @Input() allowInput: boolean;\n\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n @Input() allowInvalidPreload: boolean;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n @Input() appendTo: HTMLElement;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n @Input() ariaDateFormat?: string;\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n @Input() clickOpens: boolean;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n @Input() dateFormat: string;\n\n /**\n * Initial value of the hour element.\n */\n @Input() defaultHour?: number;\n /**\n * Initial value of the minute element.\n */\n @Input() defaultMinute?: number;\n\n /**\n * Initial value of the seconds element.\n */\n @Input() defaultSeconds?: number;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n @Input() disable: DisableEnableDate[];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n @Input() disableMobile: boolean;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n @Input() enable: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n @Input() enableTime: boolean;\n\n /**\n * Enables seconds in the time picker.\n */\n @Input() enableSeconds: boolean;\n\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n @Input() formatDate?: (value: any) => string;\n\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n @Input() hourIncrement: number;\n\n /**\n * Displays the calendar inline.\n */\n @Input() inline: boolean;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n @Input() maxDate: string | Date;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n @Input() minDate: string | Date;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n @Input() maxTime: string;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n @Input() minTime: string;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n @Input() minuteIncrement: number;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n @Input() mode: 'single' | 'multiple' | 'range';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n @Input() nextArrow: string;\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n @Input() noCalendar: boolean;\n\n /**\n * Provide a date for 'today', which will be used instead of \"new Date()\"\n */\n @Input() now?: Date | string | number;\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n @Input() parseDate: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n @Input() prevArrow: string;\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n @Input() shorthandCurrentMonth: boolean;\n\n /**\n * The number of months shown.\n */\n @Input() showMonths: number;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n @Input() static: boolean;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n @Input() time24hr: boolean;\n\n /**\n * Enables display of week numbers in calendar.\n */\n @Input() weekNumbers: boolean;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n @Input() getWeek: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n @Input() wrap: boolean;\n\n /**\n * Array of plugin instances to use.\n */\n @Input() plugins: any[];\n\n /**\n * The locale object or string to use for the locale.\n */\n @Input() locale: object | string;\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n @Input() convertModelValue: boolean;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n @Input() monthSelectorType: 'static' | 'dropdown';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n @Input() ignoredFocusElements: HTMLElement[] = [];\n\n /**\n * Gets triggered once the calendar is in a ready state\n */\n @Output()\n flatpickrReady: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the user selects a date, or changes the time on a selected date.\n */\n @Output()\n flatpickrChange: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the input value is updated with a new date string.\n */\n @Output()\n flatpickrValueUpdate: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Gets triggered when the calendar is opened.\n */\n @Output()\n flatpickrOpen: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the calendar is closed.\n */\n @Output()\n flatpickrClose: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the month is changed, either by the user or programmatically.\n */\n @Output()\n flatpickrMonthChange: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Gets triggered when the year is changed, either by the user or programmatically.\n */\n @Output()\n flatpickrYearChange: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Take full control of every date cell with this output\n */\n @Output()\n flatpickrDayCreate: EventEmitter<FlatPickrDayCreateOutputOptions> =\n new EventEmitter();\n\n /**\n * The flatpickr instance where you can call methods like toggle(), open(), close() etc\n */\n instance: flatpickr.Instance;\n\n private isDisabled = false;\n private initialValue: any;\n\n onChangeFn: (value: any) => void = () => {};\n\n @HostListener('blur')\n onTouchedFn = () => {};\n\n constructor(\n private elm: ElementRef,\n private defaults: FlatpickrDefaults,\n private renderer: Renderer2\n ) {}\n\n ngAfterViewInit(): void {\n const options: any = {\n altFormat: this.altFormat,\n altInput: this.altInput,\n altInputClass: this.altInputClass,\n allowInput: this.allowInput,\n allowInvalidPreload: this.allowInvalidPreload,\n appendTo: this.appendTo,\n ariaDateFormat: this.ariaDateFormat,\n clickOpens: this.clickOpens,\n dateFormat: this.dateFormat,\n defaultHour: this.defaultHour,\n defaultMinute: this.defaultMinute,\n defaultSeconds: this.defaultSeconds,\n disable: this.disable,\n disableMobile: this.disableMobile,\n enable: this.enable,\n enableTime: this.enableTime,\n enableSeconds: this.enableSeconds,\n formatDate: this.formatDate,\n hourIncrement: this.hourIncrement,\n defaultDate: this.initialValue,\n inline: this.inline,\n maxDate: this.maxDate,\n minDate: this.minDate,\n maxTime: this.maxTime,\n minTime: this.minTime,\n minuteIncrement: this.minuteIncrement,\n mode: this.mode,\n nextArrow: this.nextArrow,\n noCalendar: this.noCalendar,\n now: this.now,\n parseDate: this.parseDate,\n prevArrow: this.prevArrow,\n shorthandCurrentMonth: this.shorthandCurrentMonth,\n showMonths: this.showMonths,\n monthSelectorType: this.monthSelectorType,\n static: this.static,\n time24hr: this.time24hr,\n weekNumbers: this.weekNumbers,\n getWeek: this.getWeek,\n wrap: this.wrap,\n plugins: this.plugins,\n locale: this.locale,\n ignoredFocusElements: this.ignoredFocusElements,\n onChange: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrChange.emit({ selectedDates, dateString, instance });\n },\n onOpen: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrOpen.emit({ selectedDates, dateString, instance });\n },\n onClose: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrClose.emit({ selectedDates, dateString, instance });\n },\n onMonthChange: (\n selectedDates: Date[],\n dateString: string,\n instance: any\n ) => {\n this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });\n },\n onYearChange: (\n selectedDates: Date[],\n dateString: string,\n instance: any\n ) => {\n this.flatpickrYearChange.emit({ selectedDates, dateString, instance });\n },\n onReady: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrReady.emit({ selectedDates, dateString, instance });\n },\n onValueUpdate: (\n selectedDates: Date[],\n dateString: string,\n instance: any\n ) => {\n this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });\n },\n onDayCreate: (\n selectedDates: Date[],\n dateString: string,\n instance: any,\n dayElement: HTMLElement\n ) => {\n this.flatpickrDayCreate.emit({\n selectedDates,\n dateString,\n instance,\n dayElement,\n });\n },\n };\n\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === 'undefined') {\n if (typeof (this.options as any)[key] !== 'undefined') {\n options[key] = (this.options as any)[key];\n } else {\n options[key] = (this.defaults as any)[key];\n }\n }\n });\n\n // @ts-ignore\n options.time_24hr = options.time24hr;\n\n // workaround bug in flatpickr 4.6 where it doesn't copy the classes across\n // TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released\n options.altInputClass =\n (options.altInputClass || '') + ' ' + this.elm.nativeElement.className;\n\n if (!options.enable) {\n delete options.enable;\n }\n\n this.instance = flatpickr(\n this.elm.nativeElement,\n options\n ) as flatpickr.Instance;\n this.setDisabledState(this.isDisabled);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.instance) {\n Object.keys(changes).forEach((inputKey) => {\n this.instance.set(inputKey as any, (this as any)[inputKey]);\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.instance) {\n this.instance.destroy();\n }\n }\n\n writeValue(value: any): void {\n let convertedValue: any = value;\n if (this.convertModelValue && this.mode === 'range' && value) {\n convertedValue = [value.from, value.to];\n }\n\n if (this.instance) {\n this.instance.setDate(convertedValue);\n } else {\n // flatpickr hasn't been initialised yet, store the value for later use\n this.initialValue = convertedValue;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n if (this.instance) {\n if (this.isDisabled) {\n this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');\n } else {\n this.renderer.removeAttribute(this.instance._input, 'disabled');\n }\n }\n }\n\n @HostListener('input')\n inputChanged(): void {\n const value: string = this.elm.nativeElement.value;\n if (this.convertModelValue && typeof value === 'string') {\n switch (this.mode) {\n case 'multiple':\n const dates: Array<Date | undefined> = value\n .split('; ')\n .map((str) =>\n this.instance.parseDate(\n str,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime\n )\n );\n this.onChangeFn(dates);\n break;\n\n case 'range':\n const [from, to] = value\n .split(this.instance.l10n.rangeSeparator)\n .map((str) =>\n this.instance.parseDate(\n str,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime\n )\n );\n this.onChangeFn({ from, to });\n break;\n\n case 'single':\n default:\n this.onChangeFn(\n this.instance.parseDate(\n value,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime\n )\n );\n }\n } else {\n this.onChangeFn(value);\n }\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n InjectionToken,\n Provider\n} from '@angular/core';\nimport { FlatpickrDirective } from './flatpickr.directive';\nimport {\n FlatpickrDefaults,\n FlatpickrDefaultsInterface\n} from './flatpickr-defaults.service';\n\nexport const USER_DEFAULTS = new InjectionToken('flatpickr defaults');\n\nexport function defaultsFactory(\n userDefaults: FlatpickrDefaultsInterface\n): FlatpickrDefaults {\n const defaults: FlatpickrDefaults = new FlatpickrDefaults();\n Object.assign(defaults, userDefaults);\n return defaults;\n}\n\n@NgModule({\n declarations: [FlatpickrDirective],\n exports: [FlatpickrDirective]\n})\nexport class FlatpickrModule {\n static forRoot(\n userDefaults: FlatpickrDefaultsInterface = {}\n ): ModuleWithProviders<FlatpickrModule> {\n return {\n ngModule: FlatpickrModule,\n providers: [\n {\n provide: USER_DEFAULTS,\n useValue: userDefaults\n },\n {\n provide: FlatpickrDefaults,\n useFactory: defaultsFactory,\n deps: [USER_DEFAULTS]\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of angularx-flatpickr\n */\n\nexport * from './lib/flatpickr.module';\nexport { FlatpickrDefaults, FlatpickrDefaultsInterface } from './lib/flatpickr-defaults.service';\nexport { FlatpickrDirective } from './lib/flatpickr.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FlatpickrDefaults"],"mappings":"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"}
import * as i0 from '@angular/core';
import { Injectable, forwardRef, EventEmitter, Directive, Input, Output, HostListener, InjectionToken, NgModule } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import flatpickr from 'flatpickr';
class FlatpickrDefaults {
constructor() {
/**
* Exactly the same as date format, but for the altInput field.
*/
this.altFormat = 'F j, Y';
/**
* Show the user a readable date (as per altFormat), but return something totally different to the server.
*/
this.altInput = false;
/**
* This class will be added to the input element created by the altInput option.
* Note that `altInput` already inherits classes from the original input.
*/
this.altInputClass = '';
/**
* Allows the user to enter a date directly input the input field. By default, direct entry is disabled.
*/
this.allowInput = false;
/**
* Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid
*/
this.allowInvalidPreload = false;
/**
* Instead of `body`, appends the calendar to the specified node instead.
*/
this.appendTo = undefined;
/**
* Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.
*/
this.ariaDateFormat = 'F j, Y';
/**
* Whether clicking on the input should open the picker.
* You could disable this if you wish to open the calendar manually `with.open()`.
*/
this.clickOpens = true;
/**
* A string of characters which are used to define how the date will be displayed in the input box.
* The supported characters are defined in the table below.
*/
this.dateFormat = 'Y-m-d';
/**
* Initial value of the hour element.
*/
this.defaultHour = 12;
/**
* Initial value of the minute element.
*/
this.defaultMinute = 0;
/**
* Initial value of the seconds element.
*/
this.defaultSeconds = 0;
/**
* See <a href="https://chmln.github.io/flatpickr/examples/#disabling-specific-dates">disabling dates</a>.
*/
this.disable = [];
/**
* Set disableMobile to true to always use the non-native picker.
* By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.
*/
this.disableMobile = false;
/**
* Enables time picker.
*/
this.enableTime = false;
/**
* Enables seconds in the time picker.
*/
this.enableSeconds = false;
/**
* Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.
*/
this.formatDate = undefined;
/**
* Adjusts the step for the hour input (incl. scrolling).
*/
this.hourIncrement = 1;
/**
* Displays the calendar inline.
*/
this.inline = false;
/**
* The maximum date that a user can pick to (inclusive).
*/
this.maxDate = undefined;
/**
* The minimum date that a user can start picking from (inclusive).
*/
this.minDate = undefined;
/**
* The maximum time that a user can pick to (inclusive).
*/
this.maxTime = undefined;
/**
* The minimum time that a user can start picking from (inclusive).
*/
this.minTime = undefined;
/**
* Adjusts the step for the minute input (incl. scrolling).
*/
this.minuteIncrement = 5;
/**
* Select a single date, multiple dates or a date range.
*/
this.mode = 'single';
/**
* HTML for the arrow icon, used to switch months.
*/
this.nextArrow = '>';
/**
* Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.
*/
this.noCalendar = false;
/**
* Default now to the current date
*/
this.now = new Date();
/**
* HTML for the left arrow icon.
*/
this.prevArrow = '<';
/**
* Show the month using the shorthand version (ie, Sep instead of September).
*/
this.shorthandCurrentMonth = false;
/**
* Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).
*/
this.static = false;
/**
* Displays time picker in 24 hour mode without AM/PM selection when enabled.
*/
this.time24hr = false;
/**
* When true, dates will parsed, formatted, and displayed in UTC.
* It's recommended that date strings contain the timezone, but not necessary.
*/
this.utc = false;
/**
* Enables display of week numbers in calendar.
*/
this.weekNumbers = false;
/**
* Custom elements and input groups.
*/
this.wrap = false;
/**
* Array of plugin instances to use.
*/
this.plugins = [];
/**
* The locale object or string to use for the locale.
*/
this.locale = 'default';
/**
* Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`
*/
this.convertModelValue = false;
/**
* The number of months shown.
*/
this.showMonths = 1;
/**
* How the month should be displayed in the header of the calendar.
*/
this.monthSelectorType = 'static';
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
}
}
FlatpickrDefaults.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
FlatpickrDefaults.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDefaults, decorators: [{
type: Injectable
}] });
const FLATPICKR_CONTROL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => FlatpickrDirective),
multi: true,
};
class FlatpickrDirective {
constructor(elm, defaults, renderer) {
this.elm = elm;
this.defaults = defaults;
this.renderer = renderer;
/**
* Object-options that can be user for multiple instances of Flatpickr.
* Option from this object is applied only if specific option is not specified.
* Example:
* ```typescript
* options: FlatpickrDefaultsInterface = {
* altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute
* altInput: true // will be used since specific attribute is not provided
* };
* ```
* ```html
* <input
* class="form-control"
* type="text"
* mwlFlatpickr
* [options]="options"
* altFormat="d/m/Y">
* ```
*/
this.options = {};
/**
* Array of HTML elements that should not close the picker on click.
*/
this.ignoredFocusElements = [];
/**
* Gets triggered once the calendar is in a ready state
*/
this.flatpickrReady = new EventEmitter();
/**
* Gets triggered when the user selects a date, or changes the time on a selected date.
*/
this.flatpickrChange = new EventEmitter();
/**
* Gets triggered when the input value is updated with a new date string.
*/
this.flatpickrValueUpdate = new EventEmitter();
/**
* Gets triggered when the calendar is opened.
*/
this.flatpickrOpen = new EventEmitter();
/**
* Gets triggered when the calendar is closed.
*/
this.flatpickrClose = new EventEmitter();
/**
* Gets triggered when the month is changed, either by the user or programmatically.
*/
this.flatpickrMonthChange = new EventEmitter();
/**
* Gets triggered when the year is changed, either by the user or programmatically.
*/
this.flatpickrYearChange = new EventEmitter();
/**
* Take full control of every date cell with this output
*/
this.flatpickrDayCreate = new EventEmitter();
this.isDisabled = false;
this.onChangeFn = () => { };
this.onTouchedFn = () => { };
}
ngAfterViewInit() {
const options = {
altFormat: this.altFormat,
altInput: this.altInput,
altInputClass: this.altInputClass,
allowInput: this.allowInput,
allowInvalidPreload: this.allowInvalidPreload,
appendTo: this.appendTo,
ariaDateFormat: this.ariaDateFormat,
clickOpens: this.clickOpens,
dateFormat: this.dateFormat,
defaultHour: this.defaultHour,
defaultMinute: this.defaultMinute,
defaultSeconds: this.defaultSeconds,
disable: this.disable,
disableMobile: this.disableMobile,
enable: this.enable,
enableTime: this.enableTime,
enableSeconds: this.enableSeconds,
formatDate: this.formatDate,
hourIncrement: this.hourIncrement,
defaultDate: this.initialValue,
inline: this.inline,
maxDate: this.maxDate,
minDate: this.minDate,
maxTime: this.maxTime,
minTime: this.minTime,
minuteIncrement: this.minuteIncrement,
mode: this.mode,
nextArrow: this.nextArrow,
noCalendar: this.noCalendar,
now: this.now,
parseDate: this.parseDate,
prevArrow: this.prevArrow,
shorthandCurrentMonth: this.shorthandCurrentMonth,
showMonths: this.showMonths,
monthSelectorType: this.monthSelectorType,
static: this.static,
time24hr: this.time24hr,
weekNumbers: this.weekNumbers,
getWeek: this.getWeek,
wrap: this.wrap,
plugins: this.plugins,
locale: this.locale,
ignoredFocusElements: this.ignoredFocusElements,
onChange: (selectedDates, dateString, instance) => {
this.flatpickrChange.emit({ selectedDates, dateString, instance });
},
onOpen: (selectedDates, dateString, instance) => {
this.flatpickrOpen.emit({ selectedDates, dateString, instance });
},
onClose: (selectedDates, dateString, instance) => {
this.flatpickrClose.emit({ selectedDates, dateString, instance });
},
onMonthChange: (selectedDates, dateString, instance) => {
this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });
},
onYearChange: (selectedDates, dateString, instance) => {
this.flatpickrYearChange.emit({ selectedDates, dateString, instance });
},
onReady: (selectedDates, dateString, instance) => {
this.flatpickrReady.emit({ selectedDates, dateString, instance });
},
onValueUpdate: (selectedDates, dateString, instance) => {
this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });
},
onDayCreate: (selectedDates, dateString, instance, dayElement) => {
this.flatpickrDayCreate.emit({
selectedDates,
dateString,
instance,
dayElement,
});
},
};
Object.keys(options).forEach((key) => {
if (typeof options[key] === 'undefined') {
if (typeof this.options[key] !== 'undefined') {
options[key] = this.options[key];
}
else {
options[key] = this.defaults[key];
}
}
});
// @ts-ignore
options.time_24hr = options.time24hr;
// workaround bug in flatpickr 4.6 where it doesn't copy the classes across
// TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released
options.altInputClass =
(options.altInputClass || '') + ' ' + this.elm.nativeElement.className;
if (!options.enable) {
delete options.enable;
}
this.instance = flatpickr(this.elm.nativeElement, options);
this.setDisabledState(this.isDisabled);
}
ngOnChanges(changes) {
if (this.instance) {
Object.keys(changes).forEach((inputKey) => {
this.instance.set(inputKey, this[inputKey]);
});
}
}
ngOnDestroy() {
if (this.instance) {
this.instance.destroy();
}
}
writeValue(value) {
let convertedValue = value;
if (this.convertModelValue && this.mode === 'range' && value) {
convertedValue = [value.from, value.to];
}
if (this.instance) {
this.instance.setDate(convertedValue);
}
else {
// flatpickr hasn't been initialised yet, store the value for later use
this.initialValue = convertedValue;
}
}
registerOnChange(fn) {
this.onChangeFn = fn;
}
registerOnTouched(fn) {
this.onTouchedFn = fn;
}
setDisabledState(isDisabled) {
this.isDisabled = isDisabled;
if (this.instance) {
if (this.isDisabled) {
this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');
}
else {
this.renderer.removeAttribute(this.instance._input, 'disabled');
}
}
}
inputChanged() {
const value = this.elm.nativeElement.value;
if (this.convertModelValue && typeof value === 'string') {
switch (this.mode) {
case 'multiple':
const dates = value
.split('; ')
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn(dates);
break;
case 'range':
const [from, to] = value
.split(this.instance.l10n.rangeSeparator)
.map((str) => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));
this.onChangeFn({ from, to });
break;
case 'single':
default:
this.onChangeFn(this.instance.parseDate(value, this.instance.config.dateFormat, !this.instance.config.enableTime));
}
}
else {
this.onChangeFn(value);
}
}
}
FlatpickrDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDirective, deps: [{ token: i0.ElementRef }, { token: FlatpickrDefaults }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
FlatpickrDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: FlatpickrDirective, selector: "[mwlFlatpickr]", inputs: { options: "options", altFormat: "altFormat", altInput: "altInput", altInputClass: "altInputClass", allowInput: "allowInput", allowInvalidPreload: "allowInvalidPreload", appendTo: "appendTo", ariaDateFormat: "ariaDateFormat", clickOpens: "clickOpens", dateFormat: "dateFormat", defaultHour: "defaultHour", defaultMinute: "defaultMinute", defaultSeconds: "defaultSeconds", disable: "disable", disableMobile: "disableMobile", enable: "enable", enableTime: "enableTime", enableSeconds: "enableSeconds", formatDate: "formatDate", hourIncrement: "hourIncrement", inline: "inline", maxDate: "maxDate", minDate: "minDate", maxTime: "maxTime", minTime: "minTime", minuteIncrement: "minuteIncrement", mode: "mode", nextArrow: "nextArrow", noCalendar: "noCalendar", now: "now", parseDate: "parseDate", prevArrow: "prevArrow", shorthandCurrentMonth: "shorthandCurrentMonth", showMonths: "showMonths", static: "static", time24hr: "time24hr", weekNumbers: "weekNumbers", getWeek: "getWeek", wrap: "wrap", plugins: "plugins", locale: "locale", convertModelValue: "convertModelValue", monthSelectorType: "monthSelectorType", ignoredFocusElements: "ignoredFocusElements" }, outputs: { flatpickrReady: "flatpickrReady", flatpickrChange: "flatpickrChange", flatpickrValueUpdate: "flatpickrValueUpdate", flatpickrOpen: "flatpickrOpen", flatpickrClose: "flatpickrClose", flatpickrMonthChange: "flatpickrMonthChange", flatpickrYearChange: "flatpickrYearChange", flatpickrDayCreate: "flatpickrDayCreate" }, host: { listeners: { "blur": "onTouchedFn()", "input": "inputChanged()" } }, providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR], exportAs: ["mwlFlatpickr"], usesOnChanges: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrDirective, decorators: [{
type: Directive,
args: [{
selector: '[mwlFlatpickr]',
providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],
exportAs: 'mwlFlatpickr',
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FlatpickrDefaults }, { type: i0.Renderer2 }]; }, propDecorators: { options: [{
type: Input
}], altFormat: [{
type: Input
}], altInput: [{
type: Input
}], altInputClass: [{
type: Input
}], allowInput: [{
type: Input
}], allowInvalidPreload: [{
type: Input
}], appendTo: [{
type: Input
}], ariaDateFormat: [{
type: Input
}], clickOpens: [{
type: Input
}], dateFormat: [{
type: Input
}], defaultHour: [{
type: Input
}], defaultMinute: [{
type: Input
}], defaultSeconds: [{
type: Input
}], disable: [{
type: Input
}], disableMobile: [{
type: Input
}], enable: [{
type: Input
}], enableTime: [{
type: Input
}], enableSeconds: [{
type: Input
}], formatDate: [{
type: Input
}], hourIncrement: [{
type: Input
}], inline: [{
type: Input
}], maxDate: [{
type: Input
}], minDate: [{
type: Input
}], maxTime: [{
type: Input
}], minTime: [{
type: Input
}], minuteIncrement: [{
type: Input
}], mode: [{
type: Input
}], nextArrow: [{
type: Input
}], noCalendar: [{
type: Input
}], now: [{
type: Input
}], parseDate: [{
type: Input
}], prevArrow: [{
type: Input
}], shorthandCurrentMonth: [{
type: Input
}], showMonths: [{
type: Input
}], static: [{
type: Input
}], time24hr: [{
type: Input
}], weekNumbers: [{
type: Input
}], getWeek: [{
type: Input
}], wrap: [{
type: Input
}], plugins: [{
type: Input
}], locale: [{
type: Input
}], convertModelValue: [{
type: Input
}], monthSelectorType: [{
type: Input
}], ignoredFocusElements: [{
type: Input
}], flatpickrReady: [{
type: Output
}], flatpickrChange: [{
type: Output
}], flatpickrValueUpdate: [{
type: Output
}], flatpickrOpen: [{
type: Output
}], flatpickrClose: [{
type: Output
}], flatpickrMonthChange: [{
type: Output
}], flatpickrYearChange: [{
type: Output
}], flatpickrDayCreate: [{
type: Output
}], onTouchedFn: [{
type: HostListener,
args: ['blur']
}], inputChanged: [{
type: HostListener,
args: ['input']
}] } });
const USER_DEFAULTS = new InjectionToken('flatpickr defaults');
function defaultsFactory(userDefaults) {
const defaults = new FlatpickrDefaults();
Object.assign(defaults, userDefaults);
return defaults;
}
class FlatpickrModule {
static forRoot(userDefaults = {}) {
return {
ngModule: FlatpickrModule,
providers: [
{
provide: USER_DEFAULTS,
useValue: userDefaults
},
{
provide: FlatpickrDefaults,
useFactory: defaultsFactory,
deps: [USER_DEFAULTS]
}
]
};
}
}
FlatpickrModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
FlatpickrModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, declarations: [FlatpickrDirective], exports: [FlatpickrDirective] });
FlatpickrModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: FlatpickrModule, decorators: [{
type: NgModule,
args: [{
declarations: [FlatpickrDirective],
exports: [FlatpickrDirective]
}]
}] });
/*
* Public API Surface of angularx-flatpickr
*/
/**
* Generated bundle index. Do not edit.
*/
export { FlatpickrDefaults, FlatpickrDirective, FlatpickrModule, USER_DEFAULTS, defaultsFactory };
//# sourceMappingURL=angularx-flatpickr.mjs.map
{"version":3,"file":"angularx-flatpickr.mjs","sources":["../../../projects/angularx-flatpickr/src/lib/flatpickr-defaults.service.ts","../../../projects/angularx-flatpickr/src/lib/flatpickr.directive.ts","../../../projects/angularx-flatpickr/src/lib/flatpickr.module.ts","../../../projects/angularx-flatpickr/src/public-api.ts","../../../projects/angularx-flatpickr/src/angularx-flatpickr.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport type DisableEnableDate =\n | string\n | Date\n | { from: Date | string; to: Date | string }\n | ((date: Date) => boolean);\n\nexport interface FlatpickrDefaultsInterface {\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n altFormat?: string;\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n altInput?: boolean;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n altInputClass?: string;\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n allowInput?: boolean;\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n allowInvalidPreload?: boolean;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n appendTo?: HTMLElement;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n ariaDateFormat?: string;\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n clickOpens?: boolean;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n dateFormat?: string;\n /**\n * Initial value of the hour element.\n */\n defaultHour?: number;\n /**\n * Initial value of the minute element.\n */\n defaultMinute?: number;\n /**\n * Initial value of the seconds element.\n */\n defaultSeconds?: number;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n disable?: DisableEnableDate[];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n disableMobile?: boolean;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n enable?: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n enableTime?: boolean;\n\n /**\n * Enables seconds in the time picker.\n */\n enableSeconds?: boolean;\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n formatDate?: (value: any) => string;\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n hourIncrement?: number;\n\n /**\n * Displays the calendar inline.\n */\n inline?: boolean;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n maxDate?: string | Date;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n minDate?: string | Date;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n maxTime?: string;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n minTime?: string;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n minuteIncrement?: number;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n mode?: 'single' | 'multiple' | 'range';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n nextArrow?: string;\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n noCalendar?: boolean;\n\n /**\n * Provide a date for 'today', which will be used instead of \"new Date()\"\n */\n now?: Date | string | number;\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n parseDate?: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n prevArrow?: string;\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n shorthandCurrentMonth?: boolean;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n static?: boolean;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n time24hr?: boolean;\n\n /**\n * When true, dates will parsed, formatted, and displayed in UTC.\n * It's recommended that date strings contain the timezone, but not necessary.\n */\n utc?: boolean;\n\n /**\n * Enables display of week numbers in calendar.\n */\n weekNumbers?: boolean;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n getWeek?: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n wrap?: boolean;\n\n /**\n * Array of plugin instances to use.\n */\n plugins?: any[];\n\n /**\n * The locale object or string to use for the locale.\n */\n locale?: object | string;\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n convertModelValue?: boolean;\n\n /**\n * The number of months shown.\n */\n showMonths?: number;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n monthSelectorType?: 'static' | 'dropdown';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n ignoredFocusElements?: HTMLElement[];\n}\n\n@Injectable()\nexport class FlatpickrDefaults implements FlatpickrDefaultsInterface {\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n altFormat: string = 'F j, Y';\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n altInput: boolean = false;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n altInputClass: string = '';\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n allowInput: boolean = false;\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n allowInvalidPreload: boolean = false;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n appendTo: HTMLElement | undefined = undefined;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n ariaDateFormat?: string = 'F j, Y';\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n clickOpens: boolean = true;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n dateFormat: string = 'Y-m-d';\n\n /**\n * Initial value of the hour element.\n */\n defaultHour?: number = 12;\n\n /**\n * Initial value of the minute element.\n */\n defaultMinute?: number = 0;\n\n /**\n * Initial value of the seconds element.\n */\n defaultSeconds?: number = 0;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n disable: DisableEnableDate[] = [];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n disableMobile: boolean = false;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n enable: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n enableTime: boolean = false;\n\n /**\n * Enables seconds in the time picker.\n */\n enableSeconds: boolean = false;\n\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n formatDate?: (value: any) => string = undefined;\n\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n hourIncrement: number = 1;\n\n /**\n * Displays the calendar inline.\n */\n inline: boolean = false;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n maxDate: string | Date | undefined = undefined;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n minDate: string | Date | undefined = undefined;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n maxTime: string | undefined = undefined;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n minTime: string | undefined = undefined;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n minuteIncrement: number = 5;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n mode: 'single' | 'multiple' | 'range' = 'single';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n nextArrow: string = '>';\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n noCalendar: boolean = false;\n\n /**\n * Default now to the current date\n */\n now: Date | string | number = new Date();\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n parseDate: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n prevArrow: string = '<';\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n shorthandCurrentMonth: boolean = false;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n static: boolean = false;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n time24hr: boolean = false;\n\n /**\n * When true, dates will parsed, formatted, and displayed in UTC.\n * It's recommended that date strings contain the timezone, but not necessary.\n */\n utc: boolean = false;\n\n /**\n * Enables display of week numbers in calendar.\n */\n weekNumbers: boolean = false;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n getWeek: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n wrap: boolean = false;\n\n /**\n * Array of plugin instances to use.\n */\n plugins: any[] = [];\n\n /**\n * The locale object or string to use for the locale.\n */\n locale: object | string = 'default';\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n convertModelValue: boolean = false;\n\n /**\n * The number of months shown.\n */\n showMonths: number = 1;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n monthSelectorType: 'static' | 'dropdown' = 'static';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n ignoredFocusElements: HTMLElement[] = [];\n}\n","import {\n Directive,\n ElementRef,\n AfterViewInit,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n forwardRef,\n HostListener,\n Renderer2,\n} from '@angular/core';\nimport {\n FlatpickrDefaults,\n DisableEnableDate,\n FlatpickrDefaultsInterface,\n} from './flatpickr-defaults.service';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport flatpickr from 'flatpickr';\n\nexport interface FlatPickrOutputOptions {\n selectedDates: Date[];\n dateString: string;\n instance: any;\n}\n\nexport interface FlatPickrDayCreateOutputOptions\n extends FlatPickrOutputOptions {\n dayElement: HTMLElement;\n}\n\nexport const FLATPICKR_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatpickrDirective),\n multi: true,\n};\n\n@Directive({\n selector: '[mwlFlatpickr]',\n providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],\n exportAs: 'mwlFlatpickr',\n})\nexport class FlatpickrDirective\n implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor\n{\n /**\n * Object-options that can be user for multiple instances of Flatpickr.\n * Option from this object is applied only if specific option is not specified.\n * Example:\n * ```typescript\n * options: FlatpickrDefaultsInterface = {\n * altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute\n * altInput: true // will be used since specific attribute is not provided\n * };\n * ```\n * ```html\n * <input\n * class=\"form-control\"\n * type=\"text\"\n * mwlFlatpickr\n * [options]=\"options\"\n * altFormat=\"d/m/Y\">\n * ```\n */\n @Input() options: FlatpickrDefaultsInterface = {};\n\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n @Input() altFormat: string;\n\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n @Input() altInput: boolean;\n\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n @Input() altInputClass: string;\n\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n @Input() allowInput: boolean;\n\n\n /**\n * Allows the preloading of an invalid date. When disabled, the field will be cleared if the provided date is invalid\n */\n @Input() allowInvalidPreload: boolean;\n\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n @Input() appendTo: HTMLElement;\n\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n @Input() ariaDateFormat?: string;\n\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n @Input() clickOpens: boolean;\n\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n @Input() dateFormat: string;\n\n /**\n * Initial value of the hour element.\n */\n @Input() defaultHour?: number;\n /**\n * Initial value of the minute element.\n */\n @Input() defaultMinute?: number;\n\n /**\n * Initial value of the seconds element.\n */\n @Input() defaultSeconds?: number;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-specific-dates\">disabling dates</a>.\n */\n @Input() disable: DisableEnableDate[];\n\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n @Input() disableMobile: boolean;\n\n /**\n * See <a href=\"https://chmln.github.io/flatpickr/examples/#disabling-all-dates-except-select-few\">enabling dates</a>.\n */\n @Input() enable: DisableEnableDate[];\n\n /**\n * Enables time picker.\n */\n @Input() enableTime: boolean;\n\n /**\n * Enables seconds in the time picker.\n */\n @Input() enableSeconds: boolean;\n\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n @Input() formatDate?: (value: any) => string;\n\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n @Input() hourIncrement: number;\n\n /**\n * Displays the calendar inline.\n */\n @Input() inline: boolean;\n\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n @Input() maxDate: string | Date;\n\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n @Input() minDate: string | Date;\n\n /**\n * The maximum time that a user can pick to (inclusive).\n */\n @Input() maxTime: string;\n\n /**\n * The minimum time that a user can start picking from (inclusive).\n */\n @Input() minTime: string;\n\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n @Input() minuteIncrement: number;\n\n /**\n * Select a single date, multiple dates or a date range.\n */\n @Input() mode: 'single' | 'multiple' | 'range';\n\n /**\n * HTML for the arrow icon, used to switch months.\n */\n @Input() nextArrow: string;\n\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n @Input() noCalendar: boolean;\n\n /**\n * Provide a date for 'today', which will be used instead of \"new Date()\"\n */\n @Input() now?: Date | string | number;\n\n /**\n * Function that expects a date string and must return a Date object.\n */\n @Input() parseDate: (str: string) => Date;\n\n /**\n * HTML for the left arrow icon.\n */\n @Input() prevArrow: string;\n\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n @Input() shorthandCurrentMonth: boolean;\n\n /**\n * The number of months shown.\n */\n @Input() showMonths: number;\n\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n @Input() static: boolean;\n\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n @Input() time24hr: boolean;\n\n /**\n * Enables display of week numbers in calendar.\n */\n @Input() weekNumbers: boolean;\n\n /**\n * You may override the function that extracts the week numbers from a Date by supplying a getWeek function.\n * It takes in a date as a parameter and should return a corresponding string that you want to appear left of every week.\n */\n @Input() getWeek: (date: Date) => string;\n\n /**\n * Custom elements and input groups.\n */\n @Input() wrap: boolean;\n\n /**\n * Array of plugin instances to use.\n */\n @Input() plugins: any[];\n\n /**\n * The locale object or string to use for the locale.\n */\n @Input() locale: object | string;\n\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n @Input() convertModelValue: boolean;\n\n /**\n * How the month should be displayed in the header of the calendar.\n */\n @Input() monthSelectorType: 'static' | 'dropdown';\n\n /**\n * Array of HTML elements that should not close the picker on click.\n */\n @Input() ignoredFocusElements: HTMLElement[] = [];\n\n /**\n * Gets triggered once the calendar is in a ready state\n */\n @Output()\n flatpickrReady: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the user selects a date, or changes the time on a selected date.\n */\n @Output()\n flatpickrChange: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the input value is updated with a new date string.\n */\n @Output()\n flatpickrValueUpdate: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Gets triggered when the calendar is opened.\n */\n @Output()\n flatpickrOpen: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the calendar is closed.\n */\n @Output()\n flatpickrClose: EventEmitter<FlatPickrOutputOptions> = new EventEmitter();\n\n /**\n * Gets triggered when the month is changed, either by the user or programmatically.\n */\n @Output()\n flatpickrMonthChange: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Gets triggered when the year is changed, either by the user or programmatically.\n */\n @Output()\n flatpickrYearChange: EventEmitter<FlatPickrOutputOptions> =\n new EventEmitter();\n\n /**\n * Take full control of every date cell with this output\n */\n @Output()\n flatpickrDayCreate: EventEmitter<FlatPickrDayCreateOutputOptions> =\n new EventEmitter();\n\n /**\n * The flatpickr instance where you can call methods like toggle(), open(), close() etc\n */\n instance: flatpickr.Instance;\n\n private isDisabled = false;\n private initialValue: any;\n\n onChangeFn: (value: any) => void = () => {};\n\n @HostListener('blur')\n onTouchedFn = () => {};\n\n constructor(\n private elm: ElementRef,\n private defaults: FlatpickrDefaults,\n private renderer: Renderer2\n ) {}\n\n ngAfterViewInit(): void {\n const options: any = {\n altFormat: this.altFormat,\n altInput: this.altInput,\n altInputClass: this.altInputClass,\n allowInput: this.allowInput,\n allowInvalidPreload: this.allowInvalidPreload,\n appendTo: this.appendTo,\n ariaDateFormat: this.ariaDateFormat,\n clickOpens: this.clickOpens,\n dateFormat: this.dateFormat,\n defaultHour: this.defaultHour,\n defaultMinute: this.defaultMinute,\n defaultSeconds: this.defaultSeconds,\n disable: this.disable,\n disableMobile: this.disableMobile,\n enable: this.enable,\n enableTime: this.enableTime,\n enableSeconds: this.enableSeconds,\n formatDate: this.formatDate,\n hourIncrement: this.hourIncrement,\n defaultDate: this.initialValue,\n inline: this.inline,\n maxDate: this.maxDate,\n minDate: this.minDate,\n maxTime: this.maxTime,\n minTime: this.minTime,\n minuteIncrement: this.minuteIncrement,\n mode: this.mode,\n nextArrow: this.nextArrow,\n noCalendar: this.noCalendar,\n now: this.now,\n parseDate: this.parseDate,\n prevArrow: this.prevArrow,\n shorthandCurrentMonth: this.shorthandCurrentMonth,\n showMonths: this.showMonths,\n monthSelectorType: this.monthSelectorType,\n static: this.static,\n time24hr: this.time24hr,\n weekNumbers: this.weekNumbers,\n getWeek: this.getWeek,\n wrap: this.wrap,\n plugins: this.plugins,\n locale: this.locale,\n ignoredFocusElements: this.ignoredFocusElements,\n onChange: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrChange.emit({ selectedDates, dateString, instance });\n },\n onOpen: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrOpen.emit({ selectedDates, dateString, instance });\n },\n onClose: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrClose.emit({ selectedDates, dateString, instance });\n },\n onMonthChange: (\n selectedDates: Date[],\n dateString: string,\n instance: any\n ) => {\n this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });\n },\n onYearChange: (\n selectedDates: Date[],\n dateString: string,\n instance: any\n ) => {\n this.flatpickrYearChange.emit({ selectedDates, dateString, instance });\n },\n onReady: (selectedDates: Date[], dateString: string, instance: any) => {\n this.flatpickrReady.emit({ selectedDates, dateString, instance });\n },\n onValueUpdate: (\n selectedDates: Date[],\n dateString: string,\n instance: any\n ) => {\n this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });\n },\n onDayCreate: (\n selectedDates: Date[],\n dateString: string,\n instance: any,\n dayElement: HTMLElement\n ) => {\n this.flatpickrDayCreate.emit({\n selectedDates,\n dateString,\n instance,\n dayElement,\n });\n },\n };\n\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === 'undefined') {\n if (typeof (this.options as any)[key] !== 'undefined') {\n options[key] = (this.options as any)[key];\n } else {\n options[key] = (this.defaults as any)[key];\n }\n }\n });\n\n // @ts-ignore\n options.time_24hr = options.time24hr;\n\n // workaround bug in flatpickr 4.6 where it doesn't copy the classes across\n // TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released\n options.altInputClass =\n (options.altInputClass || '') + ' ' + this.elm.nativeElement.className;\n\n if (!options.enable) {\n delete options.enable;\n }\n\n this.instance = flatpickr(\n this.elm.nativeElement,\n options\n ) as flatpickr.Instance;\n this.setDisabledState(this.isDisabled);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.instance) {\n Object.keys(changes).forEach((inputKey) => {\n this.instance.set(inputKey as any, (this as any)[inputKey]);\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this.instance) {\n this.instance.destroy();\n }\n }\n\n writeValue(value: any): void {\n let convertedValue: any = value;\n if (this.convertModelValue && this.mode === 'range' && value) {\n convertedValue = [value.from, value.to];\n }\n\n if (this.instance) {\n this.instance.setDate(convertedValue);\n } else {\n // flatpickr hasn't been initialised yet, store the value for later use\n this.initialValue = convertedValue;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n if (this.instance) {\n if (this.isDisabled) {\n this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');\n } else {\n this.renderer.removeAttribute(this.instance._input, 'disabled');\n }\n }\n }\n\n @HostListener('input')\n inputChanged(): void {\n const value: string = this.elm.nativeElement.value;\n if (this.convertModelValue && typeof value === 'string') {\n switch (this.mode) {\n case 'multiple':\n const dates: Array<Date | undefined> = value\n .split('; ')\n .map((str) =>\n this.instance.parseDate(\n str,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime\n )\n );\n this.onChangeFn(dates);\n break;\n\n case 'range':\n const [from, to] = value\n .split(this.instance.l10n.rangeSeparator)\n .map((str) =>\n this.instance.parseDate(\n str,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime\n )\n );\n this.onChangeFn({ from, to });\n break;\n\n case 'single':\n default:\n this.onChangeFn(\n this.instance.parseDate(\n value,\n this.instance.config.dateFormat,\n !this.instance.config.enableTime\n )\n );\n }\n } else {\n this.onChangeFn(value);\n }\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n InjectionToken,\n Provider\n} from '@angular/core';\nimport { FlatpickrDirective } from './flatpickr.directive';\nimport {\n FlatpickrDefaults,\n FlatpickrDefaultsInterface\n} from './flatpickr-defaults.service';\n\nexport const USER_DEFAULTS = new InjectionToken('flatpickr defaults');\n\nexport function defaultsFactory(\n userDefaults: FlatpickrDefaultsInterface\n): FlatpickrDefaults {\n const defaults: FlatpickrDefaults = new FlatpickrDefaults();\n Object.assign(defaults, userDefaults);\n return defaults;\n}\n\n@NgModule({\n declarations: [FlatpickrDirective],\n exports: [FlatpickrDirective]\n})\nexport class FlatpickrModule {\n static forRoot(\n userDefaults: FlatpickrDefaultsInterface = {}\n ): ModuleWithProviders<FlatpickrModule> {\n return {\n ngModule: FlatpickrModule,\n providers: [\n {\n provide: USER_DEFAULTS,\n useValue: userDefaults\n },\n {\n provide: FlatpickrDefaults,\n useFactory: defaultsFactory,\n deps: [USER_DEFAULTS]\n }\n ]\n };\n }\n}\n","/*\n * Public API Surface of angularx-flatpickr\n */\n\nexport * from './lib/flatpickr.module';\nexport { FlatpickrDefaults, FlatpickrDefaultsInterface } from './lib/flatpickr-defaults.service';\nexport { FlatpickrDirective } from './lib/flatpickr.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FlatpickrDefaults"],"mappings":";;;;;MAwOa,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEE;;AAEG;QACH,IAAS,CAAA,SAAA,GAAW,QAAQ,CAAC;AAE7B;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAE1B;;;AAGG;QACH,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;AAE3B;;AAEG;QACH,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAE5B;;AAEG;QACH,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;AAErC;;AAEG;QACH,IAAQ,CAAA,QAAA,GAA4B,SAAS,CAAC;AAE9C;;AAEG;QACH,IAAc,CAAA,cAAA,GAAY,QAAQ,CAAC;AAEnC;;;AAGG;QACH,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;AAE3B;;;AAGG;QACH,IAAU,CAAA,UAAA,GAAW,OAAO,CAAC;AAE7B;;AAEG;QACH,IAAW,CAAA,WAAA,GAAY,EAAE,CAAC;AAE1B;;AAEG;QACH,IAAa,CAAA,aAAA,GAAY,CAAC,CAAC;AAE3B;;AAEG;QACH,IAAc,CAAA,cAAA,GAAY,CAAC,CAAC;AAE5B;;AAEG;QACH,IAAO,CAAA,OAAA,GAAwB,EAAE,CAAC;AAElC;;;AAGG;QACH,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAO/B;;AAEG;QACH,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAE5B;;AAEG;QACH,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAE/B;;AAEG;QACH,IAAU,CAAA,UAAA,GAA4B,SAAS,CAAC;AAEhD;;AAEG;QACH,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;AAE1B;;AAEG;QACH,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AAExB;;AAEG;QACH,IAAO,CAAA,OAAA,GAA8B,SAAS,CAAC;AAE/C;;AAEG;QACH,IAAO,CAAA,OAAA,GAA8B,SAAS,CAAC;AAE/C;;AAEG;QACH,IAAO,CAAA,OAAA,GAAuB,SAAS,CAAC;AAExC;;AAEG;QACH,IAAO,CAAA,OAAA,GAAuB,SAAS,CAAC;AAExC;;AAEG;QACH,IAAe,CAAA,eAAA,GAAW,CAAC,CAAC;AAE5B;;AAEG;QACH,IAAI,CAAA,IAAA,GAAoC,QAAQ,CAAC;AAEjD;;AAEG;QACH,IAAS,CAAA,SAAA,GAAW,GAAG,CAAC;AAExB;;AAEG;QACH,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAE5B;;AAEG;AACH,QAAA,IAAA,CAAA,GAAG,GAA2B,IAAI,IAAI,EAAE,CAAC;AAOzC;;AAEG;QACH,IAAS,CAAA,SAAA,GAAW,GAAG,CAAC;AAExB;;AAEG;QACH,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;AAEvC;;AAEG;QACH,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;AAExB;;AAEG;QACH,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAE1B;;;AAGG;QACH,IAAG,CAAA,GAAA,GAAY,KAAK,CAAC;AAErB;;AAEG;QACH,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAQ7B;;AAEG;QACH,IAAI,CAAA,IAAA,GAAY,KAAK,CAAC;AAEtB;;AAEG;QACH,IAAO,CAAA,OAAA,GAAU,EAAE,CAAC;AAEpB;;AAEG;QACH,IAAM,CAAA,MAAA,GAAoB,SAAS,CAAC;AAEpC;;AAEG;QACH,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AAEnC;;AAEG;QACH,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;AAEvB;;AAEG;QACH,IAAiB,CAAA,iBAAA,GAA0B,QAAQ,CAAC;AAEpD;;AAEG;QACH,IAAoB,CAAA,oBAAA,GAAkB,EAAE,CAAC;AAC1C,KAAA;;8GAlOY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACtMJ,MAAM,gCAAgC,GAAQ;AACnD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,IAAA,KAAK,EAAE,IAAI;CACZ,CAAC;MAOW,kBAAkB,CAAA;AAqT7B,IAAA,WAAA,CACU,GAAe,EACf,QAA2B,EAC3B,QAAmB,EAAA;QAFnB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;QACf,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AArT7B;;;;;;;;;;;;;;;;;;AAkBG;QACM,IAAO,CAAA,OAAA,GAA+B,EAAE,CAAC;AAyNlD;;AAEG;QACM,IAAoB,CAAA,oBAAA,GAAkB,EAAE,CAAC;AAElD;;AAEG;AAEH,QAAA,IAAA,CAAA,cAAc,GAAyC,IAAI,YAAY,EAAE,CAAC;AAE1E;;AAEG;AAEH,QAAA,IAAA,CAAA,eAAe,GAAyC,IAAI,YAAY,EAAE,CAAC;AAE3E;;AAEG;AAEH,QAAA,IAAA,CAAA,oBAAoB,GAClB,IAAI,YAAY,EAAE,CAAC;AAErB;;AAEG;AAEH,QAAA,IAAA,CAAA,aAAa,GAAyC,IAAI,YAAY,EAAE,CAAC;AAEzE;;AAEG;AAEH,QAAA,IAAA,CAAA,cAAc,GAAyC,IAAI,YAAY,EAAE,CAAC;AAE1E;;AAEG;AAEH,QAAA,IAAA,CAAA,oBAAoB,GAClB,IAAI,YAAY,EAAE,CAAC;AAErB;;AAEG;AAEH,QAAA,IAAA,CAAA,mBAAmB,GACjB,IAAI,YAAY,EAAE,CAAC;AAErB;;AAEG;AAEH,QAAA,IAAA,CAAA,kBAAkB,GAChB,IAAI,YAAY,EAAE,CAAC;QAOb,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAG3B,QAAA,IAAA,CAAA,UAAU,GAAyB,MAAK,GAAG,CAAC;AAG5C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAK,GAAG,CAAC;KAMnB;IAEJ,eAAe,GAAA;AACb,QAAA,MAAM,OAAO,GAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,QAAQ,EAAE,CAAC,aAAqB,EAAE,UAAkB,EAAE,QAAa,KAAI;AACrE,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;aACpE;YACD,MAAM,EAAE,CAAC,aAAqB,EAAE,UAAkB,EAAE,QAAa,KAAI;AACnE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;aAClE;YACD,OAAO,EAAE,CAAC,aAAqB,EAAE,UAAkB,EAAE,QAAa,KAAI;AACpE,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;aACnE;YACD,aAAa,EAAE,CACb,aAAqB,EACrB,UAAkB,EAClB,QAAa,KACX;AACF,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;aACzE;YACD,YAAY,EAAE,CACZ,aAAqB,EACrB,UAAkB,EAClB,QAAa,KACX;AACF,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;aACxE;YACD,OAAO,EAAE,CAAC,aAAqB,EAAE,UAAkB,EAAE,QAAa,KAAI;AACpE,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;aACnE;YACD,aAAa,EAAE,CACb,aAAqB,EACrB,UAAkB,EAClB,QAAa,KACX;AACF,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;aACzE;YACD,WAAW,EAAE,CACX,aAAqB,EACrB,UAAkB,EAClB,QAAa,EACb,UAAuB,KACrB;AACF,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBAC3B,aAAa;oBACb,UAAU;oBACV,QAAQ;oBACR,UAAU;AACX,iBAAA,CAAC,CAAC;aACJ;SACF,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnC,YAAA,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;gBACvC,IAAI,OAAQ,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;oBACrD,OAAO,CAAC,GAAG,CAAC,GAAI,IAAI,CAAC,OAAe,CAAC,GAAG,CAAC,CAAC;AAC3C,iBAAA;AAAM,qBAAA;oBACL,OAAO,CAAC,GAAG,CAAC,GAAI,IAAI,CAAC,QAAgB,CAAC,GAAG,CAAC,CAAC;AAC5C,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;;AAGH,QAAA,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;;;AAIrC,QAAA,OAAO,CAAC,aAAa;AACnB,YAAA,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC;AAEzE,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,OAAO,OAAO,CAAC,MAAM,CAAC;AACvB,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CACvB,IAAI,CAAC,GAAG,CAAC,aAAa,EACtB,OAAO,CACc,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACxC;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAe,EAAG,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9D,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACzB,SAAA;KACF;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,cAAc,GAAQ,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,EAAE;YAC5D,cAAc,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AACzC,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;AACpC,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;AAED,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACvB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACzE,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACjE,aAAA;AACF,SAAA;KACF;IAGD,YAAY,GAAA;QACV,MAAM,KAAK,GAAW,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;QACnD,IAAI,IAAI,CAAC,iBAAiB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACvD,QAAQ,IAAI,CAAC,IAAI;AACf,gBAAA,KAAK,UAAU;oBACb,MAAM,KAAK,GAA4B,KAAK;yBACzC,KAAK,CAAC,IAAI,CAAC;AACX,yBAAA,GAAG,CAAC,CAAC,GAAG,KACP,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CACjC,CACF,CAAC;AACJ,oBAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM;AAER,gBAAA,KAAK,OAAO;AACV,oBAAA,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK;yBACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;AACxC,yBAAA,GAAG,CAAC,CAAC,GAAG,KACP,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CACjC,CACF,CAAC;oBACJ,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC9B,MAAM;AAER,gBAAA,KAAK,QAAQ,CAAC;AACd,gBAAA;AACE,oBAAA,IAAI,CAAC,UAAU,CACb,IAAI,CAAC,QAAQ,CAAC,SAAS,CACrB,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CACjC,CACF,CAAC;AACL,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;KACF;;+GAhhBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,GAAA,EAAA,KAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAHlB,CAAC,gCAAgC,CAAC,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAGlC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,SAAS,EAAE,CAAC,gCAAgC,CAAC;AAC7C,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA,CAAA;sJAuBU,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAMG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAMG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAKG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAMG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAMG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAKG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAIG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAMG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAKG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAKG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAKG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAKG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAKG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAKG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAKG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBAKG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAKG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAKG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAMG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAKG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAKG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAKG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAKG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAKG,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAMN,cAAc,EAAA,CAAA;sBADb,MAAM;gBAOP,eAAe,EAAA,CAAA;sBADd,MAAM;gBAOP,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAQP,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAOP,cAAc,EAAA,CAAA;sBADb,MAAM;gBAOP,oBAAoB,EAAA,CAAA;sBADnB,MAAM;gBAQP,mBAAmB,EAAA,CAAA;sBADlB,MAAM;gBAQP,kBAAkB,EAAA,CAAA;sBADjB,MAAM;gBAeP,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,MAAM,CAAA;gBAmLpB,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,CAAA;;;MCpgBV,aAAa,GAAG,IAAI,cAAc,CAAC,oBAAoB,EAAE;AAEhE,SAAU,eAAe,CAC7B,YAAwC,EAAA;AAExC,IAAA,MAAM,QAAQ,GAAsB,IAAI,iBAAiB,EAAE,CAAC;AAC5D,IAAA,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtC,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;MAMY,eAAe,CAAA;AAC1B,IAAA,OAAO,OAAO,CACZ,YAAA,GAA2C,EAAE,EAAA;QAE7C,OAAO;AACL,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,aAAa;AACtB,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA;AACD,gBAAA;AACE,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,UAAU,EAAE,eAAe;oBAC3B,IAAI,EAAE,CAAC,aAAa,CAAC;AACtB,iBAAA;AACF,aAAA;SACF,CAAC;KACH;;4GAlBU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,CAHX,kBAAkB,CAAA,EAAA,OAAA,EAAA,CACvB,kBAAkB,CAAA,EAAA,CAAA,CAAA;6GAEjB,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC9B,iBAAA,CAAA;;;ACzBD;;AAEG;;ACFH;;AAEG;;;;"}