@alauda/ui 8.0.1-beta.2 → 8.0.1-beta.21
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/anchor/anchor.directive.d.ts +2 -2
- package/button/button.types.d.ts +3 -0
- package/date-picker/calendar/panel/picker-panel.d.ts +1 -1
- package/date-picker/calendar/range-picker-panel/component.d.ts +1 -1
- package/dialog/dialog-container.component.d.ts +7 -0
- package/dialog/dialog-ref.d.ts +2 -4
- package/dialog/dialog.service.d.ts +3 -5
- package/fesm2022/alauda-ui.mjs +1091 -737
- package/fesm2022/alauda-ui.mjs.map +1 -1
- package/form/common-form.d.ts +5 -1
- package/input/autosize.directive.d.ts +4 -1
- package/internal/types/index.d.ts +3 -0
- package/message/message.config.d.ts +20 -0
- package/notification/notification.component.d.ts +4 -0
- package/package.json +2 -9
- package/paginator/paginator-intl.d.ts +9 -0
- package/radio/base-radio.d.ts +1 -1
- package/select/base-select.d.ts +3 -0
- package/select/validators.d.ts +1 -1
- package/sort/sort-errors.d.ts +4 -0
- package/table/table-cell-def.directive.d.ts +4 -0
- package/table/table-cell.directive.d.ts +1 -0
- package/table/table-column-def.directive.d.ts +4 -0
- package/table/table-header-cell-def.directive.d.ts +4 -0
- package/table/table-header-cell.directive.d.ts +1 -0
- package/table/table-header-row-def.directive.d.ts +4 -0
- package/table/table-header-row.component.d.ts +1 -0
- package/table/table-row-def.directive.d.ts +5 -0
- package/table/table-row.component.d.ts +1 -0
- package/table/table-scroll.directive.d.ts +1 -1
- package/tabs/tab-body.component.d.ts +16 -0
- package/tabs/tab-context.service.d.ts +3 -0
- package/tabs/tab-group.component.d.ts +28 -0
- package/tabs/tab-header-active-indicator.component.d.ts +9 -0
- package/tabs/tab-header.component.d.ts +79 -0
- package/tabs/tab.component.d.ts +18 -0
- package/tabs/tabs.types.d.ts +3 -0
- package/theme/style.css +10 -9
- package/tooltip/tooltip-intl.d.ts +3 -0
- package/tsconfig.lib.tsbuildinfo +1 -1
- package/esm2022/accordion/accordion-item/accordion-item.component.mjs +0 -73
- package/esm2022/accordion/accordion.component.mjs +0 -27
- package/esm2022/accordion/accordion.module.mjs +0 -54
- package/esm2022/accordion/index.mjs +0 -4
- package/esm2022/alauda-ui.mjs +0 -2
- package/esm2022/anchor/anchor.component.mjs +0 -137
- package/esm2022/anchor/anchor.directive.mjs +0 -184
- package/esm2022/anchor/anchor.module.mjs +0 -42
- package/esm2022/anchor/index.mjs +0 -6
- package/esm2022/anchor/types.mjs +0 -2
- package/esm2022/anchor/utils.mjs +0 -26
- package/esm2022/autocomplete/autocomplete-placeholder.component.mjs +0 -18
- package/esm2022/autocomplete/autocomplete.component.mjs +0 -52
- package/esm2022/autocomplete/autocomplete.directive.mjs +0 -282
- package/esm2022/autocomplete/autocomplete.module.mjs +0 -69
- package/esm2022/autocomplete/autocomplete.types.mjs +0 -2
- package/esm2022/autocomplete/helper-directives.mjs +0 -18
- package/esm2022/autocomplete/index.mjs +0 -9
- package/esm2022/autocomplete/suggestion/suggestion.component.mjs +0 -74
- package/esm2022/autocomplete/suggestion-group/suggestion-group.component.mjs +0 -23
- package/esm2022/back-top/back-top.component.mjs +0 -84
- package/esm2022/back-top/back-top.module.mjs +0 -19
- package/esm2022/back-top/index.mjs +0 -3
- package/esm2022/breadcrumb/breadcrumb-item.component.mjs +0 -32
- package/esm2022/breadcrumb/breadcrumb.component.mjs +0 -57
- package/esm2022/breadcrumb/breadcrumb.module.mjs +0 -32
- package/esm2022/breadcrumb/index.mjs +0 -4
- package/esm2022/button/button-group/button-group.component.mjs +0 -11
- package/esm2022/button/button.component.mjs +0 -121
- package/esm2022/button/button.module.mjs +0 -19
- package/esm2022/button/button.types.mjs +0 -11
- package/esm2022/button/index.mjs +0 -5
- package/esm2022/card/card.component.mjs +0 -16
- package/esm2022/card/card.module.mjs +0 -48
- package/esm2022/card/helper-directives.mjs +0 -45
- package/esm2022/card/index.mjs +0 -5
- package/esm2022/card/section.component.mjs +0 -11
- package/esm2022/checkbox/checkbox-group/checkbox-group.component.mjs +0 -61
- package/esm2022/checkbox/checkbox.component.mjs +0 -112
- package/esm2022/checkbox/checkbox.module.mjs +0 -32
- package/esm2022/checkbox/index.mjs +0 -4
- package/esm2022/color-picker/color-picker.component.mjs +0 -28
- package/esm2022/color-picker/color-picker.module.mjs +0 -18
- package/esm2022/color-picker/index.mjs +0 -3
- package/esm2022/core/animation/animation-consts.mjs +0 -12
- package/esm2022/date-picker/calendar/constant.mjs +0 -31
- package/esm2022/date-picker/calendar/date-picker-panel/component.mjs +0 -173
- package/esm2022/date-picker/calendar/footer/component.mjs +0 -29
- package/esm2022/date-picker/calendar/header/component.mjs +0 -136
- package/esm2022/date-picker/calendar/panel/picker-panel.mjs +0 -154
- package/esm2022/date-picker/calendar/range-picker-panel/component.mjs +0 -218
- package/esm2022/date-picker/calendar/util.mjs +0 -145
- package/esm2022/date-picker/date-picker/date-picker.component.mjs +0 -100
- package/esm2022/date-picker/date-picker.module.mjs +0 -85
- package/esm2022/date-picker/date-picker.type.mjs +0 -12
- package/esm2022/date-picker/index.mjs +0 -12
- package/esm2022/date-picker/range-picker/range-picker.component.mjs +0 -90
- package/esm2022/date-picker/trigger/trigger.component.mjs +0 -122
- package/esm2022/dialog/confirm-dialog/confirm-dialog-config.mjs +0 -12
- package/esm2022/dialog/confirm-dialog/confirm-dialog.component.mjs +0 -95
- package/esm2022/dialog/dialog-animations.mjs +0 -57
- package/esm2022/dialog/dialog-config.mjs +0 -15
- package/esm2022/dialog/dialog-content/dialog-close.directive.mjs +0 -39
- package/esm2022/dialog/dialog-content/dialog-content.component.mjs +0 -19
- package/esm2022/dialog/dialog-content/dialog-footer.component.mjs +0 -15
- package/esm2022/dialog/dialog-content/dialog-header.component.mjs +0 -39
- package/esm2022/dialog/dialog-ref.mjs +0 -48
- package/esm2022/dialog/dialog.component.mjs +0 -154
- package/esm2022/dialog/dialog.module.mjs +0 -72
- package/esm2022/dialog/dialog.service.mjs +0 -120
- package/esm2022/dialog/dialog.types.mjs +0 -17
- package/esm2022/dialog/index.mjs +0 -12
- package/esm2022/dialog/utils/errors.mjs +0 -4
- package/esm2022/dialog/utils/index.mjs +0 -11
- package/esm2022/drawer/component/drawer.component.mjs +0 -88
- package/esm2022/drawer/component/internal/internal.component.mjs +0 -184
- package/esm2022/drawer/drawer-ref.mjs +0 -28
- package/esm2022/drawer/drawer.module.mjs +0 -41
- package/esm2022/drawer/drawer.service.mjs +0 -114
- package/esm2022/drawer/helper-directives.mjs +0 -36
- package/esm2022/drawer/index.mjs +0 -7
- package/esm2022/drawer/types.mjs +0 -6
- package/esm2022/dropdown/dropdown-active.directive.mjs +0 -22
- package/esm2022/dropdown/dropdown-button/dropdown-button.component.mjs +0 -47
- package/esm2022/dropdown/dropdown.directive.mjs +0 -53
- package/esm2022/dropdown/dropdown.module.mjs +0 -80
- package/esm2022/dropdown/dropdown.types.mjs +0 -8
- package/esm2022/dropdown/helper-directives.mjs +0 -18
- package/esm2022/dropdown/index.mjs +0 -11
- package/esm2022/dropdown/menu/menu.component.mjs +0 -19
- package/esm2022/dropdown/menu-group/menu-group.component.mjs +0 -11
- package/esm2022/dropdown/menu-item/menu-item.component.mjs +0 -37
- package/esm2022/dropdown/submenu/submenu.component.mjs +0 -45
- package/esm2022/form/common-form.mjs +0 -87
- package/esm2022/form/form-item/form-item.component.mjs +0 -108
- package/esm2022/form/form.directive.mjs +0 -70
- package/esm2022/form/form.module.mjs +0 -58
- package/esm2022/form/form.types.mjs +0 -11
- package/esm2022/form/helper-directives.mjs +0 -77
- package/esm2022/form/index.mjs +0 -7
- package/esm2022/i18n/i18n.module.mjs +0 -16
- package/esm2022/i18n/i18n.pipe.mjs +0 -22
- package/esm2022/i18n/i18n.service.mjs +0 -40
- package/esm2022/i18n/i18n.type.mjs +0 -6
- package/esm2022/i18n/index.mjs +0 -7
- package/esm2022/i18n/language/en.mjs +0 -25
- package/esm2022/i18n/language/zh.mjs +0 -25
- package/esm2022/icon/icon-register.service.mjs +0 -63
- package/esm2022/icon/icon.component.mjs +0 -65
- package/esm2022/icon/icon.module.mjs +0 -18
- package/esm2022/icon/icons.mjs +0 -2
- package/esm2022/icon/index.mjs +0 -4
- package/esm2022/icon/utils.mjs +0 -7
- package/esm2022/index.mjs +0 -39
- package/esm2022/inline-alert/helper-directives.mjs +0 -15
- package/esm2022/inline-alert/index.mjs +0 -5
- package/esm2022/inline-alert/inline-alert.component.mjs +0 -57
- package/esm2022/inline-alert/inline-alert.module.mjs +0 -32
- package/esm2022/inline-alert/inline-alert.types.mjs +0 -9
- package/esm2022/input/autosize.directive.mjs +0 -55
- package/esm2022/input/helper-directives.mjs +0 -47
- package/esm2022/input/index.mjs +0 -9
- package/esm2022/input/input-group/input-group.component.mjs +0 -46
- package/esm2022/input/input.component.mjs +0 -57
- package/esm2022/input/input.module.mjs +0 -85
- package/esm2022/input/number-input/number-input.component.mjs +0 -130
- package/esm2022/input/search/search.component.mjs +0 -89
- package/esm2022/input/tags-input/tags-input.component.mjs +0 -255
- package/esm2022/input/tags-input/with-max-row-count.mjs +0 -50
- package/esm2022/input/utils/index.mjs +0 -67
- package/esm2022/internal/types/index.mjs +0 -8
- package/esm2022/internal/utils/animations.mjs +0 -2
- package/esm2022/internal/utils/async.mjs +0 -6
- package/esm2022/internal/utils/bem.mjs +0 -43
- package/esm2022/internal/utils/coercion.mjs +0 -5
- package/esm2022/internal/utils/fn.mjs +0 -16
- package/esm2022/internal/utils/index.mjs +0 -10
- package/esm2022/internal/utils/observe-dom.mjs +0 -23
- package/esm2022/internal/utils/operators.mjs +0 -15
- package/esm2022/internal/utils/scroll-into-view.mjs +0 -17
- package/esm2022/internal/utils/styles-renderer.mjs +0 -40
- package/esm2022/internal/utils/watch-content-exist.mjs +0 -6
- package/esm2022/message/base-message.mjs +0 -90
- package/esm2022/message/index.mjs +0 -4
- package/esm2022/message/message-animations.mjs +0 -32
- package/esm2022/message/message-wrapper.component.mjs +0 -14
- package/esm2022/message/message.component.mjs +0 -70
- package/esm2022/message/message.config.mjs +0 -16
- package/esm2022/message/message.module.mjs +0 -31
- package/esm2022/message/message.service.mjs +0 -29
- package/esm2022/notification/index.mjs +0 -5
- package/esm2022/notification/notification-wrapper.component.mjs +0 -16
- package/esm2022/notification/notification.component.mjs +0 -103
- package/esm2022/notification/notification.config.mjs +0 -7
- package/esm2022/notification/notification.module.mjs +0 -36
- package/esm2022/notification/notification.service.mjs +0 -29
- package/esm2022/paginator/index.mjs +0 -4
- package/esm2022/paginator/paginator-intl.mjs +0 -21
- package/esm2022/paginator/paginator.component.mjs +0 -134
- package/esm2022/paginator/paginator.module.mjs +0 -37
- package/esm2022/radio/base-radio.mjs +0 -67
- package/esm2022/radio/index.mjs +0 -6
- package/esm2022/radio/radio-button/radio-button.component.mjs +0 -41
- package/esm2022/radio/radio-group/radio-group.component.mjs +0 -68
- package/esm2022/radio/radio.component.mjs +0 -23
- package/esm2022/radio/radio.module.mjs +0 -36
- package/esm2022/radio/radio.types.mjs +0 -6
- package/esm2022/scrolling/fixed-size-table-virtual-scroll-strategy.mjs +0 -81
- package/esm2022/scrolling/fixed-size-table-virtual-scroll.directive.mjs +0 -120
- package/esm2022/scrolling/fixed-size-virtual-scroll.directive.mjs +0 -28
- package/esm2022/scrolling/index.mjs +0 -7
- package/esm2022/scrolling/scrolling.module.mjs +0 -30
- package/esm2022/scrolling/virtual-for-of.directive.mjs +0 -35
- package/esm2022/scrolling/virtual-scroll-viewport.component.mjs +0 -26
- package/esm2022/select/base-select.mjs +0 -327
- package/esm2022/select/helper-directives.mjs +0 -67
- package/esm2022/select/index.mjs +0 -10
- package/esm2022/select/multi-select/multi-select.component.mjs +0 -313
- package/esm2022/select/option/option.component.mjs +0 -113
- package/esm2022/select/option-group/option-group.component.mjs +0 -23
- package/esm2022/select/option-placeholder.component.mjs +0 -18
- package/esm2022/select/select.component.mjs +0 -116
- package/esm2022/select/select.module.mjs +0 -87
- package/esm2022/select/select.types.mjs +0 -7
- package/esm2022/select/validators.mjs +0 -79
- package/esm2022/shared/click-outside.directive.mjs +0 -29
- package/esm2022/shared/shared.module.mjs +0 -16
- package/esm2022/sort/index.mjs +0 -6
- package/esm2022/sort/sort-errors.mjs +0 -13
- package/esm2022/sort/sort-header.component.mjs +0 -68
- package/esm2022/sort/sort.directive.mjs +0 -75
- package/esm2022/sort/sort.module.mjs +0 -19
- package/esm2022/sort/sort.types.mjs +0 -2
- package/esm2022/status-bar/index.mjs +0 -4
- package/esm2022/status-bar/status-bar.component.mjs +0 -29
- package/esm2022/status-bar/status-bar.module.mjs +0 -18
- package/esm2022/status-bar/status-bar.types.mjs +0 -13
- package/esm2022/steps/index.mjs +0 -4
- package/esm2022/steps/steps.component.mjs +0 -173
- package/esm2022/steps/steps.module.mjs +0 -18
- package/esm2022/steps/types.mjs +0 -7
- package/esm2022/switch/index.mjs +0 -3
- package/esm2022/switch/switch.component.mjs +0 -46
- package/esm2022/switch/switch.module.mjs +0 -17
- package/esm2022/table/index.mjs +0 -16
- package/esm2022/table/table-cell-def.directive.mjs +0 -26
- package/esm2022/table/table-cell.component.mjs +0 -125
- package/esm2022/table/table-cell.directive.mjs +0 -29
- package/esm2022/table/table-column-def.directive.mjs +0 -32
- package/esm2022/table/table-column-resizable.directive.mjs +0 -150
- package/esm2022/table/table-header-cell-def.directive.mjs +0 -26
- package/esm2022/table/table-header-cell.directive.mjs +0 -25
- package/esm2022/table/table-header-row-def.directive.mjs +0 -42
- package/esm2022/table/table-header-row.component.mjs +0 -26
- package/esm2022/table/table-placeholder.directive.mjs +0 -32
- package/esm2022/table/table-row-def.directive.mjs +0 -38
- package/esm2022/table/table-row.component.mjs +0 -44
- package/esm2022/table/table-scroll.directive.mjs +0 -131
- package/esm2022/table/table.component.mjs +0 -83
- package/esm2022/table/table.module.mjs +0 -82
- package/esm2022/table-of-contents/index.mjs +0 -5
- package/esm2022/table-of-contents/table-of-contents.module.mjs +0 -32
- package/esm2022/table-of-contents/toc-container.directive.mjs +0 -110
- package/esm2022/table-of-contents/toc-content.directive.mjs +0 -36
- package/esm2022/table-of-contents/toc-link.directive.mjs +0 -45
- package/esm2022/tabs/index.mjs +0 -9
- package/esm2022/tabs/tab-body.component.mjs +0 -148
- package/esm2022/tabs/tab-context.service.mjs +0 -28
- package/esm2022/tabs/tab-group.component.mjs +0 -258
- package/esm2022/tabs/tab-header-active-indicator.component.mjs +0 -39
- package/esm2022/tabs/tab-header.component.mjs +0 -264
- package/esm2022/tabs/tab.component.mjs +0 -65
- package/esm2022/tabs/tabs.module.mjs +0 -97
- package/esm2022/tabs/tabs.types.mjs +0 -10
- package/esm2022/tag/check-tag/check-tag.component.mjs +0 -33
- package/esm2022/tag/index.mjs +0 -5
- package/esm2022/tag/tag.component.mjs +0 -65
- package/esm2022/tag/tag.module.mjs +0 -19
- package/esm2022/tag/tag.types.mjs +0 -8
- package/esm2022/theme/index.mjs +0 -6
- package/esm2022/theme/theme.module.mjs +0 -27
- package/esm2022/theme/theme.pipe.mjs +0 -85
- package/esm2022/theme/theme.service.mjs +0 -56
- package/esm2022/theme/theme.types.mjs +0 -2
- package/esm2022/theme/utils.mjs +0 -10
- package/esm2022/time-picker/component.mjs +0 -190
- package/esm2022/time-picker/constant.mjs +0 -5
- package/esm2022/time-picker/index.mjs +0 -6
- package/esm2022/time-picker/panel/panel.component.mjs +0 -236
- package/esm2022/time-picker/time-picker.module.mjs +0 -64
- package/esm2022/time-picker/time-picker.type.mjs +0 -13
- package/esm2022/tooltip/animations.mjs +0 -57
- package/esm2022/tooltip/base-tooltip.mjs +0 -325
- package/esm2022/tooltip/index.mjs +0 -9
- package/esm2022/tooltip/tooltip-active.directive.mjs +0 -50
- package/esm2022/tooltip/tooltip-copy.directive.mjs +0 -79
- package/esm2022/tooltip/tooltip-intl.mjs +0 -18
- package/esm2022/tooltip/tooltip.component.mjs +0 -75
- package/esm2022/tooltip/tooltip.directive.mjs +0 -48
- package/esm2022/tooltip/tooltip.module.mjs +0 -39
- package/esm2022/tooltip/tooltip.types.mjs +0 -19
- package/esm2022/tooltip/utils/index.mjs +0 -58
- package/esm2022/tree-select/index.mjs +0 -5
- package/esm2022/tree-select/tree-node-placeholder.component.mjs +0 -18
- package/esm2022/tree-select/tree-select.component.mjs +0 -324
- package/esm2022/tree-select/tree-select.module.mjs +0 -44
- package/esm2022/tree-select/tree-select.types.mjs +0 -2
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import { NgIf, NgTemplateOutlet, DatePipe } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
3
|
-
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
4
|
-
import dayjs from 'dayjs';
|
|
5
|
-
import { CommonFormControl } from '../../../form/common-form';
|
|
6
|
-
import { I18nPipe } from '../../../i18n/i18n.pipe';
|
|
7
|
-
import { buildBem } from '../../../internal/utils';
|
|
8
|
-
import { TimePickerComponent } from '../../../time-picker/component';
|
|
9
|
-
import { DateNavRange, Side } from '../../date-picker.type';
|
|
10
|
-
import { DatePickerType, MONTH, YEAR } from '../constant';
|
|
11
|
-
import { CalendarFooterComponent } from '../footer/component';
|
|
12
|
-
import { CalendarHeaderComponent } from '../header/component';
|
|
13
|
-
import { PickerPanelComponent } from '../panel/picker-panel';
|
|
14
|
-
import { composeDisabledDateFn, getTimePickerModel, getTypeByNavRange, maxDate, minDate, nextNavRangeType, sortDates, updateDate, updateDateByTimeModel, } from '../util';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "@angular/forms";
|
|
17
|
-
const bem = buildBem('aui-date-range-picker-panel');
|
|
18
|
-
export class DateRangePickerPanelComponent extends CommonFormControl {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(...arguments);
|
|
21
|
-
this.clearable = true;
|
|
22
|
-
this.showTime = true;
|
|
23
|
-
this.showFooter = true;
|
|
24
|
-
this.disabledDate = () => false;
|
|
25
|
-
this.disabledTime = {
|
|
26
|
-
left: () => null,
|
|
27
|
-
right: () => null,
|
|
28
|
-
};
|
|
29
|
-
this.weekStartDay = 0;
|
|
30
|
-
this.clear = new EventEmitter();
|
|
31
|
-
this.confirm = new EventEmitter();
|
|
32
|
-
this.bem = bem;
|
|
33
|
-
this.Side = Side;
|
|
34
|
-
this.DatePickerType = DatePickerType;
|
|
35
|
-
this.leftDateRange = DateNavRange.Month;
|
|
36
|
-
this.rightDateRange = DateNavRange.Month;
|
|
37
|
-
this.FOOTER_DATE_FORMAT = 'YYYY-MM-dd';
|
|
38
|
-
this.leftAnchor = dayjs();
|
|
39
|
-
this.rightAnchor = dayjs().add(1, MONTH);
|
|
40
|
-
this.rangeValue = [];
|
|
41
|
-
this.leftDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Left);
|
|
42
|
-
this.rightDisabledTimeFn = this.getDisabledTimeCachedFn(Side.Right);
|
|
43
|
-
}
|
|
44
|
-
get maxHeaderAvail() {
|
|
45
|
-
return minDate(this.rightAnchor, this.maxDate);
|
|
46
|
-
}
|
|
47
|
-
get minHeaderAvail() {
|
|
48
|
-
return maxDate(this.minDate, this.leftAnchor);
|
|
49
|
-
}
|
|
50
|
-
writeValue(obj) {
|
|
51
|
-
super.writeValue(obj);
|
|
52
|
-
this.rangeValue = obj || [];
|
|
53
|
-
this.matchValues = [...this.rangeValue];
|
|
54
|
-
this.startTime = getTimePickerModel(obj?.[0]);
|
|
55
|
-
this.endTime = getTimePickerModel(obj?.[1]);
|
|
56
|
-
if (obj?.length === 2) {
|
|
57
|
-
this.reorder(sortDates(obj));
|
|
58
|
-
}
|
|
59
|
-
this.cdr.markForCheck();
|
|
60
|
-
}
|
|
61
|
-
calendarRangeChange(type, side) {
|
|
62
|
-
if (side === Side.Left) {
|
|
63
|
-
this.leftDateRange = type;
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
this.rightDateRange = type;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
getDateDisabledFn(side, constrainValue) {
|
|
70
|
-
return composeDisabledDateFn((date, navRange) => {
|
|
71
|
-
if (navRange === DateNavRange.Month) {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
if (navRange === DateNavRange.Decade) {
|
|
75
|
-
return date[side === Side.Left ? 'isAfter' : 'isBefore'](constrainValue, YEAR);
|
|
76
|
-
}
|
|
77
|
-
return !date[side === Side.Left ? 'isBefore' : 'isAfter'](constrainValue, MONTH);
|
|
78
|
-
}, (...arg) => this.disabledDate(...arg, this.rangeValue[0]));
|
|
79
|
-
}
|
|
80
|
-
getDisabledTimeCachedFn(side) {
|
|
81
|
-
let cacheSelectedDate;
|
|
82
|
-
let cacheDisabledTimeFn;
|
|
83
|
-
return (value, key) => {
|
|
84
|
-
if (value !== cacheSelectedDate) {
|
|
85
|
-
cacheDisabledTimeFn = (this.disabledTime?.[side] || (() => null))(value);
|
|
86
|
-
cacheSelectedDate = value;
|
|
87
|
-
}
|
|
88
|
-
return cacheDisabledTimeFn?.[key];
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
selectPickerPanel(value, side) {
|
|
92
|
-
const navRange = side === Side.Left ? this.leftDateRange : this.rightDateRange;
|
|
93
|
-
const type = getTypeByNavRange(navRange);
|
|
94
|
-
const dateValue = updateDate(side === Side.Left ? this.leftAnchor : this.rightAnchor, value, type);
|
|
95
|
-
const nextRange = nextNavRangeType(navRange, DateNavRange.Month);
|
|
96
|
-
if (side === Side.Left) {
|
|
97
|
-
this.leftAnchor = dateValue;
|
|
98
|
-
this.leftDateRange = nextRange;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
this.rightAnchor = dateValue;
|
|
102
|
-
this.rightDateRange = nextRange;
|
|
103
|
-
}
|
|
104
|
-
if (navRange !== DateNavRange.Month) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (this.leftAnchor.isSame(this.rightAnchor, MONTH)) {
|
|
108
|
-
this.rightAnchor = this.rightAnchor.add(1, MONTH);
|
|
109
|
-
}
|
|
110
|
-
this.rangeValue =
|
|
111
|
-
this.rangeValue.length === 2
|
|
112
|
-
? [dateValue]
|
|
113
|
-
: sortDates([...this.rangeValue, dateValue]);
|
|
114
|
-
this.matchValues = [...this.rangeValue];
|
|
115
|
-
this.syncTime();
|
|
116
|
-
if (this.rangeValue.length === 2) {
|
|
117
|
-
this.reorder(this.rangeValue);
|
|
118
|
-
this.confirmValue(this.rangeValue, !this.showTime);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
reorder(sortedDate) {
|
|
122
|
-
if (!sortedDate[0].isSame(sortedDate[1], MONTH)) {
|
|
123
|
-
this.leftAnchor = updateDate(this.leftAnchor, sortedDate[0], DatePickerType.Day);
|
|
124
|
-
this.rightAnchor = updateDate(this.leftAnchor, sortedDate[1], DatePickerType.Day);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
hoverItem(date) {
|
|
128
|
-
if (this.rangeValue.length === 1) {
|
|
129
|
-
this.matchValues[1] = date;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
confirmValue(value, closeThen = true) {
|
|
133
|
-
const sortValue = value.sort((startDate, endDate) => startDate.isAfter(endDate) ? 1 : -1);
|
|
134
|
-
this.emitValue(sortValue);
|
|
135
|
-
closeThen && this.confirm.next();
|
|
136
|
-
}
|
|
137
|
-
timeChange(time) {
|
|
138
|
-
if (!time) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
this.syncTime();
|
|
142
|
-
if (!this.rangeValue?.length) {
|
|
143
|
-
const date = updateDateByTimeModel(dayjs(), time);
|
|
144
|
-
this.rangeValue = [date, date];
|
|
145
|
-
this.matchValues = [...this.rangeValue];
|
|
146
|
-
this.startTime = this.endTime = time;
|
|
147
|
-
}
|
|
148
|
-
this.emitValue(this.rangeValue);
|
|
149
|
-
}
|
|
150
|
-
syncTime() {
|
|
151
|
-
if (this.showTime && !!this.rangeValue?.length) {
|
|
152
|
-
const startDate = this.rangeValue[0]
|
|
153
|
-
? updateDateByTimeModel(this.rangeValue[0], this.startTime)
|
|
154
|
-
: null;
|
|
155
|
-
const endDate = this.rangeValue[1]
|
|
156
|
-
? updateDateByTimeModel(this.rangeValue[1], this.endTime)
|
|
157
|
-
: null;
|
|
158
|
-
if (!this.startTime && startDate) {
|
|
159
|
-
this.startTime = getTimePickerModel(this.rangeValue[0]);
|
|
160
|
-
}
|
|
161
|
-
if (!this.endTime && endDate) {
|
|
162
|
-
this.endTime = getTimePickerModel(this.rangeValue[1]);
|
|
163
|
-
}
|
|
164
|
-
this.rangeValue = [startDate, endDate].filter(i => !!i);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DateRangePickerPanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: DateRangePickerPanelComponent, isStandalone: true, selector: "aui-date-range-picker-panel", inputs: { clearable: "clearable", clearText: "clearText", showTime: "showTime", showFooter: "showFooter", disabledDate: "disabledDate", disabledTime: "disabledTime", weekStartDay: "weekStartDay", minDate: "minDate", maxDate: "maxDate" }, outputs: { clear: "clear", confirm: "confirm" }, providers: [
|
|
169
|
-
{
|
|
170
|
-
provide: NG_VALUE_ACCESSOR,
|
|
171
|
-
useExisting: forwardRef(() => DateRangePickerPanelComponent),
|
|
172
|
-
multi: true,
|
|
173
|
-
},
|
|
174
|
-
], usesInheritance: true, ngImport: i0, template: "<div [class]=\"bem.element('container')\">\n <div [class]=\"bem.element('header')\">\n <aui-calendar-header\n [dateNavRange]=\"leftDateRange\"\n [anchor]=\"leftAnchor\"\n (navRangeChange)=\"calendarRangeChange($event, Side.Left)\"\n (anchorChange)=\"leftAnchor = $event\"\n [maxAvail]=\"maxHeaderAvail\"\n [minAvail]=\"minDate\"\n ></aui-calendar-header>\n <aui-calendar-header\n [dateNavRange]=\"rightDateRange\"\n [anchor]=\"rightAnchor\"\n (navRangeChange)=\"calendarRangeChange($event, Side.Right)\"\n (anchorChange)=\"rightAnchor = $event\"\n [minAvail]=\"minHeaderAvail\"\n [maxAvail]=\"maxDate\"\n ></aui-calendar-header>\n </div>\n <div [class]=\"bem.element('body')\">\n <aui-picker-panel\n class=\"panel__wrapper\"\n [navRange]=\"leftDateRange\"\n [type]=\"DatePickerType.Day\"\n [anchor]=\"leftAnchor\"\n [matchDates]=\"matchValues\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [disabledDate]=\"getDateDisabledFn(Side.Left, rightAnchor)\"\n [weekStartDay]=\"weekStartDay\"\n (hovered)=\"hoverItem($event)\"\n (select)=\"selectPickerPanel($event, Side.Left)\"\n ></aui-picker-panel>\n <aui-picker-panel\n class=\"panel__wrapper\"\n [navRange]=\"rightDateRange\"\n [type]=\"DatePickerType.Day\"\n [anchor]=\"rightAnchor\"\n [weekStartDay]=\"weekStartDay\"\n [matchDates]=\"matchValues\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [disabledDate]=\"getDateDisabledFn(Side.Right, leftAnchor)\"\n (hovered)=\"hoverItem($event)\"\n (select)=\"selectPickerPanel($event, Side.Right)\"\n ></aui-picker-panel>\n </div>\n\n <aui-calendar-footer\n [class]=\"bem.element('footer')\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue(rangeValue)\"\n *ngIf=\"showFooter && showTime\"\n >\n <div\n [class]=\"bem.element('footer-content')\"\n *ngIf=\"showTime\"\n >\n <ng-container\n [ngTemplateOutlet]=\"datePlaceholder\"\n [ngTemplateOutletContext]=\"{\n placeholder: 'start_date' | auiI18n,\n value: rangeValue[0],\n }\"\n ></ng-container>\n <aui-time-picker\n [showIcon]=\"false\"\n [(ngModel)]=\"startTime\"\n size=\"small\"\n (ngModelChange)=\"timeChange($event)\"\n [disableHours]=\"leftDisabledTimeFn(rangeValue[0], 'hours')\"\n [disableMinutes]=\"leftDisabledTimeFn(rangeValue[0], 'minutes')\"\n [disableSeconds]=\"leftDisabledTimeFn(rangeValue[0], 'seconds')\"\n [placeholder]=\"'select_time' | auiI18n\"\n tooltipPosition=\"top start\"\n ></aui-time-picker>\n\n <span class=\"placeholder separator\">{{ 'to' | auiI18n }}</span>\n <ng-container\n [ngTemplateOutlet]=\"datePlaceholder\"\n [ngTemplateOutletContext]=\"{\n placeholder: 'end_date' | auiI18n,\n value: rangeValue[1],\n }\"\n ></ng-container>\n <aui-time-picker\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"endTime\"\n [disableHours]=\"rightDisabledTimeFn(rangeValue[1], 'hours')\"\n [disableMinutes]=\"rightDisabledTimeFn(rangeValue[1], 'minutes')\"\n [disableSeconds]=\"rightDisabledTimeFn(rangeValue[1], 'seconds')\"\n (ngModelChange)=\"timeChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n tooltipPosition=\"top start\"\n ></aui-time-picker>\n </div>\n </aui-calendar-footer>\n</div>\n\n<ng-template\n #datePlaceholder\n let-placeholder=\"placeholder\"\n let-value=\"value\"\n>\n <span\n *ngIf=\"!value\"\n class=\"placeholder date-holder\"\n >{{ placeholder }}</span\n >\n <span\n *ngIf=\"value\"\n class=\"date-value date-holder\"\n >{{ value | date: FOOTER_DATE_FORMAT }}</span\n >\n</ng-template>\n", styles: [".aui-date-range-picker-panel__container{display:flex;flex-direction:column;width:524px;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-range-picker-panel__container .placeholder{color:rgb(var(--aui-color-placeholder-text))}.aui-date-range-picker-panel__container .placeholder.separator{margin-inline:12px}.aui-date-range-picker-panel__container .date-value{color:rgb(var(--aui-color-main-text))}.aui-date-range-picker-panel__container .date-holder{display:inline-block;margin-right:8px;width:82px}.aui-date-range-picker-panel__container .panel__wrapper{width:246px;display:flex;justify-content:center}.aui-date-range-picker-panel__header{display:flex;justify-content:space-between}.aui-date-range-picker-panel__header aui-calendar-header{flex:0 0 246px;max-width:50%}.aui-date-range-picker-panel__body{display:flex;justify-content:space-between;margin:16px 0}.aui-date-range-picker-panel__footer .aui-time-picker{width:88px}.aui-date-range-picker-panel__footer-content{display:flex;align-items:center;height:100%}\n"], dependencies: [{ kind: "component", type: CalendarHeaderComponent, selector: "aui-calendar-header", inputs: ["dateNavRange", "anchor", "maxAvail", "minAvail"], outputs: ["navRangeChange", "anchorChange"] }, { kind: "component", type: PickerPanelComponent, selector: "aui-picker-panel", inputs: ["navRange", "type", "anchor", "matchDates", "disabledDate", "weekStartDay", "minDate", "maxDate"], outputs: ["select", "hovered"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CalendarFooterComponent, selector: "aui-calendar-footer", inputs: ["clearable", "clearText", "customAction"], outputs: ["confirm", "clear"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: TimePickerComponent, selector: "aui-time-picker", inputs: ["format", "size", "placeholder", "clearable", "showIcon", "disableHours", "disableMinutes", "disableSeconds", "hourStep", "minuteStep", "secondStep", "footerTemplate"], outputs: ["open", "close"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: I18nPipe, name: "auiI18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
175
|
-
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DateRangePickerPanelComponent, decorators: [{
|
|
177
|
-
type: Component,
|
|
178
|
-
args: [{ selector: 'aui-date-range-picker-panel', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
179
|
-
{
|
|
180
|
-
provide: NG_VALUE_ACCESSOR,
|
|
181
|
-
useExisting: forwardRef(() => DateRangePickerPanelComponent),
|
|
182
|
-
multi: true,
|
|
183
|
-
},
|
|
184
|
-
], standalone: true, imports: [
|
|
185
|
-
CalendarHeaderComponent,
|
|
186
|
-
PickerPanelComponent,
|
|
187
|
-
NgIf,
|
|
188
|
-
CalendarFooterComponent,
|
|
189
|
-
NgTemplateOutlet,
|
|
190
|
-
TimePickerComponent,
|
|
191
|
-
FormsModule,
|
|
192
|
-
DatePipe,
|
|
193
|
-
I18nPipe,
|
|
194
|
-
], template: "<div [class]=\"bem.element('container')\">\n <div [class]=\"bem.element('header')\">\n <aui-calendar-header\n [dateNavRange]=\"leftDateRange\"\n [anchor]=\"leftAnchor\"\n (navRangeChange)=\"calendarRangeChange($event, Side.Left)\"\n (anchorChange)=\"leftAnchor = $event\"\n [maxAvail]=\"maxHeaderAvail\"\n [minAvail]=\"minDate\"\n ></aui-calendar-header>\n <aui-calendar-header\n [dateNavRange]=\"rightDateRange\"\n [anchor]=\"rightAnchor\"\n (navRangeChange)=\"calendarRangeChange($event, Side.Right)\"\n (anchorChange)=\"rightAnchor = $event\"\n [minAvail]=\"minHeaderAvail\"\n [maxAvail]=\"maxDate\"\n ></aui-calendar-header>\n </div>\n <div [class]=\"bem.element('body')\">\n <aui-picker-panel\n class=\"panel__wrapper\"\n [navRange]=\"leftDateRange\"\n [type]=\"DatePickerType.Day\"\n [anchor]=\"leftAnchor\"\n [matchDates]=\"matchValues\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [disabledDate]=\"getDateDisabledFn(Side.Left, rightAnchor)\"\n [weekStartDay]=\"weekStartDay\"\n (hovered)=\"hoverItem($event)\"\n (select)=\"selectPickerPanel($event, Side.Left)\"\n ></aui-picker-panel>\n <aui-picker-panel\n class=\"panel__wrapper\"\n [navRange]=\"rightDateRange\"\n [type]=\"DatePickerType.Day\"\n [anchor]=\"rightAnchor\"\n [weekStartDay]=\"weekStartDay\"\n [matchDates]=\"matchValues\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [disabledDate]=\"getDateDisabledFn(Side.Right, leftAnchor)\"\n (hovered)=\"hoverItem($event)\"\n (select)=\"selectPickerPanel($event, Side.Right)\"\n ></aui-picker-panel>\n </div>\n\n <aui-calendar-footer\n [class]=\"bem.element('footer')\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n (clear)=\"clear.next()\"\n (confirm)=\"confirmValue(rangeValue)\"\n *ngIf=\"showFooter && showTime\"\n >\n <div\n [class]=\"bem.element('footer-content')\"\n *ngIf=\"showTime\"\n >\n <ng-container\n [ngTemplateOutlet]=\"datePlaceholder\"\n [ngTemplateOutletContext]=\"{\n placeholder: 'start_date' | auiI18n,\n value: rangeValue[0],\n }\"\n ></ng-container>\n <aui-time-picker\n [showIcon]=\"false\"\n [(ngModel)]=\"startTime\"\n size=\"small\"\n (ngModelChange)=\"timeChange($event)\"\n [disableHours]=\"leftDisabledTimeFn(rangeValue[0], 'hours')\"\n [disableMinutes]=\"leftDisabledTimeFn(rangeValue[0], 'minutes')\"\n [disableSeconds]=\"leftDisabledTimeFn(rangeValue[0], 'seconds')\"\n [placeholder]=\"'select_time' | auiI18n\"\n tooltipPosition=\"top start\"\n ></aui-time-picker>\n\n <span class=\"placeholder separator\">{{ 'to' | auiI18n }}</span>\n <ng-container\n [ngTemplateOutlet]=\"datePlaceholder\"\n [ngTemplateOutletContext]=\"{\n placeholder: 'end_date' | auiI18n,\n value: rangeValue[1],\n }\"\n ></ng-container>\n <aui-time-picker\n [showIcon]=\"false\"\n size=\"small\"\n [(ngModel)]=\"endTime\"\n [disableHours]=\"rightDisabledTimeFn(rangeValue[1], 'hours')\"\n [disableMinutes]=\"rightDisabledTimeFn(rangeValue[1], 'minutes')\"\n [disableSeconds]=\"rightDisabledTimeFn(rangeValue[1], 'seconds')\"\n (ngModelChange)=\"timeChange($event)\"\n [placeholder]=\"'select_time' | auiI18n\"\n tooltipPosition=\"top start\"\n ></aui-time-picker>\n </div>\n </aui-calendar-footer>\n</div>\n\n<ng-template\n #datePlaceholder\n let-placeholder=\"placeholder\"\n let-value=\"value\"\n>\n <span\n *ngIf=\"!value\"\n class=\"placeholder date-holder\"\n >{{ placeholder }}</span\n >\n <span\n *ngIf=\"value\"\n class=\"date-value date-holder\"\n >{{ value | date: FOOTER_DATE_FORMAT }}</span\n >\n</ng-template>\n", styles: [".aui-date-range-picker-panel__container{display:flex;flex-direction:column;width:524px;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal)}.aui-date-range-picker-panel__container .placeholder{color:rgb(var(--aui-color-placeholder-text))}.aui-date-range-picker-panel__container .placeholder.separator{margin-inline:12px}.aui-date-range-picker-panel__container .date-value{color:rgb(var(--aui-color-main-text))}.aui-date-range-picker-panel__container .date-holder{display:inline-block;margin-right:8px;width:82px}.aui-date-range-picker-panel__container .panel__wrapper{width:246px;display:flex;justify-content:center}.aui-date-range-picker-panel__header{display:flex;justify-content:space-between}.aui-date-range-picker-panel__header aui-calendar-header{flex:0 0 246px;max-width:50%}.aui-date-range-picker-panel__body{display:flex;justify-content:space-between;margin:16px 0}.aui-date-range-picker-panel__footer .aui-time-picker{width:88px}.aui-date-range-picker-panel__footer-content{display:flex;align-items:center;height:100%}\n"] }]
|
|
195
|
-
}], propDecorators: { clearable: [{
|
|
196
|
-
type: Input
|
|
197
|
-
}], clearText: [{
|
|
198
|
-
type: Input
|
|
199
|
-
}], showTime: [{
|
|
200
|
-
type: Input
|
|
201
|
-
}], showFooter: [{
|
|
202
|
-
type: Input
|
|
203
|
-
}], disabledDate: [{
|
|
204
|
-
type: Input
|
|
205
|
-
}], disabledTime: [{
|
|
206
|
-
type: Input
|
|
207
|
-
}], weekStartDay: [{
|
|
208
|
-
type: Input
|
|
209
|
-
}], minDate: [{
|
|
210
|
-
type: Input
|
|
211
|
-
}], maxDate: [{
|
|
212
|
-
type: Input
|
|
213
|
-
}], clear: [{
|
|
214
|
-
type: Output
|
|
215
|
-
}], confirm: [{
|
|
216
|
-
type: Output
|
|
217
|
-
}] } });
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2NhbGVuZGFyL3JhbmdlLXBpY2tlci1wYW5lbC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0ZS1waWNrZXIvY2FsZW5kYXIvcmFuZ2UtcGlja2VyLXBhbmVsL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFckUsT0FBTyxFQUFFLFlBQVksRUFBa0IsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFB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Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztnQkFDNUQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGlEQ2pESCw2NEhBc0hBLDJuQ0RsRUksdUJBQXVCLHlLQUN2QixvQkFBb0IseU1BQ3BCLElBQUksNkZBQ0osdUJBQXVCLG1KQUN2QixnQkFBZ0Isb0pBQ2hCLG1CQUFtQix5UUFDbkIsV0FBVywwVkFDWCxRQUFRLHdDQUNSLFFBQVE7OzJGQUdDLDZCQUE2QjtrQkExQnpDLFNBQVM7K0JBQ0UsNkJBQTZCLGlCQUd4QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDhCQUE4QixDQUFDOzRCQUM1RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixjQUNXLElBQUksV0FDUDt3QkFDUCx1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsSUFBSTt3QkFDSix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLFFBQVE7d0JBQ1IsUUFBUTtxQkFDVDs4QkFJRCxTQUFTO3NCQURSLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQVFOLFlBQVk7c0JBRFgsS0FBSztnQkFPTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixLQUFLO3NCQURKLE1BQU07Z0JBSVAsT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgZGF5anMsIHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5cbmltcG9ydCB7IENvbW1vbkZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vLi4vZm9ybS9jb21tb24tZm9ybSc7XG5pbXBvcnQgeyBJMThuUGlwZSB9IGZyb20gJy4uLy4uLy4uL2kxOG4vaTE4bi5waXBlJztcbmltcG9ydCB7IGJ1aWxkQmVtIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJuYWwvdXRpbHMnO1xuaW1wb3J0IHsgVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3RpbWUtcGlja2VyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi90aW1lLXBpY2tlci90aW1lLXBpY2tlci50eXBlJztcbmltcG9ydCB7IERhdGVOYXZSYW5nZSwgRGlzYWJsZWRUaW1lRm4sIFNpZGUgfSBmcm9tICcuLi8uLi9kYXRlLXBpY2tlci50eXBlJztcbmltcG9ydCB7IERhdGVQaWNrZXJUeXBlLCBNT05USCwgWUVBUiB9IGZyb20gJy4uL2NvbnN0YW50JztcbmltcG9ydCB7IENhbGVuZGFyRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9vdGVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2hlYWRlci9jb21wb25lbnQnO1xuaW1wb3J0IHsgUGlja2VyUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9wYW5lbC9waWNrZXItcGFuZWwnO1xuaW1wb3J0IHtcbiAgY29tcG9zZURpc2FibGVkRGF0ZUZuLFxuICBnZXRUaW1lUGlja2VyTW9kZWwsXG4gIGdldFR5cGVCeU5hdlJhbmdlLFxuICBtYXhEYXRlLFxuICBtaW5EYXRlLFxuICBuZXh0TmF2UmFuZ2VUeXBlLFxuICBzb3J0RGF0ZXMsXG4gIHVwZGF0ZURhdGUsXG4gIHVwZGF0ZURhdGVCeVRpbWVNb2RlbCxcbn0gZnJvbSAnLi4vdXRpbCc7XG5cbmNvbnN0IGJlbSA9IGJ1aWxkQmVtKCdhdWktZGF0ZS1yYW5nZS1waWNrZXItcGFuZWwnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVpLWRhdGUtcmFuZ2UtcGlja2VyLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVSYW5nZVBpY2tlclBhbmVsQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDYWxlbmRhckhlYWRlckNvbXBvbmVudCxcbiAgICBQaWNrZXJQYW5lbENvbXBvbmVudCxcbiAgICBOZ0lmLFxuICAgIENhbGVuZGFyRm9vdGVyQ29tcG9uZW50LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgVGltZVBpY2tlckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBEYXRlUGlwZSxcbiAgICBJMThuUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlUGlja2VyUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBDb21tb25Gb3JtQ29udHJvbDxEYXlqc1tdPiB7XG4gIEBJbnB1dCgpXG4gIGNsZWFyYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgY2xlYXJUZXh0OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2hvd1RpbWUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dGb290ZXIgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkRGF0ZTogKFxuICAgIGRhdGU6IERheWpzLFxuICAgIG5hdlJhbmdlOiBEYXRlTmF2UmFuZ2UsXG4gICAgc3RhcnREYXRlOiBEYXlqcyxcbiAgKSA9PiBib29sZWFuID0gKCkgPT4gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWRUaW1lOiB7IGxlZnQ6IERpc2FibGVkVGltZUZuOyByaWdodDogRGlzYWJsZWRUaW1lRm4gfSA9IHtcbiAgICBsZWZ0OiAoKSA9PiBudWxsLFxuICAgIHJpZ2h0OiAoKSA9PiBudWxsLFxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHdlZWtTdGFydERheSA9IDA7XG5cbiAgQElucHV0KClcbiAgbWluRGF0ZTogRGF5anM7XG5cbiAgQElucHV0KClcbiAgbWF4RGF0ZTogRGF5anM7XG5cbiAgQE91dHB1dCgpXG4gIGNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBPdXRwdXQoKVxuICBjb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGJlbSA9IGJlbTtcbiAgU2lkZSA9IFNpZGU7XG4gIERhdGVQaWNrZXJUeXBlID0gRGF0ZVBpY2tlclR5cGU7XG4gIGxlZnREYXRlUmFuZ2UgPSBEYXRlTmF2UmFuZ2UuTW9udGg7XG4gIHJpZ2h0RGF0ZVJhbmdlID0gRGF0ZU5hdlJhbmdlLk1vbnRoO1xuXG4gIEZPT1RFUl9EQVRFX0ZPUk1BVCA9ICdZWVlZLU1NLWRkJztcblxuICBsZWZ0QW5jaG9yID0gZGF5anMoKTtcbiAgcmlnaHRBbmNob3IgPSBkYXlqcygpLmFkZCgxLCBNT05USCk7XG5cbiAgZ2V0IG1heEhlYWRlckF2YWlsKCkge1xuICAgIHJldHVybiBtaW5EYXRlKHRoaXMucmlnaHRBbmNob3IsIHRoaXMubWF4RGF0ZSk7XG4gIH1cblxuICBnZXQgbWluSGVhZGVyQXZhaWwoKSB7XG4gICAgcmV0dXJuIG1heERhdGUodGhpcy5taW5EYXRlLCB0aGlzLmxlZnRBbmNob3IpO1xuICB9XG5cbiAgLy8g55So5LqO5a2Y5pS+IHJhbmdlIGRhdGEg5bqP5YiX77yM5pWw6YeP5Li6IDIg5pe25riF6ZmkXG4gIHJhbmdlVmFsdWU6IERheWpzW10gPSBbXTtcblxuICAvLyDnlKjkuo7nu4Too4XljLnphY3ml6XmnJ/luo/liJdcbiAgbWF0Y2hWYWx1ZXM6IERheWpzW107XG5cbiAgc3RhcnRUaW1lOiBUaW1lUGlja2VyTW9kZWw7XG4gIGVuZFRpbWU6IFRpbWVQaWNrZXJNb2RlbDtcblxuICBvdmVycmlkZSB3cml0ZVZhbHVlKG9iajogRGF5anNbXSkge1xuICAgIHN1cGVyLndyaXRlVmFsdWUob2JqKTtcbiAgICB0aGlzLnJhbmdlVmFsdWUgPSBvYmogfHwgW107XG4gICAgdGhpcy5tYXRjaFZhbHVlcyA9IFsuLi50aGlzLnJhbmdlVmFsdWVdO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gZ2V0VGltZVBpY2tlck1vZGVsKG9iaj8uWzBdKTtcbiAgICB0aGlzLmVuZFRpbWUgPSBnZXRUaW1lUGlja2VyTW9kZWwob2JqPy5bMV0pO1xuICAgIGlmIChvYmo/Lmxlbmd0aCA9PT0gMikge1xuICAgICAgdGhpcy5yZW9yZGVyKHNvcnREYXRlcyhvYmopKTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjYWxlbmRhclJhbmdlQ2hhbmdlKHR5cGU6IERhdGVOYXZSYW5nZSwgc2lkZTogU2lkZSkge1xuICAgIGlmIChzaWRlID09PSBTaWRlLkxlZnQpIHtcbiAgICAgIHRoaXMubGVmdERhdGVSYW5nZSA9IHR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmlnaHREYXRlUmFuZ2UgPSB0eXBlO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJhbmdlIOe7hOS7tuiMg+WbtOWPl+aOp1xuICBnZXREYXRlRGlzYWJsZWRGbihzaWRlOiBTaWRlLCBjb25zdHJhaW5WYWx1ZTogRGF5anMpIHtcbiAgICByZXR1cm4gY29tcG9zZURpc2FibGVkRGF0ZUZuKFxuICAgICAgKGRhdGU6IERheWpzLCBuYXZSYW5nZTogRGF0ZU5hdlJhbmdlKSA9PiB7XG4gICAgICAgIGlmIChuYXZSYW5nZSA9PT0gRGF0ZU5hdlJhbmdlLk1vbnRoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYXZSYW5nZSA9PT0gRGF0ZU5hdlJhbmdlLkRlY2FkZSkge1xuICAgICAgICAgIHJldHVybiBkYXRlW3NpZGUgPT09IFNpZGUuTGVmdCA/ICdpc0FmdGVyJyA6ICdpc0JlZm9yZSddKFxuICAgICAgICAgICAgY29uc3RyYWluVmFsdWUsXG4gICAgICAgICAgICBZRUFSLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFkYXRlW3NpZGUgPT09IFNpZGUuTGVmdCA/ICdpc0JlZm9yZScgOiAnaXNBZnRlciddKFxuICAgICAgICAgIGNvbnN0cmFpblZhbHVlLFxuICAgICAgICAgIE1PTlRILFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgICguLi5hcmcpID0+IHRoaXMuZGlzYWJsZWREYXRlKC4uLmFyZywgdGhpcy5yYW5nZVZhbHVlWzBdKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXNhYmxlZFRpbWVDYWNoZWRGbihzaWRlOiBTaWRlKSB7XG4gICAgbGV0IGNhY2hlU2VsZWN0ZWREYXRlOiBEYXlqcztcbiAgICBsZXQgY2FjaGVEaXNhYmxlZFRpbWVGbjogUmV0dXJuVHlwZTxEaXNhYmxlZFRpbWVGbj47XG4gICAgcmV0dXJuICh2YWx1ZTogRGF5anMsIGtleToga2V5b2YgUmV0dXJuVHlwZTxEaXNhYmxlZFRpbWVGbj4pID0+IHtcbiAgICAgIGlmICh2YWx1ZSAhPT0gY2FjaGVTZWxlY3RlZERhdGUpIHtcbiAgICAgICAgY2FjaGVEaXNhYmxlZFRpbWVGbiA9ICh0aGlzLmRpc2FibGVkVGltZT8uW3NpZGVdIHx8ICgoKSA9PiBudWxsKSkoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICk7XG4gICAgICAgIGNhY2hlU2VsZWN0ZWREYXRlID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FjaGVEaXNhYmxlZFRpbWVGbj8uW2tleV07XG4gICAgfTtcbiAgfVxuXG4gIGxlZnREaXNhYmxlZFRpbWVGbiA9IHRoaXMuZ2V0RGlzYWJsZWRUaW1lQ2FjaGVkRm4oU2lkZS5MZWZ0KTtcbiAgcmlnaHREaXNhYmxlZFRpbWVGbiA9IHRoaXMuZ2V0RGlzYWJsZWRUaW1lQ2FjaGVkRm4oU2lkZS5SaWdodCk7XG5cbiAgc2VsZWN0UGlja2VyUGFuZWwodmFsdWU6IERheWpzLCBzaWRlOiBTaWRlKSB7XG4gICAgY29uc3QgbmF2UmFuZ2UgPVxuICAgICAgc2lkZSA9PT0gU2lkZS5MZWZ0ID8gdGhpcy5sZWZ0RGF0ZVJhbmdlIDogdGhpcy5yaWdodERhdGVSYW5nZTtcbiAgICBjb25zdCB0eXBlID0gZ2V0VHlwZUJ5TmF2UmFuZ2UobmF2UmFuZ2UpO1xuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IHVwZGF0ZURhdGUoXG4gICAgICBzaWRlID09PSBTaWRlLkxlZnQgPyB0aGlzLmxlZnRBbmNob3IgOiB0aGlzLnJpZ2h0QW5jaG9yLFxuICAgICAgdmFsdWUsXG4gICAgICB0eXBlLFxuICAgICk7XG4gICAgY29uc3QgbmV4dFJhbmdlID0gbmV4dE5hdlJhbmdlVHlwZShuYXZSYW5nZSwgRGF0ZU5hdlJhbmdlLk1vbnRoKTtcblxuICAgIGlmIChzaWRlID09PSBTaWRlLkxlZnQpIHtcbiAgICAgIHRoaXMubGVmdEFuY2hvciA9IGRhdGVWYWx1ZTtcbiAgICAgIHRoaXMubGVmdERhdGVSYW5nZSA9IG5leHRSYW5nZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yaWdodEFuY2hvciA9IGRhdGVWYWx1ZTtcbiAgICAgIHRoaXMucmlnaHREYXRlUmFuZ2UgPSBuZXh0UmFuZ2U7XG4gICAgfVxuXG4gICAgaWYgKG5hdlJhbmdlICE9PSBEYXRlTmF2UmFuZ2UuTW9udGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZWZ0QW5jaG9yLmlzU2FtZSh0aGlzLnJpZ2h0QW5jaG9yLCBNT05USCkpIHtcbiAgICAgIHRoaXMucmlnaHRBbmNob3IgPSB0aGlzLnJpZ2h0QW5jaG9yLmFkZCgxLCBNT05USCk7XG4gICAgfVxuXG4gICAgdGhpcy5yYW5nZVZhbHVlID1cbiAgICAgIHRoaXMucmFuZ2VWYWx1ZS5sZW5ndGggPT09IDJcbiAgICAgICAgPyBbZGF0ZVZhbHVlXVxuICAgICAgICA6IHNvcnREYXRlcyhbLi4udGhpcy5yYW5nZVZhbHVlLCBkYXRlVmFsdWVdKTtcbiAgICB0aGlzLm1hdGNoVmFsdWVzID0gWy4uLnRoaXMucmFuZ2VWYWx1ZV07XG4gICAgdGhpcy5zeW5jVGltZSgpO1xuICAgIGlmICh0aGlzLnJhbmdlVmFsdWUubGVuZ3RoID09PSAyKSB7XG4gICAgICB0aGlzLnJlb3JkZXIodGhpcy5yYW5nZVZhbHVlKTtcbiAgICAgIHRoaXMuY29uZmlybVZhbHVlKHRoaXMucmFuZ2VWYWx1ZSwgIXRoaXMuc2hvd1RpbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJlb3JkZXIoc29ydGVkRGF0ZTogRGF5anNbXSkge1xuICAgIGlmICghc29ydGVkRGF0ZVswXS5pc1NhbWUoc29ydGVkRGF0ZVsxXSwgTU9OVEgpKSB7XG4gICAgICB0aGlzLmxlZnRBbmNob3IgPSB1cGRhdGVEYXRlKFxuICAgICAgICB0aGlzLmxlZnRBbmNob3IsXG4gICAgICAgIHNvcnRlZERhdGVbMF0sXG4gICAgICAgIERhdGVQaWNrZXJUeXBlLkRheSxcbiAgICAgICk7XG4gICAgICB0aGlzLnJpZ2h0QW5jaG9yID0gdXBkYXRlRGF0ZShcbiAgICAgICAgdGhpcy5sZWZ0QW5jaG9yLFxuICAgICAgICBzb3J0ZWREYXRlWzFdLFxuICAgICAgICBEYXRlUGlja2VyVHlwZS5EYXksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGhvdmVySXRlbShkYXRlOiBEYXlqcykge1xuICAgIGlmICh0aGlzLnJhbmdlVmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLm1hdGNoVmFsdWVzWzFdID0gZGF0ZTtcbiAgICB9XG4gIH1cblxuICBjb25maXJtVmFsdWUodmFsdWU6IERheWpzW10sIGNsb3NlVGhlbiA9IHRydWUpIHtcbiAgICBjb25zdCBzb3J0VmFsdWUgPSB2YWx1ZS5zb3J0KChzdGFydERhdGUsIGVuZERhdGUpID0+XG4gICAgICBzdGFydERhdGUuaXNBZnRlcihlbmREYXRlKSA/IDEgOiAtMSxcbiAgICApO1xuICAgIHRoaXMuZW1pdFZhbHVlKHNvcnRWYWx1ZSk7XG4gICAgY2xvc2VUaGVuICYmIHRoaXMuY29uZmlybS5uZXh0KCk7XG4gIH1cblxuICB0aW1lQ2hhbmdlKHRpbWU6IFRpbWVQaWNrZXJNb2RlbCkge1xuICAgIGlmICghdGltZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN5bmNUaW1lKCk7XG4gICAgaWYgKCF0aGlzLnJhbmdlVmFsdWU/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgZGF0ZSA9IHVwZGF0ZURhdGVCeVRpbWVNb2RlbChkYXlqcygpLCB0aW1lKTtcbiAgICAgIHRoaXMucmFuZ2VWYWx1ZSA9IFtkYXRlLCBkYXRlXTtcbiAgICAgIHRoaXMubWF0Y2hWYWx1ZXMgPSBbLi4udGhpcy5yYW5nZVZhbHVlXTtcbiAgICAgIHRoaXMuc3RhcnRUaW1lID0gdGhpcy5lbmRUaW1lID0gdGltZTtcbiAgICB9XG4gICAgdGhpcy5lbWl0VmFsdWUodGhpcy5yYW5nZVZhbHVlKTtcbiAgfVxuXG4gIHN5bmNUaW1lKCkge1xuICAgIGlmICh0aGlzLnNob3dUaW1lICYmICEhdGhpcy5yYW5nZVZhbHVlPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMucmFuZ2VWYWx1ZVswXVxuICAgICAgICA/IHVwZGF0ZURhdGVCeVRpbWVNb2RlbCh0aGlzLnJhbmdlVmFsdWVbMF0sIHRoaXMuc3RhcnRUaW1lKVxuICAgICAgICA6IG51bGw7XG4gICAgICBjb25zdCBlbmREYXRlID0gdGhpcy5yYW5nZVZhbHVlWzFdXG4gICAgICAgID8gdXBkYXRlRGF0ZUJ5VGltZU1vZGVsKHRoaXMucmFuZ2VWYWx1ZVsxXSwgdGhpcy5lbmRUaW1lKVxuICAgICAgICA6IG51bGw7XG4gICAgICBpZiAoIXRoaXMuc3RhcnRUaW1lICYmIHN0YXJ0RGF0ZSkge1xuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IGdldFRpbWVQaWNrZXJNb2RlbCh0aGlzLnJhbmdlVmFsdWVbMF0pO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmVuZFRpbWUgJiYgZW5kRGF0ZSkge1xuICAgICAgICB0aGlzLmVuZFRpbWUgPSBnZXRUaW1lUGlja2VyTW9kZWwodGhpcy5yYW5nZVZhbHVlWzFdKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmFuZ2VWYWx1ZSA9IFtzdGFydERhdGUsIGVuZERhdGVdLmZpbHRlcihpID0+ICEhaSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IFtjbGFzc109XCJiZW0uZWxlbWVudCgnY29udGFpbmVyJylcIj5cbiAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2hlYWRlcicpXCI+XG4gICAgPGF1aS1jYWxlbmRhci1oZWFkZXJcbiAgICAgIFtkYXRlTmF2UmFuZ2VdPVwibGVmdERhdGVSYW5nZVwiXG4gICAgICBbYW5jaG9yXT1cImxlZnRBbmNob3JcIlxuICAgICAgKG5hdlJhbmdlQ2hhbmdlKT1cImNhbGVuZGFyUmFuZ2VDaGFuZ2UoJGV2ZW50LCBTaWRlLkxlZnQpXCJcbiAgICAgIChhbmNob3JDaGFuZ2UpPVwibGVmdEFuY2hvciA9ICRldmVudFwiXG4gICAgICBbbWF4QXZhaWxdPVwibWF4SGVhZGVyQXZhaWxcIlxuICAgICAgW21pbkF2YWlsXT1cIm1pbkRhdGVcIlxuICAgID48L2F1aS1jYWxlbmRhci1oZWFkZXI+XG4gICAgPGF1aS1jYWxlbmRhci1oZWFkZXJcbiAgICAgIFtkYXRlTmF2UmFuZ2VdPVwicmlnaHREYXRlUmFuZ2VcIlxuICAgICAgW2FuY2hvcl09XCJyaWdodEFuY2hvclwiXG4gICAgICAobmF2UmFuZ2VDaGFuZ2UpPVwiY2FsZW5kYXJSYW5nZUNoYW5nZSgkZXZlbnQsIFNpZGUuUmlnaHQpXCJcbiAgICAgIChhbmNob3JDaGFuZ2UpPVwicmlnaHRBbmNob3IgPSAkZXZlbnRcIlxuICAgICAgW21pbkF2YWlsXT1cIm1pbkhlYWRlckF2YWlsXCJcbiAgICAgIFttYXhBdmFpbF09XCJtYXhEYXRlXCJcbiAgICA+PC9hdWktY2FsZW5kYXItaGVhZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2JvZHknKVwiPlxuICAgIDxhdWktcGlja2VyLXBhbmVsXG4gICAgICBjbGFzcz1cInBhbmVsX193cmFwcGVyXCJcbiAgICAgIFtuYXZSYW5nZV09XCJsZWZ0RGF0ZVJhbmdlXCJcbiAgICAgIFt0eXBlXT1cIkRhdGVQaWNrZXJUeXBlLkRheVwiXG4gICAgICBbYW5jaG9yXT1cImxlZnRBbmNob3JcIlxuICAgICAgW21hdGNoRGF0ZXNdPVwibWF0Y2hWYWx1ZXNcIlxuICAgICAgW21pbkRhdGVdPVwibWluRGF0ZVwiXG4gICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgIFtkaXNhYmxlZERhdGVdPVwiZ2V0RGF0ZURpc2FibGVkRm4oU2lkZS5MZWZ0LCByaWdodEFuY2hvcilcIlxuICAgICAgW3dlZWtTdGFydERheV09XCJ3ZWVrU3RhcnREYXlcIlxuICAgICAgKGhvdmVyZWQpPVwiaG92ZXJJdGVtKCRldmVudClcIlxuICAgICAgKHNlbGVjdCk9XCJzZWxlY3RQaWNrZXJQYW5lbCgkZXZlbnQsIFNpZGUuTGVmdClcIlxuICAgID48L2F1aS1waWNrZXItcGFuZWw+XG4gICAgPGF1aS1waWNrZXItcGFuZWxcbiAgICAgIGNsYXNzPVwicGFuZWxfX3dyYXBwZXJcIlxuICAgICAgW25hdlJhbmdlXT1cInJpZ2h0RGF0ZVJhbmdlXCJcbiAgICAgIFt0eXBlXT1cIkRhdGVQaWNrZXJUeXBlLkRheVwiXG4gICAgICBbYW5jaG9yXT1cInJpZ2h0QW5jaG9yXCJcbiAgICAgIFt3ZWVrU3RhcnREYXldPVwid2Vla1N0YXJ0RGF5XCJcbiAgICAgIFttYXRjaERhdGVzXT1cIm1hdGNoVmFsdWVzXCJcbiAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICBbZGlzYWJsZWREYXRlXT1cImdldERhdGVEaXNhYmxlZEZuKFNpZGUuUmlnaHQsIGxlZnRBbmNob3IpXCJcbiAgICAgIChob3ZlcmVkKT1cImhvdmVySXRlbSgkZXZlbnQpXCJcbiAgICAgIChzZWxlY3QpPVwic2VsZWN0UGlja2VyUGFuZWwoJGV2ZW50LCBTaWRlLlJpZ2h0KVwiXG4gICAgPjwvYXVpLXBpY2tlci1wYW5lbD5cbiAgPC9kaXY+XG5cbiAgPGF1aS1jYWxlbmRhci1mb290ZXJcbiAgICBbY2xhc3NdPVwiYmVtLmVsZW1lbnQoJ2Zvb3RlcicpXCJcbiAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgW2NsZWFyVGV4dF09XCJjbGVhclRleHRcIlxuICAgIChjbGVhcik9XCJjbGVhci5uZXh0KClcIlxuICAgIChjb25maXJtKT1cImNvbmZpcm1WYWx1ZShyYW5nZVZhbHVlKVwiXG4gICAgKm5nSWY9XCJzaG93Rm9vdGVyICYmIHNob3dUaW1lXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJiZW0uZWxlbWVudCgnZm9vdGVyLWNvbnRlbnQnKVwiXG4gICAgICAqbmdJZj1cInNob3dUaW1lXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGVQbGFjZWhvbGRlclwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdzdGFydF9kYXRlJyB8IGF1aUkxOG4sXG4gICAgICAgICAgdmFsdWU6IHJhbmdlVmFsdWVbMF0sXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPGF1aS10aW1lLXBpY2tlclxuICAgICAgICBbc2hvd0ljb25dPVwiZmFsc2VcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInN0YXJ0VGltZVwiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlSG91cnNdPVwibGVmdERpc2FibGVkVGltZUZuKHJhbmdlVmFsdWVbMF0sICdob3VycycpXCJcbiAgICAgICAgW2Rpc2FibGVNaW51dGVzXT1cImxlZnREaXNhYmxlZFRpbWVGbihyYW5nZVZhbHVlWzBdLCAnbWludXRlcycpXCJcbiAgICAgICAgW2Rpc2FibGVTZWNvbmRzXT1cImxlZnREaXNhYmxlZFRpbWVGbihyYW5nZVZhbHVlWzBdLCAnc2Vjb25kcycpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidzZWxlY3RfdGltZScgfCBhdWlJMThuXCJcbiAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wIHN0YXJ0XCJcbiAgICAgID48L2F1aS10aW1lLXBpY2tlcj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlciBzZXBhcmF0b3JcIj57eyAndG8nIHwgYXVpSTE4biB9fTwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ2VuZF9kYXRlJyB8IGF1aUkxOG4sXG4gICAgICAgICAgdmFsdWU6IHJhbmdlVmFsdWVbMV0sXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPGF1aS10aW1lLXBpY2tlclxuICAgICAgICBbc2hvd0ljb25dPVwiZmFsc2VcIlxuICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImVuZFRpbWVcIlxuICAgICAgICBbZGlzYWJsZUhvdXJzXT1cInJpZ2h0RGlzYWJsZWRUaW1lRm4ocmFuZ2VWYWx1ZVsxXSwgJ2hvdXJzJylcIlxuICAgICAgICBbZGlzYWJsZU1pbnV0ZXNdPVwicmlnaHREaXNhYmxlZFRpbWVGbihyYW5nZVZhbHVlWzFdLCAnbWludXRlcycpXCJcbiAgICAgICAgW2Rpc2FibGVTZWNvbmRzXT1cInJpZ2h0RGlzYWJsZWRUaW1lRm4ocmFuZ2VWYWx1ZVsxXSwgJ3NlY29uZHMnKVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInc2VsZWN0X3RpbWUnIHwgYXVpSTE4blwiXG4gICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcCBzdGFydFwiXG4gICAgICA+PC9hdWktdGltZS1waWNrZXI+XG4gICAgPC9kaXY+XG4gIDwvYXVpLWNhbGVuZGFyLWZvb3Rlcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI2RhdGVQbGFjZWhvbGRlclxuICBsZXQtcGxhY2Vob2xkZXI9XCJwbGFjZWhvbGRlclwiXG4gIGxldC12YWx1ZT1cInZhbHVlXCJcbj5cbiAgPHNwYW5cbiAgICAqbmdJZj1cIiF2YWx1ZVwiXG4gICAgY2xhc3M9XCJwbGFjZWhvbGRlciBkYXRlLWhvbGRlclwiXG4gICAgPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuXG4gID5cbiAgPHNwYW5cbiAgICAqbmdJZj1cInZhbHVlXCJcbiAgICBjbGFzcz1cImRhdGUtdmFsdWUgZGF0ZS1ob2xkZXJcIlxuICAgID57eyB2YWx1ZSB8IGRhdGU6IEZPT1RFUl9EQVRFX0ZPUk1BVCB9fTwvc3BhblxuICA+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { DateNavRange } from '../date-picker.type';
|
|
2
|
-
import { DATE_NAV_RANGES, DATE_TYPES, DAY, DAY_PANEL_COLUMN_COUNT, DAY_PANEL_ROW_COUNT, DatePickerType, MONTH, MONTH_PANEL_COLUMN_COUNT, MONTH_PANEL_ROW_COUNT, YEAR, YEAR_PANEL_COLUMN_COUNT, YEAR_PANEL_ROW_COUNT, } from './constant';
|
|
3
|
-
export class DateCell {
|
|
4
|
-
constructor(value, label) {
|
|
5
|
-
this.value = value;
|
|
6
|
-
this.label = label;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
export function getDatePanelIterable(date, navRange, weekStartDay) {
|
|
10
|
-
let firstData;
|
|
11
|
-
let counts = 0;
|
|
12
|
-
date = date.clone();
|
|
13
|
-
switch (navRange) {
|
|
14
|
-
case DateNavRange.Month: {
|
|
15
|
-
firstData = date.date(-1).day(weekStartDay);
|
|
16
|
-
if (firstData.isAfter(date)) {
|
|
17
|
-
firstData = firstData.subtract(1, 'week');
|
|
18
|
-
}
|
|
19
|
-
counts = DAY_PANEL_COLUMN_COUNT * DAY_PANEL_ROW_COUNT;
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
case DateNavRange.Year: {
|
|
23
|
-
firstData = date.month(0);
|
|
24
|
-
counts = MONTH_PANEL_COLUMN_COUNT * MONTH_PANEL_ROW_COUNT;
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
case DateNavRange.Decade: {
|
|
28
|
-
firstData = date.subtract(1, YEAR);
|
|
29
|
-
counts = YEAR_PANEL_COLUMN_COUNT * YEAR_PANEL_ROW_COUNT;
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
let i = 0;
|
|
34
|
-
return {
|
|
35
|
-
[Symbol.iterator]() {
|
|
36
|
-
return this;
|
|
37
|
-
},
|
|
38
|
-
next: () => {
|
|
39
|
-
if (i < counts) {
|
|
40
|
-
return {
|
|
41
|
-
value: firstData.add(i++, navRange === DateNavRange.Month
|
|
42
|
-
? DAY
|
|
43
|
-
: navRange === DateNavRange.Year
|
|
44
|
-
? MONTH
|
|
45
|
-
: YEAR),
|
|
46
|
-
done: false,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
done: true,
|
|
51
|
-
value: null,
|
|
52
|
-
};
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
export function formatDate(type, dateValue, date) {
|
|
57
|
-
if (!dateValue) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
const label = type === DateNavRange.Decade
|
|
61
|
-
? dateValue.year()
|
|
62
|
-
: type === DateNavRange.Year
|
|
63
|
-
? dateValue.month() + 1
|
|
64
|
-
: dateValue.date();
|
|
65
|
-
const cell = new DateCell(dateValue, label);
|
|
66
|
-
if (type === DateNavRange.Month && date.month() !== dateValue.month()) {
|
|
67
|
-
cell.isBackground = true;
|
|
68
|
-
}
|
|
69
|
-
return cell;
|
|
70
|
-
}
|
|
71
|
-
export function nextDatePickerType(current, guard) {
|
|
72
|
-
const guardIndex = guard ? DATE_TYPES.indexOf(guard) : DATE_TYPES.length - 1;
|
|
73
|
-
const currentIndex = DATE_TYPES.indexOf(current);
|
|
74
|
-
if (currentIndex < guardIndex) {
|
|
75
|
-
return DATE_TYPES[currentIndex + 1];
|
|
76
|
-
}
|
|
77
|
-
return current;
|
|
78
|
-
}
|
|
79
|
-
export function nextNavRangeType(current, guard) {
|
|
80
|
-
const guardIndex = guard
|
|
81
|
-
? DATE_NAV_RANGES.indexOf(guard)
|
|
82
|
-
: DATE_NAV_RANGES.length - 1;
|
|
83
|
-
const currentIndex = DATE_NAV_RANGES.indexOf(current);
|
|
84
|
-
if (currentIndex < guardIndex) {
|
|
85
|
-
return DATE_NAV_RANGES[currentIndex + 1];
|
|
86
|
-
}
|
|
87
|
-
return current;
|
|
88
|
-
}
|
|
89
|
-
export function updateDate(sourceValue, newValue, type) {
|
|
90
|
-
const updateTypes = DATE_TYPES.slice(0, DATE_TYPES.indexOf(type) + 1);
|
|
91
|
-
return updateTypes.reduce((acc, curr) => acc.set(curr, newValue.get(curr)), sourceValue.clone());
|
|
92
|
-
}
|
|
93
|
-
export function calcRangeValue(type, date) {
|
|
94
|
-
date = date.clone();
|
|
95
|
-
return [DateNavRange.Month, DatePickerType.Year].includes(type)
|
|
96
|
-
? {
|
|
97
|
-
start: date,
|
|
98
|
-
}
|
|
99
|
-
: {
|
|
100
|
-
start: date.subtract(date.year() % 10, YEAR),
|
|
101
|
-
end: date.add(9 - (date.year() % 10), YEAR),
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
export function sortDates(dates) {
|
|
105
|
-
return [...(dates || [])].sort((a, b) => a.isBefore(b) ? -1 : a.isSame(b) ? 0 : 1);
|
|
106
|
-
}
|
|
107
|
-
export function getNavRangeByType(type) {
|
|
108
|
-
return {
|
|
109
|
-
[DatePickerType.Day]: DateNavRange.Month,
|
|
110
|
-
[DatePickerType.Month]: DateNavRange.Year,
|
|
111
|
-
[DatePickerType.Year]: DateNavRange.Decade,
|
|
112
|
-
}[type];
|
|
113
|
-
}
|
|
114
|
-
export function getTypeByNavRange(navRange) {
|
|
115
|
-
return {
|
|
116
|
-
[DateNavRange.Month]: DatePickerType.Day,
|
|
117
|
-
[DateNavRange.Year]: DatePickerType.Month,
|
|
118
|
-
[DateNavRange.Decade]: DatePickerType.Year,
|
|
119
|
-
}[navRange];
|
|
120
|
-
}
|
|
121
|
-
export function getTimePickerModel(date) {
|
|
122
|
-
return date
|
|
123
|
-
? {
|
|
124
|
-
second: date.second(),
|
|
125
|
-
minute: date.minute(),
|
|
126
|
-
hour: date.hour(),
|
|
127
|
-
}
|
|
128
|
-
: null;
|
|
129
|
-
}
|
|
130
|
-
export function updateDateByTimeModel(date, time) {
|
|
131
|
-
return time
|
|
132
|
-
? date
|
|
133
|
-
.set('hour', time.hour || 0)
|
|
134
|
-
.set('minute', time.minute || 0)
|
|
135
|
-
.set('second', time.second || 0)
|
|
136
|
-
: date;
|
|
137
|
-
}
|
|
138
|
-
export const composeDisabledDateFn = (...fns) => (date, navRange) => !fns.filter(i => !!i).every(fn => !fn(date, navRange));
|
|
139
|
-
export function minDate(a, b, unit = 'date') {
|
|
140
|
-
return a ? (b ? (a.isBefore(b, unit) ? a : b) : a) : b;
|
|
141
|
-
}
|
|
142
|
-
export function maxDate(a, b, unit = 'date') {
|
|
143
|
-
return a ? (b ? (a.isAfter(b, unit) ? a : b) : a) : b;
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9jYWxlbmRhci91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxZQUFZLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFFbkUsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsR0FBRyxFQUNILHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLEtBQUssRUFDTCx3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLElBQUksRUFDSix1QkFBdUIsRUFDdkIsb0JBQW9CLEdBQ3JCLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE1BQU0sT0FBTyxRQUFRO0lBT25CLFlBQ1MsS0FBWSxFQUNaLEtBQXNCO1FBRHRCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDWixVQUFLLEdBQUwsS0FBSyxDQUFpQjtJQUM1QixDQUFDO0NBQ0w7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLElBQVcsRUFDWCxRQUFzQixFQUN0QixZQUFvQjtJQUVwQixJQUFJLFNBQWdCLENBQUM7SUFDckIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEIsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsTUFBTSxHQUFHLHNCQUFzQixH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QUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxPQUFpQixNQUFNO0lBQ2pFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF5anMsIFVuaXRUeXBlIH0gZnJvbSAnZGF5anMnO1xuXG5pbXBvcnQgeyBUaW1lUGlja2VyTW9kZWwgfSBmcm9tICcuLi8uLi90aW1lLXBpY2tlci90aW1lLXBpY2tlci50eXBlJztcbmltcG9ydCB7IERhdGVOYXZSYW5nZSwgRGlzYWJsZWREYXRlRm4gfSBmcm9tICcuLi9kYXRlLXBpY2tlci50eXBlJztcblxuaW1wb3J0IHtcbiAgREFURV9OQVZfUkFOR0VTLFxuICBEQVRFX1RZUEVTLFxuICBEQVksXG4gIERBWV9QQU5FTF9DT0xVTU5fQ09VTlQsXG4gIERBWV9QQU5FTF9ST1dfQ09VTlQsXG4gIERhdGVQaWNrZXJUeXBlLFxuICBNT05USCxcbiAgTU9OVEhfUEFORUxfQ09MVU1OX0NPVU5ULFxuICBNT05USF9QQU5FTF9ST1dfQ09VTlQsXG4gIFlFQVIsXG4gIFlFQVJfUEFORUxfQ09MVU1OX0NPVU5ULFxuICBZRUFSX1BBTkVMX1JPV19DT1VOVCxcbn0gZnJvbSAnLi9jb25zdGFudCc7XG5cbmV4cG9ydCBjbGFzcyBEYXRlQ2VsbCB7XG4gIGlzQmFja2dyb3VuZD86IGJvb2xlYW47IC8vIOmdouadv+S4remdnuacrOaciOaXpeacn1xuICBpblJhbmdlPzogYm9vbGVhbjsgLy8g5Zyo6IyD5Zu057uE5Lu255qE6IyD5Zu05YaFXG4gIGlzUmFuZ2VTdGFydD86IGJvb2xlYW47IC8vIOiMg+WbtOe7hOS7tueahOiMg+WbtOW8gOWni+aXpeacn1xuICBpc1JhbmdlRW5kPzogYm9vbGVhbjsgLy8g6IyD5Zu057uE5Lu255qE6IyD5Zu057uT5p2f5pel5pyfXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB2YWx1ZTogRGF5anMsXG4gICAgcHVibGljIGxhYmVsOiBudW1iZXIgfCBzdHJpbmcsXG4gICkge31cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGVQYW5lbEl0ZXJhYmxlKFxuICBkYXRlOiBEYXlqcyxcbiAgbmF2UmFuZ2U6IERhdGVOYXZSYW5nZSxcbiAgd2Vla1N0YXJ0RGF5OiBudW1iZXIsXG4pOiBJdGVyYWJsZTxEYXlqcz4gJiBJdGVyYXRvcjxEYXlqcz4ge1xuICBsZXQgZmlyc3REYXRhOiBEYXlqcztcbiAgbGV0IGNvdW50cyA9IDA7XG4gIGRhdGUgPSBkYXRlLmNsb25lKCk7XG4gIHN3aXRjaCAobmF2UmFuZ2UpIHtcbiAgICBjYXNlIERhdGVOYXZSYW5nZS5Nb250aDoge1xuICAgICAgZmlyc3REYXRhID0gZGF0ZS5kYXRlKC0xKS5kYXkod2Vla1N0YXJ0RGF5KTtcbiAgICAgIGlmIChmaXJzdERhdGEuaXNBZnRlcihkYXRlKSkge1xuICAgICAgICBmaXJzdERhdGEgPSBmaXJzdERhdGEuc3VidHJhY3QoMSwgJ3dlZWsnKTtcbiAgICAgIH1cbiAgICAgIGNvdW50cyA9IERBWV9QQU5FTF9DT0xVTU5fQ09VTlQgKiBEQVlfUEFORUxfUk9XX0NPVU5UO1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBEYXRlTmF2UmFuZ2UuWWVhcjoge1xuICAgICAgZmlyc3REYXRhID0gZGF0ZS5tb250aCgwKTtcbiAgICAgIGNvdW50cyA9IE1PTlRIX1BBTkVMX0NPTFVNTl9DT1VOVCAqIE1PTlRIX1BBTkVMX1JPV19DT1VOVDtcblxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgRGF0ZU5hdlJhbmdlLkRlY2FkZToge1xuICAgICAgZmlyc3REYXRhID0gZGF0ZS5zdWJ0cmFjdCgxLCBZRUFSKTtcbiAgICAgIGNvdW50cyA9IFlFQVJfUEFORUxfQ09MVU1OX0NPVU5UICogWUVBUl9QQU5FTF9ST1dfQ09VTlQ7XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBObyBkZWZhdWx0XG4gIH1cbiAgbGV0IGkgPSAwO1xuICByZXR1cm4ge1xuICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBuZXh0OiAoKSA9PiB7XG4gICAgICBpZiAoaSA8IGNvdW50cykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBmaXJzdERhdGEuYWRkKFxuICAgICAgICAgICAgaSsrLFxuICAgICAgICAgICAgbmF2UmFuZ2UgPT09IERhdGVOYXZSYW5nZS5Nb250aFxuICAgICAgICAgICAgICA/IERBWVxuICAgICAgICAgICAgICA6IG5hdlJhbmdlID09PSBEYXRlTmF2UmFuZ2UuWWVhclxuICAgICAgICAgICAgICAgID8gTU9OVEhcbiAgICAgICAgICAgICAgICA6IFlFQVIsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBkb25lOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgfTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZSh0eXBlOiBEYXRlTmF2UmFuZ2UsIGRhdGVWYWx1ZTogRGF5anMsIGRhdGU6IERheWpzKSB7XG4gIGlmICghZGF0ZVZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgbGFiZWwgPVxuICAgIHR5cGUgPT09IERhdGVOYXZSYW5nZS5EZWNhZGVcbiAgICAgID8gZGF0ZVZhbHVlLnllYXIoKVxuICAgICAgOiB0eXBlID09PSBEYXRlTmF2UmFuZ2UuWWVhclxuICAgICAgICA/IGRhdGVWYWx1ZS5tb250aCgpICsgMVxuICAgICAgICA6IGRhdGVWYWx1ZS5kYXRlKCk7XG4gIGNvbnN0IGNlbGwgPSBuZXcgRGF0ZUNlbGwoZGF0ZVZhbHVlLCBsYWJlbCk7XG4gIGlmICh0eXBlID09PSBEYXRlTmF2UmFuZ2UuTW9udGggJiYgZGF0ZS5tb250aCgpICE9PSBkYXRlVmFsdWUubW9udGgoKSkge1xuICAgIGNlbGwuaXNCYWNrZ3JvdW5kID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gY2VsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5leHREYXRlUGlja2VyVHlwZShcbiAgY3VycmVudDogRGF0ZVBpY2tlclR5cGUsXG4gIGd1YXJkPzogRGF0ZVBpY2tlclR5cGUsXG4pIHtcbiAgY29uc3QgZ3VhcmRJbmRleCA9IGd1YXJkID8gREFURV9UWVBFUy5pbmRleE9mKGd1YXJkKSA6IERBVEVfVFlQRVMubGVuZ3RoIC0gMTtcbiAgY29uc3QgY3VycmVudEluZGV4ID0gREFURV9UWVBFUy5pbmRleE9mKGN1cnJlbnQpO1xuICBpZiAoY3VycmVudEluZGV4IDwgZ3VhcmRJbmRleCkge1xuICAgIHJldHVybiBEQVRFX1RZUEVTW2N1cnJlbnRJbmRleCArIDFdO1xuICB9XG4gIHJldHVybiBjdXJyZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV4dE5hdlJhbmdlVHlwZShjdXJyZW50OiBEYXRlTmF2UmFuZ2UsIGd1YXJkPzogRGF0ZU5hdlJhbmdlKSB7XG4gIGNvbnN0IGd1YXJkSW5kZXggPSBndWFyZFxuICAgID8gREFURV9OQVZfUkFOR0VTLmluZGV4T2YoZ3VhcmQpXG4gICAgOiBEQVRFX05BVl9SQU5HRVMubGVuZ3RoIC0gMTtcbiAgY29uc3QgY3VycmVudEluZGV4ID0gREFURV9OQVZfUkFOR0VTLmluZGV4T2YoY3VycmVudCk7XG4gIGlmIChjdXJyZW50SW5kZXggPCBndWFyZEluZGV4KSB7XG4gICAgcmV0dXJuIERBVEVfTkFWX1JBTkdFU1tjdXJyZW50SW5kZXggKyAxXTtcbiAgfVxuICByZXR1cm4gY3VycmVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZURhdGUoXG4gIHNvdXJjZVZhbHVlOiBEYXlqcyxcbiAgbmV3VmFsdWU6IERheWpzLFxuICB0eXBlOiBEYXRlUGlja2VyVHlwZSxcbikge1xuICBjb25zdCB1cGRhdGVUeXBlcyA9IERBVEVfVFlQRVMuc2xpY2UoMCwgREFURV9UWVBFUy5pbmRleE9mKHR5cGUpICsgMSk7XG4gIHJldHVybiB1cGRhdGVUeXBlcy5yZWR1Y2UoXG4gICAgKGFjYywgY3VycikgPT4gYWNjLnNldChjdXJyLCBuZXdWYWx1ZS5nZXQoY3VycikpLFxuICAgIHNvdXJjZVZhbHVlLmNsb25lKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjUmFuZ2VWYWx1ZSh0eXBlOiBEYXRlTmF2UmFuZ2UsIGRhdGU6IERheWpzKSB7XG4gIGRhdGUgPSBkYXRlLmNsb25lKCk7XG4gIHJldHVybiBbRGF0ZU5hdlJhbmdlLk1vbnRoLCBEYXRlUGlja2VyVHlwZS5ZZWFyXS5pbmNsdWRlcyh0eXBlKVxuICAgID8ge1xuICAgICAgICBzdGFydDogZGF0ZSxcbiAgICAgIH1cbiAgICA6IHtcbiAgICAgICAgc3RhcnQ6IGRhdGUuc3VidHJhY3QoZGF0ZS55ZWFyKCkgJSAxMCwgWUVBUiksXG4gICAgICAgIGVuZDogZGF0ZS5hZGQoOSAtIChkYXRlLnllYXIoKSAlIDEwKSwgWUVBUiksXG4gICAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydERhdGVzKGRhdGVzOiBEYXlqc1tdKSB7XG4gIHJldHVybiBbLi4uKGRhdGVzIHx8IFtdKV0uc29ydCgoYSwgYikgPT5cbiAgICBhLmlzQmVmb3JlKGIpID8gLTEgOiBhLmlzU2FtZShiKSA/IDAgOiAxLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmF2UmFuZ2VCeVR5cGUodHlwZTogRGF0ZVBpY2tlclR5cGUpIHtcbiAgcmV0dXJuIHtcbiAgICBbRGF0ZVBpY2tlclR5cGUuRGF5XTogRGF0ZU5hdlJhbmdlLk1vbnRoLFxuICAgIFtEYXRlUGlja2VyVHlwZS5Nb250aF06IERhdGVOYXZSYW5nZS5ZZWFyLFxuICAgIFtEYXRlUGlja2VyVHlwZS5ZZWFyXTogRGF0ZU5hdlJhbmdlLkRlY2FkZSxcbiAgfVt0eXBlXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVCeU5hdlJhbmdlKG5hdlJhbmdlOiBEYXRlTmF2UmFuZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICBbRGF0ZU5hdlJhbmdlLk1vbnRoXTogRGF0ZVBpY2tlclR5cGUuRGF5LFxuICAgIFtEYXRlTmF2UmFuZ2UuWWVhcl06IERhdGVQaWNrZXJUeXBlLk1vbnRoLFxuICAgIFtEYXRlTmF2UmFuZ2UuRGVjYWRlXTogRGF0ZVBpY2tlclR5cGUuWWVhcixcbiAgfVtuYXZSYW5nZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaW1lUGlja2VyTW9kZWwoZGF0ZTogRGF5anMpOiBUaW1lUGlja2VyTW9kZWwge1xuICByZXR1cm4gZGF0ZVxuICAgID8ge1xuICAgICAgICBzZWNvbmQ6IGRhdGUuc2Vjb25kKCksXG4gICAgICAgIG1pbnV0ZTogZGF0ZS5taW51dGUoKSxcbiAgICAgICAgaG91cjogZGF0ZS5ob3VyKCksXG4gICAgICB9XG4gICAgOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlRGF0ZUJ5VGltZU1vZGVsKGRhdGU6IERheWpzLCB0aW1lOiBUaW1lUGlja2VyTW9kZWwpIHtcbiAgcmV0dXJuIHRpbWVcbiAgICA/IGRhdGVcbiAgICAgICAgLnNldCgnaG91cicsIHRpbWUuaG91ciB8fCAwKVxuICAgICAgICAuc2V0KCdtaW51dGUnLCB0aW1lLm1pbnV0ZSB8fCAwKVxuICAgICAgICAuc2V0KCdzZWNvbmQnLCB0aW1lLnNlY29uZCB8fCAwKVxuICAgIDogZGF0ZTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbXBvc2VEaXNhYmxlZERhdGVGbiA9XG4gICguLi5mbnM6IERpc2FibGVkRGF0ZUZuW10pID0+XG4gIChkYXRlOiBEYXlqcywgbmF2UmFuZ2U6IERhdGVOYXZSYW5nZSkgPT5cbiAgICAhZm5zLmZpbHRlcihpID0+ICEhaSkuZXZlcnkoZm4gPT4gIWZuKGRhdGUsIG5hdlJhbmdlKSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5EYXRlKGE6IERheWpzLCBiOiBEYXlqcywgdW5pdDogVW5pdFR5cGUgPSAnZGF0ZScpIHtcbiAgcmV0dXJuIGEgPyAoYiA/IChhLmlzQmVmb3JlKGIsIHVuaXQpID8gYSA6IGIpIDogYSkgOiBiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF4RGF0ZShhOiBEYXlqcywgYjogRGF5anMsIHVuaXQ6IFVuaXRUeXBlID0gJ2RhdGUnKSB7XG4gIHJldHVybiBhID8gKGIgPyAoYS5pc0FmdGVyKGIsIHVuaXQpID8gYSA6IGIpIDogYSkgOiBiO1xufVxuIl19
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, forwardRef, } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
3
|
-
import dayjs from 'dayjs';
|
|
4
|
-
import { CommonFormControl } from '../../form/common-form';
|
|
5
|
-
import { ComponentSize } from '../../internal/types';
|
|
6
|
-
import { TooltipDirective } from '../../tooltip/tooltip.directive';
|
|
7
|
-
import { DatePickerType } from '../calendar/constant';
|
|
8
|
-
import { DatePickerPanelComponent } from '../calendar/date-picker-panel/component';
|
|
9
|
-
import { DatePickerTriggerComponent } from '../trigger/trigger.component';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/forms";
|
|
12
|
-
export class DatePickerComponent extends CommonFormControl {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(...arguments);
|
|
15
|
-
this.clearable = true;
|
|
16
|
-
this.showTime = false;
|
|
17
|
-
this.type = DatePickerType.Day;
|
|
18
|
-
this.size = ComponentSize.Medium;
|
|
19
|
-
this.disabledDate = () => false;
|
|
20
|
-
this.disabledTime = () => null;
|
|
21
|
-
this.weekStartDay = 0;
|
|
22
|
-
this.showFooter = true;
|
|
23
|
-
this.visibleChange = new EventEmitter();
|
|
24
|
-
this.DatePickerType = DatePickerType;
|
|
25
|
-
}
|
|
26
|
-
valueIn(obj) {
|
|
27
|
-
return obj ? dayjs(obj) : null;
|
|
28
|
-
}
|
|
29
|
-
writeValue(obj) {
|
|
30
|
-
super.writeValue(obj);
|
|
31
|
-
this.value = obj;
|
|
32
|
-
this.cdr.markForCheck();
|
|
33
|
-
}
|
|
34
|
-
clearValue() {
|
|
35
|
-
this.value = null;
|
|
36
|
-
this.emitValue(null);
|
|
37
|
-
}
|
|
38
|
-
tooltipVisibleChange(visible) {
|
|
39
|
-
this.visibleChange.next(visible);
|
|
40
|
-
if (!visible) {
|
|
41
|
-
this.emitValue(this.value);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DatePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.6", type: DatePickerComponent, isStandalone: true, selector: "aui-date-picker", inputs: { clearable: "clearable", clearText: "clearText", format: "format", showTime: "showTime", type: "type", size: "size", disabledDate: "disabledDate", disabledTime: "disabledTime", minDate: "minDate", maxDate: "maxDate", weekStartDay: "weekStartDay", showFooter: "showFooter", footerTemplate: "footerTemplate", extraFooter: "extraFooter", placeholder: "placeholder" }, outputs: { visibleChange: "visibleChange" }, providers: [
|
|
46
|
-
{
|
|
47
|
-
provide: NG_VALUE_ACCESSOR,
|
|
48
|
-
useExisting: forwardRef(() => DatePickerComponent),
|
|
49
|
-
multi: true,
|
|
50
|
-
},
|
|
51
|
-
], usesInheritance: true, ngImport: i0, template: "<aui-date-picker-trigger\n [size]=\"size\"\n [value]=\"value\"\n [format]=\"format\"\n style=\"display: flex\"\n [auiTooltip]=\"template\"\n auiTooltipAnimType=\"none\"\n auiTooltipType=\"info\"\n auiTooltipClass=\"date-picker-wrapper\"\n [disabled]=\"!!disabled\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipTrigger=\"click\"\n [auiTooltipDisabled]=\"!!disabled\"\n [auiTooltipHideOnClick]=\"true\"\n [placeholder]=\"placeholder\"\n (auiTooltipVisibleChange)=\"tooltipVisibleChange($event)\"\n (clear)=\"clearValue()\"\n #tooltip=\"auiTooltip\"\n></aui-date-picker-trigger>\n\n<ng-template #template>\n <aui-date-picker-panel\n [type]=\"type\"\n style=\"padding-top: 9px; display: inline-block; max-width: 100%\"\n [(ngModel)]=\"value\"\n [showTime]=\"showTime\"\n [showFooter]=\"showFooter\"\n [disabledDate]=\"disabledDate\"\n [disabledTime]=\"disabledTime\"\n [weekStartDay]=\"weekStartDay\"\n [extraFooter]=\"extraFooter\"\n [footerTemplate]=\"footerTemplate\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (click)=\"$event.stopImmediatePropagation()\"\n (clear)=\"clearValue()\"\n (confirm)=\"tooltip.hide(); emitValue(value)\"\n ></aui-date-picker-panel>\n</ng-template>\n", styles: ["aui-date-picker{display:inline-block;width:200px}\n"], dependencies: [{ kind: "component", type: DatePickerTriggerComponent, selector: "aui-date-picker-trigger", inputs: ["value", "format", "isRange", "size", "clearable", "placeholder", "startPlaceholder", "endPlaceholder", "disabled"], outputs: ["blur", "clear"] }, { kind: "directive", type: TooltipDirective, selector: "[auiTooltip]", inputs: ["auiTooltip", "auiTooltipContext", "auiTooltipClass", "auiTooltipType", "auiTooltipPosition", "auiTooltipTrigger", "auiTooltipDisabled", "auiTooltipHideOnClick", "auiTooltipAnimType"], outputs: ["auiTooltipVisibleChange"], exportAs: ["auiTooltip"] }, { kind: "component", type: DatePickerPanelComponent, selector: "aui-date-picker-panel", inputs: ["clearable", "clearText", "type", "showTime", "disabledDate", "disabledTime", "weekStartDay", "showFooter", "footerTemplate", "extraFooter", "minDate", "maxDate"], outputs: ["confirm", "clear"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
52
|
-
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
54
|
-
type: Component,
|
|
55
|
-
args: [{ selector: 'aui-date-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
|
|
56
|
-
{
|
|
57
|
-
provide: NG_VALUE_ACCESSOR,
|
|
58
|
-
useExisting: forwardRef(() => DatePickerComponent),
|
|
59
|
-
multi: true,
|
|
60
|
-
},
|
|
61
|
-
], standalone: true, imports: [
|
|
62
|
-
DatePickerTriggerComponent,
|
|
63
|
-
TooltipDirective,
|
|
64
|
-
DatePickerPanelComponent,
|
|
65
|
-
FormsModule,
|
|
66
|
-
], template: "<aui-date-picker-trigger\n [size]=\"size\"\n [value]=\"value\"\n [format]=\"format\"\n style=\"display: flex\"\n [auiTooltip]=\"template\"\n auiTooltipAnimType=\"none\"\n auiTooltipType=\"info\"\n auiTooltipClass=\"date-picker-wrapper\"\n [disabled]=\"!!disabled\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipTrigger=\"click\"\n [auiTooltipDisabled]=\"!!disabled\"\n [auiTooltipHideOnClick]=\"true\"\n [placeholder]=\"placeholder\"\n (auiTooltipVisibleChange)=\"tooltipVisibleChange($event)\"\n (clear)=\"clearValue()\"\n #tooltip=\"auiTooltip\"\n></aui-date-picker-trigger>\n\n<ng-template #template>\n <aui-date-picker-panel\n [type]=\"type\"\n style=\"padding-top: 9px; display: inline-block; max-width: 100%\"\n [(ngModel)]=\"value\"\n [showTime]=\"showTime\"\n [showFooter]=\"showFooter\"\n [disabledDate]=\"disabledDate\"\n [disabledTime]=\"disabledTime\"\n [weekStartDay]=\"weekStartDay\"\n [extraFooter]=\"extraFooter\"\n [footerTemplate]=\"footerTemplate\"\n [clearable]=\"clearable\"\n [clearText]=\"clearText\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n (click)=\"$event.stopImmediatePropagation()\"\n (clear)=\"clearValue()\"\n (confirm)=\"tooltip.hide(); emitValue(value)\"\n ></aui-date-picker-panel>\n</ng-template>\n", styles: ["aui-date-picker{display:inline-block;width:200px}\n"] }]
|
|
67
|
-
}], propDecorators: { clearable: [{
|
|
68
|
-
type: Input
|
|
69
|
-
}], clearText: [{
|
|
70
|
-
type: Input
|
|
71
|
-
}], format: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], showTime: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], type: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], size: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], disabledDate: [{
|
|
80
|
-
type: Input
|
|
81
|
-
}], disabledTime: [{
|
|
82
|
-
type: Input
|
|
83
|
-
}], minDate: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], maxDate: [{
|
|
86
|
-
type: Input
|
|
87
|
-
}], weekStartDay: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], showFooter: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}], footerTemplate: [{
|
|
92
|
-
type: Input
|
|
93
|
-
}], extraFooter: [{
|
|
94
|
-
type: Input
|
|
95
|
-
}], placeholder: [{
|
|
96
|
-
type: Input
|
|
97
|
-
}], visibleChange: [{
|
|
98
|
-
type: Output
|
|
99
|
-
}] } });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sS0FBNEIsTUFBTSxPQUFPLENBQUM7QUFFakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVuRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBdUIxRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQW9DO0lBckI3RTs7UUF1QkUsY0FBUyxHQUFHLElBQUksQ0FBQztRQVNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLFNBQUksR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO1FBRzFCLFNBQUksR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBRzVCLGlCQUFZLEdBQWlELEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUd6RSxpQkFBWSxHQUFtQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFTMUMsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFHakIsZUFBVSxHQUFHLElBQUksQ0FBQztRQVlsQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHNUMsbUJBQWMsR0FBRyxjQUFjLENBQUM7S0F1QmpDO0lBckJVLE9BQU8sQ0FBQyxHQUFlO1FBQzlCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRVEsVUFBVSxDQUFDLEdBQVU7UUFDNUIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsT0FBZ0I7UUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7OEdBeEVVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGllQWZuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpRENqQ0gscXlDQXlDQSw2R0RMSSwwQkFBMEIsOE5BQzFCLGdCQUFnQiwyVEFDaEIsd0JBQXdCLDZRQUN4QixXQUFXOzsyRkFHRixtQkFBbUI7a0JBckIvQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixjQUNXLElBQUksV0FDUDt3QkFDUCwwQkFBMEI7d0JBQzFCLGdCQUFnQjt3QkFDaEIsd0JBQXdCO3dCQUN4QixXQUFXO3FCQUNaOzhCQUlELFNBQVM7c0JBRFIsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGFBQWE7c0JBRFosTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBkYXlqcywgeyBDb25maWdUeXBlLCBEYXlqcyB9IGZyb20gJ2RheWpzJztcblxuaW1wb3J0IHsgQ29tbW9uRm9ybUNvbnRyb2wgfSBmcm9tICcuLi8uLi9mb3JtL2NvbW1vbi1mb3JtJztcbmltcG9ydCB7IENvbXBvbmVudFNpemUgfSBmcm9tICcuLi8uLi9pbnRlcm5hbC90eXBlcyc7XG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyVHlwZSB9IGZyb20gJy4uL2NhbGVuZGFyL2NvbnN0YW50JztcbmltcG9ydCB7IERhdGVQaWNrZXJQYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL2NhbGVuZGFyL2RhdGUtcGlja2VyLXBhbmVsL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlTmF2UmFuZ2UsIERpc2FibGVkVGltZUZuIH0gZnJvbSAnLi4vZGF0ZS1waWNrZXIudHlwZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyVHJpZ2dlckNvbXBvbmVudCB9IGZyb20gJy4uL3RyaWdnZXIvdHJpZ2dlci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktZGF0ZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIudGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLnN0eWxlLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRGF0ZVBpY2tlclRyaWdnZXJDb21wb25lbnQsXG4gICAgVG9vbHRpcERpcmVjdGl2ZSxcbiAgICBEYXRlUGlja2VyUGFuZWxDb21wb25lbnQsXG4gICAgRm9ybXNNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBDb21tb25Gb3JtQ29udHJvbDxDb25maWdUeXBlLCBEYXlqcz4ge1xuICBASW5wdXQoKVxuICBjbGVhcmFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGNsZWFyVGV4dDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1hdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dUaW1lID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgdHlwZSA9IERhdGVQaWNrZXJUeXBlLkRheTtcblxuICBASW5wdXQoKVxuICBzaXplID0gQ29tcG9uZW50U2l6ZS5NZWRpdW07XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZWREYXRlOiAoZGF0ZTogRGF5anMsIHR5cGU6IERhdGVOYXZSYW5nZSkgPT4gYm9vbGVhbiA9ICgpID0+IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkVGltZTogRGlzYWJsZWRUaW1lRm4gPSAoKSA9PiBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIG1pbkRhdGU6IERheWpzO1xuXG4gIEBJbnB1dCgpXG4gIG1heERhdGU6IERheWpzO1xuXG4gIEBJbnB1dCgpXG4gIHdlZWtTdGFydERheSA9IDA7XG5cbiAgQElucHV0KClcbiAgc2hvd0Zvb3RlciA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgpXG4gIGV4dHJhRm9vdGVyOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKVxuICB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHZhbHVlOiBEYXlqcztcbiAgRGF0ZVBpY2tlclR5cGUgPSBEYXRlUGlja2VyVHlwZTtcblxuICBvdmVycmlkZSB2YWx1ZUluKG9iajogQ29uZmlnVHlwZSkge1xuICAgIHJldHVybiBvYmogPyBkYXlqcyhvYmopIDogbnVsbDtcbiAgfVxuXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUob2JqOiBEYXlqcykge1xuICAgIHN1cGVyLndyaXRlVmFsdWUob2JqKTtcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2xlYXJWYWx1ZSgpIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLmVtaXRWYWx1ZShudWxsKTtcbiAgfVxuXG4gIHRvb2x0aXBWaXNpYmxlQ2hhbmdlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UubmV4dCh2aXNpYmxlKTtcbiAgICBpZiAoIXZpc2libGUpIHtcbiAgICAgIHRoaXMuZW1pdFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxufVxuIiwiPGF1aS1kYXRlLXBpY2tlci10cmlnZ2VyXG4gIFtzaXplXT1cInNpemVcIlxuICBbdmFsdWVdPVwidmFsdWVcIlxuICBbZm9ybWF0XT1cImZvcm1hdFwiXG4gIHN0eWxlPVwiZGlzcGxheTogZmxleFwiXG4gIFthdWlUb29sdGlwXT1cInRlbXBsYXRlXCJcbiAgYXVpVG9vbHRpcEFuaW1UeXBlPVwibm9uZVwiXG4gIGF1aVRvb2x0aXBUeXBlPVwiaW5mb1wiXG4gIGF1aVRvb2x0aXBDbGFzcz1cImRhdGUtcGlja2VyLXdyYXBwZXJcIlxuICBbZGlzYWJsZWRdPVwiISFkaXNhYmxlZFwiXG4gIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBzdGFydFwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwiY2xpY2tcIlxuICBbYXVpVG9vbHRpcERpc2FibGVkXT1cIiEhZGlzYWJsZWRcIlxuICBbYXVpVG9vbHRpcEhpZGVPbkNsaWNrXT1cInRydWVcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAoYXVpVG9vbHRpcFZpc2libGVDaGFuZ2UpPVwidG9vbHRpcFZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4gIChjbGVhcik9XCJjbGVhclZhbHVlKClcIlxuICAjdG9vbHRpcD1cImF1aVRvb2x0aXBcIlxuPjwvYXVpLWRhdGUtcGlja2VyLXRyaWdnZXI+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxhdWktZGF0ZS1waWNrZXItcGFuZWxcbiAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICBzdHlsZT1cInBhZGRpbmctdG9wOiA5cHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWF4LXdpZHRoOiAxMDAlXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbc2hvd1RpbWVdPVwic2hvd1RpbWVcIlxuICAgIFtzaG93Rm9vdGVyXT1cInNob3dGb290ZXJcIlxuICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcbiAgICBbZGlzYWJsZWRUaW1lXT1cImRpc2FibGVkVGltZVwiXG4gICAgW3dlZWtTdGFydERheV09XCJ3ZWVrU3RhcnREYXlcIlxuICAgIFtleHRyYUZvb3Rlcl09XCJleHRyYUZvb3RlclwiXG4gICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcbiAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgW2NsZWFyVGV4dF09XCJjbGVhclRleHRcIlxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIlxuICAgIChjbGVhcik9XCJjbGVhclZhbHVlKClcIlxuICAgIChjb25maXJtKT1cInRvb2x0aXAuaGlkZSgpOyBlbWl0VmFsdWUodmFsdWUpXCJcbiAgPjwvYXVpLWRhdGUtcGlja2VyLXBhbmVsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|