@wkly/datetime-picker 12.0.0 → 13.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.
- package/cdk-overlay/package.json +5 -6
- package/cdk-overlay/public-api.d.ts +10 -0
- package/cdk-overlay/wkly-datetime-picker-cdk-overlay.d.ts +1 -0
- package/config.d.ts +3 -0
- package/esm2020/cdk-overlay/public-api.mjs +137 -0
- package/{esm2015/cdk-overlay/wkly-datetime-picker-cdk-overlay.js → esm2020/cdk-overlay/wkly-datetime-picker-cdk-overlay.mjs} +1 -1
- package/esm2020/config.mjs +100 -0
- package/esm2020/field.component.mjs +253 -0
- package/esm2020/picker.component.mjs +955 -0
- package/esm2020/presentation.mjs +303 -0
- package/esm2020/public-api.mjs +31 -0
- package/{esm2015/wkly-datetime-picker.js → esm2020/wkly-datetime-picker.mjs} +1 -1
- package/fesm2015/wkly-datetime-picker-cdk-overlay.mjs +143 -0
- package/fesm2015/wkly-datetime-picker-cdk-overlay.mjs.map +1 -0
- package/fesm2015/wkly-datetime-picker.mjs +1624 -0
- package/fesm2015/wkly-datetime-picker.mjs.map +1 -0
- package/fesm2020/wkly-datetime-picker-cdk-overlay.mjs +143 -0
- package/fesm2020/wkly-datetime-picker-cdk-overlay.mjs.map +1 -0
- package/fesm2020/wkly-datetime-picker.mjs +1622 -0
- package/fesm2020/wkly-datetime-picker.mjs.map +1 -0
- package/field.component.d.ts +3 -0
- package/package.json +34 -14
- package/picker.component.d.ts +3 -0
- package/presentation.d.ts +7 -0
- package/public-api.d.ts +8 -0
- package/wkly-datetime-picker.d.ts +1 -1
- package/bundles/wkly-datetime-picker-cdk-overlay.umd.js +0 -675
- package/bundles/wkly-datetime-picker-cdk-overlay.umd.js.map +0 -1
- package/bundles/wkly-datetime-picker.umd.js +0 -2373
- package/bundles/wkly-datetime-picker.umd.js.map +0 -1
- package/cdk-overlay/public-api.ngfactory.d.ts +0 -3
- package/cdk-overlay/wkly-datetime-picker-cdk-overlay.metadata.json +0 -1
- package/esm2015/cdk-overlay/public-api.js +0 -127
- package/esm2015/cdk-overlay/public-api.ngfactory.js +0 -19
- package/esm2015/cdk-overlay/public-api.ngsummary.json +0 -1
- package/esm2015/cdk-overlay/wkly-datetime-picker-cdk-overlay.ngsummary.json +0 -1
- package/esm2015/config.js +0 -241
- package/esm2015/config.ngsummary.json +0 -1
- package/esm2015/field.component.css.shim.ngstyle.js +0 -9
- package/esm2015/field.component.js +0 -240
- package/esm2015/field.component.ngfactory.js +0 -52
- package/esm2015/field.component.ngsummary.json +0 -1
- package/esm2015/picker.component.js +0 -929
- package/esm2015/picker.component.ngfactory.js +0 -137
- package/esm2015/picker.component.ngsummary.json +0 -1
- package/esm2015/presentation.js +0 -295
- package/esm2015/presentation.ngsummary.json +0 -1
- package/esm2015/public-api.js +0 -24
- package/esm2015/public-api.ngfactory.js +0 -13
- package/esm2015/public-api.ngsummary.json +0 -1
- package/esm2015/wkly-datetime-picker.ngsummary.json +0 -1
- package/fesm2015/wkly-datetime-picker-cdk-overlay.js +0 -134
- package/fesm2015/wkly-datetime-picker-cdk-overlay.js.map +0 -1
- package/fesm2015/wkly-datetime-picker.js +0 -1715
- package/fesm2015/wkly-datetime-picker.js.map +0 -1
- package/field.component.css.shim.ngstyle.d.ts +0 -1
- package/field.component.ngfactory.d.ts +0 -1
- package/picker.component.ngfactory.d.ts +0 -1
- package/public-api.ngfactory.d.ts +0 -3
- 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: "13.4.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: "13.4.0", ngImport: i0, type: WklyDateTimePickerDialogService, providedIn: "root" });
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.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: "13.4.0", ngImport: i0, type: WklyTriggerBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
248
|
+
WklyTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.4.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: "13.4.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: "13.4.0", ngImport: i0, type: WklyDateTimePickerDialogDirective, deps: [{ token: i0.ElementRef }, { token: WklyDateTimePickerDialogService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
272
|
+
WklyDateTimePickerDialogDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.4.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: "13.4.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvd2tseS1kYXRldGltZS1waWNrZXIuMTMvc3JjL3ByZXNlbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBSVIsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBRUwsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsNEJBQTRCLEdBSTdCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGFBQWEsRUFDYixXQUFXLEVBR1gsZ0JBQWdCLEVBQ2hCLDRCQUE0QixFQUM1Qiw2QkFBNkIsR0FDOUIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBS2pFLDZFQUE2RTtBQUU3RSxNQUFNLE9BQU8sK0JBQStCO0lBQzFDLFlBQ1UsUUFBa0MsRUFDbEMsUUFBa0IsRUFDbEIsR0FBbUIsRUFDRCxRQUFrQixFQUNmLFFBQWdCO1FBSnJDLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFDRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBUTtJQUM1QyxDQUFDO0lBQ0osSUFBSSxDQUNGLE9BQW9CLEVBQ3BCLFFBQTJDLEVBQzNDLFFBQVEsR0FBRyxJQUFJLEVBQ2YsUUFBbUI7UUFF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U0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtDQUFrQyxDQUFDOzRCQUNoRSxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGO21GQUlvQiwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcHBsaWNhdGlvblJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdG9yLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFBMQVRGT1JNX0lELFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtcbiAgdmFsaWRhdGVTZWxlY3Rpb24sXG4gIFdrbHlHcmVnb3JpYW5DYWxlbmRhckFkYXB0ZXIsXG4gIFdrbHlDYWxlbmRhckRhdGUsXG4gIFdrbHlQaWNrZXJWYWx1ZSxcbiAgV2tseVZhbGlkYXRpb25FcnJvcixcbn0gZnJvbSBcIkB3a2x5L2FkYXB0ZXJzXCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtcbiAgY29lcmNlQm9vbGVhbixcbiAgSU5QVVRfTkFNRVMsXG4gIFdrbHlDbG9zZVJlYXNvbixcbiAgV2tseUp1bXBPcHRpb25zLFxuICBXa2x5UGlja2VySW5wdXRzLFxuICBXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLFxuICBXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cyxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBXa2x5RGF0ZVRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tIFwiLi9waWNrZXIuY29tcG9uZW50XCI7XG5leHBvcnQgaW50ZXJmYWNlIFdrbHlQcmVzZW50YXRpb25SZWYge1xuICByZWFkb25seSBjb21wb25lbnQ6IENvbXBvbmVudFJlZjxXa2x5RGF0ZVRpbWVQaWNrZXJDb21wb25lbnQ+O1xuICBkZXN0cm95KCk6IHZvaWQ7XG59XG4vKiogTmF0aXZlLWRpYWxvZyBmYWN0b3J5LiBCcm93c2VyIHJlc291cmNlcyBhcmUgYWxsb2NhdGVkIG9ubHkgYnkgb3BlbigpLiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBhcHA6IEFwcGxpY2F0aW9uUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm06IE9iamVjdCxcbiAgKSB7fVxuICBvcGVuKFxuICAgIHRyaWdnZXI6IEhUTUxFbGVtZW50LFxuICAgIG9uQ2FuY2VsOiAocmVhc29uOiBXa2x5Q2xvc2VSZWFzb24pID0+IHZvaWQsXG4gICAgYmFja2Ryb3AgPSB0cnVlLFxuICAgIGluamVjdG9yPzogSW5qZWN0b3IsXG4gICk6IFdrbHlQcmVzZW50YXRpb25SZWYge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybSkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQaWNrZXIgcHJlc2VudGF0aW9ucyBjYW4gb25seSBvcGVuIGluIGEgYnJvd3NlclwiKTtcbiAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXG4gICAgICBcImRpYWxvZ1wiLFxuICAgICkgYXMgSFRNTERpYWxvZ0VsZW1lbnQgJiB7XG4gICAgICBzaG93TW9kYWwoKTogdm9pZDtcbiAgICAgIGNsb3NlKCk6IHZvaWQ7XG4gICAgfTtcbiAgICBkaWFsb2cuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLCBcIkRhdGUgYW5kIHRpbWUgcGlja2VyXCIpO1xuICAgIE9iamVjdC5hc3NpZ24oZGlhbG9nLnN0eWxlLCB7XG4gICAgICBwYWRkaW5nOiBcIjBcIixcbiAgICAgIGJvcmRlcjogXCIwXCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMTRweFwiLFxuICAgICAgd2lkdGg6IFwibWluKDM5MHB4LCAxMDB2dylcIixcbiAgICAgIG1heFdpZHRoOiBcIjEwMHZ3XCIsXG4gICAgICBtYXhIZWlnaHQ6IFwiOTR2aFwiLFxuICAgICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIH0pO1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMucmVzb2x2ZXJcbiAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShXa2x5RGF0ZVRpbWVQaWNrZXJDb21wb25lbnQpXG4gICAgICAuY3JlYXRlKGluamVjdG9yIHx8IHRoaXMuaW5qZWN0b3IpO1xuICAgIGNvbXBvbmVudC5pbnN0YW5jZS5wcmVzZW50YXRpb24gPSBcInRyYW5zaWVudFwiO1xuICAgIGRpYWxvZy5hcHBlbmRDaGlsZChjb21wb25lbnQubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpYWxvZyk7XG4gICAgdGhpcy5hcHAuYXR0YWNoVmlldyhjb21wb25lbnQuaG9zdFZpZXcpO1xuICAgIGNvbnN0IGNhbmNlbCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBvbkNhbmNlbChcImVzY2FwZVwiKTtcbiAgICB9O1xuICAgIGNvbnN0IGNsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoYmFja2Ryb3AgJiYgZXZlbnQudGFyZ2V0ID09PSBkaWFsb2cpIHtcbiAgICAgICAgY29uc3QgciA9IGRpYWxvZy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50LmNsaWVudFggPCByLmxlZnQgfHxcbiAgICAgICAgICBldmVudC5jbGllbnRYID4gci5yaWdodCB8fFxuICAgICAgICAgIGV2ZW50LmNsaWVudFkgPCByLnRvcCB8fFxuICAgICAgICAgIGV2ZW50LmNsaWVudFkgPiByLmJvdHRvbVxuICAgICAgICApXG4gICAgICAgICAgb25DYW5jZWwoXCJiYWNrZHJvcFwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGtleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09IFwiVGFiXCIpIHJldHVybjtcbiAgICAgIGNvbnN0IGNvbnRyb2xzID0gQXJyYXkuZnJvbShcbiAgICAgICAgZGlhbG9nLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICdidXR0b246bm90KDpkaXNhYmxlZCksaW5wdXQ6bm90KDpkaXNhYmxlZCksW3RhYmluZGV4PVwiMFwiXScsXG4gICAgICAgICksXG4gICAgICApLmZpbHRlcihcbiAgICAgICAgKGVsKSA9PlxuICAgICAgICAgIGVsLnRhYkluZGV4ID49IDAgJiZcbiAgICAgICAgICBlbC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCAmJlxuICAgICAgICAgIGdldENvbXB1dGVkU3R5bGUoZWwpLnZpc2liaWxpdHkgIT09IFwiaGlkZGVuXCIsXG4gICAgICApO1xuICAgICAgY29uc3QgZmlyc3QgPSBjb250cm9sc1swXSxcbiAgICAgICAgbGFzdCA9IGNvbnRyb2xzW2NvbnRyb2xzLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKFxuICAgICAgICBmaXJzdCAmJlxuICAgICAgICAoZXZlbnQuc2hpZnRLZXlcbiAgICAgICAgICA/IHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZmlyc3RcbiAgICAgICAgICA6IHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbGFzdClcbiAgICAgICkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAoZXZlbnQuc2hpZnRLZXkgPyBsYXN0IDogZmlyc3QpLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBkaWFsb2cuYWRkRXZlbnRMaXN0ZW5lcihcImNhbmNlbFwiLCBjYW5jZWwpO1xuICAgIGRpYWxvZy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2xpY2spO1xuICAgIGRpYWxvZy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBrZXlkb3duKTtcbiAgICBkaWFsb2cuc2hvd01vZGFsKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudCxcbiAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgZGlhbG9nLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjYW5jZWxcIiwgY2FuY2VsKTtcbiAgICAgICAgZGlhbG9nLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBjbGljayk7XG4gICAgICAgIGRpYWxvZy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBrZXlkb3duKTtcbiAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuYXBwLmRldGFjaFZpZXcoY29tcG9uZW50Lmhvc3RWaWV3KTtcbiAgICAgICAgY29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICAgICAgZGlhbG9nLnJlbW92ZSgpO1xuICAgICAgICB0cmlnZ2VyLmZvY3VzKCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cbi8qKiBTaGFyZWQgdHJpZ2dlciBsaWZlY3ljbGU7IG9wdGlvbmFsIHByZXNlbnRhdGlvbiBwYWNrYWdlcyBleHRlbmQgdGhpcyBjbGFzcy4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdrbHlUcmlnZ2VyQmFzZVxuICBleHRlbmRzIFdrbHlQaWNrZXJJbnB1dHNcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkNoYW5nZXMsIE9uRGVzdHJveVxue1xuICBwcm90ZWN0ZWQgcmVmOiBXa2x5UHJlc2VudGF0aW9uUmVmIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGVycm9yczogcmVhZG9ubHkgV2tseVZhbGlkYXRpb25FcnJvcltdID0gW107XG4gIHByaXZhdGUgY2hhbmdlOiAodmFsdWU6IFdrbHlQaWNrZXJWYWx1ZSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBwcml2YXRlIHRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSB2YWxpZGF0aW9uOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZSgpOiBXa2x5UHJlc2VudGF0aW9uUmVmO1xuICBASG9zdExpc3RlbmVyKFwiY2xpY2tcIikgb3BlbigpOiB2b2lkIHtcbiAgICBpZiAodGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkRpc2FibGVkXSB8fCB0aGlzLnJlZikgcmV0dXJuO1xuICAgIHRoaXMucmVmID0gdGhpcy5jcmVhdGUoKTtcbiAgICBjb25zdCBwaWNrZXIgPSB0aGlzLnJlZi5jb21wb25lbnQuaW5zdGFuY2U7XG4gICAgdGhpcy5jb3B5KCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW1xuICAgICAgcGlja2VyW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLlZhbHVlQ2hhbmdlXS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5WYWx1ZV0gPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLlZhbHVlQ2hhbmdlXS5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgICB9KSxcbiAgICAgIHBpY2tlcltXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWxpZGF0aW9uQ2hhbmdlXS5zdWJzY3JpYmUoXG4gICAgICAgIChlcnJvcnMpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICAgICAgICB0aGlzW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLlZhbGlkYXRpb25DaGFuZ2VdLmVtaXQoZXJyb3JzKTtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb24oKTtcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgICBwaWNrZXJbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuQ2xvc2VkXS5zdWJzY3JpYmUoKHJlYXNvbikgPT5cbiAgICAgICAgdGhpcy5jbG9zZShyZWFzb24pLFxuICAgICAgKSxcbiAgICAgIHBpY2tlcltXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WaWV3cG9ydENoYW5nZV0uc3Vic2NyaWJlKCh2YWx1ZSkgPT5cbiAgICAgICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WaWV3cG9ydENoYW5nZV0uZW1pdCh2YWx1ZSksXG4gICAgICApLFxuICAgICAgcGlja2VyW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLlZpZXdNb2RlQ2hhbmdlXS5zdWJzY3JpYmUoKHZhbHVlKSA9PlxuICAgICAgICB0aGlzW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLlZpZXdNb2RlQ2hhbmdlXS5lbWl0KHZhbHVlKSxcbiAgICAgICksXG4gICAgXTtcbiAgICB0aGlzLnJlZi5jb21wb25lbnQuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHBpY2tlci5mb2N1c0RheSgpO1xuICAgIHRoaXNbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuT3BlbmVkXS5lbWl0KCk7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcihcImtleWRvd25cIiwgW1wiJGV2ZW50XCJdKSBrZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBldmVudC5rZXkgPT09IFwiRW50ZXJcIiB8fFxuICAgICAgZXZlbnQua2V5ID09PSBcIiBcIiB8fFxuICAgICAgZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiXG4gICAgKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9XG4gIEBIb3N0TGlzdGVuZXIoXCJibHVyXCIpIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy50b3VjaGVkKCk7XG4gIH1cbiAgY2xvc2UocmVhc29uOiBXa2x5Q2xvc2VSZWFzb24gPSBcInByb2dyYW1tYXRpY1wiKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlZikgcmV0dXJuO1xuICAgIGNvbnN0IHJlZiA9IHRoaXMucmVmO1xuICAgIHRoaXMucmVmID0gbnVsbDtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICByZWYuZGVzdHJveSgpO1xuICAgIHRoaXMudG91Y2hlZCgpO1xuICAgIHRoaXNbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuQ2xvc2VkXS5lbWl0KHJlYXNvbik7XG4gIH1cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgW1xuICAgICAgV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5TaG93U2Vjb25kcyxcbiAgICAgIFdrbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuQWxsb3dSYW5nZUFjcm9zc0Rpc2FibGVkLFxuICAgICAgV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5SZXF1aXJlZCxcbiAgICAgIFdrbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuRGlzYWJsZWQsXG4gICAgICBXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkNsb3NlT25CYWNrZHJvcCxcbiAgICBdLmZvckVhY2goXG4gICAgICAoa2V5KSA9PiAoKHRoaXMgYXMgYW55KVtrZXldID0gY29lcmNlQm9vbGVhbigodGhpcyBhcyBhbnkpW2tleV0pKSxcbiAgICApO1xuICAgIHRoaXMuY2hlY2tWYWx1ZSgpO1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICAgIGlmICh0aGlzLnJlZikge1xuICAgICAgdGhpcy5jb3B5KCk7XG4gICAgICB0aGlzLnJlZi5jb21wb25lbnQuaW5zdGFuY2UubmdPbkNoYW5nZXMoe1xuICAgICAgICBbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5WYWx1ZV06IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMucmVmLmNvbXBvbmVudC5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuICBwcml2YXRlIGNvcHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVmKVxuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIElOUFVUX05BTUVTKVxuICAgICAgICAodGhpcy5yZWYuY29tcG9uZW50Lmluc3RhbmNlIGFzIGFueSlbbmFtZV0gPSAodGhpcyBhcyBhbnkpW25hbWVdO1xuICB9XG4gIHByaXZhdGUgZGlzcGxheSgpOiB2b2lkIHtcbiAgICBjb25zdCBob3N0ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoaG9zdC50YWdOYW1lID09PSBcIklOUFVUXCIpIHtcbiAgICAgIGhvc3QucmVhZE9ubHkgPSB0cnVlO1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuVmFsdWVdO1xuICAgICAgaG9zdC52YWx1ZSA9XG4gICAgICAgIHZhbHVlID09PSBudWxsXG4gICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgOiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gdmFsdWVcbiAgICAgICAgICAgIDogdmFsdWUuam9pbihcIiDigJQgXCIpO1xuICAgICAgaG9zdC5kaXNhYmxlZCA9IHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5EaXNhYmxlZF07XG4gICAgICBob3N0LnNldEF0dHJpYnV0ZShcImFyaWEtaGFzcG9wdXBcIiwgXCJkaWFsb2dcIik7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgY2hlY2tWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9ycyA9IHZhbGlkYXRlU2VsZWN0aW9uKFxuICAgICAgdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLlZhbHVlXSxcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuQ2FsZW5kYXJBZGFwdGVyXSB8fFxuICAgICAgICBuZXcgV2tseUdyZWdvcmlhbkNhbGVuZGFyQWRhcHRlcihcbiAgICAgICAgICB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuTG9jYWxlXSB8fCBcImVuLVVTXCIsXG4gICAgICAgICksXG4gICAgKTtcbiAgICB0aGlzW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLlZhbGlkYXRpb25DaGFuZ2VdLmVtaXQodGhpcy5lcnJvcnMpO1xuICAgIHRoaXMudmFsaWRhdGlvbigpO1xuICB9XG4gIHdyaXRlVmFsdWUodmFsdWU6IFdrbHlQaWNrZXJWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5WYWx1ZV0gPSB2YWx1ZTtcbiAgICB0aGlzLmNoZWNrVmFsdWUoKTtcbiAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICBpZiAodGhpcy5yZWYpIHRoaXMucmVmLmNvbXBvbmVudC5pbnN0YW5jZS53cml0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IFdrbHlQaWNrZXJWYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLnRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkRpc2FibGVkXSA9IHZhbHVlO1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICAgIGlmICh0aGlzLnJlZikgdGhpcy5yZWYuY29tcG9uZW50Lmluc3RhbmNlLnNldERpc2FibGVkU3RhdGUodmFsdWUpO1xuICB9XG4gIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnMubGVuZ3RoID8geyB3a2x5OiB0aGlzLmVycm9ycyB9IDogbnVsbDtcbiAgfVxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0aW9uID0gZm47XG4gIH1cbiAgc2Nyb2xsVG9FcG9jaERheShkYXk6IG51bWJlciwgb3B0aW9ucz86IFdrbHlKdW1wT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMub3BlbigpO1xuICAgIHRoaXMucmVmPy5jb21wb25lbnQuaW5zdGFuY2Uuc2Nyb2xsVG9FcG9jaERheShkYXksIG9wdGlvbnMpO1xuICB9XG4gIHNjcm9sbFRvQWJzb2x1dGVXZWVrKHdlZWs6IG51bWJlciwgb3B0aW9ucz86IFdrbHlKdW1wT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMub3BlbigpO1xuICAgIHRoaXMucmVmPy5jb21wb25lbnQuaW5zdGFuY2Uuc2Nyb2xsVG9BYnNvbHV0ZVdlZWsod2Vlaywgb3B0aW9ucyk7XG4gIH1cbiAgc2Nyb2xsVG9DYWxlbmRhckRhdGUoXG4gICAgZGF0ZTogV2tseUNhbGVuZGFyRGF0ZSxcbiAgICBvcHRpb25zPzogV2tseUp1bXBPcHRpb25zLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLnJlZj8uY29tcG9uZW50Lmluc3RhbmNlLnNjcm9sbFRvQ2FsZW5kYXJEYXRlKGRhdGUsIG9wdGlvbnMpO1xuICB9XG4gIHNjcm9sbFRvVmFsdWUodmFsdWU6IHN0cmluZywgb3B0aW9ucz86IFdrbHlKdW1wT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMub3BlbigpO1xuICAgIHRoaXMucmVmPy5jb21wb25lbnQuaW5zdGFuY2Uuc2Nyb2xsVG9WYWx1ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cbn1cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbd2tseURhdGVUaW1lUGlja2VyRGlhbG9nXVwiLFxuICBleHBvcnRBczogXCJ3a2x5RGlhbG9nXCIsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2tseURhdGVUaW1lUGlja2VyRGlhbG9nRGlyZWN0aXZlKSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ0RpcmVjdGl2ZSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dEaXJlY3RpdmUgZXh0ZW5kcyBXa2x5VHJpZ2dlckJhc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHNlcnZpY2U6IFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmlnZ2VySW5qZWN0b3I6IEluamVjdG9yLFxuICApIHtcbiAgICBzdXBlcihlbGVtZW50KTtcbiAgfVxuICBwcm90ZWN0ZWQgY3JlYXRlKCk6IFdrbHlQcmVzZW50YXRpb25SZWYge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2Uub3BlbihcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgKHJlYXNvbikgPT4gdGhpcy5jbG9zZShyZWFzb24pLFxuICAgICAgdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkNsb3NlT25CYWNrZHJvcF0sXG4gICAgICB0aGlzLnRyaWdnZXJJbmplY3RvcixcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -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: "13.4.0", ngImport: i0, type: WklyDateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
+
WklyDateTimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.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: "13.4.0", ngImport: i0, type: WklyDateTimePickerModule, imports: [[CommonModule]] });
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3drbHktZGF0ZXRpbWUtcGlja2VyLjEzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUN2RCxjQUFjLFVBQVUsQ0FBQztBQUN6QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBRUwsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixpQ0FBaUMsR0FDbEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTJCdkQsTUFBTSxPQUFPLHdCQUF3Qjs7cUhBQXhCLHdCQUF3QjtzSEFBeEIsd0JBQXdCLGlCQVBqQywyQkFBMkI7UUFDM0IsaUNBQWlDO1FBQ2pDLGtCQUFrQixhQUpWLFlBQVksYUFPWiwyQkFBMkIsRUFBRSxpQ0FBaUM7c0hBRTdELHdCQUF3QixZQVQxQixDQUFDLFlBQVksQ0FBQzsyRkFTWix3QkFBd0I7a0JBVnBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixZQUFZLEVBQUU7d0JBQ1osMkJBQTJCO3dCQUMzQixpQ0FBaUM7d0JBQ2pDLGtCQUFrQjtxQkFDbkI7b0JBQ0QsZUFBZSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQzlDLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixFQUFFLGlDQUFpQyxDQUFDO2lCQUMxRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IFdrbHlEYXRlVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gXCIuL3BpY2tlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ0RpcmVjdGl2ZSB9IGZyb20gXCIuL3ByZXNlbnRhdGlvblwiO1xuaW1wb3J0IHsgV2tseUZpZWxkQ29tcG9uZW50IH0gZnJvbSBcIi4vZmllbGQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb25maWdcIjtcbmV4cG9ydCB7IFdrbHlEYXRlVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gXCIuL3BpY2tlci5jb21wb25lbnRcIjtcbmV4cG9ydCB7XG4gIFdrbHlQcmVzZW50YXRpb25SZWYsXG4gIFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ1NlcnZpY2UsXG4gIFdrbHlUcmlnZ2VyQmFzZSxcbiAgV2tseURhdGVUaW1lUGlja2VyRGlhbG9nRGlyZWN0aXZlLFxufSBmcm9tIFwiLi9wcmVzZW50YXRpb25cIjtcbmV4cG9ydCB7IFdrbHlGaWVsZENvbXBvbmVudCB9IGZyb20gXCIuL2ZpZWxkLmNvbXBvbmVudFwiO1xuZXhwb3J0IHtcbiAgV2tseVBpY2tlclZhbHVlLFxuICBXa2x5SXNvU3RyaW5nLFxuICBXa2x5UmFuZ2VWYWx1ZSxcbiAgV2tseVNlbGVjdGlvbk1vZGUsXG4gIFdrbHlWYWxpZGF0aW9uRXJyb3IsXG4gIFdrbHlWYWxpZGF0aW9uRXJyb3JDb2RlLFxuICBXa2x5Vmlld3BvcnRQcmVzZXQsXG4gIFdrbHlIb3VyQ3ljbGUsXG4gIFdrbHlFbmRwb2ludCxcbiAgV2tseURpc2FibGVkRGF0ZVByZWRpY2F0ZSxcbiAgV2tseURpc2FibGVkVGltZVByZWRpY2F0ZSxcbiAgV2tseVJhbmdlVmFsaWRhdG9yLFxuICBXa2x5V2Vla0xhYmVsTW9kZSxcbiAgV2tseVdlZWtMYWJlbEZvcm1hdHRlcixcbn0gZnJvbSBcIkB3a2x5L2FkYXB0ZXJzXCI7XG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ0RpcmVjdGl2ZSxcbiAgICBXa2x5RmllbGRDb21wb25lbnQsXG4gIF0sXG4gIGVudHJ5Q29tcG9uZW50czogW1drbHlEYXRlVGltZVBpY2tlckNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtXa2x5RGF0ZVRpbWVQaWNrZXJDb21wb25lbnQsIFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ0RpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFdrbHlEYXRlVGltZVBpY2tlck1vZHVsZSB7fVxuIl19
|
|
@@ -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,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2tseS1kYXRldGltZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy93a2x5LWRhdGV0aW1lLXBpY2tlci4xMy9zcmMvd2tseS1kYXRldGltZS1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -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: "13.4.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: "13.4.0", ngImport: i0, type: WklyDateTimePickerOverlayService, providedIn: "root" });
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.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: "13.4.0", ngImport: i0, type: WklyDateTimePickerOverlayDirective, deps: [{ token: i0.ElementRef }, { token: WklyDateTimePickerOverlayService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
93
|
+
WklyDateTimePickerOverlayDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.4.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: "13.4.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: "13.4.0", ngImport: i0, type: WklyDateTimePickerOverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
127
|
+
WklyDateTimePickerOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WklyDateTimePickerOverlayModule, declarations: [WklyDateTimePickerOverlayDirective], imports: [OverlayModule, WklyDateTimePickerModule], exports: [WklyDateTimePickerOverlayDirective] });
|
|
128
|
+
WklyDateTimePickerOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: WklyDateTimePickerOverlayModule, imports: [[OverlayModule, WklyDateTimePickerModule]] });
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.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.13/cdk-overlay/public-api.ts","../../../projects/wkly-datetime-picker.13/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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"}
|