@dereekb/dbx-form 11.1.7 → 12.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/calendar/lib/calendar.module.d.ts +1 -14
- package/calendar/lib/calendar.schedule.selection.cell.component.d.ts +8 -5
- package/calendar/lib/calendar.schedule.selection.component.d.ts +13 -10
- package/calendar/lib/calendar.schedule.selection.d.ts +6 -6
- package/calendar/lib/calendar.schedule.selection.days.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.days.form.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +4 -4
- package/calendar/lib/calendar.schedule.selection.dialog.component.d.ts +5 -5
- package/calendar/lib/calendar.schedule.selection.popover.button.component.d.ts +4 -2
- package/calendar/lib/calendar.schedule.selection.popover.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.popover.content.component.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.range.component.d.ts +19 -17
- package/calendar/lib/calendar.schedule.selection.store.d.ts +2 -2
- package/calendar/lib/calendar.schedule.selection.store.provide.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.toggle.button.component.d.ts +8 -12
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +22 -22
- package/calendar/lib/field/schedule/calendar.schedule.module.d.ts +2 -10
- package/esm2022/calendar/lib/calendar.module.mjs +19 -101
- package/esm2022/calendar/lib/calendar.schedule.selection.cell.component.mjs +27 -28
- package/esm2022/calendar/lib/calendar.schedule.selection.component.mjs +38 -55
- package/esm2022/calendar/lib/calendar.schedule.selection.days.component.mjs +17 -13
- package/esm2022/calendar/lib/calendar.schedule.selection.days.form.component.mjs +11 -12
- package/esm2022/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +18 -21
- package/esm2022/calendar/lib/calendar.schedule.selection.dialog.component.mjs +12 -9
- package/esm2022/calendar/lib/calendar.schedule.selection.mjs +3 -2
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.button.component.mjs +22 -18
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.component.mjs +12 -9
- package/esm2022/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +13 -10
- package/esm2022/calendar/lib/calendar.schedule.selection.range.component.mjs +52 -70
- package/esm2022/calendar/lib/calendar.schedule.selection.store.mjs +5 -5
- package/esm2022/calendar/lib/calendar.schedule.selection.store.provide.mjs +9 -8
- package/esm2022/calendar/lib/calendar.schedule.selection.toggle.button.component.mjs +48 -50
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +17 -14
- package/esm2022/calendar/lib/field/schedule/calendar.schedule.module.mjs +8 -40
- package/esm2022/lib/form/action/form.action.directive.mjs +58 -55
- package/esm2022/lib/form/action/form.action.module.mjs +9 -9
- package/esm2022/lib/form/action/transition/form.action.transition.module.mjs +9 -8
- package/esm2022/lib/form/action/transition/form.action.transition.safety.directive.mjs +14 -11
- package/esm2022/lib/form/form.mjs +1 -1
- package/esm2022/lib/form/form.module.mjs +4 -4
- package/esm2022/lib/form/io/form.changes.directive.mjs +11 -16
- package/esm2022/lib/form/io/form.input.directive.mjs +24 -38
- package/esm2022/lib/form/io/form.io.module.mjs +15 -9
- package/esm2022/lib/form/io/form.loading.directive.mjs +22 -42
- package/esm2022/lib/form.module.mjs +4 -4
- package/esm2022/lib/form.providers.mjs +32 -0
- package/esm2022/lib/formly/field/checklist/checklist.field.mjs +5 -5
- package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +51 -47
- package/esm2022/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +41 -29
- package/esm2022/lib/formly/field/checklist/checklist.item.field.mjs +3 -3
- package/esm2022/lib/formly/field/checklist/checklist.item.field.module.mjs +8 -45
- package/esm2022/lib/formly/field/checklist/checklist.item.mjs +1 -1
- package/esm2022/lib/formly/field/component/component.field.component.mjs +11 -8
- package/esm2022/lib/formly/field/component/component.field.module.mjs +8 -14
- package/esm2022/lib/formly/field/field.mjs +1 -1
- package/esm2022/lib/formly/field/form.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/selection/list/list.field.component.mjs +17 -14
- package/esm2022/lib/formly/field/selection/list/list.field.module.mjs +8 -58
- package/esm2022/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +17 -13
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.directive.mjs +16 -16
- package/esm2022/lib/formly/field/selection/pickable/pickable.field.module.mjs +8 -68
- package/esm2022/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +71 -54
- package/esm2022/lib/formly/field/selection/pickable/pickable.util.mjs +2 -2
- package/esm2022/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +21 -16
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +51 -49
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.directive.mjs +35 -27
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.mjs +1 -1
- package/esm2022/lib/formly/field/selection/searchable/searchable.field.module.mjs +8 -65
- package/esm2022/lib/formly/field/selection/searchable/searchable.mjs +1 -1
- package/esm2022/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +48 -30
- package/esm2022/lib/formly/field/selection/searchable/text.chip.field.mjs +2 -2
- package/esm2022/lib/formly/field/selection/selection.field.mjs +1 -1
- package/esm2022/lib/formly/field/selection/selection.mjs +1 -1
- package/esm2022/lib/formly/field/selection/selection.module.mjs +4 -4
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.component.mjs +20 -21
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.module.mjs +6 -73
- package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.mjs +1 -1
- package/esm2022/lib/formly/field/texteditor/texteditor.field.component.mjs +37 -22
- package/esm2022/lib/formly/field/texteditor/texteditor.field.mjs +2 -2
- package/esm2022/lib/formly/field/texteditor/texteditor.field.module.mjs +8 -33
- package/esm2022/lib/formly/field/value/array/array.field.component.mjs +72 -50
- package/esm2022/lib/formly/field/value/array/array.field.module.mjs +8 -44
- package/esm2022/lib/formly/field/value/boolean/boolean.field.mjs +2 -2
- package/esm2022/lib/formly/field/value/boolean/boolean.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/date/date.field.module.mjs +5 -9
- package/esm2022/lib/formly/field/value/date/date.value.mjs +1 -1
- package/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +8 -8
- package/esm2022/lib/formly/field/value/date/datetime.field.service.mjs +4 -4
- package/esm2022/lib/formly/field/value/date/datetime.mjs +1 -1
- package/esm2022/lib/formly/field/value/date/fixeddaterange.field.component.mjs +8 -8
- package/esm2022/lib/formly/field/value/number/number.field.mjs +1 -1
- package/esm2022/lib/formly/field/value/number/number.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/phone/phone.field.component.mjs +4 -4
- package/esm2022/lib/formly/field/value/phone/phone.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/text/text.address.field.mjs +1 -1
- package/esm2022/lib/formly/field/value/text/text.field.mjs +1 -1
- package/esm2022/lib/formly/field/value/text/text.field.module.mjs +4 -4
- package/esm2022/lib/formly/field/value/value.module.mjs +4 -4
- package/esm2022/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +9 -7
- package/esm2022/lib/formly/field/wrapper/expand.wrapper.component.mjs +19 -24
- package/esm2022/lib/formly/field/wrapper/expand.wrapper.delegate.mjs +7 -4
- package/esm2022/lib/formly/field/wrapper/flex.wrapper.component.mjs +11 -8
- package/esm2022/lib/formly/field/wrapper/form.wrapper.module.mjs +8 -39
- package/esm2022/lib/formly/field/wrapper/index.mjs +2 -1
- package/esm2022/lib/formly/field/wrapper/info.wrapper.component.mjs +19 -16
- package/esm2022/lib/formly/field/wrapper/section.wrapper.component.mjs +11 -7
- package/esm2022/lib/formly/field/wrapper/style.wrapper.component.mjs +16 -11
- package/esm2022/lib/formly/field/wrapper/subsection.wrapper.component.mjs +11 -8
- package/esm2022/lib/formly/field/wrapper/toggle.wrapper.component.mjs +21 -17
- package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +11 -8
- package/esm2022/lib/formly/field/wrapper/wrapper.mjs +1 -1
- package/esm2022/lib/formly/form/form.form.module.mjs +4 -4
- package/esm2022/lib/formly/form/search.form.component.mjs +4 -4
- package/esm2022/lib/formly/formly.component.template.mjs +29 -0
- package/esm2022/lib/formly/formly.context.directive.mjs +6 -5
- package/esm2022/lib/formly/formly.context.mjs +12 -8
- package/esm2022/lib/formly/formly.directive.mjs +29 -44
- package/esm2022/lib/formly/formly.form.component.mjs +24 -18
- package/esm2022/lib/formly/formly.module.mjs +10 -14
- package/esm2022/lib/formly/index.mjs +2 -1
- package/esm2022/lib/formly/template/login.mjs +1 -1
- package/esm2022/lib/formly/template/timezone.mjs +1 -1
- package/esm2022/lib/index.mjs +2 -1
- package/esm2022/lib/layout/form.layout.module.mjs +4 -4
- package/esm2022/lib/layout/form.spacer.component.mjs +3 -3
- package/esm2022/lib/validator/available.mjs +1 -1
- package/esm2022/lib/validator/boolean.mjs +1 -1
- package/esm2022/lib/validator/field.mjs +2 -2
- package/esm2022/lib/validator/number.mjs +1 -1
- package/esm2022/lib/validator/phone.mjs +1 -1
- package/esm2022/mapbox/lib/field/latlng/latlng.field.component.mjs +65 -47
- package/esm2022/mapbox/lib/field/latlng/latlng.field.marker.component.mjs +13 -10
- package/esm2022/mapbox/lib/field/latlng/latlng.module.mjs +10 -43
- package/esm2022/mapbox/lib/field/zoom/zoom.field.component.mjs +32 -26
- package/esm2022/mapbox/lib/field/zoom/zoom.module.mjs +8 -36
- package/esm2022/mapbox/lib/mapbox.module.mjs +4 -4
- package/fesm2022/dereekb-dbx-form-calendar.mjs +340 -457
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +114 -141
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form.mjs +935 -1106
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/extension/calendar/_calendar.scss +3 -3
- package/lib/form/_form.scss +3 -3
- package/lib/form/action/form.action.directive.d.ts +35 -16
- package/lib/form/action/form.action.module.d.ts +4 -3
- package/lib/form/action/transition/form.action.transition.module.d.ts +4 -2
- package/lib/form/action/transition/form.action.transition.safety.directive.d.ts +4 -2
- package/lib/form/io/form.changes.directive.d.ts +3 -4
- package/lib/form/io/form.input.directive.d.ts +7 -10
- package/lib/form/io/form.io.module.d.ts +8 -2
- package/lib/form/io/form.loading.directive.d.ts +10 -11
- package/lib/form.providers.d.ts +8 -0
- package/lib/formly/_formly.scss +3 -3
- package/lib/formly/field/checklist/_checklist.scss +3 -3
- package/lib/formly/field/checklist/checklist.field.d.ts +7 -7
- package/lib/formly/field/checklist/checklist.item.d.ts +7 -9
- package/lib/formly/field/checklist/checklist.item.field.component.d.ts +19 -18
- package/lib/formly/field/checklist/checklist.item.field.content.default.component.d.ts +5 -5
- package/lib/formly/field/checklist/checklist.item.field.d.ts +1 -1
- package/lib/formly/field/checklist/checklist.item.field.module.d.ts +3 -11
- package/lib/formly/field/component/_component.scss +3 -3
- package/lib/formly/field/component/component.field.component.d.ts +1 -1
- package/lib/formly/field/component/component.field.module.d.ts +2 -4
- package/lib/formly/field/field.d.ts +8 -5
- package/lib/formly/field/selection/list/_list.scss +3 -3
- package/lib/formly/field/selection/list/list.field.component.d.ts +7 -5
- package/lib/formly/field/selection/list/list.field.module.d.ts +2 -12
- package/lib/formly/field/selection/pickable/_pickable.scss +3 -3
- package/lib/formly/field/selection/pickable/pickable.chip.field.component.d.ts +1 -1
- package/lib/formly/field/selection/pickable/pickable.field.directive.d.ts +25 -23
- package/lib/formly/field/selection/pickable/pickable.field.module.d.ts +2 -13
- package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +15 -14
- package/lib/formly/field/selection/searchable/_searchable.scss +3 -3
- package/lib/formly/field/selection/searchable/searchable.chip.field.component.d.ts +4 -4
- package/lib/formly/field/selection/searchable/searchable.d.ts +3 -3
- package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +8 -12
- package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +30 -25
- package/lib/formly/field/selection/searchable/searchable.field.module.d.ts +2 -13
- package/lib/formly/field/selection/searchable/searchable.text.field.component.d.ts +6 -8
- package/lib/formly/field/selection/selection.d.ts +5 -5
- package/lib/formly/field/selection/sourceselect/_sourceselect.scss +3 -3
- package/lib/formly/field/selection/sourceselect/sourceselect.d.ts +1 -1
- package/lib/formly/field/selection/sourceselect/sourceselect.field.component.d.ts +5 -3
- package/lib/formly/field/selection/sourceselect/sourceselect.field.module.d.ts +2 -17
- package/lib/formly/field/texteditor/_texteditor.scss +9 -9
- package/lib/formly/field/texteditor/texteditor.field.component.d.ts +5 -4
- package/lib/formly/field/texteditor/texteditor.field.module.d.ts +2 -8
- package/lib/formly/field/value/array/_array.scss +5 -5
- package/lib/formly/field/value/array/array.field.component.d.ts +16 -18
- package/lib/formly/field/value/array/array.field.d.ts +8 -5
- package/lib/formly/field/value/array/array.field.module.d.ts +2 -10
- package/lib/formly/field/value/boolean/_boolean.scss +3 -3
- package/lib/formly/field/value/date/_date.scss +5 -5
- package/lib/formly/field/value/date/date.field.module.d.ts +8 -9
- package/lib/formly/field/value/date/datetime.field.service.d.ts +1 -1
- package/lib/formly/field/value/date/fixeddaterange.field.component.d.ts +13 -13
- package/lib/formly/field/value/number/_number.scss +2 -2
- package/lib/formly/field/value/phone/_phone.scss +6 -6
- package/lib/formly/field/value/phone/phone.field.component.d.ts +6 -5
- package/lib/formly/field/value/text/_text.scss +3 -3
- package/lib/formly/field/wrapper/_wrapper.scss +3 -3
- package/lib/formly/field/wrapper/autotouch.wrapper.component.d.ts +1 -1
- package/lib/formly/field/wrapper/expand.wrapper.component.d.ts +1 -1
- package/lib/formly/field/wrapper/expand.wrapper.delegate.d.ts +2 -0
- package/lib/formly/field/wrapper/flex.wrapper.component.d.ts +4 -4
- package/lib/formly/field/wrapper/form.wrapper.module.d.ts +2 -8
- package/lib/formly/field/wrapper/index.d.ts +1 -0
- package/lib/formly/field/wrapper/info.wrapper.component.d.ts +2 -2
- package/lib/formly/field/wrapper/section.wrapper.component.d.ts +1 -1
- package/lib/formly/field/wrapper/style.wrapper.component.d.ts +5 -3
- package/lib/formly/field/wrapper/subsection.wrapper.component.d.ts +1 -1
- package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +2 -1
- package/lib/formly/field/wrapper/working.wrapper.component.d.ts +2 -2
- package/lib/formly/form/_form.scss +3 -3
- package/lib/formly/formly.component.template.d.ts +19 -0
- package/lib/formly/formly.context.d.ts +11 -7
- package/lib/formly/formly.context.directive.d.ts +2 -2
- package/lib/formly/formly.directive.d.ts +10 -10
- package/lib/formly/formly.form.component.d.ts +18 -13
- package/lib/formly/formly.module.d.ts +1 -1
- package/lib/formly/index.d.ts +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/layout/_layout.scss +3 -3
- package/lib/style/_all-typography.scss +1 -1
- package/lib/style/_theming.scss +1 -1
- package/mapbox/lib/field/latlng/latlng.field.component.d.ts +25 -23
- package/mapbox/lib/field/latlng/latlng.field.marker.component.d.ts +2 -1
- package/mapbox/lib/field/latlng/latlng.module.d.ts +2 -11
- package/mapbox/lib/field/zoom/zoom.field.component.d.ts +13 -13
- package/mapbox/lib/field/zoom/zoom.module.d.ts +3 -10
- package/package.json +10 -11
- package/mapbox/esm2022/dereekb-dbx-form-mapbox.mjs +0 -5
- package/mapbox/esm2022/index.mjs +0 -3
- package/mapbox/esm2022/lib/field/index.mjs +0 -3
- package/mapbox/esm2022/lib/field/latlng/index.mjs +0 -5
- package/mapbox/esm2022/lib/field/latlng/latlng.field.component.mjs +0 -244
- package/mapbox/esm2022/lib/field/latlng/latlng.field.marker.component.mjs +0 -31
- package/mapbox/esm2022/lib/field/latlng/latlng.field.mjs +0 -35
- package/mapbox/esm2022/lib/field/latlng/latlng.module.mjs +0 -59
- package/mapbox/esm2022/lib/field/zoom/index.mjs +0 -4
- package/mapbox/esm2022/lib/field/zoom/zoom.field.component.mjs +0 -140
- package/mapbox/esm2022/lib/field/zoom/zoom.field.mjs +0 -23
- package/mapbox/esm2022/lib/field/zoom/zoom.module.mjs +0 -57
- package/mapbox/esm2022/lib/mapbox.module.mjs +0 -16
- package/mapbox/fesm2022/dereekb-dbx-form-mapbox.mjs +0 -566
- package/mapbox/fesm2022/dereekb-dbx-form-mapbox.mjs.map +0 -1
- package/mapbox/package.json +0 -21
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import { SubscriptionObject } from '@dereekb/rxjs';
|
|
2
|
-
import { Component,
|
|
2
|
+
import { Component, inject, viewChild, input, effect, computed, ChangeDetectionStrategy } from '@angular/core';
|
|
3
3
|
import { DbxCalendarScheduleSelectionStore } from './calendar.schedule.selection.store';
|
|
4
4
|
import { DbxCalendarStore } from '@dereekb/dbx-web/calendar';
|
|
5
|
-
import { FormGroup, FormControl } from '@angular/forms';
|
|
5
|
+
import { FormGroup, FormControl, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
6
6
|
import { switchMap, throttleTime, distinctUntilChanged, filter, BehaviorSubject, startWith, map, shareReplay, combineLatest, EMPTY } from 'rxjs';
|
|
7
7
|
import { isSameDateDay } from '@dereekb/date';
|
|
8
|
-
import { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
|
|
9
|
-
import {
|
|
8
|
+
import { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
10
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
11
|
+
import { DbxButtonSpacerDirective } from '@dereekb/dbx-web';
|
|
12
|
+
import { TimezoneAbbreviationPipe } from '@dereekb/dbx-core';
|
|
10
13
|
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/
|
|
12
|
-
import * as i2 from "@angular/
|
|
13
|
-
import * as i3 from "@angular/material/
|
|
14
|
-
import * as i4 from "@dereekb/dbx-web";
|
|
15
|
-
import * as i5 from "@angular/material/datepicker";
|
|
16
|
-
import * as i6 from "@dereekb/dbx-core";
|
|
14
|
+
import * as i1 from "@angular/material/form-field";
|
|
15
|
+
import * as i2 from "@angular/forms";
|
|
16
|
+
import * as i3 from "@angular/material/datepicker";
|
|
17
17
|
export class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
18
18
|
dbxCalendarStore = inject(DbxCalendarStore);
|
|
19
19
|
dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);
|
|
20
20
|
matFormFieldDefaultOptions = inject(MAT_FORM_FIELD_DEFAULT_OPTIONS, { optional: true });
|
|
21
|
-
|
|
22
|
-
required
|
|
21
|
+
picker = viewChild.required('picker');
|
|
22
|
+
required = input(false);
|
|
23
|
+
openPickerOnTextClick = input(true);
|
|
24
|
+
label = input('Enter a date range');
|
|
25
|
+
hint = input();
|
|
26
|
+
disabled = input();
|
|
27
|
+
showCustomize = input(false);
|
|
23
28
|
timezone$ = this.dbxCalendarScheduleSelectionStore.effectiveOutputTimezone$;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
label = 'Enter a date range';
|
|
27
|
-
hint;
|
|
28
|
-
set disabled(disabled) {
|
|
29
|
+
_disabledEffect = effect(() => {
|
|
30
|
+
const disabled = this.disabled();
|
|
29
31
|
if (disabled) {
|
|
30
32
|
this.range.disable();
|
|
31
33
|
}
|
|
32
34
|
else {
|
|
33
35
|
this.range.enable();
|
|
34
36
|
}
|
|
35
|
-
}
|
|
36
|
-
showCustomize = false;
|
|
37
|
+
});
|
|
37
38
|
_pickerOpened = new BehaviorSubject(false);
|
|
38
|
-
_requiredSub = new SubscriptionObject();
|
|
39
39
|
_syncSub = new SubscriptionObject();
|
|
40
40
|
_valueSub = new SubscriptionObject();
|
|
41
41
|
range = new FormGroup({
|
|
@@ -55,7 +55,7 @@ export class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
55
55
|
minDate$ = this.dbxCalendarScheduleSelectionStore.minDate$;
|
|
56
56
|
maxDate$ = this.dbxCalendarScheduleSelectionStore.maxDate$;
|
|
57
57
|
timezoneReleventDate$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(map((currentDateRange) => {
|
|
58
|
-
return currentDateRange ? currentDateRange.start ?? currentDateRange.end : undefined ?? new Date();
|
|
58
|
+
return (currentDateRange ? (currentDateRange.start ?? currentDateRange.end) : undefined) ?? new Date();
|
|
59
59
|
}), shareReplay(1));
|
|
60
60
|
isCustomized$ = this.dbxCalendarScheduleSelectionStore.isCustomized$;
|
|
61
61
|
currentErrorMessage$ = this.range.statusChanges.pipe(filter((x) => x === 'INVALID' || x === 'VALID'), map((x) => {
|
|
@@ -86,8 +86,6 @@ export class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
86
86
|
}
|
|
87
87
|
return currentErrorMessage;
|
|
88
88
|
}), shareReplay(1));
|
|
89
|
-
pickerOpened$ = this._pickerOpened.asObservable();
|
|
90
|
-
defaultDatePickerFilter = () => true;
|
|
91
89
|
datePickerFilter$ = combineLatest([this.dbxCalendarScheduleSelectionStore.isEnabledFilterDayFunction$, this.dbxCalendarScheduleSelectionStore.isInAllowedDaysOfWeekFunction$]).pipe(map(([isEnabled, isAllowedDayOfWeek]) => {
|
|
92
90
|
const fn = (date) => {
|
|
93
91
|
const result = date ? isAllowedDayOfWeek(date) && isEnabled(date) : true;
|
|
@@ -95,6 +93,26 @@ export class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
95
93
|
};
|
|
96
94
|
return fn;
|
|
97
95
|
}), shareReplay(1));
|
|
96
|
+
timezoneSignal = toSignal(this.timezone$);
|
|
97
|
+
timezoneReleventDateSignal = toSignal(this.timezoneReleventDate$, { initialValue: new Date() });
|
|
98
|
+
isCustomizedSignal = toSignal(this.isCustomized$, { initialValue: false });
|
|
99
|
+
showCustomLabelSignal = computed(() => this.showCustomize() && this.isCustomizedSignal());
|
|
100
|
+
currentErrorMessageSignal = toSignal(this.currentErrorMessage$);
|
|
101
|
+
datePickerFilterSignal = toSignal(this.datePickerFilter$, { initialValue: (() => true) });
|
|
102
|
+
_requiredUpdateValidatorsEffect = effect(() => {
|
|
103
|
+
const validators = this.required()
|
|
104
|
+
? [
|
|
105
|
+
(control) => {
|
|
106
|
+
const range = control.value;
|
|
107
|
+
if (!range || !range.start || !range.end) {
|
|
108
|
+
return { required: true };
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
: [];
|
|
114
|
+
this.range.setValidators(validators);
|
|
115
|
+
});
|
|
98
116
|
ngOnInit() {
|
|
99
117
|
this._syncSub.subscription = this.dbxCalendarScheduleSelectionStore.currentInputRange$.subscribe((x) => {
|
|
100
118
|
this.range.setValue({
|
|
@@ -118,38 +136,17 @@ export class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
118
136
|
this.dbxCalendarScheduleSelectionStore.setInputRange({ inputStart: x.start, inputEnd: x.end });
|
|
119
137
|
}
|
|
120
138
|
});
|
|
121
|
-
// add a required validator when needed
|
|
122
|
-
this._requiredSub.subscription = this._required.subscribe((x) => {
|
|
123
|
-
const validators = x
|
|
124
|
-
? [
|
|
125
|
-
(control) => {
|
|
126
|
-
const range = control.value;
|
|
127
|
-
if (!range || !range.start || !range.end) {
|
|
128
|
-
return { required: true };
|
|
129
|
-
}
|
|
130
|
-
return null;
|
|
131
|
-
}
|
|
132
|
-
]
|
|
133
|
-
: [];
|
|
134
|
-
this.range.setValidators(validators);
|
|
135
|
-
});
|
|
136
139
|
}
|
|
137
140
|
ngOnDestroy() {
|
|
138
|
-
this._required.complete();
|
|
139
|
-
this._pickerOpened.complete();
|
|
140
|
-
this._requiredSub.destroy();
|
|
141
141
|
this._syncSub.destroy();
|
|
142
142
|
this._valueSub.destroy();
|
|
143
143
|
}
|
|
144
|
-
get required() {
|
|
145
|
-
return this._required.value;
|
|
146
|
-
}
|
|
147
|
-
set required(required) {
|
|
148
|
-
this._required.next(required);
|
|
149
|
-
}
|
|
150
144
|
clickedDateRangeInput() {
|
|
151
|
-
if (this.openPickerOnTextClick) {
|
|
152
|
-
this.picker
|
|
145
|
+
if (this.openPickerOnTextClick()) {
|
|
146
|
+
const picker = this.picker();
|
|
147
|
+
if (picker) {
|
|
148
|
+
picker.open();
|
|
149
|
+
}
|
|
153
150
|
}
|
|
154
151
|
}
|
|
155
152
|
pickerOpened() {
|
|
@@ -158,26 +155,11 @@ export class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
158
155
|
pickerClosed() {
|
|
159
156
|
this._pickerOpened.next(false);
|
|
160
157
|
}
|
|
161
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
162
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
158
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxScheduleSelectionCalendarDateRangeComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-range", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, openPickerOnTextClick: { classPropertyName: "openPickerOnTextClick", publicName: "openPickerOnTextClick", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, showCustomize: { classPropertyName: "showCustomize", publicName: "showCustomize", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true, isSignal: true }], ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex-bar\">\n @if (showCustomLabelSignal()) {\n <div class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n }\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required()\" [dateFilter]=\"datePickerFilterSignal()\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n @if (timezoneSignal()) {\n <span class=\"dbx-schedule-selection-timezone dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezoneSignal() | timezoneAbbreviation: timezoneReleventDateSignal() }}</span>\n }\n @if (showCustomize()) {\n <div>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n }\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n @if (currentErrorMessageSignal()) {\n <mat-error>{{ currentErrorMessageSignal() }}</mat-error>\n }\n <mat-hint>{{ hint() }}</mat-hint>\n</mat-form-field>\n", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "pipe", type: TimezoneAbbreviationPipe, name: "timezoneAbbreviation" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
163
160
|
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, decorators: [{
|
|
165
162
|
type: Component,
|
|
166
|
-
args: [{ selector: 'dbx-schedule-selection-calendar-date-range', template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label
|
|
167
|
-
}]
|
|
168
|
-
type: Input
|
|
169
|
-
}], picker: [{
|
|
170
|
-
type: ViewChild,
|
|
171
|
-
args: ['picker']
|
|
172
|
-
}], label: [{
|
|
173
|
-
type: Input
|
|
174
|
-
}], hint: [{
|
|
175
|
-
type: Input
|
|
176
|
-
}], disabled: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], showCustomize: [{
|
|
179
|
-
type: Input
|
|
180
|
-
}], required: [{
|
|
181
|
-
type: Input
|
|
182
|
-
}] } });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxHQUFHLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0osT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQThCLDhCQUE4QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFMUcsT0FBTyxFQUFnQixrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQVdoRixNQUFNLE9BQU8sOENBQThDO0lBQ2hELGdCQUFnQixHQUFHLE1B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Q0FBNEM7OEJBY3RELHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJTixNQUFNO3NCQURMLFNBQVM7dUJBQUMsUUFBUTtnQkFJbkIsS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBVU4sYUFBYTtzQkFEWixLQUFLO2dCQTJJRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb25PYmplY3QgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuaW1wb3J0IHsgRGJ4Q2FsZW5kYXJTdG9yZSB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWIvY2FsZW5kYXInO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0aHJvdHRsZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIEJlaGF2aW9yU3ViamVjdCwgc3RhcnRXaXRoLCBPYnNlcnZhYmxlLCBtYXAsIHNoYXJlUmVwbGF5LCBjb21iaW5lTGF0ZXN0LCBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNTYW1lRGF0ZURheSB9IGZyb20gJ0BkZXJlZWtiL2RhdGUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnMsIE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IERhdGVGaWx0ZXJGbiwgTWF0RGF0ZVJhbmdlUGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5cbmludGVyZmFjZSBSYW5nZVZhbHVlIHtcbiAgc3RhcnQ/OiBNYXliZTxEYXRlPjtcbiAgZW5kPzogTWF5YmU8RGF0ZT47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24ucmFuZ2UuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGRieENhbGVuZGFyU3RvcmUgPSBpbmplY3QoRGJ4Q2FsZW5kYXJTdG9yZSk7XG4gIHJlYWRvbmx5IGRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSA9IGluamVjdChEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUpO1xuICByZWFkb25seSBtYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyA9IGluamVjdDxNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucz4oTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgcmVxdWlyZWQkID0gdGhpcy5fcmVxdWlyZWQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IHRpbWV6b25lJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmVmZmVjdGl2ZU91dHB1dFRpbWV6b25lJDtcblxuICBASW5wdXQoKVxuICBvcGVuUGlja2VyT25UZXh0Q2xpY2s6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoJ3BpY2tlcicpXG4gIHBpY2tlciE6IE1hdERhdGVSYW5nZVBpY2tlcjxEYXRlPjtcblxuICBASW5wdXQoKVxuICBsYWJlbD86IE1heWJlPHN0cmluZz4gPSAnRW50ZXIgYSBkYXRlIHJhbmdlJztcblxuICBASW5wdXQoKVxuICBoaW50PzogTWF5YmU8c3RyaW5nPjtcblxuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IE1heWJlPGJvb2xlYW4+KSB7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJhbmdlLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yYW5nZS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzaG93Q3VzdG9taXplID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcGlja2VyT3BlbmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfcmVxdWlyZWRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3N5bmNTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX3ZhbHVlU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IHJhbmdlID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgc3RhcnQ6IG5ldyBGb3JtQ29udHJvbDxNYXliZTxEYXRlPj4obnVsbCksXG4gICAgZW5kOiBuZXcgRm9ybUNvbnRyb2w8TWF5YmU8RGF0ZT4+KG51bGwpXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlciA9IHtcbiAgICBpc0Vycm9yU3RhdGU6IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsLCBmb3JtKSA9PiB7XG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICByZXR1cm4gKGNvbnRyb2wuaW52YWxpZCAmJiAoY29udHJvbC5kaXJ0eSB8fCBjb250cm9sLnRvdWNoZWQpKSB8fCAoY29udHJvbC50b3VjaGVkICYmIHRoaXMucmFuZ2UuaW52YWxpZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHJlYWRvbmx5IG1pbkRhdGUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUubWluRGF0ZSQ7XG4gIHJlYWRvbmx5IG1heERhdGUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUubWF4RGF0ZSQ7XG4gIHJlYWRvbmx5IHRpbWV6b25lUmVsZXZlbnREYXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnREYXRlUmFuZ2UkLnBpcGUoXG4gICAgbWFwKChjdXJyZW50RGF0ZVJhbmdlKSA9PiB7XG4gICAgICByZXR1cm4gY3VycmVudERhdGVSYW5nZSA/IGN1cnJlbnREYXRlUmFuZ2Uuc3RhcnQgPz8gY3VycmVudERhdGVSYW5nZS5lbmQgOiB1bmRlZmluZWQgPz8gbmV3IERhdGUoKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGlzQ3VzdG9taXplZCQgPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5pc0N1c3RvbWl6ZWQkO1xuICByZWFkb25seSBjdXJyZW50RXJyb3JNZXNzYWdlJCA9IHRoaXMucmFuZ2Uuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgIGZpbHRlcigoeCkgPT4geCA9PT0gJ0lOVkFMSUQnIHx8IHggPT09ICdWQUxJRCcpLFxuICAgIG1hcCgoeCkgPT4ge1xuICAgICAgbGV0IGN1cnJlbnRFcnJvck1lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHggPT09ICdJTlZBTElEJykge1xuICAgICAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IHRoaXMucmFuZ2UuY29udHJvbHM7XG5cbiAgICAgICAgaWYgKHRoaXMucmFuZ2UuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0RhdGUgcmFuZ2UgaXMgcmVxdWlyZWQnO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0Lmhhc0Vycm9yKCdtYXRTdGFydERhdGVJbnZhbGlkJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0ludmFsaWQgc3RhcnQgZGF0ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNaW4nKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnU3RhcnQgZGF0ZSBpcyB0b28gZWFybHknO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0Lmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ1N0YXJ0IGRhdGUgaXMgdG9vIGxhdGUnO1xuICAgICAgICB9IGVsc2UgaWYgKGVuZC5oYXNFcnJvcignbWF0U3RhcnREYXRlSW52YWxpZCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdJbnZhbGlkIGVuZCBkYXRlJztcbiAgICAgICAgfSBlbHNlIGlmIChlbmQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNaW4nKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnRW5kIGRhdGUgaXMgdG9vIGVhcmx5JztcbiAgICAgICAgfSBlbHNlIGlmIChlbmQuaGFzRXJyb3IoJ21hdERhdGVwaWNrZXJNYXgnKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnRW5kIGRhdGUgaXMgdG9vIGxhdGUnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyZW50RXJyb3JNZXNzYWdlO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgcGlja2VyT3BlbmVkJCA9IHRoaXMuX3BpY2tlck9wZW5lZC5hc09ic2VydmFibGUoKTtcblxuICByZWFkb25seSBkZWZhdWx0RGF0ZVBpY2tlckZpbHRlcjogRGF0ZUZpbHRlckZuPERhdGU+ID0gKCkgPT4gdHJ1ZTtcbiAgcmVhZG9ubHkgZGF0ZVBpY2tlckZpbHRlciQ6IE9ic2VydmFibGU8RGF0ZUZpbHRlckZuPERhdGU+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmlzRW5hYmxlZEZpbHRlckRheUZ1bmN0aW9uJCwgdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuaXNJbkFsbG93ZWREYXlzT2ZXZWVrRnVuY3Rpb24kXSkucGlwZShcbiAgICBtYXAoKFtpc0VuYWJsZWQsIGlzQWxsb3dlZERheU9mV2Vla10pID0+IHtcbiAgICAgIGNvbnN0IGZuID0gKGRhdGU6IERhdGUgfCBudWxsKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRhdGUgPyBpc0FsbG93ZWREYXlPZldlZWsoZGF0ZSkgJiYgaXNFbmFibGVkKGRhdGUpIDogdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZm47XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zeW5jU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnRJbnB1dFJhbmdlJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHRoaXMucmFuZ2Uuc2V0VmFsdWUoe1xuICAgICAgICBzdGFydDogeD8uaW5wdXRTdGFydCA/PyBudWxsLFxuICAgICAgICBlbmQ6IHg/LmlucHV0RW5kID8/IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5fcGlja2VyT3BlbmVkXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc3dpdGNoTWFwKChvcGVuZWQpID0+IHtcbiAgICAgICAgICBsZXQgb2JzOiBPYnNlcnZhYmxlPFJhbmdlVmFsdWU+O1xuXG4gICAgICAgICAgaWYgKG9wZW5lZCkge1xuICAgICAgICAgICAgb2JzID0gRU1QVFk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9icyA9IHRoaXMucmFuZ2UudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMucmFuZ2UudmFsdWUpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gb2JzO1xuICAgICAgICB9KSxcbiAgICAgICAgZmlsdGVyKCh4KSA9PiBCb29sZWFuKHguc3RhcnQgJiYgeC5lbmQpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IGlzU2FtZURhdGVEYXkoYS5zdGFydCwgYi5zdGFydCkgJiYgaXNTYW1lRGF0ZURheShhLmVuZCwgYi5lbmQpKSxcbiAgICAgICAgdGhyb3R0bGVUaW1lKDEwMCwgdW5kZWZpbmVkLCB7IHRyYWlsaW5nOiB0cnVlIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIGlmICh4LnN0YXJ0ICYmIHguZW5kKSB7XG4gICAgICAgICAgdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2V0SW5wdXRSYW5nZSh7IGlucHV0U3RhcnQ6IHguc3RhcnQsIGlucHV0RW5kOiB4LmVuZCB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAvLyBhZGQgYSByZXF1aXJlZCB2YWxpZGF0b3Igd2hlbiBuZWVkZWRcbiAgICB0aGlzLl9yZXF1aXJlZFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl9yZXF1aXJlZC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB4XG4gICAgICAgID8gW1xuICAgICAgICAgICAgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByYW5nZSA9IGNvbnRyb2wudmFsdWU7XG5cbiAgICAgICAgICAgICAgaWYgKCFyYW5nZSB8fCAhcmFuZ2Uuc3RhcnQgfHwgIXJhbmdlLmVuZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDogW107XG5cbiAgICAgIHRoaXMucmFuZ2Uuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3JlcXVpcmVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcGlja2VyT3BlbmVkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcmVxdWlyZWRTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3N5bmNTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX3ZhbHVlU3ViLmRlc3Ryb3koKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQudmFsdWU7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZC5uZXh0KHJlcXVpcmVkKTtcbiAgfVxuXG4gIGNsaWNrZWREYXRlUmFuZ2VJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5vcGVuUGlja2VyT25UZXh0Q2xpY2spIHtcbiAgICAgIHRoaXMucGlja2VyLm9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBwaWNrZXJPcGVuZWQoKSB7XG4gICAgdGhpcy5fcGlja2VyT3BlbmVkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwaWNrZXJDbG9zZWQoKSB7XG4gICAgdGhpcy5fcGlja2VyT3BlbmVkLm5leHQoZmFsc2UpO1xuICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtcmFuZ2UtZmllbGRcIj5cbiAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsXCI+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgPGRpdiBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZS1maWVsZC1jb250ZW50XCI+XG4gICAgPCEtLSBQcmltYXJ5IENvbnRlbnQgLS0+XG4gICAgPGRpdiBjbGFzcz1cImRieC1mbGV4LWJhclwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDdXN0b21pemUgJiYgKGlzQ3VzdG9taXplZCQgfCBhc3luYylcIiBjbGFzcz1cImRhdGUtcmFuZ2UtZmllbGQtY3VzdG9taXplZFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRieC1hY2NlbnQtYmcgZGF0ZS1yYW5nZS1maWVsZC1jdXN0b21pemVkLXRleHRcIj5DdXN0b208L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkYngtYnV0dG9uLXNwYWNlcj48L2RieC1idXR0b24tc3BhY2VyPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBjbGFzcz1cIm1hdC1kYXRlcGlja2VyLWJ1dHRvbi1oaWdobGlnaHRcIiBtYXRJY29uU3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICAgIDxtYXQtZGF0ZS1yYW5nZS1pbnB1dCAoY2xpY2spPVwiY2xpY2tlZERhdGVSYW5nZUlucHV0KClcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWQkIHwgYXN5bmNcIiBbZGF0ZUZpbHRlcl09XCIoZGF0ZVBpY2tlckZpbHRlciQgfCBhc3luYykgPz8gZGVmYXVsdERhdGVQaWNrZXJGaWx0ZXJcIiBbZm9ybUdyb3VwXT1cInJhbmdlXCIgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiPlxuICAgICAgICA8aW5wdXQgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yU3RhdGVNYXRjaGVyXCIgbWF0U3RhcnREYXRlIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0XCIgcGxhY2Vob2xkZXI9XCJTdGFydCBkYXRlXCIgLz5cbiAgICAgICAgPGlucHV0IFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiIG1hdEVuZERhdGUgZm9ybUNvbnRyb2xOYW1lPVwiZW5kXCIgcGxhY2Vob2xkZXI9XCJFbmQgZGF0ZVwiIC8+XG4gICAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgICAgPHNwYW4gKm5nSWY9XCJ0aW1lem9uZSQgfCBhc3luY1wiIGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi10aW1lem9uZSBkYngtZmFpbnQgZGJ4LW5vd3JhcCBkYngtaWNvbi1zcGFjZXJcIj57eyB0aW1lem9uZSQgfCBhc3luYyB8IHRpbWV6b25lQWJicmV2aWF0aW9uOiAodGltZXpvbmVSZWxldmVudERhdGUkIHwgYXN5bmMpIH19PC9zcGFuPlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDdXN0b21pemVcIj5cbiAgICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjdXN0b21pemVCdXR0b25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyICNwaWNrZXIgKG9wZW5lZCk9XCJwaWNrZXJPcGVuZWQoKVwiIChjbG9zZWQpPVwicGlja2VyQ2xvc2VkKClcIj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEN1c3RvbSBDb250ZW50IC0tPlxuICAgIDxkaXY+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bWF0LWVycm9yICpuZ0lmPVwiY3VycmVudEVycm9yTWVzc2FnZSQgfCBhc3luY1wiPnt7IGN1cnJlbnRFcnJvck1lc3NhZ2UkIHwgYXN5bmMgfX08L21hdC1lcnJvcj5cbiAgPG1hdC1oaW50Pnt7IGhpbnQgfX08L21hdC1oaW50PlxuPC9tYXQtZm9ybS1maWVsZD5cbiJdfQ==
|
|
163
|
+
args: [{ selector: 'dbx-schedule-selection-calendar-date-range', imports: [MatFormFieldModule, FormsModule, ReactiveFormsModule, DbxButtonSpacerDirective, MatDatepickerModule, TimezoneAbbreviationPipe], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex-bar\">\n @if (showCustomLabelSignal()) {\n <div class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n }\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required()\" [dateFilter]=\"datePickerFilterSignal()\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n @if (timezoneSignal()) {\n <span class=\"dbx-schedule-selection-timezone dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezoneSignal() | timezoneAbbreviation: timezoneReleventDateSignal() }}</span>\n }\n @if (showCustomize()) {\n <div>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n }\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n @if (currentErrorMessageSignal()) {\n <mat-error>{{ currentErrorMessageSignal() }}</mat-error>\n }\n <mat-hint>{{ hint() }}</mat-hint>\n</mat-form-field>\n" }]
|
|
164
|
+
}] });
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL2NhbGVuZGFyL3NyYy9saWIvY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnJhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFtQixtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxHQUFHLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0osT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQThCLDhCQUE4QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFOUgsT0FBTyxFQUFvQyxtQkFBbUIsRUFBRSxN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ZWVrYi9yeGpzJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCwgdmlld0NoaWxkLCBpbnB1dCwgZWZmZWN0LCBjb21wdXRlZCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnN0b3JlJztcbmltcG9ydCB7IERieENhbGVuZGFyU3RvcmUgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViL2NhbGVuZGFyJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEFic3RyYWN0Q29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0eXBlIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRocm90dGxlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgQmVoYXZpb3JTdWJqZWN0LCBzdGFydFdpdGgsIE9ic2VydmFibGUsIG1hcCwgc2hhcmVSZXBsYXksIGNvbWJpbmVMYXRlc3QsIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc1NhbWVEYXRlRGF5IH0gZnJvbSAnQGRlcmVla2IvZGF0ZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucywgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TLCBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRm4sIE1hdERhdGVSYW5nZVBpY2tlciwgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBEYnhCdXR0b25TcGFjZXJEaXJlY3RpdmUgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IFRpbWV6b25lQWJicmV2aWF0aW9uUGlwZSB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcblxuaW50ZXJmYWNlIFJhbmdlVmFsdWUge1xuICByZWFkb25seSBzdGFydD86IE1heWJlPERhdGU+O1xuICByZWFkb25seSBlbmQ/OiBNYXliZTxEYXRlPjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtNYXRGb3JtRmllbGRNb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBEYnhCdXR0b25TcGFjZXJEaXJlY3RpdmUsIE1hdERhdGVwaWNrZXJNb2R1bGUsIFRpbWV6b25lQWJicmV2aWF0aW9uUGlwZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieFNjaGVkdWxlU2VsZWN0aW9uQ2FsZW5kYXJEYXRlUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGRieENhbGVuZGFyU3RvcmUgPSBpbmplY3QoRGJ4Q2FsZW5kYXJTdG9yZSk7XG4gIHJlYWRvbmx5IGRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSA9IGluamVjdChEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUpO1xuICByZWFkb25seSBtYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyA9IGluamVjdDxNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucz4oTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IHBpY2tlciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxNYXREYXRlUmFuZ2VQaWNrZXI8RGF0ZT4+KCdwaWNrZXInKTtcblxuICByZWFkb25seSByZXF1aXJlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgb3BlblBpY2tlck9uVGV4dENsaWNrID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcmVhZG9ubHkgbGFiZWwgPSBpbnB1dDxNYXliZTxzdHJpbmc+PignRW50ZXIgYSBkYXRlIHJhbmdlJyk7XG4gIHJlYWRvbmx5IGhpbnQgPSBpbnB1dDxNYXliZTxzdHJpbmc+PigpO1xuXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8TWF5YmU8Ym9vbGVhbj4+KCk7XG4gIHJlYWRvbmx5IHNob3dDdXN0b21pemUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgdGltZXpvbmUkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuZWZmZWN0aXZlT3V0cHV0VGltZXpvbmUkO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBfZGlzYWJsZWRFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCgpO1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgdGhpcy5yYW5nZS5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmFuZ2UuZW5hYmxlKCk7XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9waWNrZXJPcGVuZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zeW5jU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSByYW5nZSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2w8TWF5YmU8RGF0ZT4+KG51bGwpLFxuICAgIGVuZDogbmV3IEZvcm1Db250cm9sPE1heWJlPERhdGU+PihudWxsKVxuICB9KTtcblxuICByZWFkb25seSBlcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIgPSB7XG4gICAgaXNFcnJvclN0YXRlOiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCwgZm9ybSkgPT4ge1xuICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgcmV0dXJuIChjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSkgfHwgKGNvbnRyb2wudG91Y2hlZCAmJiB0aGlzLnJhbmdlLmludmFsaWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICByZWFkb25seSBtaW5EYXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLm1pbkRhdGUkO1xuICByZWFkb25seSBtYXhEYXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLm1heERhdGUkO1xuXG4gIHJlYWRvbmx5IHRpbWV6b25lUmVsZXZlbnREYXRlJCA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnREYXRlUmFuZ2UkLnBpcGUoXG4gICAgbWFwKChjdXJyZW50RGF0ZVJhbmdlKSA9PiB7XG4gICAgICByZXR1cm4gKGN1cnJlbnREYXRlUmFuZ2UgPyAoY3VycmVudERhdGVSYW5nZS5zdGFydCA/PyBjdXJyZW50RGF0ZVJhbmdlLmVuZCkgOiB1bmRlZmluZWQpID8/IG5ldyBEYXRlKCk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBpc0N1c3RvbWl6ZWQkID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuaXNDdXN0b21pemVkJDtcbiAgcmVhZG9ubHkgY3VycmVudEVycm9yTWVzc2FnZSQgPSB0aGlzLnJhbmdlLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICBmaWx0ZXIoKHgpID0+IHggPT09ICdJTlZBTElEJyB8fCB4ID09PSAnVkFMSUQnKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGxldCBjdXJyZW50RXJyb3JNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICh4ID09PSAnSU5WQUxJRCcpIHtcbiAgICAgICAgY29uc3QgeyBzdGFydCwgZW5kIH0gPSB0aGlzLnJhbmdlLmNvbnRyb2xzO1xuXG4gICAgICAgIGlmICh0aGlzLnJhbmdlLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdEYXRlIHJhbmdlIGlzIHJlcXVpcmVkJztcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydC5oYXNFcnJvcignbWF0U3RhcnREYXRlSW52YWxpZCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdJbnZhbGlkIHN0YXJ0IGRhdGUnO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0Lmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWluJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ1N0YXJ0IGRhdGUgaXMgdG9vIGVhcmx5JztcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydC5oYXNFcnJvcignbWF0RGF0ZXBpY2tlck1heCcpKSB7XG4gICAgICAgICAgY3VycmVudEVycm9yTWVzc2FnZSA9ICdTdGFydCBkYXRlIGlzIHRvbyBsYXRlJztcbiAgICAgICAgfSBlbHNlIGlmIChlbmQuaGFzRXJyb3IoJ21hdFN0YXJ0RGF0ZUludmFsaWQnKSkge1xuICAgICAgICAgIGN1cnJlbnRFcnJvck1lc3NhZ2UgPSAnSW52YWxpZCBlbmQgZGF0ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kLmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWluJykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0VuZCBkYXRlIGlzIHRvbyBlYXJseSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZW5kLmhhc0Vycm9yKCdtYXREYXRlcGlja2VyTWF4JykpIHtcbiAgICAgICAgICBjdXJyZW50RXJyb3JNZXNzYWdlID0gJ0VuZCBkYXRlIGlzIHRvbyBsYXRlJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3VycmVudEVycm9yTWVzc2FnZTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGRhdGVQaWNrZXJGaWx0ZXIkOiBPYnNlcnZhYmxlPERhdGVGaWx0ZXJGbjxEYXRlPj4gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5pc0VuYWJsZWRGaWx0ZXJEYXlGdW5jdGlvbiQsIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmlzSW5BbGxvd2VkRGF5c09mV2Vla0Z1bmN0aW9uJF0pLnBpcGUoXG4gICAgbWFwKChbaXNFbmFibGVkLCBpc0FsbG93ZWREYXlPZldlZWtdKSA9PiB7XG4gICAgICBjb25zdCBmbiA9IChkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkYXRlID8gaXNBbGxvd2VkRGF5T2ZXZWVrKGRhdGUpICYmIGlzRW5hYmxlZChkYXRlKSA6IHRydWU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gZm47XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSB0aW1lem9uZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMudGltZXpvbmUkKTtcbiAgcmVhZG9ubHkgdGltZXpvbmVSZWxldmVudERhdGVTaWduYWwgPSB0b1NpZ25hbCh0aGlzLnRpbWV6b25lUmVsZXZlbnREYXRlJCwgeyBpbml0aWFsVmFsdWU6IG5ldyBEYXRlKCkgfSk7XG4gIHJlYWRvbmx5IGlzQ3VzdG9taXplZFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuaXNDdXN0b21pemVkJCwgeyBpbml0aWFsVmFsdWU6IGZhbHNlIH0pO1xuXG4gIHJlYWRvbmx5IHNob3dDdXN0b21MYWJlbFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2hvd0N1c3RvbWl6ZSgpICYmIHRoaXMuaXNDdXN0b21pemVkU2lnbmFsKCkpO1xuICByZWFkb25seSBjdXJyZW50RXJyb3JNZXNzYWdlU2lnbmFsID0gdG9TaWduYWwodGhpcy5jdXJyZW50RXJyb3JNZXNzYWdlJCk7XG4gIHJlYWRvbmx5IGRhdGVQaWNrZXJGaWx0ZXJTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmRhdGVQaWNrZXJGaWx0ZXIkLCB7IGluaXRpYWxWYWx1ZTogKCgpID0+IHRydWUpIGFzIERhdGVGaWx0ZXJGbjxEYXRlPiB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3JlcXVpcmVkVXBkYXRlVmFsaWRhdG9yc0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMucmVxdWlyZWQoKVxuICAgICAgPyBbXG4gICAgICAgICAgKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBjb250cm9sLnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoIXJhbmdlIHx8ICFyYW5nZS5zdGFydCB8fCAhcmFuZ2UuZW5kKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IHJlcXVpcmVkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgOiBbXTtcblxuICAgIHRoaXMucmFuZ2Uuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3luY1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5jdXJyZW50SW5wdXRSYW5nZSQuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICB0aGlzLnJhbmdlLnNldFZhbHVlKHtcbiAgICAgICAgc3RhcnQ6IHg/LmlucHV0U3RhcnQgPz8gbnVsbCxcbiAgICAgICAgZW5kOiB4Py5pbnB1dEVuZCA/PyBudWxsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuX3BpY2tlck9wZW5lZFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHN3aXRjaE1hcCgob3BlbmVkKSA9PiB7XG4gICAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxSYW5nZVZhbHVlPjtcblxuICAgICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICAgIG9icyA9IEVNUFRZO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYnMgPSB0aGlzLnJhbmdlLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLnJhbmdlLnZhbHVlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG9icztcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcigoeCkgPT4gQm9vbGVhbih4LnN0YXJ0ICYmIHguZW5kKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBpc1NhbWVEYXRlRGF5KGEuc3RhcnQsIGIuc3RhcnQpICYmIGlzU2FtZURhdGVEYXkoYS5lbmQsIGIuZW5kKSksXG4gICAgICAgIHRocm90dGxlVGltZSgxMDAsIHVuZGVmaW5lZCwgeyB0cmFpbGluZzogdHJ1ZSB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgICBpZiAoeC5zdGFydCAmJiB4LmVuZCkge1xuICAgICAgICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldElucHV0UmFuZ2UoeyBpbnB1dFN0YXJ0OiB4LnN0YXJ0LCBpbnB1dEVuZDogeC5lbmQgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3luY1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICB9XG5cbiAgY2xpY2tlZERhdGVSYW5nZUlucHV0KCkge1xuICAgIGlmICh0aGlzLm9wZW5QaWNrZXJPblRleHRDbGljaygpKSB7XG4gICAgICBjb25zdCBwaWNrZXIgPSB0aGlzLnBpY2tlcigpO1xuICAgICAgaWYgKHBpY2tlcikge1xuICAgICAgICBwaWNrZXIub3BlbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBpY2tlck9wZW5lZCgpIHtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHBpY2tlckNsb3NlZCgpIHtcbiAgICB0aGlzLl9waWNrZXJPcGVuZWQubmV4dChmYWxzZSk7XG4gIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZS1maWVsZFwiPlxuICBAaWYgKGxhYmVsKCkpIHtcbiAgICA8bWF0LWxhYmVsPnt7IGxhYmVsKCkgfX08L21hdC1sYWJlbD5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlLWZpZWxkLWNvbnRlbnRcIj5cbiAgICA8IS0tIFByaW1hcnkgQ29udGVudCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LWZsZXgtYmFyXCI+XG4gICAgICBAaWYgKHNob3dDdXN0b21MYWJlbFNpZ25hbCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXJhbmdlLWZpZWxkLWN1c3RvbWl6ZWRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImRieC1hY2NlbnQtYmcgZGF0ZS1yYW5nZS1maWVsZC1jdXN0b21pemVkLXRleHRcIj5DdXN0b208L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIGNsYXNzPVwibWF0LWRhdGVwaWNrZXItYnV0dG9uLWhpZ2hsaWdodFwiIG1hdEljb25TdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxkYngtYnV0dG9uLXNwYWNlcj48L2RieC1idXR0b24tc3BhY2VyPlxuICAgICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IChjbGljayk9XCJjbGlja2VkRGF0ZVJhbmdlSW5wdXQoKVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZCgpXCIgW2RhdGVGaWx0ZXJdPVwiZGF0ZVBpY2tlckZpbHRlclNpZ25hbCgpXCIgW2Zvcm1Hcm91cF09XCJyYW5nZVwiIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIj5cbiAgICAgICAgPGlucHV0IFtlcnJvclN0YXRlTWF0Y2hlcl09XCJlcnJvclN0YXRlTWF0Y2hlclwiIG1hdFN0YXJ0RGF0ZSBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiIHBsYWNlaG9sZGVyPVwiU3RhcnQgZGF0ZVwiIC8+XG4gICAgICAgIDxpbnB1dCBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JTdGF0ZU1hdGNoZXJcIiBtYXRFbmREYXRlIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIHBsYWNlaG9sZGVyPVwiRW5kIGRhdGVcIiAvPlxuICAgICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cbiAgICAgIEBpZiAodGltZXpvbmVTaWduYWwoKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tdGltZXpvbmUgZGJ4LWZhaW50IGRieC1ub3dyYXAgZGJ4LWljb24tc3BhY2VyXCI+e3sgdGltZXpvbmVTaWduYWwoKSB8IHRpbWV6b25lQWJicmV2aWF0aW9uOiB0aW1lem9uZVJlbGV2ZW50RGF0ZVNpZ25hbCgpIH19PC9zcGFuPlxuICAgICAgfVxuICAgICAgQGlmIChzaG93Q3VzdG9taXplKCkpIHtcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGJ4LWJ1dHRvbi1zcGFjZXI+PC9kYngtYnV0dG9uLXNwYWNlcj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY3VzdG9taXplQnV0dG9uXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8bWF0LWRhdGUtcmFuZ2UtcGlja2VyICNwaWNrZXIgKG9wZW5lZCk9XCJwaWNrZXJPcGVuZWQoKVwiIChjbG9zZWQpPVwicGlja2VyQ2xvc2VkKClcIj48L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEN1c3RvbSBDb250ZW50IC0tPlxuICAgIDxkaXY+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBAaWYgKGN1cnJlbnRFcnJvck1lc3NhZ2VTaWduYWwoKSkge1xuICAgIDxtYXQtZXJyb3I+e3sgY3VycmVudEVycm9yTWVzc2FnZVNpZ25hbCgpIH19PC9tYXQtZXJyb3I+XG4gIH1cbiAgPG1hdC1oaW50Pnt7IGhpbnQoKSB9fTwvbWF0LWhpbnQ+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
|