@angular/material-luxon-adapter 13.0.0-rc.0 → 13.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,19 +16,23 @@ export class LuxonDateModule {
16
16
  }
17
17
  LuxonDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
18
  LuxonDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule });
19
- LuxonDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, providers: [{
19
+ LuxonDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, providers: [
20
+ {
20
21
  provide: DateAdapter,
21
22
  useClass: LuxonDateAdapter,
22
- deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS]
23
- }] });
23
+ deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],
24
+ },
25
+ ] });
24
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, decorators: [{
25
27
  type: NgModule,
26
28
  args: [{
27
- providers: [{
29
+ providers: [
30
+ {
28
31
  provide: DateAdapter,
29
32
  useClass: LuxonDateAdapter,
30
- deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS]
31
- }],
33
+ deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],
34
+ },
35
+ ],
32
36
  }]
33
37
  }] });
34
38
  export class MatLuxonDateModule {
@@ -43,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-next.15",
43
47
  providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_LUXON_DATE_FORMATS }],
44
48
  }]
45
49
  }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtbHV4b24tYWRhcHRlci9hZGFwdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsOEJBQThCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFNUQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBU3JDLE1BQU0sT0FBTyxlQUFlOztvSEFBZixlQUFlO3FIQUFmLGVBQWU7cUhBQWYsZUFBZSxhQU5mLENBQUM7WUFDVixPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQztTQUN4RCxDQUFDO21HQUVTLGVBQWU7a0JBUDNCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUM7NEJBQ1YsT0FBTyxFQUFFLFdBQVc7NEJBQ3BCLFFBQVEsRUFBRSxnQkFBZ0I7NEJBQzFCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQzt5QkFDeEQsQ0FBQztpQkFDSDs7QUFRRCxNQUFNLE9BQU8sa0JBQWtCOzt1SEFBbEIsa0JBQWtCO3dIQUFsQixrQkFBa0IsWUFQbEIsZUFBZTt3SEFPZixrQkFBa0IsYUFGbEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUMsQ0FBQyxZQURqRSxDQUFDLGVBQWUsQ0FBQzttR0FHZixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUMxQixTQUFTLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUMsQ0FBQztpQkFDM0UiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtNQVRfTFVYT05fREFURV9BREFQVEVSX09QVElPTlMsIEx1eG9uRGF0ZUFkYXB0ZXJ9IGZyb20gJy4vbHV4b24tZGF0ZS1hZGFwdGVyJztcbmltcG9ydCB7TUFUX0xVWE9OX0RBVEVfRk9STUFUU30gZnJvbSAnLi9sdXhvbi1kYXRlLWZvcm1hdHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2x1eG9uLWRhdGUtYWRhcHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2x1eG9uLWRhdGUtZm9ybWF0cyc7XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICB1c2VDbGFzczogTHV4b25EYXRlQWRhcHRlcixcbiAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTFVYT05fREFURV9BREFQVEVSX09QVElPTlNdXG4gIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBMdXhvbkRhdGVNb2R1bGUge31cblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbTHV4b25EYXRlTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNQVRfTFVYT05fREFURV9GT1JNQVRTfV0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdEx1eG9uRGF0ZU1vZHVsZSB7fVxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtbHV4b24tYWRhcHRlci9hZGFwdGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsOEJBQThCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFNUQsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDO0FBV3JDLE1BQU0sT0FBTyxlQUFlOztvSEFBZixlQUFlO3FIQUFmLGVBQWU7cUhBQWYsZUFBZSxhQVJmO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsV0FBVztZQUNwQixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQztTQUN4RDtLQUNGO21HQUVVLGVBQWU7a0JBVDNCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxXQUFXOzRCQUNwQixRQUFRLEVBQUUsZ0JBQWdCOzRCQUMxQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsOEJBQThCLENBQUM7eUJBQ3hEO3FCQUNGO2lCQUNGOztBQU9ELE1BQU0sT0FBTyxrQkFBa0I7O3VIQUFsQixrQkFBa0I7d0hBQWxCLGtCQUFrQixZQU5sQixlQUFlO3dIQU1mLGtCQUFrQixhQUZsQixDQUFDLEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBQyxDQUFDLFlBRGpFLENBQUMsZUFBZSxDQUFDO21HQUdmLGtCQUFrQjtrQkFKOUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzFCLFNBQVMsRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBQyxDQUFDO2lCQUMzRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge01BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OUywgTHV4b25EYXRlQWRhcHRlcn0gZnJvbSAnLi9sdXhvbi1kYXRlLWFkYXB0ZXInO1xuaW1wb3J0IHtNQVRfTFVYT05fREFURV9GT1JNQVRTfSBmcm9tICcuL2x1eG9uLWRhdGUtZm9ybWF0cyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbHV4b24tZGF0ZS1hZGFwdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbHV4b24tZGF0ZS1mb3JtYXRzJztcblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgICB1c2VDbGFzczogTHV4b25EYXRlQWRhcHRlcixcbiAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTHV4b25EYXRlTW9kdWxlIHt9XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtMdXhvbkRhdGVNb2R1bGVdLFxuICBwcm92aWRlcnM6IFt7cHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IE1BVF9MVVhPTl9EQVRFX0ZPUk1BVFN9XSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0THV4b25EYXRlTW9kdWxlIHt9XG4iXX0=
@@ -12,12 +12,12 @@ import * as i0 from "@angular/core";
12
12
  /** InjectionToken for LuxonDateAdapter to configure options. */
13
13
  export const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken('MAT_LUXON_DATE_ADAPTER_OPTIONS', {
14
14
  providedIn: 'root',
15
- factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY
15
+ factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY,
16
16
  });
17
17
  /** @docs-private */
18
18
  export function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY() {
19
19
  return {
20
- useUtc: false
20
+ useUtc: false,
21
21
  };
22
22
  }
23
23
  /** Creates an array and fills it with values. */
@@ -87,8 +87,9 @@ export class LuxonDateAdapter extends DateAdapter {
87
87
  throw Error(`Invalid date "${date}". Date has to be greater than 0.`);
88
88
  }
89
89
  // Luxon uses 1-indexed months so we need to add one to the month.
90
- const result = this._useUTC ? LuxonDateTime.utc(year, month + 1, date) :
91
- LuxonDateTime.local(year, month + 1, date);
90
+ const result = this._useUTC
91
+ ? LuxonDateTime.utc(year, month + 1, date)
92
+ : LuxonDateTime.local(year, month + 1, date);
92
93
  if (!this.isValid(result)) {
93
94
  throw Error(`Invalid date "${date}". Reason: "${result.invalidReason}".`);
94
95
  }
@@ -182,7 +183,7 @@ export class LuxonDateAdapter extends DateAdapter {
182
183
  _getOptions() {
183
184
  return {
184
185
  zone: this._useUTC ? 'utc' : undefined,
185
- locale: this.locale
186
+ locale: this.locale,
186
187
  };
187
188
  }
188
189
  }
@@ -201,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-next.15",
201
202
  type: Inject,
202
203
  args: [MAT_LUXON_DATE_ADAPTER_OPTIONS]
203
204
  }] }]; } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHV4b24tZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWx1eG9uLWFkYXB0ZXIvYWRhcHRlci9sdXhvbi1kYXRlLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxRQUFRLElBQUksYUFBYSxFQUN6QixJQUFJLElBQUksU0FBUyxHQUVsQixNQUFNLE9BQU8sQ0FBQzs7QUFZZixnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQ3pDLElBQUksY0FBYyxDQUE2QixnQ0FBZ0MsRUFBRTtJQUMvRSxVQUFVLEVBQUUsTUFBTTtJQUNsQixPQUFPLEVBQUUsc0NBQXNDO0NBQ2hELENBQUMsQ0FBQztBQUdMLG9CQUFvQjtBQUNwQixNQUFNLFVBQVUsc0NBQXNDO0lBQ3BELE9BQU87UUFDTCxNQUFNLEVBQUUsS0FBSztLQUNkLENBQUM7QUFDSixDQUFDO0FBRUQsaURBQWlEO0FBQ2pELFNBQVMsS0FBSyxDQUFJLE1BQWMsRUFBRSxhQUFtQztJQUNuRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMvQixXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25DO0lBQ0QsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVELHdEQUF3RDtBQUV4RCxNQUFNLE9BQU8sZ0JBQWlCLFNB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Q0QsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBUTtRQUNyQixPQUFPLEdBQUcsWUFBWSxhQUFhLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFtQjtRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsc0ZBQXNGO0lBQzlFLFdBQVc7UUFDakIsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUM7SUFDSixDQUFDOztxSEFsTVUsZ0JBQWdCLGtCQUdLLGVBQWUsNkJBQ3pCLDhCQUE4Qjt5SEFKekMsZ0JBQWdCO21HQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQUlJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQzVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIERhdGVUaW1lIGFzIEx1eG9uRGF0ZVRpbWUsXG4gIEluZm8gYXMgTHV4b25JbmZvLFxuICBEYXRlVGltZU9wdGlvbnMgYXMgTHV4b25EYXRlVGltZU9wdGlvbnMsXG59IGZyb20gJ2x1eG9uJztcblxuLyoqIENvbmZpZ3VyYWJsZSBvcHRpb25zIGZvciB7QHNlZSBMdXhvbkRhdGVBZGFwdGVyfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0THV4b25EYXRlQWRhcHRlck9wdGlvbnMge1xuICAvKipcbiAgICogVHVybnMgdGhlIHVzZSBvZiB1dGMgZGF0ZXMgb24gb3Igb2ZmLlxuICAgKiBDaGFuZ2luZyB0aGlzIHdpbGwgY2hhbmdlIGhvdyBBbmd1bGFyIE1hdGVyaWFsIGNvbXBvbmVudHMgbGlrZSBEYXRlUGlja2VyIG91dHB1dCBkYXRlcy5cbiAgICoge0BkZWZhdWx0IGZhbHNlfVxuICAgKi9cbiAgdXNlVXRjOiBib29sZWFuO1xufVxuXG4vKiogSW5qZWN0aW9uVG9rZW4gZm9yIEx1eG9uRGF0ZUFkYXB0ZXIgdG8gY29uZmlndXJlIG9wdGlvbnMuICovXG5leHBvcnQgY29uc3QgTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TID1cbiAgbmV3IEluamVjdGlvblRva2VuPE1hdEx1eG9uRGF0ZUFkYXB0ZXJPcHRpb25zPignTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TJywge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiBNQVRfTFVYT05fREFURV9BREFQVEVSX09QVElPTlNfRkFDVE9SWVxuICB9KTtcblxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OU19GQUNUT1JZKCk6IE1hdEx1eG9uRGF0ZUFkYXB0ZXJPcHRpb25zIHtcbiAgcmV0dXJuIHtcbiAgICB1c2VVdGM6IGZhbHNlXG4gIH07XG59XG5cbi8qKiBDcmVhdGVzIGFuIGFycmF5IGFuZCBmaWxscyBpdCB3aXRoIHZhbHVlcy4gKi9cbmZ1bmN0aW9uIHJhbmdlPFQ+KGxlbmd0aDogbnVtYmVyLCB2YWx1ZUZ1bmN0aW9uOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gIGNvbnN0IHZhbHVlc0FycmF5ID0gQXJyYXkobGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHZhbHVlc0FycmF5W2ldID0gdmFsdWVGdW5jdGlvbihpKTtcbiAgfVxuICByZXR1cm4gdmFsdWVzQXJyYXk7XG59XG5cbi8qKiBBZGFwdHMgTHV4b24gRGF0ZXMgZm9yIHVzZSB3aXRoIEFuZ3VsYXIgTWF0ZXJpYWwuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTHV4b25EYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPEx1eG9uRGF0ZVRpbWU+IHtcbiAgcHJpdmF0ZSBfdXNlVVRDOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0RBVEVfTE9DQUxFKSBkYXRlTG9jYWxlOiBzdHJpbmcsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfTFVYT05fREFURV9BREFQVEVSX09QVElPTlMpXG4gICAgb3B0aW9ucz86IE1hdEx1eG9uRGF0ZUFkYXB0ZXJPcHRpb25zKSB7XG5cbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3VzZVVUQyA9ICEhb3B0aW9ucz8udXNlVXRjO1xuICAgIHRoaXMuc2V0TG9jYWxlKGRhdGVMb2NhbGUgfHwgTHV4b25EYXRlVGltZS5sb2NhbCgpLmxvY2FsZSk7XG4gIH1cblxuICBnZXRZZWFyKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLnllYXI7XG4gIH1cblxuICBnZXRNb250aChkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICAvLyBMdXhvbiB3b3JrcyB3aXRoIDEtaW5kZXhlZCBtb250aHMgd2hlcmVhcyBvdXIgY29kZSBleHBlY3RzIDAtaW5kZXhlZC5cbiAgICByZXR1cm4gZGF0ZS5tb250aCAtIDE7XG4gIH1cblxuICBnZXREYXRlKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmRheTtcbiAgfVxuXG4gIGdldERheU9mV2VlayhkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS53ZWVrZGF5O1xuICB9XG5cbiAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBMdXhvbkluZm8ubW9udGhzKHN0eWxlLCB7bG9jYWxlOiB0aGlzLmxvY2FsZX0pO1xuICB9XG5cbiAgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICAvLyBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCBMdXhvbiBkb2Vzbid0IG9mZmVyIHNpbWlsYXJcbiAgICAvLyBmdW5jdGlvbmFsaXR5IHNvIHdlIGhhdmUgdG8gZmFsbCBiYWNrIHRvIHRoZSBJbnRsIEFQSS5cbiAgICBjb25zdCBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwge2RheTogJ251bWVyaWMnLCB0aW1lWm9uZTogJ3V0Yyd9KTtcblxuICAgIC8vIEZvcm1hdCBhIFVUQyBkYXRlIGluIG9yZGVyIHRvIGF2b2lkIERTVCBpc3N1ZXMuXG4gICAgcmV0dXJuIHJhbmdlKDMxLCBpID0+IGR0Zi5mb3JtYXQoTHV4b25EYXRlVGltZS51dGMoMjAxNywgMSwgaSArIDEpLnRvSlNEYXRlKCkpKTtcbiAgfVxuXG4gIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XG4gICAgLy8gTm90ZSB0aGF0IHdlIHNoaWZ0IHRoZSBhcnJheSBvbmNlLCBiZWNhdXNlIEx1eG9uIHJldHVybnMgTW9uZGF5IGFzIHRoZVxuICAgIC8vIGZpcnN0IGRheSBvZiB0aGUgd2Vlaywgd2hlcmVhcyBvdXIgbG9naWMgYXNzdW1lcyB0aGF0IGl0J3MgU3VuZGF5LiBTZWU6XG4gICAgLy8gaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uL2FwaS1kb2NzL2luZGV4Lmh0bWwjaW5mb3dlZWtkYXlzXG4gICAgY29uc3QgZGF5cyA9IEx1eG9uSW5mby53ZWVrZGF5cyhzdHlsZSwge2xvY2FsZTogdGhpcy5sb2NhbGV9KTtcbiAgICBkYXlzLnVuc2hpZnQoZGF5cy5wb3AoKSEpO1xuICAgIHJldHVybiBkYXlzO1xuICB9XG5cbiAgZ2V0WWVhck5hbWUoZGF0ZTogTHV4b25EYXRlVGltZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUudG9Gb3JtYXQoJ3l5eXknKTtcbiAgfVxuXG4gIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgLy8gVG8gY3VzdG9taXplIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssIGFuZCBjYW4gZXh0ZW5kIHRoaXMgYWRhcHRlciBhbmQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5kYXlzSW5Nb250aDtcbiAgfVxuXG4gIGNsb25lKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBMdXhvbkRhdGVUaW1lIHtcbiAgICByZXR1cm4gTHV4b25EYXRlVGltZS5mcm9tT2JqZWN0KGRhdGUudG9PYmplY3QoKSk7XG4gIH1cblxuICBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogTHV4b25EYXRlVGltZSB7XG4gICAgaWYgKG1vbnRoIDwgMCB8fCBtb250aCA+IDExKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBtb250aCBpbmRleCBcIiR7bW9udGh9XCIuIE1vbnRoIGluZGV4IGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDExLmApO1xuICAgIH1cblxuICAgIGlmIChkYXRlIDwgMSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIi4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCk7XG4gICAgfVxuXG4gICAgLy8gTHV4b24gdXNlcyAxLWluZGV4ZWQgbW9udGhzIHNvIHdlIG5lZWQgdG8gYWRkIG9uZSB0byB0aGUgbW9udGguXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fdXNlVVRDID8gTHV4b25EYXRlVGltZS51dGMoeWVhciwgbW9udGggKyAxLCBkYXRlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHV4b25EYXRlVGltZS5sb2NhbCh5ZWFyLCBtb250aCArIDEsIGRhdGUpO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWQocmVzdWx0KSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIi4gUmVhc29uOiBcIiR7cmVzdWx0LmludmFsaWRSZWFzb259XCIuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgdG9kYXkoKTogTHV4b25EYXRlVGltZSB7XG4gICAgcmV0dXJuICh0aGlzLl91c2VVVEMgPyBMdXhvbkRhdGVUaW1lLnV0YygpIDogTHV4b25EYXRlVGltZS5sb2NhbCgpKS5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgcGFyc2UodmFsdWU6IGFueSwgcGFyc2VGb3JtYXQ6IHN0cmluZyB8IHN0cmluZ1tdKTogTHV4b25EYXRlVGltZSB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbnM6IEx1eG9uRGF0ZVRpbWVPcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9ucygpO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpc284NjAxRGF0ZSA9IEx1eG9uRGF0ZVRpbWUuZnJvbUlTTyh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICAgIGlmICh0aGlzLmlzVmFsaWQoaXNvODYwMURhdGUpKSB7XG4gICAgICAgIHJldHVybiBpc284NjAxRGF0ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmlzQXJyYXkocGFyc2VGb3JtYXQpID8gcGFyc2VGb3JtYXQgOiBbcGFyc2VGb3JtYXRdO1xuXG4gICAgICBpZiAoIXBhcnNlRm9ybWF0Lmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBFcnJvcignRm9ybWF0cyBhcnJheSBtdXN0IG5vdCBiZSBlbXB0eS4nKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cykge1xuICAgICAgICBjb25zdCBmcm9tRm9ybWF0ID0gTHV4b25EYXRlVGltZS5mcm9tRm9ybWF0KHZhbHVlLCBmb3JtYXQsIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoZnJvbUZvcm1hdCkpIHtcbiAgICAgICAgICByZXR1cm4gZnJvbUZvcm1hdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5pbnZhbGlkKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gTHV4b25EYXRlVGltZS5mcm9tTWlsbGlzKHZhbHVlLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIEx1eG9uRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEx1eG9uRGF0ZVRpbWUpIHtcbiAgICAgIHJldHVybiBMdXhvbkRhdGVUaW1lLmZyb21NaWxsaXModmFsdWUudG9NaWxsaXMoKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmb3JtYXQoZGF0ZTogTHV4b25EYXRlVGltZSwgZGlzcGxheUZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZChkYXRlKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0x1eG9uRGF0ZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLicpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZVxuICAgICAgICAuc2V0TG9jYWxlKHRoaXMubG9jYWxlKVxuICAgICAgICAudG9Gb3JtYXQoZGlzcGxheUZvcm1hdCwge3RpbWVab25lOiB0aGlzLl91c2VVVEMgPyAndXRjJyA6IHVuZGVmaW5lZH0pO1xuICB9XG5cbiAgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBMdXhvbkRhdGVUaW1lLCB5ZWFyczogbnVtYmVyKTogTHV4b25EYXRlVGltZSB7XG4gICAgcmV0dXJuIGRhdGUucGx1cyh7eWVhcnN9KS5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogTHV4b25EYXRlVGltZSwgbW9udGhzOiBudW1iZXIpOiBMdXhvbkRhdGVUaW1lIHtcbiAgICByZXR1cm4gZGF0ZS5wbHVzKHttb250aHN9KS5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IEx1eG9uRGF0ZVRpbWUsIGRheXM6IG51bWJlcik6IEx1eG9uRGF0ZVRpbWUge1xuICAgIHJldHVybiBkYXRlLnBsdXMoe2RheXN9KS5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgdG9Jc284NjAxKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnRvSVNPKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZ2l2ZW4gdmFsdWUgaWYgZ2l2ZW4gYSB2YWxpZCBMdXhvbiBvciBudWxsLiBEZXNlcmlhbGl6ZXMgdmFsaWQgSVNPIDg2MDEgc3RyaW5nc1xuICAgKiAoaHR0cHM6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzMzMzkudHh0KSBhbmQgdmFsaWQgRGF0ZSBvYmplY3RzIGludG8gdmFsaWQgRGF0ZVRpbWUgYW5kIGVtcHR5XG4gICAqIHN0cmluZyBpbnRvIG51bGwuIFJldHVybnMgYW4gaW52YWxpZCBkYXRlIGZvciBhbGwgb3RoZXIgdmFsdWVzLlxuICAgKi9cbiAgb3ZlcnJpZGUgZGVzZXJpYWxpemUodmFsdWU6IGFueSk6IEx1eG9uRGF0ZVRpbWUgfCBudWxsIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9ucygpO1xuICAgIGxldCBkYXRlOiBMdXhvbkRhdGVUaW1lIHwgdW5kZWZpbmVkO1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGRhdGUgPSBMdXhvbkRhdGVUaW1lLmZyb21KU0RhdGUodmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGRhdGUgPSBMdXhvbkRhdGVUaW1lLmZyb21JU08odmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAoZGF0ZSAmJiB0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuICB9XG5cbiAgaXNEYXRlSW5zdGFuY2Uob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgTHV4b25EYXRlVGltZTtcbiAgfVxuXG4gIGlzVmFsaWQoZGF0ZTogTHV4b25EYXRlVGltZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkYXRlLmlzVmFsaWQ7XG4gIH1cblxuICBpbnZhbGlkKCk6IEx1eG9uRGF0ZVRpbWUge1xuICAgIHJldHVybiBMdXhvbkRhdGVUaW1lLmludmFsaWQoJ0ludmFsaWQgTHV4b24gRGF0ZVRpbWUgb2JqZWN0LicpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIG9wdGlvbnMgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIGNvbnN0cnVjdGluZyBhIG5ldyBgRGF0ZVRpbWVgIG9iamVjdC4gKi9cbiAgcHJpdmF0ZSBfZ2V0T3B0aW9ucygpOiBMdXhvbkRhdGVUaW1lT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHpvbmU6IHRoaXMuX3VzZVVUQyA/ICd1dGMnIDogdW5kZWZpbmVkLFxuICAgICAgbG9jYWxlOiB0aGlzLmxvY2FsZVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHV4b24tZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWx1eG9uLWFkYXB0ZXIvYWRhcHRlci9sdXhvbi1kYXRlLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxRQUFRLElBQUksYUFBYSxFQUN6QixJQUFJLElBQUksU0FBUyxHQUVsQixNQUFNLE9BQU8sQ0FBQzs7QUFZZixnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQzlELGdDQUFnQyxFQUNoQztJQUNFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxzQ0FBc0M7Q0FDaEQsQ0FDRixDQUFDO0FBRUYsb0JBQW9CO0FBQ3BCLE1BQU0sVUFBVSxzQ0FBc0M7SUFDcEQsT0FBTztRQUNMLE1BQU0sRUFBRSxLQUFLO0tBQ2QsQ0FBQztBQUNKLENBQUM7QUFFRCxpREFBaUQ7QUFDakQsU0FBUyxLQUFLLENBQUksTUFBYyxFQUFFLGFBQW1DO0lBQ25FLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQy9CLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbkM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQsd0RBQXdEO0FBRXhELE1BQU0sT0FBTyxnQkFBaUIsU0FB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Q0QsT0FBTyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBUTtRQUNyQixPQUFPLEdBQUcsWUFBWSxhQUFhLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFtQjtRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsc0ZBQXNGO0lBQzlFLFdBQVc7UUFDakIsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUM7SUFDSixDQUFDOztxSEFyTVUsZ0JBQWdCLGtCQUlMLGVBQWUsNkJBRTNCLDhCQUE4Qjt5SEFON0IsZ0JBQWdCO21HQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQUtOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIERhdGVUaW1lIGFzIEx1eG9uRGF0ZVRpbWUsXG4gIEluZm8gYXMgTHV4b25JbmZvLFxuICBEYXRlVGltZU9wdGlvbnMgYXMgTHV4b25EYXRlVGltZU9wdGlvbnMsXG59IGZyb20gJ2x1eG9uJztcblxuLyoqIENvbmZpZ3VyYWJsZSBvcHRpb25zIGZvciB7QHNlZSBMdXhvbkRhdGVBZGFwdGVyfS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0THV4b25EYXRlQWRhcHRlck9wdGlvbnMge1xuICAvKipcbiAgICogVHVybnMgdGhlIHVzZSBvZiB1dGMgZGF0ZXMgb24gb3Igb2ZmLlxuICAgKiBDaGFuZ2luZyB0aGlzIHdpbGwgY2hhbmdlIGhvdyBBbmd1bGFyIE1hdGVyaWFsIGNvbXBvbmVudHMgbGlrZSBEYXRlUGlja2VyIG91dHB1dCBkYXRlcy5cbiAgICoge0BkZWZhdWx0IGZhbHNlfVxuICAgKi9cbiAgdXNlVXRjOiBib29sZWFuO1xufVxuXG4vKiogSW5qZWN0aW9uVG9rZW4gZm9yIEx1eG9uRGF0ZUFkYXB0ZXIgdG8gY29uZmlndXJlIG9wdGlvbnMuICovXG5leHBvcnQgY29uc3QgTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPE1hdEx1eG9uRGF0ZUFkYXB0ZXJPcHRpb25zPihcbiAgJ01BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OUycsXG4gIHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG4gICAgZmFjdG9yeTogTUFUX0xVWE9OX0RBVEVfQURBUFRFUl9PUFRJT05TX0ZBQ1RPUlksXG4gIH0sXG4pO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1BVF9MVVhPTl9EQVRFX0FEQVBURVJfT1BUSU9OU19GQUNUT1JZKCk6IE1hdEx1eG9uRGF0ZUFkYXB0ZXJPcHRpb25zIHtcbiAgcmV0dXJuIHtcbiAgICB1c2VVdGM6IGZhbHNlLFxuICB9O1xufVxuXG4vKiogQ3JlYXRlcyBhbiBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB2YWx1ZXMuICovXG5mdW5jdGlvbiByYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xuICBjb25zdCB2YWx1ZXNBcnJheSA9IEFycmF5KGxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICB2YWx1ZXNBcnJheVtpXSA9IHZhbHVlRnVuY3Rpb24oaSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlc0FycmF5O1xufVxuXG4vKiogQWRhcHRzIEx1eG9uIERhdGVzIGZvciB1c2Ugd2l0aCBBbmd1bGFyIE1hdGVyaWFsLiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEx1eG9uRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBEYXRlQWRhcHRlcjxMdXhvbkRhdGVUaW1lPiB7XG4gIHByaXZhdGUgX3VzZVVUQzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9EQVRFX0xPQ0FMRSkgZGF0ZUxvY2FsZTogc3RyaW5nLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChNQVRfTFVYT05fREFURV9BREFQVEVSX09QVElPTlMpXG4gICAgb3B0aW9ucz86IE1hdEx1eG9uRGF0ZUFkYXB0ZXJPcHRpb25zLFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX3VzZVVUQyA9ICEhb3B0aW9ucz8udXNlVXRjO1xuICAgIHRoaXMuc2V0TG9jYWxlKGRhdGVMb2NhbGUgfHwgTHV4b25EYXRlVGltZS5sb2NhbCgpLmxvY2FsZSk7XG4gIH1cblxuICBnZXRZZWFyKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLnllYXI7XG4gIH1cblxuICBnZXRNb250aChkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICAvLyBMdXhvbiB3b3JrcyB3aXRoIDEtaW5kZXhlZCBtb250aHMgd2hlcmVhcyBvdXIgY29kZSBleHBlY3RzIDAtaW5kZXhlZC5cbiAgICByZXR1cm4gZGF0ZS5tb250aCAtIDE7XG4gIH1cblxuICBnZXREYXRlKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmRheTtcbiAgfVxuXG4gIGdldERheU9mV2VlayhkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS53ZWVrZGF5O1xuICB9XG5cbiAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBMdXhvbkluZm8ubW9udGhzKHN0eWxlLCB7bG9jYWxlOiB0aGlzLmxvY2FsZX0pO1xuICB9XG5cbiAgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICAvLyBBdCB0aGUgdGltZSBvZiB3cml0aW5nLCBMdXhvbiBkb2Vzbid0IG9mZmVyIHNpbWlsYXJcbiAgICAvLyBmdW5jdGlvbmFsaXR5IHNvIHdlIGhhdmUgdG8gZmFsbCBiYWNrIHRvIHRoZSBJbnRsIEFQSS5cbiAgICBjb25zdCBkdGYgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSwge2RheTogJ251bWVyaWMnLCB0aW1lWm9uZTogJ3V0Yyd9KTtcblxuICAgIC8vIEZvcm1hdCBhIFVUQyBkYXRlIGluIG9yZGVyIHRvIGF2b2lkIERTVCBpc3N1ZXMuXG4gICAgcmV0dXJuIHJhbmdlKDMxLCBpID0+IGR0Zi5mb3JtYXQoTHV4b25EYXRlVGltZS51dGMoMjAxNywgMSwgaSArIDEpLnRvSlNEYXRlKCkpKTtcbiAgfVxuXG4gIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XG4gICAgLy8gTm90ZSB0aGF0IHdlIHNoaWZ0IHRoZSBhcnJheSBvbmNlLCBiZWNhdXNlIEx1eG9uIHJldHVybnMgTW9uZGF5IGFzIHRoZVxuICAgIC8vIGZpcnN0IGRheSBvZiB0aGUgd2Vlaywgd2hlcmVhcyBvdXIgbG9naWMgYXNzdW1lcyB0aGF0IGl0J3MgU3VuZGF5LiBTZWU6XG4gICAgLy8gaHR0cHM6Ly9tb21lbnQuZ2l0aHViLmlvL2x1eG9uL2FwaS1kb2NzL2luZGV4Lmh0bWwjaW5mb3dlZWtkYXlzXG4gICAgY29uc3QgZGF5cyA9IEx1eG9uSW5mby53ZWVrZGF5cyhzdHlsZSwge2xvY2FsZTogdGhpcy5sb2NhbGV9KTtcbiAgICBkYXlzLnVuc2hpZnQoZGF5cy5wb3AoKSEpO1xuICAgIHJldHVybiBkYXlzO1xuICB9XG5cbiAgZ2V0WWVhck5hbWUoZGF0ZTogTHV4b25EYXRlVGltZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUudG9Gb3JtYXQoJ3l5eXknKTtcbiAgfVxuXG4gIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgLy8gVG8gY3VzdG9taXplIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssIGFuZCBjYW4gZXh0ZW5kIHRoaXMgYWRhcHRlciBhbmQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBMdXhvbkRhdGVUaW1lKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5kYXlzSW5Nb250aDtcbiAgfVxuXG4gIGNsb25lKGRhdGU6IEx1eG9uRGF0ZVRpbWUpOiBMdXhvbkRhdGVUaW1lIHtcbiAgICByZXR1cm4gTHV4b25EYXRlVGltZS5mcm9tT2JqZWN0KGRhdGUudG9PYmplY3QoKSk7XG4gIH1cblxuICBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogTHV4b25EYXRlVGltZSB7XG4gICAgaWYgKG1vbnRoIDwgMCB8fCBtb250aCA+IDExKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBtb250aCBpbmRleCBcIiR7bW9udGh9XCIuIE1vbnRoIGluZGV4IGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDExLmApO1xuICAgIH1cblxuICAgIGlmIChkYXRlIDwgMSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIi4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCk7XG4gICAgfVxuXG4gICAgLy8gTHV4b24gdXNlcyAxLWluZGV4ZWQgbW9udGhzIHNvIHdlIG5lZWQgdG8gYWRkIG9uZSB0byB0aGUgbW9udGguXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fdXNlVVRDXG4gICAgICA/IEx1eG9uRGF0ZVRpbWUudXRjKHllYXIsIG1vbnRoICsgMSwgZGF0ZSlcbiAgICAgIDogTHV4b25EYXRlVGltZS5sb2NhbCh5ZWFyLCBtb250aCArIDEsIGRhdGUpO1xuXG4gICAgaWYgKCF0aGlzLmlzVmFsaWQocmVzdWx0KSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSBcIiR7ZGF0ZX1cIi4gUmVhc29uOiBcIiR7cmVzdWx0LmludmFsaWRSZWFzb259XCIuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgdG9kYXkoKTogTHV4b25EYXRlVGltZSB7XG4gICAgcmV0dXJuICh0aGlzLl91c2VVVEMgPyBMdXhvbkRhdGVUaW1lLnV0YygpIDogTHV4b25EYXRlVGltZS5sb2NhbCgpKS5zZXRMb2NhbGUodGhpcy5sb2NhbGUpO1xuICB9XG5cbiAgcGFyc2UodmFsdWU6IGFueSwgcGFyc2VGb3JtYXQ6IHN0cmluZyB8IHN0cmluZ1tdKTogTHV4b25EYXRlVGltZSB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbnM6IEx1eG9uRGF0ZVRpbWVPcHRpb25zID0gdGhpcy5fZ2V0T3B0aW9ucygpO1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBpc284NjAxRGF0ZSA9IEx1eG9uRGF0ZVRpbWUuZnJvbUlTTyh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICAgIGlmICh0aGlzLmlzVmFsaWQoaXNvODYwMURhdGUpKSB7XG4gICAgICAgIHJldHVybiBpc284NjAxRGF0ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0cyA9IEFycmF5LmlzQXJyYXkocGFyc2VGb3JtYXQpID8gcGFyc2VGb3JtYXQgOiBbcGFyc2VGb3JtYXRdO1xuXG4gICAgICBpZiAoIXBhcnNlRm9ybWF0Lmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBFcnJvcignRm9ybWF0cyBhcnJheSBtdXN0IG5vdCBiZSBlbXB0eS4nKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cykge1xuICAgICAgICBjb25zdCBmcm9tRm9ybWF0ID0gTHV4b25EYXRlVGltZS5mcm9tRm9ybWF0KHZhbHVlLCBmb3JtYXQsIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoZnJvbUZvcm1hdCkpIHtcbiAgICAgICAgICByZXR1cm4gZnJvbUZvcm1hdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5pbnZhbGlkKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gTHV4b25EYXRlVGltZS5mcm9tTWlsbGlzKHZhbHVlLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIEx1eG9uRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEx1eG9uRGF0ZVRpbWUpIHtcbiAgICAgIHJldHVybiBMdXhvbkRhdGVUaW1lLmZyb21NaWxsaXModmFsdWUudG9NaWxsaXMoKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBmb3JtYXQoZGF0ZTogTHV4b25EYXRlVGltZSwgZGlzcGxheUZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZChkYXRlKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0x1eG9uRGF0ZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLicpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZVxuICAgICAgLnNldExvY2FsZSh0aGlzLmxvY2FsZSlcbiAgICAgIC50b0Zvcm1hdChkaXNwbGF5Rm9ybWF0LCB7dGltZVpvbmU6IHRoaXMuX3VzZVVUQyA/ICd1dGMnIDogdW5kZWZpbmVkfSk7XG4gIH1cblxuICBhZGRDYWxlbmRhclllYXJzKGRhdGU6IEx1eG9uRGF0ZVRpbWUsIHllYXJzOiBudW1iZXIpOiBMdXhvbkRhdGVUaW1lIHtcbiAgICByZXR1cm4gZGF0ZS5wbHVzKHt5ZWFyc30pLnNldExvY2FsZSh0aGlzLmxvY2FsZSk7XG4gIH1cblxuICBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBMdXhvbkRhdGVUaW1lLCBtb250aHM6IG51bWJlcik6IEx1eG9uRGF0ZVRpbWUge1xuICAgIHJldHVybiBkYXRlLnBsdXMoe21vbnRoc30pLnNldExvY2FsZSh0aGlzLmxvY2FsZSk7XG4gIH1cblxuICBhZGRDYWxlbmRhckRheXMoZGF0ZTogTHV4b25EYXRlVGltZSwgZGF5czogbnVtYmVyKTogTHV4b25EYXRlVGltZSB7XG4gICAgcmV0dXJuIGRhdGUucGx1cyh7ZGF5c30pLnNldExvY2FsZSh0aGlzLmxvY2FsZSk7XG4gIH1cblxuICB0b0lzbzg2MDEoZGF0ZTogTHV4b25EYXRlVGltZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGRhdGUudG9JU08oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBnaXZlbiB2YWx1ZSBpZiBnaXZlbiBhIHZhbGlkIEx1eG9uIG9yIG51bGwuIERlc2VyaWFsaXplcyB2YWxpZCBJU08gODYwMSBzdHJpbmdzXG4gICAqIChodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzMzOS50eHQpIGFuZCB2YWxpZCBEYXRlIG9iamVjdHMgaW50byB2YWxpZCBEYXRlVGltZSBhbmQgZW1wdHlcbiAgICogc3RyaW5nIGludG8gbnVsbC4gUmV0dXJucyBhbiBpbnZhbGlkIGRhdGUgZm9yIGFsbCBvdGhlciB2YWx1ZXMuXG4gICAqL1xuICBvdmVycmlkZSBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55KTogTHV4b25EYXRlVGltZSB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKCk7XG4gICAgbGV0IGRhdGU6IEx1eG9uRGF0ZVRpbWUgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgZGF0ZSA9IEx1eG9uRGF0ZVRpbWUuZnJvbUpTRGF0ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZGF0ZSA9IEx1eG9uRGF0ZVRpbWUuZnJvbUlTTyh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChkYXRlICYmIHRoaXMuaXNWYWxpZChkYXRlKSkge1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gIH1cblxuICBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBMdXhvbkRhdGVUaW1lO1xuICB9XG5cbiAgaXNWYWxpZChkYXRlOiBMdXhvbkRhdGVUaW1lKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRhdGUuaXNWYWxpZDtcbiAgfVxuXG4gIGludmFsaWQoKTogTHV4b25EYXRlVGltZSB7XG4gICAgcmV0dXJuIEx1eG9uRGF0ZVRpbWUuaW52YWxpZCgnSW52YWxpZCBMdXhvbiBEYXRlVGltZSBvYmplY3QuJyk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgb3B0aW9ucyB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gY29uc3RydWN0aW5nIGEgbmV3IGBEYXRlVGltZWAgb2JqZWN0LiAqL1xuICBwcml2YXRlIF9nZXRPcHRpb25zKCk6IEx1eG9uRGF0ZVRpbWVPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgem9uZTogdGhpcy5fdXNlVVRDID8gJ3V0YycgOiB1bmRlZmluZWQsXG4gICAgICBsb2NhbGU6IHRoaXMubG9jYWxlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -16,4 +16,4 @@ export const MAT_LUXON_DATE_FORMATS = {
16
16
  monthYearA11yLabel: 'LLLL yyyy',
17
17
  },
18
18
  };
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHV4b24tZGF0ZS1mb3JtYXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWx1eG9uLWFkYXB0ZXIvYWRhcHRlci9sdXhvbi1kYXRlLWZvcm1hdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBS0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQW1CO0lBQ3BELEtBQUssRUFBRTtRQUNMLFNBQVMsRUFBRSxHQUFHO0tBQ2Y7SUFDRCxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsR0FBRztRQUNkLGNBQWMsRUFBRSxVQUFVO1FBQzFCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGtCQUFrQixFQUFFLFdBQVc7S0FDaEM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TWF0RGF0ZUZvcm1hdHN9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5cbmV4cG9ydCBjb25zdCBNQVRfTFVYT05fREFURV9GT1JNQVRTOiBNYXREYXRlRm9ybWF0cyA9IHtcbiAgcGFyc2U6IHtcbiAgICBkYXRlSW5wdXQ6ICdEJyxcbiAgfSxcbiAgZGlzcGxheToge1xuICAgIGRhdGVJbnB1dDogJ0QnLFxuICAgIG1vbnRoWWVhckxhYmVsOiAnTExMIHl5eXknLFxuICAgIGRhdGVBMTF5TGFiZWw6ICdERCcsXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiAnTExMTCB5eXl5JyxcbiAgfSxcbn07XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHV4b24tZGF0ZS1mb3JtYXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWx1eG9uLWFkYXB0ZXIvYWRhcHRlci9sdXhvbi1kYXRlLWZvcm1hdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBSUgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQW1CO0lBQ3BELEtBQUssRUFBRTtRQUNMLFNBQVMsRUFBRSxHQUFHO0tBQ2Y7SUFDRCxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsR0FBRztRQUNkLGNBQWMsRUFBRSxVQUFVO1FBQzFCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGtCQUFrQixFQUFFLFdBQVc7S0FDaEM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TWF0RGF0ZUZvcm1hdHN9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgTUFUX0xVWE9OX0RBVEVfRk9STUFUUzogTWF0RGF0ZUZvcm1hdHMgPSB7XG4gIHBhcnNlOiB7XG4gICAgZGF0ZUlucHV0OiAnRCcsXG4gIH0sXG4gIGRpc3BsYXk6IHtcbiAgICBkYXRlSW5wdXQ6ICdEJyxcbiAgICBtb250aFllYXJMYWJlbDogJ0xMTCB5eXl5JyxcbiAgICBkYXRlQTExeUxhYmVsOiAnREQnLFxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ0xMTEwgeXl5eScsXG4gIH0sXG59O1xuIl19
@@ -13,12 +13,12 @@ import { DateTime, Info } from 'luxon';
13
13
  /** InjectionToken for LuxonDateAdapter to configure options. */
14
14
  const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken('MAT_LUXON_DATE_ADAPTER_OPTIONS', {
15
15
  providedIn: 'root',
16
- factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY
16
+ factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY,
17
17
  });
18
18
  /** @docs-private */
19
19
  function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY() {
20
20
  return {
21
- useUtc: false
21
+ useUtc: false,
22
22
  };
23
23
  }
24
24
  /** Creates an array and fills it with values. */
@@ -88,8 +88,9 @@ class LuxonDateAdapter extends DateAdapter {
88
88
  throw Error(`Invalid date "${date}". Date has to be greater than 0.`);
89
89
  }
90
90
  // Luxon uses 1-indexed months so we need to add one to the month.
91
- const result = this._useUTC ? DateTime.utc(year, month + 1, date) :
92
- DateTime.local(year, month + 1, date);
91
+ const result = this._useUTC
92
+ ? DateTime.utc(year, month + 1, date)
93
+ : DateTime.local(year, month + 1, date);
93
94
  if (!this.isValid(result)) {
94
95
  throw Error(`Invalid date "${date}". Reason: "${result.invalidReason}".`);
95
96
  }
@@ -183,7 +184,7 @@ class LuxonDateAdapter extends DateAdapter {
183
184
  _getOptions() {
184
185
  return {
185
186
  zone: this._useUTC ? 'utc' : undefined,
186
- locale: this.locale
187
+ locale: this.locale,
187
188
  };
188
189
  }
189
190
  }
@@ -235,19 +236,23 @@ class LuxonDateModule {
235
236
  }
236
237
  LuxonDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
237
238
  LuxonDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule });
238
- LuxonDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, providers: [{
239
+ LuxonDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, providers: [
240
+ {
239
241
  provide: DateAdapter,
240
242
  useClass: LuxonDateAdapter,
241
- deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS]
242
- }] });
243
+ deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],
244
+ },
245
+ ] });
243
246
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, decorators: [{
244
247
  type: NgModule,
245
248
  args: [{
246
- providers: [{
249
+ providers: [
250
+ {
247
251
  provide: DateAdapter,
248
252
  useClass: LuxonDateAdapter,
249
- deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS]
250
- }],
253
+ deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],
254
+ },
255
+ ],
251
256
  }]
252
257
  }] });
253
258
  class MatLuxonDateModule {
@@ -1 +1 @@
1
- {"version":3,"file":"material-luxon-adapter.mjs","sources":["../../../../../../src/material-luxon-adapter/adapter/luxon-date-adapter.ts","../../../../../../src/material-luxon-adapter/adapter/luxon-date-formats.ts","../../../../../../src/material-luxon-adapter/adapter/index.ts","../../../../../../src/material-luxon-adapter/public-api.ts","../../../../../../src/material-luxon-adapter/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Inject, Injectable, Optional, InjectionToken} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {\n DateTime as LuxonDateTime,\n Info as LuxonInfo,\n DateTimeOptions as LuxonDateTimeOptions,\n} from 'luxon';\n\n/** Configurable options for {@see LuxonDateAdapter}. */\nexport interface MatLuxonDateAdapterOptions {\n /**\n * Turns the use of utc dates on or off.\n * Changing this will change how Angular Material components like DatePicker output dates.\n * {@default false}\n */\n useUtc: boolean;\n}\n\n/** InjectionToken for LuxonDateAdapter to configure options. */\nexport const MAT_LUXON_DATE_ADAPTER_OPTIONS =\n new InjectionToken<MatLuxonDateAdapterOptions>('MAT_LUXON_DATE_ADAPTER_OPTIONS', {\n providedIn: 'root',\n factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY\n });\n\n\n/** @docs-private */\nexport function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY(): MatLuxonDateAdapterOptions {\n return {\n useUtc: false\n };\n}\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts Luxon Dates for use with Angular Material. */\n@Injectable()\nexport class LuxonDateAdapter extends DateAdapter<LuxonDateTime> {\n private _useUTC: boolean;\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) dateLocale: string,\n @Optional() @Inject(MAT_LUXON_DATE_ADAPTER_OPTIONS)\n options?: MatLuxonDateAdapterOptions) {\n\n super();\n this._useUTC = !!options?.useUtc;\n this.setLocale(dateLocale || LuxonDateTime.local().locale);\n }\n\n getYear(date: LuxonDateTime): number {\n return date.year;\n }\n\n getMonth(date: LuxonDateTime): number {\n // Luxon works with 1-indexed months whereas our code expects 0-indexed.\n return date.month - 1;\n }\n\n getDate(date: LuxonDateTime): number {\n return date.day;\n }\n\n getDayOfWeek(date: LuxonDateTime): number {\n return date.weekday;\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return LuxonInfo.months(style, {locale: this.locale});\n }\n\n getDateNames(): string[] {\n // At the time of writing, Luxon doesn't offer similar\n // functionality so we have to fall back to the Intl API.\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n\n // Format a UTC date in order to avoid DST issues.\n return range(31, i => dtf.format(LuxonDateTime.utc(2017, 1, i + 1).toJSDate()));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n // Note that we shift the array once, because Luxon returns Monday as the\n // first day of the week, whereas our logic assumes that it's Sunday. See:\n // https://moment.github.io/luxon/api-docs/index.html#infoweekdays\n const days = LuxonInfo.weekdays(style, {locale: this.locale});\n days.unshift(days.pop()!);\n return days;\n }\n\n getYearName(date: LuxonDateTime): string {\n return date.toFormat('yyyy');\n }\n\n getFirstDayOfWeek(): number {\n // To customize the first day of the week, and can extend this adapter and override this method.\n return 0;\n }\n\n getNumDaysInMonth(date: LuxonDateTime): number {\n return date.daysInMonth;\n }\n\n clone(date: LuxonDateTime): LuxonDateTime {\n return LuxonDateTime.fromObject(date.toObject());\n }\n\n createDate(year: number, month: number, date: number): LuxonDateTime {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n // Luxon uses 1-indexed months so we need to add one to the month.\n const result = this._useUTC ? LuxonDateTime.utc(year, month + 1, date) :\n LuxonDateTime.local(year, month + 1, date);\n\n if (!this.isValid(result)) {\n throw Error(`Invalid date \"${date}\". Reason: \"${result.invalidReason}\".`);\n }\n\n return result.setLocale(this.locale);\n }\n\n today(): LuxonDateTime {\n return (this._useUTC ? LuxonDateTime.utc() : LuxonDateTime.local()).setLocale(this.locale);\n }\n\n parse(value: any, parseFormat: string | string[]): LuxonDateTime | null {\n const options: LuxonDateTimeOptions = this._getOptions();\n\n if (typeof value == 'string' && value.length > 0) {\n const iso8601Date = LuxonDateTime.fromISO(value, options);\n\n if (this.isValid(iso8601Date)) {\n return iso8601Date;\n }\n\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\n\n if (!parseFormat.length) {\n throw Error('Formats array must not be empty.');\n }\n\n for (const format of formats) {\n const fromFormat = LuxonDateTime.fromFormat(value, format, options);\n\n if (this.isValid(fromFormat)) {\n return fromFormat;\n }\n }\n\n return this.invalid();\n } else if (typeof value === 'number') {\n return LuxonDateTime.fromMillis(value, options);\n } else if (value instanceof Date) {\n return LuxonDateTime.fromJSDate(value, options);\n } else if (value instanceof LuxonDateTime) {\n return LuxonDateTime.fromMillis(value.toMillis(), options);\n }\n\n return null;\n }\n\n format(date: LuxonDateTime, displayFormat: string): string {\n if (!this.isValid(date)) {\n throw Error('LuxonDateAdapter: Cannot format invalid date.');\n }\n return date\n .setLocale(this.locale)\n .toFormat(displayFormat, {timeZone: this._useUTC ? 'utc' : undefined});\n }\n\n addCalendarYears(date: LuxonDateTime, years: number): LuxonDateTime {\n return date.plus({years}).setLocale(this.locale);\n }\n\n addCalendarMonths(date: LuxonDateTime, months: number): LuxonDateTime {\n return date.plus({months}).setLocale(this.locale);\n }\n\n addCalendarDays(date: LuxonDateTime, days: number): LuxonDateTime {\n return date.plus({days}).setLocale(this.locale);\n }\n\n toIso8601(date: LuxonDateTime): string {\n return date.toISO();\n }\n\n /**\n * Returns the given value if given a valid Luxon or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid DateTime and empty\n * string into null. Returns an invalid date for all other values.\n */\n override deserialize(value: any): LuxonDateTime | null {\n const options = this._getOptions();\n let date: LuxonDateTime | undefined;\n if (value instanceof Date) {\n date = LuxonDateTime.fromJSDate(value, options);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = LuxonDateTime.fromISO(value, options);\n }\n if (date && this.isValid(date)) {\n return date;\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any): boolean {\n return obj instanceof LuxonDateTime;\n }\n\n isValid(date: LuxonDateTime): boolean {\n return date.isValid;\n }\n\n invalid(): LuxonDateTime {\n return LuxonDateTime.invalid('Invalid Luxon DateTime object.');\n }\n\n /** Gets the options that should be used when constructing a new `DateTime` object. */\n private _getOptions(): LuxonDateTimeOptions {\n return {\n zone: this._useUTC ? 'utc' : undefined,\n locale: this.locale\n };\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {MatDateFormats} from '@angular/material/core';\n\n\nexport const MAT_LUXON_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'D',\n },\n display: {\n dateInput: 'D',\n monthYearLabel: 'LLL yyyy',\n dateA11yLabel: 'DD',\n monthYearA11yLabel: 'LLLL yyyy',\n },\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {MAT_LUXON_DATE_ADAPTER_OPTIONS, LuxonDateAdapter} from './luxon-date-adapter';\nimport {MAT_LUXON_DATE_FORMATS} from './luxon-date-formats';\n\nexport * from './luxon-date-adapter';\nexport * from './luxon-date-formats';\n\n@NgModule({\n providers: [{\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS]\n }],\n})\nexport class LuxonDateModule {}\n\n\n@NgModule({\n imports: [LuxonDateModule],\n providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_LUXON_DATE_FORMATS}],\n})\nexport class MatLuxonDateModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './adapter/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LuxonDateTime","LuxonInfo"],"mappings":"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"}
1
+ {"version":3,"file":"material-luxon-adapter.mjs","sources":["../../../../../../src/material-luxon-adapter/adapter/luxon-date-adapter.ts","../../../../../../src/material-luxon-adapter/adapter/luxon-date-formats.ts","../../../../../../src/material-luxon-adapter/adapter/index.ts","../../../../../../src/material-luxon-adapter/public-api.ts","../../../../../../src/material-luxon-adapter/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Inject, Injectable, Optional, InjectionToken} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {\n DateTime as LuxonDateTime,\n Info as LuxonInfo,\n DateTimeOptions as LuxonDateTimeOptions,\n} from 'luxon';\n\n/** Configurable options for {@see LuxonDateAdapter}. */\nexport interface MatLuxonDateAdapterOptions {\n /**\n * Turns the use of utc dates on or off.\n * Changing this will change how Angular Material components like DatePicker output dates.\n * {@default false}\n */\n useUtc: boolean;\n}\n\n/** InjectionToken for LuxonDateAdapter to configure options. */\nexport const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken<MatLuxonDateAdapterOptions>(\n 'MAT_LUXON_DATE_ADAPTER_OPTIONS',\n {\n providedIn: 'root',\n factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY,\n },\n);\n\n/** @docs-private */\nexport function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY(): MatLuxonDateAdapterOptions {\n return {\n useUtc: false,\n };\n}\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts Luxon Dates for use with Angular Material. */\n@Injectable()\nexport class LuxonDateAdapter extends DateAdapter<LuxonDateTime> {\n private _useUTC: boolean;\n\n constructor(\n @Optional() @Inject(MAT_DATE_LOCALE) dateLocale: string,\n @Optional()\n @Inject(MAT_LUXON_DATE_ADAPTER_OPTIONS)\n options?: MatLuxonDateAdapterOptions,\n ) {\n super();\n this._useUTC = !!options?.useUtc;\n this.setLocale(dateLocale || LuxonDateTime.local().locale);\n }\n\n getYear(date: LuxonDateTime): number {\n return date.year;\n }\n\n getMonth(date: LuxonDateTime): number {\n // Luxon works with 1-indexed months whereas our code expects 0-indexed.\n return date.month - 1;\n }\n\n getDate(date: LuxonDateTime): number {\n return date.day;\n }\n\n getDayOfWeek(date: LuxonDateTime): number {\n return date.weekday;\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return LuxonInfo.months(style, {locale: this.locale});\n }\n\n getDateNames(): string[] {\n // At the time of writing, Luxon doesn't offer similar\n // functionality so we have to fall back to the Intl API.\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n\n // Format a UTC date in order to avoid DST issues.\n return range(31, i => dtf.format(LuxonDateTime.utc(2017, 1, i + 1).toJSDate()));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n // Note that we shift the array once, because Luxon returns Monday as the\n // first day of the week, whereas our logic assumes that it's Sunday. See:\n // https://moment.github.io/luxon/api-docs/index.html#infoweekdays\n const days = LuxonInfo.weekdays(style, {locale: this.locale});\n days.unshift(days.pop()!);\n return days;\n }\n\n getYearName(date: LuxonDateTime): string {\n return date.toFormat('yyyy');\n }\n\n getFirstDayOfWeek(): number {\n // To customize the first day of the week, and can extend this adapter and override this method.\n return 0;\n }\n\n getNumDaysInMonth(date: LuxonDateTime): number {\n return date.daysInMonth;\n }\n\n clone(date: LuxonDateTime): LuxonDateTime {\n return LuxonDateTime.fromObject(date.toObject());\n }\n\n createDate(year: number, month: number, date: number): LuxonDateTime {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n // Luxon uses 1-indexed months so we need to add one to the month.\n const result = this._useUTC\n ? LuxonDateTime.utc(year, month + 1, date)\n : LuxonDateTime.local(year, month + 1, date);\n\n if (!this.isValid(result)) {\n throw Error(`Invalid date \"${date}\". Reason: \"${result.invalidReason}\".`);\n }\n\n return result.setLocale(this.locale);\n }\n\n today(): LuxonDateTime {\n return (this._useUTC ? LuxonDateTime.utc() : LuxonDateTime.local()).setLocale(this.locale);\n }\n\n parse(value: any, parseFormat: string | string[]): LuxonDateTime | null {\n const options: LuxonDateTimeOptions = this._getOptions();\n\n if (typeof value == 'string' && value.length > 0) {\n const iso8601Date = LuxonDateTime.fromISO(value, options);\n\n if (this.isValid(iso8601Date)) {\n return iso8601Date;\n }\n\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\n\n if (!parseFormat.length) {\n throw Error('Formats array must not be empty.');\n }\n\n for (const format of formats) {\n const fromFormat = LuxonDateTime.fromFormat(value, format, options);\n\n if (this.isValid(fromFormat)) {\n return fromFormat;\n }\n }\n\n return this.invalid();\n } else if (typeof value === 'number') {\n return LuxonDateTime.fromMillis(value, options);\n } else if (value instanceof Date) {\n return LuxonDateTime.fromJSDate(value, options);\n } else if (value instanceof LuxonDateTime) {\n return LuxonDateTime.fromMillis(value.toMillis(), options);\n }\n\n return null;\n }\n\n format(date: LuxonDateTime, displayFormat: string): string {\n if (!this.isValid(date)) {\n throw Error('LuxonDateAdapter: Cannot format invalid date.');\n }\n return date\n .setLocale(this.locale)\n .toFormat(displayFormat, {timeZone: this._useUTC ? 'utc' : undefined});\n }\n\n addCalendarYears(date: LuxonDateTime, years: number): LuxonDateTime {\n return date.plus({years}).setLocale(this.locale);\n }\n\n addCalendarMonths(date: LuxonDateTime, months: number): LuxonDateTime {\n return date.plus({months}).setLocale(this.locale);\n }\n\n addCalendarDays(date: LuxonDateTime, days: number): LuxonDateTime {\n return date.plus({days}).setLocale(this.locale);\n }\n\n toIso8601(date: LuxonDateTime): string {\n return date.toISO();\n }\n\n /**\n * Returns the given value if given a valid Luxon or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid DateTime and empty\n * string into null. Returns an invalid date for all other values.\n */\n override deserialize(value: any): LuxonDateTime | null {\n const options = this._getOptions();\n let date: LuxonDateTime | undefined;\n if (value instanceof Date) {\n date = LuxonDateTime.fromJSDate(value, options);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = LuxonDateTime.fromISO(value, options);\n }\n if (date && this.isValid(date)) {\n return date;\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any): boolean {\n return obj instanceof LuxonDateTime;\n }\n\n isValid(date: LuxonDateTime): boolean {\n return date.isValid;\n }\n\n invalid(): LuxonDateTime {\n return LuxonDateTime.invalid('Invalid Luxon DateTime object.');\n }\n\n /** Gets the options that should be used when constructing a new `DateTime` object. */\n private _getOptions(): LuxonDateTimeOptions {\n return {\n zone: this._useUTC ? 'utc' : undefined,\n locale: this.locale,\n };\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {MatDateFormats} from '@angular/material/core';\n\nexport const MAT_LUXON_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'D',\n },\n display: {\n dateInput: 'D',\n monthYearLabel: 'LLL yyyy',\n dateA11yLabel: 'DD',\n monthYearA11yLabel: 'LLLL yyyy',\n },\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {MAT_LUXON_DATE_ADAPTER_OPTIONS, LuxonDateAdapter} from './luxon-date-adapter';\nimport {MAT_LUXON_DATE_FORMATS} from './luxon-date-formats';\n\nexport * from './luxon-date-adapter';\nexport * from './luxon-date-formats';\n\n@NgModule({\n providers: [\n {\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],\n },\n ],\n})\nexport class LuxonDateModule {}\n\n@NgModule({\n imports: [LuxonDateModule],\n providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_LUXON_DATE_FORMATS}],\n})\nexport class MatLuxonDateModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './adapter/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LuxonDateTime","LuxonInfo"],"mappings":"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"}
@@ -13,12 +13,12 @@ import { DateTime, Info } from 'luxon';
13
13
  /** InjectionToken for LuxonDateAdapter to configure options. */
14
14
  const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken('MAT_LUXON_DATE_ADAPTER_OPTIONS', {
15
15
  providedIn: 'root',
16
- factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY
16
+ factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY,
17
17
  });
18
18
  /** @docs-private */
19
19
  function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY() {
20
20
  return {
21
- useUtc: false
21
+ useUtc: false,
22
22
  };
23
23
  }
24
24
  /** Creates an array and fills it with values. */
@@ -88,8 +88,9 @@ class LuxonDateAdapter extends DateAdapter {
88
88
  throw Error(`Invalid date "${date}". Date has to be greater than 0.`);
89
89
  }
90
90
  // Luxon uses 1-indexed months so we need to add one to the month.
91
- const result = this._useUTC ? DateTime.utc(year, month + 1, date) :
92
- DateTime.local(year, month + 1, date);
91
+ const result = this._useUTC
92
+ ? DateTime.utc(year, month + 1, date)
93
+ : DateTime.local(year, month + 1, date);
93
94
  if (!this.isValid(result)) {
94
95
  throw Error(`Invalid date "${date}". Reason: "${result.invalidReason}".`);
95
96
  }
@@ -183,7 +184,7 @@ class LuxonDateAdapter extends DateAdapter {
183
184
  _getOptions() {
184
185
  return {
185
186
  zone: this._useUTC ? 'utc' : undefined,
186
- locale: this.locale
187
+ locale: this.locale,
187
188
  };
188
189
  }
189
190
  }
@@ -233,19 +234,23 @@ class LuxonDateModule {
233
234
  }
234
235
  LuxonDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
235
236
  LuxonDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule });
236
- LuxonDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, providers: [{
237
+ LuxonDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, providers: [
238
+ {
237
239
  provide: DateAdapter,
238
240
  useClass: LuxonDateAdapter,
239
- deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS]
240
- }] });
241
+ deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],
242
+ },
243
+ ] });
241
244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-next.15", ngImport: i0, type: LuxonDateModule, decorators: [{
242
245
  type: NgModule,
243
246
  args: [{
244
- providers: [{
247
+ providers: [
248
+ {
245
249
  provide: DateAdapter,
246
250
  useClass: LuxonDateAdapter,
247
- deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS]
248
- }],
251
+ deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],
252
+ },
253
+ ],
249
254
  }]
250
255
  }] });
251
256
  class MatLuxonDateModule {
@@ -1 +1 @@
1
- {"version":3,"file":"material-luxon-adapter.mjs","sources":["../../../../../../src/material-luxon-adapter/adapter/luxon-date-adapter.ts","../../../../../../src/material-luxon-adapter/adapter/luxon-date-formats.ts","../../../../../../src/material-luxon-adapter/adapter/index.ts","../../../../../../src/material-luxon-adapter/public-api.ts","../../../../../../src/material-luxon-adapter/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Inject, Injectable, Optional, InjectionToken} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {\n DateTime as LuxonDateTime,\n Info as LuxonInfo,\n DateTimeOptions as LuxonDateTimeOptions,\n} from 'luxon';\n\n/** Configurable options for {@see LuxonDateAdapter}. */\nexport interface MatLuxonDateAdapterOptions {\n /**\n * Turns the use of utc dates on or off.\n * Changing this will change how Angular Material components like DatePicker output dates.\n * {@default false}\n */\n useUtc: boolean;\n}\n\n/** InjectionToken for LuxonDateAdapter to configure options. */\nexport const MAT_LUXON_DATE_ADAPTER_OPTIONS =\n new InjectionToken<MatLuxonDateAdapterOptions>('MAT_LUXON_DATE_ADAPTER_OPTIONS', {\n providedIn: 'root',\n factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY\n });\n\n\n/** @docs-private */\nexport function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY(): MatLuxonDateAdapterOptions {\n return {\n useUtc: false\n };\n}\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts Luxon Dates for use with Angular Material. */\n@Injectable()\nexport class LuxonDateAdapter extends DateAdapter<LuxonDateTime> {\n private _useUTC: boolean;\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) dateLocale: string,\n @Optional() @Inject(MAT_LUXON_DATE_ADAPTER_OPTIONS)\n options?: MatLuxonDateAdapterOptions) {\n\n super();\n this._useUTC = !!options?.useUtc;\n this.setLocale(dateLocale || LuxonDateTime.local().locale);\n }\n\n getYear(date: LuxonDateTime): number {\n return date.year;\n }\n\n getMonth(date: LuxonDateTime): number {\n // Luxon works with 1-indexed months whereas our code expects 0-indexed.\n return date.month - 1;\n }\n\n getDate(date: LuxonDateTime): number {\n return date.day;\n }\n\n getDayOfWeek(date: LuxonDateTime): number {\n return date.weekday;\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return LuxonInfo.months(style, {locale: this.locale});\n }\n\n getDateNames(): string[] {\n // At the time of writing, Luxon doesn't offer similar\n // functionality so we have to fall back to the Intl API.\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n\n // Format a UTC date in order to avoid DST issues.\n return range(31, i => dtf.format(LuxonDateTime.utc(2017, 1, i + 1).toJSDate()));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n // Note that we shift the array once, because Luxon returns Monday as the\n // first day of the week, whereas our logic assumes that it's Sunday. See:\n // https://moment.github.io/luxon/api-docs/index.html#infoweekdays\n const days = LuxonInfo.weekdays(style, {locale: this.locale});\n days.unshift(days.pop()!);\n return days;\n }\n\n getYearName(date: LuxonDateTime): string {\n return date.toFormat('yyyy');\n }\n\n getFirstDayOfWeek(): number {\n // To customize the first day of the week, and can extend this adapter and override this method.\n return 0;\n }\n\n getNumDaysInMonth(date: LuxonDateTime): number {\n return date.daysInMonth;\n }\n\n clone(date: LuxonDateTime): LuxonDateTime {\n return LuxonDateTime.fromObject(date.toObject());\n }\n\n createDate(year: number, month: number, date: number): LuxonDateTime {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n // Luxon uses 1-indexed months so we need to add one to the month.\n const result = this._useUTC ? LuxonDateTime.utc(year, month + 1, date) :\n LuxonDateTime.local(year, month + 1, date);\n\n if (!this.isValid(result)) {\n throw Error(`Invalid date \"${date}\". Reason: \"${result.invalidReason}\".`);\n }\n\n return result.setLocale(this.locale);\n }\n\n today(): LuxonDateTime {\n return (this._useUTC ? LuxonDateTime.utc() : LuxonDateTime.local()).setLocale(this.locale);\n }\n\n parse(value: any, parseFormat: string | string[]): LuxonDateTime | null {\n const options: LuxonDateTimeOptions = this._getOptions();\n\n if (typeof value == 'string' && value.length > 0) {\n const iso8601Date = LuxonDateTime.fromISO(value, options);\n\n if (this.isValid(iso8601Date)) {\n return iso8601Date;\n }\n\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\n\n if (!parseFormat.length) {\n throw Error('Formats array must not be empty.');\n }\n\n for (const format of formats) {\n const fromFormat = LuxonDateTime.fromFormat(value, format, options);\n\n if (this.isValid(fromFormat)) {\n return fromFormat;\n }\n }\n\n return this.invalid();\n } else if (typeof value === 'number') {\n return LuxonDateTime.fromMillis(value, options);\n } else if (value instanceof Date) {\n return LuxonDateTime.fromJSDate(value, options);\n } else if (value instanceof LuxonDateTime) {\n return LuxonDateTime.fromMillis(value.toMillis(), options);\n }\n\n return null;\n }\n\n format(date: LuxonDateTime, displayFormat: string): string {\n if (!this.isValid(date)) {\n throw Error('LuxonDateAdapter: Cannot format invalid date.');\n }\n return date\n .setLocale(this.locale)\n .toFormat(displayFormat, {timeZone: this._useUTC ? 'utc' : undefined});\n }\n\n addCalendarYears(date: LuxonDateTime, years: number): LuxonDateTime {\n return date.plus({years}).setLocale(this.locale);\n }\n\n addCalendarMonths(date: LuxonDateTime, months: number): LuxonDateTime {\n return date.plus({months}).setLocale(this.locale);\n }\n\n addCalendarDays(date: LuxonDateTime, days: number): LuxonDateTime {\n return date.plus({days}).setLocale(this.locale);\n }\n\n toIso8601(date: LuxonDateTime): string {\n return date.toISO();\n }\n\n /**\n * Returns the given value if given a valid Luxon or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid DateTime and empty\n * string into null. Returns an invalid date for all other values.\n */\n override deserialize(value: any): LuxonDateTime | null {\n const options = this._getOptions();\n let date: LuxonDateTime | undefined;\n if (value instanceof Date) {\n date = LuxonDateTime.fromJSDate(value, options);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = LuxonDateTime.fromISO(value, options);\n }\n if (date && this.isValid(date)) {\n return date;\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any): boolean {\n return obj instanceof LuxonDateTime;\n }\n\n isValid(date: LuxonDateTime): boolean {\n return date.isValid;\n }\n\n invalid(): LuxonDateTime {\n return LuxonDateTime.invalid('Invalid Luxon DateTime object.');\n }\n\n /** Gets the options that should be used when constructing a new `DateTime` object. */\n private _getOptions(): LuxonDateTimeOptions {\n return {\n zone: this._useUTC ? 'utc' : undefined,\n locale: this.locale\n };\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {MatDateFormats} from '@angular/material/core';\n\n\nexport const MAT_LUXON_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'D',\n },\n display: {\n dateInput: 'D',\n monthYearLabel: 'LLL yyyy',\n dateA11yLabel: 'DD',\n monthYearA11yLabel: 'LLLL yyyy',\n },\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {MAT_LUXON_DATE_ADAPTER_OPTIONS, LuxonDateAdapter} from './luxon-date-adapter';\nimport {MAT_LUXON_DATE_FORMATS} from './luxon-date-formats';\n\nexport * from './luxon-date-adapter';\nexport * from './luxon-date-formats';\n\n@NgModule({\n providers: [{\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS]\n }],\n})\nexport class LuxonDateModule {}\n\n\n@NgModule({\n imports: [LuxonDateModule],\n providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_LUXON_DATE_FORMATS}],\n})\nexport class MatLuxonDateModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './adapter/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LuxonDateTime","LuxonInfo"],"mappings":";;;;;AAAA;;;;;;;AA0BA;MACa,8BAA8B,GACzC,IAAI,cAAc,CAA6B,gCAAgC,EAAE;IAC/E,UAAU,EAAE,MAAM;IAClB,OAAO,EAAE,sCAAsC;CAChD,EAAE;AAGL;SACgB,sCAAsC;IACpD,OAAO;QACL,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC;AAED;AACA,SAAS,KAAK,CAAI,MAAc,EAAE,aAAmC;IACnE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;KACnC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;MAEa,gBAAiB,SAAQ,WAA0B;IAG9D,YAAiD,UAAkB,EAEjE,OAAoC;QAEpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAIA,QAAa,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;KAC5D;IAED,OAAO,CAAC,IAAmB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;IAED,QAAQ,CAAC,IAAmB;;QAE1B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KACvB;IAED,OAAO,CAAC,IAAmB;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IAED,YAAY,CAAC,IAAmB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,aAAa,CAAC,KAAkC;QAC9C,OAAOC,IAAS,CAAC,MAAM,CAAC,KAAK,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;KACvD;IAED,YAAY;;;QAGV,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;;QAGpF,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAACD,QAAa,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;KACjF;IAED,iBAAiB,CAAC,KAAkC;;;;QAIlD,MAAM,IAAI,GAAGC,IAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,IAAmB;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,iBAAiB;;QAEf,OAAO,CAAC,CAAC;KACV;IAED,iBAAiB,CAAC,IAAmB;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAED,KAAK,CAAC,IAAmB;QACvB,OAAOD,QAAa,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KAClD;IAED,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;QAClD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE;YAC3B,MAAM,KAAK,CAAC,wBAAwB,KAAK,4CAA4C,CAAC,CAAC;SACxF;QAED,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,MAAM,KAAK,CAAC,iBAAiB,IAAI,mCAAmC,CAAC,CAAC;SACvE;;QAGD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAGA,QAAa,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC;YACxCA,QAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAEzE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,KAAK,CAAC,iBAAiB,IAAI,eAAe,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;SAC3E;QAED,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACtC;IAED,KAAK;QACH,OAAO,CAAC,IAAI,CAAC,OAAO,GAAGA,QAAa,CAAC,GAAG,EAAE,GAAGA,QAAa,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5F;IAED,KAAK,CAAC,KAAU,EAAE,WAA8B;QAC9C,MAAM,OAAO,GAAyB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzD,IAAI,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,MAAM,WAAW,GAAGA,QAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAE1D,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC7B,OAAO,WAAW,CAAC;aACpB;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,CAAC,WAAW,CAAC,CAAC;YAEzE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBACvB,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACjD;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,MAAM,UAAU,GAAGA,QAAa,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEpE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;oBAC5B,OAAO,UAAU,CAAC;iBACnB;aACF;YAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACvB;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,OAAOA,QAAa,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACjD;aAAM,IAAI,KAAK,YAAY,IAAI,EAAE;YAChC,OAAOA,QAAa,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACjD;aAAM,IAAI,KAAK,YAAYA,QAAa,EAAE;YACzC,OAAOA,QAAa,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;SAC5D;QAED,OAAO,IAAI,CAAC;KACb;IAED,MAAM,CAAC,IAAmB,EAAE,aAAqB;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAC9D;QACD,OAAO,IAAI;aACN,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;aACtB,QAAQ,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,SAAS,EAAC,CAAC,CAAC;KAC5E;IAED,gBAAgB,CAAC,IAAmB,EAAE,KAAa;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClD;IAED,iBAAiB,CAAC,IAAmB,EAAE,MAAc;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACnD;IAED,eAAe,CAAC,IAAmB,EAAE,IAAY;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjD;IAED,SAAS,CAAC,IAAmB;QAC3B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;;;;;;IAOQ,WAAW,CAAC,KAAU;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,IAA+B,CAAC;QACpC,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,IAAI,GAAGA,QAAa,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACjD;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,IAAI,GAAGA,QAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC9C;QACD,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,cAAc,CAAC,GAAQ;QACrB,OAAO,GAAG,YAAYA,QAAa,CAAC;KACrC;IAED,OAAO,CAAC,IAAmB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,OAAO;QACL,OAAOA,QAAa,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;KAChE;;IAGO,WAAW;QACjB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,SAAS;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;KACH;;qHAlMU,gBAAgB,kBAGK,eAAe,6BACzB,8BAA8B;yHAJzC,gBAAgB;mGAAhB,gBAAgB;kBAD5B,UAAU;;0BAII,QAAQ;;0BAAI,MAAM;2BAAC,eAAe;;0BAC5C,QAAQ;;0BAAI,MAAM;2BAAC,8BAA8B;;;ACxDtD;;;;;;;MAWa,sBAAsB,GAAmB;IACpD,KAAK,EAAE;QACL,SAAS,EAAE,GAAG;KACf;IACD,OAAO,EAAE;QACP,SAAS,EAAE,GAAG;QACd,cAAc,EAAE,UAAU;QAC1B,aAAa,EAAE,IAAI;QACnB,kBAAkB,EAAE,WAAW;KAChC;;;ACpBH;;;;;;;MAuBa,eAAe;;oHAAf,eAAe;qHAAf,eAAe;qHAAf,eAAe,aANf,CAAC;YACV,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,CAAC,eAAe,EAAE,8BAA8B,CAAC;SACxD,CAAC;mGAES,eAAe;kBAP3B,QAAQ;mBAAC;oBACR,SAAS,EAAE,CAAC;4BACV,OAAO,EAAE,WAAW;4BACpB,QAAQ,EAAE,gBAAgB;4BAC1B,IAAI,EAAE,CAAC,eAAe,EAAE,8BAA8B,CAAC;yBACxD,CAAC;iBACH;;MAQY,kBAAkB;;uHAAlB,kBAAkB;wHAAlB,kBAAkB,YAPlB,eAAe;wHAOf,kBAAkB,aAFlB,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,sBAAsB,EAAC,CAAC,YADjE,CAAC,eAAe,CAAC;mGAGf,kBAAkB;kBAJ9B,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,eAAe,CAAC;oBAC1B,SAAS,EAAE,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,sBAAsB,EAAC,CAAC;iBAC3E;;;AC7BD;;;;;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"material-luxon-adapter.mjs","sources":["../../../../../../src/material-luxon-adapter/adapter/luxon-date-adapter.ts","../../../../../../src/material-luxon-adapter/adapter/luxon-date-formats.ts","../../../../../../src/material-luxon-adapter/adapter/index.ts","../../../../../../src/material-luxon-adapter/public-api.ts","../../../../../../src/material-luxon-adapter/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Inject, Injectable, Optional, InjectionToken} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {\n DateTime as LuxonDateTime,\n Info as LuxonInfo,\n DateTimeOptions as LuxonDateTimeOptions,\n} from 'luxon';\n\n/** Configurable options for {@see LuxonDateAdapter}. */\nexport interface MatLuxonDateAdapterOptions {\n /**\n * Turns the use of utc dates on or off.\n * Changing this will change how Angular Material components like DatePicker output dates.\n * {@default false}\n */\n useUtc: boolean;\n}\n\n/** InjectionToken for LuxonDateAdapter to configure options. */\nexport const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken<MatLuxonDateAdapterOptions>(\n 'MAT_LUXON_DATE_ADAPTER_OPTIONS',\n {\n providedIn: 'root',\n factory: MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY,\n },\n);\n\n/** @docs-private */\nexport function MAT_LUXON_DATE_ADAPTER_OPTIONS_FACTORY(): MatLuxonDateAdapterOptions {\n return {\n useUtc: false,\n };\n}\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts Luxon Dates for use with Angular Material. */\n@Injectable()\nexport class LuxonDateAdapter extends DateAdapter<LuxonDateTime> {\n private _useUTC: boolean;\n\n constructor(\n @Optional() @Inject(MAT_DATE_LOCALE) dateLocale: string,\n @Optional()\n @Inject(MAT_LUXON_DATE_ADAPTER_OPTIONS)\n options?: MatLuxonDateAdapterOptions,\n ) {\n super();\n this._useUTC = !!options?.useUtc;\n this.setLocale(dateLocale || LuxonDateTime.local().locale);\n }\n\n getYear(date: LuxonDateTime): number {\n return date.year;\n }\n\n getMonth(date: LuxonDateTime): number {\n // Luxon works with 1-indexed months whereas our code expects 0-indexed.\n return date.month - 1;\n }\n\n getDate(date: LuxonDateTime): number {\n return date.day;\n }\n\n getDayOfWeek(date: LuxonDateTime): number {\n return date.weekday;\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return LuxonInfo.months(style, {locale: this.locale});\n }\n\n getDateNames(): string[] {\n // At the time of writing, Luxon doesn't offer similar\n // functionality so we have to fall back to the Intl API.\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n\n // Format a UTC date in order to avoid DST issues.\n return range(31, i => dtf.format(LuxonDateTime.utc(2017, 1, i + 1).toJSDate()));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n // Note that we shift the array once, because Luxon returns Monday as the\n // first day of the week, whereas our logic assumes that it's Sunday. See:\n // https://moment.github.io/luxon/api-docs/index.html#infoweekdays\n const days = LuxonInfo.weekdays(style, {locale: this.locale});\n days.unshift(days.pop()!);\n return days;\n }\n\n getYearName(date: LuxonDateTime): string {\n return date.toFormat('yyyy');\n }\n\n getFirstDayOfWeek(): number {\n // To customize the first day of the week, and can extend this adapter and override this method.\n return 0;\n }\n\n getNumDaysInMonth(date: LuxonDateTime): number {\n return date.daysInMonth;\n }\n\n clone(date: LuxonDateTime): LuxonDateTime {\n return LuxonDateTime.fromObject(date.toObject());\n }\n\n createDate(year: number, month: number, date: number): LuxonDateTime {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n // Luxon uses 1-indexed months so we need to add one to the month.\n const result = this._useUTC\n ? LuxonDateTime.utc(year, month + 1, date)\n : LuxonDateTime.local(year, month + 1, date);\n\n if (!this.isValid(result)) {\n throw Error(`Invalid date \"${date}\". Reason: \"${result.invalidReason}\".`);\n }\n\n return result.setLocale(this.locale);\n }\n\n today(): LuxonDateTime {\n return (this._useUTC ? LuxonDateTime.utc() : LuxonDateTime.local()).setLocale(this.locale);\n }\n\n parse(value: any, parseFormat: string | string[]): LuxonDateTime | null {\n const options: LuxonDateTimeOptions = this._getOptions();\n\n if (typeof value == 'string' && value.length > 0) {\n const iso8601Date = LuxonDateTime.fromISO(value, options);\n\n if (this.isValid(iso8601Date)) {\n return iso8601Date;\n }\n\n const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\n\n if (!parseFormat.length) {\n throw Error('Formats array must not be empty.');\n }\n\n for (const format of formats) {\n const fromFormat = LuxonDateTime.fromFormat(value, format, options);\n\n if (this.isValid(fromFormat)) {\n return fromFormat;\n }\n }\n\n return this.invalid();\n } else if (typeof value === 'number') {\n return LuxonDateTime.fromMillis(value, options);\n } else if (value instanceof Date) {\n return LuxonDateTime.fromJSDate(value, options);\n } else if (value instanceof LuxonDateTime) {\n return LuxonDateTime.fromMillis(value.toMillis(), options);\n }\n\n return null;\n }\n\n format(date: LuxonDateTime, displayFormat: string): string {\n if (!this.isValid(date)) {\n throw Error('LuxonDateAdapter: Cannot format invalid date.');\n }\n return date\n .setLocale(this.locale)\n .toFormat(displayFormat, {timeZone: this._useUTC ? 'utc' : undefined});\n }\n\n addCalendarYears(date: LuxonDateTime, years: number): LuxonDateTime {\n return date.plus({years}).setLocale(this.locale);\n }\n\n addCalendarMonths(date: LuxonDateTime, months: number): LuxonDateTime {\n return date.plus({months}).setLocale(this.locale);\n }\n\n addCalendarDays(date: LuxonDateTime, days: number): LuxonDateTime {\n return date.plus({days}).setLocale(this.locale);\n }\n\n toIso8601(date: LuxonDateTime): string {\n return date.toISO();\n }\n\n /**\n * Returns the given value if given a valid Luxon or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid DateTime and empty\n * string into null. Returns an invalid date for all other values.\n */\n override deserialize(value: any): LuxonDateTime | null {\n const options = this._getOptions();\n let date: LuxonDateTime | undefined;\n if (value instanceof Date) {\n date = LuxonDateTime.fromJSDate(value, options);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = LuxonDateTime.fromISO(value, options);\n }\n if (date && this.isValid(date)) {\n return date;\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any): boolean {\n return obj instanceof LuxonDateTime;\n }\n\n isValid(date: LuxonDateTime): boolean {\n return date.isValid;\n }\n\n invalid(): LuxonDateTime {\n return LuxonDateTime.invalid('Invalid Luxon DateTime object.');\n }\n\n /** Gets the options that should be used when constructing a new `DateTime` object. */\n private _getOptions(): LuxonDateTimeOptions {\n return {\n zone: this._useUTC ? 'utc' : undefined,\n locale: this.locale,\n };\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {MatDateFormats} from '@angular/material/core';\n\nexport const MAT_LUXON_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'D',\n },\n display: {\n dateInput: 'D',\n monthYearLabel: 'LLL yyyy',\n dateA11yLabel: 'DD',\n monthYearA11yLabel: 'LLLL yyyy',\n },\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {MAT_LUXON_DATE_ADAPTER_OPTIONS, LuxonDateAdapter} from './luxon-date-adapter';\nimport {MAT_LUXON_DATE_FORMATS} from './luxon-date-formats';\n\nexport * from './luxon-date-adapter';\nexport * from './luxon-date-formats';\n\n@NgModule({\n providers: [\n {\n provide: DateAdapter,\n useClass: LuxonDateAdapter,\n deps: [MAT_DATE_LOCALE, MAT_LUXON_DATE_ADAPTER_OPTIONS],\n },\n ],\n})\nexport class LuxonDateModule {}\n\n@NgModule({\n imports: [LuxonDateModule],\n providers: [{provide: MAT_DATE_FORMATS, useValue: MAT_LUXON_DATE_FORMATS}],\n})\nexport class MatLuxonDateModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './adapter/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["LuxonDateTime","LuxonInfo"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/material-luxon-adapter",
3
- "version": "13.0.0-rc.0",
3
+ "version": "13.0.0-rc.1",
4
4
  "description": "Angular Material Luxon Adapter",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  },
13
13
  "homepage": "https://github.com/angular/components#readme",
14
14
  "peerDependencies": {
15
- "@angular/material": "13.0.0-rc.0",
15
+ "@angular/material": "13.0.0-rc.1",
16
16
  "@angular/core": "^13.0.0-0 || ^14.0.0-0",
17
17
  "luxon": "^2.0.0"
18
18
  },