@elderbyte/ngx-starter 18.12.4 → 18.12.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/esm2022/lib/common/data/data-context/indexed-entities.mjs +13 -2
  2. package/esm2022/lib/common/selection/selection-model.mjs +4 -3
  3. package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +4 -2
  4. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.mjs +21 -0
  5. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.mjs +24 -0
  6. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-controller.mjs +43 -0
  7. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-form-controller.mjs +69 -0
  8. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-select-controller.mjs +117 -0
  9. package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +44 -0
  10. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +87 -130
  11. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +41 -0
  12. package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +144 -0
  13. package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +93 -0
  14. package/esm2022/lib/components/time/elder-interval-picker/model/anchor-state.mjs +54 -0
  15. package/esm2022/lib/components/time/elder-interval-picker/model/interval-state.mjs +37 -0
  16. package/esm2022/lib/components/time/elder-interval-picker/model/smart-shift-state.mjs +10 -0
  17. package/esm2022/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.mjs +96 -0
  18. package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +194 -0
  19. package/esm2022/lib/components/time/elder-time.module.mjs +5 -5
  20. package/fesm2022/elderbyte-ngx-starter.mjs +789 -892
  21. package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
  22. package/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.d.ts +9 -0
  23. package/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.d.ts +7 -0
  24. package/lib/components/time/elder-interval-picker/controller/interval-controller.d.ts +35 -0
  25. package/lib/components/time/elder-interval-picker/controller/interval-form-controller.d.ts +12 -0
  26. package/lib/components/time/elder-interval-picker/controller/interval-select-controller.d.ts +22 -0
  27. package/lib/components/time/elder-interval-picker/controller/interval-shift-controller.d.ts +13 -0
  28. package/lib/components/time/elder-interval-picker/elder-interval-picker.component.d.ts +26 -34
  29. package/lib/components/time/elder-interval-picker/{elder-interval-picker-binding.directive.d.ts → interval-picker-binding/elder-interval-picker-binding.directive.d.ts} +3 -4
  30. package/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +37 -0
  31. package/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.d.ts +46 -0
  32. package/lib/components/time/elder-interval-picker/model/anchor-state.d.ts +20 -0
  33. package/lib/components/time/elder-interval-picker/model/interval-state.d.ts +16 -0
  34. package/lib/components/time/elder-interval-picker/model/smart-shift-state.d.ts +8 -0
  35. package/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.d.ts +30 -0
  36. package/lib/components/time/elder-interval-picker/util/interval-picker-util.d.ts +20 -0
  37. package/lib/components/time/elder-time.module.d.ts +4 -4
  38. package/package.json +1 -1
  39. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +0 -40
  40. package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +0 -202
  41. package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.mjs +0 -284
  42. package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model.mjs +0 -445
  43. package/esm2022/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.mjs +0 -37
  44. package/esm2022/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.mjs +0 -25
  45. package/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +0 -55
  46. package/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.d.ts +0 -77
  47. package/lib/components/time/elder-interval-picker/model/interval-picker-model.d.ts +0 -113
  48. package/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.d.ts +0 -7
  49. package/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.d.ts +0 -4
@@ -0,0 +1,41 @@
1
+ import { ContentChild, Directive } from '@angular/core';
2
+ import { ElderIntervalInputComponent } from '../../elder-interval-input/elder-interval-input.component';
3
+ import { ElderIntervalPickerToggleComponent } from '../interval-picker-toggle/elder-interval-picker-toggle.component';
4
+ import * as i0 from "@angular/core";
5
+ export class ElderIntervalPickerBindingDirective {
6
+ /***************************************************************************
7
+ * *
8
+ * Constructor *
9
+ * *
10
+ **************************************************************************/
11
+ constructor() { }
12
+ /***************************************************************************
13
+ * *
14
+ * Life Cycle *
15
+ * *
16
+ **************************************************************************/
17
+ ngAfterContentInit() {
18
+ if (!this.intervalInputComponent || !this.intervalPickerToggleComponent) {
19
+ console.error('ElderIntervalPickerBindingDirective: Both components are required, IntervalInputComponent and IntervalPickerToggleComponent.');
20
+ return;
21
+ }
22
+ this.intervalPickerToggleComponent.connectedIntervalInput = this.intervalInputComponent;
23
+ this.intervalInputComponent.isDefaultDatePickerDisabled = true;
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderIntervalPickerBindingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: ElderIntervalPickerBindingDirective, isStandalone: true, selector: "[elderIntervalPickerBinding]", queries: [{ propertyName: "intervalInputComponent", first: true, predicate: ElderIntervalInputComponent, descendants: true }, { propertyName: "intervalPickerToggleComponent", first: true, predicate: ElderIntervalPickerToggleComponent, descendants: true }], ngImport: i0 }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderIntervalPickerBindingDirective, decorators: [{
29
+ type: Directive,
30
+ args: [{
31
+ selector: '[elderIntervalPickerBinding]',
32
+ standalone: true,
33
+ }]
34
+ }], ctorParameters: () => [], propDecorators: { intervalInputComponent: [{
35
+ type: ContentChild,
36
+ args: [ElderIntervalInputComponent]
37
+ }], intervalPickerToggleComponent: [{
38
+ type: ContentChild,
39
+ args: [ElderIntervalPickerToggleComponent]
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLWJpbmRpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLXBpY2tlci9pbnRlcnZhbC1waWNrZXItYmluZGluZy9lbGRlci1pbnRlcnZhbC1waWNrZXItYmluZGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkRBQTJELENBQUE7QUFDdkcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0VBQWtFLENBQUE7O0FBTXJILE1BQU0sT0FBTyxtQ0FBbUM7SUFZOUM7Ozs7Z0ZBSTRFO0lBRTVFLGdCQUFlLENBQUM7SUFFaEI7Ozs7Z0ZBSTRFO0lBRXJFLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDeEUsT0FBTyxDQUFDLEtBQUssQ0FDWCw4SEFBOEgsQ0FDL0gsQ0FBQTtZQUNELE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQTtRQUN2RixJQUFJLENBQUMsc0JBQXNCLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFBO0lBQ2hFLENBQUM7OEdBcENVLG1DQUFtQztrR0FBbkMsbUNBQW1DLDRJQU9oQywyQkFBMkIsZ0dBRTNCLGtDQUFrQzs7MkZBVHJDLG1DQUFtQztrQkFKL0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7d0RBU0Msc0JBQXNCO3NCQURyQixZQUFZO3VCQUFDLDJCQUEyQjtnQkFHekMsNkJBQTZCO3NCQUQ1QixZQUFZO3VCQUFDLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IEVsZGVySW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcnZhbC1waWNrZXItdG9nZ2xlL2VsZGVyLWludGVydmFsLXBpY2tlci10b2dnbGUuY29tcG9uZW50J1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZWxkZXJJbnRlcnZhbFBpY2tlckJpbmRpbmddJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJJbnRlcnZhbFBpY2tlckJpbmRpbmdEaXJlY3RpdmUge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBAQ29udGVudENoaWxkKEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudClcbiAgaW50ZXJ2YWxJbnB1dENvbXBvbmVudDogRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50XG4gIEBDb250ZW50Q2hpbGQoRWxkZXJJbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudClcbiAgaW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnQ6IEVsZGVySW50ZXJ2YWxQaWNrZXJUb2dnbGVDb21wb25lbnRcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIExpZmUgQ3ljbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxJbnB1dENvbXBvbmVudCB8fCAhdGhpcy5pbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0VsZGVySW50ZXJ2YWxQaWNrZXJCaW5kaW5nRGlyZWN0aXZlOiBCb3RoIGNvbXBvbmVudHMgYXJlIHJlcXVpcmVkLCBJbnRlcnZhbElucHV0Q29tcG9uZW50IGFuZCBJbnRlcnZhbFBpY2tlclRvZ2dsZUNvbXBvbmVudC4nXG4gICAgICApXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50LmNvbm5lY3RlZEludGVydmFsSW5wdXQgPSB0aGlzLmludGVydmFsSW5wdXRDb21wb25lbnRcbiAgICB0aGlzLmludGVydmFsSW5wdXRDb21wb25lbnQuaXNEZWZhdWx0RGF0ZVBpY2tlckRpc2FibGVkID0gdHJ1ZVxuICB9XG59XG4iXX0=
@@ -0,0 +1,144 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, Input, input, signal, ViewChild, } from '@angular/core';
2
+ import { MatIconButton } from '@angular/material/button';
3
+ import { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';
4
+ import { MatIcon } from '@angular/material/icon';
5
+ import { LoggerFactory } from '@elderbyte/ts-logger';
6
+ import { ElderOverlayOriginDirective } from '../../../overlays/elder-overlay-origin.directive';
7
+ import { ElderOverlayTriggerDirective } from '../../../overlays/elder-overlay-trigger.directive';
8
+ import { ElderOverlayComponent } from '../../../overlays/elder-overlay.component';
9
+ import { ElderDialogPanelComponent } from '../../../panels/elder-dialog-panel/elder-dialog-panel.component';
10
+ import { ElderIntervalInputComponent, } from '../../elder-interval-input/elder-interval-input.component';
11
+ import { ElderIntervalPickerComponent } from '../elder-interval-picker.component';
12
+ import * as i0 from "@angular/core";
13
+ export class ElderIntervalPickerToggleComponent {
14
+ constructor() {
15
+ this.log = LoggerFactory.getLogger(this.constructor.name);
16
+ this.connectedIntervalInput = null;
17
+ this.intervalInputMode = signal('date-time-range');
18
+ this.emitType = signal('interval');
19
+ this.externalInterval = signal(null);
20
+ this.showAnchor = input(false);
21
+ this.anchorReadOnly = input(false);
22
+ this.externalAnchorDateTime = input(null);
23
+ this.disabled = booleanAttribute(false);
24
+ }
25
+ /***************************************************************************
26
+ * *
27
+ * Life Cycle *
28
+ * *
29
+ **************************************************************************/
30
+ ngAfterViewInit() {
31
+ if (!this.connectedIntervalInput) {
32
+ this.log.error('ElderIntervalPickerToggleComponent: connectedIntervalInput is required.');
33
+ return;
34
+ }
35
+ this.intervalInputMode.set(this.connectedIntervalInput.mode);
36
+ this.emitType.set(this.connectedIntervalInput.valueAsIsoStr ? 'iso' : 'interval');
37
+ this.connectedIntervalInput.valueChange.subscribe((interval) => {
38
+ this.externalInterval.set(interval);
39
+ });
40
+ if (this.connectedIntervalInput.value) {
41
+ // this is necessary to set the value of the interval picker
42
+ this.externalInterval.set(this.connectedIntervalInput.value);
43
+ }
44
+ }
45
+ /***************************************************************************
46
+ * *
47
+ * Public API *
48
+ * *
49
+ **************************************************************************/
50
+ setConnectedIntervalInput(intervalInput) {
51
+ this.connectedIntervalInput = intervalInput;
52
+ }
53
+ handleIntervalPickerDateChange(interval) {
54
+ this.connectedIntervalInput.value = interval;
55
+ }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderIntervalPickerToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.5", type: ElderIntervalPickerToggleComponent, isStandalone: true, selector: "elder-interval-picker-toggle", inputs: { connectedIntervalInput: { classPropertyName: "connectedIntervalInput", publicName: "connectedIntervalInput", isSignal: false, isRequired: false, transformFunction: null }, showAnchor: { classPropertyName: "showAnchor", publicName: "showAnchor", isSignal: true, isRequired: false, transformFunction: null }, anchorReadOnly: { classPropertyName: "anchorReadOnly", publicName: "anchorReadOnly", isSignal: true, isRequired: false, transformFunction: null }, externalAnchorDateTime: { classPropertyName: "externalAnchorDateTime", publicName: "externalAnchorDateTime", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "connectedIntervalPicker", first: true, predicate: ["connectedIntervalPicker"], descendants: true }], ngImport: i0, template: `
58
+ <span style="padding-right: 8px">
59
+ <button
60
+ mat-icon-button
61
+ [elderOverlayOrigin]="dateIntervalOverlay"
62
+ [elderOverlayTrigger]="dateIntervalOverlay"
63
+ class="elder-control-icon-button mat-datepicker-toggle"
64
+ >
65
+ <mat-icon>date_range</mat-icon>
66
+ </button>
67
+ </span>
68
+
69
+ <elder-overlay #dateIntervalOverlay>
70
+ <elder-dialog-panel>
71
+ <div class="pb-md pt-xs">
72
+ <elder-interval-picker
73
+ #connectedIntervalPicker
74
+ [intervalInputMode]="intervalInputMode()"
75
+ (intervalChange)="handleIntervalPickerDateChange($event)"
76
+ [externalInterval]="externalInterval()"
77
+ [showAnchor]="showAnchor()"
78
+ [anchorReadOnly]="anchorReadOnly()"
79
+ [externalAnchorDateTime]="externalAnchorDateTime()"
80
+ [emitType]="emitType()"
81
+ ></elder-interval-picker>
82
+ </div>
83
+ </elder-dialog-panel>
84
+ </elder-overlay>
85
+ `, isInline: true, dependencies: [{ kind: "component", type: ElderIntervalPickerComponent, selector: "elder-interval-picker", inputs: ["autoEmitMode", "emitOnChange", "emitType", "intervalInputMode", "showAnchor", "anchorReadOnly", "externalAnchorDateTime", "externalInterval"], outputs: ["intervalChange"] }, { kind: "component", type: ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "component", type: ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "directive", type: ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderIntervalPickerToggleComponent, decorators: [{
88
+ type: Component,
89
+ args: [{
90
+ selector: 'elder-interval-picker-toggle',
91
+ standalone: true,
92
+ imports: [
93
+ ElderIntervalPickerComponent,
94
+ ElderIntervalInputComponent,
95
+ MatFormField,
96
+ MatLabel,
97
+ ElderOverlayComponent,
98
+ ElderDialogPanelComponent,
99
+ MatIcon,
100
+ MatIconButton,
101
+ MatSuffix,
102
+ ElderOverlayTriggerDirective,
103
+ ElderOverlayOriginDirective,
104
+ ],
105
+ template: `
106
+ <span style="padding-right: 8px">
107
+ <button
108
+ mat-icon-button
109
+ [elderOverlayOrigin]="dateIntervalOverlay"
110
+ [elderOverlayTrigger]="dateIntervalOverlay"
111
+ class="elder-control-icon-button mat-datepicker-toggle"
112
+ >
113
+ <mat-icon>date_range</mat-icon>
114
+ </button>
115
+ </span>
116
+
117
+ <elder-overlay #dateIntervalOverlay>
118
+ <elder-dialog-panel>
119
+ <div class="pb-md pt-xs">
120
+ <elder-interval-picker
121
+ #connectedIntervalPicker
122
+ [intervalInputMode]="intervalInputMode()"
123
+ (intervalChange)="handleIntervalPickerDateChange($event)"
124
+ [externalInterval]="externalInterval()"
125
+ [showAnchor]="showAnchor()"
126
+ [anchorReadOnly]="anchorReadOnly()"
127
+ [externalAnchorDateTime]="externalAnchorDateTime()"
128
+ [emitType]="emitType()"
129
+ ></elder-interval-picker>
130
+ </div>
131
+ </elder-dialog-panel>
132
+ </elder-overlay>
133
+ `,
134
+ changeDetection: ChangeDetectionStrategy.OnPush,
135
+ }]
136
+ }], propDecorators: { connectedIntervalPicker: [{
137
+ type: ViewChild,
138
+ args: ['connectedIntervalPicker']
139
+ }], connectedIntervalInput: [{
140
+ type: Input
141
+ }], disabled: [{
142
+ type: Input
143
+ }] } });
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItaW50ZXJ2YWwtcGlja2VyLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL2ludGVydmFsLXBpY2tlci10b2dnbGUvZWxkZXItaW50ZXJ2YWwtcGlja2VyLXRvZ2dsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUdwRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQTtBQUM5RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQTtBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQTtBQUMzRyxPQUFPLEVBQ0wsMkJBQTJCLEdBRTVCLE1BQU0sMkRBQTJELENBQUE7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUE7O0FBaURqRixNQUFNLE9BQU8sa0NBQWtDO0lBL0MvQztRQXdEbUIsUUFBRyxH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b3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIGlucHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsLCBNYXRTdWZmaXggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJ1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBUZW1wb3JhbCB9IGZyb20gJ0Bqcy10ZW1wb3JhbC9wb2x5ZmlsbCdcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3RpbWUvaW50ZXJ2YWwnXG5pbXBvcnQgeyBFbGRlck92ZXJsYXlPcmlnaW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9vdmVybGF5cy9lbGRlci1vdmVybGF5LW9yaWdpbi5kaXJlY3RpdmUnXG5pbXBvcnQgeyBFbGRlck92ZXJsYXlUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vb3ZlcmxheXMvZWxkZXItb3ZlcmxheS10cmlnZ2VyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEVsZGVyT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL292ZXJsYXlzL2VsZGVyLW92ZXJsYXkuY29tcG9uZW50J1xuaW1wb3J0IHsgRWxkZXJEaWFsb2dQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3BhbmVscy9lbGRlci1kaWFsb2ctcGFuZWwvZWxkZXItZGlhbG9nLXBhbmVsLmNvbXBvbmVudCdcbmltcG9ydCB7XG4gIEVsZGVySW50ZXJ2YWxJbnB1dENvbXBvbmVudCxcbiAgSW50ZXJ2YWxJbnB1dE1vZGUsXG59IGZyb20gJy4uLy4uL2VsZGVyLWludGVydmFsLWlucHV0L2VsZGVyLWludGVydmFsLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9lbGRlci1pbnRlcnZhbC1waWNrZXIuY29tcG9uZW50J1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1pbnRlcnZhbC1waWNrZXItdG9nZ2xlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnQsXG4gICAgRWxkZXJJbnRlcnZhbElucHV0Q29tcG9uZW50LFxuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRMYWJlbCxcbiAgICBFbGRlck92ZXJsYXlDb21wb25lbnQsXG4gICAgRWxkZXJEaWFsb2dQYW5lbENvbXBvbmVudCxcbiAgICBNYXRJY29uLFxuICAgIE1hdEljb25CdXR0b24sXG4gICAgTWF0U3VmZml4LFxuICAgIEVsZGVyT3ZlcmxheVRyaWdnZXJEaXJlY3RpdmUsXG4gICAgRWxkZXJPdmVybGF5T3JpZ2luRGlyZWN0aXZlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZy1yaWdodDogOHB4XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBbZWxkZXJPdmVybGF5T3JpZ2luXT1cImRhdGVJbnRlcnZhbE92ZXJsYXlcIlxuICAgICAgICBbZWxkZXJPdmVybGF5VHJpZ2dlcl09XCJkYXRlSW50ZXJ2YWxPdmVybGF5XCJcbiAgICAgICAgY2xhc3M9XCJlbGRlci1jb250cm9sLWljb24tYnV0dG9uIG1hdC1kYXRlcGlja2VyLXRvZ2dsZVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5kYXRlX3JhbmdlPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvc3Bhbj5cblxuICAgIDxlbGRlci1vdmVybGF5ICNkYXRlSW50ZXJ2YWxPdmVybGF5PlxuICAgICAgPGVsZGVyLWRpYWxvZy1wYW5lbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBiLW1kIHB0LXhzXCI+XG4gICAgICAgICAgPGVsZGVyLWludGVydmFsLXBpY2tlclxuICAgICAgICAgICAgI2Nvbm5lY3RlZEludGVydmFsUGlja2VyXG4gICAgICAgICAgICBbaW50ZXJ2YWxJbnB1dE1vZGVdPVwiaW50ZXJ2YWxJbnB1dE1vZGUoKVwiXG4gICAgICAgICAgICAoaW50ZXJ2YWxDaGFuZ2UpPVwiaGFuZGxlSW50ZXJ2YWxQaWNrZXJEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2V4dGVybmFsSW50ZXJ2YWxdPVwiZXh0ZXJuYWxJbnRlcnZhbCgpXCJcbiAgICAgICAgICAgIFtzaG93QW5jaG9yXT1cInNob3dBbmNob3IoKVwiXG4gICAgICAgICAgICBbYW5jaG9yUmVhZE9ubHldPVwiYW5jaG9yUmVhZE9ubHkoKVwiXG4gICAgICAgICAgICBbZXh0ZXJuYWxBbmNob3JEYXRlVGltZV09XCJleHRlcm5hbEFuY2hvckRhdGVUaW1lKClcIlxuICAgICAgICAgICAgW2VtaXRUeXBlXT1cImVtaXRUeXBlKClcIlxuICAgICAgICAgID48L2VsZGVyLWludGVydmFsLXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2VsZGVyLWRpYWxvZy1wYW5lbD5cbiAgICA8L2VsZGVyLW92ZXJsYXk+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFbGRlckludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50IHtcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQFZpZXdDaGlsZCgnY29ubmVjdGVkSW50ZXJ2YWxQaWNrZXInKSBjb25uZWN0ZWRJbnRlcnZhbFBpY2tlciE6IEVsZGVySW50ZXJ2YWxQaWNrZXJDb21wb25lbnRcblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcblxuICBASW5wdXQoKVxuICBjb25uZWN0ZWRJbnRlcnZhbElucHV0OiBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQgPSBudWxsXG5cbiAgcHVibGljIHJlYWRvbmx5IGludGVydmFsSW5wdXRNb2RlID0gc2lnbmFsPEludGVydmFsSW5wdXRNb2RlPignZGF0ZS10aW1lLXJhbmdlJylcbiAgcHVibGljIHJlYWRvbmx5IGVtaXRUeXBlID0gc2lnbmFsPCdpc28nIHwgJ2ludGVydmFsJz4oJ2ludGVydmFsJylcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVybmFsSW50ZXJ2YWwgPSBzaWduYWw8SW50ZXJ2YWwgfCBudWxsPihudWxsKVxuXG4gIHNob3dBbmNob3IgPSBpbnB1dDxib29sZWFuPihmYWxzZSlcbiAgYW5jaG9yUmVhZE9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSlcbiAgZXh0ZXJuYWxBbmNob3JEYXRlVGltZSA9IGlucHV0PFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUgfCBudWxsPihudWxsKVxuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkID0gYm9vbGVhbkF0dHJpYnV0ZShmYWxzZSlcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogTGlmZSBDeWNsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKCdFbGRlckludGVydmFsUGlja2VyVG9nZ2xlQ29tcG9uZW50OiBjb25uZWN0ZWRJbnRlcnZhbElucHV0IGlzIHJlcXVpcmVkLicpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmludGVydmFsSW5wdXRNb2RlLnNldCh0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQubW9kZSlcbiAgICB0aGlzLmVtaXRUeXBlLnNldCh0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQudmFsdWVBc0lzb1N0ciA/ICdpc28nIDogJ2ludGVydmFsJylcblxuICAgIHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZUNoYW5nZS5zdWJzY3JpYmUoKGludGVydmFsOiBJbnRlcnZhbCB8IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5leHRlcm5hbEludGVydmFsLnNldChpbnRlcnZhbCBhcyBJbnRlcnZhbClcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZSkge1xuICAgICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJ2YWwgcGlja2VyXG4gICAgICB0aGlzLmV4dGVybmFsSW50ZXJ2YWwuc2V0KHRoaXMuY29ubmVjdGVkSW50ZXJ2YWxJbnB1dC52YWx1ZSBhcyBJbnRlcnZhbClcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc2V0Q29ubmVjdGVkSW50ZXJ2YWxJbnB1dChpbnRlcnZhbElucHV0OiBFbGRlckludGVydmFsSW5wdXRDb21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQgPSBpbnRlcnZhbElucHV0XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW50ZXJ2YWxQaWNrZXJEYXRlQ2hhbmdlKGludGVydmFsOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3RlZEludGVydmFsSW5wdXQudmFsdWUgPSBpbnRlcnZhbFxuICB9XG59XG4iXX0=
@@ -0,0 +1,93 @@
1
+ import { LoggerFactory } from '@elderbyte/ts-logger';
2
+ import { BehaviorSubject, Subject } from 'rxjs';
3
+ import AnchorState from '../model/anchor-state';
4
+ import IntervalState from '../model/interval-state';
5
+ import IntervalPickerUtil from '../util/interval-picker-util';
6
+ export default class IntervalPickerStateManager {
7
+ /***************************************************************************
8
+ * *
9
+ * Constructor *
10
+ * *
11
+ **************************************************************************/
12
+ constructor() {
13
+ /***************************************************************************
14
+ * *
15
+ * Fields *
16
+ * *
17
+ **************************************************************************/
18
+ this.log = LoggerFactory.getLogger(this.constructor.name);
19
+ this._anchor = new BehaviorSubject(AnchorState.empty());
20
+ this._interval = new BehaviorSubject(null);
21
+ this._smartShift = new BehaviorSubject(null);
22
+ this._intervalChange = new Subject();
23
+ this.isInitialized = false;
24
+ }
25
+ /***************************************************************************
26
+ * *
27
+ * Properties *
28
+ * *
29
+ **************************************************************************/
30
+ get interval$() {
31
+ return this._interval.asObservable();
32
+ }
33
+ get anchor$() {
34
+ return this._anchor.asObservable();
35
+ }
36
+ get smartShift$() {
37
+ return this._smartShift.asObservable();
38
+ }
39
+ get intervalValue() {
40
+ return this._interval.getValue();
41
+ }
42
+ get anchorValue() {
43
+ return this._anchor.getValue();
44
+ }
45
+ get smartShiftValue() {
46
+ return this._smartShift.getValue();
47
+ }
48
+ get intervalChange() {
49
+ return this._intervalChange.asObservable();
50
+ }
51
+ /***************************************************************************
52
+ * *
53
+ * Public API *
54
+ * *
55
+ **************************************************************************/
56
+ setAnchor(anchor) {
57
+ this._anchor.next(anchor);
58
+ }
59
+ setExternalAnchor(TemporalDateTime) {
60
+ if (!TemporalDateTime) {
61
+ this.setAnchor(AnchorState.empty());
62
+ return;
63
+ }
64
+ this.setAnchor(AnchorState.createFromDateTime(TemporalDateTime));
65
+ }
66
+ setExternalInterval(interval) {
67
+ if (!interval) {
68
+ this.setInterval(new IntervalState(null, null));
69
+ return;
70
+ }
71
+ if (!interval) {
72
+ this.setInterval(new IntervalState(null, null));
73
+ return;
74
+ }
75
+ this.setInterval(interval);
76
+ }
77
+ setSmartShift(smartShift) {
78
+ this._smartShift.next(smartShift);
79
+ }
80
+ setInterval(interval) {
81
+ if (!this.isInitialized && !interval) {
82
+ return;
83
+ }
84
+ if (this._interval.getValue() &&
85
+ IntervalPickerUtil.isIntervalEquals(this._interval.getValue(), interval)) {
86
+ return;
87
+ }
88
+ const newInterval = interval ? IntervalPickerUtil.setMillisecondsToZero(interval) : null;
89
+ this._interval.next(newInterval);
90
+ this._intervalChange.next(newInterval);
91
+ }
92
+ }
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtcGlja2VyLXN0YXRlLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL21hbmFnZXIvaW50ZXJ2YWwtcGlja2VyLXN0YXRlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzNELE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sYUFBYSxNQUFNLHlCQUF5QixDQUFBO0FBRW5ELE9BQU8sa0JBQWtCLE1BQU0sOEJBQThCLENBQUE7QUFFN0QsTUFBTSxDQUFDLE9BQU8sT0FBTywwQkFBMEI7SUFlN0M7Ozs7Z0ZBSTRFO0lBRTVFO1FBcEJBOzs7O29GQUk0RTtRQUUzRCxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXBELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBYyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUMvRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFBO1FBQ3BELGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQWtCLElBQUksQ0FBQyxDQUFBO1FBQ3hELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUE7UUFDeEQsa0JBQWEsR0FBRyxLQUFLLENBQUE7SUFRYixDQUFDO0lBRWhCOzs7O2dGQUk0RTtJQUU1RSxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQ3hDLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFBO0lBQzVDLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsU0FBUyxDQUFDLE1BQW1CO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxnQkFBd0M7UUFDL0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtZQUNuQyxPQUFNO1FBQ1IsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRU0sbUJBQW1CLENBQUMsUUFBdUI7UUFDaEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUMvQyxPQUFNO1FBQ1IsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDL0MsT0FBTTtRQUNSLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFTSxhQUFhLENBQUMsVUFBMkI7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUF1QjtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLE9BQU07UUFDUixDQUFDO1FBRUQsSUFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUN6QixrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUN4RSxDQUFDO1lBQ0QsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFFeEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDeEMsQ0FBQztDQU9GIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgVGVtcG9yYWwgfSBmcm9tICdAanMtdGVtcG9yYWwvcG9seWZpbGwnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IEFuY2hvclN0YXRlIGZyb20gJy4uL21vZGVsL2FuY2hvci1zdGF0ZSdcbmltcG9ydCBJbnRlcnZhbFN0YXRlIGZyb20gJy4uL21vZGVsL2ludGVydmFsLXN0YXRlJ1xuaW1wb3J0IFNtYXJ0U2hpZnRTdGF0ZSBmcm9tICcuLi9tb2RlbC9zbWFydC1zaGlmdC1zdGF0ZSdcbmltcG9ydCBJbnRlcnZhbFBpY2tlclV0aWwgZnJvbSAnLi4vdXRpbC9pbnRlcnZhbC1waWNrZXItdXRpbCdcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWxQaWNrZXJTdGF0ZU1hbmFnZXIge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hbmNob3IgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFuY2hvclN0YXRlPihBbmNob3JTdGF0ZS5lbXB0eSgpKVxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRlcnZhbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW50ZXJ2YWxTdGF0ZT4obnVsbClcbiAgcHJpdmF0ZSByZWFkb25seSBfc21hcnRTaGlmdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U21hcnRTaGlmdFN0YXRlPihudWxsKVxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnRlcnZhbENoYW5nZSA9IG5ldyBTdWJqZWN0PEludGVydmFsU3RhdGU+KClcbiAgcHVibGljIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IGludGVydmFsJCgpOiBPYnNlcnZhYmxlPEludGVydmFsU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5faW50ZXJ2YWwuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYW5jaG9yJCgpOiBPYnNlcnZhYmxlPEFuY2hvclN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FuY2hvci5hc09ic2VydmFibGUoKVxuICB9XG5cbiAgcHVibGljIGdldCBzbWFydFNoaWZ0JCgpOiBPYnNlcnZhYmxlPFNtYXJ0U2hpZnRTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9zbWFydFNoaWZ0LmFzT2JzZXJ2YWJsZSgpXG4gIH1cblxuICBwdWJsaWMgZ2V0IGludGVydmFsVmFsdWUoKTogSW50ZXJ2YWxTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVydmFsLmdldFZhbHVlKClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYW5jaG9yVmFsdWUoKTogQW5jaG9yU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9hbmNob3IuZ2V0VmFsdWUoKVxuICB9XG5cbiAgcHVibGljIGdldCBzbWFydFNoaWZ0VmFsdWUoKTogU21hcnRTaGlmdFN0YXRlIHtcbiAgICByZXR1cm4gdGhpcy5fc21hcnRTaGlmdC5nZXRWYWx1ZSgpXG4gIH1cblxuICBwdWJsaWMgZ2V0IGludGVydmFsQ2hhbmdlKCk6IE9ic2VydmFibGU8SW50ZXJ2YWxTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcnZhbENoYW5nZS5hc09ic2VydmFibGUoKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHNldEFuY2hvcihhbmNob3I6IEFuY2hvclN0YXRlKSB7XG4gICAgdGhpcy5fYW5jaG9yLm5leHQoYW5jaG9yKVxuICB9XG5cbiAgcHVibGljIHNldEV4dGVybmFsQW5jaG9yKFRlbXBvcmFsRGF0ZVRpbWU6IFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUpIHtcbiAgICBpZiAoIVRlbXBvcmFsRGF0ZVRpbWUpIHtcbiAgICAgIHRoaXMuc2V0QW5jaG9yKEFuY2hvclN0YXRlLmVtcHR5KCkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5zZXRBbmNob3IoQW5jaG9yU3RhdGUuY3JlYXRlRnJvbURhdGVUaW1lKFRlbXBvcmFsRGF0ZVRpbWUpKVxuICB9XG5cbiAgcHVibGljIHNldEV4dGVybmFsSW50ZXJ2YWwoaW50ZXJ2YWw6IEludGVydmFsU3RhdGUpIHtcbiAgICBpZiAoIWludGVydmFsKSB7XG4gICAgICB0aGlzLnNldEludGVydmFsKG5ldyBJbnRlcnZhbFN0YXRlKG51bGwsIG51bGwpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghaW50ZXJ2YWwpIHtcbiAgICAgIHRoaXMuc2V0SW50ZXJ2YWwobmV3IEludGVydmFsU3RhdGUobnVsbCwgbnVsbCkpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdGhpcy5zZXRJbnRlcnZhbChpbnRlcnZhbClcbiAgfVxuXG4gIHB1YmxpYyBzZXRTbWFydFNoaWZ0KHNtYXJ0U2hpZnQ6IFNtYXJ0U2hpZnRTdGF0ZSkge1xuICAgIHRoaXMuX3NtYXJ0U2hpZnQubmV4dChzbWFydFNoaWZ0KVxuICB9XG5cbiAgcHVibGljIHNldEludGVydmFsKGludGVydmFsOiBJbnRlcnZhbFN0YXRlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQgJiYgIWludGVydmFsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9pbnRlcnZhbC5nZXRWYWx1ZSgpICYmXG4gICAgICBJbnRlcnZhbFBpY2tlclV0aWwuaXNJbnRlcnZhbEVxdWFscyh0aGlzLl9pbnRlcnZhbC5nZXRWYWx1ZSgpLCBpbnRlcnZhbClcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG5ld0ludGVydmFsID0gaW50ZXJ2YWwgPyBJbnRlcnZhbFBpY2tlclV0aWwuc2V0TWlsbGlzZWNvbmRzVG9aZXJvKGludGVydmFsKSA6IG51bGxcblxuICAgIHRoaXMuX2ludGVydmFsLm5leHQobmV3SW50ZXJ2YWwpXG4gICAgdGhpcy5faW50ZXJ2YWxDaGFuZ2UubmV4dChuZXdJbnRlcnZhbClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xufVxuIl19
@@ -0,0 +1,54 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ import { TemporalUtil } from '../../../../common/time/temporal-util';
3
+ import IntervalPickerUtil from '../util/interval-picker-util';
4
+ export default class AnchorState {
5
+ constructor(fixedDate, fixedTime = Temporal.PlainTime.from('00:00'), referenceDateTime = IntervalPickerUtil.roundUpToSeconds(Temporal.Now.plainDateTimeISO())) {
6
+ this.fixedDate = fixedDate;
7
+ this.fixedTime = fixedTime;
8
+ this.referenceDateTime = referenceDateTime;
9
+ }
10
+ static createFromDateTime(dateTime) {
11
+ return new AnchorState(dateTime.toPlainDate(), dateTime.toPlainTime());
12
+ }
13
+ static createFromJsDate(date) {
14
+ const dateTime = TemporalUtil.getPlainDateTimeFromJSDate(date);
15
+ return new AnchorState(dateTime.toPlainDate(), dateTime.toPlainTime());
16
+ }
17
+ static empty() {
18
+ return new AnchorState(null);
19
+ }
20
+ withDate(date) {
21
+ return new AnchorState(date, this.fixedTime);
22
+ }
23
+ withTime(time) {
24
+ return new AnchorState(this.fixedDate, time);
25
+ }
26
+ withTimeMidnight() {
27
+ return new AnchorState(this.fixedDate, Temporal.PlainTime.from('00:00'));
28
+ }
29
+ withReferenceDateTimeNow() {
30
+ return new AnchorState(this.fixedDate, this.fixedTime, IntervalPickerUtil.roundUpToSeconds(Temporal.Now.plainDateTimeISO()));
31
+ }
32
+ get fixedDateTime() {
33
+ if (!this.fixedDate) {
34
+ return null;
35
+ }
36
+ return IntervalPickerUtil.createTemporalDateTime(this.fixedDate, this.fixedTime);
37
+ }
38
+ get isFixed() {
39
+ return this.fixedDate !== null;
40
+ }
41
+ get date() {
42
+ return this.fixedDate || this.referenceDateTime.toPlainDate();
43
+ }
44
+ get time() {
45
+ return this.fixedTime || this.referenceDateTime.toPlainTime();
46
+ }
47
+ get dateTime() {
48
+ return this.fixedDateTime || this.referenceDateTime;
49
+ }
50
+ get isTimeMidnight() {
51
+ return this.fixedTime.hour === 0 && this.fixedTime.minute === 0 && this.fixedTime.second === 0;
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLXBpY2tlci9tb2RlbC9hbmNob3Itc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQTtBQUNwRSxPQUFPLGtCQUFrQixNQUFNLDhCQUE4QixDQUFBO0FBRTdELE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBVztJQUM5QixZQUNrQixTQUE2QixFQUM3QixZQUFnQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFDaEUsb0JBQTRDLGtCQUFrQixDQUFDLGdCQUFnQixDQUM3RixRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQ2hDO1FBSmUsY0FBUyxHQUFULFNBQVMsQ0FBb0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBdUQ7UUFDaEUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUVoQztJQUNBLENBQUM7SUFFRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsUUFBZ0M7UUFDL0QsT0FBTyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDeEUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFVO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM5RCxPQUFPLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUs7UUFDakIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRU0sUUFBUSxDQUFDLElBQXdCO1FBQ3RDLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRU0sUUFBUSxDQUFDLElBQXdCO1FBQ3RDLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQzFFLENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsT0FBTyxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsU0FBUyxFQUNkLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUNyRSxDQUFBO0lBQ0gsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELE9BQU8sa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDbEYsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQy9ELENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQy9ELENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUE7SUFDaEcsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcG9yYWwgfSBmcm9tICdAanMtdGVtcG9yYWwvcG9seWZpbGwnXG5pbXBvcnQgeyBUZW1wb3JhbFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdGltZS90ZW1wb3JhbC11dGlsJ1xuaW1wb3J0IEludGVydmFsUGlja2VyVXRpbCBmcm9tICcuLi91dGlsL2ludGVydmFsLXBpY2tlci11dGlsJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBbmNob3JTdGF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBmaXhlZERhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZml4ZWRUaW1lOiBUZW1wb3JhbC5QbGFpblRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVmZXJlbmNlRGF0ZVRpbWU6IFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUgPSBJbnRlcnZhbFBpY2tlclV0aWwucm91bmRVcFRvU2Vjb25kcyhcbiAgICAgIFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVUaW1lSVNPKClcbiAgICApXG4gICkge31cblxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21EYXRlVGltZShkYXRlVGltZTogVGVtcG9yYWwuUGxhaW5EYXRlVGltZSk6IEFuY2hvclN0YXRlIHtcbiAgICByZXR1cm4gbmV3IEFuY2hvclN0YXRlKGRhdGVUaW1lLnRvUGxhaW5EYXRlKCksIGRhdGVUaW1lLnRvUGxhaW5UaW1lKCkpXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21Kc0RhdGUoZGF0ZTogRGF0ZSk6IEFuY2hvclN0YXRlIHtcbiAgICBjb25zdCBkYXRlVGltZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVUaW1lRnJvbUpTRGF0ZShkYXRlKVxuICAgIHJldHVybiBuZXcgQW5jaG9yU3RhdGUoZGF0ZVRpbWUudG9QbGFpbkRhdGUoKSwgZGF0ZVRpbWUudG9QbGFpblRpbWUoKSlcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHkoKTogQW5jaG9yU3RhdGUge1xuICAgIHJldHVybiBuZXcgQW5jaG9yU3RhdGUobnVsbClcbiAgfVxuXG4gIHB1YmxpYyB3aXRoRGF0ZShkYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUpOiBBbmNob3JTdGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBBbmNob3JTdGF0ZShkYXRlLCB0aGlzLmZpeGVkVGltZSlcbiAgfVxuXG4gIHB1YmxpYyB3aXRoVGltZSh0aW1lOiBUZW1wb3JhbC5QbGFpblRpbWUpOiBBbmNob3JTdGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBBbmNob3JTdGF0ZSh0aGlzLmZpeGVkRGF0ZSwgdGltZSlcbiAgfVxuXG4gIHB1YmxpYyB3aXRoVGltZU1pZG5pZ2h0KCk6IEFuY2hvclN0YXRlIHtcbiAgICByZXR1cm4gbmV3IEFuY2hvclN0YXRlKHRoaXMuZml4ZWREYXRlLCBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcbiAgfVxuXG4gIHB1YmxpYyB3aXRoUmVmZXJlbmNlRGF0ZVRpbWVOb3coKTogQW5jaG9yU3RhdGUge1xuICAgIHJldHVybiBuZXcgQW5jaG9yU3RhdGUoXG4gICAgICB0aGlzLmZpeGVkRGF0ZSxcbiAgICAgIHRoaXMuZml4ZWRUaW1lLFxuICAgICAgSW50ZXJ2YWxQaWNrZXJVdGlsLnJvdW5kVXBUb1NlY29uZHMoVGVtcG9yYWwuTm93LnBsYWluRGF0ZVRpbWVJU08oKSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpeGVkRGF0ZVRpbWUoKTogVGVtcG9yYWwuUGxhaW5EYXRlVGltZSB7XG4gICAgaWYgKCF0aGlzLmZpeGVkRGF0ZSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIEludGVydmFsUGlja2VyVXRpbC5jcmVhdGVUZW1wb3JhbERhdGVUaW1lKHRoaXMuZml4ZWREYXRlLCB0aGlzLmZpeGVkVGltZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNGaXhlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maXhlZERhdGUgIT09IG51bGxcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0ZSgpOiBUZW1wb3JhbC5QbGFpbkRhdGUge1xuICAgIHJldHVybiB0aGlzLmZpeGVkRGF0ZSB8fCB0aGlzLnJlZmVyZW5jZURhdGVUaW1lLnRvUGxhaW5EYXRlKClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGltZSgpOiBUZW1wb3JhbC5QbGFpblRpbWUge1xuICAgIHJldHVybiB0aGlzLmZpeGVkVGltZSB8fCB0aGlzLnJlZmVyZW5jZURhdGVUaW1lLnRvUGxhaW5UaW1lKClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0ZVRpbWUoKTogVGVtcG9yYWwuUGxhaW5EYXRlVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuZml4ZWREYXRlVGltZSB8fCB0aGlzLnJlZmVyZW5jZURhdGVUaW1lXG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVGltZU1pZG5pZ2h0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpeGVkVGltZS5ob3VyID09PSAwICYmIHRoaXMuZml4ZWRUaW1lLm1pbnV0ZSA9PT0gMCAmJiB0aGlzLmZpeGVkVGltZS5zZWNvbmQgPT09IDBcbiAgfVxufVxuIl19
@@ -0,0 +1,37 @@
1
+ import { Temporal } from '@js-temporal/polyfill';
2
+ import IntervalPickerUtil from '../util/interval-picker-util';
3
+ export default class IntervalState {
4
+ constructor(startDate, endDate, startTime, endTime) {
5
+ this.startDate = startDate;
6
+ this.endDate = endDate;
7
+ this.startTime = startTime;
8
+ this.endTime = endTime;
9
+ this.startTime = this.startTime || Temporal.PlainTime.from('00:00');
10
+ this.endTime = this.endTime || Temporal.PlainTime.from('00:00');
11
+ }
12
+ static createFromDateTimes(startDateTime, endDateTime) {
13
+ return new IntervalState(startDateTime.toPlainDate(), endDateTime.toPlainDate(), startDateTime.toPlainTime(), endDateTime.toPlainTime());
14
+ }
15
+ get startDateTime() {
16
+ return IntervalPickerUtil.createTemporalDateTime(this.startDate, this.startTime);
17
+ }
18
+ get endDateTime() {
19
+ return IntervalPickerUtil.createTemporalDateTime(this.endDate, this.endTime);
20
+ }
21
+ withStartDate(newStartDate) {
22
+ return new IntervalState(newStartDate, this.endDate, this.startTime, this.endTime);
23
+ }
24
+ withEndDate(newEndDate) {
25
+ return new IntervalState(this.startDate, newEndDate, this.startTime, this.endTime);
26
+ }
27
+ withStartTime(newStartTime) {
28
+ return new IntervalState(this.startDate, this.endDate, newStartTime, this.endTime);
29
+ }
30
+ withEndTime(newEndTime) {
31
+ return new IntervalState(this.startDate, this.endDate, this.startTime, newEndTime);
32
+ }
33
+ withTime(newStartTime, newEndTime) {
34
+ return new IntervalState(this.startDate, this.endDate, newStartTime, newEndTime);
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL21vZGVsL2ludGVydmFsLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNoRCxPQUFPLGtCQUFrQixNQUFNLDhCQUE4QixDQUFBO0FBRTdELE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYTtJQUNoQyxZQUNrQixTQUE2QixFQUM3QixPQUEyQixFQUMzQixTQUE4QixFQUM5QixPQUE0QjtRQUg1QixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQUM5QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUU1QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbkUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsbUJBQW1CLENBQ3hCLGFBQXFDLEVBQ3JDLFdBQW1DO1FBRW5DLE9BQU8sSUFBSSxhQUFhLENBQ3RCLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFDM0IsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUN6QixhQUFhLENBQUMsV0FBVyxFQUFFLEVBQzNCLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FDMUIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNsRixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVNLGFBQWEsQ0FBQyxZQUFnQztRQUNuRCxPQUFPLElBQUksYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BGLENBQUM7SUFFTSxXQUFXLENBQUMsVUFBOEI7UUFDL0MsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRixDQUFDO0lBRU0sYUFBYSxDQUFDLFlBQWdDO1FBQ25ELE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEYsQ0FBQztJQUVNLFdBQVcsQ0FBQyxVQUE4QjtRQUMvQyxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQ3BGLENBQUM7SUFFTSxRQUFRLENBQUMsWUFBZ0MsRUFBRSxVQUE4QjtRQUM5RSxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDbEYsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcG9yYWwgfSBmcm9tICdAanMtdGVtcG9yYWwvcG9seWZpbGwnXG5pbXBvcnQgSW50ZXJ2YWxQaWNrZXJVdGlsIGZyb20gJy4uL3V0aWwvaW50ZXJ2YWwtcGlja2VyLXV0aWwnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVydmFsU3RhdGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhcnREYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUsXG4gICAgcHVibGljIHJlYWRvbmx5IGVuZERhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhcnRUaW1lPzogVGVtcG9yYWwuUGxhaW5UaW1lLFxuICAgIHB1YmxpYyByZWFkb25seSBlbmRUaW1lPzogVGVtcG9yYWwuUGxhaW5UaW1lXG4gICkge1xuICAgIHRoaXMuc3RhcnRUaW1lID0gdGhpcy5zdGFydFRpbWUgfHwgVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAwOjAwJylcbiAgICB0aGlzLmVuZFRpbWUgPSB0aGlzLmVuZFRpbWUgfHwgVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAwOjAwJylcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVGcm9tRGF0ZVRpbWVzKFxuICAgIHN0YXJ0RGF0ZVRpbWU6IFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUsXG4gICAgZW5kRGF0ZVRpbWU6IFRlbXBvcmFsLlBsYWluRGF0ZVRpbWVcbiAgKTogSW50ZXJ2YWxTdGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBJbnRlcnZhbFN0YXRlKFxuICAgICAgc3RhcnREYXRlVGltZS50b1BsYWluRGF0ZSgpLFxuICAgICAgZW5kRGF0ZVRpbWUudG9QbGFpbkRhdGUoKSxcbiAgICAgIHN0YXJ0RGF0ZVRpbWUudG9QbGFpblRpbWUoKSxcbiAgICAgIGVuZERhdGVUaW1lLnRvUGxhaW5UaW1lKClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXJ0RGF0ZVRpbWUoKTogVGVtcG9yYWwuUGxhaW5EYXRlVGltZSB7XG4gICAgcmV0dXJuIEludGVydmFsUGlja2VyVXRpbC5jcmVhdGVUZW1wb3JhbERhdGVUaW1lKHRoaXMuc3RhcnREYXRlLCB0aGlzLnN0YXJ0VGltZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW5kRGF0ZVRpbWUoKTogVGVtcG9yYWwuUGxhaW5EYXRlVGltZSB7XG4gICAgcmV0dXJuIEludGVydmFsUGlja2VyVXRpbC5jcmVhdGVUZW1wb3JhbERhdGVUaW1lKHRoaXMuZW5kRGF0ZSwgdGhpcy5lbmRUaW1lKVxuICB9XG5cbiAgcHVibGljIHdpdGhTdGFydERhdGUobmV3U3RhcnREYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUpOiBJbnRlcnZhbFN0YXRlIHtcbiAgICByZXR1cm4gbmV3IEludGVydmFsU3RhdGUobmV3U3RhcnREYXRlLCB0aGlzLmVuZERhdGUsIHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpXG4gIH1cblxuICBwdWJsaWMgd2l0aEVuZERhdGUobmV3RW5kRGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogSW50ZXJ2YWxTdGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBJbnRlcnZhbFN0YXRlKHRoaXMuc3RhcnREYXRlLCBuZXdFbmREYXRlLCB0aGlzLnN0YXJ0VGltZSwgdGhpcy5lbmRUaW1lKVxuICB9XG5cbiAgcHVibGljIHdpdGhTdGFydFRpbWUobmV3U3RhcnRUaW1lOiBUZW1wb3JhbC5QbGFpblRpbWUpOiBJbnRlcnZhbFN0YXRlIHtcbiAgICByZXR1cm4gbmV3IEludGVydmFsU3RhdGUodGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSwgbmV3U3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpXG4gIH1cblxuICBwdWJsaWMgd2l0aEVuZFRpbWUobmV3RW5kVGltZTogVGVtcG9yYWwuUGxhaW5UaW1lKTogSW50ZXJ2YWxTdGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBJbnRlcnZhbFN0YXRlKHRoaXMuc3RhcnREYXRlLCB0aGlzLmVuZERhdGUsIHRoaXMuc3RhcnRUaW1lLCBuZXdFbmRUaW1lKVxuICB9XG5cbiAgcHVibGljIHdpdGhUaW1lKG5ld1N0YXJ0VGltZTogVGVtcG9yYWwuUGxhaW5UaW1lLCBuZXdFbmRUaW1lOiBUZW1wb3JhbC5QbGFpblRpbWUpOiBJbnRlcnZhbFN0YXRlIHtcbiAgICByZXR1cm4gbmV3IEludGVydmFsU3RhdGUodGhpcy5zdGFydERhdGUsIHRoaXMuZW5kRGF0ZSwgbmV3U3RhcnRUaW1lLCBuZXdFbmRUaW1lKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ export default class SmartShiftState {
2
+ constructor(duration, mode) {
3
+ this.duration = duration;
4
+ this.mode = mode;
5
+ }
6
+ static empty() {
7
+ return new SmartShiftState(null, null);
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2hpZnQtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL21vZGVsL3NtYXJ0LXNoaWZ0LXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxPQUFPLE9BQU8sZUFBZTtJQUNsQyxZQUNTLFFBQTJCLEVBQzNCLElBQW9CO1FBRHBCLGFBQVEsR0FBUixRQUFRLENBQW1CO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQWdCO0lBQzFCLENBQUM7SUFFRyxNQUFNLENBQUMsS0FBSztRQUNqQixPQUFPLElBQUksZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wb3JhbCB9IGZyb20gJ0Bqcy10ZW1wb3JhbC9wb2x5ZmlsbCdcblxuZXhwb3J0IHR5cGUgU21hcnRTaGlmdE1vZGUgPSAnZGF5cycgfCAnd2Vla3MnIHwgJ21vbnRocycgfCAncXVhcnRlcnMnIHwgJ3llYXJzJyB8ICd0aW1lJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbWFydFNoaWZ0U3RhdGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZHVyYXRpb246IFRlbXBvcmFsLkR1cmF0aW9uLFxuICAgIHB1YmxpYyBtb2RlOiBTbWFydFNoaWZ0TW9kZVxuICApIHt9XG5cbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBTbWFydFNoaWZ0U3RhdGUge1xuICAgIHJldHVybiBuZXcgU21hcnRTaGlmdFN0YXRlKG51bGwsIG51bGwpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,96 @@
1
+ import { computed } from '@angular/core';
2
+ import { toSignal } from '@angular/core/rxjs-interop';
3
+ import { DateRange } from '@angular/material/datepicker';
4
+ import { TemporalUtil } from '../../../../common/time/temporal-util';
5
+ import IntervalPickerUtil from '../util/interval-picker-util';
6
+ export default class IntervalPickerPresenter {
7
+ constructor(interval$, anchor$, smartShift$) {
8
+ this.startDateHtmlString = computed(() => {
9
+ return TemporalUtil.getHtmlDateString(this.intervalState()?.startDate);
10
+ });
11
+ this.endDateHtmlString = computed(() => {
12
+ return TemporalUtil.getHtmlDateString(this.intervalState()?.endDate);
13
+ });
14
+ this.anchorDateHtmlString = computed(() => {
15
+ return TemporalUtil.getHtmlDateString(this.anchorState()?.fixedDate);
16
+ });
17
+ this.startTimeHtmlString = computed(() => {
18
+ return TemporalUtil.getHtmlTimeStringFromPlainTime(this.intervalState()?.startTime);
19
+ });
20
+ this.endTimeHtmlString = computed(() => {
21
+ return TemporalUtil.getHtmlTimeStringFromPlainTime(this.intervalState()?.endTime);
22
+ });
23
+ this.anchorTimeHtmlString = computed(() => {
24
+ return TemporalUtil.getHtmlTimeStringFromPlainTime(this.anchorState()?.fixedTime);
25
+ });
26
+ this.isValidIntervalSet = computed(() => {
27
+ return IntervalPickerUtil.isIntervalWithStartAndEnd(this.intervalState());
28
+ });
29
+ this.deltaHumanReadable = computed(() => {
30
+ return IntervalPickerUtil.getDeltaHumanReadable(this.intervalState());
31
+ });
32
+ this.smartShiftMessage = computed(() => {
33
+ try {
34
+ return IntervalPickerUtil.getSmartShiftMessage(this.smartShiftState().mode, this.intervalState());
35
+ }
36
+ catch (e) {
37
+ return '-';
38
+ }
39
+ });
40
+ this.startDateTimeAsJSDate = computed(() => {
41
+ if (!this.intervalState()?.startDateTime) {
42
+ return null;
43
+ }
44
+ return TemporalUtil.getJSDateFromPlainDateTime(this.intervalState()?.startDateTime);
45
+ });
46
+ this.endDateTimeAsJSDate = computed(() => {
47
+ if (!this.intervalState()?.endDateTime) {
48
+ return null;
49
+ }
50
+ return TemporalUtil.getJSDateFromPlainDateTime(this.intervalState()?.endDateTime);
51
+ });
52
+ this.dateRangeForCalendar = computed(() => {
53
+ const start = this.startDateTimeAsJSDate();
54
+ const end = this.endDateTimeAsJSDate();
55
+ return new DateRange(start, end);
56
+ });
57
+ this.isStartTimeSetAndNotMidnight = computed(() => {
58
+ return IntervalPickerUtil.isTimeSetAndNotMidnight(this.intervalState()?.startTime);
59
+ });
60
+ this.isEndTimeSetAndNotMidnight = computed(() => {
61
+ return IntervalPickerUtil.isTimeSetAndNotMidnight(this.intervalState()?.endTime);
62
+ });
63
+ this.isFixedAnchorDateSet = computed(() => {
64
+ return this.anchorState().isFixed;
65
+ });
66
+ this.isAnchorTimeMidnight = computed(() => {
67
+ return this.anchorState().isTimeMidnight;
68
+ });
69
+ this.isAnchorMenuDisabled = computed(() => {
70
+ return !this.startDateHtmlString() && !this.endDateHtmlString() && !this.anchorState().isFixed;
71
+ });
72
+ this.calendarAnchorDateCssClassFn = (cellDate, view) => {
73
+ const calendarAnchorDateCssClassFnBody = (cellDate, view) => {
74
+ const anchorDate = this.anchorState()?.fixedDate;
75
+ if (!anchorDate) {
76
+ return '';
77
+ }
78
+ const date = TemporalUtil.getJSDateFromPlainDateTime(anchorDate);
79
+ if (!date) {
80
+ return '';
81
+ }
82
+ if (cellDate.getDate() === date.getDate() &&
83
+ cellDate.getMonth() === date.getMonth() &&
84
+ cellDate.getFullYear() === date.getFullYear()) {
85
+ return 'elder-custom-anchor-date';
86
+ }
87
+ return '';
88
+ };
89
+ return calendarAnchorDateCssClassFnBody(cellDate, view);
90
+ };
91
+ this.intervalState = toSignal(interval$);
92
+ this.anchorState = toSignal(anchor$);
93
+ this.smartShiftState = toSignal(smartShift$);
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtcGlja2VyLXByZXNlbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvcHJlc2VudGVyL2ludGVydmFsLXBpY2tlci1wcmVzZW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBZ0MsTUFBTSw4QkFBOEIsQ0FBQTtBQUV0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFJcEUsT0FBTyxrQkFBa0IsTUFBTSw4QkFBOEIsQ0FBQTtBQUU3RCxNQUFNLENBQUMsT0FBTyxPQUFPLHVCQUF1QjtJQUsxQyxZQUNFLFNBQW9DLEVBQ3BDLE9BQWdDLEVBQ2hDLFdBQXdDO1FBTzFCLHdCQUFtQixHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUU7WUFDMUQsT0FBTyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ3hFLENBQUMsQ0FBQyxDQUFBO1FBRWMsc0JBQWlCLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRTtZQUN4RCxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDdEUsQ0FBQyxDQUFDLENBQUE7UUFFYyx5QkFBb0IsR0FBRyxRQUFRLENBQVMsR0FBRyxFQUFFO1lBQzNELE9BQU8sWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtR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LENBQUM7b0JBQ0QsT0FBTywwQkFBMEIsQ0FBQTtnQkFDbkMsQ0FBQztnQkFFRCxPQUFPLEVBQUUsQ0FBQTtZQUNYLENBQUMsQ0FBQTtZQUVELE9BQU8sZ0NBQWdDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3pELENBQUMsQ0FBQTtRQXZIQyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0NBcUhGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJ1xuaW1wb3J0IHsgRGF0ZVJhbmdlLCBNYXRDYWxlbmRhckNlbGxDbGFzc0Z1bmN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcidcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgVGVtcG9yYWxVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3RpbWUvdGVtcG9yYWwtdXRpbCdcbmltcG9ydCBBbmNob3JTdGF0ZSBmcm9tICcuLi9tb2RlbC9hbmNob3Itc3RhdGUnXG5pbXBvcnQgSW50ZXJ2YWxTdGF0ZSBmcm9tICcuLi9tb2RlbC9pbnRlcnZhbC1zdGF0ZSdcbmltcG9ydCBTbWFydFNoaWZ0U3RhdGUgZnJvbSAnLi4vbW9kZWwvc21hcnQtc2hpZnQtc3RhdGUnXG5pbXBvcnQgSW50ZXJ2YWxQaWNrZXJVdGlsIGZyb20gJy4uL3V0aWwvaW50ZXJ2YWwtcGlja2VyLXV0aWwnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVydmFsUGlja2VyUHJlc2VudGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcnZhbFN0YXRlOiBTaWduYWw8SW50ZXJ2YWxTdGF0ZT5cbiAgcHJpdmF0ZSByZWFkb25seSBhbmNob3JTdGF0ZTogU2lnbmFsPEFuY2hvclN0YXRlPlxuICBwcml2YXRlIHJlYWRvbmx5IHNtYXJ0U2hpZnRTdGF0ZTogU2lnbmFsPFNtYXJ0U2hpZnRTdGF0ZT5cblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbnRlcnZhbCQ6IE9ic2VydmFibGU8SW50ZXJ2YWxTdGF0ZT4sXG4gICAgYW5jaG9yJDogT2JzZXJ2YWJsZTxBbmNob3JTdGF0ZT4sXG4gICAgc21hcnRTaGlmdCQ6IE9ic2VydmFibGU8U21hcnRTaGlmdFN0YXRlPlxuICApIHtcbiAgICB0aGlzLmludGVydmFsU3RhdGUgPSB0b1NpZ25hbChpbnRlcnZhbCQpXG4gICAgdGhpcy5hbmNob3JTdGF0ZSA9IHRvU2lnbmFsKGFuY2hvciQpXG4gICAgdGhpcy5zbWFydFNoaWZ0U3RhdGUgPSB0b1NpZ25hbChzbWFydFNoaWZ0JClcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBzdGFydERhdGVIdG1sU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sRGF0ZVN0cmluZyh0aGlzLmludGVydmFsU3RhdGUoKT8uc3RhcnREYXRlKVxuICB9KVxuXG4gIHB1YmxpYyByZWFkb25seSBlbmREYXRlSHRtbFN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SHRtbERhdGVTdHJpbmcodGhpcy5pbnRlcnZhbFN0YXRlKCk/LmVuZERhdGUpXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGFuY2hvckRhdGVIdG1sU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sRGF0ZVN0cmluZyh0aGlzLmFuY2hvclN0YXRlKCk/LmZpeGVkRGF0ZSlcbiAgfSlcblxuICBwdWJsaWMgcmVhZG9ubHkgc3RhcnRUaW1lSHRtbFN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SHRtbFRpbWVTdHJpbmdGcm9tUGxhaW5UaW1lKHRoaXMuaW50ZXJ2YWxTdGF0ZSgpPy5zdGFydFRpbWUpXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZFRpbWVIdG1sU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sVGltZVN0cmluZ0Zyb21QbGFpblRpbWUodGhpcy5pbnRlcnZhbFN0YXRlKCk/LmVuZFRpbWUpXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGFuY2hvclRpbWVIdG1sU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sVGltZVN0cmluZ0Zyb21QbGFpblRpbWUodGhpcy5hbmNob3JTdGF0ZSgpPy5maXhlZFRpbWUpXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGlzVmFsaWRJbnRlcnZhbFNldCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gSW50ZXJ2YWxQaWNrZXJVdGlsLmlzSW50ZXJ2YWxXaXRoU3RhcnRBbmRFbmQodGhpcy5pbnRlcnZhbFN0YXRlKCkpXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGRlbHRhSHVtYW5SZWFkYWJsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHJldHVybiBJbnRlcnZhbFBpY2tlclV0aWwuZ2V0RGVsdGFIdW1hblJlYWRhYmxlKHRoaXMuaW50ZXJ2YWxTdGF0ZSgpKVxuICB9KVxuXG4gIHB1YmxpYyByZWFkb25seSBzbWFydFNoaWZ0TWVzc2FnZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSW50ZXJ2YWxQaWNrZXJVdGlsLmdldFNtYXJ0U2hpZnRNZXNzYWdlKFxuICAgICAgICB0aGlzLnNtYXJ0U2hpZnRTdGF0ZSgpLm1vZGUsXG4gICAgICAgIHRoaXMuaW50ZXJ2YWxTdGF0ZSgpXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICctJ1xuICAgIH1cbiAgfSlcblxuICBwdWJsaWMgcmVhZG9ubHkgc3RhcnREYXRlVGltZUFzSlNEYXRlID0gY29tcHV0ZWQ8RGF0ZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuaW50ZXJ2YWxTdGF0ZSgpPy5zdGFydERhdGVUaW1lKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUodGhpcy5pbnRlcnZhbFN0YXRlKCk/LnN0YXJ0RGF0ZVRpbWUpXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGVuZERhdGVUaW1lQXNKU0RhdGUgPSBjb21wdXRlZDxEYXRlIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5pbnRlcnZhbFN0YXRlKCk/LmVuZERhdGVUaW1lKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUodGhpcy5pbnRlcnZhbFN0YXRlKCk/LmVuZERhdGVUaW1lKVxuICB9KVxuXG4gIHB1YmxpYyByZWFkb25seSBkYXRlUmFuZ2VGb3JDYWxlbmRhciA9IGNvbXB1dGVkPERhdGVSYW5nZTxEYXRlPj4oKCkgPT4ge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5zdGFydERhdGVUaW1lQXNKU0RhdGUoKVxuICAgIGNvbnN0IGVuZCA9IHRoaXMuZW5kRGF0ZVRpbWVBc0pTRGF0ZSgpXG4gICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2U8RGF0ZT4oc3RhcnQsIGVuZClcbiAgfSlcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNTdGFydFRpbWVTZXRBbmROb3RNaWRuaWdodCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gSW50ZXJ2YWxQaWNrZXJVdGlsLmlzVGltZVNldEFuZE5vdE1pZG5pZ2h0KHRoaXMuaW50ZXJ2YWxTdGF0ZSgpPy5zdGFydFRpbWUpXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRW5kVGltZVNldEFuZE5vdE1pZG5pZ2h0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiBJbnRlcnZhbFBpY2tlclV0aWwuaXNUaW1lU2V0QW5kTm90TWlkbmlnaHQodGhpcy5pbnRlcnZhbFN0YXRlKCk/LmVuZFRpbWUpXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRml4ZWRBbmNob3JEYXRlU2V0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmFuY2hvclN0YXRlKCkuaXNGaXhlZFxuICB9KVxuXG4gIHB1YmxpYyByZWFkb25seSBpc0FuY2hvclRpbWVNaWRuaWdodCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5hbmNob3JTdGF0ZSgpLmlzVGltZU1pZG5pZ2h0XG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQW5jaG9yTWVudURpc2FibGVkID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiAhdGhpcy5zdGFydERhdGVIdG1sU3RyaW5nKCkgJiYgIXRoaXMuZW5kRGF0ZUh0bWxTdHJpbmcoKSAmJiAhdGhpcy5hbmNob3JTdGF0ZSgpLmlzRml4ZWRcbiAgfSlcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FsZW5kYXJBbmNob3JEYXRlQ3NzQ2xhc3NGbjogTWF0Q2FsZW5kYXJDZWxsQ2xhc3NGdW5jdGlvbjxEYXRlPiA9IChcbiAgICBjZWxsRGF0ZTogRGF0ZSxcbiAgICB2aWV3OiBzdHJpbmdcbiAgKTogc3RyaW5nID0+IHtcbiAgICBjb25zdCBjYWxlbmRhckFuY2hvckRhdGVDc3NDbGFzc0ZuQm9keSA9IChjZWxsRGF0ZTogRGF0ZSwgdmlldzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IGFuY2hvckRhdGUgPSB0aGlzLmFuY2hvclN0YXRlKCk/LmZpeGVkRGF0ZVxuXG4gICAgICBpZiAoIWFuY2hvckRhdGUpIHtcbiAgICAgICAgcmV0dXJuICcnXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUoYW5jaG9yRGF0ZSlcblxuICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNlbGxEYXRlLmdldERhdGUoKSA9PT0gZGF0ZS5nZXREYXRlKCkgJiZcbiAgICAgICAgY2VsbERhdGUuZ2V0TW9udGgoKSA9PT0gZGF0ZS5nZXRNb250aCgpICYmXG4gICAgICAgIGNlbGxEYXRlLmdldEZ1bGxZZWFyKCkgPT09IGRhdGUuZ2V0RnVsbFllYXIoKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAnZWxkZXItY3VzdG9tLWFuY2hvci1kYXRlJ1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gJydcbiAgICB9XG5cbiAgICByZXR1cm4gY2FsZW5kYXJBbmNob3JEYXRlQ3NzQ2xhc3NGbkJvZHkoY2VsbERhdGUsIHZpZXcpXG4gIH1cbn1cbiJdfQ==