@wkly/datetime-picker 17.0.0 → 19.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/config.d.ts +74 -38
- package/fesm2022/wkly-datetime-picker-cdk-overlay.mjs +12 -11
- package/fesm2022/wkly-datetime-picker-cdk-overlay.mjs.map +1 -1
- package/fesm2022/wkly-datetime-picker.mjs +304 -236
- package/fesm2022/wkly-datetime-picker.mjs.map +1 -1
- package/package.json +7 -11
- package/picker.component.d.ts +9 -5
- package/presentation.d.ts +13 -9
- package/esm2022/cdk-overlay/public-api.mjs +0 -142
- package/esm2022/cdk-overlay/wkly-datetime-picker-cdk-overlay.mjs +0 -5
- package/esm2022/config.mjs +0 -97
- package/esm2022/field.component.mjs +0 -251
- package/esm2022/picker.component.mjs +0 -967
- package/esm2022/presentation.mjs +0 -311
- package/esm2022/public-api.mjs +0 -30
- package/esm2022/wkly-datetime-picker.mjs +0 -5
package/esm2022/presentation.mjs
DELETED
|
@@ -1,311 +0,0 @@
|
|
|
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: "17.3.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: "17.3.12", ngImport: i0, type: WklyDateTimePickerDialogService, providedIn: "root" });
|
|
92
|
-
}
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WklyDateTimePickerDialogService, decorators: [{
|
|
94
|
-
type: Injectable,
|
|
95
|
-
args: [{ providedIn: "root" }]
|
|
96
|
-
}], ctorParameters: () => [{ 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: "17.3.12", ngImport: i0, type: WklyTriggerBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
253
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.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: "17.3.12", ngImport: i0, type: WklyTriggerBase, decorators: [{
|
|
256
|
-
type: Directive
|
|
257
|
-
}], ctorParameters: () => [{ 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: "17.3.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: "17.3.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: "17.3.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: () => [{ type: i0.ElementRef }, { type: WklyDateTimePickerDialogService }, { type: i0.Injector }] });
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvd2tseS1kYXRldGltZS1waWNrZXIuMTcvc3JjL3ByZXNlbnRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBSVIsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBRUwsYUFBYSxFQUNiLGlCQUFpQixHQUdsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsNEJBQTRCLEdBSTdCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGFBQWEsRUFDYixXQUFXLEVBR1gsZ0JBQWdCLEVBQ2hCLDRCQUE0QixFQUM1Qiw2QkFBNkIsR0FDOUIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBS2pFLDZFQUE2RTtBQUU3RSxNQUFNLE9BQU8sK0JBQStCO0lBRWhDO0lBQ0E7SUFDQTtJQUNrQjtJQUNHO0lBTC9CLFlBQ1UsUUFBa0MsRUFDbEMsUUFBa0IsRUFDbEIsR0FBbUIsRUFDRCxRQUFrQixFQUNmLFFBQWdCO1FBSnJDLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFDRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBUTtJQUM1QyxDQUFDO0lBQ0osSUFBSSxDQUNGLE9BQW9CLEVBQ3BCLFFBQTJDLEVBQzNDLFFB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LENBQUM7Z0JBQ2hFLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjs7NEZBRVUsaUNBQWlDO2tCQWhCN0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGtDQUFrQyxDQUFDOzRCQUNoRSxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIHZhbGlkYXRlU2VsZWN0aW9uLFxuICBXa2x5R3JlZ29yaWFuQ2FsZW5kYXJBZGFwdGVyLFxuICBXa2x5Q2FsZW5kYXJEYXRlLFxuICBXa2x5UGlja2VyVmFsdWUsXG4gIFdrbHlWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gXCJAd2tseS9hZGFwdGVyc1wiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gIGNvZXJjZUJvb2xlYW4sXG4gIElOUFVUX05BTUVTLFxuICBXa2x5Q2xvc2VSZWFzb24sXG4gIFdrbHlKdW1wT3B0aW9ucyxcbiAgV2tseVBpY2tlcklucHV0cyxcbiAgV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cyxcbiAgV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSBcIi4vcGlja2VyLmNvbXBvbmVudFwiO1xuZXhwb3J0IGludGVyZmFjZSBXa2x5UHJlc2VudGF0aW9uUmVmIHtcbiAgcmVhZG9ubHkgY29tcG9uZW50OiBDb21wb25lbnRSZWY8V2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50PjtcbiAgZGVzdHJveSgpOiB2b2lkO1xufVxuLyoqIE5hdGl2ZS1kaWFsb2cgZmFjdG9yeS4gQnJvd3NlciByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZCBvbmx5IGJ5IG9wZW4oKS4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogXCJyb290XCIgfSlcbmV4cG9ydCBjbGFzcyBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgYXBwOiBBcHBsaWNhdGlvblJlZixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtOiBPYmplY3QsXG4gICkge31cbiAgb3BlbihcbiAgICB0cmlnZ2VyOiBIVE1MRWxlbWVudCxcbiAgICBvbkNhbmNlbDogKHJlYXNvbjogV2tseUNsb3NlUmVhc29uKSA9PiB2b2lkLFxuICAgIGJhY2tkcm9wID0gdHJ1ZSxcbiAgICBpbmplY3Rvcj86IEluamVjdG9yLFxuICApOiBXa2x5UHJlc2VudGF0aW9uUmVmIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGlja2VyIHByZXNlbnRhdGlvbnMgY2FuIG9ubHkgb3BlbiBpbiBhIGJyb3dzZXJcIik7XG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFxuICAgICAgXCJkaWFsb2dcIixcbiAgICApIGFzIEhUTUxEaWFsb2dFbGVtZW50ICYge1xuICAgICAgc2hvd01vZGFsKCk6IHZvaWQ7XG4gICAgICBjbG9zZSgpOiB2b2lkO1xuICAgIH07XG4gICAgZGlhbG9nLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIiwgXCJEYXRlIGFuZCB0aW1lIHBpY2tlclwiKTtcbiAgICBPYmplY3QuYXNzaWduKGRpYWxvZy5zdHlsZSwge1xuICAgICAgcGFkZGluZzogXCIwXCIsXG4gICAgICBib3JkZXI6IFwiMFwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIjE0cHhcIixcbiAgICAgIHdpZHRoOiBcIm1pbigzOTBweCwgMTAwdncpXCIsXG4gICAgICBtYXhXaWR0aDogXCIxMDB2d1wiLFxuICAgICAgbWF4SGVpZ2h0OiBcIjk0dmhcIixcbiAgICAgIGJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICB9KTtcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLnJlc29sdmVyXG4gICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50KVxuICAgICAgLmNyZWF0ZShpbmplY3RvciB8fCB0aGlzLmluamVjdG9yKTtcbiAgICBjb21wb25lbnQuaW5zdGFuY2UucHJlc2VudGF0aW9uID0gXCJ0cmFuc2llbnRcIjtcbiAgICBkaWFsb2cuYXBwZW5kQ2hpbGQoY29tcG9uZW50LmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaWFsb2cpO1xuICAgIHRoaXMuYXBwLmF0dGFjaFZpZXcoY29tcG9uZW50Lmhvc3RWaWV3KTtcbiAgICBjb25zdCBjYW5jZWwgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgb25DYW5jZWwoXCJlc2NhcGVcIik7XG4gICAgfTtcbiAgICBjb25zdCBjbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGJhY2tkcm9wICYmIGV2ZW50LnRhcmdldCA9PT0gZGlhbG9nKSB7XG4gICAgICAgIGNvbnN0IHIgPSBkaWFsb2cuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudC5jbGllbnRYIDwgci5sZWZ0IHx8XG4gICAgICAgICAgZXZlbnQuY2xpZW50WCA+IHIucmlnaHQgfHxcbiAgICAgICAgICBldmVudC5jbGllbnRZIDwgci50b3AgfHxcbiAgICAgICAgICBldmVudC5jbGllbnRZID4gci5ib3R0b21cbiAgICAgICAgKVxuICAgICAgICAgIG9uQ2FuY2VsKFwiYmFja2Ryb3BcIik7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBrZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSBcIlRhYlwiKSByZXR1cm47XG4gICAgICBjb25zdCBjb250cm9scyA9IEFycmF5LmZyb20oXG4gICAgICAgIGRpYWxvZy5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAnYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLGlucHV0Om5vdCg6ZGlzYWJsZWQpLFt0YWJpbmRleD1cIjBcIl0nLFxuICAgICAgICApLFxuICAgICAgKS5maWx0ZXIoXG4gICAgICAgIChlbCkgPT5cbiAgICAgICAgICBlbC50YWJJbmRleCA+PSAwICYmXG4gICAgICAgICAgZWwuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggJiZcbiAgICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGVsKS52aXNpYmlsaXR5ICE9PSBcImhpZGRlblwiLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGZpcnN0ID0gY29udHJvbHNbMF0sXG4gICAgICAgIGxhc3QgPSBjb250cm9sc1tjb250cm9scy5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChcbiAgICAgICAgZmlyc3QgJiZcbiAgICAgICAgKGV2ZW50LnNoaWZ0S2V5XG4gICAgICAgICAgPyB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGZpcnN0XG4gICAgICAgICAgOiB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGxhc3QpXG4gICAgICApIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgKGV2ZW50LnNoaWZ0S2V5ID8gbGFzdCA6IGZpcnN0KS5mb2N1cygpO1xuICAgICAgfVxuICAgIH07XG4gICAgZGlhbG9nLmFkZEV2ZW50TGlzdGVuZXIoXCJjYW5jZWxcIiwgY2FuY2VsKTtcbiAgICBkaWFsb2cuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGNsaWNrKTtcbiAgICBkaWFsb2cuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwga2V5ZG93bik7XG4gICAgZGlhbG9nLnNob3dNb2RhbCgpO1xuICAgIHJldHVybiB7XG4gICAgICBjb21wb25lbnQsXG4gICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgIGRpYWxvZy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2FuY2VsXCIsIGNhbmNlbCk7XG4gICAgICAgIGRpYWxvZy5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2xpY2spO1xuICAgICAgICBkaWFsb2cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwga2V5ZG93bik7XG4gICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmFwcC5kZXRhY2hWaWV3KGNvbXBvbmVudC5ob3N0Vmlldyk7XG4gICAgICAgIGNvbXBvbmVudC5kZXN0cm95KCk7XG4gICAgICAgIGRpYWxvZy5yZW1vdmUoKTtcbiAgICAgICAgdHJpZ2dlci5mb2N1cygpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4vKiogU2hhcmVkIHRyaWdnZXIgbGlmZWN5Y2xlOyBvcHRpb25hbCBwcmVzZW50YXRpb24gcGFja2FnZXMgZXh0ZW5kIHRoaXMgY2xhc3MuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXa2x5VHJpZ2dlckJhc2VcbiAgZXh0ZW5kcyBXa2x5UGlja2VySW5wdXRzXG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgcHJvdGVjdGVkIHJlZjogV2tseVByZXNlbnRhdGlvblJlZiB8IG51bGwgPSBudWxsO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBlcnJvcnM6IHJlYWRvbmx5IFdrbHlWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuICBwcml2YXRlIGNoYW5nZTogKHZhbHVlOiBXa2x5UGlja2VyVmFsdWUpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSB0b3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgdmFsaWRhdGlvbjogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcbiAgICBzdXBlcigpO1xuICB9XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGUoKTogV2tseVByZXNlbnRhdGlvblJlZjtcbiAgQEhvc3RMaXN0ZW5lcihcImNsaWNrXCIpIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5EaXNhYmxlZF0gfHwgdGhpcy5yZWYpIHJldHVybjtcbiAgICB0aGlzLnJlZiA9IHRoaXMuY3JlYXRlKCk7XG4gICAgY29uc3QgcGlja2VyID0gdGhpcy5yZWYuY29tcG9uZW50Lmluc3RhbmNlO1xuICAgIHRoaXMuY29weSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtcbiAgICAgIHBpY2tlcltXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWx1ZUNoYW5nZV0uc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuVmFsdWVdID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWx1ZUNoYW5nZV0uZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZGlzcGxheSgpO1xuICAgICAgfSksXG4gICAgICBwaWNrZXJbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuVmFsaWRhdGlvbkNoYW5nZV0uc3Vic2NyaWJlKFxuICAgICAgICAoZXJyb3JzKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICAgICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWxpZGF0aW9uQ2hhbmdlXS5lbWl0KGVycm9ycyk7XG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uKCk7XG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICAgcGlja2VyW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLkNsb3NlZF0uc3Vic2NyaWJlKChyZWFzb24pID0+XG4gICAgICAgIHRoaXMuY2xvc2UocmVhc29uKSxcbiAgICAgICksXG4gICAgICBwaWNrZXJbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuVmlld3BvcnRDaGFuZ2VdLnN1YnNjcmliZSgodmFsdWUpID0+XG4gICAgICAgIHRoaXNbV2tseVBpY2tlck91dHB1dHNQcm9wZXJ0eUtleXMuVmlld3BvcnRDaGFuZ2VdLmVtaXQodmFsdWUpLFxuICAgICAgKSxcbiAgICAgIHBpY2tlcltXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WaWV3TW9kZUNoYW5nZV0uc3Vic2NyaWJlKCh2YWx1ZSkgPT5cbiAgICAgICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WaWV3TW9kZUNoYW5nZV0uZW1pdCh2YWx1ZSksXG4gICAgICApLFxuICAgIF07XG4gICAgdGhpcy5yZWYuY29tcG9uZW50LmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICBwaWNrZXIuZm9jdXNEYXkoKTtcbiAgICB0aGlzW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLk9wZW5lZF0uZW1pdCgpO1xuICB9XG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSkga2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgZXZlbnQua2V5ID09PSBcIkVudGVyXCIgfHxcbiAgICAgIGV2ZW50LmtleSA9PT0gXCIgXCIgfHxcbiAgICAgIGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIlxuICAgICkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cbiAgfVxuICBASG9zdExpc3RlbmVyKFwiYmx1clwiKSBibHVyKCk6IHZvaWQge1xuICAgIHRoaXMudG91Y2hlZCgpO1xuICB9XG4gIGNsb3NlKHJlYXNvbjogV2tseUNsb3NlUmVhc29uID0gXCJwcm9ncmFtbWF0aWNcIik6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZWYpIHJldHVybjtcbiAgICBjb25zdCByZWYgPSB0aGlzLnJlZjtcbiAgICB0aGlzLnJlZiA9IG51bGw7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgcmVmLmRlc3Ryb3koKTtcbiAgICB0aGlzLnRvdWNoZWQoKTtcbiAgICB0aGlzW1drbHlQaWNrZXJPdXRwdXRzUHJvcGVydHlLZXlzLkNsb3NlZF0uZW1pdChyZWFzb24pO1xuICB9XG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIFtcbiAgICAgIFdrbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuU2hvd1NlY29uZHMsXG4gICAgICBXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkFsbG93UmFuZ2VBY3Jvc3NEaXNhYmxlZCxcbiAgICAgIFdrbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuUmVxdWlyZWQsXG4gICAgICBXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkRpc2FibGVkLFxuICAgICAgV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5DbG9zZU9uQmFja2Ryb3AsXG4gICAgXS5mb3JFYWNoKFxuICAgICAgKGtleSkgPT4gKCh0aGlzIGFzIGFueSlba2V5XSA9IGNvZXJjZUJvb2xlYW4oKHRoaXMgYXMgYW55KVtrZXldKSksXG4gICAgKTtcbiAgICB0aGlzLmNoZWNrVmFsdWUoKTtcbiAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICBpZiAodGhpcy5yZWYpIHtcbiAgICAgIHRoaXMuY29weSgpO1xuICAgICAgdGhpcy5yZWYuY29tcG9uZW50Lmluc3RhbmNlLm5nT25DaGFuZ2VzKHtcbiAgICAgICAgW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuVmFsdWVdOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlZi5jb21wb25lbnQuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbiAgcHJpdmF0ZSBjb3B5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZilcbiAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBJTlBVVF9OQU1FUylcbiAgICAgICAgKHRoaXMucmVmLmNvbXBvbmVudC5pbnN0YW5jZSBhcyBhbnkpW25hbWVdID0gKHRoaXMgYXMgYW55KVtuYW1lXTtcbiAgfVxuICBwcml2YXRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgY29uc3QgaG9zdCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGhvc3QudGFnTmFtZSA9PT0gXCJJTlBVVFwiKSB7XG4gICAgICBob3N0LnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLlZhbHVlXTtcbiAgICAgIGhvc3QudmFsdWUgPVxuICAgICAgICB2YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgID8gXCJcIlxuICAgICAgICAgIDogdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IHZhbHVlLmpvaW4oXCIg4oCUIFwiKTtcbiAgICAgIGhvc3QuZGlzYWJsZWQgPSB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuRGlzYWJsZWRdO1xuICAgICAgaG9zdC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIsIFwiZGlhbG9nXCIpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGNoZWNrVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvcnMgPSB2YWxpZGF0ZVNlbGVjdGlvbihcbiAgICAgIHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5WYWx1ZV0sXG4gICAgICB0aGlzLFxuICAgICAgdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkNhbGVuZGFyQWRhcHRlcl0gfHxcbiAgICAgICAgbmV3IFdrbHlHcmVnb3JpYW5DYWxlbmRhckFkYXB0ZXIoXG4gICAgICAgICAgdGhpc1tXa2x5UGlja2VySW5wdXRzUHJvcGVydHlLZXlzLkxvY2FsZV0gfHwgXCJlbi1VU1wiLFxuICAgICAgICApLFxuICAgICk7XG4gICAgdGhpc1tXa2x5UGlja2VyT3V0cHV0c1Byb3BlcnR5S2V5cy5WYWxpZGF0aW9uQ2hhbmdlXS5lbWl0KHRoaXMuZXJyb3JzKTtcbiAgICB0aGlzLnZhbGlkYXRpb24oKTtcbiAgfVxuICB3cml0ZVZhbHVlKHZhbHVlOiBXa2x5UGlja2VyVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzW1drbHlQaWNrZXJJbnB1dHNQcm9wZXJ0eUtleXMuVmFsdWVdID0gdmFsdWU7XG4gICAgdGhpcy5jaGVja1ZhbHVlKCk7XG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgaWYgKHRoaXMucmVmKSB0aGlzLnJlZi5jb21wb25lbnQuaW5zdGFuY2Uud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBXa2x5UGlja2VyVmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy50b3VjaGVkID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5EaXNhYmxlZF0gPSB2YWx1ZTtcbiAgICB0aGlzLmRpc3BsYXkoKTtcbiAgICBpZiAodGhpcy5yZWYpIHRoaXMucmVmLmNvbXBvbmVudC5pbnN0YW5jZS5zZXREaXNhYmxlZFN0YXRlKHZhbHVlKTtcbiAgfVxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLmxlbmd0aCA/IHsgd2tseTogdGhpcy5lcnJvcnMgfSA6IG51bGw7XG4gIH1cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZuO1xuICB9XG4gIHNjcm9sbFRvRXBvY2hEYXkoZGF5OiBudW1iZXIsIG9wdGlvbnM/OiBXa2x5SnVtcE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLnJlZj8uY29tcG9uZW50Lmluc3RhbmNlLnNjcm9sbFRvRXBvY2hEYXkoZGF5LCBvcHRpb25zKTtcbiAgfVxuICBzY3JvbGxUb0Fic29sdXRlV2Vlayh3ZWVrOiBudW1iZXIsIG9wdGlvbnM/OiBXa2x5SnVtcE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLnJlZj8uY29tcG9uZW50Lmluc3RhbmNlLnNjcm9sbFRvQWJzb2x1dGVXZWVrKHdlZWssIG9wdGlvbnMpO1xuICB9XG4gIHNjcm9sbFRvQ2FsZW5kYXJEYXRlKFxuICAgIGRhdGU6IFdrbHlDYWxlbmRhckRhdGUsXG4gICAgb3B0aW9ucz86IFdrbHlKdW1wT3B0aW9ucyxcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuKCk7XG4gICAgdGhpcy5yZWY/LmNvbXBvbmVudC5pbnN0YW5jZS5zY3JvbGxUb0NhbGVuZGFyRGF0ZShkYXRlLCBvcHRpb25zKTtcbiAgfVxuICBzY3JvbGxUb1ZhbHVlKHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM/OiBXa2x5SnVtcE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4oKTtcbiAgICB0aGlzLnJlZj8uY29tcG9uZW50Lmluc3RhbmNlLnNjcm9sbFRvVmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG59XG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6IFwiW3drbHlEYXRlVGltZVBpY2tlckRpYWxvZ11cIixcbiAgZXhwb3J0QXM6IFwid2tseURpYWxvZ1wiLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ0RpcmVjdGl2ZSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dEaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2tseURhdGVUaW1lUGlja2VyRGlhbG9nRGlyZWN0aXZlIGV4dGVuZHMgV2tseVRyaWdnZXJCYXNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJpZ2dlckluamVjdG9yOiBJbmplY3RvcixcbiAgKSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG4gIH1cbiAgcHJvdGVjdGVkIGNyZWF0ZSgpOiBXa2x5UHJlc2VudGF0aW9uUmVmIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLm9wZW4oXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIChyZWFzb24pID0+IHRoaXMuY2xvc2UocmVhc29uKSxcbiAgICAgIHRoaXNbV2tseVBpY2tlcklucHV0c1Byb3BlcnR5S2V5cy5DbG9zZU9uQmFja2Ryb3BdLFxuICAgICAgdGhpcy50cmlnZ2VySW5qZWN0b3IsXG4gICAgKTtcbiAgfVxufVxuIl19
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
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: "17.3.12", ngImport: i0, type: WklyDateTimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.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: "17.3.12", ngImport: i0, type: WklyDateTimePickerModule, imports: [CommonModule] });
|
|
17
|
-
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3drbHktZGF0ZXRpbWUtcGlja2VyLjE3L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUN2RCxjQUFjLFVBQVUsQ0FBQztBQUN6QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRSxPQUFPLEVBRUwsK0JBQStCLEVBQy9CLGVBQWUsRUFDZixpQ0FBaUMsR0FDbEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTBCdkQsTUFBTSxPQUFPLHdCQUF3Qjt3R0FBeEIsd0JBQXdCO3lHQUF4Qix3QkFBd0IsaUJBTmpDLDJCQUEyQjtZQUMzQixpQ0FBaUM7WUFDakMsa0JBQWtCLGFBSlYsWUFBWSxhQU1aLDJCQUEyQixFQUFFLGlDQUFpQzt5R0FFN0Qsd0JBQXdCLFlBUnpCLFlBQVk7OzRGQVFYLHdCQUF3QjtrQkFUcEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7d0JBQzNCLGlDQUFpQzt3QkFDakMsa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxpQ0FBaUMsQ0FBQztpQkFDMUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBXa2x5RGF0ZVRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tIFwiLi9waWNrZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dEaXJlY3RpdmUgfSBmcm9tIFwiLi9wcmVzZW50YXRpb25cIjtcbmltcG9ydCB7IFdrbHlGaWVsZENvbXBvbmVudCB9IGZyb20gXCIuL2ZpZWxkLmNvbXBvbmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uZmlnXCI7XG5leHBvcnQgeyBXa2x5RGF0ZVRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tIFwiLi9waWNrZXIuY29tcG9uZW50XCI7XG5leHBvcnQge1xuICBXa2x5UHJlc2VudGF0aW9uUmVmLFxuICBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dTZXJ2aWNlLFxuICBXa2x5VHJpZ2dlckJhc2UsXG4gIFdrbHlEYXRlVGltZVBpY2tlckRpYWxvZ0RpcmVjdGl2ZSxcbn0gZnJvbSBcIi4vcHJlc2VudGF0aW9uXCI7XG5leHBvcnQgeyBXa2x5RmllbGRDb21wb25lbnQgfSBmcm9tIFwiLi9maWVsZC5jb21wb25lbnRcIjtcbmV4cG9ydCB7XG4gIFdrbHlQaWNrZXJWYWx1ZSxcbiAgV2tseUlzb1N0cmluZyxcbiAgV2tseVJhbmdlVmFsdWUsXG4gIFdrbHlTZWxlY3Rpb25Nb2RlLFxuICBXa2x5VmFsaWRhdGlvbkVycm9yLFxuICBXa2x5VmFsaWRhdGlvbkVycm9yQ29kZSxcbiAgV2tseVZpZXdwb3J0UHJlc2V0LFxuICBXa2x5SG91ckN5Y2xlLFxuICBXa2x5RW5kcG9pbnQsXG4gIFdrbHlEaXNhYmxlZERhdGVQcmVkaWNhdGUsXG4gIFdrbHlEaXNhYmxlZFRpbWVQcmVkaWNhdGUsXG4gIFdrbHlSYW5nZVZhbGlkYXRvcixcbiAgV2tseVdlZWtMYWJlbE1vZGUsXG4gIFdrbHlXZWVrTGFiZWxGb3JtYXR0ZXIsXG59IGZyb20gXCJAd2tseS9hZGFwdGVyc1wiO1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFdrbHlEYXRlVGltZVBpY2tlckNvbXBvbmVudCxcbiAgICBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dEaXJlY3RpdmUsXG4gICAgV2tseUZpZWxkQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbV2tseURhdGVUaW1lUGlja2VyQ29tcG9uZW50LCBXa2x5RGF0ZVRpbWVQaWNrZXJEaWFsb2dEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBXa2x5RGF0ZVRpbWVQaWNrZXJNb2R1bGUge31cbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2tseS1kYXRldGltZS1waWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy93a2x5LWRhdGV0aW1lLXBpY2tlci4xNy9zcmMvd2tseS1kYXRldGltZS1waWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|