@wkly/datetime-picker 12.0.0 → 14.0.0

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.
Files changed (61) hide show
  1. package/cdk-overlay/index.d.ts +5 -0
  2. package/cdk-overlay/public-api.d.ts +10 -0
  3. package/config.d.ts +3 -0
  4. package/esm2020/cdk-overlay/public-api.mjs +137 -0
  5. package/{esm2015/cdk-overlay/wkly-datetime-picker-cdk-overlay.js → esm2020/cdk-overlay/wkly-datetime-picker-cdk-overlay.mjs} +1 -1
  6. package/esm2020/config.mjs +100 -0
  7. package/esm2020/field.component.mjs +253 -0
  8. package/esm2020/picker.component.mjs +955 -0
  9. package/esm2020/presentation.mjs +303 -0
  10. package/esm2020/public-api.mjs +31 -0
  11. package/{esm2015/wkly-datetime-picker.js → esm2020/wkly-datetime-picker.mjs} +1 -1
  12. package/fesm2015/wkly-datetime-picker-cdk-overlay.mjs +143 -0
  13. package/fesm2015/wkly-datetime-picker-cdk-overlay.mjs.map +1 -0
  14. package/fesm2015/wkly-datetime-picker.mjs +1624 -0
  15. package/fesm2015/wkly-datetime-picker.mjs.map +1 -0
  16. package/fesm2020/wkly-datetime-picker-cdk-overlay.mjs +143 -0
  17. package/fesm2020/wkly-datetime-picker-cdk-overlay.mjs.map +1 -0
  18. package/fesm2020/wkly-datetime-picker.mjs +1622 -0
  19. package/fesm2020/wkly-datetime-picker.mjs.map +1 -0
  20. package/field.component.d.ts +3 -0
  21. package/{cdk-overlay/wkly-datetime-picker-cdk-overlay.d.ts → index.d.ts} +1 -0
  22. package/package.json +35 -15
  23. package/picker.component.d.ts +3 -0
  24. package/presentation.d.ts +7 -0
  25. package/public-api.d.ts +8 -0
  26. package/bundles/wkly-datetime-picker-cdk-overlay.umd.js +0 -675
  27. package/bundles/wkly-datetime-picker-cdk-overlay.umd.js.map +0 -1
  28. package/bundles/wkly-datetime-picker.umd.js +0 -2373
  29. package/bundles/wkly-datetime-picker.umd.js.map +0 -1
  30. package/cdk-overlay/package.json +0 -11
  31. package/cdk-overlay/public-api.ngfactory.d.ts +0 -3
  32. package/cdk-overlay/wkly-datetime-picker-cdk-overlay.metadata.json +0 -1
  33. package/esm2015/cdk-overlay/public-api.js +0 -127
  34. package/esm2015/cdk-overlay/public-api.ngfactory.js +0 -19
  35. package/esm2015/cdk-overlay/public-api.ngsummary.json +0 -1
  36. package/esm2015/cdk-overlay/wkly-datetime-picker-cdk-overlay.ngsummary.json +0 -1
  37. package/esm2015/config.js +0 -241
  38. package/esm2015/config.ngsummary.json +0 -1
  39. package/esm2015/field.component.css.shim.ngstyle.js +0 -9
  40. package/esm2015/field.component.js +0 -240
  41. package/esm2015/field.component.ngfactory.js +0 -52
  42. package/esm2015/field.component.ngsummary.json +0 -1
  43. package/esm2015/picker.component.js +0 -929
  44. package/esm2015/picker.component.ngfactory.js +0 -137
  45. package/esm2015/picker.component.ngsummary.json +0 -1
  46. package/esm2015/presentation.js +0 -295
  47. package/esm2015/presentation.ngsummary.json +0 -1
  48. package/esm2015/public-api.js +0 -24
  49. package/esm2015/public-api.ngfactory.js +0 -13
  50. package/esm2015/public-api.ngsummary.json +0 -1
  51. package/esm2015/wkly-datetime-picker.ngsummary.json +0 -1
  52. package/fesm2015/wkly-datetime-picker-cdk-overlay.js +0 -134
  53. package/fesm2015/wkly-datetime-picker-cdk-overlay.js.map +0 -1
  54. package/fesm2015/wkly-datetime-picker.js +0 -1715
  55. package/fesm2015/wkly-datetime-picker.js.map +0 -1
  56. package/field.component.css.shim.ngstyle.d.ts +0 -1
  57. package/field.component.ngfactory.d.ts +0 -1
  58. package/picker.component.ngfactory.d.ts +0 -1
  59. package/public-api.ngfactory.d.ts +0 -3
  60. package/wkly-datetime-picker.d.ts +0 -5
  61. package/wkly-datetime-picker.metadata.json +0 -1
@@ -0,0 +1,303 @@
1
+ import { ApplicationRef, ComponentFactoryResolver, Directive, ElementRef, forwardRef, HostListener, Inject, Injectable, Injector, PLATFORM_ID, } from "@angular/core";
2
+ import { DOCUMENT, isPlatformBrowser } from "@angular/common";
3
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR, } from "@angular/forms";
4
+ import { validateSelection, WklyGregorianCalendarAdapter, } from "@wkly/adapters";
5
+ import { coerceBoolean, INPUT_NAMES, WklyPickerInputs, WklyPickerInputsPropertyKeys, WklyPickerOutputsPropertyKeys, } from "./config";
6
+ import { WklyDateTimePickerComponent } from "./picker.component";
7
+ import * as i0 from "@angular/core";
8
+ /** Native-dialog factory. Browser resources are allocated only by open(). */
9
+ export class WklyDateTimePickerDialogService {
10
+ constructor(resolver, injector, app, document, platform) {
11
+ this.resolver = resolver;
12
+ this.injector = injector;
13
+ this.app = app;
14
+ this.document = document;
15
+ this.platform = platform;
16
+ }
17
+ open(trigger, onCancel, backdrop = true, injector) {
18
+ if (!isPlatformBrowser(this.platform))
19
+ throw new Error("Picker presentations can only open in a browser");
20
+ const dialog = this.document.createElement("dialog");
21
+ dialog.setAttribute("aria-label", "Date and time picker");
22
+ Object.assign(dialog.style, {
23
+ padding: "0",
24
+ border: "0",
25
+ borderRadius: "14px",
26
+ width: "min(390px, 100vw)",
27
+ maxWidth: "100vw",
28
+ maxHeight: "94vh",
29
+ background: "transparent",
30
+ });
31
+ const component = this.resolver
32
+ .resolveComponentFactory(WklyDateTimePickerComponent)
33
+ .create(injector || this.injector);
34
+ component.instance.presentation = "transient";
35
+ dialog.appendChild(component.location.nativeElement);
36
+ this.document.body.appendChild(dialog);
37
+ this.app.attachView(component.hostView);
38
+ const cancel = (event) => {
39
+ event.preventDefault();
40
+ onCancel("escape");
41
+ };
42
+ const click = (event) => {
43
+ if (backdrop && event.target === dialog) {
44
+ const r = dialog.getBoundingClientRect();
45
+ if (event.clientX < r.left ||
46
+ event.clientX > r.right ||
47
+ event.clientY < r.top ||
48
+ event.clientY > r.bottom)
49
+ onCancel("backdrop");
50
+ }
51
+ };
52
+ const keydown = (event) => {
53
+ if (event.key !== "Tab")
54
+ return;
55
+ const controls = Array.from(dialog.querySelectorAll('button:not(:disabled),input:not(:disabled),[tabindex="0"]')).filter((el) => el.tabIndex >= 0 &&
56
+ el.getClientRects().length &&
57
+ getComputedStyle(el).visibility !== "hidden");
58
+ const first = controls[0], last = controls[controls.length - 1];
59
+ if (first &&
60
+ (event.shiftKey
61
+ ? this.document.activeElement === first
62
+ : this.document.activeElement === last)) {
63
+ event.preventDefault();
64
+ (event.shiftKey ? last : first).focus();
65
+ }
66
+ };
67
+ dialog.addEventListener("cancel", cancel);
68
+ dialog.addEventListener("click", click);
69
+ dialog.addEventListener("keydown", keydown);
70
+ dialog.showModal();
71
+ return {
72
+ component,
73
+ destroy: () => {
74
+ dialog.removeEventListener("cancel", cancel);
75
+ dialog.removeEventListener("click", click);
76
+ dialog.removeEventListener("keydown", keydown);
77
+ dialog.close();
78
+ this.app.detachView(component.hostView);
79
+ component.destroy();
80
+ dialog.remove();
81
+ trigger.focus();
82
+ },
83
+ };
84
+ }
85
+ }
86
+ WklyDateTimePickerDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerDialogService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ApplicationRef }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
87
+ WklyDateTimePickerDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerDialogService, providedIn: "root" });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerDialogService, decorators: [{
89
+ type: Injectable,
90
+ args: [{ providedIn: "root" }]
91
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ApplicationRef }, { type: Document, decorators: [{
92
+ type: Inject,
93
+ args: [DOCUMENT]
94
+ }] }, { type: Object, decorators: [{
95
+ type: Inject,
96
+ args: [PLATFORM_ID]
97
+ }] }]; } });
98
+ /** Shared trigger lifecycle; optional presentation packages extend this class. */
99
+ export class WklyTriggerBase extends WklyPickerInputs {
100
+ constructor(element) {
101
+ super();
102
+ this.element = element;
103
+ this.ref = null;
104
+ this.subscriptions = [];
105
+ this.errors = [];
106
+ this.change = () => { };
107
+ this.touched = () => { };
108
+ this.validation = () => { };
109
+ }
110
+ open() {
111
+ if (this[WklyPickerInputsPropertyKeys.Disabled] || this.ref)
112
+ return;
113
+ this.ref = this.create();
114
+ const picker = this.ref.component.instance;
115
+ this.copy();
116
+ this.subscriptions = [
117
+ picker[WklyPickerOutputsPropertyKeys.ValueChange].subscribe((value) => {
118
+ this[WklyPickerInputsPropertyKeys.Value] = value;
119
+ this.change(value);
120
+ this[WklyPickerOutputsPropertyKeys.ValueChange].emit(value);
121
+ this.display();
122
+ }),
123
+ picker[WklyPickerOutputsPropertyKeys.ValidationChange].subscribe((errors) => {
124
+ this.errors = errors;
125
+ this[WklyPickerOutputsPropertyKeys.ValidationChange].emit(errors);
126
+ this.validation();
127
+ }),
128
+ picker[WklyPickerOutputsPropertyKeys.Closed].subscribe((reason) => this.close(reason)),
129
+ picker[WklyPickerOutputsPropertyKeys.ViewportChange].subscribe((value) => this[WklyPickerOutputsPropertyKeys.ViewportChange].emit(value)),
130
+ picker[WklyPickerOutputsPropertyKeys.ViewModeChange].subscribe((value) => this[WklyPickerOutputsPropertyKeys.ViewModeChange].emit(value)),
131
+ ];
132
+ this.ref.component.changeDetectorRef.detectChanges();
133
+ picker.focusDay();
134
+ this[WklyPickerOutputsPropertyKeys.Opened].emit();
135
+ }
136
+ key(event) {
137
+ if (event.key === "Enter" ||
138
+ event.key === " " ||
139
+ event.key === "ArrowDown") {
140
+ event.preventDefault();
141
+ this.open();
142
+ }
143
+ }
144
+ blur() {
145
+ this.touched();
146
+ }
147
+ close(reason = "programmatic") {
148
+ if (!this.ref)
149
+ return;
150
+ const ref = this.ref;
151
+ this.ref = null;
152
+ this.subscriptions.forEach((s) => s.unsubscribe());
153
+ this.subscriptions = [];
154
+ ref.destroy();
155
+ this.touched();
156
+ this[WklyPickerOutputsPropertyKeys.Closed].emit(reason);
157
+ }
158
+ ngOnChanges() {
159
+ [
160
+ WklyPickerInputsPropertyKeys.ShowSeconds,
161
+ WklyPickerInputsPropertyKeys.AllowRangeAcrossDisabled,
162
+ WklyPickerInputsPropertyKeys.Required,
163
+ WklyPickerInputsPropertyKeys.Disabled,
164
+ WklyPickerInputsPropertyKeys.CloseOnBackdrop,
165
+ ].forEach((key) => (this[key] = coerceBoolean(this[key])));
166
+ this.checkValue();
167
+ this.display();
168
+ if (this.ref) {
169
+ this.copy();
170
+ this.ref.component.instance.ngOnChanges({
171
+ [WklyPickerInputsPropertyKeys.Value]: true,
172
+ });
173
+ this.ref.component.changeDetectorRef.detectChanges();
174
+ }
175
+ }
176
+ ngOnDestroy() {
177
+ this.close();
178
+ }
179
+ copy() {
180
+ if (this.ref)
181
+ for (const name of INPUT_NAMES)
182
+ this.ref.component.instance[name] = this[name];
183
+ }
184
+ display() {
185
+ const host = this.element.nativeElement;
186
+ if (host.tagName === "INPUT") {
187
+ host.readOnly = true;
188
+ const value = this[WklyPickerInputsPropertyKeys.Value];
189
+ host.value =
190
+ value === null
191
+ ? ""
192
+ : typeof value === "string"
193
+ ? value
194
+ : value.join(" — ");
195
+ host.disabled = this[WklyPickerInputsPropertyKeys.Disabled];
196
+ host.setAttribute("aria-haspopup", "dialog");
197
+ }
198
+ }
199
+ checkValue() {
200
+ this.errors = validateSelection(this[WklyPickerInputsPropertyKeys.Value], this, this[WklyPickerInputsPropertyKeys.CalendarAdapter] ||
201
+ new WklyGregorianCalendarAdapter(this[WklyPickerInputsPropertyKeys.Locale] || "en-US"));
202
+ this[WklyPickerOutputsPropertyKeys.ValidationChange].emit(this.errors);
203
+ this.validation();
204
+ }
205
+ writeValue(value) {
206
+ this[WklyPickerInputsPropertyKeys.Value] = value;
207
+ this.checkValue();
208
+ this.display();
209
+ if (this.ref)
210
+ this.ref.component.instance.writeValue(value);
211
+ }
212
+ registerOnChange(fn) {
213
+ this.change = fn;
214
+ }
215
+ registerOnTouched(fn) {
216
+ this.touched = fn;
217
+ }
218
+ setDisabledState(value) {
219
+ this[WklyPickerInputsPropertyKeys.Disabled] = value;
220
+ this.display();
221
+ if (this.ref)
222
+ this.ref.component.instance.setDisabledState(value);
223
+ }
224
+ validate() {
225
+ return this.errors.length ? { wkly: this.errors } : null;
226
+ }
227
+ registerOnValidatorChange(fn) {
228
+ this.validation = fn;
229
+ }
230
+ scrollToEpochDay(day, options) {
231
+ this.open();
232
+ this.ref?.component.instance.scrollToEpochDay(day, options);
233
+ }
234
+ scrollToAbsoluteWeek(week, options) {
235
+ this.open();
236
+ this.ref?.component.instance.scrollToAbsoluteWeek(week, options);
237
+ }
238
+ scrollToCalendarDate(date, options) {
239
+ this.open();
240
+ this.ref?.component.instance.scrollToCalendarDate(date, options);
241
+ }
242
+ scrollToValue(value, options) {
243
+ this.open();
244
+ this.ref?.component.instance.scrollToValue(value, options);
245
+ }
246
+ }
247
+ WklyTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyTriggerBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
248
+ WklyTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: WklyTriggerBase, host: { listeners: { "click": "open()", "keydown": "key($event)", "blur": "blur()" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyTriggerBase, decorators: [{
250
+ type: Directive
251
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { open: [{
252
+ type: HostListener,
253
+ args: ["click"]
254
+ }], key: [{
255
+ type: HostListener,
256
+ args: ["keydown", ["$event"]]
257
+ }], blur: [{
258
+ type: HostListener,
259
+ args: ["blur"]
260
+ }] } });
261
+ export class WklyDateTimePickerDialogDirective extends WklyTriggerBase {
262
+ constructor(element, service, triggerInjector) {
263
+ super(element);
264
+ this.service = service;
265
+ this.triggerInjector = triggerInjector;
266
+ }
267
+ create() {
268
+ return this.service.open(this.element.nativeElement, (reason) => this.close(reason), this[WklyPickerInputsPropertyKeys.CloseOnBackdrop], this.triggerInjector);
269
+ }
270
+ }
271
+ WklyDateTimePickerDialogDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerDialogDirective, deps: [{ token: i0.ElementRef }, { token: WklyDateTimePickerDialogService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
272
+ WklyDateTimePickerDialogDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: WklyDateTimePickerDialogDirective, selector: "[wklyDateTimePickerDialog]", providers: [
273
+ {
274
+ provide: NG_VALUE_ACCESSOR,
275
+ useExisting: forwardRef(() => WklyDateTimePickerDialogDirective),
276
+ multi: true,
277
+ },
278
+ {
279
+ provide: NG_VALIDATORS,
280
+ useExisting: forwardRef(() => WklyDateTimePickerDialogDirective),
281
+ multi: true,
282
+ },
283
+ ], exportAs: ["wklyDialog"], usesInheritance: true, ngImport: i0 });
284
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerDialogDirective, decorators: [{
285
+ type: Directive,
286
+ args: [{
287
+ selector: "[wklyDateTimePickerDialog]",
288
+ exportAs: "wklyDialog",
289
+ providers: [
290
+ {
291
+ provide: NG_VALUE_ACCESSOR,
292
+ useExisting: forwardRef(() => WklyDateTimePickerDialogDirective),
293
+ multi: true,
294
+ },
295
+ {
296
+ provide: NG_VALIDATORS,
297
+ useExisting: forwardRef(() => WklyDateTimePickerDialogDirective),
298
+ multi: true,
299
+ },
300
+ ],
301
+ }]
302
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: WklyDateTimePickerDialogService }, { type: i0.Injector }]; } });
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvd2tseS1kYXRldGltZS1waWNrZXIuMTQvc3JjL3ByZXNlbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBSVIsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBRUwsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsNEJBQTRCLEdBSTdCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGFBQWEsRUFDYixXQUFXLEVBR1gsZ0JBQWdCLEVBQ2hCLDRCQUE0QixFQUM1Qiw2QkFBNkIsR0FDOUIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBS2pFLDZFQUE2RTtBQUU3RSxNQUFNLE9BQU8sK0JBQStCO0lBQzFDLFlBQ1UsUUFBa0MsRUFDbEMsUUFBa0IsRUFDbEIsR0FBbUIsRUFDRCxRQUFrQixFQUNmLFFBQWdCO1FBSnJDLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFDRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBUTtJQUM1QyxDQUFDO0lBQ0osSUFBSSxDQUNGLE9BQW9CLEVBQ3BCLFFBQTJDLEVBQzNDLFFBQVEsR0FBRyxJQUFJLEVBQ2YsUUFBbUI7UUFF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QUN0QyxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtDQUFrQyxDQUFDOzRCQUNoRSxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIHZhbGlkYXRlU2VsZWN0aW9uLFxuICBXa2x5R3JlZ29yaWFuQ2FsZW5kYXJBZGFwdGVyLFxuICBXa2x5Q2FsZW5kYXJEYXRlLFxuICBXa2x5UGlja2VyVmFsdWUsXG4gIFdrbHlWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gXCJAd2tseS9hZGFwdGVyc1wiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gIGNvZXJjZUJvb2xlYW4sXG4gIElOUFVUX05BTUVTLFxuICBXa2x5Q2xvc2VSZWFzb24sXG4gIFdrbHlKdW1wT3B0aW9ucyxcbiAgV2tseVBpY2tlcklucHV0cyxcbiAgV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cyxcbiAgV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIi4vcGlja2VyLmNvbXBvbmVudFwiO1xuZXhwb3J0IGludGVyZmFjZSBXa2x5UHJlc2VudGF0aW9uUmVmIHtcbiAgcmVhZG9ubHkgY29tcG9uZW50OiBDb21wb25lbnRSZWY8V2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50PjtcbiAgZGVzdHJveSgpOiB2b2lkO1xufVxuLyoqIE5hdGl2ZS1kaWFsb2cgZmFjdG9yeS4gQnJvd3NlciByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZCBvbmx5IGJ5IG9wZW4oKS4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgYXBwOiBBcHBsaWNhdGlvblJlZixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtOiBPYmplY3QsXG4gICkge31cbiAgb3BlbihcbiAgICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgICBvbkNhbmNlbDogKHJlYXNvbjogV2tseUNsb3NlUmVhc29uKSA9PiB2b2lkLFxuICAgIGJhY2tkcm9wID0gdHJ1ZSxcbiAgICBpbmplY3Rvcj86IEluamVjdG9yLFxuICApOiBXa2x5UHJlc2VudGF0aW9uUmVmIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGlja2VyIHByZXNlbnRhdGlvbnMgY2FuIG9ubHkgb3BlbiBpbiBhIGJyb3dzZXJcIik7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJkaWFsb2dcIixcbiAgICApIGFzIEhUTUxEaWFsb2dFbGVtZW50ICYge1xuICAgICAgc2hvd01vZGFsKCk6IHZvaWQ7XG4gICAgICBjbG9zZSgpOiB2b2lkO1xuICAgIH07XG4gICAgZGlhbG9nLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgXCJEYXRlIGFuZCB0aW1lIHBpY2tlclwiKTtcbiAgICBPYmplY3QuYXNzaWduKGRpYWxvZy5zdHlsZSwge1xuICAgICAgcGFkZGluZzogXCIwXCIsXG4gICAgICBib3JkZXI6IFwiMFwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjE0cHhcIixcbiAgICAgIHdpZHRoOiBcIm1pbigzOTBweCwgMTAwdncpXCIsXG4gICAgICBtYXhXaWR0aDogXCIxMDB2d1wiLFxuICAgICAgbWF4SGVpZ2h0OiBcIjk0dmhcIixcbiAgICAgIGJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICB9KTtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLnJlc29sdmVyXG4gICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50KVxuICAgICAgLmNyZWF0ZShpbmplY3RvciB8fCB0aGlzLmluamVjdG9yKTtcbiAgICBjb21wb25lbnQuaW5zdGFuY2UucHJlc2VudGF0aW9uID0gXCJ0cmFuc2llbnRcIjtcbiAgICBkaWFsb2cuYXBwZW5kQ2hpbGQoY29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaWFsb2cpO1xuICAgIHRoaXMuYXBwLmF0dGFjaFZpZXcoY29tcG9uZW50Lmhvc3RWaWV3KTtcbiAgICBjb25zdCBjYW5jZWwgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgb25DYW5jZWwoXCJlc2NhcGVcIik7XG4gICAgfTtcbiAgICBjb25zdCBjbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGJhY2tkcm9wICYmIGV2ZW50LnRhcmdldCA9PT0gZGlhbG9nKSB7XG4gICAgICAgIGNvbnN0IHIgPSBkaWFsb2cuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC5jbGllbnRYIDwgci5sZWZ0IHx8XG4gICAgICAgICAgZXZlbnQuY2xpZW50WCA+IHIucmlnaHQgfHxcbiAgICAgICAgICBldmVudC5jbGllbnRZIDwgci50b3AgfHxcbiAgICAgICAgICBldmVudC5jbGllbnRZID4gci5ib3R0b21cbiAgICAgICAgKVxuICAgICAgICAgIG9uQ2FuY2VsKFwiYmFja2Ryb3BcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBrZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSBcIlRhYlwiKSByZXR1cm47XG4gICAgICBjb25zdCBjb250cm9scyA9IEFycmF5LmZyb20oXG4gICAgICAgIGRpYWxvZy5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAnYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLGlucHV0Om5vdCg6ZGlzYWJsZWQpLFt0YWJpbmRleD1cIjBcIl0nLFxuICAgICAgICApLFxuICAgICAgKS5maWx0ZXIoXG4gICAgICAgIChlbCkgPT5cbiAgICAgICAgICBlbC50YWJJbmRleCA+PSAwICYmXG4gICAgICAgICAgZWwuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggJiZcbiAgICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGVsKS52aXNpYmlsaXR5ICE9PSBcImhpZGRlblwiLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGZpcnN0ID0gY29udHJvbHNbMF0sXG4gICAgICAgIGxhc3QgPSBjb250cm9sc1tjb250cm9scy5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChcbiAgICAgICAgZmlyc3QgJiZcbiAgICAgICAgKGV2ZW50LnNoaWZ0S2V5XG4gICAgICAgICAgPyB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0XG4gICAgICAgICAgOiB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3QpXG4gICAgICApIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgKGV2ZW50LnNoaWZ0S2V5ID8gbGFzdCA6IGZpcnN0KS5mb2N1cygpO1xuICAgICAgfVxuICAgIH07XG4gICAgZGlhbG9nLmFkZEV2ZW50TGlzdGVuZXIoXCJjYW5jZWxcIiwgY2FuY2VsKTtcbiAgICBkaWFsb2cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNsaWNrKTtcbiAgICBkaWFsb2cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwga2V5ZG93bik7XG4gICAgZGlhbG9nLnNob3dNb2RhbCgpO1xuICAgIHJldHVybiB7XG4gICAgICBjb21wb25lbnQsXG4gICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgIGRpYWxvZy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2FuY2VsXCIsIGNhbmNlbCk7XG4gICAgICAgIGRpYWxvZy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2xpY2spO1xuICAgICAgICBkaWFsb2cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwga2V5ZG93bik7XG4gICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmFwcC5kZXRhY2hWaWV3KGNvbXBvbmVudC5ob3N0Vmlldyk7XG4gICAgICAgIGNvbXBvbmVudC5kZXN0cm95KCk7XG4gICAgICAgIGRpYWxvZy5yZW1vdmUoKTtcbiAgICAgICAgdHJpZ2dlci5mb2N1cygpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4vKiogU2hhcmVkIHRyaWdnZXIgbGlmZWN5Y2xlOyBvcHRpb25hbCBwcmVzZW50YXRpb24gcGFja2FnZXMgZXh0ZW5kIHRoaXMgY2xhc3MuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXa2x5VHJpZ2dlckJhc2VcbiAgZXh0ZW5kcyBXa2x5UGlja2VySW5wdXRzXG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgcHJvdGVjdGVkIHJlZjogV2tseVByZXNlbnRhdGlvblJlZiB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBlcnJvcnM6IHJlYWRvbmx5IFdrbHlWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICBwcml2YXRlIGNoYW5nZTogKHZhbHVlOiBXa2x5UGlja2VyVmFsdWUpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSB0b3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgdmFsaWRhdGlvbjogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBzdXBlcigpO1xuICB9XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGUoKTogV2tseVByZXNlbnRhdGlvblJlZjtcbiAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5EaXNhYmxlZF0gfHwgdGhpcy5yZWYpIHJldHVybjtcbiAgICB0aGlzLnJlZiA9IHRoaXMuY3JlYXRlKCk7XG4gICAgY29uc3QgcGlja2VyID0gdGhpcy5yZWYuY29tcG9uZW50Lmluc3RhbmNlO1xuICAgIHRoaXMuY29weSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtcbiAgICAgIHBpY2tlcltXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWx1ZUNoYW5nZV0uc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuVmFsdWVdID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWx1ZUNoYW5nZV0uZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgfSksXG4gICAgICBwaWNrZXJbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuVmFsaWRhdGlvbkNoYW5nZV0uc3Vic2NyaWJlKFxuICAgICAgICAoZXJyb3JzKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICAgICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWxpZGF0aW9uQ2hhbmdlXS5lbWl0KGVycm9ycyk7XG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICAgcGlja2VyW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLkNsb3NlZF0uc3Vic2NyaWJlKChyZWFzb24pID0+XG4gICAgICAgIHRoaXMuY2xvc2UocmVhc29uKSxcbiAgICAgICksXG4gICAgICBwaWNrZXJbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuVmlld3BvcnRDaGFuZ2VdLnN1YnNjcmliZSgodmFsdWUpID0+XG4gICAgICAgIHRoaXNbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuVmlld3BvcnRDaGFuZ2VdLmVtaXQodmFsdWUpLFxuICAgICAgKSxcbiAgICAgIHBpY2tlcltXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WaWV3TW9kZUNoYW5nZV0uc3Vic2NyaWJlKCh2YWx1ZSkgPT5cbiAgICAgICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WaWV3TW9kZUNoYW5nZV0uZW1pdCh2YWx1ZSksXG4gICAgICApLFxuICAgIF07XG4gICAgdGhpcy5yZWYuY29tcG9uZW50LmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICBwaWNrZXIuZm9jdXNEYXkoKTtcbiAgICB0aGlzW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLk9wZW5lZF0uZW1pdCgpO1xuICB9XG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSkga2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHxcbiAgICAgIGV2ZW50LmtleSA9PT0gXCIgXCIgfHxcbiAgICAgIGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIlxuICAgICkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuICBASG9zdExpc3RlbmVyKFwiYmx1clwiKSBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMudG91Y2hlZCgpO1xuICB9XG4gIGNsb3NlKHJlYXNvbjogV2tseUNsb3NlUmVhc29uID0gXCJwcm9ncmFtbWF0aWNcIik6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWYpIHJldHVybjtcbiAgICBjb25zdCByZWYgPSB0aGlzLnJlZjtcbiAgICB0aGlzLnJlZiA9IG51bGw7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgcmVmLmRlc3Ryb3koKTtcbiAgICB0aGlzLnRvdWNoZWQoKTtcbiAgICB0aGlzW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLkNsb3NlZF0uZW1pdChyZWFzb24pO1xuICB9XG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIFtcbiAgICAgIFdrbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuU2hvd1NlY29uZHMsXG4gICAgICBXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkFsbG93UmFuZ2VBY3Jvc3NEaXNhYmxlZCxcbiAgICAgIFdrbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuUmVxdWlyZWQsXG4gICAgICBXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkRpc2FibGVkLFxuICAgICAgV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5DbG9zZU9uQmFja2Ryb3AsXG4gICAgXS5mb3JFYWNoKFxuICAgICAgKGtleSkgPT4gKCh0aGlzIGFzIGFueSlba2V5XSA9IGNvZXJjZUJvb2xlYW4oKHRoaXMgYXMgYW55KVtrZXldKSksXG4gICAgKTtcbiAgICB0aGlzLmNoZWNrVmFsdWUoKTtcbiAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICBpZiAodGhpcy5yZWYpIHtcbiAgICAgIHRoaXMuY29weSgpO1xuICAgICAgdGhpcy5yZWYuY29tcG9uZW50Lmluc3RhbmNlLm5nT25DaGFuZ2VzKHtcbiAgICAgICAgW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuVmFsdWVdOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZi5jb21wb25lbnQuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbiAgcHJpdmF0ZSBjb3B5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZilcbiAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBJTlBVVF9OQU1FUylcbiAgICAgICAgKHRoaXMucmVmLmNvbXBvbmVudC5pbnN0YW5jZSBhcyBhbnkpW25hbWVdID0gKHRoaXMgYXMgYW55KVtuYW1lXTtcbiAgfVxuICBwcml2YXRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGhvc3QudGFnTmFtZSA9PT0gXCJJTlBVVFwiKSB7XG4gICAgICBob3N0LnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLlZhbHVlXTtcbiAgICAgIGhvc3QudmFsdWUgPVxuICAgICAgICB2YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgID8gXCJcIlxuICAgICAgICAgIDogdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IHZhbHVlLmpvaW4oXCIg4oCUIFwiKTtcbiAgICAgIGhvc3QuZGlzYWJsZWQgPSB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuRGlzYWJsZWRdO1xuICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIsIFwiZGlhbG9nXCIpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGNoZWNrVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvcnMgPSB2YWxpZGF0ZVNlbGVjdGlvbihcbiAgICAgIHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5WYWx1ZV0sXG4gICAgICB0aGlzLFxuICAgICAgdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkNhbGVuZGFyQWRhcHRlcl0gfHxcbiAgICAgICAgbmV3IFdrbHlHcmVnb3JpYW5DYWxlbmRhckFkYXB0ZXIoXG4gICAgICAgICAgdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkxvY2FsZV0gfHwgXCJlbi1VU1wiLFxuICAgICAgICApLFxuICAgICk7XG4gICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWxpZGF0aW9uQ2hhbmdlXS5lbWl0KHRoaXMuZXJyb3JzKTtcbiAgICB0aGlzLnZhbGlkYXRpb24oKTtcbiAgfVxuICB3cml0ZVZhbHVlKHZhbHVlOiBXa2x5UGlja2VyVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuVmFsdWVdID0gdmFsdWU7XG4gICAgdGhpcy5jaGVja1ZhbHVlKCk7XG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgaWYgKHRoaXMucmVmKSB0aGlzLnJlZi5jb21wb25lbnQuaW5zdGFuY2Uud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBXa2x5UGlja2VyVmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy50b3VjaGVkID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5EaXNhYmxlZF0gPSB2YWx1ZTtcbiAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICBpZiAodGhpcy5yZWYpIHRoaXMucmVmLmNvbXBvbmVudC5pbnN0YW5jZS5zZXREaXNhYmxlZFN0YXRlKHZhbHVlKTtcbiAgfVxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLmxlbmd0aCA/IHsgd2tseTogdGhpcy5lcnJvcnMgfSA6IG51bGw7XG4gIH1cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZuO1xuICB9XG4gIHNjcm9sbFRvRXBvY2hEYXkoZGF5OiBudW1iZXIsIG9wdGlvbnM/OiBXa2x5SnVtcE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLnJlZj8uY29tcG9uZW50Lmluc3RhbmNlLnNjcm9sbFRvRXBvY2hEYXkoZGF5LCBvcHRpb25zKTtcbiAgfVxuICBzY3JvbGxUb0Fic29sdXRlV2Vlayh3ZWVrOiBudW1iZXIsIG9wdGlvbnM/OiBXa2x5SnVtcE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLnJlZj8uY29tcG9uZW50Lmluc3RhbmNlLnNjcm9sbFRvQWJzb2x1dGVXZWVrKHdlZWssIG9wdGlvbnMpO1xuICB9XG4gIHNjcm9sbFRvQ2FsZW5kYXJEYXRlKFxuICAgIGRhdGU6IFdrbHlDYWxlbmRhckRhdGUsXG4gICAgb3B0aW9ucz86IFdrbHlKdW1wT3B0aW9ucyxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuKCk7XG4gICAgdGhpcy5yZWY/LmNvbXBvbmVudC5pbnN0YW5jZS5zY3JvbGxUb0NhbGVuZGFyRGF0ZShkYXRlLCBvcHRpb25zKTtcbiAgfVxuICBzY3JvbGxUb1ZhbHVlKHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM/OiBXa2x5SnVtcE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLnJlZj8uY29tcG9uZW50Lmluc3RhbmNlLnNjcm9sbFRvVmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG59XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW3drbHlEYXRlVGltZVBpY2tlckRpYWxvZ11cIixcbiAgZXhwb3J0QXM6IFwid2tseURpYWxvZ1wiLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ0RpcmVjdGl2ZSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dEaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2tseURhdGVUaW1lUGlja2VyRGlhbG9nRGlyZWN0aXZlIGV4dGVuZHMgV2tseVRyaWdnZXJCYXNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJpZ2dlckluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG4gIH1cbiAgcHJvdGVjdGVkIGNyZWF0ZSgpOiBXa2x5UHJlc2VudGF0aW9uUmVmIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLm9wZW4oXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIChyZWFzb24pID0+IHRoaXMuY2xvc2UocmVhc29uKSxcbiAgICAgIHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5DbG9zZU9uQmFja2Ryb3BdLFxuICAgICAgdGhpcy50cmlnZ2VySW5qZWN0b3IsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,31 @@
1
+ import { NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { WklyDateTimePickerComponent } from "./picker.component";
4
+ import { WklyDateTimePickerDialogDirective } from "./presentation";
5
+ import { WklyFieldComponent } from "./field.component";
6
+ import * as i0 from "@angular/core";
7
+ export * from "./config";
8
+ export { WklyDateTimePickerComponent } from "./picker.component";
9
+ export { WklyDateTimePickerDialogService, WklyTriggerBase, WklyDateTimePickerDialogDirective, } from "./presentation";
10
+ export { WklyFieldComponent } from "./field.component";
11
+ export class WklyDateTimePickerModule {
12
+ }
13
+ WklyDateTimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ WklyDateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerModule, declarations: [WklyDateTimePickerComponent,
15
+ WklyDateTimePickerDialogDirective,
16
+ WklyFieldComponent], imports: [CommonModule], exports: [WklyDateTimePickerComponent, WklyDateTimePickerDialogDirective] });
17
+ WklyDateTimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerModule, imports: [CommonModule] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerModule, decorators: [{
19
+ type: NgModule,
20
+ args: [{
21
+ imports: [CommonModule],
22
+ declarations: [
23
+ WklyDateTimePickerComponent,
24
+ WklyDateTimePickerDialogDirective,
25
+ WklyFieldComponent,
26
+ ],
27
+ entryComponents: [WklyDateTimePickerComponent],
28
+ exports: [WklyDateTimePickerComponent, WklyDateTimePickerDialogDirective],
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3drbHktZGF0ZXRpbWUtcGlja2VyLjE0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUN2RCxjQUFjLFVBQVUsQ0FBQztBQUN6QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBRUwsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixpQ0FBaUMsR0FDbEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTJCdkQsTUFBTSxPQUFPLHdCQUF3Qjs7cUhBQXhCLHdCQUF3QjtzSEFBeEIsd0JBQXdCLGlCQVBqQywyQkFBMkI7UUFDM0IsaUNBQWlDO1FBQ2pDLGtCQUFrQixhQUpWLFlBQVksYUFPWiwyQkFBMkIsRUFBRSxpQ0FBaUM7c0hBRTdELHdCQUF3QixZQVR6QixZQUFZOzJGQVNYLHdCQUF3QjtrQkFWcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7d0JBQzNCLGlDQUFpQzt3QkFDakMsa0JBQWtCO3FCQUNuQjtvQkFDRCxlQUFlLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDOUMsT0FBTyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsaUNBQWlDLENBQUM7aUJBQzFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIi4vcGlja2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgV2tseURhdGVUaW1lUGlja2VyRGlhbG9nRGlyZWN0aXZlIH0gZnJvbSBcIi4vcHJlc2VudGF0aW9uXCI7XG5pbXBvcnQgeyBXa2x5RmllbGRDb21wb25lbnQgfSBmcm9tIFwiLi9maWVsZC5jb21wb25lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbmZpZ1wiO1xuZXhwb3J0IHsgV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIi4vcGlja2VyLmNvbXBvbmVudFwiO1xuZXhwb3J0IHtcbiAgV2tseVByZXNlbnRhdGlvblJlZixcbiAgV2tseURhdGVUaW1lUGlja2VyRGlhbG9nU2VydmljZSxcbiAgV2tseVRyaWdnZXJCYXNlLFxuICBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dEaXJlY3RpdmUsXG59IGZyb20gXCIuL3ByZXNlbnRhdGlvblwiO1xuZXhwb3J0IHsgV2tseUZpZWxkQ29tcG9uZW50IH0gZnJvbSBcIi4vZmllbGQuY29tcG9uZW50XCI7XG5leHBvcnQge1xuICBXa2x5UGlja2VyVmFsdWUsXG4gIFdrbHlJc29TdHJpbmcsXG4gIFdrbHlSYW5nZVZhbHVlLFxuICBXa2x5U2VsZWN0aW9uTW9kZSxcbiAgV2tseVZhbGlkYXRpb25FcnJvcixcbiAgV2tseVZhbGlkYXRpb25FcnJvckNvZGUsXG4gIFdrbHlWaWV3cG9ydFByZXNldCxcbiAgV2tseUhvdXJDeWNsZSxcbiAgV2tseUVuZHBvaW50LFxuICBXa2x5RGlzYWJsZWREYXRlUHJlZGljYXRlLFxuICBXa2x5RGlzYWJsZWRUaW1lUHJlZGljYXRlLFxuICBXa2x5UmFuZ2VWYWxpZGF0b3IsXG4gIFdrbHlXZWVrTGFiZWxNb2RlLFxuICBXa2x5V2Vla0xhYmVsRm9ybWF0dGVyLFxufSBmcm9tIFwiQHdrbHkvYWRhcHRlcnNcIjtcbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBXa2x5RGF0ZVRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgV2tseURhdGVUaW1lUGlja2VyRGlhbG9nRGlyZWN0aXZlLFxuICAgIFdrbHlGaWVsZENvbXBvbmVudCxcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1drbHlEYXRlVGltZVBpY2tlckNvbXBvbmVudCwgV2tseURhdGVUaW1lUGlja2VyRGlhbG9nRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgV2tseURhdGVUaW1lUGlja2VyTW9kdWxlIHt9XG4iXX0=
@@ -2,4 +2,4 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2tseS1kYXRldGltZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy93a2x5LWRhdGV0aW1lLXBpY2tlci4xMi9zcmMvd2tseS1kYXRldGltZS1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtXa2x5Q2xvY2sgYXMgybViLFdrbHlDb25maWd1cmF0aW9uIGFzIMm1YSxXa2x5U3RyaW5ncyBhcyDJtWMsV2tseVRyYW5zbGF0aW9ucyBhcyDJtWR9IGZyb20gJy4vY29uZmlnJzsiXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2tseS1kYXRldGltZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy93a2x5LWRhdGV0aW1lLXBpY2tlci4xNC9zcmMvd2tseS1kYXRldGltZS1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,143 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, forwardRef, Directive, NgModule } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
4
+ import * as i1 from '@angular/cdk/overlay';
5
+ import { OverlayModule } from '@angular/cdk/overlay';
6
+ import { ComponentPortal } from '@angular/cdk/portal';
7
+ import { WklyDateTimePickerComponent, WklyTriggerBase, WklyPickerInputsPropertyKeys, WklyDateTimePickerModule } from '@wkly/datetime-picker';
8
+ import * as i2 from '@angular/cdk/a11y';
9
+
10
+ class WklyDateTimePickerOverlayService {
11
+ constructor(overlay, injector, traps) {
12
+ this.overlay = overlay;
13
+ this.injector = injector;
14
+ this.traps = traps;
15
+ }
16
+ open(trigger, onCancel, backdrop = true, injector) {
17
+ const overlay = this.overlay.create({
18
+ width: "390px",
19
+ maxWidth: "100vw",
20
+ maxHeight: "94vh",
21
+ hasBackdrop: true,
22
+ backdropClass: "cdk-overlay-transparent-backdrop",
23
+ scrollStrategy: this.overlay.scrollStrategies.block(),
24
+ positionStrategy: this.overlay
25
+ .position()
26
+ .flexibleConnectedTo(trigger)
27
+ .withPush(true)
28
+ .withFlexibleDimensions(false)
29
+ .withLockedPosition(true)
30
+ .withPositions([
31
+ {
32
+ originX: "start",
33
+ originY: "bottom",
34
+ overlayX: "start",
35
+ overlayY: "top",
36
+ offsetY: 6,
37
+ },
38
+ {
39
+ originX: "start",
40
+ originY: "top",
41
+ overlayX: "start",
42
+ overlayY: "bottom",
43
+ offsetY: -6,
44
+ },
45
+ ]),
46
+ });
47
+ const component = overlay.attach(new ComponentPortal(WklyDateTimePickerComponent, null, injector || this.injector));
48
+ component.instance.presentation = "transient";
49
+ overlay.overlayElement.setAttribute("role", "dialog");
50
+ overlay.overlayElement.setAttribute("aria-modal", "true");
51
+ overlay.overlayElement.setAttribute("aria-label", "Date and time picker");
52
+ overlay.overlayElement.style.overflow = "auto";
53
+ const trap = this.traps.create(overlay.overlayElement);
54
+ const sub = overlay.backdropClick().subscribe(() => {
55
+ if (backdrop)
56
+ onCancel("backdrop");
57
+ });
58
+ const key = overlay.keydownEvents().subscribe((event) => {
59
+ if (event.key === "Escape") {
60
+ event.preventDefault();
61
+ onCancel("escape");
62
+ }
63
+ });
64
+ return {
65
+ component,
66
+ destroy: () => {
67
+ sub.unsubscribe();
68
+ key.unsubscribe();
69
+ trap.destroy();
70
+ overlay.dispose();
71
+ trigger.focus();
72
+ },
73
+ };
74
+ }
75
+ }
76
+ WklyDateTimePickerOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayService, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: i2.FocusTrapFactory }], target: i0.ɵɵFactoryTarget.Injectable });
77
+ WklyDateTimePickerOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayService, providedIn: "root" });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayService, decorators: [{
79
+ type: Injectable,
80
+ args: [{ providedIn: "root" }]
81
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }, { type: i2.FocusTrapFactory }]; } });
82
+ class WklyDateTimePickerOverlayDirective extends WklyTriggerBase {
83
+ constructor(element, service, triggerInjector) {
84
+ super(element);
85
+ this.service = service;
86
+ this.triggerInjector = triggerInjector;
87
+ }
88
+ create() {
89
+ return this.service.open(this.element.nativeElement, (reason) => this.close(reason), this[WklyPickerInputsPropertyKeys.CloseOnBackdrop], this.triggerInjector);
90
+ }
91
+ }
92
+ WklyDateTimePickerOverlayDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayDirective, deps: [{ token: i0.ElementRef }, { token: WklyDateTimePickerOverlayService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
93
+ WklyDateTimePickerOverlayDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: WklyDateTimePickerOverlayDirective, selector: "[wklyDateTimePickerOverlay]", providers: [
94
+ {
95
+ provide: NG_VALUE_ACCESSOR,
96
+ useExisting: forwardRef(() => WklyDateTimePickerOverlayDirective),
97
+ multi: true,
98
+ },
99
+ {
100
+ provide: NG_VALIDATORS,
101
+ useExisting: forwardRef(() => WklyDateTimePickerOverlayDirective),
102
+ multi: true,
103
+ },
104
+ ], exportAs: ["wklyOverlay"], usesInheritance: true, ngImport: i0 });
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayDirective, decorators: [{
106
+ type: Directive,
107
+ args: [{
108
+ selector: "[wklyDateTimePickerOverlay]",
109
+ exportAs: "wklyOverlay",
110
+ providers: [
111
+ {
112
+ provide: NG_VALUE_ACCESSOR,
113
+ useExisting: forwardRef(() => WklyDateTimePickerOverlayDirective),
114
+ multi: true,
115
+ },
116
+ {
117
+ provide: NG_VALIDATORS,
118
+ useExisting: forwardRef(() => WklyDateTimePickerOverlayDirective),
119
+ multi: true,
120
+ },
121
+ ],
122
+ }]
123
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: WklyDateTimePickerOverlayService }, { type: i0.Injector }]; } });
124
+ class WklyDateTimePickerOverlayModule {
125
+ }
126
+ WklyDateTimePickerOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
127
+ WklyDateTimePickerOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayModule, declarations: [WklyDateTimePickerOverlayDirective], imports: [OverlayModule, WklyDateTimePickerModule], exports: [WklyDateTimePickerOverlayDirective] });
128
+ WklyDateTimePickerOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayModule, imports: [OverlayModule, WklyDateTimePickerModule] });
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WklyDateTimePickerOverlayModule, decorators: [{
130
+ type: NgModule,
131
+ args: [{
132
+ imports: [OverlayModule, WklyDateTimePickerModule],
133
+ declarations: [WklyDateTimePickerOverlayDirective],
134
+ exports: [WklyDateTimePickerOverlayDirective],
135
+ }]
136
+ }] });
137
+
138
+ /**
139
+ * Generated bundle index. Do not edit.
140
+ */
141
+
142
+ export { WklyDateTimePickerOverlayDirective, WklyDateTimePickerOverlayModule, WklyDateTimePickerOverlayService };
143
+ //# sourceMappingURL=wkly-datetime-picker-cdk-overlay.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wkly-datetime-picker-cdk-overlay.mjs","sources":["../../../projects/wkly-datetime-picker.14/cdk-overlay/public-api.ts","../../../projects/wkly-datetime-picker.14/cdk-overlay/wkly-datetime-picker-cdk-overlay.ts"],"sourcesContent":["import {\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n forwardRef,\n Injectable,\n Injector,\n NgModule,\n} from \"@angular/core\";\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Overlay, OverlayModule } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { FocusTrapFactory } from \"@angular/cdk/a11y\";\nimport {\n WklyDateTimePickerComponent,\n WklyDateTimePickerModule,\n WklyCloseReason,\n WklyPresentationRef,\n WklyTriggerBase,\n WklyPickerInputsPropertyKeys,\n} from \"@wkly/datetime-picker\";\n@Injectable({ providedIn: \"root\" })\nexport class WklyDateTimePickerOverlayService {\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n private traps: FocusTrapFactory,\n ) {}\n open(\n trigger: HTMLElement,\n onCancel: (reason: WklyCloseReason) => void,\n backdrop = true,\n injector?: Injector,\n ): WklyPresentationRef {\n const overlay = this.overlay.create({\n width: \"390px\",\n maxWidth: \"100vw\",\n maxHeight: \"94vh\",\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(trigger)\n .withPush(true)\n .withFlexibleDimensions(false)\n .withLockedPosition(true)\n .withPositions([\n {\n originX: \"start\",\n originY: \"bottom\",\n overlayX: \"start\",\n overlayY: \"top\",\n offsetY: 6,\n },\n {\n originX: \"start\",\n originY: \"top\",\n overlayX: \"start\",\n overlayY: \"bottom\",\n offsetY: -6,\n },\n ]),\n });\n const component = overlay.attach(\n new ComponentPortal(\n WklyDateTimePickerComponent,\n null,\n injector || this.injector,\n ),\n );\n component.instance.presentation = \"transient\";\n overlay.overlayElement.setAttribute(\"role\", \"dialog\");\n overlay.overlayElement.setAttribute(\"aria-modal\", \"true\");\n overlay.overlayElement.setAttribute(\"aria-label\", \"Date and time picker\");\n overlay.overlayElement.style.overflow = \"auto\";\n const trap = this.traps.create(overlay.overlayElement);\n const sub = overlay.backdropClick().subscribe(() => {\n if (backdrop) onCancel(\"backdrop\");\n });\n const key = overlay.keydownEvents().subscribe((event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n onCancel(\"escape\");\n }\n });\n return {\n component,\n destroy: () => {\n sub.unsubscribe();\n key.unsubscribe();\n trap.destroy();\n overlay.dispose();\n trigger.focus();\n },\n };\n }\n}\n@Directive({\n selector: \"[wklyDateTimePickerOverlay]\",\n exportAs: \"wklyOverlay\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => WklyDateTimePickerOverlayDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => WklyDateTimePickerOverlayDirective),\n multi: true,\n },\n ],\n})\nexport class WklyDateTimePickerOverlayDirective extends WklyTriggerBase {\n constructor(\n element: ElementRef<HTMLElement>,\n private service: WklyDateTimePickerOverlayService,\n private triggerInjector: Injector,\n ) {\n super(element);\n }\n protected create(): WklyPresentationRef {\n return this.service.open(\n this.element.nativeElement,\n (reason) => this.close(reason),\n this[WklyPickerInputsPropertyKeys.CloseOnBackdrop],\n this.triggerInjector,\n );\n }\n}\n@NgModule({\n imports: [OverlayModule, WklyDateTimePickerModule],\n declarations: [WklyDateTimePickerOverlayDirective],\n exports: [WklyDateTimePickerOverlayDirective],\n})\nexport class WklyDateTimePickerOverlayModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}