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